Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | /OS8 BASIC EDITOR, V5A |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | // | |
10 | / | |
11 | / | |
12 | / | |
13 | / | |
14 | /COPYRIGHT (C) 1972, 1973, 1974, 1975 | |
15 | /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. | |
16 | / | |
17 | / | |
18 | / | |
19 | /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A | |
20 | /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- | |
21 | /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER | |
22 | /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE | |
23 | /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO | |
24 | /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE | |
25 | /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. | |
26 | / | |
27 | / | |
28 | /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT | |
29 | /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL | |
30 | /EQUIPMRNT COROPATION. | |
31 | / | |
32 | /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS | |
33 | /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. | |
34 | / | |
35 | / | |
36 | / | |
37 | / | |
38 | / | |
39 | / | |
40 | \f/DEC-S8-LBASA-B-LA | |
41 | / | |
42 | /COPYRIGHT C 1972, 1973, 1974 | |
43 | / | |
44 | /DIGITAL EQUIPMENT CORPORATION | |
45 | /MAYNARD,MASSACHUSETTS 01754 | |
46 | / | |
47 | /AUGUST 19, 1972 | |
48 | / | |
49 | /HANK MAURER, 1972 | |
50 | /LEN ELEKMAN, 1972 | |
51 | /SHAWN SPILMAN, 1973 | |
52 | / | |
53 | / | |
54 | /ASSEMBLE AND LOAD AS FOLLOWS: | |
55 | / | |
56 | / .R PAL8 | |
57 | / *BASIC,BASIC<BASIC.03 | |
58 | / .R ABSLDR | |
59 | / *BASIC$ | |
60 | / .SA SYS BASIC;3211 | |
61 | / | |
62 | /NOTE DIFFERENCES FROM VERSION 1 AS FOLLOWS: | |
63 | / | |
64 | / .R SRCCOM | |
65 | / *LPT:<BASIC.01,BASIC.03 | |
66 | / * | |
67 | / | |
68 | VERSON= 5 /VERSION LOCATED IN CORE AT TAG "VERLOC" | |
69 | /LEFT 6BIT HALF = VERSION NUMBER+21 | |
70 | /RIGHT 6BIT HALF = PATCH LEVEL+41 (A=01) | |
71 | ||
72 | / | |
73 | /FIXES FOR V4 J.K. 1975 | |
74 | / | |
75 | /.LINE TOO LONG ERROR MESSAGE | |
76 | /.CLEAR CD OPTION TABLE AT START UP | |
77 | /.LIST FROM ACROSS FLD BOUNDRIES | |
78 | /.MEMORY OVERFLOW | |
79 | /.INPUT FROM TTY | |
80 | ||
81 | /JR 5-APR-77 ADDED EXTENDED DATE PRINTOUT | |
82 | /JR 13-APR-77 ADDED SCROLLING, SCOPE SUPPORT AND .BASIC COMMAND INTERFACE | |
83 | /JR 30-APR-77 FIX JSW FIELD BUG | |
84 | \f BCSIZE= 3700 / SIZE OF BCOMP.SV | |
85 | BCBEGN= 7001 / START OF BCOMP | |
86 | INFO= 7604 / INFORMATION AREA (FIELD 1) | |
87 | JSW= 7746 /JOB STATUS WORD IN FIELD 0 | |
88 | OS8RES= 3400 / SWAP AREA FOR OS8 | |
89 | DSKBUF= 4200 / FILE BUFFER | |
90 | HANDLR= 4600 / INPUT OUTPUT HANDLER ADDRESS | |
91 | TXTAREA=5200 / START OF TEXT AREA | |
92 | MDATE= 7666 /ADDR OF OS8 DATE IN FIELD 1 | |
93 | BIPCCL= 7777 /ADDR OF DATE EXTENSION IN FIELD 0 | |
94 | *3 | |
95 | SWAPT1, 0 | |
96 | SWAPT2, 0 | |
97 | SWAPT3, 0 | |
98 | SWAPT4, 0 | |
99 | 0 | |
100 | X10, INFO-1 | |
101 | X11, NAMLST-1 | |
102 | X12, 0 | |
103 | X13, 0 | |
104 | X14, 0 | |
105 | X15, 0 | |
106 | X16, 0 | |
107 | X17, 0 | |
108 | *20 | |
109 | RDTMP, 0 /USED BY INPUT ROUTINE | |
110 | RDPTR, 0 | |
111 | SIZE, 0 /USED BY LINE EDITOR STUFF | |
112 | TEMP, 0 | |
113 | TEMP2, 0 | |
114 | TOWARD, 0 | |
115 | PTR, 0 | |
116 | NDIGS, 0 | |
117 | NCHARS, 0 | |
118 | COFLAG, 0 /=0 IF CTRL/O | |
119 | CHNFLAG,0 /=1 IF BACK FROM RUN, 0 IF OLD | |
120 | RUNFLAG,0 /=1 IF RUN, 0 IF SAVE | |
121 | OLDFLAG,0 /=1 IF INPUT COMING FROM FILE | |
122 | EOFADR, TXTAREA | |
123 | CORTMP, 0 | |
124 | CORSIZ, 1 | |
125 | LINENO, 0;0 /HOLDS MOST RECENT LINE NUM | |
126 | EOFLIN, 0;0 /LAST LINE NUMBER | |
127 | NAME, 0;0;0;0 /NAME BUFFER | |
128 | FNAME, FILENAME NONAME.BA /CURRENT FILE NAME | |
129 | DEVHAN, 0 /ADDRESS OF DEVICE HANDLER | |
130 | DEVNUM, 0 /CURRENT DEVICE NUMBER | |
131 | SWPNUM, 0 /SWAPPER FLAG (FOR ^C) | |
132 | O7700, 7700 | |
133 | O200, 200 | |
134 | O201, 201 | |
135 | O7761, 7761 | |
136 | O177, 177 | |
137 | O232, 232 | |
138 | O7201, 7201 | |
139 | O7706, 7706 | |
140 | O32, 32 | |
141 | O7200, 7200 | |
142 | O7600, 7600 | |
143 | O17, 17 | |
144 | O260, 260 | |
145 | O237, 237 | |
146 | O13, 13 | |
147 | O215, 215 | |
148 | O212, 212 | |
149 | O37, 37 | |
150 | O7741, 7741 | |
151 | O7405, 7405 | |
152 | O7701, 7701 | |
153 | O7772, 7772 | |
154 | O6171, 6171 | |
155 | O6211, 6211 | |
156 | O7770, 7770 | |
157 | O6201, 6201 | |
158 | O10, 10 | |
159 | O7774, 7774 | |
160 | O7766, 7766 | |
161 | O7634, 7634 | |
162 | O137, 137 | |
163 | O7746, 7746 | |
164 | O36, 36 | |
165 | O77, 77 | |
166 | O7745, 7745 | |
167 | O12, 12 | |
168 | O7771, 7771 | |
169 | O7400, 7400 | |
170 | O7760, 7760 | |
171 | / | |
172 | O14, 14 | |
173 | CSFLG, 0 | |
174 | \f PAGE | |
175 | GETLIN, 0 /GET A LINE FROM TTY. | |
176 | TAD I (HEIGHT /RESET SCREEN HEIGHT ON USER INPUT | |
177 | DCA I (LINCNT | |
178 | DCA NDIGS /CLEAR LINE NUMBER. | |
179 | DCA CSFLG /ZERO OUT ^S FLAG WHENEVER WE GET INPUT | |
180 | DCA NCHARS /CLEAR TEXT COUNT. | |
181 | IGNORE, CLA | |
182 | JMS I [GETCH | |
183 | DCA TEMP2 /SAVE CHAR | |
184 | CLL CMA RTL /CHECK FOR CONTROL C | |
185 | TAD TEMP2 | |
186 | SNA | |
187 | JMP I (BYEBYE /ITS ^C EXIT TO OS8 | |
188 | TAD O7766 /CHECK FOR CARRIAGE RETURN | |
189 | SNA | |
190 | JMP CARRET /JUMP IF 015 - CARRET. | |
191 | TAD O7770 /CHECK FOR ^U | |
192 | SNA | |
193 | JMP ALT /TREAT ^U AS ALTMODE | |
194 | TAD O7772 /CHECK FOR ALTMODE | |
195 | SNA | |
196 | JMP ALT /JUMP IF 033 - ALTMODE. | |
197 | TAD O7634 /CHECK FOR RUBOUT | |
198 | SNA | |
199 | JMP ARROW /TREAT LIKE BACK ARROW | |
200 | IAC /CHECK FOR ALTMODE | |
201 | SNA | |
202 | JMP ALT /JUMP IF 176 - ALTMODE. | |
203 | IAC | |
204 | SZA | |
205 | JMP .+4 /PRINT IF 175 - ALTMODE. | |
206 | ALT, JMS I [TYPE | |
207 | MSGALT | |
208 | JMP GETLIN+1 | |
209 | TAD O36 /CHECK FOR BACK ARROW | |
210 | SNA | |
211 | JMP ARROW /JUMP IF 137 - BACKARROW. | |
212 | CLL | |
213 | TAD O77 | |
214 | SNL | |
215 | JMP IGNORE /JUMP IF NOT PRINTABLE. | |
216 | IAC | |
217 | DCA TEMP /SAVE IT(SP=01,^=77,NO 00). | |
218 | TAD OLDFLAG /INPUT FROM FILE ? | |
219 | SZA CLA | |
220 | JMP .+3 /YES, DON'T ECHO | |
221 | TAD TEMP2 | |
222 | JMS I [TTYOUT /PRINT ON TTY | |
223 | TAD NCHARS | |
224 | SZA CLA | |
225 | JMP ISTEXT /NOT LINE NUMBER. | |
226 | TAD TEMP | |
227 | TAD O7745 /SEE IF ITS A DIGIT | |
228 | JMS I [LNDIG /PUT DIGIT INTO LINE NUM | |
229 | JMP IGNORE /GET NEXT CHAR | |
230 | ISTEXT, TAD NCHARS /PUT CHAR IN THE LINE. | |
231 | TAD O7405 | |
232 | SPA CLA | |
233 | JMP .+5 | |
234 | JMS I [CRLF | |
235 | JMS I [TYPE /250 CHARS IS OK TO FIT 1 MORE. | |
236 | MSGTOO | |
237 | JMP GETLIN+1/IF AN EVEN NUMBER | |
238 | TAD NCHARS /OF CHARS SO FAR | |
239 | CLL RAR | |
240 | TAD [LINE+2 | |
241 | DCA PTR | |
242 | SZL | |
243 | JMP RIGHTY | |
244 | TAD TEMP /THEN STORE AS THE LEFT | |
245 | CLL RTL /HALF OF THE WORD. | |
246 | RTL | |
247 | RTL | |
248 | JMP .+4 | |
249 | RIGHTY, TAD I PTR /ELSE AS THE RIGHT. | |
250 | AND O7700 | |
251 | TAD TEMP | |
252 | DCA I PTR | |
253 | ISZ NCHARS | |
254 | JMP IGNORE | |
255 | ARROW, TAD OLDFLAG /INPUT FROM FILE ? | |
256 | SNA CLA | |
257 | JMS I (PRTBSP /NO, GO PRINT BACKSPACE OR BACKARROW | |
258 | CLA CMA | |
259 | TAD NCHARS /IF THERE IS A TEXT CHAR TO ERASE | |
260 | SPA | |
261 | JMP .+3 | |
262 | DCA NCHARS /THEN ERASE IT. | |
263 | JMP IGNORE | |
264 | TAD NDIGS /OTHERWISE, IF THERE IS A LINENO | |
265 | SMA /CHARACTER TO ERASE THEN ERASE | |
266 | DCA NDIGS /THAT. | |
267 | JMP IGNORE /OTHERWISE, NEVER MIND. | |
268 | CARRET, TAD OLDFLAG /INPUT FROM FILE ? | |
269 | SNA CLA | |
270 | JMS I [CRLF /NO, PRINT CR-LF | |
271 | TAD NCHARS | |
272 | SZA | |
273 | JMP .+4 /NOT AN EMPTY LINE | |
274 | TAD NDIGS /ANY CHARS AT ALL ? | |
275 | SNA CLA | |
276 | JMP IGNORE /NO, IGNORE EMPTY LINES | |
277 | CLL RAR | |
278 | TAD [LINE+2 | |
279 | DCA PTR | |
280 | SZL | |
281 | TAD I PTR /STORE 00 (CAR. RET.) LIKE ALL | |
282 | AND O7700 /THE OTHER CHARACTERS. | |
283 | DCA I PTR | |
284 | JMS I [NORM /NORMALIZE LINE NUMBER | |
285 | JMP I GETLIN | |
286 | /CRLF, 0 /PRINT CR-LF | |
287 | / TAD O215 | |
288 | / JMS I [TTYOUT | |
289 | / TAD O212 | |
290 | / JMS I [TTYOUT | |
291 | / JMP I CRLF | |
292 | DUMMY, 0 | |
293 | CLA | |
294 | ISZ DUMMY | |
295 | JMP I DUMMY | |
296 | PATCH4, TAD [NAME+3 | |
297 | DCA TEMP2 | |
298 | CMA | |
299 | DCA SIZE | |
300 | JMP I (NAMLUP | |
301 | ||
302 | PAGE | |
303 | \fLNDIG, 0 /GET DIGIT INTO LINE NUM | |
304 | CLL | |
305 | TAD O12 | |
306 | SZL | |
307 | JMP .+4 | |
308 | CLA /NOT A DIGIT | |
309 | ISZ LNDIG /RETURN +1 | |
310 | JMP I LNDIG | |
311 | DCA TEMP /SAVE DIGIT | |
312 | ISZ NDIGS | |
313 | TAD NDIGS | |
314 | TAD O7771 | |
315 | SMA | |
316 | JMP I LNDIG /IGNORE MORE THAN 6 DIGITS. | |
317 | TAD .+3 | |
318 | DCA .+1 /PUT IN THE NTH DIGIT IN THE | |
319 | HLT /4 BIT BCD LINE NUMBER: | |
320 | JMP .+7 | |
321 | JMP DIG1 | |
322 | JMP DIG2 | |
323 | JMP DIG3 | |
324 | JMP DIG4 | |
325 | JMP DIG5 | |
326 | DIG6, TAD LINENO+1/WHERE N=6 | |
327 | AND O7760 | |
328 | JMP DIG56 | |
329 | DIG5, TAD TEMP /WHERE N=5 | |
330 | CLL RTL | |
331 | RTL | |
332 | DCA TEMP | |
333 | TAD LINENO+1 | |
334 | AND O7400 | |
335 | DIG56, TAD TEMP | |
336 | JMP DIG456 | |
337 | DIG4, TAD TEMP /WHERE N=4 | |
338 | CLL RAR | |
339 | RTR | |
340 | RTR | |
341 | DIG456, DCA LINENO+1 | |
342 | JMP I LNDIG | |
343 | DIG3, TAD LINENO /WHERE N=3 | |
344 | AND O7760 | |
345 | JMP DIG23 | |
346 | DIG2, TAD TEMP /WHERE N=2 | |
347 | CLL RTL | |
348 | RTL | |
349 | DCA TEMP | |
350 | TAD LINENO | |
351 | AND O7400 | |
352 | DIG23, TAD TEMP | |
353 | JMP DIG123 | |
354 | DIG1, TAD TEMP /WHERE N=1 | |
355 | CLL RAR | |
356 | RTR | |
357 | RTR | |
358 | DIG123, DCA LINENO | |
359 | JMP I LNDIG | |
360 | TYPE, 0 /TYPE A MESSAGE | |
361 | DCA CRSWIT /SAVE CARRIAGE RETURN SWITCH | |
362 | TAD I TYPE /GET ADDR OF MESSAGE | |
363 | ISZ TYPE | |
364 | DCA PASS | |
365 | TLOOP, JMS I [CTRLO /CHECK FOR CTRL/O | |
366 | JMP TCRLF /YES, STOP PRINTING | |
367 | TAD I PASS /GET HIGH CHAR | |
368 | CLL RTR /SHIFT RIGHT | |
369 | RTR | |
370 | RTR | |
371 | AND O77 /SIX BITS | |
372 | SNA | |
373 | JMP TCRLF /END OF MESSAGE | |
374 | TAD O237 /CONVERT TO ASCII | |
375 | JMS I [TTYOUT /PRINT CHAR | |
376 | TAD I PASS /GET LOWER CHAR | |
377 | ISZ PASS | |
378 | AND O77 | |
379 | SNA | |
380 | JMP TCRLF /END OF LINE | |
381 | TAD O237 /CONVERT TO ASCII | |
382 | JMS I [TTYOUT /PRINT | |
383 | JMP TLOOP | |
384 | TCRLF, TAD CRSWIT /RETURN THE CARRIAGE ? | |
385 | SNA CLA | |
386 | JMS I [CRLF /YES | |
387 | JMP I TYPE /DONE | |
388 | /TTYOUT, 0 /PRINT ONE CHAR | |
389 | / TSF /WAIT | |
390 | / JMP .-1 | |
391 | / TLS /PRINT | |
392 | / CLA | |
393 | / JMP I TTYOUT | |
394 | PASS, 0 /SKIP OVER LINE | |
395 | ISZ TEMP | |
396 | SKP | |
397 | JMS FINCR | |
398 | TAD I TEMP | |
399 | AND O77 | |
400 | SZA CLA | |
401 | JMP PASS+1 | |
402 | ISZ TEMP | |
403 | JMP I PASS | |
404 | JMS FINCR | |
405 | JMP I PASS | |
406 | CRSWIT, | |
407 | FDECR, 0 /DECR. POINTER AND FIELD | |
408 | TAD TEMP | |
409 | SZA CLA | |
410 | JMP .+5 | |
411 | RDF | |
412 | TAD O6171 | |
413 | DCA .+1 | |
414 | HLT | |
415 | CLA CMA | |
416 | TAD TEMP | |
417 | DCA TEMP | |
418 | JMP I FDECR | |
419 | FINCR, 0 /INCR. CURRENT DATA FIELD | |
420 | RDF | |
421 | SZA | |
422 | JMP HERE | |
423 | TAD CORSIZ | |
424 | DCA CORTMP | |
425 | HERE, TAD O6211 | |
426 | DCA .+1 | |
427 | HLT | |
428 | ISZ CORTMP | |
429 | JMP I FINCR | |
430 | CDF 0 | |
431 | JMP I [COREOV /FILE TOO BIG | |
432 | \f PAGE | |
433 | CMDDONE,CDF | |
434 | JMS I [CRLF /TYPE READY MESSAGE | |
435 | JMS I [TYPE | |
436 | MSGRDY | |
437 | MAINLUP,CDF | |
438 | JMS I [GETLIN /GET AN EDITED LINE. | |
439 | SNA CLA | |
440 | JMP NOCOMD /NOT A COMMAND | |
441 | TAD OLDFLAG /IN OLD MODE ? | |
442 | SNA CLA | |
443 | JMP I [COMMAND/NO, MUST BE A COMMAND | |
444 | JMP MAINLUP /OTHERWISE IGNORE | |
445 | NOCOMD, TAD PTR /OR A LINE WITH A LINE | |
446 | CMA /NUMBER ON IT. | |
447 | TAD [LINE | |
448 | DCA SIZE /SET UP SIZE OF LINE. | |
449 | TAD I [LINE+2 /IS LINE EMPTY ?? | |
450 | SNA CLA | |
451 | DCA SIZE /POSSIBLY ZERO. | |
452 | TAD LINENO /IS IT > LAST LINE ? | |
453 | CIA CLL | |
454 | TAD EOFLIN | |
455 | SZA CLA | |
456 | JMP .+4 /HI PART NOT =, FORGET LOW | |
457 | TAD LINENO+1 | |
458 | CIA CLL | |
459 | TAD EOFLIN+1 /COMPARE LOW PARTS | |
460 | SZL CLA | |
461 | JMP NOTLAST /NOT > LAST | |
462 | JMS I [GETEOF /GET EOF | |
463 | TAD TEMP /MAKE IT LOOK LIKE | |
464 | DCA PTR /A CALL TO FINDLN | |
465 | TAD LINENO /SAVE NEW LAST LINE | |
466 | DCA EOFLIN | |
467 | TAD LINENO+1 | |
468 | DCA EOFLIN+1 | |
469 | SKP | |
470 | NOTLAST,JMS I [FINDLN /GENERAL CASE - SEARCH | |
471 | INSERT, TAD TEMP /THERE ARE (TEMP-PTR) WORDS IN | |
472 | CLL CMA /THE OLD LINE WHICH ARE TO BE | |
473 | TAD PTR /REPLACED BY (-SIZE) WORDS IN | |
474 | CLA /NEW LINE. | |
475 | RDF | |
476 | SZL | |
477 | TAD O7770 | |
478 | TAD O6201 | |
479 | DCA PTRFLD /GET FIELD OF START OF OLD LINE | |
480 | TAD PTR | |
481 | CLL CIA | |
482 | TAD TEMP | |
483 | TAD SIZE /WHICH WAY ? | |
484 | SNA | |
485 | JMP MOVE /SAME SIZE, MOVE IN NEW LINE | |
486 | SPA | |
487 | JMP I (EXPAND /MAKE MORE ROOM FOR NEW LINE | |
488 | CIA | |
489 | TAD TEMP /SHRINK THE FILE | |
490 | DCA TOWARD /MOVE FILE DOWN TO HERE | |
491 | RDF | |
492 | TAD O6201 | |
493 | DCA TMPFLD /GET FIELD OF READ POINTER | |
494 | TAD TOWARD | |
495 | CLL CMA | |
496 | TAD TEMP | |
497 | SNL CLA | |
498 | TAD O7770 | |
499 | TAD TMPFLD | |
500 | DCA TWDFLD /GET FIELD OF WRITE POINTER | |
501 | TMPFLD, HLT | |
502 | TAD I TEMP | |
503 | TWDFLD, HLT | |
504 | DCA I TOWARD /MOVE DOWN | |
505 | TAD I TOWARD | |
506 | TAD O7701 /END OF FILE ??? | |
507 | SNA CLA | |
508 | JMP LWREOF /YES, PUT NEW LINE IN AT END | |
509 | ISZ TEMP /INCREMENT POINTERS | |
510 | JMP .+4 | |
511 | TAD TMPFLD /AND FIELDS IF NECESSARY | |
512 | TAD O10 | |
513 | DCA TMPFLD | |
514 | ISZ TOWARD | |
515 | JMP TMPFLD | |
516 | TAD TWDFLD | |
517 | TAD O10 | |
518 | DCA TWDFLD | |
519 | JMP TMPFLD /KEEP SHRINKING | |
520 | LWREOF, TAD TOWARD /SET NEW EOF | |
521 | JMS I [SETEOF | |
522 | MOVE, TAD SIZE | |
523 | SNA CLA | |
524 | JMP MAINLUP /IT WAS A DELETE | |
525 | CDF 00 | |
526 | TAD LINENO /PUT IN LINE NUMBER | |
527 | DCA I [LINE | |
528 | TAD LINENO+1 | |
529 | DCA I [LINE+1 | |
530 | MOVENTR,TAD [LINE | |
531 | DCA TEMP | |
532 | MOVLUP, CDF /MOVE IN NEW LINE | |
533 | TAD I TEMP | |
534 | ISZ TEMP | |
535 | PTRFLD, HLT | |
536 | DCA I PTR | |
537 | ISZ PTR /INCREMENT POINTERS | |
538 | JMP .+4 | |
539 | TAD PTRFLD /WHATCH OUT FOR FIELDS | |
540 | TAD O10 /(W.C. OR E.M. ?) | |
541 | DCA PTRFLD | |
542 | ISZ SIZE | |
543 | JMP MOVLUP | |
544 | JMP MAINLUP | |
545 | SRCHBK, 0 | |
546 | DCA TEM | |
547 | TAD I SRCHBK | |
548 | ISZ SRCHBK | |
549 | CIA | |
550 | TAD TEM | |
551 | CLL CMA | |
552 | TAD I SRCHBK | |
553 | SNL CLA | |
554 | ISZ SRCHBK | |
555 | ISZ SRCHBK | |
556 | TAD TEM | |
557 | JMP I SRCHBK | |
558 | TEM, 0 | |
559 | ||
560 | PAGE | |
561 | \fEXPAND, CIA /EXTRA ROOM NEEDED | |
562 | DCA TOWARD | |
563 | TAD I TEMP /SAVE THIS PLACE | |
564 | DCA TEMP2 | |
565 | TAD O37 /NOW MARK THIS PLACE | |
566 | DCA I TEMP | |
567 | JMS I [GETEOF /GET EOF | |
568 | RDF | |
569 | TAD O6201 | |
570 | DCA TMP2FLD /GET FIELD OF END OF FILE | |
571 | CLL | |
572 | TAD TEMP /MOVE FILE UP | |
573 | TAD TOWARD /TO | |
574 | DCA TOWARD /HERE | |
575 | SZL | |
576 | JMS I [FINCR /MIGHT BE ACROSS A FIELD | |
577 | RDF | |
578 | TAD O6201 | |
579 | DCA TWD2FLD /SAVE NEW EOF FIELD | |
580 | TAD TOWARD /SAVE NEW EOF | |
581 | JMS I [SETEOF | |
582 | TMP2FLD,HLT | |
583 | TAD I TEMP | |
584 | TWD2FLD,HLT | |
585 | DCA I TOWARD /MOVE UP ONE WORD | |
586 | TAD I TOWARD | |
587 | TAD O7741 /IS THE MARK ? | |
588 | SNA CLA | |
589 | JMP LASTWD /YES, PUT IN LAST WORD | |
590 | CLA CLL CMA | |
591 | TAD TOWARD /BACK UP POINTERS | |
592 | DCA TOWARD | |
593 | SZL | |
594 | JMP .+4 | |
595 | TAD TWD2FLD /AND FIELDS (MAYBE) | |
596 | TAD O7770 | |
597 | DCA TWD2FLD | |
598 | CLA CLL CMA | |
599 | TAD TEMP | |
600 | DCA TEMP | |
601 | SZL | |
602 | JMP TMP2FLD | |
603 | TAD TMP2FLD | |
604 | TAD O7770 | |
605 | DCA TMP2FLD | |
606 | JMP TMP2FLD | |
607 | LASTWD, TAD TEMP2 /PUT IN SAVED WORD | |
608 | DCA I TOWARD | |
609 | JMP I [MOVE /GO MOVE IN NEW LINE | |
610 | COREOV, JMS I [TYPE /FILE TOO BIG | |
611 | MSGBIG | |
612 | BYEBYE, CLA IAC | |
613 | AND SWPNUM /IS OS8 RES IN PLACE ? | |
614 | SZA CLA /YES IF EVEN NUMBER OF SWAPS | |
615 | BYE, JMS I [SWAP /PUT BACK OS8 | |
616 | TSF /WAIT FOR TTY SO OS8 DOESN'T | |
617 | JMP .-1 /TRAMPLE ON MY LINE FEED | |
618 | JMP I (7605 /EXIT TO OS8 | |
619 | MSGBIG, 5646;5660;6372;160;6746;6347;5560;7000 | |
620 | MSGALT, 0145;4655;4665;4645;0 | |
621 | MSGWHAT,7051;4265;4000 | |
622 | MSGTOO, 5552;5746;0165;6060;0155;6057;5000 | |
623 | SCRATCH,TAD [TXTAREA/SCRATCH FILE | |
624 | JMS I [SETEOF | |
625 | DCA EOFLIN /ZERO LAST LINE NUM | |
626 | DCA EOFLIN+1 | |
627 | JMP I [CMDDONE | |
628 | NORM, 0 /LINE NUMBER NORMALIZER | |
629 | TAD NDIGS | |
630 | SZA | |
631 | JMP .+3 /IF THERE ARE NO DIGITS IN THE | |
632 | CLA CMA /LINE NUMBER THEN | |
633 | JMP I NORM /RETURN -1. | |
634 | TAD O7772 | |
635 | SMA CLA | |
636 | JMP I NORM /IF THE LINENO HAS BEEN FILLED | |
637 | TAD O7774 /OUT TO 6 DIGITS(LEADING 0'S) | |
638 | DCA TEMP /THEN RETURN. | |
639 | TAD LINENO /OTHERWISE, SHIFT RIGHT 1 DIGIT | |
640 | CLL RAR | |
641 | DCA LINENO /AND CHECK AGAIN. | |
642 | TAD LINENO+1 | |
643 | RAR | |
644 | DCA LINENO+1 | |
645 | ISZ TEMP | |
646 | JMP .-7 | |
647 | ISZ NDIGS | |
648 | JMP NORM+1 | |
649 | SETEOF, 0 /SET NEW EOF | |
650 | DCA EOFADR /SAVE ADDR | |
651 | RDF /GET FLD | |
652 | TAD O6201 | |
653 | DCA EOFFLD /SAVE IT | |
654 | TAD O77 /STORE EOF | |
655 | DCA I EOFADR | |
656 | JMP I SETEOF | |
657 | / | |
658 | GETEOF, 0 | |
659 | TAD EOFADR /RETRIEVE EOF INFO | |
660 | DCA TEMP /FIRST ADDR | |
661 | EOFFLD, CDF | |
662 | JMP I GETEOF | |
663 | ||
664 | PAGE | |
665 | \fCOMMAND,TAD COMTBL /COMMAND LIST POINTER | |
666 | DCA TEMP | |
667 | COMLUP, ISZ TEMP /GET 2 CHAR COMMAND | |
668 | TAD I TEMP | |
669 | ISZ TEMP | |
670 | SNA | |
671 | JMP WHAT /END OF LIST | |
672 | TAD I [LINE+2 /IS THIS IT ? | |
673 | SZA CLA | |
674 | JMP COMLUP /NO, LOOK AGAIN | |
675 | TAD I TEMP /GET COMMAND ADDR | |
676 | DCA TEMP /AND GO TO IT | |
677 | JMP I TEMP | |
678 | WHAT, JMS I [TYPE /TYPE WHAT? | |
679 | MSGWHAT | |
680 | JMP I [MAINLUP | |
681 | COMTBL, . | |
682 | -5552 | |
683 | LIST | |
684 | -6055 | |
685 | OLD | |
686 | -6442 | |
687 | SAVE | |
688 | -6366 | |
689 | RUN | |
690 | -6444 | |
691 | SCRATCH | |
692 | -4372 | |
693 | BYE | |
694 | -5746 | |
695 | NEW | |
696 | -5742 | |
697 | RENAME | |
698 | 0 | |
699 | WSSAVE, 0145;6454;3343;4264;5244;1770;6400 | |
700 | HEADING,0 /PRINT HEADING | |
701 | JMS I [CRLF /LATER | |
702 | TAD [FNAME /SET UP FOR CONVERSION | |
703 | DCA TEMP /POINTER TO FILE NAME | |
704 | TAD XTITLE /WHERE IT GOES | |
705 | DCA PTR | |
706 | JMS CONV /OUTPUT FIRST TWO CHARS | |
707 | JMS CONV /NEXT TWO | |
708 | JMS CONV /THIRD TWO | |
709 | ISZ PTR /SKIP FOR EXT | |
710 | JMS CONV /OUTPUT EXTENSION | |
711 | JMS I [TYPE /TYPE HEADING | |
712 | XTITLE, TITLE | |
713 | JMS I [CRLF /FOLLOWED BY A CRLF | |
714 | JMP I HEADING | |
715 | CONV, 0 /CONVERT TO SIX BIT ASCII | |
716 | TAD I TEMP /GET NEXT WORD | |
717 | AND O77 /CHECK FOR 0 | |
718 | SNA /SUBSTITUTE BLANKS | |
719 | TAD (40 | |
720 | TAD O7741 /SUBTRACT 37 | |
721 | AND O77 /SIX BITS | |
722 | DCA I PTR | |
723 | TAD I TEMP /DO UPPER CHAR | |
724 | AND O7700 | |
725 | SNA | |
726 | CLL CML RAR | |
727 | TAD (-3700 /SAME WAY | |
728 | TAD I PTR /COMBINE THEM | |
729 | DCA I PTR | |
730 | ISZ TEMP | |
731 | ISZ PTR | |
732 | JMP I CONV | |
733 | ||
734 | TITLE, 0;0;0;0101;0 /FOR THE PROG NAME | |
735 | 0101;0101 /SOME BLANKS | |
736 | VERLOC, VERSON^100+2142 /VERSION NUMBER | |
737 | 0101;0101 /MORE BLANKS | |
738 | DATE, 0;0;0 /DATE TEMPLATE | |
739 | DASH6, 1627 /"-6" FOR BUILDING DATE | |
740 | EODAT, 0 /END OF DATE TEMPLATE | |
741 | ||
742 | GETNC, 0 /GET A CHAR FOR A FILE NAME | |
743 | TAD NCHARS /GET CHAR POINTER | |
744 | ISZ NCHARS /BUMP IT | |
745 | CLL RAR /DIVIDE BY 2 | |
746 | TAD [LINE+2 /ADD BASE | |
747 | DCA TEMP /GIVES ADDR OF WORD | |
748 | TAD I TEMP /GET 2 CHARS | |
749 | SZL /ODD EVEN BIT IS IN LINK | |
750 | JMP TESTCH /GO CHECK THE CHAR | |
751 | RTR | |
752 | RTR | |
753 | RTR | |
754 | TESTCH, AND O77 /ONLY 6 BITS | |
755 | SNA | |
756 | JMP I GETNC /END OF NAME | |
757 | TAD O37 | |
758 | ISZ GETNC | |
759 | JMP I GETNC | |
760 | PATCH3, 0 | |
761 | JMS I [GETNC | |
762 | JMP I PATCH3 | |
763 | AND O77 | |
764 | JMS I (SRCHBK | |
765 | 72 | |
766 | 1 | |
767 | JMP EXB | |
768 | ISZ PATCH3 | |
769 | JMS I (SRCHBK | |
770 | 60 | |
771 | 12 | |
772 | EXA, JMP I PATCH3 | |
773 | JMP I (PATCH2 | |
774 | EXB, CLA IAC | |
775 | JMP I PATCH3 | |
776 | ||
777 | PAGE | |
778 | \fLIST, TAD I [LINE+3 /LISTNH ? | |
779 | TAD I [LINE+4 | |
780 | TAD [-4436 /PSEUDO TEST | |
781 | SNA CLA | |
782 | JMP LISTNH /NO HEADING | |
783 | JMS I [HEADING/GIVE HEADING | |
784 | TAD COFLAG /WAS CTRL/O TYPED ? | |
785 | SNA CLA | |
786 | JMP I [CMDDONE/YES, ABORT LISTING | |
787 | LISTNH, DCA NCHARS /SET POINTER | |
788 | DCA NDIGS /AND DIGIT COUNTER | |
789 | JMS I [GETNC /SKIP UNTIL BLANK | |
790 | JMP NUMDUN /DONE | |
791 | TAD (-40 | |
792 | SZA CLA | |
793 | JMP .-4 /NO BLANK YET | |
794 | JMS I [GETNC /GET A CHAR | |
795 | JMP NUMDUN /END OF NUMBER | |
796 | TAD O7706 /SUBTRACT 72 | |
797 | JMS I [LNDIG /GO SEE IF ITS A DIGIT | |
798 | JMP .-4 /IT WAS, CONTINUE | |
799 | NUMDUN, TAD [TXTAREA | |
800 | DCA PTR /SET UP POINTER | |
801 | JMS I [NORM /NORMALIZE THE NUM | |
802 | SPA CLA /ANY NUMBER ? | |
803 | JMP .+3 /NO | |
804 | JMS I [FINDLN /YES, LOCATE IT | |
805 | TAD PTR | |
806 | IAC | |
807 | DCA TEMP | |
808 | JMS I [FDECR | |
809 | RDF /GET THE FIELD | |
810 | TAD O6201 | |
811 | DCA PTR2FLD /SAVE IT | |
812 | DCA TEMP | |
813 | LSTLUP, JMS I [CTRLO /CHECK FOR CTRL/O | |
814 | JMP I [CMDDONE/YES, EXIT | |
815 | JMS CTRLS /CHECK FOR XOFF | |
816 | JMS GETFIL /GET CHARACTER TO LIST | |
817 | JMP I [CMDDONE | |
818 | JMS I [TTYOUT /PRINT IT | |
819 | JMP LSTLUP /LOOP | |
820 | GETFIL, 0 /GET CHARACTER FROM FILE | |
821 | TAD TEMP | |
822 | ISZ TEMP | |
823 | TAD .+3 | |
824 | DCA .+1 | |
825 | HLT | |
826 | JMP I .+1 /SEQUENCE OF OPERATIONS | |
827 | PTR2FLD /GET FIRST WORD | |
828 | FRSTDIG /FIRST DIGIT OF LINE NUMBER | |
829 | DIGIT /SECOND DIGIT | |
830 | DIGIT /THIRD DIGIT | |
831 | PTR2FLD /GET NEXT WORD OF LINE NUMBER | |
832 | DIGIT /FOURTH DIGIT | |
833 | DIGIT /FIFTH DIGIT | |
834 | LASTDIG /SIXTH AND LAST DIGIT | |
835 | PTR2FLD /GET WORD OF TEXT | |
836 | LEFTTXT /LEFT CHARACTER | |
837 | RITETXT /RIGHT CHARACTER | |
838 | LINFTXT /LINE FEED CHARACTER | |
839 | PTR2FLD,HLT /CHECK FOR EOF | |
840 | TAD I PTR | |
841 | CDF | |
842 | TAD O7701 | |
843 | SNA | |
844 | JMP I GETFIL /YES, RETURN UNSKIPPED | |
845 | TAD O77 | |
846 | DCA TEMP2 /NO, SAVE WORD | |
847 | ISZ PTR /BUMP POINTER | |
848 | JMP GETFIL+1 | |
849 | TAD PTR2FLD | |
850 | TAD O10 | |
851 | DCA PTR2FLD | |
852 | JMP GETFIL+1 | |
853 | LASTDIG,CLA IAC /FORCE LAST DIGIT (EVEN IF 0) | |
854 | FRSTDIG,DCA NDIGS /ZERO DIGIT COUNT | |
855 | DIGIT, TAD TEMP2 | |
856 | RTL | |
857 | RTL | |
858 | DCA TEMP2 /SHIFT LEFT ONE DIGIT | |
859 | TAD TEMP2 | |
860 | RAL | |
861 | AND O17 /GET DIGIT | |
862 | SZA | |
863 | JMP NZDIGIT /ITS NOT ZERO | |
864 | TAD NDIGS /IS IT A LEADING ZERO ? | |
865 | SNA CLA | |
866 | JMP GETFIL+1/YES, DON'T PRINT IT | |
867 | NZDIGIT,ISZ NDIGS /NON ZERO OR NON LEADING ZERO | |
868 | TAD O260 /SO PRINT IT | |
869 | JMP GFRET | |
870 | LEFTTXT,TAD TEMP2 /GET LEFT CHAR | |
871 | RTR | |
872 | RTR | |
873 | RTR | |
874 | JMP .+4 | |
875 | RITETXT,TAD O10 /SETUP FOR LEFT CHAR NEXT | |
876 | DCA TEMP | |
877 | TAD TEMP2 | |
878 | AND O77 /SIXBITIZE AC | |
879 | SNA | |
880 | JMP ZEROTXT /0 IS END OF THE LINE | |
881 | TAD O237 /MAKE IT ASCII | |
882 | GFRET, ISZ GETFIL | |
883 | JMP I GETFIL | |
884 | ZEROTXT,TAD O13 /SETUP FOR LF NEXT | |
885 | DCA TEMP | |
886 | TAD O215 /RETURN CR | |
887 | JMP GFRET | |
888 | LINFTXT,DCA TEMP /CLEAR SEQUENCER AND RETURN LF | |
889 | TAD O212 | |
890 | JMP GFRET | |
891 | / | |
892 | CTRLS, 0 | |
893 | TAD CSFLG /XON? | |
894 | SNA CLA | |
895 | JMP I CTRLS /NO | |
896 | JMP LSTLUP /YES | |
897 | / | |
898 | MSGRDY, 6346;4245;7200 | |
899 | ||
900 | PAGE | |
901 | \fGETFN, 0 /GET A FILE NAME (ALSO FETCH ITS HANDLER) | |
902 | DCA SAVFLAG /=1 FOR SAVE, 0 FOR OLD OR NEW | |
903 | TAD CHNFLAG /RETURNING FROM RUN ? | |
904 | SZA CLA | |
905 | JMP NOFUSR /YES, DON'T FETCH USR | |
906 | JMS I [SWAP /GET OS8 RESIDENT | |
907 | TAD SAVFLAG /IS IT OLD OR NEW ?? | |
908 | SNA CLA | |
909 | IAC /YES, DON'T SWAP 10000-11777 | |
910 | DCA I (7746 /DO IF SAVE, SO ALTER JSW | |
911 | CIF 10 /GET THE USR | |
912 | JMS I O7700 | |
913 | 10 | |
914 | NOFUSR, DCA NCHARS /RESET CHAR POINTER | |
915 | BSKIP, JMS I [GETNC /GET A CHAR | |
916 | JMP ASKNAM /ASK FOR FILE NAME | |
917 | TAD M40 /BLANK ? | |
918 | SZA CLA | |
919 | JMP BSKIP /NO, LOOP | |
920 | NOSKIP, JMS GETNAM /GET A NAME | |
921 | SNA CLA | |
922 | JMP USEDSK /NO DEVICE SPECIFIED, USE DSK: | |
923 | TAD NAME /PUT IN THE DEVICE NAME | |
924 | DCA DEV /AS SPECIFIED | |
925 | TAD NAME+1 | |
926 | DCA DEV+1 | |
927 | JMS GETNAM /FETCH THE FILE NAME | |
928 | SZA CLA | |
929 | JMP I (IOERR /BAD SYNTAX IN FILE DESCRIPTOR | |
930 | JMP GETHAN /GO FETCH THE HANDLER | |
931 | USEDSK, TAD (0423 /SET DEVICE NAME TO DSK: | |
932 | DCA DEV | |
933 | TAD (1300 | |
934 | DCA DEV+1 | |
935 | GETHAN, TAD [HANDLR+1 | |
936 | DCA DEV+2 /ALSO THE HANDLER ORIGIN | |
937 | CIF 10 | |
938 | JMS I O200 /CALL THE USR | |
939 | 1 /FETCH HANDLER BY NAME | |
940 | DEV, 0;0;0 | |
941 | JMP I (IOERR /BAD DEVICE | |
942 | TAD DEV+1 /SAVE THE DEVICE NUMBER | |
943 | DCA DEVNUM | |
944 | TAD DEV+2 /AND THE HANDLER ENTRY POINT | |
945 | DCA DEVHAN | |
946 | MOVEFN, TAD SAVFLAG /WAS IT A SAVE ? | |
947 | M40, SMA SZA CLA | |
948 | JMP I GETFN /YES, JUST RETURN | |
949 | TAD NAME /NEW OR OLD, ANY NAME GIVEN ? | |
950 | SNA | |
951 | JMP I GETFN /NO, PROBABLY JUST A DEVICE | |
952 | DCA FNAME /YES, SAVE IT | |
953 | TAD NAME+1 | |
954 | DCA FNAME+1 | |
955 | TAD NAME+2 | |
956 | DCA FNAME+2 | |
957 | TAD NAME+3 | |
958 | DCA FNAME+3 | |
959 | JMP I GETFN | |
960 | ASKNAM, TAD SAVFLAG /WAS THIS A SAVE ? | |
961 | SPA SNA CLA | |
962 | JMP ASKNM /NO, GO ASK FOR A NAME | |
963 | TAD FNAME /IT WAS A SAVE, ANY OLD NAME TO USE ? | |
964 | SNA | |
965 | JMP ASKNM /NO, GO ASK FOR ONE | |
966 | DCA NAME /YES, MOVE INTO NAME | |
967 | TAD FNAME+1 | |
968 | DCA NAME+1 | |
969 | TAD FNAME+2 | |
970 | DCA NAME+2 | |
971 | TAD FNAME+3 | |
972 | DCA NAME+3 | |
973 | JMP I GETFN | |
974 | ASKNM, CLA IAC /ASK FOR FILE NAME | |
975 | JMS I [TYPE | |
976 | ASKFN | |
977 | TAD (DUMMY | |
978 | DCA [LNDIG | |
979 | JMS I [GETLIN | |
980 | JMP I (PATCH1 | |
981 | SAVFLAG,0 | |
982 | GETNAM, 0 /GET A FILE OR DEVICE NAME | |
983 | DCA NAME /ZERO THE NAME BUFFER | |
984 | DCA NAME+1 | |
985 | DCA NAME+2 | |
986 | TAD O201 /USE DEFAULT EXT .BA | |
987 | DCA NAME+3 | |
988 | TAD [NAME /SETUP POINTER | |
989 | DCA TEMP2 | |
990 | TAD O7774 /SETUP SIZE (MAX 4 WORDS) | |
991 | DCA SIZE | |
992 | NAMLUP, JMS I (PATCH3 | |
993 | JMP I GETNAM | |
994 | CLL RTL | |
995 | RTL | |
996 | RTL | |
997 | DCA I TEMP2 /SAVE IT | |
998 | JMS I (PATCH3 | |
999 | JMP I GETNAM | |
1000 | TAD I TEMP2 /COMBINE THE 2 | |
1001 | DCA I TEMP2 | |
1002 | ISZ TEMP2 | |
1003 | ISZ SIZE /ANY MORE ? | |
1004 | JMP NAMLUP | |
1005 | JMP I GETNAM | |
1006 | RENAME, CLL CML RAR /SAVE USR AREA | |
1007 | JMS GETFN /GET FILE NAME | |
1008 | CIF 10 | |
1009 | JMS I O200 /REMOVE USR | |
1010 | 11 /AND RESTORE 10000-11777 | |
1011 | JMS I [SWAP /SWAP OS8 RESIDENT | |
1012 | JMP I [CMDDONE | |
1013 | NEW, TAD [TXTAREA /SCRATCH | |
1014 | JMS I [SETEOF | |
1015 | DCA EOFLIN /ZERO LAST LINE NUM | |
1016 | DCA EOFLIN+1 | |
1017 | JMS GETFN /GET THE FILE NAME | |
1018 | JMS I [SWAP /REMOVE OS8 | |
1019 | JMP I [CMDDONE | |
1020 | ||
1021 | PAGE | |
1022 | \fPUTFIL, 0 /WRITE THE FILE | |
1023 | TAD [TXTAREA | |
1024 | DCA PTR /GET POINTER TO TEXT | |
1025 | TAD O6201 /GET FIELD OF TEXT | |
1026 | DCA I [PTR2FLD | |
1027 | DCA TEMP /ZERO LINE SEQUENCER | |
1028 | TAD [DSKBUF /GET ADDR OF DISK BUFFER | |
1029 | DCA SWAPT1 /BUFFER POINTER | |
1030 | TAD O7600 | |
1031 | DCA SWAPT2 /DOUBLE WORD COUNTER | |
1032 | TAD JMPINS /SET 3 WAY SWITCH | |
1033 | DCA PUTJMP | |
1034 | PFLOOP, JMS I [GETFIL /GET A CHAR FROM TEXT AREA | |
1035 | JMP PFCTLZ /END OF FILE | |
1036 | JMS PUTCH /OUTPUT IT | |
1037 | JMP PFLOOP /DO NEXT CHAR | |
1038 | PFCTLZ, TAD O232 /PUT CTRL-Z | |
1039 | JMS PUTCH | |
1040 | TAD O7201 /BUFFER DUMP COUNT | |
1041 | DCA PFTEMP | |
1042 | JMS PUTCH /FILL WITH ZEROES | |
1043 | ISZ PFTEMP | |
1044 | JMP .-2 | |
1045 | JMP I PUTFIL /DONE | |
1046 | PFTEMP, 0 | |
1047 | PUTCH, 0 /PUT A CHAR ONTO THE OS8 FILE | |
1048 | DCA SWAPT4 /SAVE THE CHAR | |
1049 | PUTJMP, HLT /JUMP TO CORRECT PLACE | |
1050 | JMP PH1 /FIRST CHAR | |
1051 | JMP PH2 /SECOND CHAR | |
1052 | PH3, TAD JMPINS /RESTORE SWITCH | |
1053 | DCA PUTJMP | |
1054 | TAD SWAPT4 /GET THE CHAR | |
1055 | AND O17 /LOW FOUR BITS | |
1056 | CLL RAR | |
1057 | RTR /INTO THE HIGH PART OF WORD TWO | |
1058 | RTR | |
1059 | TAD I SWAPT1 /COMBINE WITH CHAR 2 | |
1060 | DCA I SWAPT1 | |
1061 | TAD SWAPT4 /GET THE HIGH FOUR BITS | |
1062 | RTL | |
1063 | RTL /INTO THE HIGH PART OF WORD ONE | |
1064 | AND O7400 | |
1065 | TAD I SWAPT3 /COMBINE WITH WORD ONE | |
1066 | DCA I SWAPT3 | |
1067 | ISZ SWAPT1 /BUMP POINTER | |
1068 | ISZ SWAPT2 /BUMP DOUBLE WORD COUNT | |
1069 | JMP I PUTCH /RETURN | |
1070 | JMS I [SWAP /SWAP IN OS8 | |
1071 | JMS I DEVHAN /WRITE THIS BUFFER | |
1072 | 4200 | |
1073 | DSKBUF | |
1074 | WRBLOK, 0 | |
1075 | JMP I (OUERR | |
1076 | ISZ OUSIZE /ANY ROOM LEFT ? | |
1077 | SKP | |
1078 | JMP I (OUERR /NO, ERROR | |
1079 | ISZ WRBLOK /BUMP BLOCK NUMBER | |
1080 | ISZ I (OULEN /BUMP ACTUAL SIZE | |
1081 | JMS I [SWAP /SWAP BACK | |
1082 | TAD [DSKBUF /SET UP BUFFER POINTER | |
1083 | DCA SWAPT1 | |
1084 | TAD O7600 | |
1085 | DCA SWAPT2 /SET UP COUNT | |
1086 | JMP I PUTCH | |
1087 | PH2, TAD SWAPT1 /SAVE POINTER TO FIRST | |
1088 | DCA SWAPT3 | |
1089 | ISZ SWAPT1 /BUMP POINTER | |
1090 | PH1, TAD SWAPT4 /GET CHAR | |
1091 | DCA I SWAPT1 /INTO BUFFER | |
1092 | ISZ PUTJMP /BUMP SWITCH | |
1093 | JMP I PUTCH | |
1094 | JMPINS, JMP PUTJMP+1 | |
1095 | OUSIZE, 0 | |
1096 | SWAP, 0 /SWAP OS8 RESIDENT | |
1097 | ISZ SWPNUM /FLIP BYEBYE SWITCH | |
1098 | NOP | |
1099 | JMS SWAP2 /WITH OS8RES THROUGH OS8RES+577 | |
1100 | OS8RES | |
1101 | CDF | |
1102 | JMS SWAP2 | |
1103 | OS8RES+200 | |
1104 | CDF 10 | |
1105 | PATCH5, JMS SWAP2 /OVERLAID IF <12K | |
1106 | OS8RES+400 | |
1107 | CDF 20 | |
1108 | JMP I SWAP | |
1109 | SWAP2, 0 | |
1110 | TAD O7600 | |
1111 | DCA SWAPT3 | |
1112 | TAD I SWAP2 | |
1113 | ISZ SWAP2 | |
1114 | DCA SWAPT4 | |
1115 | TAD I SWAP2 | |
1116 | ISZ SWAP2 | |
1117 | DCA SWPFLD | |
1118 | JMP .+5 | |
1119 | SWPLUP, CDF 00 | |
1120 | TAD SWAPT1 | |
1121 | DCA I SWAPT4 | |
1122 | ISZ SWAPT4 | |
1123 | TAD I SWAPT4 | |
1124 | DCA SWAPT2 | |
1125 | SWPFLD, HLT | |
1126 | TAD I SWAPT3 | |
1127 | DCA SWAPT1 | |
1128 | TAD SWAPT2 | |
1129 | DCA I SWAPT3 | |
1130 | ISZ SWAPT3 | |
1131 | JMP SWPLUP | |
1132 | CDF 00 | |
1133 | TAD SWAPT1 | |
1134 | DCA I SWAPT4 | |
1135 | JMP I SWAP2 | |
1136 | BADFIL, 4342;4501;4752;5546;0 | |
1137 | ASKFN, 4752;5546;0157;4256;4616;1600 | |
1138 | ||
1139 | PAGE | |
1140 | \fRUN, TAD I [LINE+3 /RUNNH ? | |
1141 | TAD I [LINE+4 | |
1142 | TAD (-3057 | |
1143 | SZA CLA | |
1144 | JMS I [HEADING/GIVE A HEADING | |
1145 | TAD [LINE+2 /SET UP FAKE LINE | |
1146 | DCA TEMP | |
1147 | TAD [WSSAVE | |
1148 | DCA PTR | |
1149 | TAD O7771 | |
1150 | DCA TEMP2 | |
1151 | TAD I PTR /MOVE FAKE LINE INTO "LINE" | |
1152 | ISZ PTR | |
1153 | DCA I TEMP | |
1154 | ISZ TEMP | |
1155 | ISZ TEMP2 | |
1156 | JMP .-5 | |
1157 | ISZ RUNFLAG /SET RUN FLAG | |
1158 | JMP GFN | |
1159 | SAVE, DCA RUNFLAG /CLEAR THE RUN FLAG | |
1160 | TAD DEVNUM /SAVE CURRENT DEVICE NUM | |
1161 | DCA OLDDEV /INCASE WE CHANGE | |
1162 | GFN, CLA IAC /SET SAVFLAG | |
1163 | JMS I [GETFN /GET THE DEV:NAME.EX | |
1164 | TAD XNAME /SET UP ENTER | |
1165 | DCA SAVBLK /POINTER TO FILE NAME | |
1166 | TAD DEVNUM /GET DEVICE NUMBER | |
1167 | CIF 10 | |
1168 | JMS I O200 /ENTER FILE | |
1169 | 3 | |
1170 | SAVBLK, 0 /STARTING BLOCK GOES HERE | |
1171 | 0 /SIZE GOES HERE | |
1172 | JMP I (IOERR | |
1173 | TAD SAVBLK /PUT BLOCK NUMBER | |
1174 | DCA I (WRBLOK /INTO WRITE | |
1175 | TAD SAVBLK+1/PUT SIZE | |
1176 | DCA I (OUSIZE /SOMEWHERE TOO | |
1177 | DCA OULEN /ZERO BLOCK COUNT | |
1178 | CIF 10 | |
1179 | JMS I O200 /DUMP USR | |
1180 | 11 | |
1181 | JMS I [SWAP /AND NOW OS8 | |
1182 | JMS I (PUTFIL /DO THE SAVE | |
1183 | JMS I [SWAP /GET OS8 | |
1184 | TAD RUNFLAG /SET NO SWAP BIT IF RUN | |
1185 | DCA I (7746 | |
1186 | CIF 10 /GET THE USR | |
1187 | JMS I O7700 | |
1188 | 10 | |
1189 | TAD DEVNUM /GET DEVICE NUMBER | |
1190 | CIF 10 | |
1191 | JMS I O200 /CLOSE THE FILE | |
1192 | 4 | |
1193 | XNAME, NAME | |
1194 | OULEN, 0 /SIZE | |
1195 | JMP I (IOERR | |
1196 | TAD RUNFLAG /WAS IT A RUN ? | |
1197 | SZA CLA | |
1198 | JMP I (DORUN /YES | |
1199 | TAD OLDDEV /IS OLD DEVICE | |
1200 | CIA /THE SAME AS | |
1201 | TAD DEVNUM /THE NEW ONE ?? | |
1202 | SNA CLA | |
1203 | JMP HNDLOK /YES, THE HANDLER IS OK | |
1204 | TAD OLDDEV /RESTORE DEVICE NUMBER | |
1205 | DCA DEVNUM | |
1206 | TAD [HANDLR+1 | |
1207 | DCA DEVN /SET UP HANDLER LOAD ADDR | |
1208 | TAD DEVNUM | |
1209 | CIF 10 | |
1210 | JMS I O200 | |
1211 | 1 | |
1212 | DEVN, 0 | |
1213 | JMP I (IOERR | |
1214 | TAD DEVN /RESET THE HANDLER ADDRESS | |
1215 | DCA DEVHAN | |
1216 | HNDLOK, CIF 10 /GET RID OF THE USR | |
1217 | JMS I O200 | |
1218 | 11 | |
1219 | JMS I [SWAP /REMOVE OS8 AGAIN | |
1220 | JMP I [CMDDONE | |
1221 | OLDDEV, 0 | |
1222 | FINDLN, 0 /FIND A LINE | |
1223 | TAD [TXTAREA | |
1224 | DCA TEMP | |
1225 | SEARCH, TAD TEMP /COMPARE THE NUMBER OF | |
1226 | DCA PTR /THIS LINE WITH THE SPOT | |
1227 | TAD I TEMP /IN THE TEXT AREA. | |
1228 | TAD O7701 | |
1229 | SNA | |
1230 | JMP I FINDLN /NEW LINE GOES AT EOF | |
1231 | TAD O77 | |
1232 | CLL CIA | |
1233 | TAD LINENO | |
1234 | SNA | |
1235 | JMP SAME1ST | |
1236 | SNL CLA | |
1237 | JMP I FINDLN /INSERT NEW LINE | |
1238 | ISZ TEMP | |
1239 | SKP | |
1240 | JMS I [FINCR | |
1241 | CONTIN, JMS I [PASS /IF ITS GREATER KEEP SEARCHING. | |
1242 | JMP SEARCH | |
1243 | SAME1ST,ISZ TEMP /FIRST HALF OF LINE NUM SAME | |
1244 | SKP | |
1245 | JMS I [FINCR | |
1246 | TAD I TEMP | |
1247 | CLL CIA /CHECK SECOND HALF | |
1248 | TAD LINENO+1 | |
1249 | SNA | |
1250 | JMP SAME2ND /REPLACE OLD WITH NEW | |
1251 | SZL CLA | |
1252 | JMP CONTIN | |
1253 | JMS I [FDECR | |
1254 | TAD TEMP | |
1255 | DCA PTR | |
1256 | JMP I FINDLN /INSERT NEW LINE | |
1257 | SAME2ND,JMS I [PASS | |
1258 | JMP I FINDLN | |
1259 | ||
1260 | PAGE | |
1261 | \fDORUN, TAD (INFO+11/SET UP SOME OF INFO BLOCK | |
1262 | DCA X10 | |
1263 | CDF 10 | |
1264 | TAD DEVHAN /SAVE DEVICE HANDLER ADDRESS (DSK:) | |
1265 | DCA I X10 | |
1266 | CLL CML RTL /SAVE DEVICE NUMBER | |
1267 | DCA I X10 | |
1268 | CDF | |
1269 | TAD I (SAVBLK /SAVE STARTING BLOCK | |
1270 | CDF 10 | |
1271 | DCA I X10 | |
1272 | TAD FNAME /SAVE FILE NAME | |
1273 | DCA I X10 | |
1274 | TAD FNAME+1 | |
1275 | DCA I X10 | |
1276 | TAD FNAME+2 | |
1277 | DCA I X10 | |
1278 | TAD FNAME+3 | |
1279 | DCA I X10 | |
1280 | CDF | |
1281 | JMS XMOVE /MOVE THIS PAGE INTO FIELD 1 | |
1282 | CDF | |
1283 | DORUN | |
1284 | CDF 10 | |
1285 | -200 | |
1286 | CDF CIF 10 /GO TO THE FIELD ONE COPY | |
1287 | RUNDO, JMS XMOVE /MOVE THE HANDLER INTO FIELD 1 | |
1288 | CDF | |
1289 | HANDLR | |
1290 | CDF 10 | |
1291 | -400 | |
1292 | TAD I (INFO+1 /GET START OF BCOMP.SV | |
1293 | DCA BCBLOK | |
1294 | CIF | |
1295 | JMS I (7607 /READ IN THE COMPILER | |
1296 | BCSIZE | |
1297 | 0 | |
1298 | BCBLOK, 0 | |
1299 | JMP WHUPS | |
1300 | JMS XMOVE /MOVE BACK THE HANDLER | |
1301 | CDF 10 | |
1302 | HANDLR | |
1303 | CDF | |
1304 | -400 | |
1305 | CLA IAC /OPEN THE TEMP FILE | |
1306 | JMS I (200 | |
1307 | 3 | |
1308 | TMPBLK, TMPFIL | |
1309 | 0 | |
1310 | JMP WHUPS | |
1311 | JMS I (200 /RESET SYSTEM TABLES | |
1312 | 13 /AND REMOVE TENTATIVE FILES | |
1313 | TAD TMPBLK /SAVE ITS START | |
1314 | DCA I (INFO+10 | |
1315 | TAD TMPBLK+1 | |
1316 | DCA I (INFO+11 /AND ITS MAX LENGTH | |
1317 | DCA I (7644 /KILL R SWITCH | |
1318 | CIF CDF | |
1319 | JMP I (BCBEGN /GO START THE COMPILER | |
1320 | WHUPS, TAD (123 /PRINT SY ERROR | |
1321 | JMS TTYO | |
1322 | TAD (131 | |
1323 | JMS TTYO | |
1324 | TAD (15 | |
1325 | JMS TTYO | |
1326 | TAD (12 | |
1327 | JMS TTYO | |
1328 | TSF /WAIT FOR FLAG | |
1329 | JMP .-1 | |
1330 | CDF CIF | |
1331 | JMP I (7605 /RETURN TO OS8 | |
1332 | TTYO, 0 | |
1333 | TSF | |
1334 | JMP .-1 | |
1335 | TLS | |
1336 | CLA | |
1337 | JMP I TTYO | |
1338 | XMOVE, 0 | |
1339 | RDF /GET CALLING FIELD | |
1340 | TAD (6203 /PLUS CIF CDF 0 | |
1341 | DCA MOVRTN /FOR RETURN | |
1342 | JMS GMOVE /GET FROM FIELD | |
1343 | DCA MFFLD | |
1344 | JMS GMOVE /GET ADDRESS | |
1345 | DCA MFPTR | |
1346 | JMS GMOVE /GET TO FIELD | |
1347 | DCA MTFLD | |
1348 | JMS GMOVE /GET COUNT | |
1349 | DCA MCNT | |
1350 | MFFLD, HLT | |
1351 | TAD I MFPTR /MOVE IT | |
1352 | MTFLD, HLT | |
1353 | DCA I MFPTR | |
1354 | ISZ MFPTR | |
1355 | ISZ MCNT | |
1356 | JMP MFFLD | |
1357 | MOVRTN, HLT | |
1358 | JMP I XMOVE | |
1359 | MFPTR, 0 | |
1360 | MCNT, | |
1361 | GMOVE, 0 | |
1362 | TAD I XMOVE /GET ARG FOR MOVE | |
1363 | ISZ XMOVE | |
1364 | JMP I GMOVE | |
1365 | TMPFIL, FILENAME BASIC.TM | |
1366 | PATCH1, CLA | |
1367 | TAD (400 | |
1368 | DCA [LNDIG | |
1369 | DCA NCHARS | |
1370 | JMP I (NOSKIP | |
1371 | ||
1372 | PAGE | |
1373 | \fGETCH, 0 /GET A CHARACTER FROM THE TTY | |
1374 | TAD OLDFLAG /INPUT FROM A FILE ? | |
1375 | SZA CLA | |
1376 | JMP FILEIN /YES | |
1377 | KSF | |
1378 | JMP .-1 | |
1379 | KRB | |
1380 | AND O177 | |
1381 | JMP I GETCH | |
1382 | FILEIN, ISZ COUNT /ANYTHING IN BUFFER ? | |
1383 | JMP NOREAD /YES, NO READ | |
1384 | TAD O7200 /SET BUFFER COUNT | |
1385 | DCA COUNT | |
1386 | TAD [DSKBUF /SET BUFFER POINTER | |
1387 | DCA RDPTR | |
1388 | TAD RDJMP /RESET JUMP | |
1389 | DCA NOREAD | |
1390 | JMS I [SWAP /GET OS8 | |
1391 | TAD RDSIZE /ANY ROOM LEFT ? | |
1392 | SNA | |
1393 | JMP INERR /BAD END OF IFILE | |
1394 | IAC | |
1395 | DCA RDSIZE | |
1396 | JMS I DEVHAN /READ NEXT BLOCK | |
1397 | 200 | |
1398 | DSKBUF | |
1399 | RDBLOK, 0 | |
1400 | JMP CHKSOF /CHECK FOR SOFT ERROR | |
1401 | SOFTOK, ISZ RDBLOK /BUMP BLOCK NUMBER | |
1402 | JMS I [SWAP /AWAY WITH OS8 | |
1403 | NOREAD, HLT /3W UNPACK JUMP | |
1404 | JMP INCHR1 | |
1405 | JMP INCHR2 | |
1406 | INCHR3, TAD RDJMP /RESET SWITCH | |
1407 | DCA NOREAD | |
1408 | TAD I RDPTR /GET LOW 4 BITS | |
1409 | ISZ RDPTR /BUMP POINTER | |
1410 | AND O7400 /MASK IT | |
1411 | CLL RTR /SHIFT RIGHT 4 | |
1412 | RTR | |
1413 | DCA TEMP /SAVE | |
1414 | TAD I RDTMP /GET HIGH 4 BITS | |
1415 | AND O7400 | |
1416 | TAD TEMP /COMBINE THEM | |
1417 | CLL RTR /SHIFT RIGHT 4 | |
1418 | RTR | |
1419 | JMP AND177 /GO FINISH | |
1420 | INCHR2, TAD RDPTR /SAVE ADDR OF FIRST WORD | |
1421 | DCA RDTMP | |
1422 | ISZ RDPTR /BUMP POINTER | |
1423 | INCHR1, TAD I RDPTR /GET NEXT CHAR | |
1424 | ISZ NOREAD /BUMP SWITCH | |
1425 | AND177, AND O177 /MASK 7 BITS | |
1426 | TAD O7746 /CHECK FOR ^Z | |
1427 | SNA | |
1428 | JMP ENDOLD /EOF | |
1429 | TAD O32 /RESTORE CHAR | |
1430 | JMP I GETCH | |
1431 | ENDOLD, DCA OLDFLAG /KILL OLD FLAG | |
1432 | TAD CHNFLAG /WAS IT A RETURN FROM RUN ? | |
1433 | SNA CLA | |
1434 | JMP I [CMDDONE/NO, JUST AN OLD COMMAND | |
1435 | DCA CHNFLAG /KILL FLAG | |
1436 | TAD (INFO-3764 | |
1437 | DCA X10 /PICK UP NAME FROM INFO BLOCK | |
1438 | TAD I X10 /(WHICH IS SWAPPED OUT) | |
1439 | DCA FNAME | |
1440 | TAD I X10 | |
1441 | DCA FNAME+1 | |
1442 | TAD I X10 | |
1443 | DCA FNAME+2 | |
1444 | TAD I X10 | |
1445 | DCA FNAME+3 | |
1446 | JMP I [CMDDONE/DONE WITH RETURN | |
1447 | OLDBAD, DCA FNAME+3 /TRY WITHOUT EXT | |
1448 | ISZ TEMP /OR HAVE WE ALREADY ? | |
1449 | JMP OLDTRY /NO, NOT YET | |
1450 | IOERR, | |
1451 | INERRX, CIF 10 | |
1452 | JMS I O200 /DISMISS USR | |
1453 | 11 | |
1454 | OUERR, | |
1455 | INERR, DCA OLDFLAG /KILL OLD STATUS | |
1456 | JMS I [SWAP /OUT WITH OS8 | |
1457 | JMS I [TYPE /PRINT MESSAGE | |
1458 | BADFIL | |
1459 | JMP I [MAINLUP | |
1460 | OLD, TAD [TXTAREA/SCRATCH FILE | |
1461 | JMS I [SETEOF | |
1462 | DCA EOFLIN /ZERO LAST LINE NUM | |
1463 | DCA EOFLIN+1 | |
1464 | JMS I [GETFN /GET FILE NAME | |
1465 | CLL CMA RAL /SET RETRY COUNT | |
1466 | DCA TEMP | |
1467 | OLDTRY, TAD [FNAME /POINTER TO FILE NAME | |
1468 | DCA SB /INTO LOOKUP CALL | |
1469 | TAD DEVNUM /GET DEVICE NUMBER | |
1470 | CIF 10 | |
1471 | JMS I O200 /LOOKUP FILE | |
1472 | 2 | |
1473 | SB, 0 /START GOES HERE | |
1474 | RDSIZE, 0 /SIZE GOES HERE | |
1475 | JMP OLDBAD /BAD FILE | |
1476 | TAD SB /MOVE BLOCK | |
1477 | SNA | |
1478 | ISZ RDSIZE /SET COUNT TO 4095 IF NOT D.A. | |
1479 | DCA RDBLOK | |
1480 | CLA IAC /SET SWITCH | |
1481 | DCA OLDFLAG /INPUT COMING FROM FILE | |
1482 | CLA CMA /SET COUNT TO INITIALIZE READ | |
1483 | DCA COUNT | |
1484 | JMS I [SWAP /MOVE OS8 | |
1485 | JMP I [MAINLUP/DO OLD | |
1486 | RDJMP, JMP NOREAD+1 | |
1487 | COUNT, 0 | |
1488 | PATCH2, JMS I [SRCHBK | |
1489 | 01 | |
1490 | 32 | |
1491 | JMP I (EXA | |
1492 | TAD (-56 | |
1493 | SZA CLA | |
1494 | JMP INERRX | |
1495 | JMP I (PATCH4 | |
1496 | / | |
1497 | CHKSOF, SMA CLA | |
1498 | JMP SOFTOK /SOFT ERROR | |
1499 | JMP INERR | |
1500 | ||
1501 | PAGE | |
1502 | \fHEIGHT, -30 /SET TO SCREEN HEIGHT BY SET COMMAND | |
1503 | SDELAY, -200 /SET TO HOLD SCREEN DELAY BY SET COMMAND | |
1504 | IFNZRO HEIGHT-3000 <__FIX SET COMMAND__> | |
1505 | LINCNT, 0 /THIS WORD IS ZERO TO FLAG THE NEW BASIC EDITOR TO "SET" | |
1506 | CURPOS, 0 | |
1507 | ||
1508 | STIMER, 0 | |
1509 | SCOPFG, 0 /SET NONZERO IF TERMINAL IS A SCOPE | |
1510 | ||
1511 | /SKIP IF ^O NOT TYPED AND CLEAR 'COFLG' | |
1512 | /RETURN TO CALL+1 IF ^O WAS TYPED AND SET 'COFLG' | |
1513 | /SET OR CLEAR 'CLFLG' IF ^S OR ^Q TYPED OTHERWISE | |
1514 | ||
1515 | ZERO, | |
1516 | CTRLO, 0 | |
1517 | KSF | |
1518 | JMP CTRLOX | |
1519 | KRB | |
1520 | AND A177 | |
1521 | TAD MCC | |
1522 | SNA | |
1523 | JMP I (BYEBYE | |
1524 | TAD MCO | |
1525 | SNA | |
1526 | JMP CTRLOX+2 | |
1527 | TAD MCQ | |
1528 | SNA | |
1529 | JMP SETFLG+1 | |
1530 | TAD MCS | |
1531 | SNA | |
1532 | JMP SETFLG | |
1533 | CTRLOX, ISZ CTRLO | |
1534 | CLA IAC | |
1535 | DCA COFLAG | |
1536 | JMP I CTRLO | |
1537 | ||
1538 | SETFLG, IAC | |
1539 | DCA CSFLG | |
1540 | JMP CTRLOX | |
1541 | ||
1542 | ||
1543 | CRLF, 0 | |
1544 | TAD O215 | |
1545 | JMS I [TTYOUT | |
1546 | TAD O212 | |
1547 | JMS I [TTYOUT | |
1548 | JMP I CRLF | |
1549 | ||
1550 | /PRINT A CHAR ON TERMINAL | |
1551 | /PAUSE IF LF WAS PRINTED AND DELAY REQUESTED | |
1552 | /SCREENSIZE ALSO SET BY "SET TTY" COMMAND | |
1553 | ||
1554 | TTYOUT, 0 | |
1555 | TSF /FIRST WAIT | |
1556 | JMP .-1 | |
1557 | TLS /NOW PRINT THE CHAR | |
1558 | AND A177 | |
1559 | TAD (-15 /TEST IF LF WILL FOLLOW | |
1560 | SZA CLA | |
1561 | JMP I TTYOUT /RETURN IF NO | |
1562 | ISZ LINCNT /TEST LINE COUNTER FOR SCREENFULL | |
1563 | JMP I TTYOUT | |
1564 | TAD HEIGHT | |
1565 | DCA LINCNT /NOW RESET SCREEN COUNTER | |
1566 | TAD SDELAY | |
1567 | SNA /SKIP IF DELAY REQUESTED | |
1568 | JMP I TTYOUT /OTHERWISE JUST RETURN AT ONCE | |
1569 | DCA STIMER /SET HOLD SCREEN TIMER | |
1570 | DLOOP, KSF /FIRST TEST IF KEY STRUCK | |
1571 | JMP NOKST /JMP IF NO | |
1572 | KRS /ELSE READ CHAR | |
1573 | AND A177 /MASK TO 7BIT | |
1574 | TAD MCC | |
1575 | SNA | |
1576 | JMP I [BYEBYE /JMP IF ^C SEEN | |
1577 | TAD MCO | |
1578 | SZA | |
1579 | TAD MCQ | |
1580 | SZA | |
1581 | TAD MCS | |
1582 | SNA CLA | |
1583 | JMP I TTYOUT /RETURN WITH CHAR STILL IN BUFFER IF ANY OF ABOVE SEEN | |
1584 | NOKST, ISZ ZERO | |
1585 | JMP .-1 /LOOP 4096 TIMES (USUALLY) | |
1586 | ISZ STIMER /TEST DELAY COUNTER | |
1587 | JMP DLOOP /REITERATE IF NOT DONE | |
1588 | JMP I TTYOUT /ELSE RETURN FOR MORE | |
1589 | ||
1590 | MCC, -3 | |
1591 | MCO, -17+3 | |
1592 | MCQ, -21+17 | |
1593 | MCS, -23+21 | |
1594 | A177, 177 | |
1595 | ||
1596 | /PRINT A BACKSPACE | |
1597 | /IF TERMINAL IS A SCOPE, ECHO BS,SP,BS TO RUBOUT AND REPOSITION | |
1598 | /CURSOR. OTHERWWISE ECHO BACKARROW | |
1599 | ||
1600 | PRTBSP, 0 | |
1601 | TAD SCOPFG /TEST SCOPE BIT | |
1602 | SNA CLA | |
1603 | JMP BKARRW /NOT - ECHO BACKARROW | |
1604 | TAD NCHARS /SEE IF AT LEFT MARGIN | |
1605 | TAD NDIGS | |
1606 | SNA CLA | |
1607 | JMP I PRTBSP /DO NOTHING IF YES | |
1608 | TAD O10 /ELSE ECHO BS | |
1609 | JMS I [TTYOUT | |
1610 | TAD (40 | |
1611 | JMS I [TTYOUT /SP | |
1612 | TAD O10 | |
1613 | SKP /BS | |
1614 | JUSTSP, TAD (40 /SPACE | |
1615 | JMS I [TTYOUT | |
1616 | JMP I PRTBSP /DONE | |
1617 | BKARRW, TAD ("_ | |
1618 | JMS I [TTYOUT | |
1619 | JMP I PRTBSP | |
1620 | ||
1621 | PAGE | |
1622 | \fLINE, /THE TELETYPE LINE BUFFER. | |
1623 | WSNAME, 0;0;0145;6454;3343;4264;5244;1770;6400 | |
1624 | START, JMP RBASIC /IT WAS RAN | |
1625 | CDF 10 /IF CHAINED TO CHECK IF CCL PASSED | |
1626 | TAD I (7644 /Q SWITCH IN RESPONSE TO .BASIC COMMAND (OS78) | |
1627 | CDF | |
1628 | AND O200 /ISOLATE THE BIT | |
1629 | SZA CLA | |
1630 | JMP RBASIC /TREAT AS .R BASIC IF YES | |
1631 | JMS I (CORE | |
1632 | CLA IAC | |
1633 | DCA I (JSW /NO SWAP | |
1634 | CIF 10 | |
1635 | JMS I (7700 /FETCH USR | |
1636 | 10 | |
1637 | CIF 10 | |
1638 | JMS I (200 /RESET SYSTEM TABLES | |
1639 | 13 | |
1640 | TLS /SET TTY FLAG | |
1641 | JMS GETDAT /SET UP TITLE | |
1642 | ISZ CHNFLAG /TELL ABOUT RETURN FROM RUN | |
1643 | JMP I (OLD /READ IN OLD WORK SPACE | |
1644 | RBASIC, CDF 10 | |
1645 | DCA I (7643 | |
1646 | DCA I (7644 | |
1647 | CDF 0 | |
1648 | TLS | |
1649 | JMS I (CORE | |
1650 | TAD O77 | |
1651 | DCA I [TXTAREA | |
1652 | JMS GETDAT /SET UP TITLE | |
1653 | FINDSV, TAD I X11 /LOOK UP SOME SAVE FILES | |
1654 | SNA | |
1655 | JMP LUBUF /GO FIND BASIC.UF | |
1656 | DCA XXXXSV /SAVE POINTER TO NAME | |
1657 | CLA IAC | |
1658 | CIF 10 | |
1659 | JMS I (200 | |
1660 | 2 | |
1661 | XXXXSV, 0 | |
1662 | 0 | |
1663 | JMP NG | |
1664 | IAC | |
1665 | CDF 10 | |
1666 | TAD XXXXSV | |
1667 | DCA I X10 /SAVE BLOCK PLUS 1 | |
1668 | CDF /IN INFO AREA | |
1669 | JMP FINDSV | |
1670 | LUBUF, CLA IAC /FIND BASIC.UF | |
1671 | CIF 10 | |
1672 | JMS I (200 | |
1673 | 2 | |
1674 | BUFN | |
1675 | 0 | |
1676 | JMP .+3 /OK IF MISSING | |
1677 | TAD .-3 | |
1678 | IAC /SAVE BLOCK +1 | |
1679 | CDF 10 | |
1680 | DCA I X10 | |
1681 | CDF | |
1682 | CLA IAC /TYPE WITH NO CARRIAGE RETURN | |
1683 | JMS I [TYPE /"OLD OR NEW -- " | |
1684 | OLDNEW | |
1685 | JMS I [SWAP | |
1686 | JMP I (MAINLUP | |
1687 | NG, JMS I [TYPE /PART OF SYSTEM MISSING | |
1688 | MISING | |
1689 | JMP I (7605 | |
1690 | ||
1691 | /THE FOLLOWING ROUTINE ASSUMES THAT THE YEAR IS ALREADY | |
1692 | /SET UP BY A CALL TO "CORE" - JR | |
1693 | ||
1694 | GETDAT, 0 /PUT OS8 DATE INTO THE TITLE | |
1695 | CDF 10 | |
1696 | TAD I (MDATE /GET DATE WORD | |
1697 | CDF | |
1698 | DCA TEMP2 /SAVE IT | |
1699 | TAD TEMP2 | |
1700 | SNA | |
1701 | JMP I GETDAT /NO DATE | |
1702 | AND O7400 /GET MONTH | |
1703 | CLL RTL /SHIFT SOME | |
1704 | RTL | |
1705 | RTL | |
1706 | TAD (MONTHS-3 | |
1707 | DCA X12 | |
1708 | TAD (DATE-1 /SET UP POINTER TO DATE | |
1709 | DCA X13 | |
1710 | TAD TEMP2 /GET DAY | |
1711 | RTR | |
1712 | RAR | |
1713 | AND O37 | |
1714 | JMP DAYGO /CONVER TO TEXT | |
1715 | DAYLP, TAD (100-12 /REDUCE AND TALLY QUOTIENT | |
1716 | TAD TEMP | |
1717 | DAYGO, DCA TEMP | |
1718 | TAD TEMP /SEE IF OVERFLOW | |
1719 | AND O77 | |
1720 | TAD O7766 | |
1721 | SMA CLA | |
1722 | JMP DAYLP /REDUCE MOD 10 IF NOT | |
1723 | TAD TEMP | |
1724 | TAD (2121 /UNPACK TO HANK'S ASCII | |
1725 | DCA I X13 /INTO DATE | |
1726 | TAD I X12 /GET MONTH CHARS | |
1727 | DCA I X13 | |
1728 | TAD I X12 | |
1729 | DCA I X13 | |
1730 | / TAD TEMP2 /GET YEAR | |
1731 | / AND (7 | |
1732 | / TAD (21 | |
1733 | / CLL RTL | |
1734 | / RTL | |
1735 | / RTL | |
1736 | / ISZ X13 /THE WORD WITH -7 IS THERE | |
1737 | / DCA I X13 /STORE LAST DIGIT OF YEAR | |
1738 | ||
1739 | /ABOVE JOB DONE BY "CORE" DURING INIT TIME | |
1740 | ||
1741 | JMP I GETDAT | |
1742 | ||
1743 | PAGE | |
1744 | \fMONTHS, 1653;4257 /-JAN | |
1745 | 1647;4643 /-FEB | |
1746 | 1656;4263 /-MAR | |
1747 | 1642;6163 /-APR | |
1748 | 1656;4272 /-MAY | |
1749 | 1653;6657 /-JUN | |
1750 | 1653;6655 /-JUL | |
1751 | 1642;6650 /-AUG | |
1752 | 1664;4661 /-SEP | |
1753 | 1660;4465 /-OCT | |
1754 | 1657;6067 /-NOV | |
1755 | 1645;4644 /-DEC | |
1756 | NAMLST, BASICN | |
1757 | BCOMPN | |
1758 | BLOADN | |
1759 | BRTSN | |
1760 | BAFN | |
1761 | BSFN | |
1762 | BFFN | |
1763 | 0 | |
1764 | BASICN, FILENAME BASIC.SV | |
1765 | BCOMPN, FILENAME BCOMP.SV | |
1766 | BLOADN, FILENAME BLOAD.SV | |
1767 | BRTSN, FILENAME BRTS.SV | |
1768 | BAFN, FILENAME BASIC.AF | |
1769 | BSFN, FILENAME BASIC.SF | |
1770 | BFFN, FILENAME BASIC.FF | |
1771 | BUFN, FILENAME BASIC.UF | |
1772 | MISING, 5257;4460;5661;5546;6546;0164;7264;6546;5600 | |
1773 | OLDNEW, 5746;7001;6063;0160;5545;1616;0 | |
1774 | ||
1775 | PAGE | |
1776 | \f /THIS PAGE GETS WIPED OUT SOON | |
1777 | ||
1778 | /ROUTINE TO GET CORESIZE, SETUP DATE IN HEADING | |
1779 | /AND SET SCOPE / TTY FLAG FOR RUBOUT TREATMENT | |
1780 | ||
1781 | ||
1782 | CORE, 0 /CORE SIZE SUBROUTINE | |
1783 | CDF 10 /GET INTO DATE FIELD | |
1784 | TAD I (MDATE | |
1785 | CDF /RESET FIELD | |
1786 | AND (7 /LOOK AT LOW YEAR BITS | |
1787 | DCA TEMP /HOLD | |
1788 | TAD I (BIPCCL /NOW GET THE EXTENDED BITS | |
1789 | AND (600 /FROM THE 600 BITS | |
1790 | CLL RTR | |
1791 | CLL RTR /SHIFT INTO PLACE | |
1792 | TAD TEMP /ADD TO LOW BITS | |
1793 | ISZ I (DASH6 /BUMP THE YEAR TENS DIGIT | |
1794 | TAD (-12 | |
1795 | SMA /SKP IF .LT. 10 OFF OF 1970 | |
1796 | JMP .-3 /ELSE DECR AGAIN | |
1797 | TAD (12+21 /CONVERT TO "HANKS ASCII" | |
1798 | CLL RTL | |
1799 | RTL | |
1800 | RTL /SWAP TO LEFT HALF BYTE | |
1801 | DCA I (EODAT /NOW STORE IN DATE TEMPLATE | |
1802 | CDF 10 | |
1803 | TAD I (7726 /LOOK AT HLT/CLA HLT SCOPE KLUDGE | |
1804 | CDF | |
1805 | AND O200 /GET SCOPE BIT | |
1806 | DCA I (SCOPFG /AND STORE IT | |
1807 | ||
1808 | /STANDARD OS/8 CORESIZE ROUTINE | |
1809 | ||
1810 | TAD I (7777 | |
1811 | AND COR70 | |
1812 | CLL RAR | |
1813 | RTR | |
1814 | SNA | |
1815 | JMP COR0 | |
1816 | IAC | |
1817 | DCA CORSIZ | |
1818 | JMP COREX | |
1819 | COR0, CDF | |
1820 | TAD CORSIZ | |
1821 | RTL | |
1822 | RAL | |
1823 | AND COR70 | |
1824 | TAD COREX | |
1825 | DCA .+1 | |
1826 | COR1, CDF | |
1827 | TAD I CORLOC | |
1828 | COR2, NOP | |
1829 | DCA COR1 | |
1830 | TAD COR2 | |
1831 | DCA I CORLOC | |
1832 | COR70, 70 | |
1833 | TAD I CORLOC | |
1834 | CORX, 7400 | |
1835 | TAD CORX | |
1836 | TAD CORV | |
1837 | SZA CLA | |
1838 | JMP COREX | |
1839 | TAD COR1 | |
1840 | DCA I CORLOC | |
1841 | ISZ CORSIZ | |
1842 | JMP COR0 | |
1843 | COREX, CDF | |
1844 | TAD CORSIZ | |
1845 | CIA | |
1846 | DCA CORSIZ | |
1847 | CLL CML CLA RTL /2 | |
1848 | TAD CORSIZ | |
1849 | SZA CLA | |
1850 | JMP I CORE | |
1851 | TAD (SWAP&177+5600 | |
1852 | DCA I (PATCH5 | |
1853 | JMP I CORE | |
1854 | CORLOC, CORX | |
1855 | CORV, 1400 | |
1856 | ||
1857 | $$ |