3 / THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
4 / AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
5 / CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
6 / FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
8 / THE SOFTWARE DESCRIBED HEREIN IS FURNISHED TO THE PURCHASER
9 / UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
10 / (WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
11 / SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
13 / DIGITAL EQUIPMENT ASSUMES NO RESPONSIBILITY FOR THE USE
14 / OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED
17 / COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION
21 / VERSION #1 B. M. 1/1/77
22 / VERSION #2A M. H. 4/22/77
23 / (CHANGE TAG VERS WHEN CHANGING VERSION NUMBERS)
25 / THIS PROGRAM CAN BE CALLED DIRECTLY OR CHAINED TO BY CCL TO
26 / PRINT INFORMATION ON RANDOM SUBJECTS THE USER ASKS ABOUT.
28 / START ADDRESS:200 JSW:3401
29 / CORE LIMITS:200-7377
31 / THIS PROGRAM REQUIRES AN INPUT FILE TO RUN. FOR OS/8 THE FILE
32 / SHOULD BE NAMED "HELP8.HL" FOR OS/78 THE NAME SHOULD BE "HELP78.HL".
34 / THE FORMAT OF THE FILE IS:
37 / &ADDITIONAL COMMAND NAMES(IF ANY)
40 / TEXT OF NEXT HELP INFO
43 / NOTE: TOO SPEED UP PROCESSING A HASHING ALGORITHM IS USED
44 / WHICH REQUIRES THAT WHEN MULTIPLE COMMANDS REFERENCE A
45 / SINGLE SUBFILE, THE SUBFILE MUST APPEAR IN THE HELP FILE
46 / ALPHABETICALLY ACCORDING TO THE 1ST COMMAND STRING LETTER
48 / THAT IS, SUBFILES MUST BE ARRANGED ALPHABETICALLY ACCORDING TO
49 / THE HIGHEST LETTERED 1ST CHARACTER OF THE COMMAND.
52 USR= 200 /ADDRESS OF USR
53 OS78= 7771 /ADDRESS OF WD WITH OS/78 FLAG BIT(4) (MH)
54 FETCH= 1 /FETCH A HANDLER
55 LOOKUP= 2 /LOOKUP A FILE NAME
56 ENTER= 3 /ENTER A FILE
57 CLOSE= 4 /CLOSE A FILE
58 DECODE= 5 /CALL THE COMMAND DECODER
59 HASH= 3 /HASH CODE SUBTRACTION FACTOR(MH)
62 NAMPTR, 0 /POINTER TO CMD DECODER INPUT NAMES
63 XR1, 0 /RANDOM INDEX REGISTER
64 XR2, 0 /ANOTHER RANDOM INDEX REGISTER
67 COUNT, 0 /RANDOM WORD COUNT FOR ANYTHING
68 CHAR, 0 /TEMPORARY PLACE TO PUT A CHARACTER
69 WILD, 0 /IF NONZERO, NAME HAS '*' OR '?' IN IT
70 WASHLP, 0 /NONZERO IF HELP WAS FOUND ON THIS WORD
71 NAME, ZBLOCK 6 /NAME HELP WAS REQUESTED ON
72 TXTNAM, ZBLOCK 10 /CURRENT SCRIPT FILE NAME BEING LOOKED AT
73 NAMCNT, 0 /NUMBER OF NAMES IN THE COMMAND DECODER AREA
74 BLKCNT, 0 /NUMBER OF AVAILABLE BLOCKS ON OUTPUT
75 OUTADR, 0 /ADDRESS OF OUTPUT HANDLER
76 LINCNT, 0 /COUNT OF NUMBER OF NAMES ON '*' OR 'HELP' LINE
77 LINMAX, -5 /MAXIMUN NUMBER OF NAMES/LINE ON '*' OR 'HELP' LINE
78 FILNAM, ZBLOCK 4 /OUTPUT FILE NAME
79 WDCTR, 0 /WORD COUNTER IN INPUT BLOCK
80 CHTEM, 0 /TEMPORARY SPOT FOR CHARACTER IN 2/3 UNPACK
81 DEVHND, 0 /OUTPUT DEVICE HANDLER ADDRESS
82 CHPTR, 0 /BUFFER POINTER FOR READING CHARACTERS
85 / MAIN LOOP OF PROGRAM
88 START, SKP CLA /NORMAL ENTRY POINT
89 JMP START1 /CHAINED ENTRY (CMD DECODE DONE BY CCL)
90 CIF 10 /SEE WHAT TO DO
95 START1, JMS I (INIT /DO ALL INITIALIZATION AND SETUP
96 MAINLP, JMS I (NXTNAM /GET NEXT NAME FROM COMMAND DECODER AREA
97 JMP I (EXIT /NO NAMES LEFT
98 JMS I (RESET /RESET THE INPUT FILE POINTERS TO THE BEGINNING
99 TAD NAME /CHECK FOR '*' OR 'HELP" NAME INDICATING LIST OF HELPS
102 JMP HELPLS /NAME BEGAN WITH '*'
103 TAD NAME /NOT '*' LOOK FOR HELP (MH)
118 JMP HELPLS /WAS 'HELP" GO PRINT LIST (MH)
119 TAD NAME /IS 1ST CHAR A "?"?(MH)
122 JMP MAIN1 /YES -- DON'T TRY TO HASH FILE (MH)
123 TAD NAME /NO -- HASH START BLK OF FILE BY (MH)
124 AND (77 /MAKING 1ST CHAR OF NAME SIXBIT (MH)
125 DCA TEMP /MULTIPLY BY 1.5 (MH)
126 TAD NAME /THEN SUBTRACT "HASH"(3) (MH)
132 CLA /IF RESULT IF MINUS, SET TO ZERO (MH)
133 TAD I (BLK /ADD REAL START BLK OF FILE (MH)
134 DCA I (BLK /REPLACE NEW BLOCK(MH)
135 MAIN1, JMS I (FINDNM /GET A NAME FROM THE SCRIPT FILE
136 JMP NOHELP /HIT THE END OF THE FILE INSTEAD OF NAME
137 JMS I (COMPAR /COMPARE THIS NAME WITH THE ONE HE HAD
138 JMP MAIN1 /NOT A MATCH, TRY NEXT ONE
139 JMS I (PRINT /PRINT THE HELP INFORMATION FOR THAT NAME
140 TAD WILD /IF A WILD CARD TYPE NAME (I.E. '?') THEN
141 SZA CLA / THEN KEEP SEARCHING PAST 1ST MATCH SINCE THERE
142 JMP MAIN1 / MAY BE MORE.
143 JMP MAINLP /NOT A WILD CARD, GET NEXT CMD DECODER NAME
145 / HIT THE END OF THE SCRIPT FILE
146 / IF DOING A WILD CARD NAME, SOME HJELP MAY HAVE ALREADY BEEN PRINTED. IF
147 / NOT, PRINT AN ERROR MESSAGE ON THE TELETYPE (OR WHATEVER)
148 NOHELP, TAD WASHLP /SEE IF HELP WAS ADMINISTERED
150 JMP MAINLP /YES IT WAS, TRY NEXT NAME ON LIST
151 JMS I (TYPE /TYPE THE ERROR MESSAGE ON THE TTY
153 DCA TXTNAM /PUT ON ZERO TERMINATER
155 NAME-1 /TYPE WHAT HELP MISSED
157 CRLF-1 /TYPE CARR RETURN, LINE FEED
158 JMP MAINLP /NOW CONTINUE ON WITH IT
161 / IF A '*' OR 'HELP' WAS TYPED AS HELP NAME, THEN PRINT A LISTING
162 / OF ALL THE INFO IN THE HELP FILE FOR THE USER TO PICK FROM.
163 HELPLS, JMS I [OUTSTR /PRINT THE HEADING MESSAGE
165 TAD LINMAX /MAX NO. NAMES PER LINE
166 DCA LINCNT /INITIAL COUNT OF NAMES PER LINE
167 HELP1, JMS I (FINDNM /GET NEXT NAME
168 JMP HELP2 /AT END OF FILE
169 JMS I (NAMLST /PRINT THE NAME
171 HELP2, TAD LINCNT /CHECK IF LAST CHAR WAS CRLF
173 JMP MAINLP /IT WAS, DON'T DO ANOTHER
179 / CLOSE ALL FILES AND RETURN TO MONITOR
181 EXIT, TAD (32 /WRITE AN AND OF FILE TO THE OUTPUT
183 TAD (-600 /CLOSE FILE BY WRITING 600(8) NULLS
188 TAD I [BLKSRT /COMPUTE ACTUAL FILE LENGTH FOR CLOSE
190 TAD I [OUTBLK /CURRENT BLOCK NUMBER
196 JMS I (USR /CLOSE THE FILE
200 NOP /ERROR ON CLOSE... CAN'T HAPPEN(MH)
201 JMP I (7605 /RETURN TO OS/8
203 / SEARCH FOR A <LF>& IN THE FILE
204 / THIS IS THE START OF SOME HELP INFO FOR A SUBJECT WHICH IS NAMED AFTER
205 / THE &. COPY THE NAME INTO 'TXTNAM' SO COMPARES CAN BE DONE LATER.
206 / SKIP IF THE END OF FILE ISN'T FOUND ON THE WAY.
208 DCA TXTNAM /CLEAR THE NAME OUT
215 FIND1, JMS I [GCH /LOOK FOR A <LF>& IN THE FILE
216 TAD (-232 /CHECK FOR END OF FILE
218 JMP I FINDNM /RETURN IF FOUND
219 TAD (232-212 /CHECK FOR LINE FEED
222 FIND5, JMS I [GCH /TRY FOR THE & NOW
225 JMP FIND2 /FOUND A LF,&
226 TAD ("&-232 /MAKE SURE THIS ISNT THE END OF FILE
228 JMP I FINDNM /END OF FILE FOUND, RETURN
229 JMP FIND1 /KEEP LOOKING FOR NAME
230 FIND2, TAD (TXTNAM-1 /MOVE THE NAME INTO 'TXTNAM'
232 TAD (-7 /MAX OF 7 CHARACTERS
234 FIND3, JMS I [GCH /GET A NAME CHARACTER
235 TAD (-215 /CHECK IF THE END OF LINE <CR>
237 JMP FIND4 /END OF LINE, THATS IT
239 DCA I XR1 /SAVE CHARACTER IN TXTNAM
241 JMP FIND3 /IF MORE CHARACTERS LEFT
242 FIND4, ISZ FINDNM /BUMP RETURN ADDRESS FOR FOUND RETURN
246 / COMPARE TWO STRINGS, ONE IN NAME AND ONE IN TXTNAM. CHECK FOR WILD
247 / CARD STUFF LATER WHEN THIS PART IS WORKING.
248 / SKIP IF NAMES ARE EQUAL
250 TAD [NAME-1 /SET UP REGISTERS FOR COMPARE
256 COMP1, TAD I XR1 /GET A CHARACTER AND COMPARE WITH ONE FROM
261 JMP COMP3 /NO WILDCARD
266 CIA / THE OTHER STRING
269 JMP I COMPAR /NO MATCH, NORMAL RETURN
272 ISZ COMPAR /EQUAL RETURN IS RETRN ADDR+1
275 / GET THE NEXT NAME FROM THE COMMAND DECODER AREA
276 / STOP ON EITHER A ZERO OR THE NAME GOING TO ZERO
278 ISZ NAMCNT /COUNT NAMES, ONLY 5 IN THE AREA
280 JMP I NXTNAM /RETURN, NO MORE NAMES
281 CLA CLL CMA RTL /NUMBER OF WORDS OF NAME(-3)
286 TAD I NAMPTR /GET 1ST CHARACTER OF NAME
289 JMP NXTN3 /MAYBE OUT OF NAMES(MH)
290 NXTN1, DCA CHAR /SAVE THE WORD
294 RTR /ISOLATE HIGH 6 BITS
296 DCA I XR1 /PUT IN NAME BUFFER
297 TAD CHAR /NOW DO OTHER HALF
299 DCA I XR1 /2ND CHARACTER OF WORD
302 JMP NXTN2 /NO MORE CHARACTERS IN NAME
304 TAD I NAMPTR /LOOP IS STRANGE (SHOULD USE DEVICE WORD FOR CHECK)
307 NXTN2, ISZ NAMPTR /BUMP POINTER TO NEXT NAME IN AREA
309 ISZ NXTNAM /BUMP RETURN ADDRESS FOR FOUND NAME
311 NXTN3, TAD NAMCNT /CHECK FOR "HELP<CR>" OR "TTY:<<CR>"(MH)
312 TAD (4 /IF 1ST TRY AT A NAME THEN NULL COMMAND WAS INPUT(MH)
314 JMP I NXTNAM /WASN'T NULL -- RETURN, END OF NAMES
315 DCA NAME /WAS NULL -- CLEAR OUT NAME BUFFER
321 JMP NXTN2 /PREPARE TO RETURN(MH)
323 SIXTO8, 0 /CONVERT 6BIT TO 8BIT
325 SNA /SNA IF NOT A NULL
326 JMP I SIXTO8 /ELSE RETURN 8BIT NULL
332 / PRINT ALL THE STUFF BETWEEN LINES OF THE OUTPUT DEVICE
333 / THIS CONTINUES UNTIL A <LF>& IS SEEN OR AND OF FILE IS READ
335 ISZ WASHLP /SET FLAG SAYING HE WAS HELPED
336 PRINT3, JMS I [GCH /FIND 1ST LF WITHOUT FOLLOWING &, THEN PRINT(MH)
337 TAD (-212 /WAS CHAR LF?(MH)
339 JMP PRINT3 /NO -- READ NEXT CHAR(MH)
340 JMS I [GCH /YES -- LOOK FOR &(MH)
343 JMP PRINT3 /IT WAS & SO CONTINUE(MH)
344 JMS I (OUTSTR /IT WASN'T & SO BEGIN PRINTING(MH)
348 PRINT1, JMS I [GCH /GET A CHARACTER
349 JMS I [PCH /PRINT THE CHARACTER
350 TAD CHAR /CHECK FOR <LF>
354 JMS I [GCH /TRY FOR EITHER & OR END OF FILE OR FF
355 TAD (-"& /CHECK FOR A &
357 JMP I PRINT /STOP ON <LF> & FOUND
358 TAD (+32 /CHECK FOR <FF> ("&-"<FF> (MH)
361 TAD (-16 /-<EOT>+<FF> (MH)
363 JMP I PRINT /RETURN IF END OF FILE
366 JMP PRINT1 /SKIP "@" IF 1ST CHAR ON LINE
367 TAD CHAR /GET THE CHARACTER BACK TO PRINT
371 \f/ TYPE A MESSAGE ON THE TELETYPE
372 / THE MESSAGE IS ONE CHARACTER PER WORD, TERMINATED WITH A ZERO
374 TAD I TYPE /GET THE MESSAGE ADDRESS
375 ISZ TYPE /BUMP RETURN ADDRESS
377 TYPE1, TAD I XR1 /GET A CHARACTER
379 JMP I TYPE /END OF THE MESSAGE
380 TLS /PRINT THE CHARACTER
387 /PRINT THE NEXT NAME ON THE OUTPUT DEVICE AND CHECK TO SEE IF
388 / A CRLF IS NEEDED. EACH NAME IS TERMINATED WITH A TAB CHAR
390 TAD TXTNAM /CHECK FOR NULL NAME (MH)
392 JMP NAMLS1 /NOT NULL NAME (MH)
393 JMS OUTSTR /WAS NULL -- PRINT "<NONE>" (MH)
395 JMP NAMLS2 /PROCEED (MH)
396 NAMLS1, JMS OUTSTR /PRINT THE NAME ON THE DEVICE
398 NAMLS2, JMS OUTSTR /PRINT A TAB AFTER NAME
400 ISZ LINCNT /BUMP NUMBER PRINTED SO FAR
401 JMP I NAMLST /NO YET, JUST RETURN
402 TAD LINMAX /RESET TO MAX NUMBER OF NAMES PER LINE
404 JMS OUTSTR /TYPE CRLF
406 JMP I NAMLST /NOW RETURN
409 / PRINT A STRING ON THE OUTPUT DEVICE BY STUFFING THE CHARACTERS
410 / IN THE OUTPUT FILE. THE ADDRESS-1 IS FOLLOWING THE JMS
412 TAD I OUTSTR /GET THE ADDRESS
414 DCA XR1 /POINTER TO NAME
415 OUTS1, TAD I XR1 /GET A CHARACTER
417 JMP I OUTSTR /RETURN IF DONE
418 JMS I [PCH /PRINT THE CHARACTER
422 \f/ GET A CHARACTER FROM THE INPUT FILE
424 TAD CHAR /RETURN A EOF IF THE LAST WAS EOF
427 JMP I GIVCH /NOT EOF, GET NEXT CHARACTER
428 TAD (232 /GET END OF FILE
431 GIVCH, INITBF /INITIALLY SET UP BUFFERS
432 AND (377 /MASK THE CHARACTER
433 DCA CHAR /SAVE CHARACTER
437 INITBF, TAD (-2000 /SET WORD COUNT FOR BLOCK(MH)
440 DCA CHPTR /CHARACTER POINTER FOR BUFFER
441 TAD I (BLKBGN /FIND OUT IF DATA TRANSFER WILL(MH)
442 CMA!IAC /PASS END OF FILE, IF SO REDUCE(MH)
443 TAD I (FSIZE /SIZE OF TRANSFER.(MH)
444 DCA TEMP /SAVE -ST. BLK.-FILE SIZE(MH)
445 TAD RDFCT /GET TRANSFER LENGTH IN BLKS(MH)
449 TAD BLK /ADD CURRENT BLK(MH)
450 TAD TEMP /SUBTRACT (ST. BLK OF FILE + SIZE)(MH)
452 JMP INITOK /PROCEED -- DON"T CHG. TRANSFER LEN(MH)
453 CLL!RTR /CHANGE TRANSFER LENGTH SO IT WON'T(MH)
454 RTR /PASS END OF FILE(MH)
458 DCA RDFCT /ENTER THIS INTO FUNCTION WD.(MH)
459 INITOK, JMS I DEVHND /CALL THE HANDLER TO READ A BLOCK
460 RDFCT, 2000 /8 BLOCKS(MH)
463 JMP RDERR /ERROR RETURN(MH)
467 AND I CHPTR /GET THE HIGH ORDER PART
476 TAD CHTEM /GET OTHER HALF
479 JMS GIVCH /GIVE THIRD CHARACTER OF GROUP
481 ISZ WDCTR /BUMP WORD COUNTER
483 TAD RDFCT /INCREMENT BLOCK NUMBER(MH)
488 DCA BLK /ENTER INTO FUNCTION WD(MH)
489 JMP INITBF /READ IT IN
492 \f/ ROUTINE TO INITIALIZE ALL OF THIS STUFF
493 / POINTERS GET SET AND THE FILES OPENED.
497 TAD (OUTHSP+1 /HANDLER ADDRESS
500 TAD I [7600 /GET OUTPUT DEVICE
505 JMS I (USR /FETCH THE HANDLER
508 JMP FETERR /ERROR RETURN(MH)
509 TAD OUTHN1 /GET HANDLER ADDRESS
510 JMP COMMON /COMMON CODE FOR BOTH FETCHES
512 / DEFAULT TO THE TTY WHEN NO OUTPUT DEVICE IS SPECIFIED
513 TTYDFL, TAD TTYNM /SET UP THE DEVICE NAME
517 CIF 10 /FETCH THE OUTPUT HANDLERS
521 TTY, DEVICE TTY /DEFAULT TO THE TTY
522 OUTHND, OUTHSP+1 /PLACE TO PUT THE HANDLER
523 JMP NOTTY /IF TELETYPE HANDLER DOESNT EXIST
524 TAD TTY+1 /SET UP DEVICE NUMBER FOR COMMON CODE
528 TAD OUTHND /GET HANDLER ENTRY POINT
532 TAD (-200 /OUTPUT BUFFER COUNT
535 DCA XR1 /COPY NAME FROM FIELD 1 CMD DEC AREA
539 TAD (1014 /HL.LS IS DEFAULT NAME IF NONE THERE
545 TAD I XR1 /COPY EXTENSION
547 TAD (1423 /USE .LS AS DEFAULT EXTENSION
550 TAD (FILNAM /INITIALIZE THE ENTER
555 JMS I (USR /DO ENTER WITH DEVICE NO IN AC
557 BLKSRT, 0 /STARTING BLOCK
558 FILLNG, 0 /LENGTH OF FILE
559 JMP NOROOM /DEVICE FULL
561 DCA I [OUTBLK /INITIAL OUTPUT BLOCK
563 DCA BLKCNT /NEGATIVE FILE LENGTH IN BLOCKS
565 TAD (7605 /SET NXTNAM POINTER TO THE NEXT NAME
568 DCA NAMCNT /NUMBER OF CHARACTERS IN NAME
570 JMS I (USR /FETCH THE SYSTEM DEVICE HANDLER
571 FETCH / TO GET THE DEVICE NUMBER TO LOOKUP HELP FILE
572 DEVNAM, DEVICE SYS /(MH)
573 DEVH, 0 /HANDLER ADDRESS FOR READING
574 JMP FETERR /FETCH ERROR(MH)
575 TAD DEVNAM+1 /GET THE SYS DEVICE NUMBER
576 CIF 10 /LOOKUP HELP FILE WITH IT
579 BLKBGN, HELP8 /STARTING BLOCK OF THE FILE(MH)
580 FSIZE, 0 /-NUMBER OF BLOCKS(MH)
581 JMP NOSCRP /THE SCRIPT FILE (HELP FILE) ISNT THERE
583 DCA DEVHND /COPY TO PG 0 FOR ADDRESSABILITY
586 NOSCRP, JMS I (TYPE /TYPE MESSAGE SAYING HELP FILE NOT THERE
588 JMP I (7605 /RETURN TO NONITOR
593 NOROOM, JMS I [TYPE /DEVICE FILL
595 JMP I (7605 /RETURN TO MONITOR
598 / RESET THE INPUT FILE TO THE FIRST BLOCK AND RESET ALL THE CHARACTER
599 / UNPACKING STUFF TO THE 1ST CHARACTER OF THE FILE
601 TAD I (BUFFER /RESET BUFFER POINTER TO START
603 DCA WASHLP /SET NOT YET HELPED
604 DCA CHAR /SET TO STOP EOF STUFF
605 TAD (-2000 /RESET WORD COUNT FOR 8 BLOCKS(MH)
607 TAD I (BLKBGN /RESET STARTING BLOCK OF FILE
609 TAD (2000 /RESET TRANSFER LEN FOR 8 BLOCKS(MH)
611 TAD (INITBF /SET UP TO REREAD BLOCK 0 OF FILE
615 / PUT A CHARACTER OUT TO THE OUTPUT DEVICE
616 / THIS IS A COOROUTINE TYPE GUY JUST LIKE THE INPUT HANDLER
621 RPOS1, DCA I OCPTR /PUT 1ST CHARACTER IN BUFFER
624 RPOS2, DCA HOLD /SAVE THE 2ND CHARACTER
627 RPOS3, RTL /PACK THE CHARACTERS
633 DCA I OCPTR /PART WAY DONE
638 AND (7400 /NOW THE 2ND WORD
641 ISZ OCPTR /BUMP POINTER AGAIN
644 JMS DUMP /IF AT THE END OF THE BUFFER
647 RPOS, RPOS1 /INITIALLY SET TO THE 1ST CHARACTER
648 JMP I PCH /RETURN TO THE USER
650 OUWDCT, 0 /OUTPUT BUFFER WORD COUNTER
651 OCPTR, 0 /OUTPUT CHARACTER BUFFER POINTER
652 HOLD, 0 /TEMPORARY PLACE TO PUT A CHARACACTER
653 HOLD2, 0 /SAME AS ABOVE
655 / DUMP THE OUTPUT BUFFER TO THE OUTPUT FILE
658 ISZ BLKCNT /SEE IF ANY ROOM LEFT TO DUMP TO
660 JMP DUMPER /IF OUT OF ROOM
661 JMS I OUTADR /CALL THE HANDLER
663 OUTBFA, OUTBUF /OUTPUT BUFFER ADDRESS
664 OUTBLK, 0 /OUTPUT BUFFER BLOCK NUMBER
665 JMP WRERR /WRITE ERROR(MH)
666 TAD OUTBFA /RESET INPUT POINTER
668 TAD (-200 /RESET THE WORD COUNT
670 ISZ OUTBLK /BUMP OUTPUT BLOCK NUMBER
672 DUMPER, JMS I (TYPE /TYPE ERROR MESSAGE
673 DEVFUL-1 /FILE FULL ERROR
675 WRERR, JMS I (TYPE /WRITE ERROR (MH)
678 FETERR, JMS I (TYPE /FETCH ERROR (MH)
681 RDERR, JMS I (TYPE /(READ ERROR (MH)
684 MWRERR, "W; "R; "I; "T; "E; 240; "E; "R; "R; 215; 212; 0
685 MFEERR, "F; "E; "T; "C; "H; 240; "E; "R; "R; 215; 212; 0
686 MRDERR, "R; "E; "A; "D; 240; "E; "R; "R; 215; 212; 0
689 TTYMIS, "N;"O;" ;"T;"T;"Y;" ;"H;"A;"N;"D;215;212;0
690 NOSC, "N;"O;" ;"H;"E;"L;"P; 240; "F; "I; "L; "E; 215;212;0
691 NULNAM, 242; "N; "O; "N; "E; 242; 0
692 AVAIL, " ; "H; "E; "L; "P; ".; "S; "V; 215; 212
694 "C; "A; "L; "L; "I; "N; "G; 240; "C; "O; "M; "M; "A; "N; "D; "S; ":
695 215; 212; ".; "H; "E; "L; "P; 240; "P; "A; "R; "A; "M; "E; "T; "E; "R
698 "P; "A; "R; "A; "M; "E; "T; "E; "R; "S; ":; 215; 212; 0
701 SORRY, 215;212;"N;"O;240;"H;"E;"L;"P;240;"-;240;0
702 DEVFUL, "D;"E;"V;"I;"C;"E;240;"F;"U;"L;"L;215;212;0
703 HELP8, FILENAME HELP.HL
704 VERS, 0201 /VERSION 2A (MH)
706 OUTHSP, ZBLOCK 400 /OUTPUT HANDLER SPACE
707 OUTBUF, ZBLOCK 400 /OUTPUT BUFFER FOR LISTING
708 BUFFER=. /INPUT BUFFER FOR HELP FILE, 8 BLKS OR 4000 WDS (MH)