D0CMP JSB D0CSF WAIT FOR COMPLETION JSB D0ST GO CHECK STATUS JMP D0RW,I LDA D0RW BACK UP POINTER ADA DLM2 STA D0RW JMP D0RW+3 ERROR TRY AGAIN * D0SK NOP LDA DLSA GET CYLINDER D0D04 OTA DC CYLINDER 0 D0D05 STC DC,C LDA D0SKC SEEK COMMAND D0C07 OTA CC D0C08 STC CC,C JSB D0DSF WAIT FOR COMPLETION LDB DLSB GET HEAD SECTOR D0D07 OTB DC HEAD/SECTOR D0D08 STC DC,C JSB D0CSF JSB D0ST CHECK IF OK JMP D0SK,I JMP D0SK+1 ERROR TRY AGAIN * SKP D0ST NOP STF DMA6 TURN OFF DMA LDA D0B5 GET COUNT FOR STATUS D0D09 CLC DC D0C10 CLC CC ADA DLM1 DECREMENT DRIVE D0C11 OTA CC D0C12 STC CC,C JSB D0DSF SZA DONE ALL? JMP D0D09 NO D0D11 LIA DC SLA,RSS ANY ERRORS JMP D0D12 RAL FIRST STATUS SSA JMP D0D12 YES HLT 45B DISC ERROR TRY AGAIN ISZ D0ST RETURN WITH ERROR D0D12 CLC DC D0C13 CLC CC LDA DLSA RESTORE A LDB DLSB AND B INB MOVE TO NEXT SECTOR CPB D0HS0 END OF TRACK? LDB D0HS. YES SET FOR OPPSITE HEAD CPB D0HS1 DONE WITH OPPSITE? CLB YES START ALL OVER SZB,RSS DID I START OVER? INA JMP D0ST,I RETURN * D0DSF NOP CLB D0D06 SFS DC WAIT FOR DATA CHANNEL RSS JMP D0DSF,I OK RETURN INB,SZB TIMED OUT JMP *-4 NO HLT 44B JMP *-1 * D0CSF NOP CLB D0C03 SFS CC WAIT FOR COMMAND CHANNEL RSS JMP D0CSF,I INB,SZB TIMED OUT JMP *-4 NO HLT 44B YES TELL OPERATOR JMP *-1 (NOT RECOVERABLE) SKP D0B5 OCT 5 D0HS0 OCT 30 END OF TRACK SECTOR 24 D0HS. OCT 400 START OF NEXT TRACK FOR THAT CYLINDER D0HS1 OCT 430 END OF NEXT TRACK SECTOR 24 D0SKC OCT 30000 SEEK COMMAND D0RC OCT 20000 READ COMMAND D0WC OCT 111000 WRITE COMMAND D0CW1 OCT 120000 DMA CONTROL WORD + SC * D0RWD DEF D0RW 7900 DRIVER POINTER D0RIO DEF *+1 DEF D0D01 DEF D0D02 DEF D0D03 DEF D0D04 DEF D0D05 DEF D0D06 DEF D0D07 DEF D0D08 DEF D0D09 DEF D0D11 DEF D0D12 DEF D0CW1 DEC -2 DEF D0C01 DEF D0C02 DEF D0C03 DEF D0C04 DEF D0C05 DEF D0C07 DEF D0C08 DEF D0C10 DEF D0C11 DEF D0C12 DEF D0C13 DEC -1 SKP D5RW NOP STA DLSA SAVE CYLINDER STB DLSB AND HEAD SECTOR JSB D5SK GIVE SEEK LDA D5CW1 GIVE DMA THE SELECT CODE OTA DMA6 CLC DMA2 LDA D5RW,I BUFFER ADDRESS ISZ D5RW OTA DMA2 STC DMA2 LDB D5RW,I BUFFER COUNT ISZ D5RW OTB DMA2 SSA READ OR WRITE? JMP D5R IT'S A READ D5S01 CLC SC SET TO OUTPUT COMMAND LDA D5WC GET WRITE COMMAND D5S02 OTA SC,C JMP D5CMP GO WAIT FOR COMPLETION D5R LDA D5RC GET READ COMMSND D5S03 CLC SC SET TO OUTPUT READ COMMAND D5S04 OTA SC,C D5CMP STC DMA6,C START DMA TRANSFER JSB D5CSF WAIT FOR COMPLETION JSB D5ST GO CHECK STATUS JMP D5RW,I LDA D5RW BACK UP POINTER ADA M2 STA D5RW JMP D5RW+3 ERROR TRY AGAIN SKP D5SK NOP JSB D5ST CHECK STATUS FIRST LDA D5SKC GET SEEK COMMAND D5S05 CLC SC SET TO OUTPUT COMMAND D5S06 OTA SC,C JSB D5CSF WAIT FOR ACCEPTANCE LDA DLSA GET CYLINDER D5S07 OTA SC,C JSB D5CSF WAIT FOR COMPLETION LDB DLSB GET HEAD SECTOR D5S08 OTB SC,C HEAD/SECTOR STC SC START OPERATION JSB D5CSF WAIT FOR IT JSB D5ST CHECK IF OK JMP D5SK,I JMP D5SK+1 ERROR TRY AGAIN * D5ST NOP STF DMA6 TURN OFF DMA LDA D5STR GET STATUS REQUEST COMMAND D5S09 CLC SC SET TO OUTOUT COMMAND D5S10 OTA SC,C JSB D5CSF WAIT FOR IT D5S11 LIA SC,C GET FIRST WORD JSB D5CSF WAIT FOR NEXT D5S12 LIB SC,C GET SECOND WORD ALF,ALF AND D5B37 SZA ANY ERRORS CPA D5B37 JMP D5STE NO EXIT HLT 45B D5SC ERROR TRY AGAIN? ISZ D5ST RETURN WITH ERROR D5STE LDA D5FM SET FILE MASK D5S13 CLC SC D5S14 OTA SC,C JSB D5CSF WAIT FOR IT LDA DLSA RESTORE A LDB DLSB AND B INB MOVE TO NEXT SECTOR CPB D5HS0 DONE WITH THIS TRACK? CLB YES SZB,RSS INCREMENT CYLINDER? INA YES JMP D5ST,I RETURN * D5CSF NOP CLB D5S15 SFS SC WAIT FOR COMPLETION RSS JMP D5CSF,I INB,SZB TIMED OUT JMP *-4 NO HLT 44B YES TELL OPERATOR JMP *-1 NOT RECOVERABLE SKP D5HS0 OCT 60 LAST SECTOR FOR CYLINDER (48) D5STR OCT 1400 STATUS REQUEST COMMAND D5FM OCT 7700 SET FILE MASK D5B37 OCT 37 D5WC OCT 005400 WRITE (+INITIALIZE+PROTECT) D5CW1 OCT 000000 DMA CONTROL WORD + SC D5RC OCT 02400 READ COMMAND D5SKC OCT 01000 SEEK COMMAND D5RWD DEF D5RW 7905 DRIVER POINTER D5RIO DEF *+1 DEC -2 MOVE SELECT CODE UP ONE DEF D5S01 DEF D5S02 DEF D5S03 DEF D5S04 DEF D5S05 DEF D5S06 DEF D5S07 DEF D5S08 DEF D5S08+1 DEF D5S09 DEF D5S10 DEF D5S11 DEF D5S12 DEF D5S13 DEF D5S14 DEF D5S15 DEF D5CW1 DEC -1 DLMXA DEF DLLDS DLLDE EQU * SKP * DISC INITIALIZE ROUTINE * * DC EQU 10B CC EQU DC+1 * DI EQU * * CLC INTP,C CLEAR ALL I/O LDA CODSC INSURE THERE IS A CONSOLE DEVICE SZA,RSS HLT 10B NO - TELL OPERATOR LDA *-1 BUILD HALT 77 FOR BOOT IOR B77 STA DLRR+3 LDA DIJ6 SET TO ALLOW CONFIG STA DI5. ONLY ONCE CLA JSB COD,I DO CR-LF JSB MSG OUTPUT TITLE (HEADER) DEF DIMHD,I (NO INPUT) CLA STA DISC CLEAR DISC SELECT CODE JSB COD,I DO CR/LF DI0 JSB MSG ASK FOR TYPE AND SELECT CODE DEF DIMTS JSB CNTS SEARCH FOR MODULE NUMBER DEF DISCT JMP DI0 NOT FOUND ASK AGAIN STA TYPE SAVE TYPE CPA B7 IS IT A VERIFY? JMP DI2 YES - MOVE TO INPUT DEVICE LDB D0RIO 7900 I/O INST LIST SLA 7900/7905? LDB D5RIO 7905 I/O INST LIST STB DLSCL LDB RSS 7900 DISC BOOT SLA 7900/7905? CLB 7905 DISC BOOT STB DRB05 STB ISCF LDB D0RWD 7900 DISC DRIVER SLA 7900/7905? LDB D5RWD 7905 DISC DRIVER STB DLRW LDB DI203 7900 MAX CYLINDER SLA 7900/7905? LDB DI411 7905 MAX CYLINDER STB DIMXC SKP JSB CVSC GET SELECT CODE JMP DI0 NOT GOOD TRY AGAIN STA ISCT SAVE SC FOR UPDATE STA DISC SAVE FOR CHECK LDB DLSCL JSB ISC UPDATE SELECT CODE CLA READ CYLINDER 0 CLB H/S 0 JSB DLRW,I READ IT DEF DIBF,I DEC -128 LDA DIBF+100B SAVE PARAMETERS STA 2111B FOR DOS IIIB LDA DIBF+101B STA 2112B LDA DIBF+102B STA 2113B LDA DIBF+177B STA 2210B LDA DIBF+2 SAVE SYS GEN CODE STA 2013B LDA DIBF+3 SAVE LABEL STA 2014B LDA DIBF+4 STA 2015B LDA DIBF+5 STA 2016B SKP DI1 CLA JSB COD,I DO A CR/LF JSB MSG ASK FOR FIRST, LAST CYLINDERS DEF DIMCY CLA,CLE LDB IBUFD JSB AS2N,I CONVERT FIRST CYLINDER STA DIFC SAVE IT LDA B,I CHECK NEXT CHARACTER SEZ,RSS IS A COMMA ALF,ALF AND B177 CPA COMMA ? RSS RSS JMP DI1 INPUT ERROR ELB INB MOVE PAST COMMA ERB CLA JSB AS2N,I CONVERT LAST CYLINDER STA DILC SAVE IT LDA B,I CHECK NEXT CHARACTER SEZ,RSS IS ZERO ALF,ALF AND B177 SZA JMP DI1 NO - INPUT ERROR LDA DILC CHECK FIRST < LAST CMA,INA ADA DIFC SSA,RSS ? JMP DI1 NO - ERROR LDA DILC CHECK IF LAST IS OVER 202 TRACKS ADA DIMXC SSA,RSS JMP DI1 YES LDA DIFC INA STA DRBCY UPDATE BOOT STA DICY SAVE IT STA DLCY LOADER CLA STA DIHS STA DLHS CLA BUILD CHECKSUM LDB DRBSD ELB,CLE,ERB ADA B,I INB CPB DIAD DONE? RSS YES JMP *-4 STA DRBCS SKP CLA WRITE CONFIG. BOOT CLB JSB DLRW,I D2011 OCT 2011 DEC -128 LDA DIBF+1 CPA 2012B IS THIS A DISC WITH DIAG. BOOT RSS JMP *+7 NO LDA DIBF+176B YES GET OLD BOOT ADA M1 LDB DRBSX JSB DLRW,I DEF DIBF,I DEC -128 LDA DRBCY GET CYLINDER ADA M1 LDB DRBSX HEAD 0 SECTOR 15 JSB DLRW,I WRITE BOOT DEF DIBF DEC -128 LDA DRBCY SWAP BOOTS AGAIN ADA M1 LDB DRBSX INB JSB DLRW,I WRITE LOADER OCT 2211 ABS 2211B-DLLDE * SKP DI2 EQU * CLA DO CR-LF JSB COD,I JSB MSG "DIAG. INPUT DEVICE + SC.." DEF DINDM JSB CNTS SEARCH FOR DEVICE DEF DINDT JMP *-4 NOT FOUND STA TMP0 JSB CVSC CONVERT SELECT CODE JMP *-7 STA .SC SAVE FOR MOVE CPA DISC IS THIS DISC? JMP DI2+2 YES NOT ALLOWED LDB TMP0 BLF RBL,RBL IOR B STA DILSC PUT TYPE & SC IN BASE PAGE LDA TMP0 ADA DINDD LDA A,I LDB DILDV JSB MVDVR MOVE LOADER INTO POSITION ABS LDVR-5767B REQUIRED COUNT FOR MOVE DI3 CLA DO CR-LF JSB COD,I JSB MSG READY INPUT DEVICE DEF LDVRY,I (NO INPUT) CLA,INA JSB CID,I REQUEST CR ONLY LDB M3 REWIND DEVICE JSB DILDV,I DI4 CCA WRITE EOF'S RECORD LDB TYPE CHECK IF VERIFY CPB B7 ?? JMP DILD YES STA DIBF CYLINDER = -1 CLA STA DIBF+1 HEAD AND SECTOR = 0 STA DIBF+2 FWA OF DIAG.= 0 LDA DICY LDB DIHS STA DICYS SAVE LOCATION STB DIHSS JSB DLRW,I WRITE IT DISBF DEF DIBF DI128 DEC -128 LDA DISBF SET SECTOR BUFFER ADA B3 STA DISTA SECTOR STORE ADDRESS LDA DI128 ADA B3 STA DISTC STORE WORD COUNT SKP DILD CLA STA DISN CLEAR SERIAL NUMBER STA DIFWA CLEAR FWA OF DIAG. CLB,INB,RSS DON'T CHECK FOR EOT DILR LDB B2 LOOK FOR EOT JSB DILDV,I SZA EOF OR SSA EOT? JMP DI5 END OF FILE JSB DISTS PUT COUNT IN SECTOR BUFFER ALF,ALF COUNT IS IN UPPER HALF CMA,INA MAKE IT NEG STA DICNT SAVE IT CLB JSB DILDV,I READ ADDRESS JSB DISTS PUT ADDRESS IN SECTOR BUFFER STA DIADD SAVE IT STA DICKM INITIALIZE CHECKSUM DILP CLB JSB DILDV,I READ NEXT WORD JSB DISTS PUT CONTENTS IN SECTOR BUFFER STA DIDTA SAVE IT ADA DICKM ADD WORD STA DICKM TO CHECKSUM LDB DIDTA LDA DIADD CPA DI126 IS THIS THE SERIAL NUMBER? STB DISN YES SAVE IT CMA,INA IS THIS FWA? ADA DIFWA SSA,RSS (CURRENT GREATER THAN LAST) JMP *+3 (NO LEAVE ADDRESS ALONE) LDA DIADD YES UPDATE FWA STA DIFWA ISZ DIADD MOVE TO NEXT ADDRESS ISZ DICNT IS THAT ALL ?? JMP DILP NO CLB JSB DILDV,I READ CHECKSUM JSB DISTS PUT CHECKSUM IN SECTOR BUFFER CPA DICKM DOES IT AGREE? JMP DILR YES JSB YES? DEF DICSE CHECKSUM ERROR, ABORT? RSS JMP DILR NO LDA DICYS RESTORE STARTING STA DICY CYLINDER LDA DIHSS AND STA DIHS HEAD/SECTOR JMP DI6 COMPLETE * SKP DI5 SZA END-OF-FILES? JMP DI7 YES LDB TYPE CHECK IF VERIFY CPB B7 ?? JMP DI8 YES JSB DISTS LDB DISTC CLEAR REST OF SECTOR CPB DI128 DI5. RSS JMP *-4 LDA DISN CHECK SERIAL NUMBER AND DIMSK MASK OFF REV CODE SZA IS IT THE CONFIGURATOR? DIJ6 JMP DI6 NO CONTINUE LDA DICYS YES RESET CYLINDER AND HEAD SECTOR STA DICY LDA DIHSS STA DIHS JMP DI4 READ NEXT FILE DI6 CLA,CLE OUTPUT DSN TO CONSOLE LDB DISNM JSB FMTO,I CCA OUTPUT IT IN OCTAL LDB DISN JSB FMTO,I CCA WRITE EOF STA DIBF CLA STA DIBF+1 STA DIBF+2 STA DIBF+3 LDA DICY LDB DIHS JSB DLRW,I DEF DIBF DEC -128 LDA DICYS READ FIRST LDB DIHSS SECTOR JSB DLRW,I DEF DIBF,I DEC -128 LDA DICY NEXT CYLINDER STA DIBF LDA DIHS AND NEXT HEAD & SECTOR STA DIBF+1 LDA DIFWA AND FWA OF DIAG CMA,INA MAKE IT NEG. STA DIBF+2 LDA DICYS LDB DIHSS JSB DLRW,I DEF DIBF DEC -128 LDA RSS SET TO SKIP ANY CONFIGURATORS AFTER THIS STA DI5. JMP DI4 SKP DI7 CLA JSB COD,I DO CR/LF JSB YES? ASK OPERATOR DEF DIMEL END OF LOAD? RSS JMP DI3 NO, READY DEVICE AND CONTINUE HLT 77B YES STOP JMP 130B,I DO IT ALL OVER AGAIN * DI8 CLA,CLE OUTPUT DSN TO CONSOLE LDB DISNM JSB FMTO,I CCA LDB DISN JSB FMTO,I JMP DILD CONTINUE READING * DISTS NOP LDB TYPE CHECK IF VERIFY CPB B7 ?? JMP DISTS,I YES JUST RETURN STA DISTX SAVE A REG STA DISTA,I PUT IT IN BUFFER ISZ DISTA ISZ DISTC BUFFER FULL? JMP DISTS,I NO LDA DICY YES LDB DIHS JSB DLRW,I WRITE SECTOR DEF DIBF DEC -128 STB DIHS UPDATE HEAD AND SECTOR STA DICY AND CYLINDER CMA,INA ADA DILC SSA IS CYLINDER OVER LAST CYLINDER? JMP *+7 YES LDA DISBF RESTORE ADDRESS STA DISTA LDA DI128 STA DISTC LDA DISTX RESTORE A REG JMP DISTS,I AND RETURN JSB MSG DEF DIERM,I OVER LAST CYLINDER JMP 130B,I SKP ORG 4000B PAGE EQU * * PAPER TAPE LOADER DRIVER * * * PT EQU * * * PTRD EQU *-PT NOP SSB READ OR FORWARD SPACE? ABS JMP+LD+*-PT+3 REWIND OR FORWARD SPACE ABS JSB+LD+PTFW READ WORD ABS JMP+LD+PTRD+100000B SLB REWIND? ABS JMP+LD+PTRD+100000B YES EXIT RBR,SLB FILE FORWARD? RSS ABS JMP+LD+PTRD+100000B NO PTFF EQU *-PT CLB ABS LDA+LD+PTCX ANY COUNT REMAINING SSA,RSS ? ABS JMP+LD+*-PT+3 NO ABS JSB+LD+PTFW YES PICK WORDS UP ABS JMP+LD+PTFF INB SZA,RSS INB ABS JSB+LD+PTFW SZA EOF OR EOT? SSA ABS JMP+LD+PTRD+100000B YES RETURN ABS JMP+LD+PTFF NO DO MORE SKP PTFW EQU *-PT NOP SZB,RSS READ WORD? ABS JMP+LD+PTW YES SLB,RSS ABS JMP+LD+*-PT+3 READ NEXT RECORD PTRS EQU *-PT STC SC,C NO START READER CLB,RSS SEARCH FOR FIRST BYTE ABS LDB+%M10-PAGE SET NULL COUNT TO 10 ABS JSB+LD+PTRB WAIT FOR BYTE SZA ANY DATA YET? ABS JMP+LD+*-PT+6 YES CONTINUE INB,SZB NO EOT YET? ABS JMP+LD+*-PT-4 NO TRY NEXT BYTE INB ABS STB+LD+PTCX SET EOF REACHED ABS JMP+LD+PTFW+100000B YES RETURN WITH EOT ALF,ALF PUT COUNT IN UPPER BYTE ABS STA+LD+PTDOT SAVE IT ABS JSB+LD+PTRB READ NEXT BYTE SZA NEXT BYTE SHOULD BE ZERO ABS JMP+LD+PTEX NOT SO EXIT ABS LDA+LD+PTDOT RETRIEVE COUNT LDB A BLF,BLF INB CMB ABS STB+LD+PTCX ABS JMP+LD+PTFW+100000B OK RETURN SKP PTRB EQU *-PT NOP ABS LDA+%M10-PAGE SET TIME OUT ABS STA+LD+PTDLT CLA,CLE SFS SC READER READY WITH BYTE RSS ABS JMP+LD+PTLD YES READ IT INA,SZA IS FIRST DELAY OVER? ABS JMP+LD+PTRB+4 NO CHECK IT AGAIN ABS ISZ+LD+PTDLT YES IS SECOND DELAY OVER? ABS JMP+LD+PTRB+3 NO RESTART FIRST DELAY PTEX EQU *-PT CLC SC,C STOP READER CCA YES INDICATE END OF FILE SZB EOT? ABS JMP+LD+PTFW+100000B OCT 106074 TAPE TORN OR GATE DOWN ABS JMP+LD+PTRS TRY AGAIN PTLD EQU *-PT LIA SC GET BYTE STC SC,C START NEXT READ ABS JMP+LD+PTRB+100000B PTW EQU *-PT ABS JSB+LD+PTRB GET A BYTE ALF,ALF PUT IT IN UPPER HALF ABS STA+LD+PTDOT SAVE IT ABS JSB+LD+PTRB READ NEXT HALF ABS IOR+LD+PTDOT PUT THEM TOGETHER ABS ISZ+LD+PTCX DECREMENT REMAINDING COUNT NOP ABS JMP+LD+PTFW+100000B RETURN * PTCX EQU *-PT NOP PTDOT EQU *-PT NOP PTDLT EQU *-PT NOP SKP * MAG TAPE LOADER DRIVER * MG EQU * * MGLR EQU *-MG NOP SZB,RSS READ A WORD? ABS JMP+LD+MGW YES ABS STB+LD+MGBF+1 SSB,RSS READ A RECORD? ABS JMP+LD+MGLR0 YES SLB,RSS REWIND? ABS JMP+LD+*-MG+4