.title KRTHLP 27-Jul-93 21:19:39 .ident "V03.62" ; /62/ 27-Jul-93 Billy Youdelman ; ; add dummy file name for HPRINT via RT-11 V5.2/TSX V6.0 LP/LS ; display all subtopic text when wildcarding through nested text ; /BBS/ 1-Dec-91 Billy Youdelman V03.61 ; ; kill extra LF after listing subtopics ; hfind - fixed wildcarding when no subtopics exist for a topic ; help text file updated to reflect mods/additions/omissions ; hindex - display sped up, prompting after it now uses full text, ; also handles topic names greater than 18 bytes ala VMS help ; added fake RMS stuff for RT-11/TSX, and did a general cleanup.. ; path for KRTHLP.HLP is now HLP, KRT, SY and DK ; modified to check for correct copy of KRTHLP.HLP ; on topic error nest in as far as possible instead of from the top ; added HPRINT, dumps help text to LP ; ; if the help text file must be edited/added to/whatever, one must ; then rebuild the index data table located at the end of this file. ; doing this is quite easy - simply run the following BASIC program, ; which will create a new KRTHLP.MAC for you: ; ;1 L$=CHR$(13)+CHR$(10) \ I$=CHR$(9) \ B%=1 \ REM KRTHLP.BAS V03.62 27-Jul-93 ;2 OPEN "DK:KRTHLP.HLP" FOR INPUT AS FILE #1 ;3 OPEN "DK:KRTHLP.PRE" FOR INPUT AS FILE #3 ;4 OPEN "DK:KRTHLP.MAC" FOR OUTPUT AS FILE #2 ;5 LINPUT #3,X$ \ X$=I$+".title KRTHLP"+I$+DAT$+" "+CLK$ \ GOTO 7 ;6 IF END #3 THEN 10 \ LINPUT #3,X$ ;7 PRINT #2,X$ \ PRINT X$ \ GOTO 6 ;10 CLOSE #3 \ LINPUT #1,X$ \ X%=LEN(X$) \ Y%=Y%+X%+2 ;11 H$=I$+";"+I$+"address"+I$+",block"+I$+",offset"+I$+",string"+L$+"hlphead:" ;12 X$="hident:.asciz"+I$+"/"+X$+"/"+L$+I$+".even"+L$+L$+H$ ;19 PRINT #2,X$; \ PRINT X$; ;20 IF END #1 THEN 99 \ LINPUT #1,X$ ;30 X%=LEN(X$) \ Y%=Y%+X%+2 \ IF Y%<512 THEN 40 \ Y%=Y%-512 \ Z%=Z%+1 ;40 T$=SEG$(X$,1,1) \ IF T$<"1" THEN 20 \ IF T$>"5" THEN 20 ;41 REM hlphead:.word L1$ ,block ,offset ;42 REM .word L2$ ,block ,offset ;43 Y$=".word"+I$+"L"+STR$(B%)+"$"+I$+","+STR$(Z%)+"."+I$+"," ;44 Y$=Y$+STR$(Y%)+"."+I$+"; "+X$+L$+I$ ;45 PRINT #2,Y$; \ PRINT Y$; ;47 B%=B%+1 \ GOTO 20 ;99 RESTORE #1 \ B%=1 \ Y$=".word"+I$+"0"+I$+I$+I$+"; null terminator"+L$ ;100 PRINT #2,Y$ \ PRINT Y$ ;120 IF END #1 THEN 199 \ LINPUT #1,X$ \ X%=LEN(X$) ;130 Y%=Y%+X%+2 \ IF Y%<512 THEN 140 \ Y%=Y%-512 \ Z%=Z%+1 ;140 T$=SEG$(X$,1,1) \ IF T$<"1" THEN 120 \ IF T$>"5" THEN 120 ;141 REM L1$: .asciz "1 ?" ;142 REM L2$: .asciz "1 @" ;143 Y$="L"+STR$(B%)+"$:"+I$+".asciz"+I$+'"'+X$+'"' ;145 PRINT #2,Y$ \ PRINT Y$ ;147 B%=B%+1 \ GOTO 120 ;199 X$=I$+".even"+L$+I$+".restore"+L$+L$+I$+".end" ;200 PRINT #2,X$ \ PRINT X$ ;299 CLOSE \ A=SYS(4) ; ; KRTHLP.HLP help text file format info: ; ; The very first line contains an ident string with which this program ; can verify it has the correct file, as otherwise with the internal ; indexing in use here it may seem to be broken for no apparent reason. ; This ident string contains the program version and last edit date: ; ; V03.62-8 27-Jul-93 (or whatever it may later become..) ; ; Topic/subtopic lines must begin with a single ascii digit (ie: "1") ; representing the nesting level in the first column, followed by a ; space (ascii 40), followed by the topic/subtopic name. The text ; following is preceded by a blank (CR/LF only) line. Each line of ; the text must include a space (or lower value char, such as a tab ; or return) in column one, which is used to distinguish text from ; topics. The text is followed by another blank line, just prior to ; the next topic or subtopic line. Wildcarded nesting is currently ; supported through 5 levels, topic text length is 63. bytes and ; aggregate (topic/subtopics) length must be 127. or less bytes. ; Copyright 1986 Brian Nelson ; ; 26-Mar-86 18:41:25 ; ; This is a complete rewrite of Kermit-11's help. It is a bit more ; intelligent, in that it understands wildcarding (HELP SET *), and ; can build subtopic prompting strings and process accordingly. .include "IN:KRTMAC.MAC" .iif ndf KRTINC .error <; .include for IN:KRTMAC.MAC failed> .mcall .RCTRLO CVTARG = C.CRLF ! C.LSPA ! C.SSPA ! C.LCUC ! C.TSPA ; arg processing .sbttl Local data .psect $pdata bugtxt: .asciz "Upgrades" ; /62/ for the BUG command dbldash:.asciz " --" ; /BBS/ a space and a double dash.. fill7: .byte cr ,lf ,40 ,40 ,40 ,40 ,40 ,40 ; /BBS/ a newline and 7 blanks filler: .byte 40 ,0 ; or just one blank, for formatting p2lp$: .asciz "LP:KRTHLP.OUT" ; /62/ where HPRINT sends a file ptopic: .asciz " Select topic, please: " ; /BBS/ for prompting .even sub.0: .word sub.2 ,sub.3 ,sub.4 ; /62/ for nested wildcarded headers .psect $rwdata ,rw,d,lcl,rel,con ; /BBS/ backlev:.word 0 ; /BBS/ last good topic in case error backup: .word 0 ; /BBS/ for nesting in on an error hlpbuf: .blkb 200 ; a read/write buffer for the file htopic: .blkb 200 ; the current topic idxdmp: .word 0 ; index was dumped prbuff: .blkb 200 ; prompting buffer prmptd: .word 0 ; /62/ select subtopic prompt done rmsidx: .word 0 ; /BBS/ current place in RMS index sub.2: .blkb 100 ; /62/ fill in with sub topics sub.3: .blkb 100 ; /62/ as required by how far in sub.4: .blkb 100 ; /62/ nested wildcarding goes.. subwild:.word 0 ; /62/ <> if 1st char of input is "*" topics: .word 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ; /BBS/ list of topic/subtopic addrs topbuf: .blkb 200 ; (nested) topics buffer toplev: .word 0 ; level of current topic ttbuff: .blkb 200 ; terminal read buffer wild: .word 0 ; <> if topic wildcarded .psect $code .sbttl HELP main_loop .enabl lsb ; (1) Try to open help file, if failure print error message ; (2) Parse the command line, filling in the topics pointer array ; (3) Find and print (if found) the requested help topic+[subtopic(s)] ; (4) If not found, build a new command line from the topics pointer ; array, prompt and concatenate the requested topic ; (5) Go back to (2) ; (6) When done, close help file c$bug:: strcpy argbuf ,#bugtxt ; /62/ do this for br c$help ; the "BUG" command prihlp::tst outopn ; come here to print it too.. beq 1$ ; output channel is available mov #er$lby ,r0 ; chan is busy br 2$ ; handle error 1$: calls create ,<#p2lp$,#lun.ou,#text> ; open chan to LP: tst r0 ; did it work? beq 3$ ; ya 2$: direrr r0 ; no, say why.. return 3$: mov sp ,outopn ; flag output channel is open mov #lun.ou ,xprint ; enable print routine in ttyout stuff c$help::call hlpopn ; come here for just plain help.. tst r0 ; locate and open the help file? beq 9$ ; /BBS/ ya.. jmp 99$ ; /62/ no, error already displayed.. 9$: upcase argbuf ; /BBS/ keep this out of the loop! clr prmptd ; /62/ haven't asked for a subtopic clr subwild ; /62/ first char of input isn't a "*" 10$: clr idxdmp ; index has not been dumped yet clr wild ; clear the wildcarding flag clr topics ; init [sub]topics pointers clrb prbuff ; /BBS/ clear sub-level prompt buffer mov #hlphead,rmsidx ; /BBS/ goto the top of the RMS list mov argbuf ,r5 ; /BBS/ point to possible command args tstb @r5 ; anything there? beq 60$ ; no, dump root index call parse ; ya, set up pointers call hfind ; now locate the desired text tst r0 ; find anything? beq 20$ ; yes, let's go dump the text dec r0 ; ok, was it a code of 1 or 2? beq 50$ ; 1, which means not found mov sp ,wild ; 2, found something wildcarded 20$: call hprint ; dump the help text out now br 70$ ; then continue 50$: message < Help not found for the requested topic>,cr ; /BBS/ indent mov backup ,rmsidx ; /BBS/ here on a topic error? beq 55$ ; /BBS/ nope.. mov backlev ,toplev ; /BBS/ ya, recover topic level clr backup ; /BBS/ don't come back here from here clr idxdmp ; /BBS/ haven't dumped an index yet clr wild ; /BBS/ in case nothing was there to * br 20$ ; /BBS/ print nested in as far as can 55$: clr topics ; re-init [sub]topics pointers clrb prbuff ; /BBS/ clear sub-level prompt buffer clrb hlpbuf ; /BBS/ init one more buffer mov #hlphead,rmsidx ; /BBS/ goto the top of the RMS list 60$: .newline mov #'1 ,-(sp) ; flag to.. call hindex ; ..dump the top-level index out now 70$: tst idxdmp ; did we ever print [sub]topic list? beq 99$ ; /62/ no, just exit mov #prbuff ,r3 ; ya, build a prompt string mov argbuf ,r4 ; in the argbuf mov #topics ,r5 ; pointers to the parsed arguments clrb @r4 ; /BBS/ init argbuf keep prbuff intact 75$: mov (r5)+ ,r2 ; get next parsed argument beq 80$ ; all done, exit cmpb (r2) ,#'* ; wildcard argument? beq 100$ ; /BBS/ ya, done strcat r4 ,r2 ; /BBS/ no, add in previous [sub]topic strcat r4 ,#filler ; /BBS/ and a delimiter br 75$ ; do next arg 80$: tstb @r3 ; /BBS/ anything in prompt buffer? beq 88$ ; /BBS/ nope.. strcat r3 ,#dbldash ; /BBS/ ya, add " --" to prompt string 88$: strcat r3 ,#ptopic ; finish creating the prompt clr subwild ; /62/ first char of input isn't a "*" .rctrlo ; /BBS/ be sure output is on .newline calls readcmd ,<#ttbuff,r3> ; /BBS/ use SL editor tst r0 ; successful terminal read? bne 100$ ; /BBS/ no, got to exit calls cvt$$ ,<#ttbuff,r1,#cvtarg> ; remove garbage, upper case tst r0 ; anything left? beq 99$ ; /62/ no, exit please clrb ttbuff(r0) ; ya, ensure .asciz cmpb ttbuff ,#'* ; /62/ is first byte an asterisk? bne 89$ ; /62/ no mov sp ,subwild ; /62/ first char of input is a "*" 89$: strcat r4 ,#ttbuff ; append the data just read please mov sp ,prmptd ; /62/ prompted for subtopic flag jmp 10$ ; and parse the command all over again 99$: clr r0 ; /62/ here if error already handled 100$: save ; /62/ moved hlpclo here.. tst outopn ; is chan to LP open? beq 110$ ; no calls close ,<#lun.ou> ; ya, close it clr outopn ; say it's now closed 110$: clr xprint ; turn off hprint calls close ,<#lun.in> ; close the help text file clr inopn ; flag channel is now free unsave ; /62/ return .dsabl lsb .sbttl Parse command line ; P A R S E ; ; passed: r5 = command args (minus "HELP"), .asciz ; return: topics = addresses to each topic/subtopic ; extra embedded spaces are removed parse: save mov #topbuf ,r4 ; where to copy the text mov #topics ,r3 ; where to place the pointers to it clr @r3 ; assume nothing was passed 10$: tstb @r5 ; all done? beq 100$ ; yes, exit this routine cmpb @r5 ,#space ; while (*ch && *ch == space) ch++ bne 15$ ; not a space, go copy the data inc r5 ; a space found, check next one br 10$ ; next 15$: mov r4 ,(r3)+ ; insert current address clr @r3 ; ensure next one is cleared out 20$: tstb @r5 ; all done with this line? beq 30$ ; yes, exit cmpb @r5 ,#space ; space delimiter found? beq 30$ ; yes, setup for next one movb (r5)+ ,(r4)+ ; no, copy some data over br 20$ ; next please 30$: clrb (r4)+ ; ensure .asciz please br 10$ ; next subtopic 100$: unsave return .sbttl Find the topic in the help file ; input: topics = list of addresses of text to match ; return: r0 = 0 if success ; = 1 if not found ; = 2 if match and wildcarded topic/subtopic ; /BBS/ modified to scan an internal index and return pointer in rmsidx ; to block and offset of beginning of desired text in KRTHLP.HLP hfind: save mov #topics ,r5 ; point to the help topic list mov #'1 ,r2 ; current topic level clrb htopic ; clear out header mov #hlphead,r4 ; /BBS/ pointer to fake RMS list 10$: tst @r5 ; anything to look for? beq 100$ ; no, just leave pointing at beginning mov @r4 ,r1 ; /BBS/ get address of ascii topic beq 90$ ; /BBS/ end of list, return(1) cmpb @r1 ,r2 ; topic levels match up? blo 90$ ; /BBS/ if gt then quit looking.. bne 80$ ; no, read another record then inc r1 ; /BBS/ skip over the level flag now inc r1 ; /BBS/ skip over space mov (r5) ,r3 ; get pointer to text to match up cmpb (r3) ,#'* ; wildcarding? beq 85$ ; yes, return(2) 50$: tstb (r3) ; found end of the desired topic? beq 70$ ; ya, check next level topic needed tstb (r1) ; /BBS/ end of the line yet? beq 80$ ; yes movb (r1)+ ,r0 ; /BBS/ no, get next byte cmpb r0 ,#'a!40 ; is this a lower case letter? blo 55$ ; nope cmpb r0 ,#'z!40 ; maybe, if a "z" or below bhi 55$ ; no bicb #40 ,r0 ; ya, convert to upper case 55$: cmpb (r3)+ ,r0 ; do the characters match up? beq 50$ ; yes, keep checking them br 80$ ; no, read another record 70$: mov r2 ,backlev ; /BBS/ save this before the bump mov r4 ,backup ; /BBS/ save copy of RMS index inc r2 ; increment level # and read tst (r5)+ ; another record from the help file mov @r4 ,r1 ; /BBS/ recover pointer inc r1 ; /BBS/ bump past topic level number strcat #htopic ,r1 ; /BBS/ Build up a header record clr prmptd ; /62/ do main topic when wildcarding 80$: add #6 ,r4 ; /BBS/ bump index to next entry br 10$ ; then back for more 85$: tstb htopic ; /62/ if eq it's H * or HPRINT * so beq 88$ ; /62/ there's no first topic to see tst prmptd ; /62/ already displayed main topic? bne 88$ ; /62/ ya tst subwild ; /62/ don't dump the index if first bne 88$ ; /62/ char of inout is a "*" save ; /62/ no, stash this address.. mov backup ,rmsidx ; /62/ prep to dump the main text mov backlev ,toplev ; /62/ for a wildcarded [sub]topic clr wild ; /62/ but only that for the moment call hprint ; /62/ display main topic text & index .newline ; /62/ format the display mov sp ,wild ; /62/ restore wildcarded status unsave ; /62/ pop address of topic name 88$: dec r1 ; /BBS/ back up to include a blank strcpy #hlpbuf ,r1 ; /62/ used to build first header mov r2 ,toplev ; save the topic level mov #2 ,r0 ; /62/ match with wildcarding br 107$ ; /62/ done 90$: mov #1 ,r0 ; nothing found (reached end of file) mov #hlphead,rmsidx ; /BBS/ reset to top of file clr @r5 ; /BBS/ zap pointer to ng [sub]topic br 110$ ; bail out 100$: mov r2 ,toplev ; save topic level dec toplev ; it will be off by one clr r0 ; found the topic sub #6 ,r4 ; /BBS/ back up to last good one 107$: mov r4 ,rmsidx ; /BBS/ save a copy of where it is now clr backup ; /BBS/ clear nested error rmsidx buff 110$: unsave return .sbttl Print help text found by HFIND ; assumes: both PARSE and HFIND have been called already ; return: r0 = if < failure, the RMS error code ; if 0 success ; if 1 found subtopics to print out ; /BBS/ patched to support indexing for help text in KRTHLP.HLP hprint: save clrb sub.2 ; /62/ init wildcarded clrb sub.3 ; /62/ sub topics clrb sub.4 ; /62/ nested names buffers clr r2 ; /62/ init index display control flag strcpy #ttbuff ,#htopic ; get the default header string made strcpy #prbuff ,r0 ; /62/ copy for select topic prompt mov #hlpbuf ,r4 ; /BBS/ point to the buffer now tst wild ; /BBS/ coming in wild? beq 29$ ; /BBS/ nope.. .newline ; /BBS/ format display.. strcat #ttbuff ,r4 ; /62/ build up a header record for wrtall r0 ; /62/ the first topic and print it .newline ; /BBS/ and tag it with a newline clrb (r0) ; /BBS/ clear ttbuff name out now 29$: call preset ; /BBS/ goto needed record in krthlp bcc 30$ ; /62/ it worked 9999$: jmp 100$ ; /62/ it didn't work 30$: calls getrec , ; /62/ read the next record tst r0 ; error? bne 9999$ ; /62/ yes, exit clrb hlpbuf(r1) ; ensure it's .asciz please cmpb (r4) ,#space ; leading space or control char? blos 60$ ; yes, a normal line to print add #6 ,rmsidx ; /BBS/ keep RMS index pointer current cmpb (r4) ,toplev ; is this a lower, higher or same? blo 90$ ; lower level, exit beq 50$ ; same level mov rmsidx ,r3 ; /62/ save to dump text after index cmpb (r4) ,r2 ; /62/ done this particular index yet? ble 40$ ; /62/ ya, once is enough movb (r4) ,r0 ; /62/ copy of current nesting level sub #'0+2 ,r0 ; /62/ convert, "2"=0 "3"=1 "4"=2 blt 37$ ; /62/ this should never happen asl r0 ; /62/ word indexing strcpy sub.0(r0),#errtxt ; /62/ stash a copy for making headers 37$: movb (r4) ,r0 ; /BBS/ keep the high byte clear while mov r0 ,-(sp) ; /BBS/ passing the level number call hindex ; and print out whats leftover tst wild ; if not wildcarded beq 80$ ; then exit .newline ; /BBS/ format wildcarded display 40$: mov r3 ,rmsidx ; /62/ now back up and do topics text call preset ; /62/ load buff with 1st block of it bcs 100$ ; /BBS/ it didn't work.. 50$: tst wild ; same level, is it wildcarded? beq 90$ ; no, we must exit movb (r4) ,r0 ; /62/ copy of current nesting level sub #'0+1 ,r0 ; /62/ convert to an integer blt 57$ ; /62/ not a topic line beq 51$ ; /62/ level "1" hose "2" and up.. dec r0 beq 53$ ; /62/ level "2" hose "3" and up.. dec r0 beq 55$ ; /62/ level "3" hose "4" and up.. br 57$ ; /62/ level "4" could need them all 51$: clrb sub.2 ; /62/ clear nested subtopic names 53$: clrb sub.3 ; /62/ as determined (and required) 55$: clrb sub.4 ; /62/ by the current topic level 57$: movb (r4) ,r2 ; /62/ topic level for index control clrb (r4) ; /62/ don't print this line strcpy #ttbuff ,#htopic ; build a header string up strcat r0 ,#sub.2 ; /62/ fill in as else null in strcat r0 ,#sub.3 ; /62/ required by first byte to strcat r0 ,#sub.4 ; /62/ nesting level skip past .. mov @rmsidx ,r1 ; /62/ copy for subtopic string build inc r1 ; /62/ skip past the leading number strcat r0 ,r1 ; copy over the topic name strcpy #errtxt ,r1 ; /62/ save a copy for nested headers 60$: tstb ttbuff ; do we need to print the next topic? beq 70$ ; no .newline ; ya wrtall #ttbuff ; dump it please tst wild ; /BBS/ if a wildcard dump bne 69$ ; /BBS/ don't do this newline .newline 69$: clrb ttbuff ; clear topic name out now 70$: tstb (r4) ; if this is a null beq 75$ ; don't print it wrtall r4 ; ok to print, dump the text now 75$: .newline jmp 30$ ; /62/ next please 80$: mov #1 ,r0 ; return(sub_topic_found) br 100$ 90$: clr r0 ; return(success) 100$: unsave return .sbttl Preset an I/O channel to an exact block and offset ; /BBS/ preset: mov rmsidx ,r0 ; get copy of indexing pointer calls prewind ,<#lun.in,2(r0),4(r0)> ; load and preset buffer rts pc ; 2(r0)=block 4(r0)=offset .sbttl Print index .enabl lsb ; passed: 2(sp) = sub-topic level at which index is expected ; assumption: HLPBUF is already loaded with the current record ; and rmsidx is pointing to it ; /BBS/ modified to use an internal index appended herein at hlphead hindex: save mov sp ,idxdmp ; flag that we have been here clr -(sp) ; allocate clr -(sp) ; some buffers mov sp ,r5 ; and a pointer to them movb 2+<5*2>(sp),2(r5) ; /BBS/ get the topic level passed cmpb 2(r5) ,#'1 ; is this the main menu today? bhi 10$ ; no, don't reposition the file clrb hlpbuf ; flag nothing's there 10$: message < Additional information is available on:>,cr wrtall #fill7 ; /BBS/ newline + 5 blanks mov #4 ,(r5) ; number of topic names per line mov rmsidx ,r4 ; /BBS/ recover index into RMS data 30$: mov @r4 ,r1 ; /BBS/ get pointer to next record beq 305$ ; /BBS/ nothing left cmpb @r1 ,2(r5) ; /BBS/ check topic level bhi 507$ ; /BBS/ higher level, ignore it blo 305$ ; /BBS/ lower level, we need to exit ; /BBS/ this displays topic names longer than 18. bytes ala VMS help inc r1 ; skip the level number on the line inc r1 ; then skip the space next to it 301$: strlen r1 ; compute the padding to next column mov r0 ,r2 ; get copy of length 302$: sub #18. ,r2 ; assume worst case 18. spaces needed neg r2 ; we now have the number of spaces bgt 303$ ; that is, if it's a positive number neg r2 ; preset for looping into next column dec (r5) ; is there a next column to overwrite? bne 302$ ; yes, pad to end of it wrtall #fill7 ; init a newline to beginning column mov #4 ,(r5) ; reset the counter now br 301$ ; and start fresh again.. 303$: wrtall r1 ; add on the current name dec (r5) ; is there room left for the next one? beq 505$ ; nope mov #space ,r0 ; load a space 503$: call writ1ch ; dump it to TT sob r2 ,503$ ; until padded to length of 18. bytes br 507$ ; then back for more.. 505$: wrtall #fill7 ; init a newline to beginning column mov #4 ,(r5) ; reset the counter now 507$: add #6 ,r4 ; bump to next entry br 30$ ; back for more 305$: cmp #4 ,(r5) ; is the current line blank? beq 88$ ; ya, skip the extra blank line .newline ; no, do a newline 88$: clr r0 ; success ; /BBS/ end of VMS-style hindex patch.. mov r4 ,rmsidx ; /BBS/ save current RMS index pointer cmp (sp)+ ,(sp)+ ; pop some local buffers... unsave mov (sp)+ ,(sp) ; move return address up return .dsabl lsb .sbttl Open the help file .enabl lsb ; /BBS/ modified to check for correct version of KRTHLP.HLP.. hlpopn: mov #rtname ,r3 ; top of list of file specs to try 20$: tst @r3 ; end of the list yet? beq 70$ ; yes, can't find the help file calls fparse ,<@r3,#srcnam> ; use Kermit's DK, not the os default calls open ,<#srcnam,#lun.in,#text> ; try to open file tst r0 ; did it work? bne 40$ ; no mov #hlpbuf ,r4 ; check for correct help file calls getrec , ; read the first line of it tst r0 ; error? bne 35$ ; ya clrb hlpbuf(r1) ; no, ensure it's .asciz please strlen #hident ; length of verifying string calls instr , ; check it tst r0 ; a match? bne 99$ ; found it, file is ok 35$: message wrtall #srcnam ; the bad version's file name message < is an incorrect version>,cr calls close ,<#lun.in> ; dump the channel to it 40$: tst (r3)+ ; prep for the br 20$ ; next one 70$: message ,cr ; /BBS/ mov #er$fnf ,r0 ; return file not found error br 100$ 99$: mov sp ,inopn ; flag file is open so PF2 will know clr r0 ; success 100$: return .dsabl lsb .save .psect $pdata rtname: .word 1$ ,2$ ,3$ ,4$ ,0 ; this is the help file path 1$: .asciz "HLP:KRTHLP.HLP" ; /BBS/ try here first 2$: .asciz "KRT:KRTHLP.HLP" ; /BBS/ then here, etc.. 3$: .asciz "SY:KRTHLP.HLP" 4$: .asciz "DK:KRTHLP.HLP" .even .sbttl Fake RMS for help text file under RT-11 ; /BBS/ added this.. ; /BBS/ Note here the "block" and "offset" point to the first line FOLLOWING ; the topic/subtopic line in the help text file (KRTHLP.HLP). In other ; words, these data point to the first byte of the help text itself for ; the indicated topic or subtopic, which is directly AFTER the ; tag on the topic/subtopic line. hident:.asciz /V03.62-8 27-Jul-93/ .even ; address ,block ,offset ,string hlphead:.word L1$ ,0. ,25. ; 1 ? .word L2$ ,0. ,305. ; 1 @ .word L3$ ,1. ,229. ; 1 ASCII_Set .word L4$ ,6. ,371. ; 1 ASSIGN .word L5$ ,7. ,86. ; 1 Binary_Files .word L6$ ,11. ,66. ; 1 BUG .word L7$ ,11. ,150. ; 1 BYE .word L8$ ,11. ,182. ; 1 CD .word L9$ ,11. ,444. ; 1 CLS .word L10$ ,12. ,59. ; 1 CLX .word L11$ ,12. ,150. ; 1 Common_Problems .word L12$ ,17. ,209. ; 1 CONNECT .word L13$ ,22. ,297. ; 1 Control_Chars .word L14$ ,25. ,238. ; 1 COPY .word L15$ ,25. ,466. ; 1 CWD .word L16$ ,25. ,496. ; 1 DATE .word L17$ ,26. ,76. ; 1 Debugging .word L18$ ,27. ,431. ; 1 DELETE .word L19$ ,28. ,119. ; 1 DIAL .word L20$ ,32. ,393. ; 1 DIRECTORY .word L21$ ,34. ,23. ; 1 DISCONNECT .word L22$ ,34. ,61. ; 1 DISMOUNT .word L23$ ,34. ,293. ; 1 EXAMINE .word L24$ ,35. ,410. ; 1 EXIT .word L25$ ,36. ,56. ; 1 File_Format_Info .word L26$ ,48. ,470. ; 1 FINISH .word L27$ ,49. ,105. ; 1 GET .word L28$ ,54. ,203. ; 1 HANGUP .word L29$ ,55. ,170. ; 1 HELP .word L30$ ,56. ,286. ; 1 HOME .word L31$ ,56. ,453. ; 1 HPRINT .word L32$ ,57. ,305. ; 1 Installation_Notes .word L33$ ,68. ,137. ; 2 Files_Required .word L34$ ,74. ,157. ; 2 KM .word L35$ ,79. ,487. ; 2 KRT.INI_Examples .word L36$ ,83. ,184. ; 2 Modems .word L37$ ,89. ,341. ; 3 Anchor .word L38$ ,93. ,207. ; 3 Hayes_MNP .word L39$ ,94. ,50. ; 3 Telebit_T2500 .word L40$ ,101. ,282. ; 3 Telebit_T3000 .word L41$ ,104. ,83. ; 3 US_Robotics .word L42$ ,108. ,20. ; 2 RT-11 .word L43$ ,117. ,233. ; 2 TSX-Plus .word L44$ ,129. ,279. ; 1 Introduction .word L45$ ,137. ,14. ; 1 Local_vs_Remote .word L46$ ,139. ,396. ; 1 LOGFILE .word L47$ ,141. ,113. ; 1 LOGOUT .word L48$ ,141. ,328. ; 1 Long_Packets .word L49$ ,144. ,240. ; 1 MILNET_TAC .word L50$ ,144. ,371. ; 2 Binary_Files .word L51$ ,145. ,493. ; 2 Flow_Control .word L52$ ,148. ,78. ; 2 Intercept_Character .word L53$ ,148. ,501. ; 2 Time_Outs .word L54$ ,149. ,218. ; 1 Modems .word L55$ ,149. ,493. ; 1 MOUNT .word L56$ ,151. ,308. ; 1 Parity .word L57$ ,154. ,388. ; 1 PRINT .word L58$ ,154. ,446. ; 1 PWD .word L59$ ,155. ,76. ; 1 QUIT .word L60$ ,155. ,111. ; 1 RECEIVE .word L61$ ,159. ,105. ; 1 REDIAL .word L62$ ,161. ,240. ; 1 Release_Notes .word L63$ ,162. ,393. ; 2 KRT.COM .word L64$ ,163. ,16. ; 2 KRTAIL .word L65$ ,163. ,161. ; 2 KRTASM .word L66$ ,163. ,251. ; 2 KRTATR .word L67$ ,164. ,308. ; 2 KRTCM1 .word L68$ ,166. ,322. ; 2 KRTCMD .word L69$ ,169. ,441. ; 2 KRTCON .word L70$ ,172. ,36. ; 2 KRTCVT .word L71$ ,172. ,420. ; 2 KRTDAT .word L72$ ,173. ,114. ; 2 KRTDEB .word L73$ ,173. ,367. ; 2 KRTDIA .word L74$ ,180. ,155. ; 2 KRTDIR .word L75$ ,182. ,23. ; 2 KRTDSP .word L76$ ,184. ,382. ; 2 KRTEDI .word L77$ ,185. ,354. ; 2 KRTERM .word L78$ ,186. ,491. ; 2 KRTERR .word L79$ ,187. ,173. ; 2 KRTHLP .word L80$ ,188. ,504. ; 2 KRTINI .word L81$ ,191. ,225. ; 2 KRTLNK .word L82$ ,191. ,457. ; 2 KRTMAC .word L83$ ,193. ,204. ; 2 KRTNHD .word L84$ ,193. ,266. ; 2 KRTOSI .word L85$ ,194. ,412. ; 2 KRTPAK .word L86$ ,199. ,340. ; 2 KRTREC .word L87$ ,201. ,56. ; 2 KRTRMS .word L88$ ,205. ,337. ; 2 KRTSEN .word L89$ ,207. ,138. ; 2 KRTSER .word L90$ ,208. ,494. ; 2 KRTSHO .word L91$ ,212. ,115. ; 2 KRTST0 .word L92$ ,215. ,268. ; 2 KRTST1 .word L93$ ,219. ,17. ; 2 KRTSUB .word L94$ ,219. ,128. ; 2 KRTTRA .word L95$ ,220. ,57. ; 2 KRTUTL .word L96$ ,221. ,51. ; 2 KRTXL .word L97$ ,223. ,95. ; 2 KRTXM .word L98$ ,223. ,191. ; 2 KRTXMO .word L99$ ,223. ,327. ; 1 REMOTE .word L100$ ,224. ,242. ; 2 CD .word L101$ ,224. ,321. ; 2 COPY .word L102$ ,225. ,350. ; 2 CWD .word L103$ ,225. ,389. ; 2 DELETE .word L104$ ,226. ,38. ; 2 DIRECTORY .word L105$ ,226. ,310. ; 2 HELP .word L106$ ,226. ,362. ; 2 HOST .word L107$ ,227. ,118. ; 2 LOGIN .word L108$ ,227. ,491. ; 2 RENAME .word L109$ ,228. ,163. ; 2 SPACE .word L110$ ,228. ,303. ; 2 TYPE .word L111$ ,228. ,463. ; 2 WHO .word L112$ ,229. ,20. ; 1 RENAME .word L113$ ,229. ,108. ; 1 SEND .word L114$ ,235. ,20. ; 1 SERVER .word L115$ ,239. ,321. ; 1 SET .word L116$ ,240. ,67. ; 2 ATTRIBUTES .word L117$ ,243. ,285. ; 2 BAUD .word L118$ ,243. ,329. ; 2 BINARY_TYPE .word L119$ ,244. ,292. ; 2 BLOCK_CHECK_TYPE .word L120$ ,246. ,58. ; 2 CL: .word L121$ ,254. ,194. ; 2 CONSOLE .word L122$ ,257. ,30. ; 2 DEBUG .word L123$ ,257. ,483. ; 3 ALL .word L124$ ,258. ,14. ; 3 CONSOLE .word L125$ ,258. ,333. ; 3 CONNECT .word L126$ ,258. ,378. ; 3 NONE .word L127$ ,259. ,69. ; 3 NORPACK .word L128$ ,259. ,324. ; 3 NOTERMINAL .word L129$ ,259. ,510. ; 3 NOTT: .word L130$ ,260. ,45. ; 3 OFF .word L131$ ,260. ,291. ; 3 ON .word L132$ ,260. ,395. ; 3 PACKET .word L133$ ,263. ,165. ; 3 RAW .word L134$ ,263. ,332. ; 3 RPACK .word L135$ ,265. ,32. ; 3 TERMINAL .word L136$ ,265. ,442. ; 3 TT: .word L137$ ,265. ,491. ; 2 DEFAULT .word L138$ ,266. ,118. ; 2 DELAY .word L139$ ,266. ,362. ; 2 DIAL .word L140$ ,280. ,259. ; 3 ABORT .word L141$ ,281. ,62. ; 3 ANSWER .word L142$ ,281. ,416. ; 3 BINARY_RESPONSE .word L143$ ,282. ,177. ; 3 BLIND .word L144$ ,282. ,439. ; 3 COMMENT .word L145$ ,283. ,189. ; 3 CON300 .word L146$ ,283. ,457. ; 3 CON1200 .word L147$ ,284. ,195. ; 3 CON2400 .word L148$ ,284. ,445. ; 3 CON4800 .word L149$ ,285. ,183. ; 3 CON9600 .word L150$ ,285. ,494. ; 3 CON19200 .word L151$ ,286. ,237. ; 3 CON38400 .word L152$ ,286. ,491. ; 3 CONFIRM .word L153$ ,287. ,246. ; 3 CONFIRM_ACKNOWLEDGE .word L154$ ,288. ,94. ; 3 DIAL_ACKNOWLEDGE .word L155$ ,288. ,360. ; 3 DIAL_PAUSE .word L156$ ,289. ,416. ; 3 DIAL_RATE .word L157$ ,290. ,234. ; 3 ECHO .word L158$ ,291. ,12. ; 3 FAILURE .word L159$ ,291. ,303. ; 3 FORMAT .word L160$ ,293. ,39. ; 3 Format_effectors .word L161$ ,295. ,82. ; 3 IDLE .word L162$ ,295. ,382. ; 3 Important_Notes! .word L163$ ,303. ,489. ; 3 INITIATE .word L164$ ,304. ,284. ; 3 INITIATE_PROMPT .word L165$ ,305. ,23. ; 3 INIT_ONCE .word L166$ ,306. ,26. ; 3 NOANSWER .word L167$ ,306. ,373. ; 3 NOBINARY_RESPONSE .word L168$ ,307. ,76. ; 3 NOECHO .word L169$ ,307. ,373. ; 3 NOINIT_ONCE .word L170$ ,308. ,139. ; 3 PULSE .word L171$ ,308. ,481. ; 3 RINGING .word L172$ ,309. ,406. ; 3 SETTLE_TIME .word L173$ ,311. ,14. ; 3 SUCCESS .word L174$ ,312. ,44. ; 3 TIME_OUT .word L175$ ,313. ,82. ; 3 TONE .word L176$ ,313. ,431. ; 3 WAKE_ACKNOWLEDGE .word L177$ ,314. ,220. ; 3 WAKE_RATE .word L178$ ,315. ,45. ; 3 WAKE_STRING .word L179$ ,315. ,274. ; 2 DTR .word L180$ ,315. ,342. ; 2 DUPLEX .word L181$ ,316. ,145. ; 2 END_OF_LINE .word L182$ ,316. ,407. ; 2 EOF .word L183$ ,317. ,195. ; 2 ESCAPE .word L184$ ,318. ,48. ; 2 FILE_TYPE .word L185$ ,320. ,189. ; 3 ASCII .word L186$ ,320. ,439. ; 3 AUTO .word L187$ ,321. ,231. ; 3 BINARY .word L188$ ,321. ,459. ; 3 CREATE_SIZE .word L189$ ,323. ,257. ; 3 CSI_PARSING .word L190$ ,324. ,251. ; 3 DEC_MULTINATIONAL .word L191$ ,325. ,57. ; 3 FIXED .word L192$ ,325. ,101. ; 3 IMAGE .word L193$ ,325. ,158. ; 3 NAMING .word L194$ ,325. ,378. ; 4 CONVERTED .word L195$ ,326. ,89. ; 4 FULL .word L196$ ,326. ,318. ; 4 LOWER_CASE .word L197$ ,327. ,39. ; 4 NOLOWER_CASE .word L198$ ,327. ,301. ; 3 NOPROTECT .word L199$ ,328. ,61. ; 3 NOREPLACE .word L200$ ,328. ,116. ; 3 NOVOLUME_VERIFY .word L201$ ,328. ,456. ; 3 PROTECT .word L202$ ,330. ,117. ; 3 REPLACE .word L203$ ,330. ,163. ; 3 TEXT .word L204$ ,330. ,205. ; 3 TYPE .word L205$ ,330. ,376. ; 3 VOLUME_VERIFY .word L206$ ,331. ,151. ; 2 FLOW_CONTROL .word L207$ ,332. ,115. ; 2 HANDSHAKE .word L208$ ,332. ,316. ; 3 CR .word L209$ ,332. ,384. ; 3 NONE .word L210$ ,332. ,430. ; 2 HOME .word L211$ ,333. ,13. ; 2 INCOMPLETE_FILE_DISPOSITION .word L212$ ,334. ,121. ; 2 LD: .word L213$ ,334. ,259. ; 2 LINE .word L214$ ,336. ,350. ; 2 LOCAL_ECHO .word L215$ ,337. ,31. ; 2 LOGFILE .word L216$ ,337. ,86. ; 2 LONG_PACKETS .word L217$ ,338. ,379. ; 2 MODEM_TYPE .word L218$ ,340. ,201. ; 2 NOATTRIBUTES .word L219$ ,340. ,283. ; 2 NODEBUG .word L220$ ,341. ,0. ; 2 NOLONG_PACKETS .word L221$ ,341. ,72. ; 2 NOREPEAT_QUOTING .word L222$ ,341. ,157. ; 2 NOUPDATE .word L223$ ,341. ,346. ; 2 PARITY .word L224$ ,343. ,186. ; 2 PAUSE .word L225$ ,343. ,325. ; 2 PHONE .word L226$ ,343. ,462. ; 3 ANSWER .word L227$ ,345. ,105. ; 3 BLIND .word L228$ ,345. ,454. ; 3 NOANSWER .word L229$ ,346. ,295. ; 3 NUMBER .word L230$ ,348. ,6. ; 3 PULSE .word L231$ ,348. ,473. ; 3 TONE .word L232$ ,349. ,428. ; 3 XMODE .word L233$ ,350. ,448. ; 2 PROMPT .word L234$ ,351. ,270. ; 2 RANDOM .word L235$ ,352. ,93. ; 2 RECEIVE .word L236$ ,352. ,210. ; 3 PACKET_LENGTH .word L237$ ,353. ,219. ; 3 START_OF_PACKET .word L238$ ,354. ,335. ; 3 TIME_OUT .word L239$ ,355. ,185. ; 2 REPEAT_QUOTING .word L240$ ,355. ,395. ; 2 RETRY .word L241$ ,357. ,15. ; 2 SEED .word L242$ ,357. ,167. ; 2 SEND .word L243$ ,357. ,271. ; 3 NOXON .word L244$ ,357. ,346. ; 3 PACKET_LENGTH .word L245$ ,358. ,404. ; 3 PADCHARACTER .word L246$ ,359. ,81. ; 3 PADDING .word L247$ ,359. ,288. ; 3 START_OF_PACKET .word L248$ ,360. ,404. ; 3 TIME_OUT .word L249$ ,361. ,505. ; 3 XON .word L250$ ,362. ,85. ; 2 SERVER .word L251$ ,362. ,306. ; 2 SL .word L252$ ,363. ,44. ; 2 SPEED .word L253$ ,364. ,65. ; 2 START_OF_PACKET .word L254$ ,364. ,342. ; 2 TERMINAL .word L255$ ,366. ,9. ; 2 TT: .word L256$ ,366. ,51. ; 2 UPDATE .word L257$ ,366. ,418. ; 2 VLSWCH .word L258$ ,367. ,206. ; 1 SHOW .word L259$ ,367. ,437. ; 2 ALL .word L260$ ,368. ,0. ; 2 ASSIGNS .word L261$ ,368. ,76. ; 2 ATTRIBUTES .word L262$ ,368. ,150. ; 2 BAUD .word L263$ ,368. ,239. ; 2 BINARY_TYPE .word L264$ ,368. ,325. ; 2 BLOCK_CHECK_TYPE .word L265$ ,368. ,376. ; 2 CL: .word L266$ ,369. ,6. ; 2 CONSOLE .word L267$ ,369. ,158. ; 2 DATE .word L268$ ,369. ,246. ; 2 DEBUG .word L269$ ,369. ,339. ; 2 DEFAULT .word L270$ ,369. ,388. ; 2 DELAY .word L271$ ,369. ,493. ; 2 DIAL .word L272$ ,370. ,485. ; 2 DTR .word L273$ ,371. ,54. ; 2 DUPLEX .word L274$ ,371. ,135. ; 2 END_OF_LINE .word L275$ ,371. ,207. ; 2 EOF .word L276$ ,371. ,388. ; 2 ESCAPE .word L277$ ,371. ,484. ; 2 FILE_TYPE .word L278$ ,372. ,71. ; 2 FLOW_CONTROL .word L279$ ,372. ,166. ; 2 HANDSHAKE .word L280$ ,372. ,224. ; 2 HOME .word L281$ ,372. ,318. ; 2 INCOMPLETE_FILE_DISPOSITION .word L282$ ,373. ,124. ; 2 LD: .word L283$ ,373. ,194. ; 2 LINE .word L284$ ,373. ,460. ; 2 LOCAL_ECHO .word L285$ ,374. ,29. ; 2 LOGFILE .word L286$ ,374. ,111. ; 2 LONG_PACKETS .word L287$ ,374. ,193. ; 2 MEMORY .word L288$ ,374. ,273. ; 2 MODEM_TYPE .word L289$ ,374. ,420. ; 2 PACKETS .word L290$ ,374. ,486. ; 2 PARAMETERS .word L291$ ,375. ,44. ; 2 PARITY .word L292$ ,375. ,100. ; 2 PAUSE .word L293$ ,375. ,167. ; 2 PHONE .word L294$ ,375. ,392. ; 2 RANDOM .word L295$ ,375. ,483. ; 2 RECEIVE .word L296$ ,376. ,53. ; 2 REPEAT_QUOTING .word L297$ ,376. ,127. ; 2 RETRY .word L298$ ,376. ,203. ; 2 SEED .word L299$ ,376. ,273. ; 2 SEND .word L300$ ,376. ,344. ; 2 SERVER .word L301$ ,376. ,394. ; 2 SL .word L302$ ,376. ,436. ; 2 SPEED .word L303$ ,377. ,13. ; 2 START_OF_PACKET .word L304$ ,377. ,86. ; 2 SUBMOUNTS .word L305$ ,377. ,178. ; 2 TERMINAL .word L306$ ,377. ,261. ; 2 TIME .word L307$ ,377. ,500. ; 2 TIME_OUTS .word L308$ ,378. ,50. ; 2 TT: .word L309$ ,378. ,93. ; 2 UPDATE .word L310$ ,378. ,180. ; 2 VERSION .word L311$ ,378. ,247. ; 2 VLSWCH .word L312$ ,378. ,381. ; 1 SL_Editor .word L313$ ,380. ,167. ; 2 Function_Keys .word L314$ ,381. ,499. ; 2 KED_Mode_Functions .word L315$ ,383. ,433. ; 1 SPACE .word L316$ ,384. ,34. ; 1 STATUS .word L317$ ,384. ,88. ; 1 TAKE .word L318$ ,385. ,39. ; 1 TIME .word L319$ ,385. ,277. ; 1 TRANSMIT .word L320$ ,386. ,293. ; 1 TYPE .word L321$ ,387. ,316. ; 1 Upgrades .word L322$ ,389. ,296. ; 1 XMODEM .word 0 ; null terminator L1$: .asciz "1 ?" L2$: .asciz "1 @" L3$: .asciz "1 ASCII_Set" L4$: .asciz "1 ASSIGN" L5$: .asciz "1 Binary_Files" L6$: .asciz "1 BUG" L7$: .asciz "1 BYE" L8$: .asciz "1 CD" L9$: .asciz "1 CLS" L10$: .asciz "1 CLX" L11$: .asciz "1 Common_Problems" L12$: .asciz "1 CONNECT" L13$: .asciz "1 Control_Chars" L14$: .asciz "1 COPY" L15$: .asciz "1 CWD" L16$: .asciz "1 DATE" L17$: .asciz "1 Debugging" L18$: .asciz "1 DELETE" L19$: .asciz "1 DIAL" L20$: .asciz "1 DIRECTORY" L21$: .asciz "1 DISCONNECT" L22$: .asciz "1 DISMOUNT" L23$: .asciz "1 EXAMINE" L24$: .asciz "1 EXIT" L25$: .asciz "1 File_Format_Info" L26$: .asciz "1 FINISH" L27$: .asciz "1 GET" L28$: .asciz "1 HANGUP" L29$: .asciz "1 HELP" L30$: .asciz "1 HOME" L31$: .asciz "1 HPRINT" L32$: .asciz "1 Installation_Notes" L33$: .asciz "2 Files_Required" L34$: .asciz "2 KM" L35$: .asciz "2 KRT.INI_Examples" L36$: .asciz "2 Modems" L37$: .asciz "3 Anchor" L38$: .asciz "3 Hayes_MNP" L39$: .asciz "3 Telebit_T2500" L40$: .asciz "3 Telebit_T3000" L41$: .asciz "3 US_Robotics" L42$: .asciz "2 RT-11" L43$: .asciz "2 TSX-Plus" L44$: .asciz "1 Introduction" L45$: .asciz "1 Local_vs_Remote" L46$: .asciz "1 LOGFILE" L47$: .asciz "1 LOGOUT" L48$: .asciz "1 Long_Packets" L49$: .asciz "1 MILNET_TAC" L50$: .asciz "2 Binary_Files" L51$: .asciz "2 Flow_Control" L52$: .asciz "2 Intercept_Character" L53$: .asciz "2 Time_Outs" L54$: .asciz "1 Modems" L55$: .asciz "1 MOUNT" L56$: .asciz "1 Parity" L57$: .asciz "1 PRINT" L58$: .asciz "1 PWD" L59$: .asciz "1 QUIT" L60$: .asciz "1 RECEIVE" L61$: .asciz "1 REDIAL" L62$: .asciz "1 Release_Notes" L63$: .asciz "2 KRT.COM" L64$: .asciz "2 KRTAIL" L65$: .asciz "2 KRTASM" L66$: .asciz "2 KRTATR" L67$: .asciz "2 KRTCM1" L68$: .asciz "2 KRTCMD" L69$: .asciz "2 KRTCON" L70$: .asciz "2 KRTCVT" L71$: .asciz "2 KRTDAT" L72$: .asciz "2 KRTDEB" L73$: .asciz "2 KRTDIA" L74$: .asciz "2 KRTDIR" L75$: .asciz "2 KRTDSP" L76$: .asciz "2 KRTEDI" L77$: .asciz "2 KRTERM" L78$: .asciz "2 KRTERR" L79$: .asciz "2 KRTHLP" L80$: .asciz "2 KRTINI" L81$: .asciz "2 KRTLNK" L82$: .asciz "2 KRTMAC" L83$: .asciz "2 KRTNHD" L84$: .asciz "2 KRTOSI" L85$: .asciz "2 KRTPAK" L86$: .asciz "2 KRTREC" L87$: .asciz "2 KRTRMS" L88$: .asciz "2 KRTSEN" L89$: .asciz "2 KRTSER" L90$: .asciz "2 KRTSHO" L91$: .asciz "2 KRTST0" L92$: .asciz "2 KRTST1" L93$: .asciz "2 KRTSUB" L94$: .asciz "2 KRTTRA" L95$: .asciz "2 KRTUTL" L96$: .asciz "2 KRTXL" L97$: .asciz "2 KRTXM" L98$: .asciz "2 KRTXMO" L99$: .asciz "1 REMOTE" L100$: .asciz "2 CD" L101$: .asciz "2 COPY" L102$: .asciz "2 CWD" L103$: .asciz "2 DELETE" L104$: .asciz "2 DIRECTORY" L105$: .asciz "2 HELP" L106$: .asciz "2 HOST" L107$: .asciz "2 LOGIN" L108$: .asciz "2 RENAME" L109$: .asciz "2 SPACE" L110$: .asciz "2 TYPE" L111$: .asciz "2 WHO" L112$: .asciz "1 RENAME" L113$: .asciz "1 SEND" L114$: .asciz "1 SERVER" L115$: .asciz "1 SET" L116$: .asciz "2 ATTRIBUTES" L117$: .asciz "2 BAUD" L118$: .asciz "2 BINARY_TYPE" L119$: .asciz "2 BLOCK_CHECK_TYPE" L120$: .asciz "2 CL:" L121$: .asciz "2 CONSOLE" L122$: .asciz "2 DEBUG" L123$: .asciz "3 ALL" L124$: .asciz "3 CONSOLE" L125$: .asciz "3 CONNECT" L126$: .asciz "3 NONE" L127$: .asciz "3 NORPACK" L128$: .asciz "3 NOTERMINAL" L129$: .asciz "3 NOTT:" L130$: .asciz "3 OFF" L131$: .asciz "3 ON" L132$: .asciz "3 PACKET" L133$: .asciz "3 RAW" L134$: .asciz "3 RPACK" L135$: .asciz "3 TERMINAL" L136$: .asciz "3 TT:" L137$: .asciz "2 DEFAULT" L138$: .asciz "2 DELAY" L139$: .asciz "2 DIAL" L140$: .asciz "3 ABORT" L141$: .asciz "3 ANSWER" L142$: .asciz "3 BINARY_RESPONSE" L143$: .asciz "3 BLIND" L144$: .asciz "3 COMMENT" L145$: .asciz "3 CON300" L146$: .asciz "3 CON1200" L147$: .asciz "3 CON2400" L148$: .asciz "3 CON4800" L149$: .asciz "3 CON9600" L150$: .asciz "3 CON19200" L151$: .asciz "3 CON38400" L152$: .asciz "3 CONFIRM" L153$: .asciz "3 CONFIRM_ACKNOWLEDGE" L154$: .asciz "3 DIAL_ACKNOWLEDGE" L155$: .asciz "3 DIAL_PAUSE" L156$: .asciz "3 DIAL_RATE" L157$: .asciz "3 ECHO" L158$: .asciz "3 FAILURE" L159$: .asciz "3 FORMAT" L160$: .asciz "3 Format_effectors" L161$: .asciz "3 IDLE" L162$: .asciz "3 Important_Notes!" L163$: .asciz "3 INITIATE" L164$: .asciz "3 INITIATE_PROMPT" L165$: .asciz "3 INIT_ONCE" L166$: .asciz "3 NOANSWER" L167$: .asciz "3 NOBINARY_RESPONSE" L168$: .asciz "3 NOECHO" L169$: .asciz "3 NOINIT_ONCE" L170$: .asciz "3 PULSE" L171$: .asciz "3 RINGING" L172$: .asciz "3 SETTLE_TIME" L173$: .asciz "3 SUCCESS" L174$: .asciz "3 TIME_OUT" L175$: .asciz "3 TONE" L176$: .asciz "3 WAKE_ACKNOWLEDGE" L177$: .asciz "3 WAKE_RATE" L178$: .asciz "3 WAKE_STRING" L179$: .asciz "2 DTR" L180$: .asciz "2 DUPLEX" L181$: .asciz "2 END_OF_LINE" L182$: .asciz "2 EOF" L183$: .asciz "2 ESCAPE" L184$: .asciz "2 FILE_TYPE" L185$: .asciz "3 ASCII" L186$: .asciz "3 AUTO" L187$: .asciz "3 BINARY" L188$: .asciz "3 CREATE_SIZE" L189$: .asciz "3 CSI_PARSING" L190$: .asciz "3 DEC_MULTINATIONAL" L191$: .asciz "3 FIXED" L192$: .asciz "3 IMAGE" L193$: .asciz "3 NAMING" L194$: .asciz "4 CONVERTED" L195$: .asciz "4 FULL" L196$: .asciz "4 LOWER_CASE" L197$: .asciz "4 NOLOWER_CASE" L198$: .asciz "3 NOPROTECT" L199$: .asciz "3 NOREPLACE" L200$: .asciz "3 NOVOLUME_VERIFY" L201$: .asciz "3 PROTECT" L202$: .asciz "3 REPLACE" L203$: .asciz "3 TEXT" L204$: .asciz "3 TYPE" L205$: .asciz "3 VOLUME_VERIFY" L206$: .asciz "2 FLOW_CONTROL" L207$: .asciz "2 HANDSHAKE" L208$: .asciz "3 CR" L209$: .asciz "3 NONE" L210$: .asciz "2 HOME" L211$: .asciz "2 INCOMPLETE_FILE_DISPOSITION" L212$: .asciz "2 LD:" L213$: .asciz "2 LINE" L214$: .asciz "2 LOCAL_ECHO" L215$: .asciz "2 LOGFILE" L216$: .asciz "2 LONG_PACKETS" L217$: .asciz "2 MODEM_TYPE" L218$: .asciz "2 NOATTRIBUTES" L219$: .asciz "2 NODEBUG" L220$: .asciz "2 NOLONG_PACKETS" L221$: .asciz "2 NOREPEAT_QUOTING" L222$: .asciz "2 NOUPDATE" L223$: .asciz "2 PARITY" L224$: .asciz "2 PAUSE" L225$: .asciz "2 PHONE" L226$: .asciz "3 ANSWER" L227$: .asciz "3 BLIND" L228$: .asciz "3 NOANSWER" L229$: .asciz "3 NUMBER" L230$: .asciz "3 PULSE" L231$: .asciz "3 TONE" L232$: .asciz "3 XMODE" L233$: .asciz "2 PROMPT" L234$: .asciz "2 RANDOM" L235$: .asciz "2 RECEIVE" L236$: .asciz "3 PACKET_LENGTH" L237$: .asciz "3 START_OF_PACKET" L238$: .asciz "3 TIME_OUT" L239$: .asciz "2 REPEAT_QUOTING" L240$: .asciz "2 RETRY" L241$: .asciz "2 SEED" L242$: .asciz "2 SEND" L243$: .asciz "3 NOXON" L244$: .asciz "3 PACKET_LENGTH" L245$: .asciz "3 PADCHARACTER" L246$: .asciz "3 PADDING" L247$: .asciz "3 START_OF_PACKET" L248$: .asciz "3 TIME_OUT" L249$: .asciz "3 XON" L250$: .asciz "2 SERVER" L251$: .asciz "2 SL" L252$: .asciz "2 SPEED" L253$: .asciz "2 START_OF_PACKET" L254$: .asciz "2 TERMINAL" L255$: .asciz "2 TT:" L256$: .asciz "2 UPDATE" L257$: .asciz "2 VLSWCH" L258$: .asciz "1 SHOW" L259$: .asciz "2 ALL" L260$: .asciz "2 ASSIGNS" L261$: .asciz "2 ATTRIBUTES" L262$: .asciz "2 BAUD" L263$: .asciz "2 BINARY_TYPE" L264$: .asciz "2 BLOCK_CHECK_TYPE" L265$: .asciz "2 CL:" L266$: .asciz "2 CONSOLE" L267$: .asciz "2 DATE" L268$: .asciz "2 DEBUG" L269$: .asciz "2 DEFAULT" L270$: .asciz "2 DELAY" L271$: .asciz "2 DIAL" L272$: .asciz "2 DTR" L273$: .asciz "2 DUPLEX" L274$: .asciz "2 END_OF_LINE" L275$: .asciz "2 EOF" L276$: .asciz "2 ESCAPE" L277$: .asciz "2 FILE_TYPE" L278$: .asciz "2 FLOW_CONTROL" L279$: .asciz "2 HANDSHAKE" L280$: .asciz "2 HOME" L281$: .asciz "2 INCOMPLETE_FILE_DISPOSITION" L282$: .asciz "2 LD:" L283$: .asciz "2 LINE" L284$: .asciz "2 LOCAL_ECHO" L285$: .asciz "2 LOGFILE" L286$: .asciz "2 LONG_PACKETS" L287$: .asciz "2 MEMORY" L288$: .asciz "2 MODEM_TYPE" L289$: .asciz "2 PACKETS" L290$: .asciz "2 PARAMETERS" L291$: .asciz "2 PARITY" L292$: .asciz "2 PAUSE" L293$: .asciz "2 PHONE" L294$: .asciz "2 RANDOM" L295$: .asciz "2 RECEIVE" L296$: .asciz "2 REPEAT_QUOTING" L297$: .asciz "2 RETRY" L298$: .asciz "2 SEED" L299$: .asciz "2 SEND" L300$: .asciz "2 SERVER" L301$: .asciz "2 SL" L302$: .asciz "2 SPEED" L303$: .asciz "2 START_OF_PACKET" L304$: .asciz "2 SUBMOUNTS" L305$: .asciz "2 TERMINAL" L306$: .asciz "2 TIME" L307$: .asciz "2 TIME_OUTS" L308$: .asciz "2 TT:" L309$: .asciz "2 UPDATE" L310$: .asciz "2 VERSION" L311$: .asciz "2 VLSWCH" L312$: .asciz "1 SL_Editor" L313$: .asciz "2 Function_Keys" L314$: .asciz "2 KED_Mode_Functions" L315$: .asciz "1 SPACE" L316$: .asciz "1 STATUS" L317$: .asciz "1 TAKE" L318$: .asciz "1 TIME" L319$: .asciz "1 TRANSMIT" L320$: .asciz "1 TYPE" L321$: .asciz "1 Upgrades" L322$: .asciz "1 XMODEM" .even .restore .end