1 TITLE MONGEN - DIALOG PROGRAM TO DEFINE A 10/40 OR 10/50 T.S. CONFIGURATION - V041
\r
2 SUBTTL T.HASTINGS/TNM/TW/PFC/GDR/KWB/RCC TS 05 MAR 71
\r
8 ;PUT VERSION NUMBER IN JOB DATA AREA
\r
9 ;ALSO OUTPUT-SEE NEXT PAGE
\r
12 ;HOW MONGEN IS ORGANIZED:
\r
13 ;ALL SYMBOLS FOR CONFIG.MAC ARE DEFINED USING XP MACRO DEFINED IN S.MAC
\r
14 ;XP DEFINES FIRST ARGUMENT TO BE EQUAL TO THE SECOND ARG
\r
15 ;AND DECLARES THE FIRST ARG TO BE INTERVAL
\r
17 ;RULE: ALL SYMBOLS ARE GENERATED ALL THE TIME, NO MATTER HOW DIALOG IS ANSWERED
\r
18 ;WHY - SO USER READING CONFIG+COMMON NEVER NEEDS TO LOOK AT
\r
19 ; MONGEN PROGRAM TO UNDERSTAND MONITOR
\r
21 ;THE ONLY LOCAL STORAGE IN MONGEN IS USED TO STORE ANSWERS
\r
22 ;WHICH DETERMINE WHETHER A SECOND QUESTION IS TO BE ASKED
\r
23 ;THESE TEMP STORAGE HAVE SAME NAME AS THE SYMBOL WHICH THEY ARE ASSOCIATED WITH
\r
25 ;RULE: ALL SYMBOLS WHICH ARE GENERATED BY MONGEN, END IN LETTER N OR NN.
\r
26 ;POLICY: MONGEN IS STUPID AND SIMPLE MINDED. IT KNOWS AS LITTLE ABOUT THE MONITOR
\r
27 ;AS POSSIBLE. IT NEVER ADDS TWO ANSWERS TOGETHER, FOR EXAMPLE. IT ALWAYS GENERATES
\r
28 ;ALL SYMBOLS ALL THE TIME, NO MATTER HOW THE QUESTIONS ARE ANSWERED. THE SYMBOL
\r
29 ;VALUES ARE ALWAYS WHAT THE USER ANSWERED. (AS LONG AS SYNTACTICALLY CORRECT).
\r
30 ;IF DEC OFFERS JUST 2 DIFFERENT FORMS OF A DEVICE
\r
31 ; ONLY ONE QUESTION WILL BE ASKED (EX. DECTAPE - 551 OR TD10).
\r
32 ; HOWEVER TWO SYMBOLS ENDING IN N WILL BE GENERATED.
\r
33 ; THIS IS SO A THIRD DEVICE CAN BE ADDED WITH MINIMAL
\r
34 ; CHANGE TO BOTH MONGEN AND COMMON.
\r
35 ;RULE: ASK RELATED QUESTIONS (EG, 3-WAY BRANCH) SO THAT IF THE FIRST
\r
36 ;ANSWER IS YES, THE SECOND QUESTION IS NOT ASKED.
\r
37 ;RULE: ASK THE QUESTIONS SO THAT YES IS THE CURRENT STANDARD RESPONSE.
\r
38 ;FOR EACH VARIABLE OUTPUT, THERE IS A CORRESPONDING LOCATION IN MONGEN WITH SAME NAME
\r
39 ;ALL SUCH LOCATIONS ARE INITIALLY SET TO 0 WHEN MONGEN IS STARTED
\r
40 ;EACH QUESTION OR SET OF RELATED QUESTIONS HAS THE FOLLOWING FORM:
\r
41 ; ONE OR MORE QUESTIONS FOLLOWED BY OUTPUT OF THE APPROPRIATE MACRO SOURCE.
\r
42 ; THE FIRST QUESTION IN A SEG ARE OF FORM TAG1,TAG2,ECT.
\r
43 ; ALL JUMPS TO OTHER QUESTIONS IN SEG ARE OF FORM TAG1,TAG2, ETC.
\r
44 ; THE OUTPUT SECTION OF A SEG IS LABELED TAGOUT: EVEN THOUGH IT MAY
\r
45 ; NEVER BE JRSTED TO. NOTE: THERE ARE NO OTHER TAGS IN OUTPUT SECTION
\r
46 ; BECAUSE ALL SYMBOLS ARE ALWAYS OUTPUT, SO THERE IS NO BRANCHING IN OUTPUT SECTION.
\r
49 ;ANY TTY OUTPUT ENCLOSED IN []'S WILL BE TYPED ONLY IF LONG DIALOG IS IN EFFECT
\r
51 P=17 ;PUSHDOWN POINTER
\r
52 N=1 ;NUMERICAL VALUE OF ASKED QUESTION
\r
53 ;0=N,1=Y, HIGHER NO. IS VALUE OF OCTAL OR DECIMAL ANSWER
\r
54 ;VALUE RETURNED BY ASKYN, ASKOCT,ASKDEC ROUTINES
\r
59 ;FIRST ARGUMENT PASSED TO OUTXP
\r
60 B=6 ;BYTE POINTER TO INPUT STRING
\r
61 R=7 ;RADIX FOR INPUT
\r
66 TOCHN=0 ;TTY OUTPUT CHANNEL
\r
67 FOCHN=1 ;FILE OUTPUT CHANNEL
\r
70 MLON ;MULTI LINE LITERAL
\r
73 MAXCHN=8 ;MAXIMUM NUMBER OF DISK CHANNELS
\r
75 MAXFHU=8 ;MAXIMUM NUMBER OF UNITS ON FIXED HEAD CONTROLLERS
\r
76 MAXDPU=8 ;MAXIMUM NUMBEROF UNITS ON DISK PACK CONTROLLERS
\r
77 MAXMFU=2 ;MAXIMUM NUMBER OF UNITS ON MASS FILE CONTROLLERS
\r
79 ;THE FOLLOWING SIMPLE ROUTINES ARE USED TO ASK QUESTIONS:
\r
80 ;ASKYN - ANSWER -(Y,N,) OR (1,0)
\r
81 ;ASKDEC - ANSWER - DECIMAL NUMBER
\r
82 ;ASKOCT - ANSWER - OCTAL NUMBER
\r
83 ;ASKACZ - ANSWER - LOC ASCSTR...VASCSTR+5(ASCIZ)
\r
84 ;ASKSIX - ANSWER - LOC ASCSTR...ASCSTR=1(ASCIZ)(ONLY 6 CHAR ALLOWED)
\r
85 ;OUTFIL - OUTPUT TO CONFIG.MAC ONLY
\r
86 ;OUTBTH - OUTPUT TO TTY AND CONFIG.MAC(;IS REMOVED BEFORE GOING TO TTY)
\r
87 ;OUTXP - SUBSTITUTES VALUE IN N FOR * IN ASCIZ
\r
88 ;OUTSTR - SUBSTITUTE ASCIZ STRING IN ASCSTR FOR * IN ASCIZ ARG
\r
89 ;OUTTTY - OUTPUT TO TTY ONLY (ERROR MESSAGE)
\r
92 XALL ;DO NOT LIST ASCII EXPANSIONS
\r
100 \f SUBTTL INITIALIZATION
\r
101 MONGEN: CALLI 0 ;RESET
\r
102 MOVE P,[IOWD 12,PDLIST]
\r
104 MOVE N,[XWD VARBEG,VARBEG+1]
\r
105 BLT N,VAREND ;CLEAR VARIABLE STORAGE
\r
111 MON1: PUSHJ P,OUTTTY
\r
112 ASCIIZ <;TYPE "DEVICE:NAME.EXT<CR>" FOR WHERE TO PUT RESULTS OF THIS DIALOG
\r
113 ;CR ASSUMES "DSK:CONFIG.MAC">
\r
120 MOVSI WD,(SIXBIT .DSK.)
\r
124 XWD FOBUF,0 ;INIT OUTPUT DEVICE 'OUTP'
\r
126 JRST OUTOK ;LOGICAL DEVICE WAS ASSIGNED
\r
128 ASCIIZ <DEVICE NOT AVAILABLE>
\r
129 JRST MON1 ;ASK AGAIN
\r
131 OUTDIR: SIXBIT /CONFIG/
\r
132 OUTDR1: SIXBIT /MAC/
\r
139 MOVE WD,[SIXBIT .CONFIG.]
\r
145 MOVSI WD,(SIXBIT/MAC/)
\r
149 ENTER OUTCHN,OUTDIR
\r
151 \f SUBTTL DETERMIN GENERAL TYPE OF SYSTEM ,ETC.
\r
152 PUSHJ P,OUTFIL ;WRITE ON OUTPUT FILE ONLY
\r
153 ASCIIZ <SUBTTL CONFIG - CONFIGURATION DEFINITION FILE OUTPUT BY MONGEN DIALOG
\r
157 PUSHJ P,OUTBTH ;BOTH TTY AND OUTPUT FILE(AS COMMENT)
\r
158 ASCIIZ <;ANSWER THE FOLLOWING QUESTIONS WITH Y OR N OR A DECIMAL NUMBER>
\r
160 ASCIIZ <;SHORT DIALOG?[N = LONGER QUESTIONS]>
\r
161 MOVEM N,SHORT ;REMEMBER FOR QUTTTY ROUT.
\r
163 ASCIIZ <;10/30 SYSTEM TO BE BUILT?[N = 10/40 OR 10/50 SYSTEM]>
\r
167 ASCIIZ <;10/40 SYSTEM TO BE BUILT?[N = ASSUME 10/50 SYSTEM]>
\r
171 ENTERR: PUSHJ P,OUTTTY
\r
172 ASCIIZ <ENTER FAILURE>
\r
174 \fSYSASK: AOS SYS40N
\r
175 PUSHJ P,ASKYN ;FIND OUT IF 10/40 WITH DISK
\r
177 JUMPE N,SYSOUT ;DISK SYSTEM?
\r
180 SYSOUT: MOVE N,SYS40N ;DEFINE 10/40 SYSTEM SYMBOL
\r
182 ASCIIZ <XP SYS40N,*>
\r
183 MOVEI N,0 ;ASSUME 10/40
\r
184 SKIPN SYS40N ;10/40 SYSTEM?
\r
185 MOVEI N,1 ;NO, MUST BE 10/50,SET TO 1
\r
187 ASCIIZ <XP SYS50N,*>
\r
193 ASCIIZ <XP LOGINN,*>
\r
195 \f SUBTTL SET-UP DISK CONFIGURATION
\r
196 DSKASK: SKIPN N,DSKN ;NEED A DISK?
\r
197 JRST JOBASK ;NO DISK - NO QUESTION
\r
200 ASCIIZ <;RD10 (BURROUGHS) DISK?[ONE DISK TYPE FOR FILES,
\r
201 ;SAME TYPE FOR SWAPPING OR ONE OTHER TYPE FOR SWAPPING]>
\r
203 SYS1A: PUSHJ P,OUTXP
\r
204 ASCIIZ <XP RD10N,*>
\r
205 SKIPN N,RD10N ;RD10 REQUESTED?
\r
208 ASCIIZ <;RD10 FOR SWAPPING?[N = CAN SWAP ON SOME OTHER TYPE]>
\r
210 SYS1B: PUSHJ P,OUTXP
\r
211 ASCIIZ <XP RDSWPN,*>
\r
215 ASCIIZ <;HOW MANY RP01 OR RP02 (MEMOREX) DISK PACK DRIVES?[0 IF NONE]>
\r
216 SYS2A: MOVEM N,RP10N
\r
218 ASCIIZ <XP RP10N,*>
\r
221 JRST SYS2B ;AVOID QUESTION IF NO RP10 OR ALREADY HAVE SWAP DEV
\r
223 ASCIIZ <;RP10 FOR SWAPPING?>
\r
225 SYS2B: PUSHJ P,OUTXP
\r
226 ASCIIZ <XP RPSWPN,*>
\r
230 SOJE N,SYS2D ;AVOID QUESTION IF ONLY 1 PACK
\r
231 SYS2C: PUSHJ P,ASKDEC
\r
232 ASCIIZ <;HOW MANY PRIVATE DRIVES?>
\r
237 SYS3: PUSHJ P,OUTXP
\r
242 ASCIIZ <;RA10 (BRYANT) DISK?>
\r
244 SYS3A: PUSHJ P,OUTXP
\r
245 ASCIIZ <XP RA10N,*>
\r
247 AND N,RA10N ;RA10 AND NO SWAP DEVICE?
\r
248 JUMPE N,SYS3B ;NO. AVOID QUESTION
\r
250 ASCIIZ <;RA10 FOR SWAPPING?>
\r
251 SYS3B: PUSHJ P,OUTXP
\r
252 ASCIIZ <XP RASWPN,*>
\r
256 ASCIIZ <;DPD (DATA PRODUCTS) DISK?>
\r
258 SYS4A: PUSHJ P,OUTXP
\r
261 AND N,DPDN ;DPDN AND NO SWAP DEVICE?
\r
262 JUMPE N,SYS4B ;NO. AVOID QUESTION
\r
264 ASCIIZ <;DPD FOR SWAPPING?>
\r
266 SYS4B: PUSHJ P,OUTXP
\r
267 ASCIIZ <XP DPSWPN,*>
\r
268 \f SUBTTL DETERMIN JOB AND APR CONFIGURATION
\r
269 JOBASK: PUSHJ P,ASKDEC
\r
270 ASCIIZ <;HOW MANY JOBS?[ATTACHED AND DETACHED, COUNTING NULL JOB]>
\r
274 JOBOUT: PUSHJ P,OUTXP
\r
277 MXKASK: PUSHJ P,ASKDEC
\r
278 ASCIIZ <;MAX SIZE OF CORE (IN K) FOR ANY SINGLE USER?
\r
279 ;0 MEANS ALL OF CORE>
\r
280 MXKOUT: PUSHJ P,OUTXP
\r
281 ASCIIZ <XP COREN,*>
\r
283 PDPASK: PUSHJ P,ASKYN
\r
284 ASCIIZ <;PDP-10 PROCESSOR?[N = PDP-6]>
\r
285 PDPOUT: PUSHJ P,OUTXP
\r
286 ASCIIZ <XP PDP10N,*>
\r
288 RELASK: JUMPE N, REL1 ;PDP-10?
\r
289 PUSHJ P,ASKYN ;YES,ASK ABOUT 2 RELOC SOFTWARE
\r
290 ASCIIZ <;2 RELOCATION REG. SOFTWARE?[Y = MUST HAVE KT10A,
\r
291 ;N = JUST 1 RELOC. REG.]>
\r
292 REL1: PUSHJ P,OUTXP
\r
293 ASCIIZ <XP KT10AN,*>
\r
295 JUMPE N,REL2 ;SEGN=0 IF PDP-6 OR NOT 2 RELOC. SOFT
\r
297 ASCIIZ <;HOW MANY MORE SEGMENTS THAN JOBS?[0 UNLESS YOU
\r
298 ;ANTICIPATE A LOT OF DORMANT SEGMENTS]>
\r
299 REL2: PUSHJ P,OUTXP
\r
302 DDTASK: PUSHJ P,ASKYN
\r
303 ASCIIZ <;LOAD EXEC DDT?[N = ONLY IF LOADER HAS RUN OUT OF CORE BEFORE]>
\r
304 DDTOUT: PUSHJ P,OUTXP
\r
308 ASCIIZ <;LOAD LOCAL SYMBOLS?[N = ONLY IF LOADER HAS RUN OUT OF ROOM BEFORE]>
\r
309 SYMOUT: MOVEM N,LOCALN ;SAVE ANSWER FOR LATER INSTRUCTION
\r
310 UDTASK: PUSHJ P,ASKYN
\r
311 ASCIIZ <;LOAD USER DDT?[BOTH CAN BE LOADED TOGETHER,
\r
312 ;USE USER DDT FOR PATCHING UNDER TIME SHARING]>
\r
313 UDTOUT: PUSHJ P,OUTXP
\r
314 ASCIIZ <XP UDDTN,*>
\r
315 NAMASK: PUSHJ P,ASKST2 ;STORE ANSWER IN LOC "ASCSTR"
\r
316 ASCIIZ <;NAME OF THIS SYSTEM (24 CHARS OR LESS)?>
\r
317 NAMOUT: PUSHJ P,OUTSTR ;SUBSTITUTE ANSWER FOR *
\r
318 ASCIIZ <DEFINE SYSNAM
\r
320 SERASK: PUSHJ P,ASKDEC ;GET SERIAL NUMBER OF KA10
\r
321 ASCIIZ <;WHAT IS THE SERIAL NUMBER OF YOUR ARITHMETIC PROCESSOR?>
\r
322 SEROUT: PUSHJ P,OUTXP
\r
323 ASCIIZ <XP APRSN,*>
\r
324 SETZM ASCSTR ;INITIALIZE THIS CELL
\r
325 DEVASK: PUSHJ P,ASKST2 ;STORE ANSWER IN LOC "ASCSTC" (UP TO SIX CHAR)
\r
326 ASCIIZ <;NAME OF SYSTEM DEVICE?[DTA0 USUAL FOR 10/40 SYSTEM,
\r
327 ;DSK USUAL FOR 10/50 SYSTEM]>
\r
330 MOVE WD,[ASCIZ /DSK/]
\r
332 MOVE WD,[ASCIZ /DTA0/]
\r
334 DEVOUT: PUSHJ P,OUTSTR ;SUBSTUTITE ANSWER FOR *
\r
335 ASCIIZ <DEFINE SYSDEV
\r
338 ASCIZ &DEFINE SYSDAT
\r
340 CALL N,[SIXBIT /DATE/]
\r
359 \f SUBTTL SET-UP TTY CONFIGURATION
\r
360 DLSASK: PUSHJ P,ASKYN
\r
361 ASCIIZ <;DATA LINE SCANNER(DC10)?[N = WILL ASK FOR 680 OR 630]>
\r
365 ASCIIZ <;PDP-8 680 COMMUNICATIONS SYSTEM?[Y = 680I TOO, N = WILL ASK FOR 630]>
\r
369 ASCIIZ <;630 COMMUNICATION SYSTEM?>
\r
371 JUMPE N,DLSASK ;LOOP UNTIL HE SAYS Y TO ONE
\r
372 DLSOUT: MOVE N,DLSN
\r
381 \fTTNASK: SKIPE CCIN ;JUST 680?
\r
382 JRST TTN1 ;YES. NO DC10B,E, OR 632
\r
384 ASCIIZ <;HOW MANY DC10B (OR 632) 8-LINE DATA GROUPS?[
\r
385 ;1=TTY0-7, 2=TTY0-17, ... , 8=TTY0-77]>
\r
392 ASCIIZ <;HOW MANY DC10E DATASET CONTROL GROUPS?>
\r
399 ASCIIZ <;HOW MANY (OCTAL) LINES ON YOUR 680(I), INCLUDING
\r
400 ;ITS CONSOLE TELETYPE?>
\r
403 TTNOUT: MOVE N,TTGRPN
\r
405 ASCIIZ <XP TTGRPN,*>
\r
408 ASCIIZ <XP DSGRPN,*>
\r
411 ASCIIZ <XP CCILN,*>
\r
413 \fTTYASK: PUSHJ P,OUTBTH
\r
414 ASCIIZ <;ANSWER THE FOLLOWING QUESTIONS ABOUT YOUR TELETYPE LINES:
\r
415 ;[TYPE OCTAL LINE NUMBERS, ONE PER LINE.
\r
416 ;TYPE EXTRA CR WHEN DONE.]
\r
418 TTY0: PUSHJ P,OUTBTH
\r
419 ASCIIZ <;DATA SET LINES?[PROJECT 1 CAN'T LOGIN, LOGIN RESETS
\r
420 ;LINE TO COMPUTER ECHOING AND NO HARDWARE TABS]>
\r
421 TTY0A: PUSHJ P,TTYIN1
\r
427 TTY1: PUSHJ P,OUTBTH
\r
428 ASCIIZ <;LINES WITH HARDWARE TABS?[MONITOR SIMULATES REST WITH SPACES]>
\r
429 TTY1A: PUSHJ P,TTYIN1
\r
435 TTY2: PUSHJ P,OUTBTH
\r
436 ASCIIZ <;REMOTE LINES?[PROJECT 1 CAN'T LOGIN,]>
\r
437 TTY2A: PUSHJ P,TTYIN1
\r
443 TTY21: PUSHJ P,OUTBTH ;ASK ABOUT LOCAL COPY LINES
\r
444 ASCIIZ <;LOCAL COPY LINES? [ECHOING PROVIDED BY TERMINAL RATHER
\r
445 ;THAN BY COMPUTER. OFTEN (INCORRECTLY) CALLED "HALF DUPLEX".]>
\r
446 TTY21A: PUSHJ P,TTYIN1 ;GET A LINE NUMBER
\r
447 JRST TTY3 ;JUST A CARRIAGE RETURN
\r
448 PUSHJ P,OUTSTR ;PUT LINE NUMBER IN THE FILE
\r
450 JRST TTY21A ;SEE IF ANY MORE LOCAL COPY LINES
\r
452 TTY3: PUSHJ P,OUTBTH
\r
453 ASCIIZ <;HALF DUPLEX LINES?[TWX OR HALF DUPLEX WIRED SCANNER(DC10C)]>
\r
454 TTY3A: PUSHJ P,TTYIN1
\r
459 \fTTY4: PUSHJ P,OUTBTH
\r
460 ASCIIZ <;SLAVES? [NO COMMANDS MAY BE TYPED]>
\r
461 TTY4A: PUSHJ P,TTYIN1
\r
466 TTY5: PUSHJ P,OUTBTH
\r
467 ASCIIZ <;LINES WITH HARDWARE FORMFEED? [LEAVE OUT IF USERS WOULD RATHER
\r
468 ;NOT GET FORMFEEDS UNTIL THEY DO TTY FORM COMMAND]>
\r
469 TTY5A: PUSHJ P,TTYIN1
\r
474 TTY6: PUSHJ P,OUTBTH
\r
475 ASCIIZ <;LINES WHICH RUN INITIA AT STARTUP?>
\r
476 TTY6A: PUSHJ P,TTYIN1
\r
483 EDTASK: PUSHJ P,ASKYN
\r
484 ASCIIZ <;COMMON.MAC ALREADY EDITED FOR YOUR TTY CONFIGURATION?[
\r
485 ;N = WILL ALLOW YOU TO DEFINE NOW]>
\r
486 EDTOUT: PUSHJ P,OUTXP
\r
487 ASCIIZ <XP EDITN,*>
\r
488 JUMPN N,TTYEND ;DO NOT ASK QUESTIONS ABOUT TTY IF EDITED
\r
490 \fDSCASK: SKIPN DSGRPN ;ANY DC10E'S?
\r
493 ASCIIZ <;WHAT IS THE CORRESPONDENCE BETWEEN THE DC10E LINES
\r
494 ;AND THE DC10B LINES? TYPE "#,#" FOR EACH DATASET. FIRST # IS
\r
495 ;DC10E LINE, SECOND # IS DC10B LINE.[# IS AN OCTAL NUMBER.
\r
496 ;TYPE ONE #,# PER LINE, EXTRA CR WHEN DONE.]>
\r
500 ASCIZ /DEFINE DSASOC <
\r
502 DSC1: PUSHJ P,TTYIN1
\r
506 JRST DSC1 ;LOOP FOR MORE
\r
507 DSC2: PUSHJ P,OUTFIL
\r
512 \f SUBTTL SET-UP GENERAL PERIPHERAL CONFIGURATION
\r
513 PTRASK: PUSHJ P,ASKYN
\r
514 ASCIIZ <;PT READER?>
\r
515 PTROUT: PUSHJ P,OUTXP
\r
516 ASCIIZ <PTRN==* ;NOT GLOBAL BECAUSE OF DSKSER USE>
\r
518 PTPASK: PUSHJ P,ASKYN
\r
519 ASCIIZ <;PT PUNCH?>
\r
520 PTPOUT: PUSHJ P,OUTXP
\r
523 PLTASK: PUSHJ P,ASKYN
\r
525 PLTOUT: PUSHJ P,OUTXP
\r
528 LPTASK: PUSHJ P,ASKDEC
\r
529 ASCIIZ <;HOW MANY LINE PRINTERS?[0,1 OR 2]>
\r
533 LPTOUT: MOVE N,LPTN
\r
537 CDRASK: PUSHJ P,ASKYN
\r
538 ASCIIZ <;CARD READER?>
\r
541 CDR1: PUSHJ P,ASKYN
\r
542 ASCIIZ <;CR10?[Y = CR10A TOO, N IF PDP-6 CARD READER]>
\r
544 CDROUT: MOVE N,CDRN
\r
549 ASCIIZ <XP CR10N,*>
\r
550 CDPASK: PUSHJ P,ASKYN
\r
551 ASCIIZ <;CARD PUNCH?>
\r
552 CDPOUT: PUSHJ P,OUTXP
\r
554 \fDISASK: PUSHJ P,ASKYN
\r
558 DIS1: PUSHJ P,ASKYN
\r
559 ASCIIZ <;TYPE 340?>
\r
561 DISOUT: MOVE N,DISN
\r
565 PUSHJ P,OUTXP ;ASSUME PEN IF DISPLAY
\r
569 ASCIIZ <XP T340N,*>
\r
570 \fDTAASK: PUSHJ P,ASKDEC
\r
571 ASCIIZ <;HOW MANY DECTAPES?[0 TO 8]>
\r
576 DTA1: PUSHJ P,ASKYN
\r
577 ASCIIZ <;TD10 DECTAPE CONTROL?[N = PDP-6 DECTAPE]>
\r
583 DTAOUT: MOVE N,DTAN
\r
589 \fMTAASK: PUSHJ P,ASKDEC
\r
590 ASCIIZ <;HOW MANY MAGTAPES?[0 TO 8]>
\r
595 MTA1: PUSHJ P,ASKYN
\r
596 ASCIIZ <;TM-10A CONTROL?[N = WILL ASK TM-10B, THEN PDP-6 MAGTAPES]>
\r
602 MTA2: PUSHJ P,ASKYN
\r
603 ASCIIZ <;TM-10B CONTROL?>
\r
609 MTA3: PUSHJ P,ASKYN
\r
610 ASCIIZ <;PDP-6 MAGTAPE?>
\r
611 JUMPE N,MTAASK ;LOOP UNTIL HE PICKS ONE
\r
614 MTAOUT: MOVE N,MTAN
\r
623 PTYASK: PUSHJ P,ASKDEC
\r
624 ASCIIZ <;HOW MANY PSEUDO-TTY'S?[EACH CONCURRENT BATCH NEEDS ONE]>
\r
629 \f SUBTTL DETERMIN MISC. PARAMETERS
\r
630 \fASKSYM: PUSHJ P,OUTBTH
\r
631 ASCIIZ <;TYPE "SYMBOL,VALUE" (VALUE IN DECIMAL)[FOR ANY SYMBOLS
\r
632 ;TO BE DEFINED. NEXT QUESTION WILL ASK FOR OCTAL DEFINITION.
\r
633 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
634 PUSHJ P,OUTFIL ;MAKE MACRO CONVERT IN DECIMAL RADIX WHEN COMMON ASS.
\r
636 GETSYM: PUSHJ P,TTYIN
\r
643 SYMDON: PUSHJ P,OUTFIL ;PSEUDO OP BACK TO OCTAL
\r
646 ASKSY8: PUSHJ P,OUTBTH
\r
647 ASCIIZ <;TYPE "SYMBOL,VALUE" (VALUE IN OCTAL)[FOR ANY SYMBOLS
\r
648 ;TO BE DEFINED. TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
649 GETSY8: PUSHJ P,TTYIN
\r
657 \fASKDEV: PUSHJ P,OUTBTH
\r
658 ASCIIZ <;TYPE "DEVICE-MNEMONIC,CHANNEL"FOR SPECIAL DEVICES[
\r
659 ;WITH NEITHER CHANNEL SAVE ROUTINE NOR DEVICE DATA BLOCK.
\r
660 ;"DEVICE" MUST BE 3 CHARACTERS OR LESS.
\r
661 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
663 ASCIZ /DEFINE SPCINT
\r
666 DEV0: PUSHJ P,TTYIN
\r
671 ASCIIZ < SPASGINT *>
\r
674 DEV1: PUSHJ P,OUTFIL
\r
677 ASCIIZ <;TYPE "DEVICE-MNEMONIC,CHANNEL,NO.-OF-DEVICES"[
\r
678 ;FOR SPECIAL DEVICE WITH DEVICE DATA BLOCKS
\r
679 ;"DEVICE" MUST BE 3 CHARS. OR LESS.
\r
680 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
682 ASCIZ /DEFINE SPCDDB
\r
685 DEV2: PUSHJ P,TTYIN
\r
690 ASCIIZ < SPASGDDB *>
\r
692 DEV3: PUSHJ P,OUTFIL
\r
695 ASCIIZ <;TYPE "DEVICE-MNEMONIC,CHANNEL,HIGHEST-AC-TO-SAVE[
\r
696 ;FOR SPECIAL DEVICE WITH CHANNEL SAVE ROUTINES TO SAVE AC'S UP TO
\r
697 ;"HIGHEST-AC-TO-SAVE". "DEVICE" MUST BE 3 CHARS. OR LESS.
\r
698 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
700 ASCIZ /DEFINE SPCSAV
\r
703 DEV4: PUSHJ P,TTYIN
\r
708 ASCIIZ < SPASGSAV *>
\r
710 DEV5: PUSHJ P,OUTFIL
\r
714 \f SUBTTL FINISH OFF THE JOB
\r
716 ASCIIZ <;[MONGEN FINISHED
\r
717 ;NEXT YOU MUST ASSEMBLE COMMON WITH MACRO>
\r
721 ASCIIZ <;AND COMMOD>
\r
722 ASSEM1: PUSHJ P,OUTBTH
\r
723 ASCIIZ <;THEN LOAD IT AND REST OF MONITOR WITH LOADER
\r
724 ;AND FINALLY SAVE IT WITH MONITOR COMMAND SAVE
\r
726 ;[TO ASSEMBLE COMMON, TYPE:
\r
728 ;DSK:COMMON,LPT:_DSK:S,CONFIG,COMMON>
\r
730 ASCIIZ <;TO LOAD NEW MONITOR, TYPE:
\r
736 NOLCLS: SKIPN SYS40N ;10/40 SYSTEM?
\r
738 PUSHJ P,OUTBTH ;YES, TYPE PROPER LIBRARY NAME
\r
739 ASCIIZ <;BIN:COMMON,BIN:SYS50/L>
\r
742 SYS40A: PUSHJ P,OUTBTH
\r
743 ASCIIZ <;DSK:COMMON,COMMOD,DSK:SYS40/L>
\r
744 SYS40B: PUSHJ P,OUTBTH
\r
745 ASCIIZ <;LPT:_/W/D/A/M/P/G>
\r
746 DDT1: PUSHJ P,OUTBTH
\r
747 ASCIIZ <;TO SAVE MONITOR, TYPE:
\r
750 ; END OF CONFIGURATION DEFINITION
\r
753 MOVEI CH,14 ;OUTPUT FORMFEED FOR END OF CONFIG.MAC FILE
\r
755 RELEASE OUTCHN, ;RELEASE OUTPUT FILE
\r
756 CALL [SIXBIT /EXIT/]
\r
757 \f SUBTTL VARIABLE AND PARAMETER STORAGE
\r
759 TOBUF: BLOCK 3 ;TTY OUTPUT BUFFER HEADER
\r
760 TIBUF: BLOCK 3 ;TTY INPUT BUFFER HEADER
\r
761 FOBUF: BLOCK 3 ;FILE OUTPUT BUFFER HEADER
\r
768 \f;VARIABLES WHICH ARE ALSO OUTPUT IN CONFIG.MAC
\r
769 ;NONE OF THE VALUES OF THESE VARIABLES ARE USED OUTSIDE OF THE QUESTION IN WHICH THEY ARE ASKED.
\r
770 VARBEG: ;BEGINNING OF AREA TO BE CLEARED
\r
771 SHORT: 0 ;NON-ZERO IF SHORT DIALOG(OMIT STUFF IN [])
\r
772 LEFTBK: 0 ;NON-ZERO IF LEFT BRACKET SEEN
\r
775 LEVDN: 0 ;LEVEL D VS LEVEL C
\r
784 BTHN: 0 ;BOTH 680 AND DC10
\r
788 TTGRPN: 0 ;GROUPS OF DC10B OR 632
\r
789 DSGRPN: 0 ;GROUPS OF DC10E
\r
790 CCILN: 0 ;LINES OF 680
\r
804 SPCDEV: 0 ;SET NONZERO IF ANY SPECIAL DEVICES
\r
811 VAREND=.-1 ;END OF AREA TO BE CLEARED
\r
812 \f SUBTTL SUBROUTINES
\r
813 ;ROUTINE TO WRITE IN-LINE STRING ON OUTPUT FILE
\r
814 ;CALL: PUSHJ P,OUTFIL
\r
825 ;ROUTINE TO WRITE OUT-OF-LINE STRING ON OUTPUT FILE
\r
826 ;CALL: MOVEI T,[ASCIZ /MESSAGE/]
\r
830 FILO: HRLI T,440700
\r
836 ;ROUTINE TO OUTPUT AN IN LINE STRING TO BOTH FILE AND TTY
\r
837 ;CALL: PUSHJ P,OUTBTH
\r
844 ;ROUTINE TO OUTPUT AN IN-LINE STRING TO TTY
\r
845 ;CALL: PUSHJ P,OUTBTH
\r
853 \f;ROUTINE TO OUTPUT AN OUT-OF-LINE STRING ON TTY
\r
854 ;CALL: MOVEI T,[ASCIZ /STRING/]
\r
858 TTYO: HRLI T,440700
\r
861 CAIE CH,"[" ;IS THIS A LEFT BRACKET?
\r
863 SKIPE SHORT ;YES, IS SHORT DIALOG WANTED?
\r
864 SETOM LEFTBK ;YES, SET LEFT BRACKET SO OUTPUT SUPPRESSED
\r
865 TTYO1: SKIPE LEFTBK ;OUTPUT SUPPRESSED BECAUSE INSIDE []?
\r
867 CAIE CH,";" ;NO, DO NOT TYPE ";" ON TTY
\r
869 TTYO2: CAIN CH,"]" ;END OF LONG STUFF?
\r
870 SETZM LEFTBK ;YES, TURN OFF TTY SUPPRESS FLAG
\r
873 TTYFIN: OUTPUT TOCHN,
\r
875 \f;ROUTINE TO ASK A QUESTION AND ACCEPT Y OR N (1 OR 0)
\r
876 ;CALL: PUSHJ P,ASKYN
\r
877 ; ASCIZ /QUESTION?/
\r
880 ASKYN: PUSHJ P,FCRLF ;PUT CRLF IN FILE ONLY
\r
891 CAME WD,[SIXBIT /0/]
\r
892 CAMN WD,[SIXBIT /N/]
\r
894 CAMN WD,[SIXBIT /NO/]
\r
897 CAME WD,[SIXBIT /1/]
\r
898 CAMN WD,[SIXBIT /Y/]
\r
900 CAME WD,[SIXBIT /YES/]
\r
902 YNOK: PUSHJ P,OUTSTR
\r
908 \f;ROUTINE TO OUTPUT ON FILE ASCIZ STRING IN ASCSTR
\r
909 ; SUBSTITUTED FOR "*"
\r
910 ;CALL: PUSHJ P,OUTSTR
\r
911 ; ASCIIZ <MESSAGE*MESSAGE>
\r
917 STRO: HRLI T,440700
\r
930 \f;ROUTINE TO SUBSTITUTE OCTAL VALUE OF N FOR * IN STRING
\r
931 ; AND OUTPUT ON FILE
\r
932 ; MOVE N,OCTAL NUMBER
\r
933 ;CALL: PUSHJ P,OUTXP
\r
934 ; ASCIZ /MESSAGE*MESSAGE/
\r
935 ;RETURN WITH N PRESERVED
\r
957 XPSUB1: IDIVI N,(R)
\r
964 \f;ROUTINE TO PUT 1 CHAR IN OUTPUT FILE
\r
965 ;CALL: MOVEI CH,CHAR
\r
968 FILPUT: CAIN CH,15 ;CARRIAGE RETURN?
\r
969 POPJ P,0 ;YES. THROW IT AWAY
\r
970 CAIN CH,12 ;LINE FEED?
\r
971 JRST FILPU1 ;YES. TURN INTO CR-LF
\r
972 FILPU2: SOSG FOBUF+2
\r
977 FILPU1: MOVEI CH,15 ;OUTPUT A CR
\r
979 MOVEI CH,12 ;AND A LINEFEED
\r
982 ;ROUTINE TO PUT 1 CHAR IN OUTPUT TTY
\r
983 ;CALL: MOVEI CH,CHAR
\r
986 TTYPUT: SOSG TOBUF+2
\r
990 \f;ROUTINE TO ASK FOR A STRING AND DELETE THE CR-LF FROM THE ANSWER
\r
991 ;CALL: PUSHJ P,ASKST2
\r
994 ASKST2: PUSHJ P,ASKSTZ
\r
1002 ;ROUTINE TO ASK FOR A STRING
\r
1003 ;CALL: PUSHJ PDP,ASKSTR
\r
1004 ; ASCIIZ <QUESTION>
\r
1006 ASKSTR: PUSHJ P,ASKSTZ
\r
1010 ASKSTZ: PUSHJ P,FCRLF ;PUT CRLF IN FILE ONLY
\r
1018 \f;ROUTINE TO ACCEPT 1 LINE FROM TTY AND MOVE TO ASCSTR AND
\r
1019 ; APPEND A NULL CHAR.
\r
1020 ;CALL: PUSHJ P,TTYIN
\r
1022 TTYIN: MOVE T,[XWD 440700,ASCSTR]
\r
1023 ASCLP: PUSHJ P,TTYGET
\r
1031 MOVE B,[XWD 440700,ASCSTR]
\r
1034 ;ROUTINE TO GET 1 CHAR FROM TTY
\r
1035 ;CALL: PUSHJ P,TTYGET
\r
1036 ; RETURN1 WITH CR IN AC CH
\r
1037 ; RETURN2 WITH ANY OTHER CHAR IN AC CH
\r
1039 TTYGET: SOSG TIBUF+2
\r
1050 ;ROUTINE TO ACCEPT 1 LINE FROM TTY AND MOVE TO ASCSTR AND APPEND NULL
\r
1051 ;SAME AS TTYIN, SKIP RETURN IF NON-BLANK LINE
\r
1052 ;CALL: PUSHJ P,TTYIN1
\r
1053 ; BLANK LINE RETURN
\r
1054 ; NON-BLANK LINE RETUNR
\r
1056 TTYIN1: PUSHJ P,TTYIN ;GET LINE
\r
1060 JRST ASKST4 ;REMOVE CR-LF FROM END OF STRING
\r
1061 \f;ROUTINE TO GET FIRST 6 CHAR TYPED IN A RETURN AS SIXBIT
\r
1062 ; LEFT JUSTIFIED IN AC WD
\r
1064 GETWRD: MOVE T,[XWD 440600,WD]
\r
1081 ASCSTR: BLOCK 20 ;ASCIZ STRING
\r
1083 ;ROUTINE TO ASK A QUESTION AND ACCEPT A DECIMAL ANSWER
\r
1084 ;CALL: PUSHJ P,ASKDEC
\r
1085 ; ASCIIZ <QUESTION>
\r
1087 ASKDEC: MOVEI R,12
\r
1089 ASKDC1: MOVEI R,12
\r
1091 \f;ROUTINE TO ASK A QUESTION AND ACCEPT AN OCTAL NUMBER
\r
1092 ;CALL: PUSHJ P,ASKOCT
\r
1093 ; ASCIZ /QUESTION/
\r
1095 ASKOCT: MOVEI R,10
\r
1096 ASKNUM: PUSHJ P,FCRLF ;PRECEDE WITH CRLF IN FILE ONLY
\r
1097 ASKNM1: HRRZ T,(P)
\r
1104 ASKNL: PUSHJ P,TTYGET
\r
1113 ASKNXT: PUSHJ P,FCRLF
\r
1116 ASKERR: PUSHJ P,TTYGET
\r
1122 ;ROUTINE TO OUTPUT CRLF IN OUTPUT FILE
\r
1123 ;CALL: PUSHJ P,FCRLF
\r
1124 ;USED TO SEPARATE QUESTION FROM PREVIOUS MACRO CALL
\r
1126 FCRLF: MOVEI CH,15
\r