Commit | Line | Data |
---|---|---|
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 | / | |
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 | |
58 | / | |
59 | LDSC=JMS I XXLDSC | |
60 | IOTCHN=JMS I XCHANG | |
61 | LODTRK=JMS I XWRTRK | |
62 | REDDSK=JMS I XRDTRK | |
63 | RECAL=JMS I XRESTR | |
64 | RECEIV=JMS I XWAIT | |
65 | KILBUF=JMS I XKLBUF | |
66 | ERROR=JMS I XERRO | |
67 | RDSTAT=JMS I XRDST | |
68 | LDADD=JMS I XLDAD | |
69 | DSKSKP=JMS I XSDKP | |
70 | LDCMD=JMS I XLDCM | |
71 | LDCUR=JMS I XLDCA | |
72 | CLRALL=JMS I XCLDR | |
73 | PRNTER=JMS I XPRN | |
74 | OCTEL=JMS I XFROCT | |
75 | TWOCT=JMS I XTOCT | |
76 | TYPE=JMS I XPRINT | |
77 | CRLF=JMS I XCRLF | |
78 | APT8A=JMS I XAPT8 | |
79 | TIME=JMS I XTIME | |
80 | TICK=JMS I XTICK | |
81 | KAERRO=JMS I XAERRO | |
82 | / | |
83 | *0 | |
84 | / | |
85 | 304 /REV D | |
86 | 5001 | |
87 | 0002 | |
88 | 0003 | |
89 | / | |
90 | *10 | |
91 | / | |
92 | AUTO10, 0 | |
93 | / | |
94 | AUTO11, 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 | |
102 | XAPT8, APT8 | |
103 | XTIME, KTIME | |
104 | XAERRO, AERRO | |
105 | XTICK, KTICK | |
106 | XCHANG, CHANG | |
107 | XWRTRK, WRTTRK | |
108 | XRDTRK, REDTRK | |
109 | XRESTR, RESTOR | |
110 | XWAIT, WAIT | |
111 | XKLBUF, KLBUF | |
112 | XPRINT, PRINT | |
113 | XERRO, ERRO | |
114 | XRDST, RDST | |
115 | XSDKP, SDKP | |
116 | XLDCM, LDCM | |
117 | XLDCA, LDCA | |
118 | XLDAD, LDAD | |
119 | XCLDR, CLDR | |
120 | XXLDSC, XLDSC | |
121 | XPRN, PRN | |
122 | XFROCT, FROCT | |
123 | XTOCT, TOCT | |
124 | XCRLF, UPONE | |
125 | XLOTRK, LOTRK | |
126 | XHITRK, HITRK | |
127 | BGNBUF, WRKBUF | |
128 | AMOUNT, 0 | |
129 | SWITCH, 0 | |
130 | K0003, 0003 | |
131 | K4, 4 | |
132 | K0007, 0007 | |
133 | K0040, 0040 | |
134 | M313, -313 | |
135 | K0277, 0277 | |
136 | K0200, 0200 | |
137 | K0260, 0260 | |
138 | K4000, 4000 | |
139 | K7735, 7735 | |
140 | K7760, 7760 | |
141 | K0400, 400 | |
142 | K0037, 0037 | |
143 | KCDF, CDF | |
144 | M4, -4 | |
145 | M10, -10 | |
146 | DRIVNO, 0 | |
147 | CHAR, 0 | |
148 | LOWAD, 0 | |
149 | HIGHAD, 0 | |
150 | TRKCNT, 0 | |
151 | DSKCNT, 0 | |
152 | SBCNT1, 0 | |
153 | STCNT1, 0 | |
154 | STCNT2, 0 | |
155 | STCNT3, 0 | |
156 | TCNTR1, 0 | |
157 | TCNTR2, 0 | |
158 | TCNTR3, 0 | |
159 | TCNTR4, 0 | |
160 | TCNTR5, 0 | |
161 | / | |
162 | GDREG2, 0 | |
163 | EXBIT, 0 | |
164 | CMREG, 0 | |
165 | STREG, 0 | |
166 | DAREG, 0 | |
167 | CAREG, 0 | |
168 | ADREG, 0 | |
169 | DTREG, 0 | |
170 | BGNTST, FRMDSK | |
171 | HOMEMA, 0 | |
172 | DATCNT, 0 | |
173 | CLKCNT, -2 | |
174 | / | |
175 | XMOVE, MOVE | |
176 | LOC8ED, 0 | |
177 | XEND, ENDTST | |
178 | SOFT, 0 | |
179 | ADPOT1, DSK0A | |
180 | DSK0A, 0 | |
181 | DSK1A, 0 | |
182 | DSK2A, 0 | |
183 | DSK3A, 0 | |
184 | DSK4A, 0 | |
185 | DSK5A, 0 | |
186 | DSK6A, 0 | |
187 | DSK7A, 0 | |
188 | ADPOT2, DSK0B | |
189 | DSK0B, 0 | |
190 | DSK1B, 0 | |
191 | DSK2B, 0 | |
192 | DSK3B, 0 | |
193 | DSK4B, 0 | |
194 | DSK5B, 0 | |
195 | DSK6B, 0 | |
196 | DSK7B, 0 | |
197 | PCOUNT, 0 /USED ONLY IF ON APT | |
198 | / | |
199 | *200 | |
200 | / | |
201 | BGN, 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 | |
222 | ALLAGN, TAD M10 | |
223 | DCA STCNT1 /COUNTER FOR AMOUNT OF DISKS | |
224 | DCA LOC8ED | |
225 | DCA STCNT2 | |
226 | SAMAGN, CRLF | |
227 | PRNTER /PRINT "FORMAT DISK ? " | |
228 | MES3 /MESSAGE POINTER 3 | |
229 | TAD STCNT2 | |
230 | TAD K0260 | |
231 | TYPE /TYPE DISK NUMBER | |
232 | QUES1, 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 | |
240 | WASDSK, ISZ LOC8ED | |
241 | CLA CLL CMA | |
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 | |
246 | / | |
247 | DONE, 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 | / | |
264 | FRMDSK, 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 | |
275 | NEXFRM, ISZ TCNTR5 /NO, TRY NEXT | |
276 | ISZ TCNTR4 | |
277 | JMP .-5 | |
278 | HLT /WHAT HAPPENED???? | |
279 | / | |
280 | FORMAT, 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 | / | |
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 | |
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 | |
309 | RENEX1, 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 | / | |
317 | CHKDSK, 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 | |
325 | NEXCHK, ISZ TCNTR5 /UPDATE FOR NEXT DISK | |
326 | ISZ TCNTR4 | |
327 | JMP .-5 | |
328 | HLT /WHAT HAPPENED????? | |
329 | / | |
330 | CHKDAT, 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 | / | |
347 | PAGE | |
348 | / | |
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 | |
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 | |
361 | RENEX2, 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 | |
371 | ENDTST, 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 | / | |
386 | ERRO, 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 | |
416 | NTGD, 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 | |
431 | STRAUT, 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 | |
447 | AGAIN, ISZ PCNTR1 | |
448 | JMP STRAUT /CHECK FOR NEXT XX: | |
449 | JMP I RETRN1 /RETURN TO QUESTION | |
450 | NOTEX, CLL RAL | |
451 | DCA ERRO | |
452 | ISZ PCNTR2 | |
453 | ISZ PCNTR2 | |
454 | ISZ AUTO10 | |
455 | JMP AGAIN | |
456 | / | |
457 | RETRN1, 0 | |
458 | XTEXT, TEXCM | |
459 | XREG, EXBIT | |
460 | PCNTR1, 0 | |
461 | PCNTR2, 0 | |
462 | PCNTR3, 0 | |
463 | HEDTAD, TAD HEDLST | |
464 | HEDLST, ERTX1 | |
465 | ERTX2 | |
466 | ERTX3 | |
467 | ERTX4 | |
468 | K7771, 7771 | |
469 | / | |
470 | PAGE | |
471 | / | |
472 | /ROUTINE TO FORMAT CYLINDER | |
473 | /MAKE FIRST TWO WORDS OF EVERY SECTOR | |
474 | /EQUAL TO DISK ADDRESS. | |
475 | / | |
476 | WRTTRK, 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 | |
485 | LODR1, 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 | |
520 | LODER, 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 | |
532 | K5000, 5000 | |
533 | K7577, 7577 | |
534 | / | |
535 | / | |
536 | /SUBROUTINE TO READ STATUS REGISTER | |
537 | / | |
538 | RDST, 0 | |
539 | IOT5, DRST /READ STATUS IOT | |
540 | SKP | |
541 | ERHLT5, 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 | / | |
548 | LDCA, 0 | |
549 | DCA ADREG /SAVE IN ADDRESS | |
550 | TAD ADREG | |
551 | DCA CAREG /SETUP INITIAL CURRENT ADDRESS | |
552 | TAD ADREG | |
553 | IOT4, DLCA /LOAD CURRENT ADDRESS IOT | |
554 | JMP I LDCA /EXIT | |
555 | ERHLT4, JMS XC8ERR /SKIP TRAP ERROR. | |
556 | JMP .-1 | |
557 | / | |
558 | / | |
559 | /SUBROUTINE TO LOAD TRACK ADDRESS REGISTER | |
560 | / | |
561 | LDAD, 0 | |
562 | DCA DAREG /SAVE OUTBOUND DATA | |
563 | TAD DAREG | |
564 | IOT3, DLAG /LOAD DISK ADDRESS REGISTER | |
565 | JMP I LDAD /EXIT | |
566 | ERHLT3, JMS XC8ERR /SKIP TRAP ERROR. | |
567 | JMP .-1 | |
568 | / | |
569 | / | |
570 | /SUBROUTINE TO LOAD COMMAND REGISTER | |
571 | / | |
572 | LDCM, 0 | |
573 | DCA CMREG /SAVE OUTBOUND DATA | |
574 | DCA INMODE | |
575 | JMS XC8CKP /CHECK FOR CONTROL CHARACTERS. | |
576 | CLA | |
577 | CLA | |
578 | TAD CMREG | |
579 | IOT6, DLDC /LOAD COMMAND REGISTER | |
580 | JMP I LDCM /EXIT | |
581 | ERHLT6, JMS XC8ERR /SKIP TRAP ERROR. | |
582 | JMP .-1 | |
583 | / | |
584 | / | |
585 | /SUBROUTINE ISSUE "DLSC" | |
586 | XLDSC, 0 | |
587 | IOT0, DLSC | |
588 | JMP I XLDSC | |
589 | ERHLT0, JMS XC8ERR | |
590 | JMP .-1 | |
591 | ||
592 | /SUBROUTINE TO ISSUE "DSKP" DISK SKIP IOT | |
593 | / | |
594 | SDKP, 0 | |
595 | IOT1, 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 | / | |
602 | CLDR, 0 | |
603 | IOT2, DCLR /DCLR "CLEAR IOT" | |
604 | JMP I CLDR /EXIT | |
605 | ERHLT2, JMS XC8ERR /SKIP TRAP ERROR. | |
606 | JMP .-1 | |
607 | / | |
608 | /ROUTINE TO ZERO WORK BUFFER | |
609 | / | |
610 | KLBUF, 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 | |
620 | K7400, 7400 | |
621 | / | |
622 | PAGE | |
623 | / | |
624 | / | |
625 | /ROUTINE TO READ AND CHECK A CYLINDER | |
626 | / | |
627 | REDTRK, 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 | |
634 | CHKR1, 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 | |
660 | STAOK, 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 | |
673 | FRSTOK, 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 | |
684 | DATOK, 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. | |
694 | DATER, TAD K7741 | |
695 | DCA TCHKT /SETUP TEXT POINTER | |
696 | JMP CHKER /ERROR | |
697 | STAER, TAD K3600 | |
698 | DCA TCHKT /SETUP TEXT POINTER | |
699 | CLA CLL CML RAR | |
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 | |
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 | / | |
716 | APT8, 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 | |
739 | MULDSK, 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 | |
755 | K7377, 7377 | |
756 | PAGE | |
757 | / | |
758 | /SUBROUTINE TO PRINT TWO OCTAL | |
759 | / | |
760 | TOCT, 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 | / | |
778 | UPONE, 0 | |
779 | CLA CLL | |
780 | TAD K0215 | |
781 | TYPE | |
782 | TAD K0212 | |
783 | TYPE | |
784 | TYPE /TYPE ONE NULL | |
785 | JMP I UPONE | |
786 | / | |
787 | K0215, 0215 | |
788 | K0212, 0212 | |
789 | / | |
790 | /ROUTINE TO PRINT FOUR OCTAL | |
791 | / | |
792 | FROCT, 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 | / | |
814 | PRN, 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 | |
842 | EXIT, CLA CLL | |
843 | JMP I PRN | |
844 | ||
845 | / | |
846 | K4100, 4100 | |
847 | K3740, 3740 | |
848 | / | |
849 | /ROUTINE TO TYPE | |
850 | / | |
851 | PRINT, 0 | |
852 | TLS | |
853 | TSF | |
854 | JMP .-1 | |
855 | TCF | |
856 | CLA | |
857 | JMP I PRINT | |
858 | K0240, 0240 | |
859 | K7700, 7700 | |
860 | K0077, 0077 | |
861 | K0010, 10 | |
862 | K7741, 7741 | |
863 | K3600, 3600 | |
864 | /ROUTINE TO WAIT FOR KEY FROM OPERATOR | |
865 | / | |
866 | WAIT, 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 | |
899 | K0177, 0177 | |
900 | K0316, 0316 | |
901 | K0331, 0331 | |
902 | / | |
903 | PAGE | |
904 | / | |
905 | / | |
906 | /ROUTINE TO RECALIBRATE SELECTED DRIVE | |
907 | / | |
908 | RESTOR, 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 | |
929 | RESTA, 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 | |
943 | RESTER, 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 | / | |
964 | CHANG, 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 | |
976 | CHANGR, 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 | / | |
987 | KWAIT, 0 | |
988 | A7007, 7007 | |
989 | A0770, 0770 | |
990 | CSAVE1, 0 | |
991 | CSAVE2, 0 | |
992 | CCNTR1, 7771 | |
993 | CHNPOT, CHNPOT+1 | |
994 | IOT0 | |
995 | IOT1 | |
996 | IOT2 | |
997 | IOT3 | |
998 | IOT4 | |
999 | IOT5 | |
1000 | IOT6 | |
1001 | K2000, 2000 | |
1002 | / | |
1003 | /THIS ROUTINE WILL GENERATE TIMING IF NEEDED BY THE APT SYSTEM | |
1004 | / | |
1005 | KTICK, 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 | |
1022 | EXTICK, ISZ KTICK /MOVE BEYOND TIMING VALUE | |
1023 | JMP I KTICK | |
1024 | ||
1025 | COUNT, 0 | |
1026 | CNT, -2 | |
1027 | KCNT, -2 | |
1028 | K0100, 0100 | |
1029 | / | |
1030 | / | |
1031 | /ROUTINE TO NOTIFY APT OF USE IF REQUIRED | |
1032 | / | |
1033 | KTIME, 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 | / | |
1044 | K6500, 6500 | |
1045 | / | |
1046 | PAGE | |
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 | / | |
1054 | AERRO, 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 | / | |
1071 | K6520, 6520 | |
1072 | KERRO, ERRO | |
1073 | SAVPC, 0 | |
1074 | / | |
1075 | / | |
1076 | /ROUTINE TO MOVE DISK POINTERS | |
1077 | / | |
1078 | MOVE, 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 | / | |
1092 | ADPT1, DSK0A-1 | |
1093 | ADPT2, DSK0B-1 | |
1094 | MCNTR1, 0 | |
1095 | / | |
1096 | / | |
1097 | TEXPC, TEXT "PC:" | |
1098 | TEXGD, TEXT "GD:" | |
1099 | TEXEX, TEXT "EX:" | |
1100 | TEXCM, TEXT "CM:" | |
1101 | TEXST, TEXT "ST:" | |
1102 | TEXDA, TEXT "DA:" | |
1103 | TEXCA, TEXT "CA:" | |
1104 | TEXAD, TEXT "AD:" | |
1105 | TEXDT, TEXT "DT:" | |
1106 | / | |
1107 | ERTX1, TEXT "READ STATUS ERROR" | |
1108 | ERTX2, TEXT "DISK DATA ERROR" | |
1109 | ERTX3, TEXT "WRITE STATUS ERROR" | |
1110 | ERTX4, TEXT "RECALIBRATE STATUS ERROR" | |
1111 | / | |
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?" | |
1115 | / | |
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?" | |
1122 | / | |
1123 | PAGE | |
1124 | / | |
1125 | WRKBUF=. | |
1126 | / | |
1127 | HITRK=. | |
1128 | LOTRK=.+1 | |
1129 | / | |
1130 | ENDBUF=.+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 | ||
1203 | XC8PAS, 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 | |
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 | |
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 | |
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 | |
1228 | JMP I XC8PAS | |
1229 | CKCOUT, 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 | |
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 | |
1243 | DOCNT, 0 | |
1244 | PASCNT, 0 / | |
1245 | DOSET, 0 | |
1246 | CNTVAL, 0 | |
1247 | MESPAS, 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 | ||
1270 | XC8SW, 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 | / | |
1294 | XC8TTY, 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 | ||
1327 | XC8PNT, 0 | |
1328 | CLA CLL | |
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 | |
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 | |
1354 | PTSTOR, 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 | ||
1376 | XC8PAU, 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 | |
1385 | C8DO3, JMP I XC8PAU /GO TO HALT OR RETURN TO NEXT LOCATION | |
1386 | ||
1387 | ||
1388 | PAGE | |
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 | / | |
1412 | XC8CNT, 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 | |
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 | |
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. | |
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 "?" | |
1440 | JMS XC8TYPE | |
1441 | JMS XC8CRLF | |
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. | |
1446 | JMP I XC8CNT /EXIT | |
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 | |
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 | |
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 | |
1468 | 0000 | |
1469 | ||
1470 | TABLB, 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 | / | |
1483 | CNTRLQ, 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 | |
1489 | BYRETR, 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 | |
1496 | CNTRLR, 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 | |
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 | |
1503 | / | |
1504 | / | |
1505 | /CONTROL S | |
1506 | /STOP SENDING CHAR. TO DISPLAY UNTIL A ^Q IS RECEIVED | |
1507 | / | |
1508 | / | |
1509 | CNTRLS, 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 | |
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 | |
1519 | CLA | |
1520 | JMP CNTRLS /IF NOT A CNTRL Q R C REASK | |
1521 | C8SETS, 0 | |
1522 | C8RETR, 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 | / | |
1528 | CNTRLL, 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 | / | |
1539 | CNTRLE, 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 | |
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 | /********************************************************************* | |
1552 | / | |
1553 | / | |
1554 | / | |
1555 | PAGE | |
1556 | ||
1557 | / | |
1558 | /CONTROL D | |
1559 | /CHANGE THE SWITCH REGISTER ANYTIME CNTRL D AND RETURN TO | |
1560 | /THE PROGRAM RUNNING. | |
1561 | ||
1562 | ||
1563 | CNTRLD, 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 | |
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 | |
1574 | / | |
1575 | C8SETD, 0 | |
1576 | C8RETD, 0 | |
1577 | ||
1578 | ||
1579 | ||
1580 | /THIS WILL TYPE A UP ARROW AND THE CHAR IN C8CHAR. | |
1581 | ||
1582 | UPAROW, 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 | ||
1594 | C8GET, 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 | ||
1623 | XC8INQ, 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 | |
1635 | WATMES, 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 | ||
1656 | XC8PSW, 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 | |
1665 | C8RDPS, 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 | |
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 | |
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 | |
1689 | TSTCHA, 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 | |
1707 | ERR1, TAD (277 /C8PRNT | |
1708 | JMS XC8TYPE /? | |
1709 | JMS XC8CRLF / | |
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 | |
1714 | C8SWST, 0 | |
1715 | ||
1716 | TMPCNT, 0 | |
1717 | MESA, TEXT "SR= " | |
1718 | ||
1719 | ||
1720 | PAGE | |
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 | ||
1735 | XC8OCT, 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 | |
1741 | C8DO4, 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 | ||
1768 | XC8CRLF,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 | |
1776 | C8DO2, JMS XC8TYPE | |
1777 | ISZ FILCNT /CHECK ON FILLER CHAR | |
1778 | JMP C8DO2 /TYPE A NON PRINTING CHAR | |
1779 | JMP I XC8CRL /EXIT | |
1780 | FILLER, 0004 /FILLER SET FOR 4 CHAR | |
1781 | FILCNT, 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 | ||
1810 | XC8CKP, 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 | |
1826 | C8BY3, 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 | / | |
1842 | XC8ECH, 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 | |
1852 | C8CHAR, 0 | |
1853 | INMODE, 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 | ||
1869 | XC8TYP, 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 | |
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 | |
1885 | JMP I XC8TYP /EXIT | |
1886 | PNTBUF, 0 | |
1887 | TTYLPT, 0 | |
1888 | ||
1889 | ||
1890 | C8HANG, 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 | |
1909 | C8CONT, 0 /COUNTER FOR TIMER | |
1910 | MESHANG,TEXT "LPT ERROR" | |
1911 | ||
1912 | PAGE | |
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 | ||
1922 | CHKCLA, 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 | ||
1942 | XC8ERR, 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 | |
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 | |
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 | |
1983 | C8DO10, 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 | |
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. | |
1996 | JMS C8GET | |
1997 | JMP I PCSAVE /EXIT TO CALL AND HALT | |
1998 | C8BY2, JMS C8GET /GET THE REGISTERS | |
1999 | JMP I XC8ERR | |
2000 | ERRMES, TEXT "DHRKDD FAILED " | |
2001 | MESPC, TEXT " PC:" | |
2002 | MESAC, TEXT " AC:" | |
2003 | MESMQ, TEXT " MQ:" | |
2004 | MESFL, TEXT " FL:" | |
2005 | PCSAVE, 7777 | |
2006 | ACSAVE, 7777 | |
2007 | MQSAVE, 7777 | |
2008 | FLSAVE, 7777 | |
2009 | ||
2010 | $$$ | |
2011 | /#8 | |
2012 | /#8 |