1 /RK8E/RK8L DISK FORMATTER
11 /COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
45 \f/RK8E/RK8L DISK FORMATTER PROGRAM: MD-08-DHRKD-D
48 /MODIFIED FOR OS8V3D BY ED STEINBERGER
50 DLSC=6740 /LOAD SECTOR COUNTER
51 DSKP=6741 /SKIP ON TRANSFER DONE OR ERROR
52 DCLR=6742 /CLEAR DISK CONTROL LOGIC
53 DLAG=6743 /LOAD ADDRESS AND GO
54 DLCA=6744 /LOAD CURRENT ADDRESS
55 DRST=6745 /READ STATUS REGISTER
56 DLDC=6746 /LOAD COMMAND REGISTER
57 DMAN=6747 /LOAD MAINTENANCE
98 0000 /PSEUDO SWITCH REGISTER
99 0 /CONTROL WORD 1 - USE PSUEDO SWITCHES **ES**
100 400 /CONTROL WORD 2 - SET CONSOLE PACKAGE ACTIVE **ES**
197 PCOUNT, 0 /USED ONLY IF ON APT
204 TAD KCDF /MAKE HOMEDF
207 /NOW TEST FOR APT SYSTEM
208 /IF ON APT TERMINAL MESSAGES ARE SKIP
209 /TO AVOID TIMING PROBLEMS WITH THE SYSTEM
210 APT8A /TEST FOR APT SYSTEM
214 IOTCHN /CHANGE DEVICE TO SWR3-8
217 PRNTER /PRINT "RK8E/RK8L DISK FORMATTER PROGRAM"
218 MES1 /MESSAGE 1 POINTER
220 PRNTER /PRINT "FOR ALL QUESTIONS"
221 MES2 /MESSAGE POINTER 2
223 DCA STCNT1 /COUNTER FOR AMOUNT OF DISKS
227 PRNTER /PRINT "FORMAT DISK ? "
228 MES3 /MESSAGE POINTER 3
231 TYPE /TYPE DISK NUMBER
237 RECEIV /WAIT FOR CHARACTER
238 JMP NOTDSK /NO NOT THIS DISK
239 JMP QUES1 /NEITHER YES OR NO
242 NOTDSK, DCA I STCNT3 /YES, WAS CLEAR DISK POINTER
243 ISZ STCNT2 /UPDATE POINTER
244 ISZ STCNT1 /COUNT DISKS
245 JMP SAMAGN /ASK ABOUT NEXT
248 PRNTER /PRINT "ARE YOU SURE ?"
249 MES4 /MESSAGE POINTER 4
250 RECEIV /WAIT FOR CHARACTER
251 JMP ALLAGN /NO, START ALL OVER
252 JMP DONE /NEITHER TYPE ?
256 JMP BGN /NO, OPERATOR ERROR
257 DCA LOC8ED /YES, AMOUNT LOCATED
259 /FIRST RECALIBRATE AND FORMAT IN WRITE ALL MODE
260 /ALL DISK DRIVES SELECTED BY OPERATOR,. MAKE THE FIRST
261 /TWO WORDS OF EVERY DISK SECTOR EQUAL TO THE
262 /ABSOLUTE DISK ADDRESS.
264 FRMDSK, JMS I XMOVE /MOVE DISK POINTERS
268 DCA DSKCNT /COUNTER FOR AMOUNT OF DISKS
271 DCA TCNTR5 /A FEW COUNTERS
273 SZA CLA /FORMAT THIS DISK
275 NEXFRM, ISZ TCNTR5 /NO, TRY NEXT
278 HLT /WHAT HAPPENED????
282 CLL RAL /MAKE DISK NUMBER
288 DCA EXBIT /SET EXTENDED DRIVE BIT
289 RECAL /RECALIBRATE THIS DRIVE
290 JMP RENEX1 /RECALIBRATE NEXT EXISTING
291 DCA LOWAD /SETUP ADDRESS POINTER
292 DCA HIGHAD /SETUP ADDRESS POINTER
294 DCA TRKCNT /COUNTER FOR AMOUNT OF TRACKS
297 WRTDSK, TICK /TIMING FOR APT IF NEEDED.
298 -4 /OTHERWISE BOTH ARE SKIPPED
299 LODTRK /FORMAT A TRACK
300 JMP RENEX1 /TO NEXT DISK
304 DCA LOWAD /UPDATE TO NEXT TRACK
305 SZL CLA /SET EXTENDED BIT
307 ISZ TRKCNT /UPDATE TRACK COUNTER
308 JMP WRTDSK /DO NEXT TRACK
309 RENEX1, ISZ DSKCNT /UPDATE DISK COUNTER
310 \f JMP NEXFRM /DO NEXT DISK
312 /ROUTINE TO CHECK ADDRESSING INFORMATION ON THE DISK.
313 \f/THE FIRST TWO WORDS OF EVERY SECTOR SHOULD EQUAL
314 /THE ABSOLUTE DISK ADDRESS. ALL OTHER DATA IS
318 DCA DSKCNT /AMOUNT OF DISKS
322 TAD I TCNTR5 /SOFTWARE INFORMATION
323 SZA CLA /CHECK THIS DISK
324 JMP CHKDAT /CHECK THIS ONE
325 NEXCHK, ISZ TCNTR5 /UPDATE FOR NEXT DISK
328 HLT /WHAT HAPPENED?????
332 CLL RAL /MAKE DRIVE NUMBER
338 DCA EXBIT /SET EXTENDED DRIVE BIT
340 JMP RENEX2 /TRY NEXT DRIVE
342 DCA HIGHAD /SETUP STARTING DISK ADDRESS
344 DCA TRKCNT /AMOUNT OF TRACKS TO DO
349 CHECK, TICK /TIMING FOR APT IF NEEDED.
350 -4 /SKIPPED IF NOT REQUIRED.
351 REDDSK /READ AND CHECK ONE CYLINDER
352 JMP RENEX2 /TO NEXT DISK
356 DCA LOWAD /UPDATE TO NEXT CYLINDER
357 SZL CLA /TIME TO SET EXTENDED BIT
358 ISZ HIGHAD /YES, SET IT
359 ISZ TRKCNT /UPDATE CYLINDER COUNTER
360 JMP CHECK /CHECK NEXT ONE
361 RENEX2, ISZ DSKCNT /UPDATE DISK COUNTER
362 JMP NEXCHK /CHECK NEXT
366 AND K4000 /TEST FOR APT
368 JMP ENDTST /NO. NORMAL RUN
369 ISZ PCOUNT /INCREMENT PASS COUNT
370 JMP FRMDSK /LOOP PROGRAM
372 PRNTER /PRINT "PASS COMPLETE"
375 PRNTER /PRINT "TRY SAME SEQUENCE"
377 RECEIV /WAIT FOR INPUT FROM OPERATOR
378 JMP ALLAGN /NO, ASK AGAIN
380 JMP FRMDSK /TRY SAME SEQUENCE
383 /SUBROUTINE FOR "ERRORS," SCOPE LOOPS, AND
388 TAD ERRO /GET PC STORED
389 DCA RETRN1 /STORE FOR RETURN
390 KAERRO /NOTIFY APT OF ERROR IS NEED BE
393 TAD I ERRO /GET TEXT POINTER
395 TAD HEDTAD /MAKE ERROR HEADER TAD
397 HLT /MODIFIED HEADER TAD
399 PRNTER /MODIFIED HEADER POINTER
404 TAD ERRO /GET PC POINTER
405 OCTEL /PRINT PC STORED
406 TAD I ERRO /GET TEXT POINTER
409 JMP NTGD /NOT GD: REGISTER
414 OCTEL /PRINT FOUR OCTAL
428 DCA PCNTR1 /COUNTER FOR # OF HEADS
431 STRAUT, TAD ERRO /GET TEXT POINTER
433 JMP NOTEX /NOT THIS ONE
436 TAD PCNTR2 /GET TEXT MESSAGE POINTER
439 DCA .+2 /STORE FOR PRNTER
441 HLT /MODIFIED TEXT POINTER
443 OCTEL /PRINT FOUR OCTAL
448 JMP STRAUT /CHECK FOR NEXT XX:
449 JMP I RETRN1 /RETURN TO QUESTION
472 /ROUTINE TO FORMAT CYLINDER
473 /MAKE FIRST TWO WORDS OF EVERY SECTOR
474 /EQUAL TO DISK ADDRESS.
478 DCA GDREG2 /SETUP COMPARE REGISTER
480 TAD K7735 /AMOUNT OF SECTORS TO DO
481 DCA TCNTR1 /SETUP COUNTER
482 DCA TCNTR2 /STARTING WITH 0
484 DCA TCNTR3 /SECTOR COUNTER POINTER STOP
486 AND K0037 /MASK SECTOR BITS
487 TAD LOWAD /ADD IN CYLINDER
488 DCA I XLOTRK /SETUP TRACK WORD IN BUFFER
489 TAD EXBIT /ADD IN EXTENDED BIT
491 TAD DRIVNO /ADD IN DRIVE NUMBER
492 DCA I XHITRK /SETUP TRACK WORD IN BUFFER
495 TAD HOMEMA /CURRENT FIELD
496 TAD K5000 /FUNCTION WRITE ALL
499 LDSC /LOAD EXTENDED DRIVE BIT
500 CLA /CLEAR EXTENDED DRIVE BIT
502 LDCUR /LOAD CURRENT ADDRESS
504 LDADD /LOAD TRACK AND GO
506 JMP .-1 /WAIT FOR FLAG
509 SZA CLA /WAS STATUS 0?
510 JMP LODER /ERROR, STATUS ON WRITE ALL
512 ISZ TCNTR3 /COUNT FIRST REVOLUTION
513 SKP CLA /STILL IN FIRST REV.
514 DCA TCNTR2 /SETUP FOR SECTOR "1"
516 ISZ TCNTR1 /UPDATE SECTOR COUNTER
517 \f JMP LODR1 /TRY NEXT SECTOR
519 JMP I WRTTRK /THIS CYLINDER DONE
520 LODER, ERROR /ERROR, STATUS
523 RECAL /CLEAR CONTROL AND DRIVE
524 JMP I WRTTRK /TO NEXT DISK
526 PRNTER /PRINT "TRY SAME AGAIN"
528 RECEIV /WAIT FOR YES OR NO
529 JMP LODER-2 /WAS A NO TRY SAME CYLINDER
530 JMP .-5 /WAS NEITHER ASK AGAIN
531 JMP WRTTRK+1 /YES, TRY NEXT
536 /SUBROUTINE TO READ STATUS REGISTER
539 IOT5, DRST /READ STATUS IOT
541 ERHLT5, JMS XC8ERR /SKIP TRAP ERROR.
542 DCA STREG /SAVE RESULTS
546 /SUBROUTINE TO LOAD CURRENT ADDRESS REGISTER
549 DCA ADREG /SAVE IN ADDRESS
551 DCA CAREG /SETUP INITIAL CURRENT ADDRESS
553 IOT4, DLCA /LOAD CURRENT ADDRESS IOT
555 ERHLT4, JMS XC8ERR /SKIP TRAP ERROR.
559 /SUBROUTINE TO LOAD TRACK ADDRESS REGISTER
562 DCA DAREG /SAVE OUTBOUND DATA
564 IOT3, DLAG /LOAD DISK ADDRESS REGISTER
566 ERHLT3, JMS XC8ERR /SKIP TRAP ERROR.
570 /SUBROUTINE TO LOAD COMMAND REGISTER
573 DCA CMREG /SAVE OUTBOUND DATA
575 JMS XC8CKP /CHECK FOR CONTROL CHARACTERS.
579 IOT6, DLDC /LOAD COMMAND REGISTER
581 ERHLT6, JMS XC8ERR /SKIP TRAP ERROR.
585 /SUBROUTINE ISSUE "DLSC"
592 /SUBROUTINE TO ISSUE "DSKP" DISK SKIP IOT
595 IOT1, DSKP /DISK SKIP IOT
600 /SUBROUTINE TO ISSUE "DCLR" CLEAR IOT
603 IOT2, DCLR /DCLR "CLEAR IOT"
605 ERHLT2, JMS XC8ERR /SKIP TRAP ERROR.
608 /ROUTINE TO ZERO WORK BUFFER
612 TAD BGNBUF /START OF BUFFER -1
613 DCA AUTO10 /SETUP AUTO INDEX
615 DCA DATCNT /SETUP COUNTER
616 DCA I AUTO10 /CLEAR BUFFER
617 ISZ DATCNT /UPDATE COUNTER
618 JMP .-2 /NOT ALL CLEARED YET
619 JMP I KLBUF /BUFFER CLEARED
625 /ROUTINE TO READ AND CHECK A CYLINDER
629 DCA TCNTR1 /AMOUNT OF SECTORS TO DO
630 DCA TCNTR2 /STARTING WITH 0
635 DCA SOFT /SETUP SOFT ERROR FLAG
637 LDCUR /LOAD CURRENT ADDRESS
638 TAD HIGHAD /EXTENDED CYLINDER BIT
639 TAD DRIVNO /CURRENT DRIVE
640 TAD HOMEMA /CURRENT FIELD
642 TAD EXBIT /LOAD EXTENDED DRIVE BIT
644 CLA /CLEAR EXTENDED DRIVE BIT
646 AND K0037 /MASK SECTOR BITS OFF
647 TAD LOWAD /ADD IN OTHER DISK ADDRESS
649 DSKSKP /DISK SKIP IOT
650 JMP .-1 /WAIT FOR FLAG
652 TAD K4000 /ADD IN FUDGE FACTOR
653 SNA CLA /SKIP IF ERROR
654 JMP STAOK /STATUS O.K.
655 TAD STREG /GET STATUS READ
657 SNA CLA /WAS IT A CRC
658 JMP STAER /NO, JUST A HARD ERROR
659 DCA SOFT /CLEAR SOFT ERROR FLAG
660 STAOK, TAD CMREG /GET LAST COMMAND
662 TAD EXBIT /ADD EXTENDED DRIVE BIT
664 TAD I XHITRK /GET WORD READ FROM DISK
665 SNA CLA /SKIP IF ERROR
666 JMP FRSTOK /FIRST WORD O.K.
667 TAD I XHITRK /GET WORD
668 DCA DTREG /SETUP ERROR PRINTER
671 DCA GDREG2 /SETUP GOOD FOR PRINTER
672 JMP DATER /NO, DATA ERROR
673 FRSTOK, TAD I XLOTRK /GET WORD READ
675 TAD DAREG /COMPARE TO GOOD
676 SNA CLA /SKIP IF ERROR
678 ISZ ADREG /SETUP ERROR PRINTER
680 DCA GDREG2 /SETUP GOOD WORD FOR PRINTER
681 TAD I XLOTRK /GET WORD READ
682 DCA DTREG /SETUP FOR PRINTER
683 JMP DATER /DATA ERROR
684 DATOK, TAD SOFT /GET SOFT ERROR FLAG
685 SNA CLA /WAS IT CLEAR
686 JMP STAER /YES, STATUS ERROR
688 TAD K0003 /ADVANCE 3 SECTORS
691 JMP CHKR1 /MORE TO FORMAT
693 JMP I REDTRK /EXIT, O.K.
695 DCA TCHKT /SETUP TEXT POINTER
698 DCA TCHKT /SETUP TEXT POINTER
700 DCA GDREG2 /SETUP GOOD STATUS PRINTER
701 CHKER, ERROR /ERROR, READ DATA
702 TCHKT, 0 /MODIFIED TEXT POINTER
703 RECAL /CLEAR CONTROL AND DRIVE
704 JMP I REDTRK /TO NEXT DISK
706 PRNTER /PRINT "TRY SAME AGAIN"
709 JMP DATER-2 /CHECK NEXT
711 JMP REDTRK+1 /TRY SAME AGAIN
713 /THIS ROUTINE WILL TEST FOR APT AND NOP CONSOLE
721 AND K7377 /ON APT. NOP CONSOLE PACKAGE
724 AND K0007 /ISOLATE DRIVE NUMBER OR
725 /NUMBER OF DRIVES TO BE DONE
729 SNA CLA /SINGLE DRIVE TESTING
730 JMP MULDSK /NO.SEVERAL TO DO
731 TAD ADPOT1 /GET DISK POINTER
732 TAD STCNT1 /ESTABLISH DRIVE TO DO
736 CLL CLA CMA /ONE DISK TO DO
739 MULDSK, TAD STCNT1 /DRIVE TO BE DONE
742 TAD ADPOT1 /GET DISK POINTER
743 TAD STCNT2 /ESTABLISH DRIVE TO BE DONE
747 DCA I STCNT3 /DO THIS DRIVE
750 JMP MULDSK+3 /MORE TO DO
753 DCA LOC8ED /NUMBER TO BE DONE
758 /SUBROUTINE TO PRINT TWO OCTAL
767 TYPE /PRINT FIRST BYTE
771 TYPE /PRINT SECOND BIT
790 /ROUTINE TO PRINT FOUR OCTAL
812 /SUBROUTINE TO PRINT TEXT
816 TAD I PRN /GET POINTER
864 /ROUTINE TO WAIT FOR KEY FROM OPERATOR
881 JMS XC8CNT /CHECK FOR CONTROL CHARACTERS.
892 ISZ WAIT /UPDATE RETURN POINTER
896 SNA CLA /WAS IT A YES
898 JMP I WAIT /WAS NEITHER
906 /ROUTINE TO RECALIBRATE SELECTED DRIVE
909 CLA CLL IAC /ENABLE CLEAR CONTROL
910 CLRALL /CLEAR CONTROL
911 TAD DRIVNO /CURRENT DRIVE
912 TAD HOMEMA /CURRENT FIELD
915 LDSC /LOAD EXTENDED DRIVE BIT
916 CLA CLL CML RAR /MAYBE EXPECTED STATUS
917 DCA GDREG2 /SETUP COMPARE REGISTER
918 CLA CLL CML RTL /ENABLE RECALIBRATE BIT
919 CLRALL /"RECALIBRATE"
920 DSKSKP /DISK SKIP IOT
921 JMP .-1 /WAIT FOR FIRST DONE FLAG
924 SNA /WAS IT BUSY AND DONE
925 JMP RESTA /YES, THEN ITS O.K.
926 TAD K2000 /NO, THEN IT MUST BE JUST DONE
927 SZA CLA /WAS IT JUST DONE
928 JMP RESTER /NO, ERROR
929 RESTA, CLRALL /CLEAR STATUS
930 TAD K0200 /ENABLE SET SECOND DONE FLAG
931 TAD CMREG /ORIGINAL COMMAND
933 DSKSKP /DISK SKIP IOT
934 JMP .-1 /WAIT FOR SECOND DONE
937 SZA CLA /WAS IT ONLY DONE FLAG
938 JMP RESTER /NO, ERROR STATUS
939 CLA CLL IAC /ENABLE CLEAR CONTROL
940 CLRALL /CLEAR CONTROL
941 ISZ RESTOR /UPDATE FOR GOOD RECALIBRATE
943 RESTER, ERROR /ERROR, STATUS
947 PRNTER /PRINT "TRY RECALIBRATE"
949 RECEIV /WAIT FOR INPUT
950 JMP .+3 /TRY NEXT EXISTING DISK
952 JMP RESTOR+1 /TRY AGAIN
954 TAD AMOUNT /GET AMOUNT ON SYSTEM
955 SNA /WAS THERE ONLY 1 LEFT
956 JMP I XEND /LAST DISK
957 DCA AMOUNT /MORE TO GO BUT CLEAR THIS ONE
958 DCA I TCNTR5 /CLEAR DISK POINTER
959 JMP I RESTOR /TRY NEXT ONE
962 /ROUTINE TO CHANGE DEVICE CODES
965 JMS XC8SW /GET SWITCH REGISTER BITS.
967 SNL CLA /CHANGE DEVICE CODES?
969 JMS XC8SW /GET SWITCHES.
971 DCA CSAVE1 /SAVE DESIRED
976 CHANGR, TAD I RESTOR /GET ADDRESS POINTER
978 TAD I KWAIT /GET OLD CODE
980 TAD CSAVE1 /ADD IN DESIRED
981 DCA I KWAIT /STORE DESIRED DEVICE CODE
982 ISZ RESTOR /UPDATE POINTER
983 ISZ CSAVE2 /UPDATE CHANGE COUNTER
985 JMP I CHANG /EXIT TO PROGRAM.
1003 /THIS ROUTINE WILL GENERATE TIMING IF NEEDED BY THE APT SYSTEM
1007 TAD 22 /GET HARDWARE CONFIGURATION
1011 TAD I KTICK /GET TIMING VALUE
1012 DCA COUNT /ESATABLISH TIME
1015 TAD COUNT /GET VALUE OF COUNTER
1016 DCA CLKCNT /STORE IT
1017 ISZ CNT /TIMING NEED BE DONE?
1020 TAD KCNT /TIMING VALUE
1021 DCA CNT /INIT SECOND COUNTER
1022 EXTICK, ISZ KTICK /MOVE BEYOND TIMING VALUE
1031 /ROUTINE TO NOTIFY APT OF USE IF REQUIRED
1034 IOF /DISABLE INTERUPTS
1035 RDF /GET PRESENT DATA FIELD
1037 DCA .+1 /ESTABLISHES CURRENT DATA FIELD
1039 CIF 70 /FIELD 7. LOCATION OF UV PROM
1049 /THIS ROUTINE WILL NOTIFY APT OF AN ERROR AND SEND PC TO
1050 /APT SYSTEM. ALL ERRORS WILL RESULT IN PROGRAM HLT AND A TIME OUT ON
1051 /APT. APT WILL TAKE OVER FROM THERE.
1055 IOF /DISABLE INTERUPTS
1057 TAD 22 /CHECK FOR APT SYSTEM
1059 JMP I AERRO /RETURN NOT ON APT
1062 RDF /GET CURRENT DATA FIELD
1066 HLT /REPLACED WILL CURRENT DATA FIELD
1067 CIF 70 /CHANGE IF FOR APT RETURN TO FIELD 7
1068 JMP I K6520 /NOTIFIES APT OF ERROR
1076 /ROUTINE TO MOVE DISK POINTERS
1086 TAD I AUTO10 /FROM HERE
1087 DCA I AUTO11 /TO THERE
1088 ISZ MCNTR1 /4 POINTERS
1107 ERTX1, TEXT "READ STATUS ERROR"
1108 ERTX2, TEXT "DISK DATA ERROR"
1109 ERTX3, TEXT "WRITE STATUS ERROR"
1110 ERTX4, TEXT "RECALIBRATE STATUS ERROR"
1112 ERMES1, TEXT "TRY TO FORMAT SAME CYLINDER AGAIN?"
1113 ERMES2, TEXT "TRY TO RECALIBRATE SAME DISK AGAIN?"
1114 ERMES3, TEXT "TRY TO CHECK SAME CYLINDER AGAIN?"
1116 TEXEND, TEXT "RK8E/RK8L DISK FORMATTER PASS COMPLETE"
1117 MES1, TEXT "RK8E/RK8L DISK FORMATTER PROGRAM"
1118 MES2, TEXT "FOR ALL QUESTIONS, ANSWER Y FOR YES OR N FOR NO."
1119 MES3, TEXT "FORMAT DISK "
1120 MES4, TEXT "ARE YOU SURE?"
1121 MES5, TEXT "FORMAT SAME DISK(S) AGAIN?"
1134 /CONSOL SRC -V2-R0- CONSOLE PACKAGE
1137 /LAS= CALL C8CKSW OR JMS XC8SW
1138 /THIS WILL READ THE SWITCH REGISTER FROM THE PLACE SPECIFIED
1139 /BY LOCATION 20 BIT 0.
1142 /THE PROGRAN SHOULD CHECK FOR A CONTROL CHARACTER FRON THE TERMINAL
1143 /EVERY FIVE(5) SECONDS OR SOONER.
1145 /LOCATIONS THAT NEED TO BE SET UP FOR USING THE CONSOLE PACKAGE.
1147 /CNTVAL IN XC8PASS THIS LOCATION DETERMINDS THE NUMBER OF
1148 /PROGRAM COMPLETIONS THAT ARE NEEDED BEFORE THE PASS MESSAGE IS TYPED
1149 /THE VALUE SHOULD PUT THE PASS MESSAGE OUT IN THE RANGE OF 1 TO 5 MINUTES.
1150 /THIS SHOULD BE A POSITIVE NUNBER.
1152 /C8STRT THIS IS FOUND IN CNTRL ROUTINE CONTROL R PART
1153 /IT IS THE RETURN WHEN CONTROL R IS ENTERED (RESTART PROGRAM)
1154 /THE RETURN JUMPS TO XDOSW WHICH CONTAINS C8STRT SO PUT THE LABEL C8STRT
1155 /WHERE YOU WANT TO RESTART THE PROGRAM.
1158 /SETUP1 IN XC8ERR THIS IS THE MASK BIT FOR HALT ON ERROR
1159 /PLACE THE CORRECT BIT IN THIS LOCATION FOR HALTING ON ERRORS.
1161 /SETUP2 IN XC8PASS THIS IS THE MASK FOR HALT A END OF PASS.
1163 /THE CALL TABLE IS A CONDITIONAL ASSEMBLY.
1164 /TO ASSEMBLE THE CALL REMOVE THE / BEFORE CONSOL=0.
1165 /IN COMBINING THE CONSOL PACKAGE TO A DIAGNOSTIC.
1166 /THE CALL TABLE IS TO BE AT THE BEGINNING OF A PROGRAM.
1183 /*********************************************************************
1185 /THIS IS CALLED AT THE END OF EACH PROGRAM COMPLETION
1186 /THE VALUE OF** CNTVAL** WILL BE DETERMINED BY THE TIME IT TAKES
1187 /THE PROGRAM TO COMPLETE THIS MANY C8PASS TO BE IN THE 1 TO 4 MINUTE
1191 / HLT /HALT IF NON CONSOL PACKAGE
1192 / JMP START1 /CONTINUE RUNNING THIS PROGRAM
1195 /RETURN TO LOCATION CALL PLUS ONE WITH THE AC=0 IF NON CONSOL PACKAGE AND HLT
1196 /IF CONTINUE TO RUN THEN RETURN TO CALL PLUS2 AC=0
1197 /THE LOCATION SETUP2 IS THE MASK BIT FOR THE HALT AT END OF PASS
1198 /CHECK THAT IT IS CORRECT FOR THE CURRENT PROGRAM
1200 /CALLS USED BY XC8PAS ARE CHKCLA-XC8CRLF-XC8OCTA-XC8SW-XC8PNT-XC8INQ-
1205 \f JMS CHKCLA /IS WORD 22 BIT 3 ACTIVE CONSOLE?
1206 JMP DOPACK /IS CLASSIC
1207 JMS C8GET /GET THE REGISTERS.
1208 JMS XC8SW /DEACTIVE CONSOL CHECK SR SETTING
1209 AND (400 /FOR HALT ON END OF C8PASS
1210 SZA CLA /1= HALT 0 CONTINUE
1211 JMP I XC8PAS /GO TO HALT
1212 JMP C8BY1 /CONTINUE ON RUNNING PROGRAM
1213 DOPACK, JMS CKCOUT /CLASS CHECK C8PASS COUNT
1214 JMP C8BY1 /C8PASS COUNT NOT DONE REDO PROGRAM
1215 ISZ PASCNT /C8PASS COUNT DONE SET C8PASS COUNT
1217 JMS XC8PNT /C8PRNT BUFFER
1219 TAD PASCNT /GET NUMBER
1220 JMS XC8OCTA /CONVERT IT TO ASCII
1221 JMS XC8CRLF /DO A CARRIAGE RETURN
1222 JMS C8GET /GET THE REGISTERS.
1223 JMS XC8SW /CHECK A HALT AT END OF C8PASS
1224 SETUP2, AND (400 /MASK BIT
1225 SZA CLA /HALT =1 NO SKIP CONTINUE =0
1226 JMS XC8INQ /STOP PROGRAM EXECUTION-LOOK FOR INPUT
1227 C8BY1, ISZ XC8PAS /BUMP RETURN
1230 TAD DOSET /CHECK IF SET UP NEEDED
1231 SZA CLA /0=SET UP C8PASS COUNT VALUE
1232 /1=C8PASS COUNT VALUE OK
1233 JMP NOSET /C8PASS COUNT VALUE ON
1234 TAD CNTVAL /GET COUNT VALUE FOR THIS PROG
1235 CMA /SET TO NEGATIVE
1236 DCA DOCNT /STORE IN HERE
1237 ISZ DOSET /INDICATE VALUE SET UP
1238 NOSET, ISZ DOCNT /COUNT THE NUMBER OF PASSES
1239 JMP C8BY1 /EXIT FOR ANOTHER PASS
1240 DCA DOSET /SET TO C8PRNT C8PASS
1241 ISZ CKCOUT /BUMP RETURN FOR
1242 JMP I CKCOUT /C8PASS C8TYPE OUT
1247 MESPAS, TEXT "DHRKDD PASS "
1251 /*********************************************************************
1255 /THIS ROUTINE CAN BE USED INPLACE OF A READ THE SWITCHES LAS.
1256 /ROUTINE THAT WILL CHECK WHERE TO READ THE
1257 /C8 SWITCHES FROM IE. FROM PANEL OR PSEUDO SWITCH REGISTER
1258 /THE SELECTION IS DETERMINED BY THE STATE OF BIT 0 IN LOCATION 21.
1261 /EX. JMS XC8SW /READ THE C8SWIT REGISTER
1262 /RETURN WITH THE CONTENTS OF SWITCH REGISTER
1264 /RETURN TO NEXT LOCATION FOLLOWING CALL WITH THE AC= TO VALUE OF C8SWIT SETTING
1266 /CALLS USED ARE-XC8CKPA-
1271 JMS XC8CKPA /GO CHECK THE IF ANY CONTRL
1273 TAD 21 /GET WD FOR INDICATOR
1274 SPA CLA /CHECK IF FROM PANEL 4000
1275 7614 /DO LAS AND SKIP GET FROM PANEL WITH LAS
1276 TAD 20 /PSEUDO SWITCH
1277 JMP I XC8SW /EXIT WITH STATUS BIT IN AC.
1280 /*********************************************************************
1283 /THIS ROUTINE WILL LOOK FOR A INPUT FROM THE TERMINAL
1284 /AND REMOVE ANY PARITY BITS, THEN MAKE IT 8 BIT ASCI.
1285 / C8TTYI= JMS XC8TTY
1286 /EX. JMS XC8TTYI /READ CHAR FROM THE CONSOL DEVICE
1287 / /RETURN TO CALL PLUS ONE AC CONTAINS THE CHAR
1290 /CALLS USED -NONE- BUT C8CHAR IS OFF PAGE AND IN ROUTINE CALLED XC8ECHO
1295 KSF /LOOK FOR KEYBOARD FLAG
1298 AND (177 /MASK FOR 7 BITS
1299 TAD (200 /ADD THE EIGTH BIT
1300 DCA C8CHAR /STORE IT
1306 /*********************************************************************
1310 /THIS ROUTINE WILL TYPE THE CONTENTS OF THE C8 PRINT BUFFER. THE LOCATION
1311 /OF THE BUFFER WILL BE IN THE ADDRS FOLLOWING THE CALL. PRINTING OF THE BUFFER
1312 /WILL STOP WHEN A 00 CHAR IS DETECTED. CHARACTERS ARE PACKED 2 PER WORD.
1314 / C8PRNT= JMS XC8PNT
1317 /EX. JMS XC8PNT /C8PRNT THE CONTENTS OF THE FOLLOWING BUFFER
1318 / MESS77 /LOCATION OF C8PRNT BUFFER
1320 /C8PRNT WILL USE THE LOCATION FOLLOWING THE CALL AS THE POINTER FOR THE
1321 /C8PRNT ROUTINE.RETURN TO CALL PLUS TWO WITH AC= 0
1323 /CALLS USED ARE-XC8TYPE-XC8PNT
1329 TAD I XC8PNT /GET C8PRNT BUFFERS STARTING LOCATION
1330 DCA PTSTOR /STORE IN PTSTOR
1331 ISZ XC8PNT /BUMP RETURN
1332 C8DO1, TAD I PTSTOR /GET DATA WORD
1333 AND (7700 /MASK FOR LEFT BYTE
1334 SNA /CHECK IF 00 TERMINATE
1337 CML /MAKE CHAR A 300 AFTER ROTATE
1338 IAC /MAKE CHAR A 200 AFTER ROTATE
1341 RTR /PUT CHAR IN BITS 4-11 MAKE IT 8 BIT ASCII
1342 JMS XC8TYPE /C8PRNT IT ON CONSOLE
1343 TAD I PTSTOR /GET DATA WORD
1344 AND (0077 /MASK FOR RIGHT BYTE
1345 SNA /CHECK IF 00 TERMINATOR
1347 TAD (3740 /ADD FUDGE FACTOR TO DETERMINE IF 200
1348 SMA /OR 300 IS TO BE ADD TO CHAR
1351 JMS XC8TYPE /C8TYPE ONLY BITS 4-11
1352 ISZ PTSTOR /BUMP POINTER FOR NEXT WORD
1354 PTSTOR, 0 /STOR FOR C8PRNT BUFFER
1355 /**************************************************************************
1359 /THIS ROUTINE WILL CHECK IF THE CONSOL PACKAGE IS ACTIVE,IF ACTIVE
1360 /IT WILL RETURN TO CALL PLUS ONE AC= 0. AND DO THAT INSTRUCTION.
1361 /IF THE CONSOL PACKAGE IS NOT ACTIVE THE CALL WILL BE REPLACED
1362 /WITH A 7402 HALT AND THEN RETURN TO THE HALT.
1364 / C8PAUS= JMS XC8PAU
1367 /EX. JMS XC8PAUS /CHECK IF ON ACTIVE CONSOL IF NOT HALT HERE
1368 / ANYTHING /RETURN HERE IF ON ACTIVE CONSOL
1372 /CALLS USED ARE -CHKCLA-
1378 JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT
1379 JMP C8DO3 /GO DO CONSOL PART RETURN CALL +1
1380 CMA /DEACTIVE CONSOLE PACKAGE PUT HLT IN CALL
1381 TAD XC8PAU /GET CORRECT RETURN ADDRS
1382 DCA XC8PAU /SET UP RETURN
1383 TAD (7402 /GET CODE FOR HLT
1384 DCA I XC8PAU /PUT HALT IN CALL LOCATION
1385 C8DO3, JMP I XC8PAU /GO TO HALT OR RETURN TO NEXT LOCATION
1389 /*********************************************************************
1393 /THIS ROUTINE WILL CHECK FOR THE PRESENCE OF CONTROL CHARACTERS
1394 /IT WILL CHECK FOR THE FOLLOWING CHAR C-R-Q-L-S
1395 / C8CNTR= JMS XC8CNT
1397 /EX. JMS XC8CNTR /CHECK FOR CONTROL CHARACTER
1398 / JMP ANYTHING /LOC FOLLOWING CALL IS FOR CONTINUING THE PROGRAM
1399 / JMP ANYTHING /LOC. IS FOR RETURN IF INMODE SET AND NOT CNTRL CHAR
1402 /RETURN IS TO CALL PLUS ONE IF CONTINUE
1403 /RETURN IS TO CALL PLUS TWO IF INMODE SET AND NOT CONTROL CHAR
1404 /RETURN IS TO CALL PLUS TWO IF INMODE IS NOT SET AND NO
1405 /CONTROL CHAR ..THIS WILL PRINT THE CHARACTER AND A ?
1406 /CLEAR THE AC AND RETURN CALL+2.
1408 /CALLS USED ARE-CHKCLA-XC8TYPE-XC8CRLF-C8GET-UPAROW-XC8TYI-XC8PSW-
1413 DCA ACSAVE /SAVE THE AC
1414 JMS CHKCLA /CHECK LOC.22 BIT3 FOR CONSOLE BIT
1415 JMP .+3 /ON ACTIVE CONSOLE
1416 TAD ACSAVE /DEACTIVE CONSOLEGET AC FOR RETURN
1417 JMP I XC8CNT /EXIT NOT ON ACTIVE CONSOLE
1421 DCA MQSAVE /SAVE THE MQ
1422 DCA INDEXA /SET DISPLACEMENT INTO TABLE B
1423 TAD XTABLA /GET ADDRS OF TABLE A
1424 DCA GETDAT /CONTAINS POINTER TO CONTROL CHAR
1425 REDOA, TAD I GETDAT /GET CONTROL CHAR FROM TABLE
1426 SNA /CHECK FOR A 0 END OF TABLE
1427 JMP DONEA /END OF TABLE NO CONTROL CHAR
1428 TAD C8CHAR /COMPARE CHAR TO CONTROL CHAR
1431 ISZ INDEXA /NO MATCH NOT END OF TABLE REDO
1432 ISZ GETDAT /BUMP INDEX FOR EXIT WHEN CONTROL FOUND
1433 JMP REDOA /BUMP GETDAT FOR COMPARE OF NEXT CNTRL CHAR.
1434 DONEA, TAD INMODE /CHECK IF PROGRAM EXPECTS CHAR
1435 SZA CLA /1=CHAR EXPECTED 0= NO CHAR EXPECTED
1436 JMP EXITA /CHAR EXPECTED
1437 TAD C8CHAR /GET CHAR - NOT CONTROL + NOT EXPECTED
1438 JMS XC8TYPE /C8PRNT CHAR
1439 TAD (277 /GET CODE FOR "?"
1442 ISZ XC8CNT /BUMP RETURN
1443 JMP I XC8CNT /EXIT CALL+2
1444 EXITA, ISZ XC8CNT /BUMP RETURN FOR MAIN PROGRAM CHECK OF CHAR
1445 TAD C8CHAR /PUT CHAR IN AC.
1447 GOITA, TAD C8CHAR /GET THE CONTENTS OF CHAR
1448 TAD (100 /ADD 100 TO FORM A GOOD ASCII CHARACTER
1449 DCA C8CHAR /RESTORE COFFECT CHAR
1450 TAD XTABLB /GET START OF TABLE B
1451 TAD INDEXA /GET NOW FAR INTO TABLE
1453 TAD I GOTOA /GET THE ROUTINE STARTTING ADDRESS
1454 DCA GOTOA /STORE IT IN HERE
1455 JMP I GOTOA /GOTO CONTROL CHAR ROUTINE
1456 GOTOA, 0000 /ADD OF CNTRL ROUTINE TO EXECUTE
1457 INDEXA, 0000 /DISPLACEMENT INTO CNTRL TABLE
1458 GETDAT, 0000 /LOCATION OF ADDRS OF CONTROL CHAR.
1459 XTABLA, TABLA /ADDRS OF TABLEA
1460 XTABLB, TABLB /ADDRS OF TABLEB
1461 TABLA, 7575 /CNTRL C BACK TO MONITOR 203
1462 7564 /CNTRL L SWITCH ERROR PRINTTING DEVICE 214
1463 7557 /CNTRL Q START DISPLAYING CHAR. AGAIN 221
1464 7556 /CNTRL R BACK TO BEGINNING OF PROGRAM 222
1465 7555 /CNTRL S STOP SENDING CHAR TO DISPLAY WAIT FOR CNTRL Q 223
1466 7573 /CNTRL E CONTINUE WITH PROGRAM 205
1467 7574 /CONTROL D CHANGE SWITCH REGISTER ON FLY
1479 /START SENDING CHAR. TO THE DISPLAY
1480 /THIS WILL RETURN CONTROL TO CALL THAT WAS SET BY
1481 /THE CALL FOR CONTROL S.
1483 CNTRLQ, DCA INMODE /SET SOFT FLAG FOR UNEXPECTED CHAR
1484 TAD C8SETS /CHECK IF CONTROL S TYPED IN
1486 JMP BYRETR /CONTROL S TYPED IN
1487 JMS C8GET /NO CONTROL S TYPED PREVIOUSLY
1488 JMP I XC8CNTR /LEAVE VIA CNTR ENTRY ADDRESS
1489 BYRETR, DCA C8SETS /CLEAR THE SOFT FLAG
1490 JMS C8GET /RESTORE REGISTERS
1491 JMP I C8RETR /EXIT TO ADDRESS SET BY CONTROL S
1495 /GO TO THE QUESTION C8SWIT
1496 CNTRLR, DCA TTYLPT /CLEAR THE TYPE FLAG SET TO TTY
1497 DCA C8SETS /CLEAR SOFT FLAG FOR CNTRL S
1499 JMS UPAROW /PRINT THE ^ AND C8CHAR
1500 C8BY4, DCA C8SWST /CLEAR FLAG FOR CNTRL D OR R
1501 JMP I XDOSW /GO TO ADDRS OF C8SWIT
1502 XDOSW, BGN /DOSW IS LABEL FOR C8SWIT QUESTION
1506 /STOP SENDING CHAR. TO DISPLAY UNTIL A ^Q IS RECEIVED
1509 CNTRLS, TAD C8SETS /IF1 DO NOT STORE IN C8RETR
1511 JMP C8DO7 /DONT SET UP C8RETR
1512 IAC /MAKE RETURN CALL PLUS 2
1513 TAD XC8CNT /GET RETURN FOR THIS CALL
1514 DCA C8RETR /STORE IT HERE FOR USE BE CNTROL Q
1515 C8DO7, ISZ C8SETS /SET FLAG TO SAVE CALL
1516 JMS XC8TTYI /LOOK FOR THE INPUT
1517 JMS C8GET /GET REGISTERS
1518 JMS XC8CNTR /CHECK FOR THE CONTROL CHAR
1520 JMP CNTRLS /IF NOT A CNTRL Q R C REASK
1524 /SWITCH OUTPUT FROM ONE OUTPUT DEVICE TO ANOTHER - THE TWO OUTPUTS ARE THE
1525 /CONSOLE AND THE PRINTER WITH DEVICE CDOE 66.
1528 CNTRLL, TAD TTYLPT /GET PRESENT C8SWIT INDICATOR
1530 DCA TTYLPT /STOR NEW C8SWIT
1531 JMS UPAROW /C8PRNT ^ AND CHAR ON NEW DEVICE
1532 JMS C8GET /RESTORE THE REGISTERS
1536 /CONTINUE RUNNING FROM A INQUIRE OR ERROR
1539 CNTRLE, JMS UPAROW /PRINT THE CONTROL CHAR
1540 JMS C8GET /GET THE REGISTERS
1541 JMP I XC8CNT /RETURN TO CALL PLUS ONE
1545 /RETURN TO MONITOR CONTROL C
1546 CNTRLC, DCA TTYLPT /CLEAR THE LPT FLAG TO PRINT ON DISPLAY
1547 JMS UPAROW /C8PRNT A^ AND LETTER IN CHAR
1548 CDF CIF /GO TO 0 FLD
1549 CAF /CLEAR THE WORLD
1550 JMP I (7600 /GO TO DIAGNOSTIC MONITOR
1551 /*********************************************************************
1559 /CHANGE THE SWITCH REGISTER ANYTIME CNTRL D AND RETURN TO
1560 /THE PROGRAM RUNNING.
1564 \f TAD C8SETD /CHECK IF THE RETURN ADDRS IS SAFE
1566 JMP C8DO11 /DO NOT CHANGE THE RETURN ADDRS
1567 TAD XC8CNT /GET THE RETURN ADDRS AND SAVE IT
1568 DCA C8RETD /SAVE THE RETURN HERE
1569 ISZ C8SETD /INDICATE RETURN SAVED DONT DISTROY
1570 C8DO11, JMS XC8PSW /GO CHANGE THE SWITCH REGISTER
1571 DCA C8SETD /CLEAR THE FLAG
1572 JMS C8GET /RESTORE THE AC MQ LINK ETC
1573 JMP I C8RETD /RETURN TO THE PROGRAM
1580 /THIS WILL TYPE A UP ARROW AND THE CHAR IN C8CHAR.
1582 UPAROW, 0 /C8PRNT THE "^" AND THE CHAR C8TYPED IN
1583 TAD (336 /CODE FOR ^
1585 TAD C8CHAR /C8TYPE THE CHAR
1592 /***********************************************************************
1599 RAL /RESTORE THE LINK
1601 TAD ACSAVE /RESTORE THE AC
1602 JMP I C8GET /GET THE REGISTERS
1606 /********************************************************************
1609 /C8INQU ROUTINE WILL PRINT A WAITING
1610 /AND THE PROGRAM IS EXPECTING A CONTROL CHAR INPUT
1611 /IF CONTINUE FROM CONTROL CHAR RETURN IS CALL PLUS ONE
1612 /IF NO CONTROL CHAR ENTERED THEN WAITING IS REPRINTED
1613 /AND PROGRAM WAITS FOR A CONTROL CHAR AGAIN.
1615 / C8INQU = JMS XC8INQ
1617 /EX. JMS XC8INQ /C8 WILL PRINT A WAITINGAND WAIT FOR INPUT
1618 / DO ANYTHING /RETURN IS CALL PLUS ONE AC =0 CONTINUE
1620 /CALLS USED ARE -CHKCLA-XC8PNT-XC8TYI-C8GET-XC8CNTR-
1625 JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT
1626 SKP /ACTIVE CONSOLE PACKAGE
1627 JMP I XC8INQ /NOT CONSOLE LEAVE
1629 WATMES /INQUIR WAITTING
1630 JMS XC8TTYI /GET CHARACTER
1632 JMS XC8CNTR /CHECK IF CONTROL CHARACTER
1633 JMP I XC8INQ /EXIT AND CONTINUE
1635 WATMES, TEXT "WAITING "
1638 /*********************************************************************
1642 /ROUTINE WILL CHECK IF CONSOL IS ACTIVE IF IT IS ACTIVE DISPLAY
1643 /SW QUESTION . IN NOT ACTIVE IT WILL NOT PRINT THE SW QUESTION BUT
1644 /RETURN TO CALL PLUS ONE AC=0.
1645 /C8SWIT WILL SET UP THE PSEUDO SWITCH
1646 /REGISTER WITH THE NEW DATA ENTERED
1648 / C8SWIT = JMS XC8PSW
1650 /EX. JMS XC8PSW /SET UP PSEUDO C8SWIT REGISTER IF
1651 /ON THE CONSOL PACKAGE. RETURN IS CALL PLUS ONE AC = 0
1653 /CALLS USED ARE -CHKCLA-XC8PSW-XC8PNT-XC8OCTA-XC8TYPE-
1657 JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT
1659 JMP I XC8PSW /DEACTIVE CONSOLE PACKAGE
1660 /RETURN WITHOUT ASKING PSEUDO SWITCH
1661 TAD C8SWST /IS THE SOFT FLAG SET FOR SWITCH?
1662 SZA CLA /SKIP IF ONE ENTRY AT ATIME OK
1663 JMP C8BY4 /SECOND ENTRY WITH OUT A EXIT GO TO SW QUESTION
1664 ISZ C8SWST /FIRST ENTRY SET FLAG
1665 C8RDPS, JMS XC8PNT /C8PRNT SR=
1667 TAD 20 /GET CONTENTS OF SW
1668 JMS XC8OCTA /CONVERT IT TO ASCII
1671 ISZ INMODE /SET FLAG FOR CHAR EXECTED
1672 JMS XC8ECHO /LOOK FOR INPUT
1673 JMS TSTCHA /NOT CONTROL TEST IT IS LEGAL
1674 TAD C8CHAR /STORE NEW CHAR IN SW REG
1677 TAD (-3 /GET A MINUS 3
1678 DCA TMPCNT /STORE IN TEMP COUNT
1679 GETCH1, JMS XC8ECHO /GET NEXT CHAR
1680 JMS TSTCHA /CHECK IF CR + GOOD CHAR
1681 TAD 20 /GET C8SWIT REGISTER
1682 RTL CLL /ROTATE IT LEFT 3 PLACES
1684 TAD C8CHAR /GET CHAR + ADD IT TO PREVIOUS CONTENTS
1685 DCA 20 /SAVE NEW CONTENTS
1686 ISZ TMPCNT /BUMP COUNT
1687 JMP GETCH1 /JMP BACK + GET NEXT CHAR
1688 JMP ENDIT /END 4 CHAR C8TYPED IN
1690 CIA /CMPL CHAR IN AC
1691 TAD (215 /TEST IF IT IS A CARRIAGE RETURN
1692 SNA CLA /SKIP IN NOT CR.
1693 JMP ENDIT /WAS CARRIAGE RETURN
1694 TAD C8CHAR /NOT CR. GET CHAR
1695 TAD (-260 /CHECK IF IT IS IN RANGE
1696 SPA CLA /IF NOT POSITIVE C8ERR CHAR SMALLER THEN 260
1697 JMP ERR1 /C8ERR - CHAR TOO SMALL
1698 TAD C8CHAR /GET CHAR
1699 TAD (-270 /GET A -270 + CHECK IF IT IS LARGER THEN 7
1700 SMA CLA /SKIP IF LESS THEN 7
1701 JMP ERR1 /C8ERR ON CHAR NOT IN RANGE
1702 TAD C8CHAR /GET CHAR
1703 AND (7 /MASK FOR RIGHT BYTE
1704 DCA C8CHAR /STORE IN CHAR
1707 ERR1, TAD (277 /C8PRNT
1710 JMP C8RDPS /EXIT + ASK AGAIN
1711 ENDIT, JMS XC8CRLF /DO A CR LF
1712 DCA C8SWST /CLEAR THE PSW ENTRY FLAG
1713 JMP I XC8PSW /EXIT ROUTINE
1724 /OCTAL TO ASCII CONVERSION
1725 /THIS ROUTINE WILL TAKE THE OCTAL NUMBER IN THE AC AND CONVERT IT TO ASCII
1726 /THE RESULT WILL BE PRINTED ON THE CONSOL TERMINAL
1727 / C8OCTA= JMS XC8OCT
1729 /EX. JMS XC8OCTA /AC CONTAINS NUMBER TO BE CHANGE
1730 / RETURN IS TO CALL PLUS ONE AC=0
1732 /CALLS USED ARE -XC8TYPE-
1737 RTL /POSITION THE FIRST CHAR FOR PRINTING
1738 DCA C8TMP1 /SAVE CORRECT POSITIONED WORD HERE
1740 DCA C8CKP /STORE COUNTER IN HERE
1741 C8DO4, TAD C8TMP1 /GET FIRST NUMBER
1743 TAD (260 /ADD THE PRINT CONSTANT
1744 JMS XC8TYPE /TYPE THE NUMBER
1747 RAL /PUT NEXT NUMBER IN POSITION
1748 DCA C8TMP1 /STORE IT
1749 ISZ C8CKP /DONE YET WITH FOUR NUMBERS
1750 JMP C8DO4 /NOT YET DO MORE
1751 JMP I XC8OCT /DONE WITH FOUR
1756 /*********************************************************************
1759 /C8TYPE CR AND LF WITH FILLERS FOLLOWING EACH LF AND CR
1761 / C8CRLF= JMS XC8CRL
1763 /EX. JMS XC8CRLF /C8PRNT A CR AND LF WITH FILL
1764 / /RETURN TO CALL PLUS ONE AC =0
1765 /CALLS USED ARE -XC8TYPE-
1770 TAD (215 /GET CODE FOR CR
1774 DCA FILCNT /STORE FILLER IN HERE
1775 TAD (212 /GET CODE FOR LF
1777 ISZ FILCNT /CHECK ON FILLER CHAR
1778 JMP C8DO2 /TYPE A NON PRINTING CHAR
1780 FILLER, 0004 /FILLER SET FOR 4 CHAR
1781 FILCNT, 0 /COUNTER FOR FILL
1785 //*************************************************************
1787 /THIS ROUTINE WILL CHECK IF A CHARACTER WAS ENTERED FROM THE
1788 /TERMINAL. IFTHE FLAG IS SET AND THE CONSOLE PACKAGE IS
1789 /ACTIVE A CHECK IS MADE TO DETERMIND IF IT IS A CONTROL CHAR.
1790 /IF IT WAS A CONTROL CHAR THEN ITS CONTROL FUNCTION IS PERFORMED.
1791 /IF NOT A CONTROL CHARACTER OR A CONTROL E-D-L-O- IT WILL DO
1792 /THE CONTROL FUNCTION AND RETURN TO CALL PLUS 2.
1793 /A NON CONTROL CHARACTER WILL BE PRINTEDAND A "?" IT WILL RETURN TO
1795 /IF NO FLAG IS SET OR THE CONSOL IS NOT ACTIVE THE RETURN IS TO
1799 / C8CKPA= JMS XC8CKP
1802 /EX. JMS XC8CKPA /CALL TO CHECK IF CONTROL CHAR SET
1803 / ANYTHING(SKIP) /RETURN IF NOT FLAG OR NOT CONSOLE ACTIVE
1804 / ANYTHING(JMP EXIT SKIP CHAIN) /RETURN IF NOT CONTROL OR CONTINUE CONTROL
1807 /CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET-
1811 DCA ACSAVE /SAVE THE AC
1813 DCA FLSAVE /SAVE THE FLAGS
1815 DCA MQSAVE /SACE THE MQ
1816 KSF /CHECK THE KEYBOARD FLAG
1817 JMP C8BY3 /EXIT TO CALL PLUS 1
1818 JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT
1819 SKP /ACTIVE CONSOLE PACKAGE
1820 JMP C8BY3 /EXIT TO CALL PLUS 1
1821 JMS XC8TTYI /GET THE CHAR
1822 JMS C8GET /GET THE FLAGS
1823 JMS XC8CNTR /CHECK IF CONTROL CHAR.
1824 NOP /RETURN IF A CONTINUE CHAR.
1825 ISZ XC8CKP /BUMP RETURN FOR CALL PLUS 2
1826 C8BY3, JMS C8GET /GET REGISTERS
1827 JMP I XC8CKP /SAY GOOD BY
1829 //*********************************************************************
1832 /THIS ROUTINE WILL LOOK FOR A CHAR FROM THE KEYBOARD. STORE IT IN LOCATION CHAR
1833 /CHECK IF IT WAS A CONTROL CHARACTER - SET INMODE - PRINT CHARACTER
1835 / C8ECHO = JMS XC8ECH
1836 /EX. JMS XC8ECHO /LOOK FOR CONSOL CHAR C8PRNT IT
1837 /RETURN CALL PLUS ONE AC = CHAR C8TYPED IN
1839 /CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET-XC8ECH-XC8TTYPE
1843 JMS XC8TTYI /WAIT FOR CHAR FROM KEYBOARD
1844 JMS C8GET /RESTORE THE REGISTERS
1845 ISZ INMODE /SET INMODE IDENTIFING THIS AS A EXPECTED CHAR
1846 JMS XC8CNTR /GO CHECK IF IT IS A CONTROL CHAR
1847 JMP I XC8ECH /WAS A CONTROL CHAR - CONTINUE RUNNING
1848 JMS XC8TYPE /NOT A CONTROL CHAR C8PRNT IT
1849 DCA INMODE /CLEAR FLAG THAT CHAR EXPECTED
1850 TAD C8CHAR /GET CHAR IN AC
1855 /*********************************************************************
1858 /THIS ROUTINE WILL C8PRNT ON THE CONSOLE OR THE LPT WITH DEVICE CODE 66.
1860 / C8TYPE= JMS XC8TYP
1862 /EX. JMS XC8TYPE /C8PRNT THE CHAR IN THE AC.
1863 / /RETURN CALL PLUS ONE AC =0000
1864 /DO NOT CLEAR THE LINK IN THIS ROUTINE NEEDED BYC8OCT
1866 /CALLS USED ARE -C8HANG-XC8CNTR-XC8PNT-XC8CRLF-XC8INQU-
1870 DCA PNTBUF /STORE CHAR
1871 TAD TTYLPT /CHECK O=TTY 7777=LPT
1873 JMP XDOLPT /DO OUT PUT ON LPT
1880 XDOLPT, TAD PNTBUF /GET CHAR
1881 PSTB PCLF /C8PRNT IT
1882 JMS C8HANG /CHECK KEYBOARD IF HUNG
1883 PCLF /CLEAR THE FLAG
1884 C8BY5, 7600 /CLEAR THE AC
1892 TAD C8BY5 /GET CONSTANT 7600
1893 DCA PNTBUF /PNTBUF IS NOW A COUNTER
1894 PSKF /SKIP ON PRINTER DONE
1896 JMP I C8HANG /SAW FLAG DONE
1897 ISZ C8CONT /FIRST COUNTER FAST ONE
1898 JMP .-4 /CHECK IF FLAG SET YET
1899 ISZ PNTBUF /MADE 4096 COUNTS ON FAST COUNTER
1900 JMP .-3 /KEEP IT UP FOR 5 SEC
1901 TAD XC8CNTR /GET THE RETURN ADDRESS IN CONTROL
1902 DCA C8HANG /SAVE IT IN HANG
1903 DCA TTYLPT /ALLOW PRINTING ON TTY
1907 JMS XC8INQU /PRINT WAITING
1908 JMP I C8HANG /CONTINUE TO SAVE ADDRESS
1909 C8CONT, 0 /COUNTER FOR TIMER
1910 MESHANG,TEXT "LPT ERROR"
1913 /*********************************************************************
1914 /*******************************************************************
1916 /THIS ROUTINE WILL CHECK LOCATION 22 THE HARD WARE CONFIG WORD.
1917 /TO SEE IF THE CONSOLE BIT 3 )400) IS SET IF SET THEN RETURN
1918 /TO CALL PLUS TWO FO A ACTIVE CONSOLR PACKAGE AC=0
1919 /IF NOT SET THEN TO CALL PLUS ONE FOR A DEACTIVE CONSOLE PACKAGE.
1924 TAD 22 /GET THE COTENTA OF LOCATION 22
1925 AND (400 /MASK FOR BIT 3 (400
1927 ISZ CHKCLA /ACTIVE CONSOLE PACKAGE RETURN
1928 /CALL PLUS ONE (1) FOR ACTIVE
1929 JMP I CHKCLA /DEACTIVE CONSOLE PACKAGE RETURN
1933 /THIS ROUTINE WILL DETERMINE WHAT TO DO WHEN A C8ERR IS ENCOUNTERED
1934 /WILL CHECK IF CLASSIC SYSTEM, WILL CHECK C8SWIT REGISTERS.
1936 /EX. JMS XC8ERR /GO TO C8ERR CALL IF NOT CONSOL
1937 / /RETURN IS CALL PLUS ONE AC =0000
1939 /CALLS USED ARE -CHKCLA-XC8CRLF-XC8SW-XC8INQU-XC8PNT-XC8OCTA-
1946 DCA FLSAVE /SAVE THE FLAGS
1948 DCA MQSAVE /SAVE THE MQ
1949 CLA CLL CMA /SUBTRACT A 1 FOR TRUE LOCATION
1950 TAD XC8ERR /GET RETTURN LOCATION
1951 DCA PCSAVE /SAVE ADD OF C8ERR CALL
1952 JMS CHKCLA /CHECK LOC.22 BIT 3 CONSOL BIT
1953 SKP /ACTIVE CONSOLE PACKAGE
1954 JMP NTCLAS /NOT CLASSIC SYSTEM
1955 JMS C8GET /GET THE REGISTERS.
1956 JMS XC8SW /CHECK SWITCH REG FOR BIT THAT INDICATES
1958 SETUP1, AND (0000 /MASK FOR BIT FOR NO ERROR PRINTING
1959 /IF THIS ERROR MESSAGE IS TO ALWAYS
1960 /BE PRINTED LEAVE AND VALUE AT 0000
1961 SZA CLA /SKIP IF BIT IS 0 PRINT ERROR MESSAGE
1962 JMP C8DO10 /DO NOT PRINT
1965 ERRMES /PRINT THE ERROR MESSAGE
1967 MESPC /PRINT THE PC STSTEMENT
1969 JMS XC8OCTA /CONVERT 4 DIGIT PC TO ASCII
1971 MESAC /PRINT THE AC MESS
1983 C8DO10, JMS C8GET /GET THE REGISTERS.
1984 JMS XC8SW /CHECK SWITCH REGISTER
1985 SKP CLA /SKIP IF BIT 0 SET
1987 JMS XC8INQ /GO TO THE INQUIRE ROUTINE
1989 NTCLAS, JMS C8GET /GET THE REGISTERS.
1990 JMS XC8SW /CHECK PSEUDO SWITCH REGISTER
1991 /CHECK THE C8SWIT REGISTER
1992 SKP CLA /SKIP IF HALT
1993 JMP I XC8ERR /NO HALT CONTINUE
1994 TAD (7402 /CODE FOR HLT
1995 DCA I PCSAVE /PUT IT IN CALL LOC.
1997 JMP I PCSAVE /EXIT TO CALL AND HALT
1998 C8BY2, JMS C8GET /GET THE REGISTERS
2000 ERRMES, TEXT "DHRKDD FAILED "