Cleanup of typos.
[retro-software/dec/tops10/v1.19.git] / src / once.mac
1           TITLE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE\r
2           SUBTTL THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
3 ;WHICH SHOULD BE THE LAST LOADED PROGRAM BEFORE SYSMAK AND DDT\r
4 ;THUS IF IT OVERFLOWS INTO THE USER AREA NO HARM IS DONE\r
5 ;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHA\r
6 \r
7 XP SYSFIN,.-1           ;LAST LOC. IN SYSTEM\r
8 NXM=10000 ;NON EX-MEM\r
9 \r
10 INTERNAL PATCH\r
11 \r
12 PATCH:    BLOCK 100 ;PATCH SPACE\r
13                     ;C(SYSSIZE) SHOULD BE UPDATED AS PATCHES ARE MADE\r
14 \r
15 T=TAC     ;SOME ACS\r
16 C=TAC1\r
17 INT=DAT   ;INTERRUPT SERVICE ENTRY POINT(USUALLY A CONSO INSTR.)\r
18 CHL=DEVDAT          ;THE PLACE WHERE PC IS STORED FOR THAT CHANNEL\r
19 \r
20 ;LINK TO SERVICE ROUTINES\r
21 \r
22 INTERNAL LINKSR\r
23 EXTERNAL NDEVM1     ;=NDOV-1 (DEFINED IN IOINI1)\r
24 EXTERNAL DEVINT,JOBSYM\r
25 \r
26 LINKSR:   0                     ;CALLED WITH JSR FROM SYSINI\r
27                                 ;CHAIN INTERUPT SERVICE ROUTINES TOGETH\r
28           HRLZI INT, 254000     ;FORM JRST INSTR.\r
29           MOVEI C, NDEVM1       ;NO. OV DEV. SERV. ROUTINES TO CHAIN\r
30 DEV1:     HLRZ CHL, DEVINT(C)   ;LOC. WHERE PC IS STORED\r
31           HRR INT, DEVINT(C)    ;INTERRUPT SERVICE ROUTINE ENTRY POINT\r
32           MOVE T, 1(CHL)        ;INSERT THIS ROUTINE AT FRONT OF CHAIN\r
33           MOVEM T, 1(INT)\r
34           MOVEM INT, 1(CHL)\r
35           SOJGE C, DEV1\r
36 \f\r
37 \r
38 ;MOVE SYMBOL TABLE UP IN MEMORY\r
39 ;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE\r
40 \r
41           SETZM DAT             ;FIND FIRST NON EX MEM\r
42           CONO APR,NXM          ;CLEAR NON-EX MEM FLAG\r
43           ADDI DAT,2000         ;TRY NEXT 1K BLOCK\r
44           MOVE TAC1,(DAT)       ;REFERENCE THIS LOCATION\r
45           CONSO APR,NXM         ;NON-EXISTENT?\r
46           JRST .-3              ;NO\r
47           SUBI DAT,1            ;YES, HIGHEST LEGAL LOC\r
48           MOVEM DAT,DDTMEM      ;FOR DDT\r
49           SUBI DAT,200-1        ;MAKE ROOM FOR DECDUMP\r
50           HLRE TAC1,JOBSYM      ;-LENGTH OF S. T.\r
51           JUMPE TAC1,JRSTI1     ;0 IF NON S. T. TO MOVE UP\r
52           MOVNS TAC1            ;+LENGTH\r
53           HRRZ TAC,JOBSYM       ;FIRST ADDRESS\r
54           ADDI TAC,(TAC1)\r
55           HRL TAC,TAC1          ;XWD LENGTH,LENGTH+FIRST ADDRESS\r
56           SUBI DAT,1(TAC)       ;NEW LAST+1-OLD LAST+1\r
57           HRRM DAT,STO1         ;DIST. TO MOVE\r
58           MOVE TAC1,JOBSYM      ;-N,FIRST ADD.\r
59           ADDI TAC,1(DAT)       ;FORM NEW S.T. POINTER\r
60           MOVEM TAC1,JOBSYM\r
61           MOVEI TAC1,JOBSYM\r
62           MOVEM TAC1,DDTSYM\r
63           MOVE TAC1,-1(TAC)\r
64 STO1:     MOVEM TAC1,.(TAC)\r
65           SUB TAC,[XWD 1,1]\r
66           JUMPGE TAC,.-3\r
67 \f\r
68 \r
69 ;SETUP LOCATIONS 40 THRU 57\r
70 \r
71 JRSTI1:   MOVE TAC,[XWD LOC40,40]\r
72           BLT TAC,57\r
73           MOVE TAC,JRSTI\r
74           MOVEM TAC,LINKSR+1    ;DO ONCE ONLY\r
75 JRSTI:    JRST @LINKSR\r
76 \r
77 EXTERN UUO0,ERROR\r
78 EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7\r
79 \r
80 LOC40:    0             ;UUO PC\r
81           JSR UUO0      ;TO UUO HANDLER\r
82           JSR CH1\r
83           JSP DAT,ERROR\r
84           JSR CH2\r
85           JSP DAT,ERROR\r
86           JSR CH3\r
87           JSP DAT,ERROR\r
88           JSR CH4\r
89           JSP DAT,ERROR\r
90           JSR CH5\r
91           JSP DAT,ERROR\r
92           JSR CH6\r
93           JSP DAT,ERROR\r
94           JSR CH7\r
95           JSP DAT,ERROR\r
96 \f\r
97 \r
98 \r
99 ;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE\r
100 \r
101 INTERNAL ONCE\r
102 EXTERNAL CONMES,RADX10,CRLF,DECIN,DECIN1\r
103 EXTERNAL THSDAT,MAKEND,JOBFF\r
104 EXTERNAL ERNAM,OCTPNT,SYSSIZ,CONFIG,SYSNUM,SYSDAT\r
105 \r
106 ONCE:     0\r
107           MOVEI TAC,SYSFIN      ;SET SIZE OF MONITOR\r
108           MOVEM TAC,SYSSIZ\r
109           MOVE DAT,LINEP        ;SETUP LINE BYTE POINTER\r
110           MOVE PDP,[XWD ONCEPN,ONCEPD]\r
111           PUSHJ PDP,CRLF\r
112           MOVEI TAC,CONFIG\r
113           PUSHJ PDP,CONMES\r
114           MOVEI TAC,TSEXEC\r
115           PUSHJ PDP,CONMES\r
116           HLRZ TAC,SYSNUM\r
117           PUSHJ PDP,RADX10\r
118           MOVEI TAC,[ASCIZ /./]\r
119           PUSHJ PDP,CONMES\r
120           HRRZ TAC,SYSNUM\r
121           PUSHJ PDP,RADX10\r
122           MOVEI TAC,[ASCIZ / /]\r
123           PUSHJ PDP,CONMES\r
124           MOVEI TAC,SYSDAT\r
125           PUSHJ PDP,CONMES\r
126           PUSHJ PDP,CRLF\r
127           PUSHJ PDP,OPOUT\r
128 \f\r
129 \r
130 ;ASK FOR TODAYS DATE AND CONVERT\r
131 ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1\r
132 \r
133 DATLOP:   SETZM THSDAT\r
134           MOVE DAT,LINEP\r
135           MOVEI TAC,TODATE\r
136           PUSHJ PDP,CONMES\r
137           PUSHJ PDP,OPOUT\r
138           PUSHJ PDP,GETLIN\r
139           JRST DATLOP           ;JUST CR\r
140           PUSHJ PDP,DECIN1      ;MONTH\r
141           JRST DATLOP           ;ERROR\r
142           SKIPE TAC1\r
143           CAILE TAC1,^D12\r
144           JRST DATLOP\r
145           SUBI TAC1,1\r
146           IMULI TAC1,^D31\r
147           ADDM TAC1,THSDAT\r
148           PUSHJ PDP,DECIN1      ;DAY\r
149           JRST DATLOP\r
150           SKIPE TAC1\r
151           CAILE TAC,^D31\r
152           JRST DATLOP\r
153           SUBI TAC1,1\r
154           ADDM TAC1,THSDAT\r
155           PUSHJ PDP,DECIN1      ;YEAR\r
156           JRST DATLOP\r
157           CAIL TAC1,^D65\r
158           CAILE TAC1,^D99\r
159           JRST DATLOP\r
160           SUBI TAC1,^D64        ;YEAR ZERO\r
161           IMULI TAC1,^D12*^D31\r
162           ADDM TAC1,THSDAT\r
163 \f\r
164 \r
165 ;GET TIME OF DAY\r
166 \r
167 EXTERN TIME\r
168 \r
169 TIMLOP:   SETZM TIME\r
170           MOVE DAT,LINEP\r
171           MOVEI TAC,TIMEM\r
172           PUSHJ PDP,CONMES\r
173           PUSHJ PDP,OPOUT\r
174           PUSHJ PDP,GETLIN\r
175           JRST TIMLOP           ;JUST A CR\r
176           ILDB TAC1,TAC\r
177           SUBI TAC1,60\r
178           SKIPL TAC1            ;CHECK FIRST DIGIT OF HOUR\r
179           CAILE TAC1,2\r
180           JRST TIMLOP\r
181           IMUL TAC1,[^D60*^D60*^D60*^D10]\r
182           ADDM TAC1,TIME\r
183           ILDB TAC1,TAC\r
184           SUBI TAC1,60          ;CONVERT TO BINARY\r
185           SKIPL TAC1\r
186           CAILE TAC1,^D9\r
187           JRST TIMLOP\r
188           IMULI TAC1,^D60*^D60*^D60\r
189           ADDM TAC1,TIME\r
190           PUSHJ PDP,DECIN1\r
191           JRST TIMLOP\r
192           CAILE TAC1,^D59\r
193           JRST TIMLOP\r
194           IMULI TAC1,^D60*^D60\r
195           ADDM TAC1,TIME\r
196 \f\r
197 \r
198 ;PRINT IO CONFIGURATION\r
199 \r
200 EXTERN DEVLST\r
201 \r
202            MOVE DAT,LINEP\r
203            MOVEI TAC,IOCONF\r
204            PUSHJ PDP,CONMES\r
205            HLRZ DEVDAT,DEVLST\r
206            MOVEI TAC,ITEM\r
207            PUSH PDP,TAC\r
208 ONCE5:     MOVEI TAC,1\r
209            HLLZ ITEM,DEVNAM(DEVDAT)\r
210 ONCE4:     HLRZ DEVDAT,DEVSER(DEVDAT)\r
211            JUMPE DEVDAT,ONCE6\r
212            HLLZ TAC1,DEVNAM(DEVDAT)\r
213            CAMN TAC1,ITEM\r
214            AOJA TAC,ONCE4\r
215 ONCE6:     MOVE PROG,TAC        ;SAVE NO.\r
216            PUSHJ PDP,RADX10\r
217            MOVEI UUO," "\r
218            IDPB UUO,DAT\r
219            MOVEI UUO,3\r
220            MOVE JDAT,[POINT 6,ITEM]\r
221 ONCE7:     ILDB TAC1,JDAT\r
222            ADDI TAC1,240\r
223            IDPB TAC1,DAT\r
224            SOJG UUO,ONCE7\r
225            MOVEI TAC,[ASCIZ /'S/]\r
226            CAILE PROG,1\r
227            PUSHJ PDP,CONMES\r
228            PUSHJ PDP,CRLF\r
229            JUMPN DEVDAT,ONCE5\r
230            POP PDP,TAC1\r
231            PUSHJ PDP,OPOUT\r
232 \f\r
233 \r
234 ;ASK IF SYSMAK IS WANTED\r
235 \r
236           MOVE DAT,LINEP\r
237           MOVEI TAC,SYSM\r
238           PUSHJ PDP,CONMES\r
239           PUSHJ PDP,OPOUT\r
240           PUSHJ PDP,GETLIN\r
241           JRST ONCE2            ;NO SYSMAK\r
242           MOVEI TAC,MAKEND      ;YES\r
243           MOVEM TAC,SYSSIZ\r
244 \r
245 ;IS EXEC DDT WANTED?\r
246 \r
247 ONCE2:    MOVE DAT,LINEP\r
248           MOVEI TAC,SYSDM\r
249           PUSHJ PDP,CONMES\r
250           PUSHJ PDP,OPOUT\r
251           PUSHJ PDP,GETLIN\r
252           JRST ONCE3            ;NO \r
253           MOVEI TAC,JOBFF       ;FIRST FREE LOCATION\r
254           HRRZM TAC,SYSSIZ\r
255 \f\r
256 \r
257 ;PRINT OCTAL SIZE OF MONITOR\r
258 \r
259 ONCE3:    MOVE DAT,LINEP\r
260           MOVEI TAC,EXECIS\r
261           PUSHJ PDP,CONMES\r
262           MOVE TAC,SYSSIZ\r
263           PUSHJ PDP,OCTPNT\r
264           MOVEI TAC,LENGTH\r
265           PUSHJ PDP,CONMES\r
266           PUSHJ PDP,OPOUT\r
267           JRST @ONCE\r
268 \f\r
269 \r
270 ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE\r
271 ;CALL:    PUSHJ PDP,GETLIN\r
272 ;         JUST A CR TYPED IN\r
273 ;         A LINE TYPED IN,TAC SET AS BYTE POINTER\r
274 \r
275 EXTERN CPOPJ, CPOPJ1\r
276 \r
277 GETLIN:   MOVE TAC,LINEP\r
278           MOVEI ITEM,0\r
279 GET1:     CONSO TTY,40\r
280           JRST .-1\r
281           DATAI TTY,TAC1\r
282           DATAO TTY,TAC1\r
283           IDPB TAC1,TAC\r
284           ANDI TAC1,177\r
285           CAIN TAC1,177         ;RUBOUT\r
286           JRST CPOPJ\r
287           CAIE TAC1,15\r
288           AOJA ITEM,GET1\r
289           CONSO TTY,20\r
290           JRST .-1\r
291           MOVEI TAC1,12\r
292           DATAO TTY,TAC1\r
293           MOVE TAC,LINEP\r
294           JUMPN ITEM,CPOPJ1\r
295           POPJ PDP,\r
296 \f\r
297 \r
298 ;ROUTINE TO TYPE A LINE ON OPERATORS CONSOLE\r
299 ;ECHO CHECK STOPS LINE AND RETURNS\r
300 ;CALL:    DAT SET TO END OF MESSAGE\r
301 \r
302 OPOUT:    MOVE TAC,LINEP\r
303           DATAI TTY,TAC1\r
304 OPOUT1:   CAMN TAC,DAT\r
305           POP PDP,\r
306           CONSZ TTY,40\r
307           JRST OPOUT2           ;ECHO CHECK\r
308           CONSZ TTY,20\r
309           JRST .-1\r
310           ILDB TAC1,TAC\r
311           DATAO TTY,TAC1\r
312           JRST OPOUT1\r
313 OPOUT2:   CONSZ TTY,20\r
314           JRST .-1\r
315           DATAO TTY,[15]\r
316           CONSZ TTY,20\r
317           JRST .-1\r
318           DATAO TTY,[12]\r
319           POPJ PDP,\r
320 \r
321 LINEP:    POINT 7,LINBUF\r
322 LINBUF:   BLOCK 20\r
323 ONCEPN=10\r
324 ONCEPD:   BLOCK ONCEPN\r
325 \f\r
326 \r
327 ;MESSAGES\r
328 \r
329 TSEXEC:   ASCIZ / T. S. EXEC-/\r
330 TODATE:   ASCIZ /\r
331 TYPE TODAY'S DATE AS ABOVE.\r
332 /\r
333 TIMEM:    ASCIZ /\r
334 TYPE 4 DIGIT NAVY TIME(0953 IS 9:53 AM).\r
335 /\r
336 IOCONF:   ASCIZ /\r
337 IO CONFIGURATION\r
338 /\r
339 \r
340 SYSM:     ASCIZ /\r
341 DO YOU WANT SYSMAK(TYPE Y IF YES,CR IF NO)?\r
342 /\r
343 \r
344 SYSDM:    ASCIZ /\r
345 EXEC DDT?\r
346 /\r
347 EXECIS:   ASCIZ /\r
348 EXEC IS /\r
349 LENGTH:   ASCIZ /OCTAL LOCATIONS LONG.\r
350 /\r
351           END,\r