software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape5 / RKLFMT.PA
CommitLineData
7af5ad59
PH
1/RK8E/RK8L DISK FORMATTER
2/
3/
4/
5/
6/
7/
8/
9/
10/
11/COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION
12/
13/
14/
15/
16/
17/
18/
19/
20/
21/
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.
26/
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.
31/
32/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34/DIGITAL.
35/
36/
37/
38/
39/
40/
41/
42/
43/
44/
45\f/RK8E/RK8L DISK FORMATTER PROGRAM: MD-08-DHRKD-D
46/MAINDEC-08-DHRKD-D-D
47/
48/MODIFIED FOR OS8V3D BY ED STEINBERGER
49/
50DLSC=6740 /LOAD SECTOR COUNTER
51DSKP=6741 /SKIP ON TRANSFER DONE OR ERROR
52DCLR=6742 /CLEAR DISK CONTROL LOGIC
53DLAG=6743 /LOAD ADDRESS AND GO
54DLCA=6744 /LOAD CURRENT ADDRESS
55DRST=6745 /READ STATUS REGISTER
56DLDC=6746 /LOAD COMMAND REGISTER
57DMAN=6747 /LOAD MAINTENANCE
58/
59LDSC=JMS I XXLDSC
60IOTCHN=JMS I XCHANG
61LODTRK=JMS I XWRTRK
62REDDSK=JMS I XRDTRK
63RECAL=JMS I XRESTR
64RECEIV=JMS I XWAIT
65KILBUF=JMS I XKLBUF
66ERROR=JMS I XERRO
67RDSTAT=JMS I XRDST
68LDADD=JMS I XLDAD
69DSKSKP=JMS I XSDKP
70LDCMD=JMS I XLDCM
71LDCUR=JMS I XLDCA
72CLRALL=JMS I XCLDR
73PRNTER=JMS I XPRN
74OCTEL=JMS I XFROCT
75TWOCT=JMS I XTOCT
76TYPE=JMS I XPRINT
77CRLF=JMS I XCRLF
78APT8A=JMS I XAPT8
79TIME=JMS I XTIME
80TICK=JMS I XTICK
81KAERRO=JMS I XAERRO
82/
83*0
84/
85 304 /REV D
86 5001
87 0002
88 0003
89/
90*10
91/
92AUTO10, 0
93/
94AUTO11, 0
95/
96*20
97/
98 0000 /PSEUDO SWITCH REGISTER
99 0 /CONTROL WORD 1 - USE PSUEDO SWITCHES **ES**
100 400 /CONTROL WORD 2 - SET CONSOLE PACKAGE ACTIVE **ES**
101 0000 /RESERVED
102XAPT8, APT8
103XTIME, KTIME
104XAERRO, AERRO
105XTICK, KTICK
106XCHANG, CHANG
107XWRTRK, WRTTRK
108XRDTRK, REDTRK
109XRESTR, RESTOR
110XWAIT, WAIT
111XKLBUF, KLBUF
112XPRINT, PRINT
113XERRO, ERRO
114XRDST, RDST
115XSDKP, SDKP
116XLDCM, LDCM
117XLDCA, LDCA
118XLDAD, LDAD
119XCLDR, CLDR
120XXLDSC, XLDSC
121XPRN, PRN
122XFROCT, FROCT
123XTOCT, TOCT
124XCRLF, UPONE
125XLOTRK, LOTRK
126XHITRK, HITRK
127BGNBUF, WRKBUF
128AMOUNT, 0
129SWITCH, 0
130K0003, 0003
131K4, 4
132K0007, 0007
133K0040, 0040
134M313, -313
135K0277, 0277
136K0200, 0200
137K0260, 0260
138K4000, 4000
139K7735, 7735
140K7760, 7760
141K0400, 400
142K0037, 0037
143KCDF, CDF
144M4, -4
145M10, -10
146DRIVNO, 0
147CHAR, 0
148LOWAD, 0
149HIGHAD, 0
150TRKCNT, 0
151DSKCNT, 0
152SBCNT1, 0
153STCNT1, 0
154STCNT2, 0
155STCNT3, 0
156TCNTR1, 0
157TCNTR2, 0
158TCNTR3, 0
159TCNTR4, 0
160TCNTR5, 0
161/
162GDREG2, 0
163EXBIT, 0
164CMREG, 0
165STREG, 0
166DAREG, 0
167CAREG, 0
168ADREG, 0
169DTREG, 0
170BGNTST, FRMDSK
171HOMEMA, 0
172DATCNT, 0
173CLKCNT, -2
174/
175XMOVE, MOVE
176LOC8ED, 0
177XEND, ENDTST
178SOFT, 0
179ADPOT1, DSK0A
180DSK0A, 0
181DSK1A, 0
182DSK2A, 0
183DSK3A, 0
184DSK4A, 0
185DSK5A, 0
186DSK6A, 0
187DSK7A, 0
188ADPOT2, DSK0B
189DSK0B, 0
190DSK1B, 0
191DSK2B, 0
192DSK3B, 0
193DSK4B, 0
194DSK5B, 0
195DSK6B, 0
196DSK7B, 0
197PCOUNT, 0 /USED ONLY IF ON APT
198/
199*200
200/
201BGN, RIF
202 DCA HOMEMA
203 TAD HOMEMA
204 TAD KCDF /MAKE HOMEDF
205 DCA .+1
206 HLT /MAKE DF=IF
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
211 JMS XC8PSW /GET SR=.
212 *.-1 /**ES**
213 NOP /**ES**
214 IOTCHN /CHANGE DEVICE TO SWR3-8
215 CRLF
216 CRLF
217 PRNTER /PRINT "RK8E/RK8L DISK FORMATTER PROGRAM"
218 MES1 /MESSAGE 1 POINTER
219 CRLF
220 PRNTER /PRINT "FOR ALL QUESTIONS"
221 MES2 /MESSAGE POINTER 2
222ALLAGN, TAD M10
223 DCA STCNT1 /COUNTER FOR AMOUNT OF DISKS
224 DCA LOC8ED
225 DCA STCNT2
226SAMAGN, CRLF
227 PRNTER /PRINT "FORMAT DISK ? "
228 MES3 /MESSAGE POINTER 3
229 TAD STCNT2
230 TAD K0260
231 TYPE /TYPE DISK NUMBER
232QUES1, TAD K0277
233 TYPE /TYPE ?
234 TAD ADPOT1
235 TAD STCNT2
236 DCA STCNT3
237 RECEIV /WAIT FOR CHARACTER
238 JMP NOTDSK /NO NOT THIS DISK
239 JMP QUES1 /NEITHER YES OR NO
240WASDSK, ISZ LOC8ED
241 CLA CLL CMA
242NOTDSK, DCA I STCNT3 /YES, WAS CLEAR DISK POINTER
243 ISZ STCNT2 /UPDATE POINTER
244 ISZ STCNT1 /COUNT DISKS
245 JMP SAMAGN /ASK ABOUT NEXT
246/
247DONE, CRLF
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 ?
253 TAD LOC8ED
254 CIA
255 SNA /ANY DISKS
256 JMP BGN /NO, OPERATOR ERROR
257 DCA LOC8ED /YES, AMOUNT LOCATED
258/
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.
263/
264FRMDSK, JMS I XMOVE /MOVE DISK POINTERS
265 TAD LOC8ED
266 DCA AMOUNT
267 TAD AMOUNT
268 DCA DSKCNT /COUNTER FOR AMOUNT OF DISKS
269 DCA TCNTR4
270 TAD ADPOT2
271 DCA TCNTR5 /A FEW COUNTERS
272 TAD I TCNTR5
273 SZA CLA /FORMAT THIS DISK
274 JMP FORMAT /YES, GO
275NEXFRM, ISZ TCNTR5 /NO, TRY NEXT
276 ISZ TCNTR4
277 JMP .-5
278 HLT /WHAT HAPPENED????
279/
280FORMAT, TAD TCNTR4
281 AND K0003 /MASK OUT
282 CLL RAL /MAKE DISK NUMBER
283 DCA DRIVNO
284 TAD TCNTR4
285 AND K4
286 SZA CLA
287 TAD K0200
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
293 TAD M313
294 DCA TRKCNT /COUNTER FOR AMOUNT OF TRACKS
295/
296/
297WRTDSK, TICK /TIMING FOR APT IF NEEDED.
298 -4 /OTHERWISE BOTH ARE SKIPPED
299 LODTRK /FORMAT A TRACK
300 JMP RENEX1 /TO NEXT DISK
301 CLA CLL
302 TAD LOWAD
303 TAD K0040
304 DCA LOWAD /UPDATE TO NEXT TRACK
305 SZL CLA /SET EXTENDED BIT
306 ISZ HIGHAD /YES
307 ISZ TRKCNT /UPDATE TRACK COUNTER
308 JMP WRTDSK /DO NEXT TRACK
309RENEX1, ISZ DSKCNT /UPDATE DISK COUNTER
310\f JMP NEXFRM /DO NEXT DISK
311/
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
315/NOT CHECKED.
316/
317CHKDSK, TAD AMOUNT
318 DCA DSKCNT /AMOUNT OF DISKS
319 DCA TCNTR4
320 TAD ADPOT2
321 DCA TCNTR5
322 TAD I TCNTR5 /SOFTWARE INFORMATION
323 SZA CLA /CHECK THIS DISK
324 JMP CHKDAT /CHECK THIS ONE
325NEXCHK, ISZ TCNTR5 /UPDATE FOR NEXT DISK
326 ISZ TCNTR4
327 JMP .-5
328 HLT /WHAT HAPPENED?????
329/
330CHKDAT, TAD TCNTR4
331 AND K0003 /MASK OUT
332 CLL RAL /MAKE DRIVE NUMBER
333 DCA DRIVNO
334 TAD TCNTR4
335 AND K4
336 SZA CLA
337 TAD K0200
338 DCA EXBIT /SET EXTENDED DRIVE BIT
339 RECAL /RECALIBRATE
340 JMP RENEX2 /TRY NEXT DRIVE
341 DCA LOWAD
342 DCA HIGHAD /SETUP STARTING DISK ADDRESS
343 TAD M313
344 DCA TRKCNT /AMOUNT OF TRACKS TO DO
345 JMP CHECK
346/
347PAGE
348/
349CHECK, 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
353 CLA CLL
354 TAD LOWAD
355 TAD K0040
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
361RENEX2, ISZ DSKCNT /UPDATE DISK COUNTER
362 JMP NEXCHK /CHECK NEXT
363/
364/
365 TAD 22
366 AND K4000 /TEST FOR APT
367 SNA CLA /ARE WE?
368 JMP ENDTST /NO. NORMAL RUN
369 ISZ PCOUNT /INCREMENT PASS COUNT
370 JMP FRMDSK /LOOP PROGRAM
371ENDTST, CRLF
372 PRNTER /PRINT "PASS COMPLETE"
373 TEXEND
374 CRLF
375 PRNTER /PRINT "TRY SAME SEQUENCE"
376 MES5
377 RECEIV /WAIT FOR INPUT FROM OPERATOR
378 JMP ALLAGN /NO, ASK AGAIN
379 JMP .-5
380 JMP FRMDSK /TRY SAME SEQUENCE
381/
382/
383/SUBROUTINE FOR "ERRORS," SCOPE LOOPS, AND
384/ERROR TYPEOUTS.
385/
386ERRO, 0
387 CLA CLL IAC
388 TAD ERRO /GET PC STORED
389 DCA RETRN1 /STORE FOR RETURN
390 KAERRO /NOTIFY APT OF ERROR IS NEED BE
391 CRLF
392 CRLF
393 TAD I ERRO /GET TEXT POINTER
394 AND K0007 /MASK 9-11
395 TAD HEDTAD /MAKE ERROR HEADER TAD
396 DCA .+1
397 HLT /MODIFIED HEADER TAD
398 DCA .+2
399 PRNTER /MODIFIED HEADER POINTER
400 HLT
401 CRLF
402 PRNTER /PRINT PC:
403 TEXPC
404 TAD ERRO /GET PC POINTER
405 OCTEL /PRINT PC STORED
406 TAD I ERRO /GET TEXT POINTER
407 CLL RAL
408 SNL
409 JMP NTGD /NOT GD: REGISTER
410 DCA ERRO
411 PRNTER /PRINT GD:
412 TEXGD
413 TAD GDREG2
414 OCTEL /PRINT FOUR OCTAL
415 SKP CLA
416NTGD, DCA ERRO
417 PRNTER
418 TEXEX
419 TAD EXBIT
420 SZA CLA
421 IAC
422 OCTEL
423 TAD XTEXT
424 DCA PCNTR2
425 TAD XREG
426 DCA AUTO10
427 TAD K7771
428 DCA PCNTR1 /COUNTER FOR # OF HEADS
429 CLA CLL CMA RAL
430 DCA PCNTR3
431STRAUT, TAD ERRO /GET TEXT POINTER
432 SMA
433 JMP NOTEX /NOT THIS ONE
434 CLL RAL
435 DCA ERRO
436 TAD PCNTR2 /GET TEXT MESSAGE POINTER
437 ISZ PCNTR2
438 ISZ PCNTR2
439 DCA .+2 /STORE FOR PRNTER
440 PRNTER /PRINT XX:
441 HLT /MODIFIED TEXT POINTER
442 TAD I AUTO10
443 OCTEL /PRINT FOUR OCTAL
444 ISZ PCNTR3
445 SKP CLA
446 CRLF
447AGAIN, ISZ PCNTR1
448 JMP STRAUT /CHECK FOR NEXT XX:
449 JMP I RETRN1 /RETURN TO QUESTION
450NOTEX, CLL RAL
451 DCA ERRO
452 ISZ PCNTR2
453 ISZ PCNTR2
454 ISZ AUTO10
455 JMP AGAIN
456/
457RETRN1, 0
458XTEXT, TEXCM
459XREG, EXBIT
460PCNTR1, 0
461PCNTR2, 0
462PCNTR3, 0
463HEDTAD, TAD HEDLST
464HEDLST, ERTX1
465 ERTX2
466 ERTX3
467 ERTX4
468K7771, 7771
469/
470PAGE
471/
472/ROUTINE TO FORMAT CYLINDER
473/MAKE FIRST TWO WORDS OF EVERY SECTOR
474/EQUAL TO DISK ADDRESS.
475/
476WRTTRK, 0
477 CLA CLL CML RAR
478 DCA GDREG2 /SETUP COMPARE REGISTER
479 KILBUF /CLEAR BUFFER
480 TAD K7735 /AMOUNT OF SECTORS TO DO
481 DCA TCNTR1 /SETUP COUNTER
482 DCA TCNTR2 /STARTING WITH 0
483 TAD K7760 /STOPPER
484 DCA TCNTR3 /SECTOR COUNTER POINTER STOP
485LODR1, TAD TCNTR2
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
490 TAD HIGHAD
491 TAD DRIVNO /ADD IN DRIVE NUMBER
492 DCA I XHITRK /SETUP TRACK WORD IN BUFFER
493 TAD I XHITRK
494 AND K7577
495 TAD HOMEMA /CURRENT FIELD
496 TAD K5000 /FUNCTION WRITE ALL
497 LDCMD /LOAD COMMAND
498 TAD EXBIT
499 LDSC /LOAD EXTENDED DRIVE BIT
500 CLA /CLEAR EXTENDED DRIVE BIT
501 TAD BGNBUF
502 LDCUR /LOAD CURRENT ADDRESS
503 TAD I XLOTRK
504 LDADD /LOAD TRACK AND GO
505 DSKSKP /SKIP ON FLAG
506 JMP .-1 /WAIT FOR FLAG
507 RDSTAT /READ STATUS
508 TAD K4000
509 SZA CLA /WAS STATUS 0?
510 JMP LODER /ERROR, STATUS ON WRITE ALL
511 ISZ TCNTR2
512 ISZ TCNTR3 /COUNT FIRST REVOLUTION
513 SKP CLA /STILL IN FIRST REV.
514 DCA TCNTR2 /SETUP FOR SECTOR "1"
515 ISZ TCNTR2
516 ISZ TCNTR1 /UPDATE SECTOR COUNTER
517\f JMP LODR1 /TRY NEXT SECTOR
518 ISZ WRTTRK
519 JMP I WRTTRK /THIS CYLINDER DONE
520LODER, ERROR /ERROR, STATUS
521 3602 /TEXT POINTER
522/
523 RECAL /CLEAR CONTROL AND DRIVE
524 JMP I WRTTRK /TO NEXT DISK
525 CRLF
526 PRNTER /PRINT "TRY SAME AGAIN"
527 ERMES1
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
532K5000, 5000
533K7577, 7577
534/
535/
536/SUBROUTINE TO READ STATUS REGISTER
537/
538RDST, 0
539IOT5, DRST /READ STATUS IOT
540 SKP
541ERHLT5, JMS XC8ERR /SKIP TRAP ERROR.
542 DCA STREG /SAVE RESULTS
543 TAD STREG
544 JMP I RDST /EXIT
545/
546/SUBROUTINE TO LOAD CURRENT ADDRESS REGISTER
547/
548LDCA, 0
549 DCA ADREG /SAVE IN ADDRESS
550 TAD ADREG
551 DCA CAREG /SETUP INITIAL CURRENT ADDRESS
552 TAD ADREG
553IOT4, DLCA /LOAD CURRENT ADDRESS IOT
554 JMP I LDCA /EXIT
555ERHLT4, JMS XC8ERR /SKIP TRAP ERROR.
556 JMP .-1
557/
558/
559/SUBROUTINE TO LOAD TRACK ADDRESS REGISTER
560/
561LDAD, 0
562 DCA DAREG /SAVE OUTBOUND DATA
563 TAD DAREG
564IOT3, DLAG /LOAD DISK ADDRESS REGISTER
565 JMP I LDAD /EXIT
566ERHLT3, JMS XC8ERR /SKIP TRAP ERROR.
567 JMP .-1
568/
569/
570/SUBROUTINE TO LOAD COMMAND REGISTER
571/
572LDCM, 0
573 DCA CMREG /SAVE OUTBOUND DATA
574 DCA INMODE
575 JMS XC8CKP /CHECK FOR CONTROL CHARACTERS.
576 CLA
577 CLA
578 TAD CMREG
579IOT6, DLDC /LOAD COMMAND REGISTER
580 JMP I LDCM /EXIT
581ERHLT6, JMS XC8ERR /SKIP TRAP ERROR.
582 JMP .-1
583/
584/
585/SUBROUTINE ISSUE "DLSC"
586XLDSC, 0
587IOT0, DLSC
588 JMP I XLDSC
589ERHLT0, JMS XC8ERR
590 JMP .-1
591
592/SUBROUTINE TO ISSUE "DSKP" DISK SKIP IOT
593/
594SDKP, 0
595IOT1, DSKP /DISK SKIP IOT
596 SKP /DID NOT SKIP
597 ISZ SDKP
598 JMP I SDKP /EXIT
599/
600/SUBROUTINE TO ISSUE "DCLR" CLEAR IOT
601/
602CLDR, 0
603IOT2, DCLR /DCLR "CLEAR IOT"
604 JMP I CLDR /EXIT
605ERHLT2, JMS XC8ERR /SKIP TRAP ERROR.
606 JMP .-1
607/
608/ROUTINE TO ZERO WORK BUFFER
609/
610KLBUF, 0
611 CLA CLL CMA
612 TAD BGNBUF /START OF BUFFER -1
613 DCA AUTO10 /SETUP AUTO INDEX
614 TAD K7400
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
620K7400, 7400
621/
622PAGE
623/
624/
625/ROUTINE TO READ AND CHECK A CYLINDER
626/
627REDTRK, 0
628 TAD K7735
629 DCA TCNTR1 /AMOUNT OF SECTORS TO DO
630 DCA TCNTR2 /STARTING WITH 0
631 TAD K7760
632 DCA TCNTR3
633 KILBUF /CLEAR BUFFER
634CHKR1, CLA CLL CMA
635 DCA SOFT /SETUP SOFT ERROR FLAG
636 TAD BGNBUF
637 LDCUR /LOAD CURRENT ADDRESS
638 TAD HIGHAD /EXTENDED CYLINDER BIT
639 TAD DRIVNO /CURRENT DRIVE
640 TAD HOMEMA /CURRENT FIELD
641 LDCMD /LOAD COMMAND
642 TAD EXBIT /LOAD EXTENDED DRIVE BIT
643 LDSC
644 CLA /CLEAR EXTENDED DRIVE BIT
645 TAD TCNTR2
646 AND K0037 /MASK SECTOR BITS OFF
647 TAD LOWAD /ADD IN OTHER DISK ADDRESS
648 LDADD /LOAD AND GO
649 DSKSKP /DISK SKIP IOT
650 JMP .-1 /WAIT FOR FLAG
651 RDSTAT /READ STATUS
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
656 AND K0010
657 SNA CLA /WAS IT A CRC
658 JMP STAER /NO, JUST A HARD ERROR
659 DCA SOFT /CLEAR SOFT ERROR FLAG
660STAOK, TAD CMREG /GET LAST COMMAND
661 AND K0007
662 TAD EXBIT /ADD EXTENDED DRIVE BIT
663 CIA
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
669 TAD CMREG
670 AND K0007
671 DCA GDREG2 /SETUP GOOD FOR PRINTER
672 JMP DATER /NO, DATA ERROR
673FRSTOK, TAD I XLOTRK /GET WORD READ
674 CIA
675 TAD DAREG /COMPARE TO GOOD
676 SNA CLA /SKIP IF ERROR
677 JMP DATOK /WORD O.K.
678 ISZ ADREG /SETUP ERROR PRINTER
679 TAD DAREG
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
684DATOK, TAD SOFT /GET SOFT ERROR FLAG
685 SNA CLA /WAS IT CLEAR
686 JMP STAER /YES, STATUS ERROR
687 TAD TCNTR2
688 TAD K0003 /ADVANCE 3 SECTORS
689 DCA TCNTR2
690 ISZ TCNTR3
691 JMP CHKR1 /MORE TO FORMAT
692 ISZ REDTRK
693 JMP I REDTRK /EXIT, O.K.
694DATER, TAD K7741
695 DCA TCHKT /SETUP TEXT POINTER
696 JMP CHKER /ERROR
697STAER, TAD K3600
698 DCA TCHKT /SETUP TEXT POINTER
699 CLA CLL CML RAR
700 DCA GDREG2 /SETUP GOOD STATUS PRINTER
701CHKER, ERROR /ERROR, READ DATA
702TCHKT, 0 /MODIFIED TEXT POINTER
703 RECAL /CLEAR CONTROL AND DRIVE
704 JMP I REDTRK /TO NEXT DISK
705 CRLF
706 PRNTER /PRINT "TRY SAME AGAIN"
707 ERMES3
708 RECEIV
709 JMP DATER-2 /CHECK NEXT
710 JMP .-5 /RE-PRINT
711 JMP REDTRK+1 /TRY SAME AGAIN
712/
713/THIS ROUTINE WILL TEST FOR APT AND NOP CONSOLE
714/PACKAGE IF NEED BE
715/
716APT8, 0
717 TAD 22
718 SMA CLA
719 JMP I APT8
720 TAD 22
721 AND K7377 /ON APT. NOP CONSOLE PACKAGE
722\f DCA 22
723 TAD 22
724 AND K0007 /ISOLATE DRIVE NUMBER OR
725 /NUMBER OF DRIVES TO BE DONE
726 DCA STCNT1
727 TAD 22
728 AND K0100
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
733 DCA STCNT1
734 CLL CLA CMA /-1
735 DCA I STCNT1
736 CLL CLA CMA /ONE DISK TO DO
737 DCA LOC8ED
738 JMP I BGNTST
739MULDSK, TAD STCNT1 /DRIVE TO BE DONE
740 CMA
741 DCA STCNT1
742 TAD ADPOT1 /GET DISK POINTER
743 TAD STCNT2 /ESTABLISH DRIVE TO BE DONE
744 DCA STCNT3
745 ISZ LOC8ED
746 CLL CLA CMA
747 DCA I STCNT3 /DO THIS DRIVE
748 ISZ STCNT2
749 ISZ STCNT1
750 JMP MULDSK+3 /MORE TO DO
751 TAD LOC8ED
752 CIA
753 DCA LOC8ED /NUMBER TO BE DONE
754 JMP I BGNTST
755K7377, 7377
756PAGE
757/
758/SUBROUTINE TO PRINT TWO OCTAL
759/
760TOCT, 0
761 DCA SBCNT1 /SAVE AC
762 TAD SBCNT1
763 RAR
764 RTR
765 AND K0007
766 TAD K0260
767 TYPE /PRINT FIRST BYTE
768 TAD SBCNT1
769 AND K0007
770 TAD K0260
771 TYPE /PRINT SECOND BIT
772 JMP I TOCT /EXIT
773/
774/
775/
776/ROUTINE TO DO CRLF
777/
778UPONE, 0
779 CLA CLL
780 TAD K0215
781 TYPE
782 TAD K0212
783 TYPE
784 TYPE /TYPE ONE NULL
785 JMP I UPONE
786/
787K0215, 0215
788K0212, 0212
789/
790/ROUTINE TO PRINT FOUR OCTAL
791/
792FROCT, 0
793 RTL
794 RTL
795 DCA UPONE
796 TAD M4
797 DCA TOCT
798 TAD UPONE
799 AND K0007
800 TAD K0260
801 TYPE
802 TAD UPONE
803 RTL
804 RAL
805 DCA UPONE
806 ISZ TOCT
807 JMP .-11
808 TAD K0240
809 TYPE
810 JMP I FROCT
811/
812/SUBROUTINE TO PRINT TEXT
813/
814PRN, 0
815 CLA CLL
816 TAD I PRN /GET POINTER
817 ISZ PRN
818 DCA FROCT
819 TAD I FROCT
820 AND K7700
821 SNA
822 JMP EXIT
823 SMA
824 CML
825 IAC
826 RTR
827 RTR
828 RTR
829 TYPE
830 TAD I FROCT
831 AND K0077
832 SNA
833 JMP EXIT
834 TAD K3740
835 SMA
836 TAD K4100
837 TAD K0240
838 TYPE
839 ISZ FROCT
840 CLA CLL
841 JMP PRN+5
842EXIT, CLA CLL
843 JMP I PRN
844
845/
846K4100, 4100
847K3740, 3740
848/
849/ROUTINE TO TYPE
850/
851PRINT, 0
852 TLS
853 TSF
854 JMP .-1
855 TCF
856 CLA
857 JMP I PRINT
858K0240, 0240
859K7700, 7700
860K0077, 0077
861K0010, 10
862K7741, 7741
863K3600, 3600
864/ROUTINE TO WAIT FOR KEY FROM OPERATOR
865/
866WAIT, 0
867 CLA CLL
868 KCC
869 KSF
870 JMP .-1
871 KRB
872 TLS
873 TSF
874 JMP .-1
875 AND K0177
876 TAD K0200
877 DCA CHAR
878 TAD CHAR
879 DCA C8CHAR
880 ISZ INMODE
881 JMS XC8CNT /CHECK FOR CONTROL CHARACTERS.
882 CLA
883 CLA
884 DCA INMODE
885 KCC
886 TCF
887 TAD CHAR
888 CIA
889 TAD K0316
890 SNA CLA /WAS IT A NO
891 JMP I WAIT /YES
892 ISZ WAIT /UPDATE RETURN POINTER
893 TAD CHAR
894 CIA
895 TAD K0331
896 SNA CLA /WAS IT A YES
897 ISZ WAIT /WAS A YES
898 JMP I WAIT /WAS NEITHER
899K0177, 0177
900K0316, 0316
901K0331, 0331
902/
903PAGE
904/
905/
906/ROUTINE TO RECALIBRATE SELECTED DRIVE
907/
908RESTOR, 0
909 CLA CLL IAC /ENABLE CLEAR CONTROL
910 CLRALL /CLEAR CONTROL
911 TAD DRIVNO /CURRENT DRIVE
912 TAD HOMEMA /CURRENT FIELD
913 LDCMD /LOAD COMMAND
914 TAD EXBIT
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
922 RDSTAT /READ STATUS
923 TAD K2000
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
929RESTA, CLRALL /CLEAR STATUS
930 TAD K0200 /ENABLE SET SECOND DONE FLAG
931 TAD CMREG /ORIGINAL COMMAND
932 LDCMD /LOAD COMMAND
933 DSKSKP /DISK SKIP IOT
934 JMP .-1 /WAIT FOR SECOND DONE
935 RDSTAT /READ STATUS
936 TAD K4000
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
942 JMP I RESTOR /RETURN
943RESTER, ERROR /ERROR, STATUS
944 3603 /TEXT POINTER
945/
946 CRLF
947 PRNTER /PRINT "TRY RECALIBRATE"
948 ERMES2
949 RECEIV /WAIT FOR INPUT
950 JMP .+3 /TRY NEXT EXISTING DISK
951 JMP .-5
952 JMP RESTOR+1 /TRY AGAIN
953 CLA CLL IAC
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
960/
961/
962/ROUTINE TO CHANGE DEVICE CODES
963/
964CHANG, 0
965 JMS XC8SW /GET SWITCH REGISTER BITS.
966 RAR
967 SNL CLA /CHANGE DEVICE CODES?
968 JMP I CHANG /NO.
969 JMS XC8SW /GET SWITCHES.
970 AND A0770
971 DCA CSAVE1 /SAVE DESIRED
972 TAD CCNTR1
973 DCA CSAVE2
974\f TAD CHNPOT
975 DCA RESTOR
976CHANGR, TAD I RESTOR /GET ADDRESS POINTER
977 DCA KWAIT
978 TAD I KWAIT /GET OLD CODE
979 AND A7007 /MASK
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
984 JMP CHANGR
985 JMP I CHANG /EXIT TO PROGRAM.
986/
987KWAIT, 0
988A7007, 7007
989A0770, 0770
990CSAVE1, 0
991CSAVE2, 0
992CCNTR1, 7771
993CHNPOT, CHNPOT+1
994 IOT0
995 IOT1
996 IOT2
997 IOT3
998 IOT4
999 IOT5
1000 IOT6
1001K2000, 2000
1002/
1003/THIS ROUTINE WILL GENERATE TIMING IF NEEDED BY THE APT SYSTEM
1004/
1005KTICK, 0
1006 CLL CLA
1007 TAD 22 /GET HARDWARE CONFIGURATION
1008 AND K4000
1009 SNA CLA /ON APT?
1010 JMP EXTICK /NO
1011 TAD I KTICK /GET TIMING VALUE
1012 DCA COUNT /ESATABLISH TIME
1013 ISZ CLKCNT
1014 JMP EXTICK /RETURN
1015 TAD COUNT /GET VALUE OF COUNTER
1016 DCA CLKCNT /STORE IT
1017 ISZ CNT /TIMING NEED BE DONE?
1018 JMP EXTICK
1019 TIME
1020 TAD KCNT /TIMING VALUE
1021 DCA CNT /INIT SECOND COUNTER
1022EXTICK, ISZ KTICK /MOVE BEYOND TIMING VALUE
1023 JMP I KTICK
1024
1025COUNT, 0
1026CNT, -2
1027KCNT, -2
1028K0100, 0100
1029/
1030/
1031/ROUTINE TO NOTIFY APT OF USE IF REQUIRED
1032/
1033KTIME, 0
1034 IOF /DISABLE INTERUPTS
1035 RDF /GET PRESENT DATA FIELD
1036 TAD KCDF
1037 DCA .+1 /ESTABLISHES CURRENT DATA FIELD
1038 HLT
1039 CIF 70 /FIELD 7. LOCATION OF UV PROM
1040 JMS I K6500
1041 CLL CLA
1042 JMP I KTIME
1043/
1044K6500, 6500
1045/
1046PAGE
1047/
1048/
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.
1052
1053/
1054AERRO, 0
1055 IOF /DISABLE INTERUPTS
1056 CLA
1057 TAD 22 /CHECK FOR APT SYSTEM
1058 SMA CLA
1059 JMP I AERRO /RETURN NOT ON APT
1060 TAD I KERRO /GET PC
1061 DCA SAVPC
1062 RDF /GET CURRENT DATA FIELD
1063 TAD KCDF
1064 DCA .+2
1065 TAD SAVPC
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
1069 HLT
1070/
1071K6520, 6520
1072KERRO, ERRO
1073SAVPC, 0
1074/
1075/
1076/ROUTINE TO MOVE DISK POINTERS
1077/
1078MOVE, 0
1079 TAD ADPT1
1080 DCA AUTO10
1081
1082 TAD ADPT2
1083 DCA AUTO11
1084 TAD M10
1085 DCA MCNTR1
1086 TAD I AUTO10 /FROM HERE
1087 DCA I AUTO11 /TO THERE
1088 ISZ MCNTR1 /4 POINTERS
1089 JMP .-3
1090 JMP I MOVE
1091/
1092ADPT1, DSK0A-1
1093ADPT2, DSK0B-1
1094MCNTR1, 0
1095/
1096/
1097TEXPC, TEXT "PC:"
1098TEXGD, TEXT "GD:"
1099TEXEX, TEXT "EX:"
1100TEXCM, TEXT "CM:"
1101TEXST, TEXT "ST:"
1102TEXDA, TEXT "DA:"
1103TEXCA, TEXT "CA:"
1104TEXAD, TEXT "AD:"
1105TEXDT, TEXT "DT:"
1106/
1107ERTX1, TEXT "READ STATUS ERROR"
1108ERTX2, TEXT "DISK DATA ERROR"
1109ERTX3, TEXT "WRITE STATUS ERROR"
1110ERTX4, TEXT "RECALIBRATE STATUS ERROR"
1111/
1112ERMES1, TEXT "TRY TO FORMAT SAME CYLINDER AGAIN?"
1113ERMES2, TEXT "TRY TO RECALIBRATE SAME DISK AGAIN?"
1114ERMES3, TEXT "TRY TO CHECK SAME CYLINDER AGAIN?"
1115/
1116TEXEND, TEXT "RK8E/RK8L DISK FORMATTER PASS COMPLETE"
1117MES1, TEXT "RK8E/RK8L DISK FORMATTER PROGRAM"
1118MES2, TEXT "FOR ALL QUESTIONS, ANSWER Y FOR YES OR N FOR NO."
1119MES3, TEXT "FORMAT DISK "
1120MES4, TEXT "ARE YOU SURE?"
1121MES5, TEXT "FORMAT SAME DISK(S) AGAIN?"
1122/
1123PAGE
1124/
1125WRKBUF=.
1126/
1127HITRK=.
1128LOTRK=.+1
1129/
1130ENDBUF=.+377
1131/
1132
1133
1134/CONSOL SRC -V2-R0- CONSOLE PACKAGE
1135
1136
1137/LAS= CALL C8CKSW OR JMS XC8SW
1138/THIS WILL READ THE SWITCH REGISTER FROM THE PLACE SPECIFIED
1139/BY LOCATION 20 BIT 0.
1140
1141
1142/THE PROGRAN SHOULD CHECK FOR A CONTROL CHARACTER FRON THE TERMINAL
1143/EVERY FIVE(5) SECONDS OR SOONER.
1144
1145/LOCATIONS THAT NEED TO BE SET UP FOR USING THE CONSOLE PACKAGE.
1146
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.
1151
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.
1156
1157
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.
1160
1161/SETUP2 IN XC8PASS THIS IS THE MASK FOR HALT A END OF PASS.
1162
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.
1167
1168
1169/CONSOL=0
1170 PSKF= 6661
1171 PCLF= 6662
1172 PSKE= 6663
1173 PSTB= 6664
1174 PSIE= 6665
1175 GTF= 6004
1176 ACL= 7701
1177 CAF= 6007
1178 MQL= 7421
1179 MQA= 7501
1180/
1181*3000
1182/
1183/*********************************************************************
1184/C8PASS
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
1188/RANGE
1189/ C8PASS=JMS XC8PAS
1190/EX. OF CALL C8PASS
1191 / HLT /HALT IF NON CONSOL PACKAGE
1192/ JMP START1 /CONTINUE RUNNING THIS PROGRAM
1193
1194
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
1199
1200/CALLS USED BY XC8PAS ARE CHKCLA-XC8CRLF-XC8OCTA-XC8SW-XC8PNT-XC8INQ-
1201
1202
1203XC8PAS, 0
1204 CLA
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
1213DOPACK, JMS CKCOUT /CLASS CHECK C8PASS COUNT
1214 JMP C8BY1 /C8PASS COUNT NOT DONE REDO PROGRAM
1215 ISZ PASCNT /C8PASS COUNT DONE SET C8PASS COUNT
1216 JMS XC8CRLF
1217 JMS XC8PNT /C8PRNT BUFFER
1218 MESPAS /
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
1224SETUP2, AND (400 /MASK BIT
1225 SZA CLA /HALT =1 NO SKIP CONTINUE =0
1226 JMS XC8INQ /STOP PROGRAM EXECUTION-LOOK FOR INPUT
1227C8BY1, ISZ XC8PAS /BUMP RETURN
1228 JMP I XC8PAS
1229CKCOUT, 0
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
1238NOSET, 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
1243DOCNT, 0
1244PASCNT, 0 /
1245DOSET, 0
1246CNTVAL, 0
1247MESPAS, TEXT "DHRKDD PASS "
1248
1249
1250
1251/*********************************************************************
1252
1253/C8CKSW
1254
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.
1259
1260 /C8CKSW= JMS XC8SW
1261 /EX. JMS XC8SW /READ THE C8SWIT REGISTER
1262 /RETURN WITH THE CONTENTS OF SWITCH REGISTER
1263
1264/RETURN TO NEXT LOCATION FOLLOWING CALL WITH THE AC= TO VALUE OF C8SWIT SETTING
1265
1266/CALLS USED ARE-XC8CKPA-
1267
1268
1269
1270XC8SW, 0
1271 JMS XC8CKPA /GO CHECK THE IF ANY CONTRL
1272 NOP
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.
1278
1279
1280/*********************************************************************
1281
1282/C8TTYI
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
1288
1289
1290/CALLS USED -NONE- BUT C8CHAR IS OFF PAGE AND IN ROUTINE CALLED XC8ECHO
1291
1292/
1293/
1294XC8TTY, 0
1295 KSF /LOOK FOR KEYBOARD FLAG
1296 JMP .-1
1297 KRB /GET CHAR
1298 AND (177 /MASK FOR 7 BITS
1299 TAD (200 /ADD THE EIGTH BIT
1300 DCA C8CHAR /STORE IT
1301 TAD C8CHAR
1302 JMP I XC8TTY /EXIT
1303
1304
1305
1306/*********************************************************************
1307
1308/C8PRNT
1309
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.
1313
1314/ C8PRNT= JMS XC8PNT
1315
1316
1317/EX. JMS XC8PNT /C8PRNT THE CONTENTS OF THE FOLLOWING BUFFER
1318/ MESS77 /LOCATION OF C8PRNT BUFFER
1319
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
1322
1323/CALLS USED ARE-XC8TYPE-XC8PNT
1324
1325
1326
1327XC8PNT, 0
1328 CLA CLL
1329 TAD I XC8PNT /GET C8PRNT BUFFERS STARTING LOCATION
1330 DCA PTSTOR /STORE IN PTSTOR
1331 ISZ XC8PNT /BUMP RETURN
1332C8DO1, TAD I PTSTOR /GET DATA WORD
1333 AND (7700 /MASK FOR LEFT BYTE
1334 SNA /CHECK IF 00 TERMINATE
1335 JMP I XC8PNT /EXIT
1336 SMA /IS AC MINUS
1337 CML /MAKE CHAR A 300 AFTER ROTATE
1338 IAC /MAKE CHAR A 200 AFTER ROTATE
1339 RTR
1340 RTR
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
1346 JMP I XC8PNT //EXIT
1347 TAD (3740 /ADD FUDGE FACTOR TO DETERMINE IF 200
1348 SMA /OR 300 IS TO BE ADD TO CHAR
1349 TAD (100 /ADD 100
1350 TAD (240 /ADD 200
1351 JMS XC8TYPE /C8TYPE ONLY BITS 4-11
1352 ISZ PTSTOR /BUMP POINTER FOR NEXT WORD
1353 JMP C8DO1 /DO AGAIN
1354PTSTOR, 0 /STOR FOR C8PRNT BUFFER
1355/**************************************************************************
1356
1357
1358/C8PAUS
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.
1363
1364/ C8PAUS= JMS XC8PAU
1365/
1366/
1367/EX. JMS XC8PAUS /CHECK IF ON ACTIVE CONSOL IF NOT HALT HERE
1368/ ANYTHING /RETURN HERE IF ON ACTIVE CONSOL
1369/
1370/
1371
1372/CALLS USED ARE -CHKCLA-
1373
1374
1375
1376XC8PAU, 0
1377 CLA CLL
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
1385C8DO3, JMP I XC8PAU /GO TO HALT OR RETURN TO NEXT LOCATION
1386
1387
1388PAGE
1389/*********************************************************************
1390\f
1391
1392/C8CNTR
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
1396
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
1400/
1401
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.
1407
1408/CALLS USED ARE-CHKCLA-XC8TYPE-XC8CRLF-C8GET-UPAROW-XC8TYI-XC8PSW-
1409/
1410/
1411/
1412XC8CNT, 0
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
1418 GTF
1419 DCA FLSAVE
1420 MQA
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
1425REDOA, 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
1429 SNA CLA /0 IF MATCH
1430 JMP GOITA /MATCH
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.
1434DONEA, 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 "?"
1440 JMS XC8TYPE
1441 JMS XC8CRLF
1442 ISZ XC8CNT /BUMP RETURN
1443 JMP I XC8CNT /EXIT CALL+2
1444EXITA, ISZ XC8CNT /BUMP RETURN FOR MAIN PROGRAM CHECK OF CHAR
1445 TAD C8CHAR /PUT CHAR IN AC.
1446 JMP I XC8CNT /EXIT
1447GOITA, 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
1452 DCA GOTOA /STORE IT
1453 TAD I GOTOA /GET THE ROUTINE STARTTING ADDRESS
1454 DCA GOTOA /STORE IT IN HERE
1455 JMP I GOTOA /GOTO CONTROL CHAR ROUTINE
1456GOTOA, 0000 /ADD OF CNTRL ROUTINE TO EXECUTE
1457INDEXA, 0000 /DISPLACEMENT INTO CNTRL TABLE
1458GETDAT, 0000 /LOCATION OF ADDRS OF CONTROL CHAR.
1459XTABLA, TABLA /ADDRS OF TABLEA
1460XTABLB, TABLB /ADDRS OF TABLEB
1461TABLA, 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
1468 0000
1469
1470TABLB, CNTRLC
1471 CNTRLL
1472 CNTRLQ
1473 CNTRLR
1474 CNTRLS
1475 CNTRLE
1476 CNTRLD
1477/
1478/CONTROL Q
1479/START SENDING CHAR. TO THE DISPLAY
1480/THIS WILL RETURN CONTROL TO CALL THAT WAS SET BY
1481/THE CALL FOR CONTROL S.
1482/
1483CNTRLQ, DCA INMODE /SET SOFT FLAG FOR UNEXPECTED CHAR
1484 TAD C8SETS /CHECK IF CONTROL S TYPED IN
1485 SZA CLA
1486 JMP BYRETR /CONTROL S TYPED IN
1487 JMS C8GET /NO CONTROL S TYPED PREVIOUSLY
1488 JMP I XC8CNTR /LEAVE VIA CNTR ENTRY ADDRESS
1489BYRETR, DCA C8SETS /CLEAR THE SOFT FLAG
1490 JMS C8GET /RESTORE REGISTERS
1491 JMP I C8RETR /EXIT TO ADDRESS SET BY CONTROL S
1492/
1493/
1494/CONTROL R
1495/GO TO THE QUESTION C8SWIT
1496CNTRLR, DCA TTYLPT /CLEAR THE TYPE FLAG SET TO TTY
1497 DCA C8SETS /CLEAR SOFT FLAG FOR CNTRL S
1498 DCA INMODE
1499 JMS UPAROW /PRINT THE ^ AND C8CHAR
1500C8BY4, DCA C8SWST /CLEAR FLAG FOR CNTRL D OR R
1501 JMP I XDOSW /GO TO ADDRS OF C8SWIT
1502XDOSW, BGN /DOSW IS LABEL FOR C8SWIT QUESTION
1503/
1504/
1505/CONTROL S
1506/STOP SENDING CHAR. TO DISPLAY UNTIL A ^Q IS RECEIVED
1507/
1508/
1509CNTRLS, TAD C8SETS /IF1 DO NOT STORE IN C8RETR
1510 SZA CLA
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
1515C8DO7, 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
1519 CLA
1520 JMP CNTRLS /IF NOT A CNTRL Q R C REASK
1521C8SETS, 0
1522C8RETR, 0
1523/
1524/SWITCH OUTPUT FROM ONE OUTPUT DEVICE TO ANOTHER - THE TWO OUTPUTS ARE THE
1525/CONSOLE AND THE PRINTER WITH DEVICE CDOE 66.
1526/
1527/
1528CNTRLL, TAD TTYLPT /GET PRESENT C8SWIT INDICATOR
1529 CMA /COMPLEMENT IT
1530 DCA TTYLPT /STOR NEW C8SWIT
1531 JMS UPAROW /C8PRNT ^ AND CHAR ON NEW DEVICE
1532 JMS C8GET /RESTORE THE REGISTERS
1533 JMP I XC8CNT /EXIT
1534/
1535/CONTROL E
1536/CONTINUE RUNNING FROM A INQUIRE OR ERROR
1537/
1538/
1539CNTRLE, JMS UPAROW /PRINT THE CONTROL CHAR
1540 JMS C8GET /GET THE REGISTERS
1541 JMP I XC8CNT /RETURN TO CALL PLUS ONE
1542/
1543
1544/CONTROL C
1545/RETURN TO MONITOR CONTROL C
1546CNTRLC, 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/*********************************************************************
1552/
1553/
1554/
1555PAGE
1556
1557/
1558 /CONTROL D
1559 /CHANGE THE SWITCH REGISTER ANYTIME CNTRL D AND RETURN TO
1560 /THE PROGRAM RUNNING.
1561
1562
1563CNTRLD, JMS UPAROW
1564\f TAD C8SETD /CHECK IF THE RETURN ADDRS IS SAFE
1565 SZA CLA
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
1570C8DO11, 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
1574/
1575C8SETD, 0
1576C8RETD, 0
1577
1578
1579
1580/THIS WILL TYPE A UP ARROW AND THE CHAR IN C8CHAR.
1581
1582UPAROW, 0 /C8PRNT THE "^" AND THE CHAR C8TYPED IN
1583 TAD (336 /CODE FOR ^
1584 JMS XC8TYPE
1585 TAD C8CHAR /C8TYPE THE CHAR
1586 JMS XC8TYPE
1587 JMS XC8CRLF
1588 JMP I UPAROW /EXIT
1589
1590
1591
1592/***********************************************************************
1593
1594C8GET, 0
1595 CLA
1596 TAD MQSAVE
1597 MQL /RESTORE MQ
1598 TAD FLSAVE
1599 RAL /RESTORE THE LINK
1600 CLA
1601 TAD ACSAVE /RESTORE THE AC
1602 JMP I C8GET /GET THE REGISTERS
1603
1604
1605
1606/********************************************************************
1607
1608/C8INQU
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.
1614
1615/ C8INQU = JMS XC8INQ
1616
1617/EX. JMS XC8INQ /C8 WILL PRINT A WAITINGAND WAIT FOR INPUT
1618/ DO ANYTHING /RETURN IS CALL PLUS ONE AC =0 CONTINUE
1619
1620/CALLS USED ARE -CHKCLA-XC8PNT-XC8TYI-C8GET-XC8CNTR-
1621
1622
1623XC8INQ, 0
1624 CLA CLL
1625 JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT
1626 SKP /ACTIVE CONSOLE PACKAGE
1627 JMP I XC8INQ /NOT CONSOLE LEAVE
1628 JMS XC8PNT
1629 WATMES /INQUIR WAITTING
1630 JMS XC8TTYI /GET CHARACTER
1631 JMS C8GET
1632 JMS XC8CNTR /CHECK IF CONTROL CHARACTER
1633 JMP I XC8INQ /EXIT AND CONTINUE
1634 JMP XC8INQ+1 /REASK
1635WATMES, TEXT "WAITING "
1636
1637
1638/*********************************************************************
1639
1640/C8SWIT
1641
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
1647/
1648/ C8SWIT = JMS XC8PSW
1649
1650/EX. JMS XC8PSW /SET UP PSEUDO C8SWIT REGISTER IF
1651 /ON THE CONSOL PACKAGE. RETURN IS CALL PLUS ONE AC = 0
1652
1653/CALLS USED ARE -CHKCLA-XC8PSW-XC8PNT-XC8OCTA-XC8TYPE-
1654
1655
1656XC8PSW, 0
1657 JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT
1658 SKP /ACTIVE CONSOLE
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
1665C8RDPS, JMS XC8PNT /C8PRNT SR=
1666 MESA
1667 TAD 20 /GET CONTENTS OF SW
1668 JMS XC8OCTA /CONVERT IT TO ASCII
1669 TAD (40 /GET SPACE
1670 JMS XC8TYPE
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
1675 DCA 20
1676
1677 TAD (-3 /GET A MINUS 3
1678 DCA TMPCNT /STORE IN TEMP COUNT
1679GETCH1, 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
1683 RAL
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
1689TSTCHA, 0
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
1705 /GET CHAR IN AC
1706 JMP I TSTCHA /EXIT
1707ERR1, TAD (277 /C8PRNT
1708 JMS XC8TYPE /?
1709 JMS XC8CRLF /
1710 JMP C8RDPS /EXIT + ASK AGAIN
1711ENDIT, JMS XC8CRLF /DO A CR LF
1712 DCA C8SWST /CLEAR THE PSW ENTRY FLAG
1713 JMP I XC8PSW /EXIT ROUTINE
1714C8SWST, 0
1715
1716TMPCNT, 0
1717MESA, TEXT "SR= "
1718
1719
1720PAGE
1721
1722/C8OCTA
1723
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
1728/
1729/EX. JMS XC8OCTA /AC CONTAINS NUMBER TO BE CHANGE
1730/ RETURN IS TO CALL PLUS ONE AC=0
1731/
1732/CALLS USED ARE -XC8TYPE-
1733
1734
1735XC8OCT, 0
1736 CLL RTL
1737 RTL /POSITION THE FIRST CHAR FOR PRINTING
1738 DCA C8TMP1 /SAVE CORRECT POSITIONED WORD HERE
1739 TAD (-4
1740 DCA C8CKP /STORE COUNTER IN HERE
1741C8DO4, TAD C8TMP1 /GET FIRST NUMBER
1742 AND (0007 /MASK
1743 TAD (260 /ADD THE PRINT CONSTANT
1744 JMS XC8TYPE /TYPE THE NUMBER
1745 TAD C8TMP1 /
1746 RTL
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
1752 C8TMP1, 0
1753 C8CKP, 0
1754
1755
1756/*********************************************************************
1757
1758/C8CRLF
1759/C8TYPE CR AND LF WITH FILLERS FOLLOWING EACH LF AND CR
1760\f/
1761/ C8CRLF= JMS XC8CRL
1762/
1763/EX. JMS XC8CRLF /C8PRNT A CR AND LF WITH FILL
1764/ /RETURN TO CALL PLUS ONE AC =0
1765/CALLS USED ARE -XC8TYPE-
1766
1767
1768XC8CRLF,0
1769 CLA CLL
1770 TAD (215 /GET CODE FOR CR
1771 JMS XC8TYPE
1772 TAD FILLER
1773 CMA
1774 DCA FILCNT /STORE FILLER IN HERE
1775 TAD (212 /GET CODE FOR LF
1776C8DO2, JMS XC8TYPE
1777 ISZ FILCNT /CHECK ON FILLER CHAR
1778 JMP C8DO2 /TYPE A NON PRINTING CHAR
1779 JMP I XC8CRL /EXIT
1780FILLER, 0004 /FILLER SET FOR 4 CHAR
1781FILCNT, 0 /COUNTER FOR FILL
1782
1783
1784
1785//*************************************************************
1786/C8CKPA
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
1794/CALL PLUS 2.
1795/IF NO FLAG IS SET OR THE CONSOL IS NOT ACTIVE THE RETURN IS TO
1796/CALL PLUS 1.
1797
1798
1799/ C8CKPA= JMS XC8CKP
1800
1801
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
1805
1806
1807/CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET-
1808
1809
1810XC8CKP, 0
1811 DCA ACSAVE /SAVE THE AC
1812 GTF /SAVE THE FLAGS
1813 DCA FLSAVE /SAVE THE FLAGS
1814 MQA /PUT MQ IN AC
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
1826C8BY3, JMS C8GET /GET REGISTERS
1827 JMP I XC8CKP /SAY GOOD BY
1828
1829//*********************************************************************
1830
1831/C8ECHO
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
1834
1835/ C8ECHO = JMS XC8ECH
1836/EX. JMS XC8ECHO /LOOK FOR CONSOL CHAR C8PRNT IT
1837 /RETURN CALL PLUS ONE AC = CHAR C8TYPED IN
1838
1839/CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET-XC8ECH-XC8TTYPE
1840
1841/
1842XC8ECH, 0
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
1851 JMP I XC8ECH /EXIT
1852C8CHAR, 0
1853INMODE, 0
1854
1855/*********************************************************************
1856
1857/C8TYPE
1858/THIS ROUTINE WILL C8PRNT ON THE CONSOLE OR THE LPT WITH DEVICE CODE 66.
1859/
1860/ C8TYPE= JMS XC8TYP
1861
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
1865
1866/CALLS USED ARE -C8HANG-XC8CNTR-XC8PNT-XC8CRLF-XC8INQU-
1867
1868
1869XC8TYP, 0
1870 DCA PNTBUF /STORE CHAR
1871 TAD TTYLPT /CHECK O=TTY 7777=LPT
1872 SZA CLA
1873 JMP XDOLPT /DO OUT PUT ON LPT
1874 TAD PNTBUF
1875 TLS
1876 TSF
1877 JMP .-1
1878 TCF
1879 JMP C8BY5
1880XDOLPT, TAD PNTBUF /GET CHAR
1881 PSTB PCLF /C8PRNT IT
1882 JMS C8HANG /CHECK KEYBOARD IF HUNG
1883 PCLF /CLEAR THE FLAG
1884C8BY5, 7600 /CLEAR THE AC
1885 JMP I XC8TYP /EXIT
1886PNTBUF, 0
1887TTYLPT, 0
1888
1889
1890C8HANG, 0
1891 CLA /
1892 TAD C8BY5 /GET CONSTANT 7600
1893 DCA PNTBUF /PNTBUF IS NOW A COUNTER
1894 PSKF /SKIP ON PRINTER DONE
1895 SKP /NOT DONE YET
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
1904 JMS XC8PNT
1905 MESHANG /LPT ERROR
1906 JMS XC8CRLF
1907 JMS XC8INQU /PRINT WAITING
1908 JMP I C8HANG /CONTINUE TO SAVE ADDRESS
1909C8CONT, 0 /COUNTER FOR TIMER
1910MESHANG,TEXT "LPT ERROR"
1911
1912PAGE
1913/*********************************************************************
1914/*******************************************************************
1915
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.
1920
1921
1922CHKCLA, 0
1923 CLA
1924 TAD 22 /GET THE COTENTA OF LOCATION 22
1925 AND (400 /MASK FOR BIT 3 (400
1926 SNA CLA /
1927 ISZ CHKCLA /ACTIVE CONSOLE PACKAGE RETURN
1928 /CALL PLUS ONE (1) FOR ACTIVE
1929 JMP I CHKCLA /DEACTIVE CONSOLE PACKAGE RETURN
1930 /CALL PLUS TWO (2)
1931
1932/C8ERR
1933/THIS ROUTINE WILL DETERMINE WHAT TO DO WHEN A C8ERR IS ENCOUNTERED
1934/WILL CHECK IF CLASSIC SYSTEM, WILL CHECK C8SWIT REGISTERS.
1935/ C8ERR= JMS XC8ERR
1936/EX. JMS XC8ERR /GO TO C8ERR CALL IF NOT CONSOL
1937/ /RETURN IS CALL PLUS ONE AC =0000
1938
1939/CALLS USED ARE -CHKCLA-XC8CRLF-XC8SW-XC8INQU-XC8PNT-XC8OCTA-
1940
1941
1942XC8ERR, 0
1943 IOF
1944 DCA ACSAVE /SAVE AC
1945 GTF
1946 DCA FLSAVE /SAVE THE FLAGS
1947\f MQA
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
1957 /NO ERROR MESSAGE
1958SETUP1, 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
1963 JMS XC8CRLF
1964 JMS XC8PNT
1965 ERRMES /PRINT THE ERROR MESSAGE
1966 JMS XC8PNT
1967 MESPC /PRINT THE PC STSTEMENT
1968 TAD PCSAVE
1969 JMS XC8OCTA /CONVERT 4 DIGIT PC TO ASCII
1970 JMS XC8PNT
1971 MESAC /PRINT THE AC MESS
1972 TAD ACSAVE
1973 JMS XC8OCTA
1974 JMS XC8PNT
1975 MESMQ /PRINT MQ
1976 TAD MQSAVE
1977 JMS XC8OCTA
1978 JMS XC8PNT
1979 MESFL /PRINT FL
1980 TAD FLSAVE
1981 JMS XC8OCTA
1982 JMS XC8CRLF
1983C8DO10, JMS C8GET /GET THE REGISTERS.
1984 JMS XC8SW /CHECK SWITCH REGISTER
1985 SKP CLA /SKIP IF BIT 0 SET
1986 JMP C8BY2 /LEAVE
1987 JMS XC8INQ /GO TO THE INQUIRE ROUTINE
1988 JMP C8BY2 /LEAVE
1989NTCLAS, 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.
1996 JMS C8GET
1997 JMP I PCSAVE /EXIT TO CALL AND HALT
1998C8BY2, JMS C8GET /GET THE REGISTERS
1999 JMP I XC8ERR
2000ERRMES, TEXT "DHRKDD FAILED "
2001MESPC, TEXT " PC:"
2002MESAC, TEXT " AC:"
2003MESMQ, TEXT " MQ:"
2004MESFL, TEXT " FL:"
2005PCSAVE, 7777
2006ACSAVE, 7777
2007MQSAVE, 7777
2008FLSAVE, 7777
2009
2010 $$$
2011/#8
2012/#8