File: RX01NS.PA of Tape: OS8/OS8-Latest/new-12
(Source file text)
/ FAST RX01 (RX02) WORD-MODE HANDLER / / / / / / / / /COPYRIGHT (C) 1980 BY DATAPLAN GMBH, LAUDA, BRD / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DATAPLAN GMBH. /DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR /IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DATAPLAN'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DATAPLAN. / /DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DATAPLAN. / / / / / / / / / / / /WVDM, ZUERICH, 1-JAN-80 / FAST RX01 (RX02) WORD-MODE HANDLER -JVZ- / THIS IS AN ATTEMPT TO SPEED UP THE TRACK AND SECTOR /CALCULATION, SO THAT IT WILL PERFORM BETTER ON A DEC- /STATION. THIS VERSION DOESN'T MISS A SINGLE ROTATION /AND ALSO WORKS ON AN RX02 - ALL THE KLUDGES ARE GONE! PAGE 0 /ORIGIN FOR BUILD -2 /TWO ENTRY POINTS DEVICE RX01 /GROUP NAME DEVICE RXA0 /DEVICE NAME 4250 /TYPE 25, FIXED LENGTH RXA0&177 /ENTRY POINT ZBLOCK 0002 DEVICE RX01 DEVICE RXA1 /SECOND DEVICE 4250 RXA1&177 ZBLOCK 0002 RX8= 6750 /75 DEVICE IS STANDARD LCD= 1 /LOAD COMMAND XDR= 2 /TRANSFER DATA STR= 3 /SKIP ON DATA READY SER= 4 /SKIP ON ERROR SDN= 5 /SKIP ON DONE VERS= "M&77 PAGE 1 / HERE IS THE HANDLER - ALL IN 1 PAGE! DECIMAL CADR, 0 WCNT, 0 SECT, 0 M101, -64-1 /SILO COUNT - DIDDLE DVSR, -26^64^2 /INITIAL DIVISOR OCTAL CSUB, 0 /COMMAND SUB CDF0, CDF 0 /RESET FOR EXIT RX8 SDN /READY FOR COMMAND? JMP KBCK /NO, TRY KEYBOARD TAD I CSUB /GET ARG, DF 0 RX8 LCD CDFX, HLT /BUFFER FIELD FOR NEXT STUFF RX8 SER /ERRORS? JMP I CSUB STL RAR /YOU LOSE JMP CDIX KBCK, TAD M200 /CHECK KEYBOARD KRS /IGNORE PARITY TAD (200-3 SNA CLA /WAS IT ^C? KSF /AND FLAG? JMP CSUB+2 CDI0, CDF CIF 0 /YES, BACK TO OLD MON JMP I M200 RXA0, VERS /FIRST ENTRY-POINT CLA IAC /FOR READ SECTOR JMP DRV0 P5, 24%4 RXA1, VERS /SECOND ENTRY-POINT CLA TAD RXA1 DCA RXA0 /MAKE RXA0 COMMON POINTER TAD P5 /UNIT 1 AND READ SECTOR DRV0, CLL RTL DCA FNCD /4 OR 24 RDF TAD CDI0 DCA CDIX /PREPARE EXIT TO CALLER TAD I RXA0 AND P70 TAD CDF0 DCA CDFX /MAKE CDF BUFFER TAD I RXA0 RAL AND M200 DCA WCNT /SETUP WORD-COUNT CML RTL /GET R/W BIT DCA RDWR /TO MAKE FILL/EMPTY SILO TAD RDWR TAD FNCD DCA FNCD /AND MAKE READ/WRITE SECTOR ISZ RXA0 TAD I RXA0 DCA CADR /SET BUFFER ADDRESS ISZ RXA0 TAD I RXA0 CLL RTL /4 SECTORS PER BLOCK DCA SECT /SECTOR BEFORE INTERLEAVE ISZ RXA0 JMS DSUB /PREPARE FIRST TRACK/SECTOR TAD RDWR P7760, SNL SMA SZA CLA /ONLY 'SZA' ACTIVE JMP READ WRIT, JMS CSUB /. RDWR, 0 /FILL OR EMPTY SILO TAD M100 DCA CSUB /SILO COUNT FOR 64 SILO-SIZE RWLP, TAD I CADR /LOAD... RX8 STR JMP .-1 RX8 XDR DCA I CADR /UNLOAD SILO ISZ CADR P70, 70 ISZ CSUB /SILO FULL? JMP RWLP TAD WCNT /YES TAD M101 /IS IT READ LOOP? SNA /AND ALL READ? JMP CDIX-1 /YES, READ EXIT DCA WCNT /NO, AND CORRECT FOR 1 ISZ READ, JMS CSUB /READ LOOP ENTRY.. FNCD, 0 /READ/WRITE SECTOR TAD XSUB /GET PRE-PARED SECTOR JMS XSUB TAD RXA1 /GET PRE-PARED TRACK JMS XSUB /XSUB WILL ADD 1 ISZ SECT /NEXT SECTOR (IN TRACK) JMS DSUB /CALCULATE NEXT PAIR JMS CSUB /. 16 /READ ERROR COMMAND (GOOD FOR RX02) ISZ WCNT /END OF WRITE? JMP WRIT /NO, DO MORE WITH WCNT INC ISZ RXA0 /YES, WRITE EXIT CDIX, HLT /ERROR EXIT JMP I RXA0 /RETURN TO USER / SUPER-FAST DIVIDE ROUTINE DSUB, 0 /GET TRACK, SECTOR TAD DVSR DCA CSUB TAD SECT DCA XSUB TAD P7760 /INIT LOOP COUNTER DLUP, RAL /SHIFT IN QUOTIENT DCA RXA1 TAD CSUB STL RAR /REDUCE DIVISOR DENT, DCA CSUB TAD CSUB TAD XSUB SZL DCA XSUB /SAVE REMAINDER M200, 7600 TAD RXA1 SPA /CHECK LOOP COUNT JMP DLUP M100, SMA CLA TAD XSUB /GET SECTOR RAL DCA XSUB /SAVE JMP I DSUB XSUB, 0 CLL IAC /ADD OFFSET RX8 STR JMP .-1 RX8 XDR CLA CLL JMP I XSUB PAGE $