X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fos8%2Fv3d%2Fsources%2Fsystem%2Fdectapes%2Fdectape5%2FRKLFMT.PA;fp=sw%2Fos8%2Fv3d%2Fsources%2Fsystem%2Fdectapes%2Fdectape5%2FRKLFMT.PA;h=64bba853a602ac7ebab5e60ed08f87a6bc584c7a;hb=7af5ad59491ddf2066641aef1e0025a337c0f247;hp=0000000000000000000000000000000000000000;hpb=919757fd611e482003ce51f366f6783cab73dea3;p=pdp8.git diff --git a/sw/os8/v3d/sources/system/dectapes/dectape5/RKLFMT.PA b/sw/os8/v3d/sources/system/dectapes/dectape5/RKLFMT.PA new file mode 100644 index 0000000..64bba85 --- /dev/null +++ b/sw/os8/v3d/sources/system/dectapes/dectape5/RKLFMT.PA @@ -0,0 +1,2012 @@ +/RK8E/RK8L DISK FORMATTER +/ +/ +/ +/ +/ +/ +/ +/ +/ +/COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE +/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT +/CORPORATION. DIGITAL EQUIPMENT CORPORATION 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 DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH +/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. +/ +/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE +/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY +/DIGITAL. +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ + /RK8E/RK8L DISK FORMATTER PROGRAM: MD-08-DHRKD-D +/MAINDEC-08-DHRKD-D-D +/ +/MODIFIED FOR OS8V3D BY ED STEINBERGER +/ +DLSC=6740 /LOAD SECTOR COUNTER +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 +/ +LDSC=JMS I XXLDSC +IOTCHN=JMS 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 +APT8A=JMS I XAPT8 +TIME=JMS I XTIME +TICK=JMS I XTICK +KAERRO=JMS I XAERRO +/ +*0 +/ + 304 /REV D + 5001 + 0002 + 0003 +/ +*10 +/ +AUTO10, 0 +/ +AUTO11, 0 +/ +*20 +/ + 0000 /PSEUDO SWITCH REGISTER + 0 /CONTROL WORD 1 - USE PSUEDO SWITCHES **ES** + 400 /CONTROL WORD 2 - SET CONSOLE PACKAGE ACTIVE **ES** + 0000 /RESERVED +XAPT8, APT8 +XTIME, KTIME +XAERRO, AERRO +XTICK, KTICK +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 +XXLDSC, XLDSC +XPRN, PRN +XFROCT, FROCT +XTOCT, TOCT +XCRLF, UPONE +XLOTRK, LOTRK +XHITRK, HITRK +BGNBUF, WRKBUF +AMOUNT, 0 +SWITCH, 0 +K0003, 0003 +K4, 4 +K0007, 0007 +K0040, 0040 +M313, -313 +K0277, 0277 +K0200, 0200 +K0260, 0260 +K4000, 4000 +K7735, 7735 +K7760, 7760 +K0400, 400 +K0037, 0037 +KCDF, CDF +M4, -4 +M10, -10 +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 +/ +GDREG2, 0 +EXBIT, 0 +CMREG, 0 +STREG, 0 +DAREG, 0 +CAREG, 0 +ADREG, 0 +DTREG, 0 +BGNTST, FRMDSK +HOMEMA, 0 +DATCNT, 0 +CLKCNT, -2 +/ +XMOVE, MOVE +LOC8ED, 0 +XEND, ENDTST +SOFT, 0 +ADPOT1, DSK0A +DSK0A, 0 +DSK1A, 0 +DSK2A, 0 +DSK3A, 0 +DSK4A, 0 +DSK5A, 0 +DSK6A, 0 +DSK7A, 0 +ADPOT2, DSK0B +DSK0B, 0 +DSK1B, 0 +DSK2B, 0 +DSK3B, 0 +DSK4B, 0 +DSK5B, 0 +DSK6B, 0 +DSK7B, 0 +PCOUNT, 0 /USED ONLY IF ON APT +/ +*200 +/ +BGN, RIF + DCA HOMEMA + TAD HOMEMA + TAD KCDF /MAKE HOMEDF + DCA .+1 + HLT /MAKE DF=IF +/NOW TEST FOR APT SYSTEM +/IF ON APT TERMINAL MESSAGES ARE SKIP +/TO AVOID TIMING PROBLEMS WITH THE SYSTEM + APT8A /TEST FOR APT SYSTEM + JMS XC8PSW /GET SR=. + *.-1 /**ES** + NOP /**ES** + IOTCHN /CHANGE DEVICE TO SWR3-8 + CRLF + CRLF + PRNTER /PRINT "RK8E/RK8L DISK FORMATTER PROGRAM" + MES1 /MESSAGE 1 POINTER + CRLF + PRNTER /PRINT "FOR ALL QUESTIONS" + MES2 /MESSAGE POINTER 2 +ALLAGN, TAD M10 + 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 +/ +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 + TAD TCNTR4 + AND K4 + SZA CLA + TAD K0200 + DCA EXBIT /SET EXTENDED DRIVE BIT + 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, TICK /TIMING FOR APT IF NEEDED. + -4 /OTHERWISE BOTH ARE SKIPPED + 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 + TAD TCNTR4 + AND K4 + SZA CLA + TAD K0200 + DCA EXBIT /SET EXTENDED DRIVE BIT + RECAL /RECALIBRATE + JMP RENEX2 /TRY NEXT DRIVE + DCA LOWAD + DCA HIGHAD /SETUP STARTING DISK ADDRESS + TAD M313 + DCA TRKCNT /AMOUNT OF TRACKS TO DO + JMP CHECK +/ +PAGE +/ +CHECK, TICK /TIMING FOR APT IF NEEDED. + -4 /SKIPPED IF NOT REQUIRED. + 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 +/ +/ + TAD 22 + AND K4000 /TEST FOR APT + SNA CLA /ARE WE? + JMP ENDTST /NO. NORMAL RUN + ISZ PCOUNT /INCREMENT PASS COUNT + JMP FRMDSK /LOOP PROGRAM +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 +/ +/ +/SUBROUTINE FOR "ERRORS," SCOPE LOOPS, AND +/ERROR TYPEOUTS. +/ +ERRO, 0 + CLA CLL IAC + TAD ERRO /GET PC STORED + DCA RETRN1 /STORE FOR RETURN + KAERRO /NOTIFY APT OF ERROR IS NEED BE + 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 GDREG2 + OCTEL /PRINT FOUR OCTAL + SKP CLA +NTGD, DCA ERRO + PRNTER + TEXEX + TAD EXBIT + SZA CLA + IAC + OCTEL + TAD XTEXT + DCA PCNTR2 + TAD XREG + DCA AUTO10 + TAD K7771 + DCA PCNTR1 /COUNTER FOR # OF HEADS + CLA CLL CMA RAL + DCA PCNTR3 +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 + ISZ PCNTR3 + SKP CLA + CRLF +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, TEXCM +XREG, EXBIT +PCNTR1, 0 +PCNTR2, 0 +PCNTR3, 0 +HEDTAD, TAD HEDLST +HEDLST, ERTX1 + ERTX2 + ERTX3 + ERTX4 +K7771, 7771 +/ +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 EXBIT /ADD IN EXTENDED BIT + TAD HIGHAD + TAD DRIVNO /ADD IN DRIVE NUMBER + DCA I XHITRK /SETUP TRACK WORD IN BUFFER + TAD I XHITRK + AND K7577 + TAD HOMEMA /CURRENT FIELD + TAD K5000 /FUNCTION WRITE ALL + LDCMD /LOAD COMMAND + TAD EXBIT + LDSC /LOAD EXTENDED DRIVE BIT + CLA /CLEAR EXTENDED DRIVE BIT + 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 + 3602 /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 +K5000, 5000 +K7577, 7577 +/ +/ +/SUBROUTINE TO READ STATUS REGISTER +/ +RDST, 0 +IOT5, DRST /READ STATUS IOT + SKP +ERHLT5, JMS XC8ERR /SKIP TRAP ERROR. + 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, JMS XC8ERR /SKIP TRAP ERROR. + JMP .-1 +/ +/ +/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, JMS XC8ERR /SKIP TRAP ERROR. + JMP .-1 +/ +/ +/SUBROUTINE TO LOAD COMMAND REGISTER +/ +LDCM, 0 + DCA CMREG /SAVE OUTBOUND DATA + DCA INMODE + JMS XC8CKP /CHECK FOR CONTROL CHARACTERS. + CLA + CLA + TAD CMREG +IOT6, DLDC /LOAD COMMAND REGISTER + JMP I LDCM /EXIT +ERHLT6, JMS XC8ERR /SKIP TRAP ERROR. + JMP .-1 +/ +/ +/SUBROUTINE ISSUE "DLSC" +XLDSC, 0 +IOT0, DLSC + JMP I XLDSC +ERHLT0, JMS XC8ERR + JMP .-1 + +/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, JMS XC8ERR /SKIP TRAP ERROR. + JMP .-1 +/ +/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 +K7400, 7400 +/ +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 EXBIT /LOAD EXTENDED DRIVE BIT + LDSC + CLA /CLEAR EXTENDED DRIVE BIT + 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 + TAD EXBIT /ADD EXTENDED DRIVE BIT + 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 K7741 + DCA TCHKT /SETUP TEXT POINTER + JMP CHKER /ERROR +STAER, TAD K3600 + 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 +/ +/THIS ROUTINE WILL TEST FOR APT AND NOP CONSOLE +/PACKAGE IF NEED BE +/ +APT8, 0 + TAD 22 + SMA CLA + JMP I APT8 + TAD 22 + AND K7377 /ON APT. NOP CONSOLE PACKAGE + DCA 22 + TAD 22 + AND K0007 /ISOLATE DRIVE NUMBER OR + /NUMBER OF DRIVES TO BE DONE + DCA STCNT1 + TAD 22 + AND K0100 + SNA CLA /SINGLE DRIVE TESTING + JMP MULDSK /NO.SEVERAL TO DO + TAD ADPOT1 /GET DISK POINTER + TAD STCNT1 /ESTABLISH DRIVE TO DO + DCA STCNT1 + CLL CLA CMA /-1 + DCA I STCNT1 + CLL CLA CMA /ONE DISK TO DO + DCA LOC8ED + JMP I BGNTST +MULDSK, TAD STCNT1 /DRIVE TO BE DONE + CMA + DCA STCNT1 + TAD ADPOT1 /GET DISK POINTER + TAD STCNT2 /ESTABLISH DRIVE TO BE DONE + DCA STCNT3 + ISZ LOC8ED + CLL CLA CMA + DCA I STCNT3 /DO THIS DRIVE + ISZ STCNT2 + ISZ STCNT1 + JMP MULDSK+3 /MORE TO DO + TAD LOC8ED + CIA + DCA LOC8ED /NUMBER TO BE DONE + JMP I BGNTST +K7377, 7377 +PAGE +/ +/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 +K0240, 0240 +K7700, 7700 +K0077, 0077 +K0010, 10 +K7741, 7741 +K3600, 3600 +/ROUTINE TO WAIT FOR KEY FROM OPERATOR +/ +WAIT, 0 + CLA CLL + KCC + KSF + JMP .-1 + KRB + TLS + TSF + JMP .-1 + AND K0177 + TAD K0200 + DCA CHAR + TAD CHAR + DCA C8CHAR + ISZ INMODE + JMS XC8CNT /CHECK FOR CONTROL CHARACTERS. + CLA + CLA + DCA INMODE + 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 +K0177, 0177 +K0316, 0316 +K0331, 0331 +/ +PAGE +/ +/ +/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 + TAD EXBIT + LDSC /LOAD EXTENDED DRIVE BIT + 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 + 3603 /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 CHANGE DEVICE CODES +/ +CHANG, 0 + JMS XC8SW /GET SWITCH REGISTER BITS. + RAR + SNL CLA /CHANGE DEVICE CODES? + JMP I CHANG /NO. + JMS XC8SW /GET SWITCHES. + AND A0770 + DCA CSAVE1 /SAVE DESIRED + TAD CCNTR1 + DCA CSAVE2 + TAD CHNPOT + DCA RESTOR +CHANGR, TAD I RESTOR /GET ADDRESS POINTER + DCA KWAIT + TAD I KWAIT /GET OLD CODE + AND A7007 /MASK + TAD CSAVE1 /ADD IN DESIRED + DCA I KWAIT /STORE DESIRED DEVICE CODE + ISZ RESTOR /UPDATE POINTER + ISZ CSAVE2 /UPDATE CHANGE COUNTER + JMP CHANGR + JMP I CHANG /EXIT TO PROGRAM. +/ +KWAIT, 0 +A7007, 7007 +A0770, 0770 +CSAVE1, 0 +CSAVE2, 0 +CCNTR1, 7771 +CHNPOT, CHNPOT+1 + IOT0 + IOT1 + IOT2 + IOT3 + IOT4 + IOT5 + IOT6 +K2000, 2000 +/ +/THIS ROUTINE WILL GENERATE TIMING IF NEEDED BY THE APT SYSTEM +/ +KTICK, 0 + CLL CLA + TAD 22 /GET HARDWARE CONFIGURATION + AND K4000 + SNA CLA /ON APT? + JMP EXTICK /NO + TAD I KTICK /GET TIMING VALUE + DCA COUNT /ESATABLISH TIME + ISZ CLKCNT + JMP EXTICK /RETURN + TAD COUNT /GET VALUE OF COUNTER + DCA CLKCNT /STORE IT + ISZ CNT /TIMING NEED BE DONE? + JMP EXTICK + TIME + TAD KCNT /TIMING VALUE + DCA CNT /INIT SECOND COUNTER +EXTICK, ISZ KTICK /MOVE BEYOND TIMING VALUE + JMP I KTICK + +COUNT, 0 +CNT, -2 +KCNT, -2 +K0100, 0100 +/ +/ +/ROUTINE TO NOTIFY APT OF USE IF REQUIRED +/ +KTIME, 0 + IOF /DISABLE INTERUPTS + RDF /GET PRESENT DATA FIELD + TAD KCDF + DCA .+1 /ESTABLISHES CURRENT DATA FIELD + HLT + CIF 70 /FIELD 7. LOCATION OF UV PROM + JMS I K6500 + CLL CLA + JMP I KTIME +/ +K6500, 6500 +/ +PAGE +/ +/ +/THIS ROUTINE WILL NOTIFY APT OF AN ERROR AND SEND PC TO +/APT SYSTEM. ALL ERRORS WILL RESULT IN PROGRAM HLT AND A TIME OUT ON +/APT. APT WILL TAKE OVER FROM THERE. + +/ +AERRO, 0 + IOF /DISABLE INTERUPTS + CLA + TAD 22 /CHECK FOR APT SYSTEM + SMA CLA + JMP I AERRO /RETURN NOT ON APT + TAD I KERRO /GET PC + DCA SAVPC + RDF /GET CURRENT DATA FIELD + TAD KCDF + DCA .+2 + TAD SAVPC + HLT /REPLACED WILL CURRENT DATA FIELD + CIF 70 /CHANGE IF FOR APT RETURN TO FIELD 7 + JMP I K6520 /NOTIFIES APT OF ERROR + HLT +/ +K6520, 6520 +KERRO, ERRO +SAVPC, 0 +/ +/ +/ROUTINE TO MOVE DISK POINTERS +/ +MOVE, 0 + TAD ADPT1 + DCA AUTO10 + + TAD ADPT2 + DCA AUTO11 + TAD M10 + 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 +/ +/ +TEXPC, TEXT "PC:" +TEXGD, TEXT "GD:" +TEXEX, TEXT "EX:" +TEXCM, TEXT "CM:" +TEXST, TEXT "ST:" +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/RK8L DISK FORMATTER PASS COMPLETE" +MES1, TEXT "RK8E/RK8L 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 +/ + + +/CONSOL SRC -V2-R0- CONSOLE PACKAGE + + +/LAS= CALL C8CKSW OR JMS XC8SW +/THIS WILL READ THE SWITCH REGISTER FROM THE PLACE SPECIFIED +/BY LOCATION 20 BIT 0. + + +/THE PROGRAN SHOULD CHECK FOR A CONTROL CHARACTER FRON THE TERMINAL +/EVERY FIVE(5) SECONDS OR SOONER. + +/LOCATIONS THAT NEED TO BE SET UP FOR USING THE CONSOLE PACKAGE. + +/CNTVAL IN XC8PASS THIS LOCATION DETERMINDS THE NUMBER OF +/PROGRAM COMPLETIONS THAT ARE NEEDED BEFORE THE PASS MESSAGE IS TYPED +/THE VALUE SHOULD PUT THE PASS MESSAGE OUT IN THE RANGE OF 1 TO 5 MINUTES. +/THIS SHOULD BE A POSITIVE NUNBER. + +/C8STRT THIS IS FOUND IN CNTRL ROUTINE CONTROL R PART +/IT IS THE RETURN WHEN CONTROL R IS ENTERED (RESTART PROGRAM) +/THE RETURN JUMPS TO XDOSW WHICH CONTAINS C8STRT SO PUT THE LABEL C8STRT +/WHERE YOU WANT TO RESTART THE PROGRAM. + + +/SETUP1 IN XC8ERR THIS IS THE MASK BIT FOR HALT ON ERROR +/PLACE THE CORRECT BIT IN THIS LOCATION FOR HALTING ON ERRORS. + +/SETUP2 IN XC8PASS THIS IS THE MASK FOR HALT A END OF PASS. + +/THE CALL TABLE IS A CONDITIONAL ASSEMBLY. +/TO ASSEMBLE THE CALL REMOVE THE / BEFORE CONSOL=0. +/IN COMBINING THE CONSOL PACKAGE TO A DIAGNOSTIC. +/THE CALL TABLE IS TO BE AT THE BEGINNING OF A PROGRAM. + + +/CONSOL=0 + PSKF= 6661 + PCLF= 6662 + PSKE= 6663 + PSTB= 6664 + PSIE= 6665 + GTF= 6004 + ACL= 7701 + CAF= 6007 + MQL= 7421 + MQA= 7501 +/ +*3000 +/ +/********************************************************************* +/C8PASS +/THIS IS CALLED AT THE END OF EACH PROGRAM COMPLETION +/THE VALUE OF** CNTVAL** WILL BE DETERMINED BY THE TIME IT TAKES +/THE PROGRAM TO COMPLETE THIS MANY C8PASS TO BE IN THE 1 TO 4 MINUTE +/RANGE +/ C8PASS=JMS XC8PAS +/EX. OF CALL C8PASS + / HLT /HALT IF NON CONSOL PACKAGE +/ JMP START1 /CONTINUE RUNNING THIS PROGRAM + + +/RETURN TO LOCATION CALL PLUS ONE WITH THE AC=0 IF NON CONSOL PACKAGE AND HLT +/IF CONTINUE TO RUN THEN RETURN TO CALL PLUS2 AC=0 +/THE LOCATION SETUP2 IS THE MASK BIT FOR THE HALT AT END OF PASS +/CHECK THAT IT IS CORRECT FOR THE CURRENT PROGRAM + +/CALLS USED BY XC8PAS ARE CHKCLA-XC8CRLF-XC8OCTA-XC8SW-XC8PNT-XC8INQ- + + +XC8PAS, 0 + CLA + JMS CHKCLA /IS WORD 22 BIT 3 ACTIVE CONSOLE? + JMP DOPACK /IS CLASSIC + JMS C8GET /GET THE REGISTERS. + JMS XC8SW /DEACTIVE CONSOL CHECK SR SETTING + AND (400 /FOR HALT ON END OF C8PASS + SZA CLA /1= HALT 0 CONTINUE + JMP I XC8PAS /GO TO HALT + JMP C8BY1 /CONTINUE ON RUNNING PROGRAM +DOPACK, JMS CKCOUT /CLASS CHECK C8PASS COUNT + JMP C8BY1 /C8PASS COUNT NOT DONE REDO PROGRAM + ISZ PASCNT /C8PASS COUNT DONE SET C8PASS COUNT + JMS XC8CRLF + JMS XC8PNT /C8PRNT BUFFER + MESPAS / + TAD PASCNT /GET NUMBER + JMS XC8OCTA /CONVERT IT TO ASCII + JMS XC8CRLF /DO A CARRIAGE RETURN + JMS C8GET /GET THE REGISTERS. + JMS XC8SW /CHECK A HALT AT END OF C8PASS +SETUP2, AND (400 /MASK BIT + SZA CLA /HALT =1 NO SKIP CONTINUE =0 + JMS XC8INQ /STOP PROGRAM EXECUTION-LOOK FOR INPUT +C8BY1, ISZ XC8PAS /BUMP RETURN + JMP I XC8PAS +CKCOUT, 0 + TAD DOSET /CHECK IF SET UP NEEDED + SZA CLA /0=SET UP C8PASS COUNT VALUE + /1=C8PASS COUNT VALUE OK + JMP NOSET /C8PASS COUNT VALUE ON + TAD CNTVAL /GET COUNT VALUE FOR THIS PROG + CMA /SET TO NEGATIVE + DCA DOCNT /STORE IN HERE + ISZ DOSET /INDICATE VALUE SET UP +NOSET, ISZ DOCNT /COUNT THE NUMBER OF PASSES + JMP C8BY1 /EXIT FOR ANOTHER PASS + DCA DOSET /SET TO C8PRNT C8PASS + ISZ CKCOUT /BUMP RETURN FOR + JMP I CKCOUT /C8PASS C8TYPE OUT +DOCNT, 0 +PASCNT, 0 / +DOSET, 0 +CNTVAL, 0 +MESPAS, TEXT "DHRKDD PASS " + + + +/********************************************************************* + +/C8CKSW + +/THIS ROUTINE CAN BE USED INPLACE OF A READ THE SWITCHES LAS. +/ROUTINE THAT WILL CHECK WHERE TO READ THE +/C8 SWITCHES FROM IE. FROM PANEL OR PSEUDO SWITCH REGISTER +/THE SELECTION IS DETERMINED BY THE STATE OF BIT 0 IN LOCATION 21. + + /C8CKSW= JMS XC8SW + /EX. JMS XC8SW /READ THE C8SWIT REGISTER + /RETURN WITH THE CONTENTS OF SWITCH REGISTER + +/RETURN TO NEXT LOCATION FOLLOWING CALL WITH THE AC= TO VALUE OF C8SWIT SETTING + +/CALLS USED ARE-XC8CKPA- + + + +XC8SW, 0 + JMS XC8CKPA /GO CHECK THE IF ANY CONTRL + NOP + TAD 21 /GET WD FOR INDICATOR + SPA CLA /CHECK IF FROM PANEL 4000 + 7614 /DO LAS AND SKIP GET FROM PANEL WITH LAS + TAD 20 /PSEUDO SWITCH + JMP I XC8SW /EXIT WITH STATUS BIT IN AC. + + +/********************************************************************* + +/C8TTYI +/THIS ROUTINE WILL LOOK FOR A INPUT FROM THE TERMINAL +/AND REMOVE ANY PARITY BITS, THEN MAKE IT 8 BIT ASCI. +/ C8TTYI= JMS XC8TTY +/EX. JMS XC8TTYI /READ CHAR FROM THE CONSOL DEVICE + / /RETURN TO CALL PLUS ONE AC CONTAINS THE CHAR + + +/CALLS USED -NONE- BUT C8CHAR IS OFF PAGE AND IN ROUTINE CALLED XC8ECHO + +/ +/ +XC8TTY, 0 + KSF /LOOK FOR KEYBOARD FLAG + JMP .-1 + KRB /GET CHAR + AND (177 /MASK FOR 7 BITS + TAD (200 /ADD THE EIGTH BIT + DCA C8CHAR /STORE IT + TAD C8CHAR + JMP I XC8TTY /EXIT + + + +/********************************************************************* + +/C8PRNT + +/THIS ROUTINE WILL TYPE THE CONTENTS OF THE C8 PRINT BUFFER. THE LOCATION +/OF THE BUFFER WILL BE IN THE ADDRS FOLLOWING THE CALL. PRINTING OF THE BUFFER +/WILL STOP WHEN A 00 CHAR IS DETECTED. CHARACTERS ARE PACKED 2 PER WORD. + +/ C8PRNT= JMS XC8PNT + + +/EX. JMS XC8PNT /C8PRNT THE CONTENTS OF THE FOLLOWING BUFFER +/ MESS77 /LOCATION OF C8PRNT BUFFER + +/C8PRNT WILL USE THE LOCATION FOLLOWING THE CALL AS THE POINTER FOR THE +/C8PRNT ROUTINE.RETURN TO CALL PLUS TWO WITH AC= 0 + +/CALLS USED ARE-XC8TYPE-XC8PNT + + + +XC8PNT, 0 + CLA CLL + TAD I XC8PNT /GET C8PRNT BUFFERS STARTING LOCATION + DCA PTSTOR /STORE IN PTSTOR + ISZ XC8PNT /BUMP RETURN +C8DO1, TAD I PTSTOR /GET DATA WORD + AND (7700 /MASK FOR LEFT BYTE + SNA /CHECK IF 00 TERMINATE + JMP I XC8PNT /EXIT + SMA /IS AC MINUS + CML /MAKE CHAR A 300 AFTER ROTATE + IAC /MAKE CHAR A 200 AFTER ROTATE + RTR + RTR + RTR /PUT CHAR IN BITS 4-11 MAKE IT 8 BIT ASCII + JMS XC8TYPE /C8PRNT IT ON CONSOLE + TAD I PTSTOR /GET DATA WORD + AND (0077 /MASK FOR RIGHT BYTE + SNA /CHECK IF 00 TERMINATOR + JMP I XC8PNT //EXIT + TAD (3740 /ADD FUDGE FACTOR TO DETERMINE IF 200 + SMA /OR 300 IS TO BE ADD TO CHAR + TAD (100 /ADD 100 + TAD (240 /ADD 200 + JMS XC8TYPE /C8TYPE ONLY BITS 4-11 + ISZ PTSTOR /BUMP POINTER FOR NEXT WORD + JMP C8DO1 /DO AGAIN +PTSTOR, 0 /STOR FOR C8PRNT BUFFER +/************************************************************************** + + +/C8PAUS +/THIS ROUTINE WILL CHECK IF THE CONSOL PACKAGE IS ACTIVE,IF ACTIVE +/IT WILL RETURN TO CALL PLUS ONE AC= 0. AND DO THAT INSTRUCTION. +/IF THE CONSOL PACKAGE IS NOT ACTIVE THE CALL WILL BE REPLACED +/WITH A 7402 HALT AND THEN RETURN TO THE HALT. + +/ C8PAUS= JMS XC8PAU +/ +/ +/EX. JMS XC8PAUS /CHECK IF ON ACTIVE CONSOL IF NOT HALT HERE +/ ANYTHING /RETURN HERE IF ON ACTIVE CONSOL +/ +/ + +/CALLS USED ARE -CHKCLA- + + + +XC8PAU, 0 + CLA CLL + JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT + JMP C8DO3 /GO DO CONSOL PART RETURN CALL +1 + CMA /DEACTIVE CONSOLE PACKAGE PUT HLT IN CALL + TAD XC8PAU /GET CORRECT RETURN ADDRS + DCA XC8PAU /SET UP RETURN + TAD (7402 /GET CODE FOR HLT + DCA I XC8PAU /PUT HALT IN CALL LOCATION +C8DO3, JMP I XC8PAU /GO TO HALT OR RETURN TO NEXT LOCATION + + +PAGE +/********************************************************************* + + +/C8CNTR +/THIS ROUTINE WILL CHECK FOR THE PRESENCE OF CONTROL CHARACTERS +/IT WILL CHECK FOR THE FOLLOWING CHAR C-R-Q-L-S +/ C8CNTR= JMS XC8CNT + +/EX. JMS XC8CNTR /CHECK FOR CONTROL CHARACTER +/ JMP ANYTHING /LOC FOLLOWING CALL IS FOR CONTINUING THE PROGRAM +/ JMP ANYTHING /LOC. IS FOR RETURN IF INMODE SET AND NOT CNTRL CHAR +/ + +/RETURN IS TO CALL PLUS ONE IF CONTINUE +/RETURN IS TO CALL PLUS TWO IF INMODE SET AND NOT CONTROL CHAR +/RETURN IS TO CALL PLUS TWO IF INMODE IS NOT SET AND NO +/CONTROL CHAR ..THIS WILL PRINT THE CHARACTER AND A ? +/CLEAR THE AC AND RETURN CALL+2. + +/CALLS USED ARE-CHKCLA-XC8TYPE-XC8CRLF-C8GET-UPAROW-XC8TYI-XC8PSW- +/ +/ +/ +XC8CNT, 0 + DCA ACSAVE /SAVE THE AC + JMS CHKCLA /CHECK LOC.22 BIT3 FOR CONSOLE BIT + JMP .+3 /ON ACTIVE CONSOLE + TAD ACSAVE /DEACTIVE CONSOLEGET AC FOR RETURN + JMP I XC8CNT /EXIT NOT ON ACTIVE CONSOLE + GTF + DCA FLSAVE + MQA + DCA MQSAVE /SAVE THE MQ + DCA INDEXA /SET DISPLACEMENT INTO TABLE B + TAD XTABLA /GET ADDRS OF TABLE A + DCA GETDAT /CONTAINS POINTER TO CONTROL CHAR +REDOA, TAD I GETDAT /GET CONTROL CHAR FROM TABLE + SNA /CHECK FOR A 0 END OF TABLE + JMP DONEA /END OF TABLE NO CONTROL CHAR + TAD C8CHAR /COMPARE CHAR TO CONTROL CHAR + SNA CLA /0 IF MATCH + JMP GOITA /MATCH + ISZ INDEXA /NO MATCH NOT END OF TABLE REDO + ISZ GETDAT /BUMP INDEX FOR EXIT WHEN CONTROL FOUND + JMP REDOA /BUMP GETDAT FOR COMPARE OF NEXT CNTRL CHAR. +DONEA, TAD INMODE /CHECK IF PROGRAM EXPECTS CHAR + SZA CLA /1=CHAR EXPECTED 0= NO CHAR EXPECTED + JMP EXITA /CHAR EXPECTED + TAD C8CHAR /GET CHAR - NOT CONTROL + NOT EXPECTED + JMS XC8TYPE /C8PRNT CHAR + TAD (277 /GET CODE FOR "?" + JMS XC8TYPE + JMS XC8CRLF + ISZ XC8CNT /BUMP RETURN + JMP I XC8CNT /EXIT CALL+2 +EXITA, ISZ XC8CNT /BUMP RETURN FOR MAIN PROGRAM CHECK OF CHAR + TAD C8CHAR /PUT CHAR IN AC. + JMP I XC8CNT /EXIT +GOITA, TAD C8CHAR /GET THE CONTENTS OF CHAR + TAD (100 /ADD 100 TO FORM A GOOD ASCII CHARACTER + DCA C8CHAR /RESTORE COFFECT CHAR + TAD XTABLB /GET START OF TABLE B + TAD INDEXA /GET NOW FAR INTO TABLE + DCA GOTOA /STORE IT + TAD I GOTOA /GET THE ROUTINE STARTTING ADDRESS + DCA GOTOA /STORE IT IN HERE + JMP I GOTOA /GOTO CONTROL CHAR ROUTINE +GOTOA, 0000 /ADD OF CNTRL ROUTINE TO EXECUTE +INDEXA, 0000 /DISPLACEMENT INTO CNTRL TABLE +GETDAT, 0000 /LOCATION OF ADDRS OF CONTROL CHAR. +XTABLA, TABLA /ADDRS OF TABLEA +XTABLB, TABLB /ADDRS OF TABLEB +TABLA, 7575 /CNTRL C BACK TO MONITOR 203 + 7564 /CNTRL L SWITCH ERROR PRINTTING DEVICE 214 + 7557 /CNTRL Q START DISPLAYING CHAR. AGAIN 221 + 7556 /CNTRL R BACK TO BEGINNING OF PROGRAM 222 + 7555 /CNTRL S STOP SENDING CHAR TO DISPLAY WAIT FOR CNTRL Q 223 + 7573 /CNTRL E CONTINUE WITH PROGRAM 205 + 7574 /CONTROL D CHANGE SWITCH REGISTER ON FLY + 0000 + +TABLB, CNTRLC + CNTRLL + CNTRLQ + CNTRLR + CNTRLS + CNTRLE + CNTRLD +/ +/CONTROL Q +/START SENDING CHAR. TO THE DISPLAY +/THIS WILL RETURN CONTROL TO CALL THAT WAS SET BY +/THE CALL FOR CONTROL S. +/ +CNTRLQ, DCA INMODE /SET SOFT FLAG FOR UNEXPECTED CHAR + TAD C8SETS /CHECK IF CONTROL S TYPED IN + SZA CLA + JMP BYRETR /CONTROL S TYPED IN + JMS C8GET /NO CONTROL S TYPED PREVIOUSLY + JMP I XC8CNTR /LEAVE VIA CNTR ENTRY ADDRESS +BYRETR, DCA C8SETS /CLEAR THE SOFT FLAG + JMS C8GET /RESTORE REGISTERS + JMP I C8RETR /EXIT TO ADDRESS SET BY CONTROL S +/ +/ +/CONTROL R +/GO TO THE QUESTION C8SWIT +CNTRLR, DCA TTYLPT /CLEAR THE TYPE FLAG SET TO TTY + DCA C8SETS /CLEAR SOFT FLAG FOR CNTRL S + DCA INMODE + JMS UPAROW /PRINT THE ^ AND C8CHAR +C8BY4, DCA C8SWST /CLEAR FLAG FOR CNTRL D OR R + JMP I XDOSW /GO TO ADDRS OF C8SWIT +XDOSW, BGN /DOSW IS LABEL FOR C8SWIT QUESTION +/ +/ +/CONTROL S +/STOP SENDING CHAR. TO DISPLAY UNTIL A ^Q IS RECEIVED +/ +/ +CNTRLS, TAD C8SETS /IF1 DO NOT STORE IN C8RETR + SZA CLA + JMP C8DO7 /DONT SET UP C8RETR + IAC /MAKE RETURN CALL PLUS 2 + TAD XC8CNT /GET RETURN FOR THIS CALL + DCA C8RETR /STORE IT HERE FOR USE BE CNTROL Q +C8DO7, ISZ C8SETS /SET FLAG TO SAVE CALL + JMS XC8TTYI /LOOK FOR THE INPUT + JMS C8GET /GET REGISTERS + JMS XC8CNTR /CHECK FOR THE CONTROL CHAR + CLA + JMP CNTRLS /IF NOT A CNTRL Q R C REASK +C8SETS, 0 +C8RETR, 0 +/ +/SWITCH OUTPUT FROM ONE OUTPUT DEVICE TO ANOTHER - THE TWO OUTPUTS ARE THE +/CONSOLE AND THE PRINTER WITH DEVICE CDOE 66. +/ +/ +CNTRLL, TAD TTYLPT /GET PRESENT C8SWIT INDICATOR + CMA /COMPLEMENT IT + DCA TTYLPT /STOR NEW C8SWIT + JMS UPAROW /C8PRNT ^ AND CHAR ON NEW DEVICE + JMS C8GET /RESTORE THE REGISTERS + JMP I XC8CNT /EXIT +/ +/CONTROL E +/CONTINUE RUNNING FROM A INQUIRE OR ERROR +/ +/ +CNTRLE, JMS UPAROW /PRINT THE CONTROL CHAR + JMS C8GET /GET THE REGISTERS + JMP I XC8CNT /RETURN TO CALL PLUS ONE +/ + +/CONTROL C +/RETURN TO MONITOR CONTROL C +CNTRLC, DCA TTYLPT /CLEAR THE LPT FLAG TO PRINT ON DISPLAY + JMS UPAROW /C8PRNT A^ AND LETTER IN CHAR + CDF CIF /GO TO 0 FLD + CAF /CLEAR THE WORLD + JMP I (7600 /GO TO DIAGNOSTIC MONITOR +/********************************************************************* +/ +/ +/ +PAGE + +/ + /CONTROL D + /CHANGE THE SWITCH REGISTER ANYTIME CNTRL D AND RETURN TO + /THE PROGRAM RUNNING. + + +CNTRLD, JMS UPAROW + TAD C8SETD /CHECK IF THE RETURN ADDRS IS SAFE + SZA CLA + JMP C8DO11 /DO NOT CHANGE THE RETURN ADDRS + TAD XC8CNT /GET THE RETURN ADDRS AND SAVE IT + DCA C8RETD /SAVE THE RETURN HERE + ISZ C8SETD /INDICATE RETURN SAVED DONT DISTROY +C8DO11, JMS XC8PSW /GO CHANGE THE SWITCH REGISTER + DCA C8SETD /CLEAR THE FLAG + JMS C8GET /RESTORE THE AC MQ LINK ETC + JMP I C8RETD /RETURN TO THE PROGRAM +/ +C8SETD, 0 +C8RETD, 0 + + + +/THIS WILL TYPE A UP ARROW AND THE CHAR IN C8CHAR. + +UPAROW, 0 /C8PRNT THE "^" AND THE CHAR C8TYPED IN + TAD (336 /CODE FOR ^ + JMS XC8TYPE + TAD C8CHAR /C8TYPE THE CHAR + JMS XC8TYPE + JMS XC8CRLF + JMP I UPAROW /EXIT + + + +/*********************************************************************** + +C8GET, 0 + CLA + TAD MQSAVE + MQL /RESTORE MQ + TAD FLSAVE + RAL /RESTORE THE LINK + CLA + TAD ACSAVE /RESTORE THE AC + JMP I C8GET /GET THE REGISTERS + + + +/******************************************************************** + +/C8INQU +/C8INQU ROUTINE WILL PRINT A WAITING +/AND THE PROGRAM IS EXPECTING A CONTROL CHAR INPUT +/IF CONTINUE FROM CONTROL CHAR RETURN IS CALL PLUS ONE +/IF NO CONTROL CHAR ENTERED THEN WAITING IS REPRINTED +/AND PROGRAM WAITS FOR A CONTROL CHAR AGAIN. + +/ C8INQU = JMS XC8INQ + +/EX. JMS XC8INQ /C8 WILL PRINT A WAITINGAND WAIT FOR INPUT +/ DO ANYTHING /RETURN IS CALL PLUS ONE AC =0 CONTINUE + +/CALLS USED ARE -CHKCLA-XC8PNT-XC8TYI-C8GET-XC8CNTR- + + +XC8INQ, 0 + CLA CLL + JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT + SKP /ACTIVE CONSOLE PACKAGE + JMP I XC8INQ /NOT CONSOLE LEAVE + JMS XC8PNT + WATMES /INQUIR WAITTING + JMS XC8TTYI /GET CHARACTER + JMS C8GET + JMS XC8CNTR /CHECK IF CONTROL CHARACTER + JMP I XC8INQ /EXIT AND CONTINUE + JMP XC8INQ+1 /REASK +WATMES, TEXT "WAITING " + + +/********************************************************************* + +/C8SWIT + +/ROUTINE WILL CHECK IF CONSOL IS ACTIVE IF IT IS ACTIVE DISPLAY +/SW QUESTION . IN NOT ACTIVE IT WILL NOT PRINT THE SW QUESTION BUT +/RETURN TO CALL PLUS ONE AC=0. +/C8SWIT WILL SET UP THE PSEUDO SWITCH +/REGISTER WITH THE NEW DATA ENTERED +/ +/ C8SWIT = JMS XC8PSW + +/EX. JMS XC8PSW /SET UP PSEUDO C8SWIT REGISTER IF + /ON THE CONSOL PACKAGE. RETURN IS CALL PLUS ONE AC = 0 + +/CALLS USED ARE -CHKCLA-XC8PSW-XC8PNT-XC8OCTA-XC8TYPE- + + +XC8PSW, 0 + JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT + SKP /ACTIVE CONSOLE + JMP I XC8PSW /DEACTIVE CONSOLE PACKAGE + /RETURN WITHOUT ASKING PSEUDO SWITCH + TAD C8SWST /IS THE SOFT FLAG SET FOR SWITCH? + SZA CLA /SKIP IF ONE ENTRY AT ATIME OK + JMP C8BY4 /SECOND ENTRY WITH OUT A EXIT GO TO SW QUESTION + ISZ C8SWST /FIRST ENTRY SET FLAG +C8RDPS, JMS XC8PNT /C8PRNT SR= + MESA + TAD 20 /GET CONTENTS OF SW + JMS XC8OCTA /CONVERT IT TO ASCII + TAD (40 /GET SPACE + JMS XC8TYPE + ISZ INMODE /SET FLAG FOR CHAR EXECTED + JMS XC8ECHO /LOOK FOR INPUT + JMS TSTCHA /NOT CONTROL TEST IT IS LEGAL + TAD C8CHAR /STORE NEW CHAR IN SW REG + DCA 20 + + TAD (-3 /GET A MINUS 3 + DCA TMPCNT /STORE IN TEMP COUNT +GETCH1, JMS XC8ECHO /GET NEXT CHAR + JMS TSTCHA /CHECK IF CR + GOOD CHAR + TAD 20 /GET C8SWIT REGISTER + RTL CLL /ROTATE IT LEFT 3 PLACES + RAL + TAD C8CHAR /GET CHAR + ADD IT TO PREVIOUS CONTENTS + DCA 20 /SAVE NEW CONTENTS + ISZ TMPCNT /BUMP COUNT + JMP GETCH1 /JMP BACK + GET NEXT CHAR + JMP ENDIT /END 4 CHAR C8TYPED IN +TSTCHA, 0 + CIA /CMPL CHAR IN AC + TAD (215 /TEST IF IT IS A CARRIAGE RETURN + SNA CLA /SKIP IN NOT CR. + JMP ENDIT /WAS CARRIAGE RETURN + TAD C8CHAR /NOT CR. GET CHAR + TAD (-260 /CHECK IF IT IS IN RANGE + SPA CLA /IF NOT POSITIVE C8ERR CHAR SMALLER THEN 260 + JMP ERR1 /C8ERR - CHAR TOO SMALL + TAD C8CHAR /GET CHAR + TAD (-270 /GET A -270 + CHECK IF IT IS LARGER THEN 7 + SMA CLA /SKIP IF LESS THEN 7 + JMP ERR1 /C8ERR ON CHAR NOT IN RANGE + TAD C8CHAR /GET CHAR + AND (7 /MASK FOR RIGHT BYTE + DCA C8CHAR /STORE IN CHAR + /GET CHAR IN AC + JMP I TSTCHA /EXIT +ERR1, TAD (277 /C8PRNT + JMS XC8TYPE /? + JMS XC8CRLF / + JMP C8RDPS /EXIT + ASK AGAIN +ENDIT, JMS XC8CRLF /DO A CR LF + DCA C8SWST /CLEAR THE PSW ENTRY FLAG + JMP I XC8PSW /EXIT ROUTINE +C8SWST, 0 + +TMPCNT, 0 +MESA, TEXT "SR= " + + +PAGE + +/C8OCTA + +/OCTAL TO ASCII CONVERSION +/THIS ROUTINE WILL TAKE THE OCTAL NUMBER IN THE AC AND CONVERT IT TO ASCII +/THE RESULT WILL BE PRINTED ON THE CONSOL TERMINAL +/ C8OCTA= JMS XC8OCT +/ +/EX. JMS XC8OCTA /AC CONTAINS NUMBER TO BE CHANGE +/ RETURN IS TO CALL PLUS ONE AC=0 +/ +/CALLS USED ARE -XC8TYPE- + + +XC8OCT, 0 + CLL RTL + RTL /POSITION THE FIRST CHAR FOR PRINTING + DCA C8TMP1 /SAVE CORRECT POSITIONED WORD HERE + TAD (-4 + DCA C8CKP /STORE COUNTER IN HERE +C8DO4, TAD C8TMP1 /GET FIRST NUMBER + AND (0007 /MASK + TAD (260 /ADD THE PRINT CONSTANT + JMS XC8TYPE /TYPE THE NUMBER + TAD C8TMP1 / + RTL + RAL /PUT NEXT NUMBER IN POSITION + DCA C8TMP1 /STORE IT + ISZ C8CKP /DONE YET WITH FOUR NUMBERS + JMP C8DO4 /NOT YET DO MORE + JMP I XC8OCT /DONE WITH FOUR + C8TMP1, 0 + C8CKP, 0 + + +/********************************************************************* + +/C8CRLF +/C8TYPE CR AND LF WITH FILLERS FOLLOWING EACH LF AND CR + / +/ C8CRLF= JMS XC8CRL +/ +/EX. JMS XC8CRLF /C8PRNT A CR AND LF WITH FILL +/ /RETURN TO CALL PLUS ONE AC =0 +/CALLS USED ARE -XC8TYPE- + + +XC8CRLF,0 + CLA CLL + TAD (215 /GET CODE FOR CR + JMS XC8TYPE + TAD FILLER + CMA + DCA FILCNT /STORE FILLER IN HERE + TAD (212 /GET CODE FOR LF +C8DO2, JMS XC8TYPE + ISZ FILCNT /CHECK ON FILLER CHAR + JMP C8DO2 /TYPE A NON PRINTING CHAR + JMP I XC8CRL /EXIT +FILLER, 0004 /FILLER SET FOR 4 CHAR +FILCNT, 0 /COUNTER FOR FILL + + + +//************************************************************* +/C8CKPA +/THIS ROUTINE WILL CHECK IF A CHARACTER WAS ENTERED FROM THE +/TERMINAL. IFTHE FLAG IS SET AND THE CONSOLE PACKAGE IS +/ACTIVE A CHECK IS MADE TO DETERMIND IF IT IS A CONTROL CHAR. +/IF IT WAS A CONTROL CHAR THEN ITS CONTROL FUNCTION IS PERFORMED. +/IF NOT A CONTROL CHARACTER OR A CONTROL E-D-L-O- IT WILL DO +/THE CONTROL FUNCTION AND RETURN TO CALL PLUS 2. +/A NON CONTROL CHARACTER WILL BE PRINTEDAND A "?" IT WILL RETURN TO +/CALL PLUS 2. +/IF NO FLAG IS SET OR THE CONSOL IS NOT ACTIVE THE RETURN IS TO +/CALL PLUS 1. + + +/ C8CKPA= JMS XC8CKP + + +/EX. JMS XC8CKPA /CALL TO CHECK IF CONTROL CHAR SET +/ ANYTHING(SKIP) /RETURN IF NOT FLAG OR NOT CONSOLE ACTIVE +/ ANYTHING(JMP EXIT SKIP CHAIN) /RETURN IF NOT CONTROL OR CONTINUE CONTROL + + +/CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET- + + +XC8CKP, 0 + DCA ACSAVE /SAVE THE AC + GTF /SAVE THE FLAGS + DCA FLSAVE /SAVE THE FLAGS + MQA /PUT MQ IN AC + DCA MQSAVE /SACE THE MQ + KSF /CHECK THE KEYBOARD FLAG + JMP C8BY3 /EXIT TO CALL PLUS 1 + JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT + SKP /ACTIVE CONSOLE PACKAGE + JMP C8BY3 /EXIT TO CALL PLUS 1 + JMS XC8TTYI /GET THE CHAR + JMS C8GET /GET THE FLAGS + JMS XC8CNTR /CHECK IF CONTROL CHAR. + NOP /RETURN IF A CONTINUE CHAR. + ISZ XC8CKP /BUMP RETURN FOR CALL PLUS 2 +C8BY3, JMS C8GET /GET REGISTERS + JMP I XC8CKP /SAY GOOD BY + +//********************************************************************* + +/C8ECHO +/THIS ROUTINE WILL LOOK FOR A CHAR FROM THE KEYBOARD. STORE IT IN LOCATION CHAR +/CHECK IF IT WAS A CONTROL CHARACTER - SET INMODE - PRINT CHARACTER + +/ C8ECHO = JMS XC8ECH +/EX. JMS XC8ECHO /LOOK FOR CONSOL CHAR C8PRNT IT + /RETURN CALL PLUS ONE AC = CHAR C8TYPED IN + +/CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET-XC8ECH-XC8TTYPE + +/ +XC8ECH, 0 + JMS XC8TTYI /WAIT FOR CHAR FROM KEYBOARD + JMS C8GET /RESTORE THE REGISTERS + ISZ INMODE /SET INMODE IDENTIFING THIS AS A EXPECTED CHAR + JMS XC8CNTR /GO CHECK IF IT IS A CONTROL CHAR + JMP I XC8ECH /WAS A CONTROL CHAR - CONTINUE RUNNING + JMS XC8TYPE /NOT A CONTROL CHAR C8PRNT IT + DCA INMODE /CLEAR FLAG THAT CHAR EXPECTED + TAD C8CHAR /GET CHAR IN AC + JMP I XC8ECH /EXIT +C8CHAR, 0 +INMODE, 0 + +/********************************************************************* + +/C8TYPE +/THIS ROUTINE WILL C8PRNT ON THE CONSOLE OR THE LPT WITH DEVICE CODE 66. +/ +/ C8TYPE= JMS XC8TYP + +/EX. JMS XC8TYPE /C8PRNT THE CHAR IN THE AC. + / /RETURN CALL PLUS ONE AC =0000 + /DO NOT CLEAR THE LINK IN THIS ROUTINE NEEDED BYC8OCT + +/CALLS USED ARE -C8HANG-XC8CNTR-XC8PNT-XC8CRLF-XC8INQU- + + +XC8TYP, 0 + DCA PNTBUF /STORE CHAR + TAD TTYLPT /CHECK O=TTY 7777=LPT + SZA CLA + JMP XDOLPT /DO OUT PUT ON LPT + TAD PNTBUF + TLS + TSF + JMP .-1 + TCF + JMP C8BY5 +XDOLPT, TAD PNTBUF /GET CHAR + PSTB PCLF /C8PRNT IT + JMS C8HANG /CHECK KEYBOARD IF HUNG + PCLF /CLEAR THE FLAG +C8BY5, 7600 /CLEAR THE AC + JMP I XC8TYP /EXIT +PNTBUF, 0 +TTYLPT, 0 + + +C8HANG, 0 + CLA / + TAD C8BY5 /GET CONSTANT 7600 + DCA PNTBUF /PNTBUF IS NOW A COUNTER + PSKF /SKIP ON PRINTER DONE + SKP /NOT DONE YET + JMP I C8HANG /SAW FLAG DONE + ISZ C8CONT /FIRST COUNTER FAST ONE + JMP .-4 /CHECK IF FLAG SET YET + ISZ PNTBUF /MADE 4096 COUNTS ON FAST COUNTER + JMP .-3 /KEEP IT UP FOR 5 SEC + TAD XC8CNTR /GET THE RETURN ADDRESS IN CONTROL + DCA C8HANG /SAVE IT IN HANG + DCA TTYLPT /ALLOW PRINTING ON TTY + JMS XC8PNT + MESHANG /LPT ERROR + JMS XC8CRLF + JMS XC8INQU /PRINT WAITING + JMP I C8HANG /CONTINUE TO SAVE ADDRESS +C8CONT, 0 /COUNTER FOR TIMER +MESHANG,TEXT "LPT ERROR" + +PAGE +/********************************************************************* +/******************************************************************* + +/THIS ROUTINE WILL CHECK LOCATION 22 THE HARD WARE CONFIG WORD. +/TO SEE IF THE CONSOLE BIT 3 )400) IS SET IF SET THEN RETURN +/TO CALL PLUS TWO FO A ACTIVE CONSOLR PACKAGE AC=0 +/IF NOT SET THEN TO CALL PLUS ONE FOR A DEACTIVE CONSOLE PACKAGE. + + +CHKCLA, 0 + CLA + TAD 22 /GET THE COTENTA OF LOCATION 22 + AND (400 /MASK FOR BIT 3 (400 + SNA CLA / + ISZ CHKCLA /ACTIVE CONSOLE PACKAGE RETURN + /CALL PLUS ONE (1) FOR ACTIVE + JMP I CHKCLA /DEACTIVE CONSOLE PACKAGE RETURN + /CALL PLUS TWO (2) + +/C8ERR +/THIS ROUTINE WILL DETERMINE WHAT TO DO WHEN A C8ERR IS ENCOUNTERED +/WILL CHECK IF CLASSIC SYSTEM, WILL CHECK C8SWIT REGISTERS. +/ C8ERR= JMS XC8ERR +/EX. JMS XC8ERR /GO TO C8ERR CALL IF NOT CONSOL +/ /RETURN IS CALL PLUS ONE AC =0000 + +/CALLS USED ARE -CHKCLA-XC8CRLF-XC8SW-XC8INQU-XC8PNT-XC8OCTA- + + +XC8ERR, 0 + IOF + DCA ACSAVE /SAVE AC + GTF + DCA FLSAVE /SAVE THE FLAGS + MQA + DCA MQSAVE /SAVE THE MQ + CLA CLL CMA /SUBTRACT A 1 FOR TRUE LOCATION + TAD XC8ERR /GET RETTURN LOCATION + DCA PCSAVE /SAVE ADD OF C8ERR CALL + JMS CHKCLA /CHECK LOC.22 BIT 3 CONSOL BIT + SKP /ACTIVE CONSOLE PACKAGE + JMP NTCLAS /NOT CLASSIC SYSTEM + JMS C8GET /GET THE REGISTERS. + JMS XC8SW /CHECK SWITCH REG FOR BIT THAT INDICATES + /NO ERROR MESSAGE +SETUP1, AND (0000 /MASK FOR BIT FOR NO ERROR PRINTING + /IF THIS ERROR MESSAGE IS TO ALWAYS + /BE PRINTED LEAVE AND VALUE AT 0000 + SZA CLA /SKIP IF BIT IS 0 PRINT ERROR MESSAGE + JMP C8DO10 /DO NOT PRINT + JMS XC8CRLF + JMS XC8PNT + ERRMES /PRINT THE ERROR MESSAGE + JMS XC8PNT + MESPC /PRINT THE PC STSTEMENT + TAD PCSAVE + JMS XC8OCTA /CONVERT 4 DIGIT PC TO ASCII + JMS XC8PNT + MESAC /PRINT THE AC MESS + TAD ACSAVE + JMS XC8OCTA + JMS XC8PNT + MESMQ /PRINT MQ + TAD MQSAVE + JMS XC8OCTA + JMS XC8PNT + MESFL /PRINT FL + TAD FLSAVE + JMS XC8OCTA + JMS XC8CRLF +C8DO10, JMS C8GET /GET THE REGISTERS. + JMS XC8SW /CHECK SWITCH REGISTER + SKP CLA /SKIP IF BIT 0 SET + JMP C8BY2 /LEAVE + JMS XC8INQ /GO TO THE INQUIRE ROUTINE + JMP C8BY2 /LEAVE +NTCLAS, JMS C8GET /GET THE REGISTERS. + JMS XC8SW /CHECK PSEUDO SWITCH REGISTER + /CHECK THE C8SWIT REGISTER + SKP CLA /SKIP IF HALT + JMP I XC8ERR /NO HALT CONTINUE + TAD (7402 /CODE FOR HLT + DCA I PCSAVE /PUT IT IN CALL LOC. + JMS C8GET + JMP I PCSAVE /EXIT TO CALL AND HALT +C8BY2, JMS C8GET /GET THE REGISTERS + JMP I XC8ERR +ERRMES, TEXT "DHRKDD FAILED " +MESPC, TEXT " PC:" +MESAC, TEXT " AC:" +MESMQ, TEXT " MQ:" +MESFL, TEXT " FL:" +PCSAVE, 7777 +ACSAVE, 7777 +MQSAVE, 7777 +FLSAVE, 7777 + + $$$ +/#8 +/#8