Added SRCCOM.MAC
[retro-software/dec/tops10/v4.5.git] / src / mongen.mac
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
3 VMONGN==040\r
4 \r
5 JOBVER=137\r
6         LOC JOBVER\r
7         EXP VMONGN\r
8                                 ;PUT VERSION NUMBER IN JOB DATA AREA\r
9                                         ;ALSO OUTPUT-SEE NEXT PAGE\r
10         RELOC\r
11 \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
16 \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
20 \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
24 \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
47 \r
48 \r
49 ;ANY TTY OUTPUT ENCLOSED IN []'S WILL BE TYPED ONLY IF LONG DIALOG IS IN EFFECT\r
50 \f;ACS\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
55 T=2                             ;TEMPORARY AC\r
56 T1=T+1\r
57 CH=4                            ;CHARACTER AC\r
58 WD=CH+1                         ;WORD AC\r
59                                 ;FIRST ARGUMENT PASSED TO OUTXP\r
60 B=6                             ;BYTE POINTER TO INPUT STRING\r
61 R=7                             ;RADIX FOR INPUT\r
62 CHN=10\r
63 CHN1=11\r
64 CHN2=12\r
65 TTYCHN=0\r
66 TOCHN=0                         ;TTY OUTPUT CHANNEL\r
67 FOCHN=1                         ;FILE OUTPUT CHANNEL\r
68 OUTCHN=1\r
69 \r
70 MLON            ;MULTI LINE LITERAL\r
71 \r
72 \r
73 MAXCHN=8        ;MAXIMUM NUMBER OF DISK CHANNELS\r
74 \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
78 \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
90 \r
91 \r
92 XALL                            ;DO NOT LIST ASCII EXPANSIONS\r
93 \r
94 DEFINE ASCIIZ (A)\r
95 <\r
96         XLIST\r
97         ASCIZ &A\r
98 &\r
99         LIST>\r
100 \f       SUBTTL  INITIALIZATION\r
101 MONGEN: CALLI 0                         ;RESET\r
102         MOVE    P,[IOWD 12,PDLIST]\r
103         SETZM VARBEG\r
104         MOVE N,[XWD VARBEG,VARBEG+1]\r
105         BLT N,VAREND                    ;CLEAR VARIABLE STORAGE\r
106 \r
107         INIT TTYCHN,1\r
108         SIXBIT /TTY/\r
109         XWD TOBUF,TIBUF\r
110         HALT .-3\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
114         PUSHJ P,TTYIN\r
115         PUSHJ   P,GETWRD\r
116         SETZ    N,\r
117         CAIE    CH,":"\r
118         EXCH    WD,N\r
119         SKIPN   WD\r
120         MOVSI   WD,(SIXBIT .DSK.)\r
121         MOVEM   WD,.+2\r
122         INIT OUTCHN,1\r
123         SIXBIT /DSK/\r
124         XWD FOBUF,0             ;INIT OUTPUT DEVICE 'OUTP'\r
125         JRST .+2\r
126         JRST OUTOK              ;LOGICAL DEVICE WAS ASSIGNED\r
127         PUSHJ P,OUTTTY\r
128         ASCIIZ <DEVICE NOT AVAILABLE>\r
129         JRST MON1               ;ASK AGAIN\r
130 \r
131 OUTDIR: SIXBIT  /CONFIG/\r
132 OUTDR1: SIXBIT  /MAC/\r
133         BLOCK   2\r
134 \r
135 OUTOK:  CAIE    CH,":"\r
136         SKIPA   WD,N\r
137         PUSHJ   P,GETWRD\r
138         SKIPN   WD\r
139         MOVE    WD,[SIXBIT .CONFIG.]\r
140         MOVEM   WD,OUTDIR\r
141         CAIE    CH,"."\r
142         PUSHJ   P,GETWRD\r
143         CAIN    CH,"."\r
144         JRST    .+3\r
145         MOVSI   WD,(SIXBIT/MAC/)\r
146         JRST    .+2\r
147         PUSHJ   P,GETWRD\r
148         MOVEM   WD,OUTDR1\r
149         ENTER   OUTCHN,OUTDIR\r
150         JRST ENTERR\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
154 \r
155 \r
156 >\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
159         PUSHJ P,ASKYN\r
160         ASCIIZ <;SHORT DIALOG?[N = LONGER QUESTIONS]>\r
161         MOVEM   N,SHORT         ;REMEMBER FOR QUTTTY ROUT.\r
162         PUSHJ P,ASKYN\r
163         ASCIIZ <;10/30 SYSTEM TO BE BUILT?[N = 10/40 OR 10/50 SYSTEM]>\r
164         JUMPN N,.+2\r
165         JRST    SYSASK+1\r
166         PUSHJ P,ASKYN\r
167         ASCIIZ <;10/40 SYSTEM TO BE BUILT?[N = ASSUME 10/50 SYSTEM]>\r
168         JUMPN N,SYS1\r
169         JRST    SYSASK\r
170 \r
171 ENTERR: PUSHJ P,OUTTTY\r
172         ASCIIZ <ENTER FAILURE>\r
173         JRST MON1\r
174 \fSYSASK:        AOS     SYS40N\r
175         PUSHJ P,ASKYN                   ;FIND OUT IF 10/40 WITH DISK\r
176         ASCIIZ <;DISK?>\r
177         JUMPE N,SYSOUT                  ;DISK SYSTEM?\r
178 SYS1:   AOS DSKN\r
179         AOS LOGINN\r
180 SYSOUT: MOVE N,SYS40N                   ;DEFINE 10/40 SYSTEM SYMBOL\r
181         PUSHJ P,OUTXP\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
186         PUSHJ P,OUTXP\r
187         ASCIIZ <XP SYS50N,*>\r
188         MOVE N,DSKN\r
189         PUSHJ P,OUTXP\r
190         ASCIIZ <XP DSKN,*>\r
191         MOVE N,LOGINN\r
192         PUSHJ P,OUTXP\r
193         ASCIIZ <XP LOGINN,*>\r
194 \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
198 \r
199         PUSHJ P,ASKYN\r
200         ASCIIZ <;RD10 (BURROUGHS) DISK?[ONE DISK TYPE FOR FILES,\r
201 ;SAME TYPE FOR SWAPPING OR ONE OTHER TYPE FOR SWAPPING]>\r
202         MOVEM N,RD10N\r
203 SYS1A:  PUSHJ P,OUTXP\r
204         ASCIIZ <XP RD10N,*>\r
205         SKIPN N,RD10N           ;RD10 REQUESTED?\r
206         JRST SYS1B              ;NO.\r
207         PUSHJ P,ASKYN\r
208         ASCIIZ <;RD10 FOR SWAPPING?[N = CAN SWAP ON SOME OTHER TYPE]>\r
209         MOVEM N,SWPYES\r
210 SYS1B:  PUSHJ P,OUTXP\r
211         ASCIIZ <XP RDSWPN,*>\r
212         SKIPN N,DSKN\r
213         JRST SYS2A\r
214         PUSHJ P,ASKDEC\r
215         ASCIIZ  <;HOW MANY RP01 OR RP02 (MEMOREX) DISK PACK DRIVES?[0 IF NONE]>\r
216 SYS2A:  MOVEM N,RP10N\r
217         PUSHJ P,OUTXP\r
218         ASCIIZ <XP RP10N,*>\r
219         SKIPE   N,RP10N\r
220         SKIPE SWPYES\r
221         JRST SYS2B              ;AVOID QUESTION IF NO RP10 OR ALREADY HAVE SWAP DEV\r
222         PUSHJ P,ASKYN\r
223         ASCIIZ <;RP10 FOR SWAPPING?>\r
224         MOVEM N,SWPYES\r
225 SYS2B:  PUSHJ P,OUTXP\r
226         ASCIIZ <XP RPSWPN,*>\r
227 \f       SKIPN N,RP10N\r
228         JRST SYS3\r
229         MOVE N,RP10N\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
233         CAML N,RP10N\r
234         JRST SYS2C\r
235 SYS2D:  MOVNS N\r
236         ADD N,RP10N\r
237 SYS3:   PUSHJ P,OUTXP\r
238         ASCIIZ <DPCPNO=*>\r
239 \f       SKIPN N,DSKN\r
240         JRST SYS3A\r
241         PUSHJ P,ASKYN\r
242         ASCIIZ <;RA10 (BRYANT) DISK?>\r
243         MOVEM N,RA10N\r
244 SYS3A:  PUSHJ P,OUTXP\r
245         ASCIIZ <XP RA10N,*>\r
246         SETCM N,SWPYES\r
247         AND N,RA10N                     ;RA10 AND NO SWAP DEVICE?\r
248         JUMPE N,SYS3B                   ;NO. AVOID QUESTION\r
249         PUSHJ P,ASKYN\r
250         ASCIIZ <;RA10 FOR SWAPPING?>\r
251 SYS3B:  PUSHJ P,OUTXP\r
252         ASCIIZ <XP RASWPN,*>\r
253         SKIPN N,DSKN\r
254         JRST SYS4A\r
255         PUSHJ P,ASKYN\r
256         ASCIIZ <;DPD (DATA PRODUCTS) DISK?>\r
257         MOVEM N,DPDN\r
258 SYS4A:  PUSHJ P,OUTXP\r
259         ASCIIZ <XP DPDN,*>\r
260         SETCM N,SWPYES\r
261         AND N,DPDN                      ;DPDN AND NO SWAP DEVICE?\r
262         JUMPE N,SYS4B                   ;NO. AVOID QUESTION\r
263         PUSHJ P,ASKYN\r
264         ASCIIZ <;DPD FOR SWAPPING?>\r
265         MOVEM N,SWPYES\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
271         JUMPE   N,JOBASK\r
272         CAILE   N,^D128\r
273         JRST    JOBASK\r
274 JOBOUT: PUSHJ P,OUTXP\r
275         ASCIIZ <XP JOBN,*>\r
276 \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
282 \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
287 \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
294 \r
295         JUMPE N,REL2                    ;SEGN=0 IF PDP-6 OR NOT 2 RELOC. SOFT\r
296         PUSHJ P,ASKDEC\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
300         ASCIIZ <XP SEGN,*>\r
301 \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
305         ASCIIZ <XP DDTN,*>\r
306 \r
307 SYM:    PUSHJ P,ASKYN\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
319 <       ASCIZ \*\>>\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
328         SKIPE   ASCSTR\r
329         JRST    DEVOUT\r
330         MOVE    WD,[ASCIZ /DSK/]\r
331         SKIPN   DSKN\r
332         MOVE    WD,[ASCIZ /DTA0/]\r
333         MOVEM   WD,ASCSTR\r
334 DEVOUT: PUSHJ P,OUTSTR                  ;SUBSTUTITE ANSWER FOR *\r
335         ASCIIZ <DEFINE SYSDEV\r
336 <       SIXBIT "*">>\r
337 \f       PUSHJ   P,OUTFIL\r
338         ASCIZ   &DEFINE SYSDAT\r
339 <       ASCIZ /&\r
340         CALL    N,[SIXBIT /DATE/]\r
341         IDIVI   N,^D12*^D31\r
342         ADDI    N,^D64\r
343         PUSH    P,N\r
344         IDIVI   T,^D31\r
345         MOVEI   N,1(T)\r
346         MOVEI   R,12\r
347         PUSHJ   P,XPSUB1\r
348         MOVEI   CH,"-"\r
349         PUSHJ   P,FILPUT\r
350         MOVEI   N,1(T1)\r
351         PUSHJ   P,XPSUB1\r
352         MOVEI   CH,"-"\r
353         PUSHJ   P,FILPUT\r
354         POP     P,N\r
355         PUSHJ   P,XPSUB1\r
356         PUSHJ   P,OUTFIL\r
357         ASCIIZ  </>>\r
358 \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
362         MOVEM N,DLSN\r
363         JUMPN N,DLSOUT\r
364         PUSHJ P,ASKYN\r
365         ASCIIZ <;PDP-8 680 COMMUNICATIONS SYSTEM?[Y = 680I TOO, N = WILL ASK FOR 630]>\r
366         MOVEM N,CCIN\r
367         JUMPN N,DLSOUT\r
368         PUSHJ P,ASKYN\r
369         ASCIIZ <;630 COMMUNICATION SYSTEM?>\r
370         MOVEM N,DCSN\r
371         JUMPE N,DLSASK                  ;LOOP UNTIL HE SAYS Y TO ONE\r
372 DLSOUT: MOVE N,DLSN\r
373         PUSHJ P,OUTXP\r
374         ASCIIZ <XP DLSN,*>\r
375         MOVE N,CCIN\r
376         PUSHJ P,OUTXP\r
377         ASCIIZ <XP CCIN,*>\r
378         MOVE N,DCSN\r
379         PUSHJ P,OUTXP\r
380         ASCIIZ <XP DCSN,*>\r
381 \fTTNASK:        SKIPE CCIN              ;JUST 680?\r
382         JRST TTN1               ;YES. NO DC10B,E, OR 632\r
383         PUSHJ P,ASKDEC\r
384         ASCIIZ <;HOW MANY DC10B (OR 632) 8-LINE DATA GROUPS?[\r
385 ;1=TTY0-7, 2=TTY0-17, ... , 8=TTY0-77]>\r
386         MOVEM N,TTGRPN\r
387         SKIPN BTHN\r
388         SKIPE DLSN\r
389         SKIPA\r
390         JRST TTN1\r
391         PUSHJ P,ASKDEC\r
392         ASCIIZ <;HOW MANY DC10E DATASET CONTROL GROUPS?>\r
393         MOVEM N,DSGRPN\r
394 TTN1:   SKIPN BTHN\r
395         SKIPE CCIN\r
396         SKIPA\r
397         JRST TTN2\r
398         PUSHJ P,ASKOCT\r
399         ASCIIZ <;HOW MANY (OCTAL) LINES ON YOUR 680(I), INCLUDING\r
400 ;ITS CONSOLE TELETYPE?>\r
401         MOVEM N,CCILN\r
402 TTN2:\r
403 TTNOUT: MOVE N,TTGRPN\r
404         PUSHJ P,OUTXP\r
405         ASCIIZ <XP TTGRPN,*>\r
406         MOVE N,DSGRPN\r
407         PUSHJ P,OUTXP\r
408         ASCIIZ <XP DSGRPN,*>\r
409         MOVE N,CCILN\r
410         PUSHJ P,OUTXP\r
411         ASCIIZ <XP CCILN,*>\r
412 TTNEND:\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
417 >\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
422         JRST TTY1\r
423         PUSHJ P,OUTSTR\r
424         ASCIIZ <XP DSD*,1>\r
425         JRST TTY0A\r
426 \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
430         JRST TTY2               ;CR\r
431         PUSHJ P,OUTSTR\r
432         ASCIIZ <XP TAB*,1>\r
433         JRST TTY1A\r
434 \r
435 TTY2:   PUSHJ P,OUTBTH\r
436         ASCIIZ <;REMOTE LINES?[PROJECT 1 CAN'T LOGIN,]>\r
437 TTY2A:  PUSHJ P,TTYIN1\r
438         JRST TTY21              ;CR\r
439         PUSHJ P,OUTSTR\r
440         ASCIIZ <XP RMT*,1>\r
441         JRST TTY2A\r
442 \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
449         ASCIIZ <XP LCP*,1>\r
450         JRST TTY21A             ;SEE IF ANY MORE LOCAL COPY LINES\r
451 \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
455         JRST TTY4\r
456         PUSHJ P,OUTSTR\r
457         ASCIIZ <XP HLF*,1>\r
458         JRST TTY3A\r
459 \fTTY4:  PUSHJ P,OUTBTH\r
460         ASCIIZ <;SLAVES? [NO COMMANDS MAY BE TYPED]>\r
461 TTY4A:  PUSHJ P,TTYIN1\r
462         JRST TTY5\r
463         PUSHJ P,OUTSTR\r
464         ASCIIZ <XP SLV*,1>\r
465         JRST TTY4A\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
470         JRST TTY6\r
471         PUSHJ P,OUTSTR\r
472         ASCIIZ <XP FRM*,1>\r
473         JRST TTY5A\r
474 TTY6:   PUSHJ P,OUTBTH\r
475         ASCIIZ <;LINES WHICH RUN INITIA AT STARTUP?>\r
476 TTY6A:  PUSHJ P,TTYIN1\r
477         JRST TTY7\r
478         PUSHJ P,OUTSTR\r
479         ASCIIZ <XP INI*,1>\r
480         JRST TTY6A\r
481 TTY7:\r
482 \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
489 \r
490 \fDSCASK:        SKIPN DSGRPN            ;ANY DC10E'S?\r
491         JRST DSCEND             ;NO\r
492         PUSHJ P,OUTBTH\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
497 \r
498 \r
499         PUSHJ P,OUTFIL\r
500         ASCIZ /DEFINE DSASOC <\r
501 /\r
502 DSC1:   PUSHJ P,TTYIN1\r
503         JRST DSC2               ;CR ONLY\r
504         PUSHJ P,OUTSTR\r
505         ASCIIZ <GENLIN *>\r
506         JRST DSC1               ;LOOP FOR MORE\r
507 DSC2:   PUSHJ P,OUTFIL\r
508         ASCIZ />\r
509 /\r
510 DSCEND:\r
511 TTYEND:\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
517 \r
518 PTPASK: PUSHJ P,ASKYN\r
519         ASCIIZ <;PT PUNCH?>\r
520 PTPOUT: PUSHJ P,OUTXP\r
521         ASCIIZ <XP PTPN,*>\r
522 \r
523 PLTASK: PUSHJ P,ASKYN\r
524         ASCIIZ <;PLOTTER?>\r
525 PLTOUT: PUSHJ P,OUTXP\r
526         ASCIIZ <XP PLTN,*>\r
527 \r
528 LPTASK: PUSHJ P,ASKDEC\r
529         ASCIIZ <;HOW MANY LINE PRINTERS?[0,1 OR 2]>\r
530         CAILE   N,2\r
531         JRST    LPTASK\r
532         MOVEM N,LPTN\r
533 LPTOUT: MOVE N,LPTN\r
534         PUSHJ P,OUTXP\r
535         ASCIIZ <XP LPTN,*>\r
536 \r
537 CDRASK: PUSHJ P,ASKYN\r
538         ASCIIZ <;CARD READER?>\r
539         MOVEM N,CDRN\r
540         JUMPE N,CDROUT\r
541 CDR1:   PUSHJ P,ASKYN\r
542         ASCIIZ <;CR10?[Y = CR10A TOO, N IF PDP-6 CARD READER]>\r
543         MOVEM N,CR10N\r
544 CDROUT: MOVE N,CDRN\r
545         PUSHJ P,OUTXP\r
546         ASCIIZ <XP CDRN,*>\r
547         MOVE N,CR10N\r
548         PUSHJ P,OUTXP\r
549         ASCIIZ <XP CR10N,*>\r
550 CDPASK: PUSHJ P,ASKYN\r
551         ASCIIZ <;CARD PUNCH?>\r
552 CDPOUT: PUSHJ P,OUTXP\r
553         ASCIIZ <XP CDPN,*>\r
554 \fDISASK:        PUSHJ P,ASKYN\r
555         ASCIIZ <;DISPLAY?>\r
556         JUMPE N,DISOUT\r
557         MOVEM N,DISN\r
558 DIS1:   PUSHJ P,ASKYN\r
559         ASCIIZ <;TYPE 340?>\r
560         MOVEM N,T340N\r
561 DISOUT: MOVE N,DISN\r
562         PUSHJ P,OUTXP\r
563         ASCIIZ <XP DISN,*>\r
564         MOVE    N,DISN\r
565         PUSHJ P,OUTXP           ;ASSUME PEN IF DISPLAY\r
566         ASCIIZ <XP PENN,*>\r
567         MOVE N,T340N\r
568         PUSHJ P,OUTXP\r
569         ASCIIZ <XP T340N,*>\r
570 \fDTAASK:        PUSHJ P,ASKDEC\r
571         ASCIIZ <;HOW MANY DECTAPES?[0 TO 8]>\r
572         JUMPE N,DTAOUT\r
573         CAILE   N,^D8\r
574         JRST    DTAASK\r
575         MOVEM N, DTANN\r
576 DTA1:   PUSHJ P,ASKYN\r
577         ASCIIZ <;TD10 DECTAPE CONTROL?[N = PDP-6 DECTAPE]>\r
578         MOVE T,DTANN\r
579         SKIPE N\r
580         MOVEM T,DTAN\r
581         SKIPN N\r
582         MOVEM T,DTCN\r
583 DTAOUT: MOVE N,DTAN\r
584         PUSHJ P,OUTXP\r
585         ASCIIZ <XP DTAN,*>\r
586         MOVE N,DTCN\r
587         PUSHJ P,OUTXP\r
588         ASCIIZ <XP DTCN,*>\r
589 \fMTAASK:        PUSHJ P,ASKDEC\r
590         ASCIIZ <;HOW MANY MAGTAPES?[0 TO 8]>\r
591         JUMPE N,MTAOUT\r
592         CAILE   N,^D8\r
593         JRST    MTAASK\r
594         MOVEM N,MTANN\r
595 MTA1:   PUSHJ P,ASKYN\r
596         ASCIIZ <;TM-10A CONTROL?[N = WILL ASK TM-10B, THEN PDP-6 MAGTAPES]>\r
597         JUMPE N,MTA2\r
598         MOVE N,MTANN\r
599         MOVEM N,MTAN\r
600         JRST MTAOUT\r
601 \r
602 MTA2:   PUSHJ P,ASKYN\r
603         ASCIIZ <;TM-10B CONTROL?>\r
604         JUMPE N,MTA3\r
605         MOVE N,MTANN\r
606         MOVEM N,MTBN\r
607         JRST MTAOUT\r
608 \r
609 MTA3:   PUSHJ P,ASKYN\r
610         ASCIIZ <;PDP-6 MAGTAPE?>\r
611         JUMPE N,MTAASK          ;LOOP UNTIL HE PICKS ONE\r
612         MOVE N,MTANN\r
613         MOVEM N,MTCN\r
614 MTAOUT: MOVE N,MTAN\r
615         PUSHJ P,OUTXP\r
616         ASCIIZ <XP MTAN,*>\r
617         MOVE N,MTBN\r
618         PUSHJ P,OUTXP\r
619         ASCIIZ <XP MTBN,*>\r
620         MOVE N,MTCN\r
621         PUSHJ P,OUTXP\r
622         ASCIIZ <XP MTCN,*>\r
623 PTYASK: PUSHJ P,ASKDEC\r
624         ASCIIZ <;HOW MANY PSEUDO-TTY'S?[EACH CONCURRENT BATCH NEEDS ONE]>\r
625         CAILE   N,^D64\r
626         JRST    PTYASK\r
627         PUSHJ P,OUTXP\r
628         ASCIIZ <XP PTYN,*>\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
635         ASCIIZ <RADIX 10>\r
636 GETSYM: PUSHJ   P,TTYIN\r
637         ILDB    CH,B\r
638         CAIN    CH,12\r
639         JRST    SYMDON\r
640         PUSHJ   P,OUTSTR\r
641         ASCIIZ  <XP *>\r
642         JRST    GETSYM\r
643 SYMDON: PUSHJ P,OUTFIL          ;PSEUDO OP BACK TO OCTAL\r
644         ASCIIZ <RADIX 8>\r
645 \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
650         ILDB    CH,B\r
651         CAIN    CH,12\r
652         JRST    OCTDON\r
653         PUSHJ   P,OUTSTR\r
654         ASCIIZ  <XP *>\r
655         JRST    GETSY8\r
656 OCTDON:\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
662         PUSHJ   P,OUTFIL\r
663         ASCIZ   /DEFINE SPCINT\r
664 <\r
665 /\r
666 DEV0:   PUSHJ P,TTYIN\r
667         ILDB CH,B\r
668         CAIN CH,12              ;LF\r
669         JRST DEV1\r
670         PUSHJ P,OUTSTR\r
671         ASCIIZ <        SPASGINT *>\r
672         JRST DEV0\r
673 \r
674 DEV1:   PUSHJ P,OUTFIL\r
675         ASCIZ />/\r
676         PUSHJ P,OUTBTH\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
681         PUSHJ P,OUTFIL\r
682         ASCIZ /DEFINE SPCDDB\r
683 <\r
684 /\r
685 DEV2:   PUSHJ P,TTYIN\r
686         ILDB CH,B\r
687         CAIN CH,12\r
688         JRST DEV3\r
689         PUSHJ P,OUTSTR\r
690         ASCIIZ <        SPASGDDB *>\r
691         JRST DEV2\r
692 DEV3:   PUSHJ P,OUTFIL\r
693         ASCIZ />/\r
694 \f       PUSHJ P,OUTBTH\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
699         PUSHJ P,OUTFIL\r
700         ASCIZ /DEFINE SPCSAV\r
701 <\r
702 /\r
703 DEV4:   PUSHJ P,TTYIN\r
704         ILDB CH,B\r
705         CAIN CH,12\r
706         JRST DEV5\r
707         PUSHJ P,OUTSTR\r
708         ASCIIZ <        SPASGSAV *>\r
709         JRST DEV4\r
710 DEV5:   PUSHJ P,OUTFIL\r
711         ASCIZ />/\r
712 \r
713 REMEND:\r
714 \f       SUBTTL  FINISH OFF THE JOB\r
715         PUSHJ P,OUTBTH\r
716         ASCIIZ  <;[MONGEN FINISHED\r
717 ;NEXT YOU MUST ASSEMBLE COMMON WITH MACRO>\r
718         SKIPN   LEVDN\r
719         JRST    ASSEM1\r
720         PUSHJ   P,OUTBTH\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
725 \r
726 ;[TO ASSEMBLE COMMON, TYPE:\r
727 ;R MACRO\r
728 ;DSK:COMMON,LPT:_DSK:S,CONFIG,COMMON>\r
729         PUSHJ   P,OUTBTH\r
730         ASCIIZ  <;TO LOAD NEW MONITOR, TYPE:\r
731 ;R LOADER>\r
732         SKIPN   LOCALN\r
733         JRST    NOLCLS\r
734         PUSHJ   P,OUTBTH\r
735         ASCIIZ  <;/S>\r
736 NOLCLS: SKIPN SYS40N            ;10/40 SYSTEM?\r
737         JRST SYS40A             ;NO\r
738         PUSHJ P,OUTBTH          ;YES, TYPE PROPER LIBRARY NAME\r
739         ASCIIZ <;BIN:COMMON,BIN:SYS50/L>\r
740         JRST SYS40B\r
741 \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
748 ;SAVE DSK MONITOR\r
749 ;]\r
750 ;       END OF CONFIGURATION DEFINITION\r
751         SUBTTL\r
752 ;]>\r
753         MOVEI CH,14             ;OUTPUT FORMFEED FOR END OF CONFIG.MAC FILE\r
754         PUSHJ P,FILPUT\r
755         RELEASE OUTCHN,         ;RELEASE OUTPUT FILE\r
756         CALL [SIXBIT /EXIT/]\r
757 \f       SUBTTL  VARIABLE AND PARAMETER STORAGE\r
758 ;VARIABLE 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
762 \r
763 PDLIST: BLOCK   12\r
764 \r
765 RC10S:  BLOCK   1\r
766 RP10S:  BLOCK   1\r
767 RA10S:  BLOCK   1\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
773 SYS40N: 0                       ;\r
774 DSKN:   0\r
775 LEVDN:  0                       ;LEVEL D VS LEVEL C\r
776 CHNN:   0\r
777 LOGINN: 0\r
778 RD10N:  0                       ;\r
779 RP10N:  0                       ;\r
780 RA10N:  0                       ;\r
781 DPDN:   0                       ;\r
782 SWPYES: 0\r
783 LOCALN: 0                       ;\r
784 BTHN:   0                       ;BOTH 680 AND DC10\r
785 DLSN:   0                       ;\r
786 CCIN:   0                       ;\r
787 DCSN:   0                       ;\r
788 TTGRPN: 0                       ;GROUPS OF DC10B OR 632\r
789 DSGRPN: 0                       ;GROUPS OF DC10E\r
790 CCILN:  0                       ;LINES OF 680\r
791 CDRN:   0                       ;\r
792 CR10N:  0                       ;\r
793 DISN:   0                       ;\r
794 T340N:  0                       ;\r
795 TVP10N: 0                       ;\r
796 T30N:   0                       ;\r
797 DTANN:  0                       ;\r
798 DTAN:   0                       ;\r
799 DTCN:   0                       ;\r
800 MTANN:  0                       ;\r
801 MTAN:   0                       ;\r
802 MTBN:   0                       ;\r
803 MTCN:   0                       ;\r
804 SPCDEV: 0                       ;SET NONZERO IF ANY SPECIAL DEVICES\r
805 TEMPN:  0                       ;\r
806 TMPN:   0                       ;\r
807 TMPLN:  0                       ;\r
808 LPTN:   0\r
809 MOVIEN: 0                       ;\r
810 LOKN:   0\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
815 ;       ASCIIZ <MESSAGE>\r
816 ;       RETURN\r
817 \r
818 OUTFIL: MOVE T,(P)\r
819         PUSHJ P,FILO\r
820         POP P,CH\r
821         JRST 1(T)\r
822 \r
823 \r
824 \r
825 ;ROUTINE TO WRITE OUT-OF-LINE STRING ON OUTPUT FILE\r
826 ;CALL:  MOVEI T,[ASCIZ /MESSAGE/]\r
827 ;       PUSHJ P,FILO\r
828 ;       RETURN\r
829 \r
830 FILO:   HRLI T,440700\r
831 FILOLP: ILDB CH,T\r
832         JUMPE CH,CPOPJ\r
833         PUSHJ P,FILPUT\r
834         JRST FILOLP\r
835 \r
836 ;ROUTINE TO OUTPUT AN IN LINE STRING TO BOTH FILE AND TTY\r
837 ;CALL:  PUSHJ P,OUTBTH\r
838 ;       ASCIZ /STRING/\r
839 ;       RETURN\r
840 \r
841 OUTBTH: MOVE T,(P)\r
842         PUSHJ P,FILO\r
843                                 ;FALL INTO OUTTTY\r
844 ;ROUTINE TO OUTPUT AN IN-LINE STRING TO TTY\r
845 ;CALL:  PUSHJ P,OUTBTH\r
846 ;       ASCIZ /STRING/\r
847 ;       RETURN\r
848 \r
849 OUTTTY: MOVE T,(P)\r
850         PUSHJ P,TTYO\r
851         POP P,CH\r
852         JRST 1(T)\r
853 \f;ROUTINE TO OUTPUT AN OUT-OF-LINE STRING ON TTY\r
854 ;CALL:  MOVEI T,[ASCIZ /STRING/]\r
855 ;       PUSHJ P,TTYO\r
856 ;       RETURN\r
857 \r
858 TTYO:   HRLI T,440700\r
859 TTYOLP: ILDB CH,T\r
860         JUMPE CH,TTYFIN\r
861         CAIE CH,"["             ;IS THIS A LEFT BRACKET?\r
862         JRST TTYO1              ;NO,\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
866         JRST TTYO2              ;YES\r
867         CAIE CH,";"             ;NO, DO NOT TYPE ";" ON TTY\r
868         PUSHJ P,TTYPUT\r
869 TTYO2:  CAIN CH,"]"             ;END OF LONG STUFF?\r
870         SETZM LEFTBK            ;YES, TURN OFF TTY SUPPRESS FLAG\r
871         JRST TTYOLP\r
872 \r
873 TTYFIN: OUTPUT TOCHN,\r
874 CPOPJ:  POPJ P,\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
878 ;       RETURN\r
879 \r
880 ASKYN:  PUSHJ P,FCRLF           ;PUT CRLF IN FILE ONLY\r
881         HRRZ T,(P)\r
882         PUSHJ P,FILO\r
883 YN1:    HRRZ T,(P)\r
884         HRLS    (P)\r
885         PUSHJ P,TTYO\r
886         AOS     T\r
887         HRRM    T,(P)\r
888         PUSHJ P,TTYIN\r
889         PUSHJ P,GETWRD\r
890         MOVEI N,0\r
891         CAME WD,[SIXBIT /0/]\r
892         CAMN WD,[SIXBIT /N/]\r
893         JRST YNOK\r
894         CAMN WD,[SIXBIT /NO/]\r
895         JRST YNOK\r
896         MOVEI N,1\r
897         CAME WD,[SIXBIT /1/]\r
898         CAMN WD,[SIXBIT /Y/]\r
899         JRST YNOK\r
900         CAME WD,[SIXBIT /YES/]\r
901         JRST YN2\r
902 YNOK:   PUSHJ P,OUTSTR\r
903         ASCIIZ <;*>\r
904         POPJ P,\r
905 \r
906 YN2:    HLRS    (P)\r
907         JRST    YN1\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
912 OUTSTR: MOVE T,(P)\r
913         PUSHJ P,STRO\r
914         POP P,CH\r
915         JRST 1(T)\r
916 \r
917 STRO:   HRLI T,440700\r
918 STROLP: ILDB CH,T\r
919         JUMPE CH,CPOPJ\r
920         CAIN CH,"*"\r
921         JRST STRSUB\r
922         PUSHJ P,FILPUT\r
923         JRST STROLP\r
924 \r
925 STRSUB: PUSH P,T\r
926         MOVEI T,ASCSTR\r
927         PUSHJ P,FILO\r
928         POP P,T\r
929         JRST FILOLP\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
936 \r
937 OUTXP:  MOVE T,(P)\r
938         PUSHJ P,XPO\r
939         POP P,CH\r
940         JRST 1(T)\r
941 \r
942 XPO:    HRLI T,440700\r
943 XPOLP:  ILDB CH,T\r
944         JUMPE CH,CPOPJ\r
945         CAIN CH,"*"\r
946         JRST XPSUB\r
947         PUSHJ P,FILPUT\r
948         JRST XPOLP\r
949 \r
950 XPSUB:  PUSH P,T\r
951         PUSH P,N\r
952         MOVEI   R,10\r
953         PUSHJ P,XPSUB1\r
954         POP P,N\r
955         POP P,T\r
956         JRST    FILOLP\r
957 XPSUB1: IDIVI   N,(R)\r
958         HRLM    T,(P)\r
959         JUMPE N,.+2\r
960         PUSHJ P,XPSUB1\r
961         HLRZ T,(P)\r
962         MOVEI CH,"0"(T)\r
963         JRST FILPUT\r
964 \f;ROUTINE TO PUT 1 CHAR IN OUTPUT FILE\r
965 ;CALL:  MOVEI CH,CHAR\r
966 ;       PUSHJ P,FILPUT\r
967 \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
973         OUTPUT FOCHN,\r
974         IDPB CH,FOBUF+1\r
975         POPJ P,\r
976 \r
977 FILPU1: MOVEI   CH,15           ;OUTPUT A CR\r
978         PUSHJ   P,FILPU2\r
979         MOVEI   CH,12           ;AND A LINEFEED\r
980         JRST    FILPU2\r
981 \r
982 ;ROUTINE TO PUT 1 CHAR IN OUTPUT TTY\r
983 ;CALL:  MOVEI CH,CHAR\r
984 ;       PUSHJ P,TTYPUT\r
985 \r
986 TTYPUT: SOSG TOBUF+2\r
987         OUTPUT TOCHN,\r
988         IDPB CH,TOBUF+1\r
989         POPJ P,\r
990 \f;ROUTINE TO ASK FOR A STRING AND DELETE THE CR-LF FROM THE ANSWER\r
991 ;CALL:  PUSHJ   P,ASKST2\r
992         ASCIIZ  <QUESTION>\r
993 \r
994 ASKST2: PUSHJ   P,ASKSTZ\r
995         PUSHJ   P,TTYIN\r
996         ILDB    T,B\r
997 ASKST4: CAIE    T,12\r
998         JUMPN   T,.-2\r
999         DPB     CH,B\r
1000         POPJ    P,\r
1001 \r
1002 ;ROUTINE TO ASK FOR A STRING\r
1003 ;CALL:  PUSHJ PDP,ASKSTR\r
1004 ;       ASCIIZ <QUESTION>\r
1005 \r
1006 ASKSTR: PUSHJ   P,ASKSTZ\r
1007         JRST    TTYIN\r
1008 \r
1009 \r
1010 ASKSTZ: PUSHJ P,FCRLF           ;PUT CRLF IN FILE ONLY\r
1011         HRRZ T,-1(P)\r
1012         PUSHJ P,FILO\r
1013         HRRZ T,-1(P)\r
1014         PUSHJ P,TTYO\r
1015         AOS     T\r
1016         EXCH    T,(P)\r
1017         JRST    (T)\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
1021 \r
1022 TTYIN:  MOVE T,[XWD 440700,ASCSTR]\r
1023 ASCLP:  PUSHJ P,TTYGET\r
1024         JRST ASCEND\r
1025         IDPB CH,T\r
1026         JRST ASCLP\r
1027 \r
1028 ASCEND: IDPB    CH,T\r
1029         MOVEI CH,0\r
1030         IDPB CH,T\r
1031         MOVE B,[XWD 440700,ASCSTR]\r
1032         POPJ P,\r
1033 \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
1038 \r
1039 TTYGET: SOSG TIBUF+2\r
1040         INPUT TTYCHN,\r
1041         ILDB CH,TIBUF+1\r
1042         JUMPE   CH,TTYGET\r
1043         CAIN    CH,15\r
1044         JRST    TTYGET\r
1045         CAIE CH,12\r
1046         AOS (P)\r
1047         POPJ P,\r
1048 \r
1049 \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
1055 \r
1056 TTYIN1: PUSHJ P,TTYIN           ;GET LINE\r
1057         ILDB T,B                ;LF?\r
1058         CAIE T,12\r
1059         AOS (P)         ;NO,\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
1063 \r
1064 GETWRD: MOVE T,[XWD 440600,WD]\r
1065         MOVEI WD,0\r
1066 GETWDL: ILDB CH,B\r
1067         JUMPE CH,CPOPJ\r
1068         CAIG    CH,15\r
1069         CAIGE   CH,12\r
1070         SKIPA\r
1071         POPJ    P,\r
1072         CAIE    CH,":"\r
1073         CAIN    CH,"."\r
1074         POPJ    P,\r
1075         CAIGE   CH,140\r
1076         TRC CH,40\r
1077         IDPB    CH,T\r
1078         TRNN WD,77\r
1079         JRST GETWDL\r
1080         POPJ P,\r
1081 ASCSTR: BLOCK 20                ;ASCIZ STRING\r
1082 \r
1083 ;ROUTINE TO ASK A QUESTION AND ACCEPT A DECIMAL ANSWER\r
1084 ;CALL:  PUSHJ P,ASKDEC\r
1085 ;       ASCIIZ <QUESTION>\r
1086 \r
1087 ASKDEC: MOVEI R,12\r
1088         JRST ASKNUM\r
1089 ASKDC1: MOVEI   R,12\r
1090         JRST    ASKNM1\r
1091 \f;ROUTINE TO ASK A QUESTION AND ACCEPT AN OCTAL NUMBER\r
1092 ;CALL:  PUSHJ P,ASKOCT\r
1093 ;       ASCIZ /QUESTION/\r
1094 \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
1098         PUSHJ P,FILO\r
1099         MOVEI   CH,";"\r
1100         PUSHJ   P,FILPUT\r
1101 ASKNE:  HRRZ T,(P)\r
1102         PUSHJ P,TTYO\r
1103         MOVEI N,0\r
1104 ASKNL:  PUSHJ P,TTYGET\r
1105         JRST    ASKNXT\r
1106         CAIL CH,"0"\r
1107         CAIL CH,"0"(R)\r
1108         JRST ASKERR\r
1109         IMUL N,R\r
1110         ADDI N,-"0"(CH)\r
1111         PUSHJ   P,FILPUT\r
1112         JRST ASKNL\r
1113 ASKNXT: PUSHJ P,FCRLF\r
1114         POP     P,T1\r
1115         JRST    1(T)\r
1116 ASKERR: PUSHJ   P,TTYGET\r
1117         JRST    ASKNE\r
1118         JRST    .-2\r
1119 \r
1120 \r
1121 \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
1125 \r
1126 FCRLF:  MOVEI CH,15\r
1127         PUSHJ P,FILPUT\r
1128         MOVEI CH,12\r
1129         JRST FILPUT\r
1130 \f       END     MONGEN\r
1131 \r
1132 \f\r
1133 \0\0\0\r