/RK05 FORMATTER FOR COS / /COPYRIGHT 1972, 1973 /DIGITAL EQUIPMENT CORPORATION /MAYNARD, MASS. 01754 / / /THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE /ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION /OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT /AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC. / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL /EQUIPMENT CORPORATION. / /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. / /THIS LOADER ALLOWS 4K PDP-8 PROGRAMS TO BE LOADED UNDER COS. /(PRIMARILY, FOR THE DECTAPE AND DISK FORMATTERS). / /REQUIREMENTS AND METHOD: / /ASSEMBLE PDP-8 PROGRAM INTO FIELD 1 /PUT ITS STARTING ADDRESS AT LOCATION 10000 /PUT THIS CODE AT *200, FIELD 0 /ABSLOAD THE WHOLE THING PRECEEDED BY BINARY OF COS 300 MONITOR /SAVE 0-377,10000-17577;200 UNDER OS/8 /TO REBOOT COS AFTER EXECUTION OF PROGRAM, JUMP TO 7600. / KMOVE=23 *200 IOF /ONCE-ONLY CODE! TAD (-200 JMS I KMOVE /MOVE PAGE 7600 TO FIELD 1 CDF 10 7600-1 7600-1 TAD (-200 JMS I KMOVE /NOW MOVE THIS CODE TO 7600 CDF 0 200-1 7600-1 JMP I .+1 MOVLUP&177+7600 /CONTINUE EXECUTION THERE MOVLUP, CDF 10 /NOW SWAP 0-7577, FIELDS 0 AND 1 TAD I XX1 DCA MOVTMP CDF 0 TAD I XX2 CDF 10 DCA I XX1 CDF 0 TAD MOVTMP DCA I XX2 ISZ XX1 ISZ XX2 ISZ MOVCNT JMP MOVLUP TAD (JMP COSBT DCA I XX2 /XX2 = 7600 JMP I 0 /GO TO STARTING ADDR OF PROGRAM /NOW SWAP FIELDS BACK AGAIN COSBT, IOF /JUST IN CASE! RESLUP, CDF 10 TAD I X3 CDF 0 /WE DON'T NEED TO PRESERVE FIELD 0 NOW DCA I X4 ISZ X3 ISZ X4 ISZ RESCNT JMP RESLUP JMP I .+1 RES200 RES200, TAD (-200 /NOW MOVE PG 7600 BACK CDF 10 /THIS CODE GETS EXECUTED AT PG 200 JMS I KMOVE CDF 0 7600-1 7600-1 ION JMP I L7600 MOVTMP, 0 RESCNT, -7600 MOVCNT, -7600 XX1, 0 XX2, 0 X3, 0 X4, 0 L7600, 7600 FIELD 1 /RK8E DISK FORMATTER PROGRAM /COPYRIGHT 1972, DIGITAL EQUIP. CORP., MAYNARD, MASS. / / JV / DSKP=6741 /SKIP ON TRANSFER DONE OR ERROR DCLR=6742 /CLEAR DISK CONTROL LOGIC DLAG=6743 /LOAD ADDRESS AND GO DLCA=6744 /LOAD CURRENT ADDRESS DRST=6745 /READ STATUS REGISTER DLDC=6746 /LOAD COMMAND REGISTER DMAN=6747 /LOAD MAINTENANCE / IOTCHN=JMP I XCHANG LODTRK=JMS I XWRTRK REDDSK=JMS I XRDTRK RECAL=JMS I XRESTR RECEIV=JMS I XWAIT KILBUF=JMS I XKLBUF ERROR=JMS I XERRO RDSTAT=JMS I XRDST LDADD=JMS I XLDAD DSKSKP=JMS I XSDKP LDCMD=JMS I XLDCM LDCUR=JMS I XLDCA CLRALL=JMS I XCLDR PRNTER=JMS I XPRN OCTEL=JMS I XFROCT TWOCT=JMS I XTOCT TYPE=JMS I XPRINT CRLF=JMS I XCRLF / *0 / 200 /STARTING ADDR 5001 0002 0003 / *10 / AUTO10, 0 / AUTO11, 0 / *20 / XCHANG, CHANG XWRTRK, WRTTRK XRDTRK, REDTRK XRESTR, RESTOR XWAIT, WAIT XKLBUF, KLBUF XPRINT, PRINT XERRO, ERRO XRDST, RDST XSDKP, SDKP XLDCM, LDCM XLDCA, LDCA XLDAD, LDAD XCLDR, CLDR XPRN, PRN XFROCT, FROCT XTOCT, TOCT XCRLF, UPONE XLOTRK, LOTRK XHITRK, HITRK BGNBUF, WRKBUF AMOUNT, 0 SWITCH, 0 K0003, 0003 K0007, 0007 K0010, 0010 K0040, 0040 K0200, 0200 K0260, 0260 K0240, 0240 K0316, 0316 K0331, 0331 K0277, 0277 K4000, 4000 K2000, 2000 K7735, 7735 K7740, 7740 K7700, 7700 K7760, 7760 K0077, 0077 K5000, 5000 K7771, 7771 K0037, 0037 KCDF, CDF K7400, 7400 / DECIMAL / M12, -12 / OCTAL / M313, -313 M4, -4 DRIVNO, 0 CHAR, 0 LOWAD, 0 HIGHAD, 0 TRKCNT, 0 DSKCNT, 0 SBCNT1, 0 STCNT1, 0 STCNT2, 0 STCNT3, 0 TCNTR1, 0 TCNTR2, 0 TCNTR3, 0 TCNTR4, 0 TCNTR5, 0 / GDREG1, 0 GDREG2, 0 CRREG1, 0 CRREG2, 0 STREG, 0 DBREG, 0 CMREG, 0 DAREG, 0 CAREG, 0 ADREG, 0 DTREG, 0 HOMEMA, 0 FLDMAX, 0 DATCNT, 0 K5371, 5371 K5300, 5300 / XMOVE, MOVE LOC8ED, 0 XEND, ENDTST SOFT, 0 ADPOT1, DSK0A DSK0A, 0 DSK1A, 1 DSK2A, 2 DSK3A, 3 ADPOT2, DSK0B DSK0B, 0 DSK1B, 0 DSK2B, 0 DSK3B, 0 / *200 / BGN, SKP CLA /REGULAR START IOTCHN /CHANGE DEVICE TO SWR3-8 RIF DCA HOMEMA TAD HOMEMA TAD KCDF /MAKE HOMEDF DCA .+1 HLT /MAKE DF=IF / CRLF CRLF PRNTER /PRINT "RK8E DISK FORMATTER PROGRAM" MES1 /MESSAGE 1 POINTER CRLF PRNTER /PRINT "FOR ALL QUESTIONS" MES2 /MESSAGE POINTER 2 ALLAGN, TAD M4 DCA STCNT1 /COUNTER FOR AMOUNT OF DISKS DCA LOC8ED DCA STCNT2 SAMAGN, CRLF PRNTER /PRINT "FORMAT DISK ? " MES3 /MESSAGE POINTER 3 TAD STCNT2 TAD K0260 TYPE /TYPE DISK NUMBER QUES1, TAD K0277 TYPE /TYPE ? TAD ADPOT1 TAD STCNT2 DCA STCNT3 RECEIV /WAIT FOR CHARACTER JMP NOTDSK /NO NOT THIS DISK JMP QUES1 /NEITHER YES OR NO WASDSK, ISZ LOC8ED CLA CLL CMA NOTDSK, DCA I STCNT3 /YES, WAS CLEAR DISK POINTER ISZ STCNT2 /UPDATE POINTER ISZ STCNT1 /COUNT DISKS JMP SAMAGN /ASK ABOUT NEXT JMP DONE /ALL DONE / DONE, CRLF PRNTER /PRINT "ARE YOU SURE ?" MES4 /MESSAGE POINTER 4 RECEIV /WAIT FOR CHARACTER JMP ALLAGN /NO, START ALL OVER JMP DONE /NEITHER TYPE ? TAD LOC8ED CIA SNA /ANY DISKS JMP BGN /NO, OPERATOR ERROR DCA LOC8ED /YES, AMOUNT LOCATED / /FIRST RECALIBRATE AND FORMAT IN WRITE ALL MODE /ALL DISK DRIVES SELECTED BY OPERATOR,. MAKE THE FIRST /TWO WORDS OF EVERY DISK SECTOR EQUAL TO THE /ABSOLUTE DISK ADDRESS. / FRMDSK, JMS I XMOVE /MOVE DISK POINTERS TAD LOC8ED DCA AMOUNT TAD AMOUNT DCA DSKCNT /COUNTER FOR AMOUNT OF DISKS DCA TCNTR4 TAD ADPOT2 DCA TCNTR5 /A FEW COUNTERS TAD I TCNTR5 SZA CLA /FORMAT THIS DISK JMP FORMAT /YES, GO NEXFRM, ISZ TCNTR5 /NO, TRY NEXT ISZ TCNTR4 JMP .-5 HLT /WHAT HAPPENED???? / FORMAT, TAD TCNTR4 AND K0003 /MASK OUT CLL RAL /MAKE DISK NUMBER DCA DRIVNO RECAL /RECALIBRATE THIS DRIVE JMP RENEX1 /RECALIBRATE NEXT EXISTING DCA LOWAD /SETUP ADDRESS POINTER DCA HIGHAD /SETUP ADDRESS POINTER TAD M313 DCA TRKCNT /COUNTER FOR AMOUNT OF TRACKS WRTDSK, LODTRK /FORMAT A TRACK JMP RENEX1 /TO NEXT DISK CLA CLL TAD LOWAD TAD K0040 DCA LOWAD /UPDATE TO NEXT TRACK SZL CLA /SET EXTENDED BIT ISZ HIGHAD /YES ISZ TRKCNT /UPDATE TRACK COUNTER JMP WRTDSK /DO NEXT TRACK RENEX1, ISZ DSKCNT /UPDATE DISK COUNTER JMP NEXFRM /DO NEXT DISK / /ROUTINE TO CHECK ADDRESSING INFORMATION ON THE DISK. /THE FIRST TWO WORDS OF EVERY SECTOR SHOULD EQUAL /THE ABSOLUTE DISK ADDRESS. ALL OTHER DATA IS /NOT CHECKED. / CHKDSK, TAD AMOUNT DCA DSKCNT /AMOUNT OF DISKS DCA TCNTR4 TAD ADPOT2 DCA TCNTR5 TAD I TCNTR5 /SOFTWARE INFORMATION SZA CLA /CHECK THIS DISK JMP CHKDAT /CHECK THIS ONE NEXCHK, ISZ TCNTR5 /UPDATE FOR NEXT DISK ISZ TCNTR4 JMP .-5 HLT /WHAT HAPPENED????? / CHKDAT, TAD TCNTR4 AND K0003 /MASK OUT CLL RAL /MAKE DRIVE NUMBER DCA DRIVNO RECAL /RECALIBRATE JMP RENEX2 /TRY NEXT DRIVE DCA LOWAD DCA HIGHAD /SETUP STARTING DISK ADDRESS TAD M313 DCA TRKCNT /AMOUNT OF TRACKS TO DO CHECK, REDDSK /READ AND CHECK ONE CYLINDER JMP RENEX2 /TO NEXT DISK CLA CLL TAD LOWAD TAD K0040 DCA LOWAD /UPDATE TO NEXT CYLINDER SZL CLA /TIME TO SET EXTENDED BIT ISZ HIGHAD /YES, SET IT ISZ TRKCNT /UPDATE CYLINDER COUNTER JMP CHECK /CHECK NEXT ONE RENEX2, ISZ DSKCNT /UPDATE DISK COUNTER JMP NEXCHK /CHECK NEXT JMP I XEND /END OF TEST / PAGE / ENDTST, CRLF PRNTER /PRINT "PASS COMPLETE" TEXEND CRLF PRNTER /PRINT "TRY SAME SEQUENCE" MES5 RECEIV /WAIT FOR INPUT FROM OPERATOR JMP ALLAGN /NO, ASK AGAIN JMP .-5 JMP FRMDSK /TRY SAME SEQUENCE / PAGE / /SUBROUTINE FOR "ERRORS," SCOPE LOOPS, AND /ERROR TYPEOUTS. / ERRO, 0 CLA CLL IAC TAD ERRO /GET PC STORED DCA RETRN1 /STORE FOR RETURN CRLF CRLF TAD I ERRO /GET TEXT POINTER AND K0007 /MASK 9-11 TAD HEDTAD /MAKE ERROR HEADER TAD DCA .+1 HLT /MODIFIED HEADER TAD DCA .+2 PRNTER /MODIFIED HEADER POINTER HLT CRLF PRNTER /PRINT PC: TEXPC TAD ERRO /GET PC POINTER OCTEL /PRINT PC STORED TAD I ERRO /GET TEXT POINTER CLL RAL SNL JMP NTGD /NOT GD: REGISTER DCA ERRO PRNTER /PRINT GD: TEXGD TAD ERRO SMA CLA /WAS IT A 6 BIT OCTAL BYTE JMP .+3 /NO TAD GDREG1 /GET DATA TWOCT /PRINT TWO OCTAL TAD GDREG2 OCTEL /PRINT FOUR OCTAL SKP CLA NTGD, DCA ERRO TAD ERRO /GET TEXT POINTER CLL RAL SNL JMP NTCRC DCA ERRO PRNTER /PRINT CR: TEXCR TAD CRREG1 TWOCT /PRINT TAD CRREG2 OCTEL /PRINT FOUR OCTAL SKP CLA NTCRC, DCA ERRO TAD XTEXT DCA PCNTR2 TAD XREG DCA AUTO10 TAD K7771 DCA PCNTR1 /COUNTER FOR # OF HEADS STRAUT, TAD ERRO /GET TEXT POINTER SMA JMP NOTEX /NOT THIS ONE CLL RAL DCA ERRO TAD PCNTR2 /GET TEXT MESSAGE POINTER ISZ PCNTR2 ISZ PCNTR2 DCA .+2 /STORE FOR PRNTER PRNTER /PRINT XX: HLT /MODIFIED TEXT POINTER TAD I AUTO10 OCTEL /PRINT FOUR OCTAL AGAIN, ISZ PCNTR1 JMP STRAUT /CHECK FOR NEXT XX: JMP I RETRN1 /RETURN TO QUESTION NOTEX, CLL RAL DCA ERRO ISZ PCNTR2 ISZ PCNTR2 ISZ AUTO10 JMP AGAIN / RETRN1, 0 XTEXT, TEXST XREG, CRREG2 PCNTR1, 0 PCNTR2, 0 HEDTAD, TAD HEDLST HEDLST, ERTX1 ERTX2 ERTX3 ERTX4 / PAGE / /ROUTINE TO FORMAT CYLINDER /MAKE FIRST TWO WORDS OF EVERY SECTOR /EQUAL TO DISK ADDRESS. / WRTTRK, 0 CLA CLL CML RAR DCA GDREG2 /SETUP COMPARE REGISTER KILBUF /CLEAR BUFFER TAD K7735 /AMOUNT OF SECTORS TO DO DCA TCNTR1 /SETUP COUNTER DCA TCNTR2 /STARTING WITH 0 TAD K7760 /STOPPER DCA TCNTR3 /SECTOR COUNTER POINTER STOP LODR1, TAD TCNTR2 AND K0037 /MASK SECTOR BITS TAD LOWAD /ADD IN CYLINDER DCA I XLOTRK /SETUP TRACK WORD IN BUFFER TAD HIGHAD TAD DRIVNO /ADD IN DRIVE NUMBER DCA I XHITRK /SETUP TRACK WORD IN BUFFER TAD I XHITRK TAD HOMEMA /CURRENT FIELD TAD K5000 /FUNCTION WRITE ALL LDCMD /LOAD COMMAND TAD BGNBUF LDCUR /LOAD CURRENT ADDRESS TAD I XLOTRK LDADD /LOAD TRACK AND GO DSKSKP /SKIP ON FLAG JMP .-1 /WAIT FOR FLAG RDSTAT /READ STATUS TAD K4000 SZA CLA /WAS STATUS 0? JMP LODER /ERROR, STATUS ON WRITE ALL ISZ TCNTR2 ISZ TCNTR3 /COUNT FIRST REVOLUTION SKP CLA /STILL IN FIRST REV. DCA TCNTR2 /SETUP FOR SECTOR "1" ISZ TCNTR2 ISZ TCNTR1 /UPDATE SECTOR COUNTER JMP LODR1 /TRY NEXT SECTOR ISZ WRTTRK JMP I WRTTRK /THIS CYLINDER DONE LODER, ERROR /ERROR, STATUS 5302 /TEXT POINTER / RECAL /CLEAR CONTROL AND DRIVE JMP I WRTTRK /TO NEXT DISK CRLF PRNTER /PRINT "TRY SAME AGAIN" ERMES1 RECEIV /WAIT FOR YES OR NO JMP LODER-2 /WAS A NO TRY SAME CYLINDER JMP .-5 /WAS NEITHER ASK AGAIN JMP WRTTRK+1 /YES, TRY NEXT / PAGE / /ROUTINE TO READ AND CHECK A CYLINDER / REDTRK, 0 TAD K7735 DCA TCNTR1 /AMOUNT OF SECTORS TO DO DCA TCNTR2 /STARTING WITH 0 TAD K7760 DCA TCNTR3 KILBUF /CLEAR BUFFER CHKR1, CLA CLL CMA DCA SOFT /SETUP SOFT ERROR FLAG TAD BGNBUF LDCUR /LOAD CURRENT ADDRESS TAD HIGHAD /EXTENDED CYLINDER BIT TAD DRIVNO /CURRENT DRIVE TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND TAD TCNTR2 AND K0037 /MASK SECTOR BITS OFF TAD LOWAD /ADD IN OTHER DISK ADDRESS LDADD /LOAD AND GO DSKSKP /DISK SKIP IOT JMP .-1 /WAIT FOR FLAG RDSTAT /READ STATUS TAD K4000 /ADD IN FUDGE FACTOR SNA CLA /SKIP IF ERROR JMP STAOK /STATUS O.K. TAD STREG /GET STATUS READ AND K0010 SNA CLA /WAS IT A CRC JMP STAER /NO, JUST A HARD ERROR DCA SOFT /CLEAR SOFT ERROR FLAG STAOK, TAD CMREG /GET LAST COMMAND AND K0007 CIA TAD I XHITRK /GET WORD READ FROM DISK SNA CLA /SKIP IF ERROR JMP FRSTOK /FIRST WORD O.K. TAD I XHITRK /GET WORD DCA DTREG /SETUP ERROR PRINTER TAD CMREG AND K0007 DCA GDREG2 /SETUP GOOD FOR PRINTER JMP DATER /NO, DATA ERROR FRSTOK, TAD I XLOTRK /GET WORD READ CIA TAD DAREG /COMPARE TO GOOD SNA CLA /SKIP IF ERROR JMP DATOK /WORD O.K. ISZ ADREG /SETUP ERROR PRINTER TAD DAREG DCA GDREG2 /SETUP GOOD WORD FOR PRINTER TAD I XLOTRK /GET WORD READ DCA DTREG /SETUP FOR PRINTER JMP DATER /DATA ERROR DATOK, TAD SOFT /GET SOFT ERROR FLAG SNA CLA /WAS IT CLEAR JMP STAER /YES, STATUS ERROR TAD TCNTR2 TAD K0003 /ADVANCE 3 SECTORS DCA TCNTR2 ISZ TCNTR3 JMP CHKR1 /MORE TO FORMAT ISZ REDTRK JMP I REDTRK /EXIT, O.K. DATER, TAD K5371 DCA TCHKT /SETUP TEXT POINTER JMP CHKER /ERROR STAER, TAD K5300 DCA TCHKT /SETUP TEXT POINTER CLA CLL CML RAR DCA GDREG2 /SETUP GOOD STATUS PRINTER CHKER, ERROR /ERROR, READ DATA TCHKT, 0 /MODIFIED TEXT POINTER RECAL /CLEAR CONTROL AND DRIVE JMP I REDTRK /TO NEXT DISK CRLF PRNTER /PRINT "TRY SAME AGAIN" ERMES3 RECEIV JMP DATER-2 /CHECK NEXT JMP .-5 /RE-PRINT JMP REDTRK+1 /TRY SAME AGAIN / PAGE / /SUBROUTINE TO READ STATUS REGISTER / RDST, 0 IOT5, DRST /READ STATUS IOT SKP ERHLT5, HLT /SKIP TRAP DCA STREG /SAVE RESULTS TAD STREG JMP I RDST /EXIT / /SUBROUTINE TO LOAD CURRENT ADDRESS REGISTER / LDCA, 0 DCA ADREG /SAVE IN ADDRESS TAD ADREG DCA CAREG /SETUP INITIAL CURRENT ADDRESS TAD ADREG IOT4, DLCA /LOAD CURRENT ADDRESS IOT JMP I LDCA /EXIT ERHLT4, HLT /SKIP TRAP / / /SUBROUTINE TO LOAD TRACK ADDRESS REGISTER / LDAD, 0 DCA DAREG /SAVE OUTBOUND DATA TAD DAREG IOT3, DLAG /LOAD DISK ADDRESS REGISTER JMP I LDAD /EXIT ERHLT3, HLT /SKIP TRAP / /SUBROUTINE TO LOAD COMMAND REGISTER / LDCM, 0 DCA CMREG /SAVE OUTBOUND DATA TAD CMREG IOT6, DLDC /LOAD COMMAND REGISTER JMP I LDCM /EXIT ERHLT6, HLT /SKIP TRAP / /SUBROUTINE TO ISSUE "DSKP" DISK SKIP IOT / SDKP, 0 IOT1, DSKP /DISK SKIP IOT SKP /DID NOT SKIP ISZ SDKP JMP I SDKP /EXIT / /SUBROUTINE TO ISSUE "DCLR" CLEAR IOT / CLDR, 0 IOT2, DCLR /DCLR "CLEAR IOT" JMP I CLDR /EXIT ERHLT2, HLT /SKIP TRAP / /ROUTINE TO ZERO WORK BUFFER / KLBUF, 0 CLA CLL CMA TAD BGNBUF /START OF BUFFER -1 DCA AUTO10 /SETUP AUTO INDEX TAD K7400 DCA DATCNT /SETUP COUNTER DCA I AUTO10 /CLEAR BUFFER ISZ DATCNT /UPDATE COUNTER JMP .-2 /NOT ALL CLEARED YET JMP I KLBUF /BUFFER CLEARED / /SUBROUTINE TO PRINT TWO OCTAL / TOCT, 0 DCA SBCNT1 /SAVE AC TAD SBCNT1 RAR RTR AND K0007 TAD K0260 TYPE /PRINT FIRST BYTE TAD SBCNT1 AND K0007 TAD K0260 TYPE /PRINT SECOND BIT JMP I TOCT /EXIT / / / /ROUTINE TO DO CRLF / UPONE, 0 CLA CLL TAD K0215 TYPE TAD K0212 TYPE TYPE /TYPE ONE NULL JMP I UPONE / K0215, 0215 K0212, 0212 / /ROUTINE TO PRINT FOUR OCTAL / FROCT, 0 RTL RTL DCA UPONE TAD M4 DCA TOCT TAD UPONE AND K0007 TAD K0260 TYPE TAD UPONE RTL RAL DCA UPONE ISZ TOCT JMP .-11 TAD K0240 TYPE JMP I FROCT / /SUBROUTINE TO PRINT TEXT / PRN, 0 CLA CLL TAD I PRN /GET POINTER ISZ PRN DCA FROCT TAD I FROCT AND K7700 SNA JMP EXIT SMA CML IAC RTR RTR RTR TYPE TAD I FROCT AND K0077 SNA JMP EXIT TAD K3740 SMA TAD K4100 TAD K0240 TYPE ISZ FROCT CLA CLL JMP PRN+5 EXIT, CLA CLL JMP I PRN / K4100, 4100 K3740, 3740 / /ROUTINE TO TYPE / PRINT, 0 TLS TSF JMP .-1 TCF CLA JMP I PRINT / PAGE / /ROUTINE TO WAIT FOR KEY FROM OPERATOR / WAIT, 0 CLA CLL KCC KSF JMP .-1 KRB TAD (-203 /LOOK FOR ^C SNA JMP I (7600 /IF SEEN TAD (203 TLS TSF JMP .-1 DCA CHAR KCC TCF TAD CHAR CIA TAD K0316 SNA CLA /WAS IT A NO JMP I WAIT /YES ISZ WAIT /UPDATE RETURN POINTER TAD CHAR CIA TAD K0331 SNA CLA /WAS IT A YES ISZ WAIT /WAS A YES JMP I WAIT /WAS NEITHER / /ROUTINE TO RECALIBRATE SELECTED DRIVE / RESTOR, 0 CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL TAD DRIVNO /CURRENT DRIVE TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND CLA CLL CML RAR /MAYBE EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER CLA CLL CML RTL /ENABLE RECALIBRATE BIT CLRALL /"RECALIBRATE" DSKSKP /DISK SKIP IOT JMP .-1 /WAIT FOR FIRST DONE FLAG RDSTAT /READ STATUS TAD K2000 SNA /WAS IT BUSY AND DONE JMP RESTA /YES, THEN ITS O.K. TAD K2000 /NO, THEN IT MUST BE JUST DONE SZA CLA /WAS IT JUST DONE JMP RESTER /NO, ERROR RESTA, CLRALL /CLEAR STATUS TAD K0200 /ENABLE SET SECOND DONE FLAG TAD CMREG /ORIGINAL COMMAND LDCMD /LOAD COMMAND DSKSKP /DISK SKIP IOT JMP .-1 /WAIT FOR SECOND DONE RDSTAT /READ STATUS TAD K4000 SZA CLA /WAS IT ONLY DONE FLAG JMP RESTER /NO, ERROR STATUS CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL ISZ RESTOR /UPDATE FOR GOOD RECALIBRATE JMP I RESTOR /RETURN RESTER, ERROR /ERROR, STATUS 5303 /TEXT POINTER / CRLF PRNTER /PRINT "TRY RECALIBRATE" ERMES2 RECEIV /WAIT FOR INPUT JMP .+3 /TRY NEXT EXISTING DISK JMP .-5 JMP RESTOR+1 /TRY AGAIN CLA CLL IAC TAD AMOUNT /GET AMOUNT ON SYSTEM SNA /WAS THERE ONLY 1 LEFT JMP I XEND /LAST DISK DCA AMOUNT /MORE TO GO BUT CLEAR THIS ONE DCA I TCNTR5 /CLEAR DISK POINTER JMP I RESTOR /TRY NEXT ONE / /ROUTINE TO MOVE DISK POINTERS / MOVE, 0 TAD ADPT1 DCA AUTO10 TAD ADPT2 DCA AUTO11 TAD M4 DCA MCNTR1 TAD I AUTO10 /FROM HERE DCA I AUTO11 /TO THERE ISZ MCNTR1 /4 POINTERS JMP .-3 JMP I MOVE / ADPT1, DSK0A-1 ADPT2, DSK0B-1 MCNTR1, 0 / /ROUTINE TO CHANGE DEVICE CODES / CHANG, LAS AND A0770 DCA CSAVE1 /SAVE DESIRED TAD CCNTR1 DCA CSAVE2 TAD CHNPOT DCA RESTOR CHANGR, TAD I RESTOR /GET ADDRESS POINTER DCA MOVE TAD I MOVE /GET OLD CODE AND A7007 /MASK TAD CSAVE1 /ADD IN DESIRED DCA I MOVE /STORE DESIRED DEVICE CODE ISZ RESTOR /UPDATE POINTER ISZ CSAVE2 /UPDATE CHANGE COUNTER JMP CHANGR HLT /DEVICE CODES CHANGED JMP .-1 / A7007, 7007 A0770, 0770 CSAVE1, 0 CSAVE2, 0 CCNTR1, 7772 CHNPOT, CHNPOT+1 IOT1 IOT2 IOT3 IOT4 IOT5 IOT6 / / PAGE TEXPC, TEXT "PC:" TEXGD, TEXT "GD:" TEXCR, TEXT "CR:" TEXST, TEXT "ST:" TEXDB, TEXT "DB:" TEXCM, TEXT "CM:" TEXDA, TEXT "DA:" TEXCA, TEXT "CA:" TEXAD, TEXT "AD:" TEXDT, TEXT "DT:" / ERTX1, TEXT "READ STATUS ERROR" ERTX2, TEXT "DISK DATA ERROR" ERTX3, TEXT "WRITE STATUS ERROR" ERTX4, TEXT "RECALIBRATE STATUS ERROR" / ERMES1, TEXT "TRY TO FORMAT SAME CYLINDER AGAIN?" ERMES2, TEXT "TRY TO RECALIBRATE SAME DISK AGAIN?" ERMES3, TEXT "TRY TO CHECK SAME CYLINDER AGAIN?" / TEXEND, TEXT "RK8E DISK FORMATTER PASS COMPLETE" MES1, TEXT "RK8E DISK FORMATTER PROGRAM" MES2, TEXT "FOR ALL QUESTIONS, ANSWER Y FOR YES OR N FOR NO." MES3, TEXT "FORMAT DISK " MES4, TEXT "ARE YOU SURE?" MES5, TEXT "FORMAT SAME DISK(S) AGAIN?" / PAGE / WRKBUF=. / HITRK=. LOTRK=.+1 / ENDBUF=.+377 / $$$