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
181 SYSOUT: MOVE N,SYS40N ;DEFINE 10/40 SYSTEM SYMBOL
\r
183 ASCIIZ <XP SYS40N,*>
\r
186 ASCIIZ <XP SYS50N,*>
\r
192 ASCIIZ <XP LOGINN,*>
\r
194 \f SUBTTL SET-UP DISK CONFIGURATION
\r
195 DSKASK: SKIPN N,DSKN ;NEED A DISK?
\r
196 JRST JOBASK ;NO DISK - NO QUESTION
\r
199 ASCIIZ <;RD10 (BURROUGHS) DISK?[ONE DISK TYPE FOR FILES,
\r
200 ;SAME TYPE FOR SWAPPING OR ONE OTHER TYPE FOR SWAPPING]>
\r
202 SYS1A: PUSHJ P,OUTXP
\r
203 ASCIIZ <XP RD10N,*>
\r
204 SKIPN N,RD10N ;RD10 REQUESTED?
\r
207 ASCIIZ <;RD10 FOR SWAPPING?[N = CAN SWAP ON SOME OTHER TYPE]>
\r
209 SYS1B: PUSHJ P,OUTXP
\r
210 ASCIIZ <XP RDSWPN,*>
\r
214 ASCIIZ <;HOW MANY RP01 OR RP02 (MEMOREX) DISK PACK DRIVES?[0 IF NONE]>
\r
215 SYS2A: MOVEM N,RP10N
\r
217 ASCIIZ <XP RP10N,*>
\r
220 JRST SYS2B ;AVOID QUESTION IF NO RP10 OR ALREADY HAVE SWAP DEV
\r
222 ASCIIZ <;RP10 FOR SWAPPING?>
\r
224 SYS2B: PUSHJ P,OUTXP
\r
225 ASCIIZ <XP RPSWPN,*>
\r
229 SOJE N,SYS2D ;AVOID QUESTION IF ONLY 1 PACK
\r
230 SYS2C: PUSHJ P,ASKDEC
\r
231 ASCIIZ <;HOW MANY PRIVATE DRIVES?>
\r
236 SYS3: PUSHJ P,OUTXP
\r
241 ASCIIZ <;RA10 (BRYANT) DISK?>
\r
243 SYS3A: PUSHJ P,OUTXP
\r
244 ASCIIZ <XP RA10N,*>
\r
246 AND N,RA10N ;RA10 AND NO SWAP DEVICE?
\r
247 JUMPE N,SYS3B ;NO. AVOID QUESTION
\r
249 ASCIIZ <;RA10 FOR SWAPPING?>
\r
250 SYS3B: PUSHJ P,OUTXP
\r
251 ASCIIZ <XP RASWPN,*>
\r
255 ASCIIZ <;DPD (DATA PRODUCTS) DISK?>
\r
257 SYS4A: PUSHJ P,OUTXP
\r
260 AND N,DPDN ;DPDN AND NO SWAP DEVICE?
\r
261 JUMPE N,SYS4B ;NO. AVOID QUESTION
\r
263 ASCIIZ <;DPD FOR SWAPPING?>
\r
265 SYS4B: PUSHJ P,OUTXP
\r
266 ASCIIZ <XP DPSWPN,*>
\r
267 \f SUBTTL DETERMIN JOB AND APR CONFIGURATION
\r
268 JOBASK: PUSHJ P,ASKDEC
\r
269 ASCIIZ <;HOW MANY JOBS?[ATTACHED AND DETACHED, COUNTING NULL JOB]>
\r
273 JOBOUT: PUSHJ P,OUTXP
\r
276 MXKASK: PUSHJ P,ASKDEC
\r
277 ASCIIZ <;MAX SIZE OF CORE (IN K) FOR ANY SINGLE USER?
\r
278 ;0 MEANS ALL OF CORE>
\r
279 MXKOUT: PUSHJ P,OUTXP
\r
280 ASCIIZ <XP COREN,*>
\r
282 PDPASK: PUSHJ P,ASKYN
\r
283 ASCIIZ <;PDP-10 PROCESSOR?[N = PDP-6]>
\r
284 PDPOUT: PUSHJ P,OUTXP
\r
285 ASCIIZ <XP PDP10N,*>
\r
287 RELASK: JUMPE N, REL1 ;PDP-10?
\r
288 PUSHJ P,ASKYN ;YES,ASK ABOUT 2 RELOC SOFTWARE
\r
289 ASCIIZ <;2 RELOCATION REG. SOFTWARE?[Y = MUST HAVE KT10A,
\r
290 ;N = JUST 1 RELOC. REG.]>
\r
291 REL1: PUSHJ P,OUTXP
\r
292 ASCIIZ <XP KT10AN,*>
\r
294 JUMPE N,REL2 ;SEGN=0 IF PDP-6 OR NOT 2 RELOC. SOFT
\r
296 ASCIIZ <;HOW MANY MORE SEGMENTS THAN JOBS?[0 UNLESS YOU
\r
297 ;ANTICIPATE A LOT OF DORMANT SEGMENTS]>
\r
298 REL2: PUSHJ P,OUTXP
\r
301 DDTASK: PUSHJ P,ASKYN
\r
302 ASCIIZ <;LOAD EXEC DDT?[N = ONLY IF LOADER HAS RUN OUT OF CORE BEFORE]>
\r
303 DDTOUT: PUSHJ P,OUTXP
\r
307 ASCIIZ <;LOAD LOCAL SYMBOLS?[N = ONLY IF LOADER HAS RUN OUT OF ROOM BEFORE]>
\r
308 SYMOUT: MOVEM N,LOCALN ;SAVE ANSWER FOR LATER INSTRUCTION
\r
309 UDTASK: PUSHJ P,ASKYN
\r
310 ASCIIZ <;LOAD USER DDT?[BOTH CAN BE LOADED TOGETHER,
\r
311 ;USE USER DDT FOR PATCHING UNDER TIME SHARING]>
\r
312 UDTOUT: PUSHJ P,OUTXP
\r
313 ASCIIZ <XP UDDTN,*>
\r
314 NAMASK: PUSHJ P,ASKST2 ;STORE ANSWER IN LOC "ASCSTR"
\r
315 ASCIIZ <;NAME OF THIS SYSTEM (24 CHARS OR LESS)?>
\r
316 NAMOUT: PUSHJ P,OUTSTR ;SUBSTITUTE ANSWER FOR *
\r
317 ASCIIZ <DEFINE SYSNAM
\r
319 SERASK: PUSHJ P,ASKDEC ;GET SERIAL NUMBER OF KA10
\r
320 ASCIIZ <;WHAT IS THE SERIAL NUMBER OF YOUR ARITHMETIC PROCESSOR?>
\r
321 SEROUT: PUSHJ P,OUTXP
\r
322 ASCIIZ <XP APRSN,*>
\r
323 SETZM ASCSTR ;INITIALIZE THIS CELL
\r
324 DEVASK: PUSHJ P,ASKST2 ;STORE ANSWER IN LOC "ASCSTC" (UP TO SIX CHAR)
\r
325 ASCIIZ <;NAME OF SYSTEM DEVICE?[DTA0 USUAL FOR 10/40 SYSTEM,
\r
326 ;DSK USUAL FOR 10/50 SYSTEM]>
\r
329 MOVE WD,[ASCIZ /DSK/]
\r
331 MOVE WD,[ASCIZ /DTA0/]
\r
333 DEVOUT: PUSHJ P,OUTSTR ;SUBSTUTITE ANSWER FOR *
\r
334 ASCIIZ <DEFINE SYSDEV
\r
337 ASCIZ &DEFINE SYSDAT
\r
339 CALL N,[SIXBIT /DATE/]
\r
358 \f SUBTTL SET-UP TTY CONFIGURATION
\r
360 ASCIIZ <;DATA LINE SCANNER(DC10)?[N = WILL ASK FOR 680 OR 630]>
\r
364 ASCIIZ <;PDP-8 680 COMMUNICATIONS SYSTEM?[Y = 680I TOO, N = WILL ASK FOR 630]>
\r
368 ASCIIZ <;630 COMMUNICATION SYSTEM?>
\r
370 JUMPE N,DLSASK ;LOOP UNTIL HE SAYS Y TO ONE
\r
371 DLSOUT: MOVE N,DLSN
\r
380 \fTTNASK: SKIPE CCIN ;JUST 680?
\r
381 JRST TTN1 ;YES. NO DC10B,E, OR 632
\r
383 ASCIIZ <;HOW MANY DC10B (OR 632) 8-LINE DATA GROUPS?[
\r
384 ;1=TTY0-7, 2=TTY0-17, ... , 8=TTY0-77]>
\r
391 ASCIIZ <;HOW MANY DC10E DATASET CONTROL GROUPS?>
\r
398 ASCIIZ <;HOW MANY (OCTAL) LINES ON YOUR 680(I), INCLUDING
\r
399 ;ITS CONSOLE TELETYPE?>
\r
402 TTNOUT: MOVE N,TTGRPN
\r
404 ASCIIZ <XP TTGRPN,*>
\r
407 ASCIIZ <XP DSGRPN,*>
\r
410 ASCIIZ <XP CCILN,*>
\r
412 \fTTYASK: PUSHJ P,OUTBTH
\r
413 ASCIIZ <;ANSWER THE FOLLOWING QUESTIONS ABOUT YOUR TELETYPE LINES:
\r
414 ;[TYPE OCTAL LINE NUMBERS, ONE PER LINE.
\r
415 ;TYPE EXTRA CR WHEN DONE.]
\r
417 TTY0: PUSHJ P,OUTBTH
\r
418 ASCIIZ <;DATA SET LINES?[PROJECT 1 CAN'T LOGIN, LOGIN RESETS
\r
419 ;LINE TO COMPUTER ECHOING AND NO HARDWARE TABS]>
\r
420 TTY0A: PUSHJ P,TTYIN1
\r
426 TTY1: PUSHJ P,OUTBTH
\r
427 ASCIIZ <;LINES WITH HARDWARE TABS?[MONITOR SIMULATES REST WITH SPACES]>
\r
428 TTY1A: PUSHJ P,TTYIN1
\r
434 TTY2: PUSHJ P,OUTBTH
\r
435 ASCIIZ <;REMOTE LINES?[PROJECT 1 CAN'T LOGIN,]>
\r
436 TTY2A: PUSHJ P,TTYIN1
\r
442 TTY21: PUSHJ P,OUTBTH ;ASK ABOUT LOCAL COPY LINES
\r
443 ASCIIZ <;LOCAL COPY LINES? [ECHOING PROVIDED BY TERMINAL RATHER
\r
444 ;THAN BY COMPUTER. OFTEN (INCORRECTLY) CALLED "HALF DUPLEX".]>
\r
445 TTY21A: PUSHJ P,TTYIN1 ;GET A LINE NUMBER
\r
446 JRST TTY3 ;JUST A CARRIAGE RETURN
\r
447 PUSHJ P,OUTSTR ;PUT LINE NUMBER IN THE FILE
\r
449 JRST TTY21A ;SEE IF ANY MORE LOCAL COPY LINES
\r
451 TTY3: PUSHJ P,OUTBTH
\r
452 ASCIIZ <;HALF DUPLEX LINES?[TWX OR HALF DUPLEX WIRED SCANNER(DC10C)]>
\r
453 TTY3A: PUSHJ P,TTYIN1
\r
458 \fTTY4: PUSHJ P,OUTBTH
\r
459 ASCIIZ <;SLAVES? [NO COMMANDS MAY BE TYPED]>
\r
460 TTY4A: PUSHJ P,TTYIN1
\r
465 TTY5: PUSHJ P,OUTBTH
\r
466 ASCIIZ <;LINES WITH HARDWARE FORMFEED? [LEAVE OUT IF USERS WOULD RATHER
\r
467 ;NOT GET FORMFEEDS UNTIL THEY DO TTY FORM COMMAND]>
\r
468 TTY5A: PUSHJ P,TTYIN1
\r
473 TTY6: PUSHJ P,OUTBTH
\r
474 ASCIIZ <;LINES WHICH RUN INITIA AT STARTUP?>
\r
475 TTY6A: PUSHJ P,TTYIN1
\r
482 EDTASK: PUSHJ P,ASKYN
\r
483 ASCIIZ <;COMMON.MAC ALREADY EDITED FOR YOUR TTY CONFIGURATION?[
\r
484 ;N = WILL ALLOW YOU TO DEFINE NOW]>
\r
485 EDTOUT: PUSHJ P,OUTXP
\r
486 ASCIIZ <XP EDITN,*>
\r
487 JUMPN N,TTYEND ;DO NOT ASK QUESTIONS ABOUT TTY IF EDITED
\r
489 \fDSCASK: SKIPN DSGRPN ;ANY DC10E'S?
\r
492 ASCIIZ <;WHAT IS THE CORRESPONDENCE BETWEEN THE DC10E LINES
\r
493 ;AND THE DC10B LINES? TYPE "#,#" FOR EACH DATASET. FIRST # IS
\r
494 ;DC10E LINE, SECOND # IS DC10B LINE.[# IS AN OCTAL NUMBER.
\r
495 ;TYPE ONE #,# PER LINE, EXTRA CR WHEN DONE.]>
\r
499 ASCIZ /DEFINE DSASOC <
\r
501 DSC1: PUSHJ P,TTYIN1
\r
505 JRST DSC1 ;LOOP FOR MORE
\r
506 DSC2: PUSHJ P,OUTFIL
\r
511 \f SUBTTL SET-UP GENERAL PERIPHERAL CONFIGURATION
\r
512 PTRASK: PUSHJ P,ASKYN
\r
513 ASCIIZ <;PT READER?>
\r
514 PTROUT: PUSHJ P,OUTXP
\r
515 ASCIIZ <PTRN==* ;NOT GLOBAL BECAUSE OF DSKSER USE>
\r
517 PTPASK: PUSHJ P,ASKYN
\r
518 ASCIIZ <;PT PUNCH?>
\r
519 PTPOUT: PUSHJ P,OUTXP
\r
522 PLTASK: PUSHJ P,ASKYN
\r
524 PLTOUT: PUSHJ P,OUTXP
\r
527 LPTASK: PUSHJ P,ASKDEC
\r
528 ASCIIZ <;HOW MANY LINE PRINTERS?[0,1 OR 2]>
\r
532 LPTOUT: MOVE N,LPTN
\r
536 CDRASK: PUSHJ P,ASKYN
\r
537 ASCIIZ <;CARD READER?>
\r
540 CDR1: PUSHJ P,ASKYN
\r
541 ASCIIZ <;CR10?[Y = CR10A TOO, N IF PDP-6 CARD READER]>
\r
543 CDROUT: MOVE N,CDRN
\r
548 ASCIIZ <XP CR10N,*>
\r
549 CDPASK: PUSHJ P,ASKYN
\r
550 ASCIIZ <;CARD PUNCH?>
\r
551 CDPOUT: PUSHJ P,OUTXP
\r
553 \fDISASK: PUSHJ P,ASKYN
\r
557 DIS1: PUSHJ P,ASKYN
\r
558 ASCIIZ <;TYPE 340?>
\r
560 DISOUT: MOVE N,DISN
\r
564 PUSHJ P,OUTXP ;ASSUME PEN IF DISPLAY
\r
568 ASCIIZ <XP T340N,*>
\r
569 \fDTAASK: PUSHJ P,ASKDEC
\r
570 ASCIIZ <;HOW MANY DECTAPES?[0 TO 8]>
\r
575 DTA1: PUSHJ P,ASKYN
\r
576 ASCIIZ <;TD10 DECTAPE CONTROL?[N = PDP-6 DECTAPE]>
\r
582 DTAOUT: MOVE N,DTAN
\r
588 \fMTAASK: PUSHJ P,ASKDEC
\r
589 ASCIIZ <;HOW MANY MAGTAPES?[0 TO 8]>
\r
594 MTA1: PUSHJ P,ASKYN
\r
595 ASCIIZ <;TM-10A CONTROL?[N = WILL ASK TM-10B, THEN PDP-6 MAGTAPES]>
\r
601 MTA2: PUSHJ P,ASKYN
\r
602 ASCIIZ <;TM-10B CONTROL?>
\r
608 MTA3: PUSHJ P,ASKYN
\r
609 ASCIIZ <;PDP-6 MAGTAPE?>
\r
610 JUMPE N,MTAASK ;LOOP UNTIL HE PICKS ONE
\r
613 MTAOUT: MOVE N,MTAN
\r
622 PTYASK: PUSHJ P,ASKDEC
\r
623 ASCIIZ <;HOW MANY PSEUDO-TTY'S?[EACH CONCURRENT BATCH NEEDS ONE]>
\r
628 \f SUBTTL DETERMIN MISC. PARAMETERS
\r
629 \fASKSYM: PUSHJ P,OUTBTH
\r
630 ASCIIZ <;TYPE "SYMBOL,VALUE" (VALUE IN DECIMAL)[FOR ANY SYMBOLS
\r
631 ;TO BE DEFINED. NEXT QUESTION WILL ASK FOR OCTAL DEFINITION.
\r
632 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
633 PUSHJ P,OUTFIL ;MAKE MACRO CONVERT IN DECIMAL RADIX WHEN COMMON ASS.
\r
635 GETSYM: PUSHJ P,TTYIN
\r
642 SYMDON: PUSHJ P,OUTFIL ;PSEUDO OP BACK TO OCTAL
\r
645 ASKSY8: PUSHJ P,OUTBTH
\r
646 ASCIIZ <;TYPE "SYMBOL,VALUE" (VALUE IN OCTAL)[FOR ANY SYMBOLS
\r
647 ;TO BE DEFINED. TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
648 GETSY8: PUSHJ P,TTYIN
\r
656 \fASKDEV: PUSHJ P,OUTBTH
\r
657 ASCIIZ <;TYPE "DEVICE-MNEMONIC,CHANNEL"FOR SPECIAL DEVICES[
\r
658 ;WITH NEITHER CHANNEL SAVE ROUTINE NOR DEVICE DATA BLOCK.
\r
659 ;"DEVICE" MUST BE 3 CHARACTERS OR LESS.
\r
660 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
662 ASCIZ /DEFINE SPCINT
\r
665 DEV0: PUSHJ P,TTYIN
\r
670 ASCIIZ < SPASGINT *>
\r
673 DEV1: PUSHJ P,OUTFIL
\r
676 ASCIIZ <;TYPE "DEVICE-MNEMONIC,CHANNEL,NO.-OF-DEVICES"[
\r
677 ;FOR SPECIAL DEVICE WITH DEVICE DATA BLOCKS
\r
678 ;"DEVICE" MUST BE 3 CHARS. OR LESS.
\r
679 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
681 ASCIZ /DEFINE SPCDDB
\r
684 DEV2: PUSHJ P,TTYIN
\r
689 ASCIIZ < SPASGDDB *>
\r
691 DEV3: PUSHJ P,OUTFIL
\r
694 ASCIIZ <;TYPE "DEVICE-MNEMONIC,CHANNEL,HIGHEST-AC-TO-SAVE[
\r
695 ;FOR SPECIAL DEVICE WITH CHANNEL SAVE ROUTINES TO SAVE AC'S UP TO
\r
696 ;"HIGHEST-AC-TO-SAVE". "DEVICE" MUST BE 3 CHARS. OR LESS.
\r
697 ;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]>
\r
699 ASCIZ /DEFINE SPCSAV
\r
702 DEV4: PUSHJ P,TTYIN
\r
707 ASCIIZ < SPASGSAV *>
\r
709 DEV5: PUSHJ P,OUTFIL
\r
713 \f SUBTTL FINISH OFF THE JOB
\r
715 ASCIIZ <;[MONGEN FINISHED
\r
716 ;NEXT YOU MUST ASSEMBLE COMMON WITH MACRO>
\r
720 ASCIIZ <;AND COMMOD>
\r
721 ASSEM1: PUSHJ P,OUTBTH
\r
722 ASCIIZ <;THEN LOAD IT AND REST OF MONITOR WITH LOADER
\r
723 ;AND FINALLY SAVE IT WITH MONITOR COMMAND SAVE
\r
725 ;[TO ASSEMBLE COMMON, TYPE:
\r
727 ;DSK:COMMON,LPT:_DSK:S,CONFIG,COMMON>
\r
729 ASCIIZ <;TO LOAD NEW MONITOR, TYPE:
\r
735 NOLCLS: SKIPN SYS40N ;10/40 SYSTEM?
\r
737 PUSHJ P,OUTBTH ;YES, TYPE PROPER LIBRARY NAME
\r
738 ASCIIZ <;BIN:COMMON,BIN:SYS50/L>
\r
741 SYS40A: PUSHJ P,OUTBTH
\r
742 ASCIIZ <;DSK:COMMON,COMMOD,DSK:SYS40/L>
\r
743 SYS40B: PUSHJ P,OUTBTH
\r
744 ASCIIZ <;LPT:_/W/D/A/M/P/G>
\r
745 DDT1: PUSHJ P,OUTBTH
\r
746 ASCIIZ <;TO SAVE MONITOR, TYPE:
\r
749 ; END OF CONFIGURATION DEFINITION
\r
752 MOVEI CH,14 ;OUTPUT FORMFEED FOR END OF CONFIG.MAC FILE
\r
754 RELEASE OUTCHN, ;RELEASE OUTPUT FILE
\r
755 CALL [SIXBIT /EXIT/]
\r
756 \f SUBTTL VARIABLE AND PARAMETER STORAGE
\r
758 TOBUF: BLOCK 3 ;TTY OUTPUT BUFFER HEADER
\r
759 TIBUF: BLOCK 3 ;TTY INPUT BUFFER HEADER
\r
760 FOBUF: BLOCK 3 ;FILE OUTPUT BUFFER HEADER
\r
767 \f;VARIABLES WHICH ARE ALSO OUTPUT IN CONFIG.MAC
\r
768 ;NONE OF THE VALUES OF THESE VARIABLES ARE USED OUTSIDE OF THE QUESTION IN WHICH THEY ARE ASKED.
\r
769 VARBEG: ;BEGINNING OF AREA TO BE CLEARED
\r
770 SHORT: 0 ;NON-ZERO IF SHORT DIALOG(OMIT STUFF IN [])
\r
771 LEFTBK: 0 ;NON-ZERO IF LEFT BRACKET SEEN
\r
774 LEVDN: 0 ;LEVEL D VS LEVEL C
\r
783 BTHN: 0 ;BOTH 680 AND DC10
\r
787 TTGRPN: 0 ;GROUPS OF DC10B OR 632
\r
788 DSGRPN: 0 ;GROUPS OF DC10E
\r
789 CCILN: 0 ;LINES OF 680
\r
803 SPCDEV: 0 ;SET NONZERO IF ANY SPECIAL DEVICES
\r
810 VAREND=.-1 ;END OF AREA TO BE CLEARED
\r
811 \f SUBTTL SUBROUTINES
\r
812 ;ROUTINE TO WRITE IN-LINE STRING ON OUTPUT FILE
\r
813 ;CALL: PUSHJ P,OUTFIL
\r
824 ;ROUTINE TO WRITE OUT-OF-LINE STRING ON OUTPUT FILE
\r
825 ;CALL: MOVEI T,[ASCIZ /MESSAGE/]
\r
829 FILO: HRLI T,440700
\r
835 ;ROUTINE TO OUTPUT AN IN LINE STRING TO BOTH FILE AND TTY
\r
836 ;CALL: PUSHJ P,OUTBTH
\r
843 ;ROUTINE TO OUTPUT AN IN-LINE STRING TO TTY
\r
844 ;CALL: PUSHJ P,OUTBTH
\r
852 \f;ROUTINE TO OUTPUT AN OUT-OF-LINE STRING ON TTY
\r
853 ;CALL: MOVEI T,[ASCIZ /STRING/]
\r
857 TTYO: HRLI T,440700
\r
860 CAIE CH,"[" ;IS THIS A LEFT BRACKET?
\r
862 SKIPE SHORT ;YES, IS SHORT DIALOG WANTED?
\r
863 SETOM LEFTBK ;YES, SET LEFT BRACKET SO OUTPUT SUPPRESSED
\r
864 TTYO1: SKIPE LEFTBK ;OUTPUT SUPPRESSED BECAUSE INSIDE []?
\r
866 CAIE CH,";" ;NO, DO NOT TYPE ";" ON TTY
\r
868 TTYO2: CAIN CH,"]" ;END OF LONG STUFF?
\r
869 SETZM LEFTBK ;YES, TURN OFF TTY SUPPRESS FLAG
\r
872 TTYFIN: OUTPUT TOCHN,
\r
874 \f;ROUTINE TO ASK A QUESTION AND ACCEPT Y OR N (1 OR 0)
\r
875 ;CALL: PUSHJ P,ASKYN
\r
876 ; ASCIZ /QUESTION?/
\r
879 ASKYN: PUSHJ P,FCRLF ;PUT CRLF IN FILE ONLY
\r
890 CAME WD,[SIXBIT /0/]
\r
891 CAMN WD,[SIXBIT /N/]
\r
893 CAMN WD,[SIXBIT /NO/]
\r
896 CAME WD,[SIXBIT /1/]
\r
897 CAMN WD,[SIXBIT /Y/]
\r
899 CAME WD,[SIXBIT /YES/]
\r
901 YNOK: PUSHJ P,OUTSTR
\r
907 \f;ROUTINE TO OUTPUT ON FILE ASCIZ STRING IN ASCSTR
\r
908 ; SUBSTITUTED FOR "*"
\r
909 ;CALL: PUSHJ P,OUTSTR
\r
910 ; ASCIIZ <MESSAGE*MESSAGE>
\r
916 STRO: HRLI T,440700
\r
929 \f;ROUTINE TO SUBSTITUTE OCTAL VALUE OF N FOR * IN STRING
\r
930 ; AND OUTPUT ON FILE
\r
931 ; MOVE N,OCTAL NUMBER
\r
932 ;CALL: PUSHJ P,OUTXP
\r
933 ; ASCIZ /MESSAGE*MESSAGE/
\r
934 ;RETURN WITH N PRESERVED
\r
956 XPSUB1: IDIVI N,(R)
\r
963 \f;ROUTINE TO PUT 1 CHAR IN OUTPUT FILE
\r
964 ;CALL: MOVEI CH,CHAR
\r
967 FILPUT: CAIN CH,15 ;CARRIAGE RETURN?
\r
968 POPJ P,0 ;YES. THROW IT AWAY
\r
969 CAIN CH,12 ;LINE FEED?
\r
970 JRST FILPU1 ;YES. TURN INTO CR-LF
\r
971 FILPU2: SOSG FOBUF+2
\r
976 FILPU1: MOVEI CH,15 ;OUTPUT A CR
\r
978 MOVEI CH,12 ;AND A LINEFEED
\r
981 ;ROUTINE TO PUT 1 CHAR IN OUTPUT TTY
\r
982 ;CALL: MOVEI CH,CHAR
\r
985 TTYPUT: SOSG TOBUF+2
\r
989 \f;ROUTINE TO ASK FOR A STRING AND DELETE THE CR-LF FROM THE ANSWER
\r
990 ;CALL: PUSHJ P,ASKST2
\r
993 ASKST2: PUSHJ P,ASKSTZ
\r
1001 ;ROUTINE TO ASK FOR A STRING
\r
1002 ;CALL: PUSHJ PDP,ASKSTR
\r
1003 ; ASCIIZ <QUESTION>
\r
1005 ASKSTR: PUSHJ P,ASKSTZ
\r
1009 ASKSTZ: PUSHJ P,FCRLF ;PUT CRLF IN FILE ONLY
\r
1017 \f;ROUTINE TO ACCEPT 1 LINE FROM TTY AND MOVE TO ASCSTR AND
\r
1018 ; APPEND A NULL CHAR.
\r
1019 ;CALL: PUSHJ P,TTYIN
\r
1021 TTYIN: MOVE T,[XWD 440700,ASCSTR]
\r
1022 ASCLP: PUSHJ P,TTYGET
\r
1030 MOVE B,[XWD 440700,ASCSTR]
\r
1033 ;ROUTINE TO GET 1 CHAR FROM TTY
\r
1034 ;CALL: PUSHJ P,TTYGET
\r
1035 ; RETURN1 WITH CR IN AC CH
\r
1036 ; RETURN2 WITH ANY OTHER CHAR IN AC CH
\r
1038 TTYGET: SOSG TIBUF+2
\r
1049 ;ROUTINE TO ACCEPT 1 LINE FROM TTY AND MOVE TO ASCSTR AND APPEND NULL
\r
1050 ;SAME AS TTYIN, SKIP RETURN IF NON-BLANK LINE
\r
1051 ;CALL: PUSHJ P,TTYIN1
\r
1052 ; BLANK LINE RETURN
\r
1053 ; NON-BLANK LINE RETUNR
\r
1055 TTYIN1: PUSHJ P,TTYIN ;GET LINE
\r
1059 JRST ASKST4 ;REMOVE CR-LF FROM END OF STRING
\r
1060 \f;ROUTINE TO GET FIRST 6 CHAR TYPED IN A RETURN AS SIXBIT
\r
1061 ; LEFT JUSTIFIED IN AC WD
\r
1063 GETWRD: MOVE T,[XWD 440600,WD]
\r
1080 ASCSTR: BLOCK 20 ;ASCIZ STRING
\r
1082 ;ROUTINE TO ASK A QUESTION AND ACCEPT A DECIMAL ANSWER
\r
1083 ;CALL: PUSHJ P,ASKDEC
\r
1084 ; ASCIIZ <QUESTION>
\r
1086 ASKDEC: MOVEI R,12
\r
1088 ASKDC1: MOVEI R,12
\r
1090 \f;ROUTINE TO ASK A QUESTION AND ACCEPT AN OCTAL NUMBER
\r
1091 ;CALL: PUSHJ P,ASKOCT
\r
1092 ; ASCIZ /QUESTION/
\r
1094 ASKOCT: MOVEI R,10
\r
1095 ASKNUM: PUSHJ P,FCRLF ;PRECEDE WITH CRLF IN FILE ONLY
\r
1096 ASKNM1: HRRZ T,(P)
\r
1103 ASKNL: PUSHJ P,TTYGET
\r
1112 ASKNXT: PUSHJ P,FCRLF
\r
1115 ASKERR: PUSHJ P,TTYGET
\r
1121 ;ROUTINE TO OUTPUT CRLF IN OUTPUT FILE
\r
1122 ;CALL: PUSHJ P,FCRLF
\r
1123 ;USED TO SEPARATE QUESTION FROM PREVIOUS MACRO CALL
\r
1125 FCRLF: MOVEI CH,15
\r