File: RB27SY.PA of Tape: OS8/OS8-V40/v40-10
(Source file text)
/ BYTE MODE SYS HANDLER (VT78) / / / / / / / / /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, DP, ZUERICH, 1-JAN-80 /VT/78-COMPATIBLE FLOPPY SYSTEM HANDLER -JVZ- /THIS IS AN OS/8 FLOPPY DISK -SYSTEM HANDLER- WHICH USES /BYTE MODE (RATHER THAN 12-BIT MODE) IN ORDER TO GET 658 /OS/8 BLOCKS PER DISK (INSTEAD OF ONLY 494). THE DATA IS /STORED IN A FORMAT CHOSEN TO OPTIMIZE THE TRANSFER RATE /ON A VT/78 (IM6100-BASED) SYSTEM. /THE HANDLER IS LOADED USING THE STANDARD BOOTSTRAP, BUT /REQUIRES A SYSTEM WITH AT LEAST 12K OF MEMORY. LOCATION /13642 IN 'PIP' MUST BE CHANGED TO 6556 IN ORDER TO HAVE /THE CORRECT LENGTH APPEAR IN DIRECTORIES.DEVICES 'RBA0' /AND 'RBA1' (DRIVES 0/1) ARE BOTH CO-RESIDENT WITH SYS:. /THE DEVICE NUMBER IS 42 (IN CONTRAST TO THE PDP8-E HAN- /DLER WHICH HAS 41. THIS IS AN ATTEMPT TO PREVENT HAVOC. /THIS HANDLER WILL WORK ON ANY PDP8 PROCESSOR, BUT IT IS /A FACTOR OF TWO SLOWER THAN NECESSARY FOR ALL BUT 6100- /BASED MACHINES. IT WILL ALSO WORK CORRECTLY WITH EITHER /THE RX01 OR RX02 CONTROLLER! /(C) 1979 LAB DATA SYSTEMS, SEATTLE. ALL RIGHTS RESERVED PAGE 0 /BUILD STUFF -3 /3 ENTRY POINTS DEVICE RB27 /MEANS BYTE SYSTEM HANDLER /BUILD ON RX02 DRIVE, RX01 MEDIA, 6100 PROC DEVICE SYS /THE MAIN ENTRY POINT 4420 /DEVICE TYPE 42 (NOTE FOR PIP) SYS&177+6000 /READ/WRITE, ENTRY PT. AT 7607 0 1222 /658(10) BLOCKS DEVICE RB27 /SECOND SYSTEM ENTRY POINT DEVICE RBA0 /(THIS IS REALLY OPTIONAL) 4420 RBA0&177+5000 0 1222 DEVICE RB27 /DRIVE ONE IS NOW CORESIDENT DEVICE RBA1 /SIMILAR TO THE RT/11 NAMES! 4420 RBA1&177+5000 /SELECT A 'MAGIC' ENTRY POINT 0 1222 /GIVES A TOTAL OF 1316 BLOCKS MLEN, -144 /-LENGTH OF BOOTSTRAP VERSION="M&77 /IDENTIFY THE VERSION NO. /HERE IS A LISTING OF THE PRIMARY BOOTSTRAP FOR REFERENCE NOPUNCH *20 CYCLE, TAD TEST /TRY NEXT COMBINATION TAD C360 /OF UNIT AND DENSITY AND C420 /'400'=D.D., '20'=DRIVE 1 DCA TEST /CYCLES 400,420,0,20,400... IAC STL RTL /6: READ A DISK SECTOR TAD TEST /UNIT AND DENSITY RX8 LCD /LOAD COMMAND REGISTER CLA IAC JMS LOAD /LOAD SECTOR NUMBER (1) JMS LOAD /THEN TRACK NUMBER (1) C7004, RAL /TURN THE '1' INTO A '2' START, RX8 SDN /CHECK THE DONE FLAG JMP LOAD+1 /FIGURE EIGHT WAIT LOOP RX8 SER /ANY ERRORS? SNA /NO, CHECK OPERATION JMP CYCLE /YES, TRY DIFFERENT COMBO TAD TEST /OK, DUMP THE SILO (AC=2) RX8 LCD TAD TEST /SAVE FUNNY RESULT FOR AND C360 /COMPATIBILITY REASONS TAD C7004 DCA C420 /DON'T NEED THIS ANY MORE C360, 360 /THIS IS A 'NOP' JMS LOAD /GET 12-BITS FROM SILO DCA 2 /PUT IN IT LOCATION 2 ISZ .-1 /NOW MAKE THAT LOCATION 3 JMP .-3 /LOOP HERE 'TIL WE HIT '.-3' LOAD, 0 /MOVE DATA BACK AND FORTH RX8 STR /READY? JMP START /NO, DONE? RX8 XDR JMP I LOAD C420, 420 /MASK TEST, 20 /DRIVE AND DENSITY SELECTION ENPUNCH /HERE ARE THE VARIOUS IOT INSTRUCTIONS - SOME USE THE AC RX8= 6750 /THE STANDARD DEVICE CODE LCD= 1 /LOAD COMMAND REGISTER XDR= 2 /TRANSFER DATA STR= 3 /SKIPS /SKIP ON DATA FLAG SER= 4 /CLEAR /SKIP ON ERROR FLAG SDN= 5 /FLAGS /SKIP ON DONE FLAG INTR= 6 /+AC11 SETS INTERRUPTS INIT= 7 /INITIALIZE CONTROLLER /NOW WE HAVE AN INTERESTING PROBLEM: THE PRIMARY BOOTSTRAP /READS IN SECTOR 1 OF TRACK 1 IN 12-BIT MODE. HOWEVER, WE /MUST WRITE THIS SECTOR IN 8-BIT MODE, SO WE HAVE TO FILL /IT IN 'BY HAND' WITH SOME MIGHTY FUNNY LOOKING STUFF. THE /CONVERSION WAS DONE WITH 'FUTIL' BY FIRST WRITING THE IN- /STRUCTIONS IN 12-BIT MODE, AND THEN READING THEM BACK IN /IN 8-BIT MODE,USING THE APPROPRIATE HANDLER (RXA1:,RBA1:) /HERE IS A LIST OF THE 8-BIT CODES WHICH MUST BE WRITTEN: / 2000; 0117; 2336; 2640; 2372; 3606; 0002; 0760 / 2102; 2022; 0542; 0536; 2140; 4702; 3140; 3216 / 1540; 6562; 0204; 4522; 0202; 1262; 0140; 6222 / 7202; 6675; 7242; 6315; 5760; 3217; 0372; 1213 / 2044; 2410; 4202; 0674; 1160; 2212; 0202; 2266 / 0202; 2666; 1602; 5670; 0040; 2126; 1440; 5550 / 1643; 0400; 2344; 3156; 0140; 3142; 0004; 2042 / 0360; 4007; 0263; 4260; 1336; 5630; 7664; 7536 XLIST; /QUIETLY LOAD THE INSTRUCTIONS WE LISTED ABOVE 2000; 0117; 2336; 2640; 2372; 3606; 0002; 0760 2102; 2022; 0542; 0536; 2140; 4702; 3140; 3216 1540; 6562; 0204; 4522; 0202; 1262; 0140; 6222 7202; 6675; 7242; 6315; 5760; 3217; 0372; 1213 2044; 2410; 4202; 0674; 1160; 2212; 0202; 2266 0202; 2666; 1602; 5670; 0040; 2126; 1440; 5550 1643; 0400; 2344; 3156; 0140; 3142; 0004; 2042 0360; 4007; 0263; 4260; 1336; 5630; 7664; 7536 XLIST; /THIS PREVENTS NEEDLESS GARBAGE IN THE LISTING / NOW FOR A LISTING OF THE SECONDARY BOOTSTRAP NOPUNC; RELOC 2 /STARTS AT LOC 2 FIRST, .+2 /LOAD CONTROL SMA /NOP BYTE1, RX8 XDR /READ THE STATUS REGISTER BYTE2, AND LSUB /CHECK THE 'RX02' BIT BYTE3, SNA CLA /IF SET, LEAVE LSUB ALONE SECNT, DCA LSUB+2 /IF NOT, REMOVE THIS INST. INDEX, UNLOAD-1 /CONTINUE 12-BIT LOAD RECRD, 1 /THE SECTOR NUMBER ISZ JMPNXT /CLIP THE CONNECTION TAD JMPINS TRACK, DCA XFIELD+1 /CHANGE THE DATA LOOP CML IAC /TRACK 1, SECTOR 1 AGAIN SECOND, DCA TRACK /TRACK 7, SECTOR 11 LATER TAD B7377 DCA INDEX /LOAD AT 07400, 27400 CMA CLL RTL /-3 DCA SECNT /3 SECTORS PER OS/8 BLOCK THIRD, TAD B106 /BYTE MODE READ FROM UNIT 0 JMS LSUB TAD RECRD /LOAD CURRENT SECTOR NUMBER JMS LOAD FOURTH, TAD FIRST /ADD 4 DCA RECRD TAD TRACK /NOW THE TRACK NUMBER (1,7) JMS LOAD /THIS WILL SET THE DONE FLAG START, RX8 SDN /MATCHES UP WITH PRIMARY BOOT JMP LOAD+1 RX8 SER SKP B7666, 17666 /'HLT' - ALL ERRORS ARE FATAL SNA CLA JMPNXT, JMP I FIRST /AC=0 FOR SILO OPERATION TAD B102 JMS LSUB /EMPTY THE SILO AFTER READ XFIELD, JMS LOAD CDF 0 /BECOMES 'JMP I STOR' DCA I INDEX JMP XFIELD /12-BIT UNLOAD LOOP /THE PRIMARY BOOTSTRAP ENDS WHEN THE INSTRUCTION ABOVE /IS LOADED. THIS FINISHES THE 12-BIT LOAD WHICH READS /IN THE ROUTINES TO HANDLE 8-BIT DATA. THE INSTRUCTION /LABELED 'JMPNXT' THEN STARTS UP THE FINAL LOAD PROCE- /DURE WHICH READS IN THE LAST PAGES OF FIELDS 0,1 & 2. RELOC 60 /FOLLOWING 'LOAD' UNLOAD, JMS LOAD DCA BYTE1 /8-BIT UNPACKING LOOP JMS LOAD DCA BYTE2 JMS LOAD JMS STOR TAD BYTE2 DCA BYTE1 TAD BYTE3 JMS STOR JMP UNLOAD STOR, UNLOAD+1 /REMEMBERS THE NEXT STEP CLL RTL B106, CLL RTL DCA BYTE3 TAD BYTE3 B102, AND B7400 /STRIP OFF 4 BITS TAD BYTE1 B7400, 7400 DCA I INDEX JMPINS, JMP I STOR LSUB, 10 /MASK FOR STATUS REGISTER RX8 LCD JMS LOAD /FOR THE RX02; 0 FOR RX01 JMP I LSUB B7377, 7377 /END OF 12-BIT LOAD ENPUNCH /BEGINNING OF 8-BIT CODE RELOC SMA /COME HERE ON A SECTOR BREAK TAD LOAD DCA STOR /SAVE THE RETURN ADDRESS B2007, ISZ SECNT JMP THIRD /DO THREE AT A TIME TAD B3011 /LOCATION OF OS/8 BLOCK 66 B3011, DCA RECRD TAD B2007 /IS TRACK 7, SECTORS 11-21 CDF 20 ISZ .+1 /SET UP FOR THE NEXT PHASE JMP . JMP SECOND /READ BLOCK 66 INTO 27400 /THE HIGH-ORDER BITS IN 'TRACK' AND 'RECRD' ARE IGNORED /NEXT STEP IS TO CHECK THE 'LSUB' ROUTINE TO SEE WHICH /CONTROLLER WE HAVE AND MODIFY THE HANDLER ACCORDINGLY. B7600, 7600 /MULTI-USE CONSTANT TAD LSUB+2 /THIS IS '0' FOR THE RX01 SZA CLA TAD BJMS DCA I BADR /MAKE THE HANDLER THE SAME /HERE'S A NICE FEATURE THAT ALL BOOTSTRAPS SHOULD HAVE: /TRY TO PRESERVE THE CURRENT DATE WORD (MAY BE GARBAGE) CDF 10 /LOCATION OF OS/8 DATE WORD TAD I B7666 DCA LOAD /SAVE FOR A MOMENT /NOW MOVE THE CODE AT 27400 TO THE LAST PAGE OF FIELD 1 BMOVE, CDF 20 ISZ B7377 TAD I B7377 CDF 10 DCA I B7600 ISZ B7600 JMP BMOVE TAD LOAD /PUT THE DATE BACK DCA I B7666 CDF 0 TAD B16 /SET THE DONE FLAG RX8 LCD JMP I .+1 /AND WE'RE UP AND RUNNING! 07605 B16, 16 /MOVE ERROR REGISTER BJMS, JMSXFR BADR, RX02XX RELOC /END OF BOOTSTRAP CODE /THE HANDLER ITSELF FOLLOWS. IT LIVES IN THE LAST PAGE /OF FIELDS 0 AND 2 AND HENCE REQUIRES A 12K SYSTEM. THE /LAST PAGE OF FIELD 1 IS USED FOR SYSTEM TABLES. A PRO- /GRAM WHICH REQUIRES THE USE OF ALL OF FIELD 2 MUST RE- /COGNIZE CERTAIN 'FINGERPRINTS' IN THE HANDLER AND MAKE /THE NECESSARY MODIFICATIONS TO RELOCATE THE HIGH FIELD /CODE SOMEWHERE ELSE. FORTRAN IV AND COMMERCIAL BASIC /ARE BOTH CLEVER ENOUGH TO KNOW HOW TO DO THIS... PAGE 1 RELOC 07600 ZBLOCK 7 /LEAVE ROOM FOR MONITOR CALL SYS, RBA0, VERSION /STARTS AT 07607 CLA CLL /DON'T TRUST USER 0 /FREE!! (FOR SMALL CONSTANT) 3 /FLAG FOR A '12K' HANDLER TAD RBA0 /MOVE THE CALL ADDRESS DCA RBA1 UNIT1, CLL RTL /COMES IN WITH AC=4 FROM RBA1: DCA DRIVE /SAVE THE UNIT SELECT BIT RDF /MUST BE BEFORE 7635 TAD CDI0 DCA REXIT /SAVE THE RETURN CDI CMA CLL RTL DCA ERCNT /SET THE RETRY COUNT CDI0, CDF CIF 0 /MUST BE BEFORE 7635 ///// AGAIN, TAD RBA1 /BACK UP THE ARG. POINTER DCA RBA1 TAD REXIT /RESTORE THE CALLING FIELD DCA .+1 TEMP, HLT /CDF CIF CF TAD I RBA1 /SAVE THE FUNCTION WORD DCA PUTB /WHERE WE CAN GET AT IT ISZ RBA1 /ADVANCE CALL POINTER TAD I RBA1 DCA BUFAD /SAVE THE BUFFER ADDRESS ISZ RBA1 /ADVANCE TO BLOCK NUMBER TAD I RBA1 TAD I RBA1 /X3 CONVERTS TO SECTORS IFNZRO .-7642 <ER7642, __> CIF 20 /MUST BE LOCATED AT 7642 TAD I RBA1 JMS INITLZ /SAVE SECTOR COUNT, ETC. PUTB, 0 /HOLDS FIRST ARGUMENT TAD I BUFAD ISZ BUFAD P7400, 7400 /NOP JMS MOVEB /PUT A BYTE IN SILO AND P7400 JMP I PUTB /RETURN HIGH 4 BITS ///// ISZ RBA1 /SKP THE ERROR RETURN REXIT, HLT /CDI TO CALLING FIELD ISZ RBA1 JMP I RBA1 /AC IS -2 ON AN ERROR ///// TAD SAVAC /RESTORE AC MOVIE, RX8 STR /TRANSFER FLAG UP? JMP .-1 RX8 XDR /MOVE DATA IN OR OUT JMP I MOVEB ///// IFNZRO .-7665 <ERRBA1, __ /INTERLEAVED WITH RLC > RBA1, VERSION /ENTRY POINT FOR DRIVE 1 CLA CLL IAC RTL /SET AC=4 FOR DRIVE JMP UNIT1 /REJOIN MAINLINE ///// WRITE, JMS PUTB /PUT AWAY FIRST BYTE CLL RTR DCA TEMP /SAVE HIGH NIBBLE AT 1700 BITS JMS PUTB BSW /MOVE LOWER NIBBLE TO 0074 BITS TAD TEMP /MERGE UPPER NIBBLE CLL RTR /AND MOVE TO 377 POSITION JMS MOVEB /THE NEXT LOC MAY GET WIPED OUT IFNZRO .-7700 <ERUSR0, __ > SKP CLA /REMOVE DATA BITS AND WRONG USR ENTRY HLT /FATAL FIELD 0 USR CALL HALT AT 7701 ISZ BUCNT /FINISHED YET? JMP WRITE RXOUT, CIF 20 /CLEAR BUFFER AT END JMP CLEAR+1 /WRITE SECTOR AND EXIT ///// MOVEB, 0 /PUT OR GET BYTE FROM SILO ISZ BYCNT JMP MOVIE /NOT DONE YET DCA SAVAC /SAVE THE AC CIF 20 JMP MOVEC /READ/WRITE SECTOR, ETC. ///// READ, JMS MOVEB /GET THE FIRST BYTE DCA TEMP JMS MOVEB /GET THE SECOND ONE DCA PUTB JMS MOVEB /AND THEN GET NO. 3 CLL RTL /PUT IN 1774 BIT POSITION DCA MOVEB TAD MOVEB /PUT AWAY FIRST WORD CLL RTL /IN 776 POS AND P7400 TAD TEMP /MERGE BITS AND BYTES DCA I BUFAD ISZ BUFAD NOP TAD MOVEB /NOW DO THE NEXT ONE BSW AND P7400 TAD PUTB DCA I BUFAD ISZ BUFAD DRIVE, 0 /LOCATED AT 7740 ISZ BUCNT /FILLED THE ENTIRE BUFFER? JMP READ /NO JMP RXOUT /YES BYCNT= 7750 /USE A FEW DATA BREAK LOCS ERCNT= 7751 BUFAD= 7752 SAVAC= 7753 BUCNT= 7754 RELOC; PAGE /REMAINDER IS USED BY OS/8 /UPPER FIELD STUFF - LOTS OF ROOM HERE (OH REALLY?) NOPUNC; FIELD 2; ENPUNCH RELOC 27600 TRNSFR, 0 /MOVE A BYTE IN OR OUT RX8 STR JMP .-1 /WAIT FOR THE FLAG RX8 XDR M200, 7600 /CLEAR THE AC JMP I TRNSFR LSECTR, 0 /LOGICAL SECTOR NUMBER SECTOR, 0 /PHYSICAL " " FUNCTN, /BYTE MODE, UNIT, R/W INITLZ, 0 DCA LSECTR /SAVE LOGICAL SECTOR NO. JMS DIVIDE /SET DF, BYTE COUNT, DISK ADR TAD I INITLZ /GET THE FUNCTION WORD P7004, RAL AND M200 /STRIP PAGE COUNT CIA STL RAR DCA I PBUCNT /SAVE IN FIRST ENTRY POINT STL RAR TAD I INITLZ /GET FUNCTION WORD AGAIN AND P70 TAD CDF0 /FORMULATE THE CDF DCA CDFB TAD P7102 /GET SILO COMMAND SZL /READ OR WRITE? AND P1100 /READ=7102, WRITE=1100 TAD I P7740 /PLUS DRIVE SELECT BIT DCA FUNCTN SNL CLA /IS IT A READ CALL? JMS FLOPPY /YES, GET THE FIRST SECTOR JMS FNCALL /SET DF AND SILO OPERATION CIF 0 SNL CLA /SELECT THE CORRECT RETURN JMP READ JMP WRITE /ONE OF THESE TWO MOVEC, JMS FLOPPY /SILO DONE, DO SECTOR OP CDF 0 ISZ I P7750 /COUNT BYTE-IN-PROGRESS JMS FNCALL /THEN DO ANOTHER SILO OP CIF 0 JMP MOVIE-1 /RETURN TO SILO ROUTINE. CLEAR, JMS TRNSFR /CLEAR OUT THE SILO CDF 0 ISZ I P7750 /TEST THE BYTE COUNTER JMP CLEAR TAD FUNCTN /WAS IT WRITE? P7740, SMA SZA CLA /POINTS TO 'DRIVE' JMS FLOPPY /YES, WRITE LAST SECTOR CIF 0 JMP REXIT-1 /EXIT FROM HANDLER CALL P70, 70 P116, 116 /MOVE ERROR REGISTER DECIMAL P33, 26+1 M32, -26^1 /FLOPPY DISK CONSTANTS M201, -128-1 M26X64, -26^64^2 /MASTER TRACK DIVISOR OCTAL TRACKN, 0 /PHYSICAL TRACK NUMBER PBUCNT, BUCNT FNCALL, 0 SPA SNA /SKIP FOR ERROR TRANSFER TAD FUNCTN /BYTE MODE + UNIT + R/W CDFB, HLT /RESET THE DATA FIELD RX8 SDN JMP .-1 /WAIT FOR THE DONE FLAG RX8 LCD RX02XX, JMS TRNSFR /= 'NOP' FOR RX01 JMP I FNCALL /(GOES AT LOCATION 27700) JMSXFR= JMS TRNSFR /FOR BOOTSTRAP AND BUILD FLOPPY, 0 /SECTOR I/O ROUTINE TAD P7004 /ADD 4 TO SILO COMMAND JMS FNCALL TAD SECTOR /LOAD SECTOR ADDRESS JMS TRNSFR TAD TRACKN /THEN LOAD THE TRACK NO. CLL IAC /PLUS ONE JMS TRNSFR /SEND TO THE CONTROLLER ISZ LSECTR /COMPUTE NEXT DISK ADR. JMS DIVIDE /(OVERLAPS SECTOR OPER) TAD P116 /WAIT FOR COMPLETION JMS FNCALL /RESETS DF AND DONE FLAG RX8 SER /ANY ERRORS? JMP I FLOPPY /NOPE! RX8 INIT /INITIALIZE AFTER AN ERROR CMA CLL RAL /BACK UP THE ARGUMENT LIST CDF CIF 0 ISZ I P7751 /CHECK THE ERROR COUNT JMP AGAIN /TRY IT ALL OVER AGAIN JMP REXIT /3 STRIKES AND YOU'RE OUT P7751, ERCNT /ERROR COUNT POINTER P1100, 1100 DIVIDE, 0 TAD LSECTR /GET LOGICAL SECTOR NUMBER DCA SECTOR TAD P7740 /SET THE BIT COUNTER DCA TRACKN TAD M26X64 /GET THE DIVISOR CDF0, CDF 0 JMP DVENTR /ENTER DIVIDE LOOP DVLOOP, RAL /SHIFT IN THE QUOTIENT DCA TRACKN /UPDATE TRACK AND BIT COUNTER TAD TRNSFR /SHIFT THE DIVISOR ONE PLACE DVENTR, STL RAR DCA TRNSFR /THIS ALSO CLEARS THE LINK TAD TRNSFR /SUBTRACT THIS POWER TAD SECTOR SMA DCA SECTOR /SAVE THE REMAINDER P7750, SPA SNA CLA /CLEAR AC IF NECESSARY TAD TRACKN /GET THE TRACK NUMBER SPA /DONE? JMP DVLOOP /NO DVDONE, TAD TRACKN /AC=2*TRACK NO.,L=HALFTRACK TAD TRACKN /THIS MAKES 3X THE TRACK NO. TAD SECTOR /PLUS REMAINDER FROM DIVIDE TAD SECTOR /'NOP' FOR PDP8-E VERSION RAL /SHIFT IN THE HALFTRACK BIT TAD M32 /NOW REDUCE MODULO 26(10) SMA JMP .-2 TAD P33 /RESTORE REMAINDER (PLUS 1) DCA SECTOR /SAVE FOR NEXT DISK OPER P7102, CLL BSW /CLEAR LINK FOR READ CALLS TAD M201 DCA I P7750 /RESET THE BYTE COUNTER JMP I DIVIDE /DF=0 /THE LAST FOUR LOCATIONS ON THIS PAGE ARE USED BY BATCH RELOC; $