!* INFO V3.906.1 ! !* INFO Documentation Reader - written by Michael Bloom Based on the INFO program written at the MIT Artificial Intelligence Laboratory by Richard M. Stallman. *** READ THIS *** A compromise has been made in some cases to use slightly less efficient means of screen control in order that a greater variety of terminals may be more easily handled. For example: The Clear page sequence used is ESC H (home cursor) followed by ESC J. If we were only going to run INFO on teleray 10's, we could have used ESC j (note the lowercase) which on teleray 10's will do the same job as ESC H ESC J in just a two character sequence. So, when modifying this program, be VERY careful not to optimize terminal codes to the extent that you will exclude previously supported terminals. ROUTINES USED: M1 - file name builder m3 - Screen Painter M4 - Node Extractor M5 - Escape Sequence Printer M6 - Bounded Node Movement Handler M7 - Input Line Reader M8 - Menu handler M9 - File protection Checker (RSTS/E only) Mk - Message Printer Mw - Cursor positioner ML - Main loop MI - CCL menu item handler MAJOR VARIABLES: STRING: :Qa - name of LAST :Qb - name of UP :Qc - name of NODE :Qd - name of NEXT :Qe - name of PREV :qf :qh - ? command text :qo - current output file default :qt - string read by M7 *!  @^A`INFO V3.10.22. FOR INFO on info, USE THE RSTS COMMAND: "MU [44,12]INFO INFO" The INFO command "?" Provides a help screen ----------------------------------------------------------------------------- *** N O T I C E *** Please do not request ANY "INFO" assistance from the computer center! They do not support INFO and they do not know anything about it! If you are unsure about using INFO, use the H command which runs you a course on using INFO. If you still have any questions, run the BUG program as described below. Look for the answer by running [44,22]REPLY. To report anything that looks like a bug, use the RSTS/E command: "MU [44,12]BUG INFO" Type in your comments to BUG, and exit with control Z. `90<0^T> ET#256ET -1EU @^Uo/foo.out/ @^Uu/(dir)top/[u @i/ /0:WU1ET&512"=-1U1' 1< :@S%/HP%"S8u1 F>' :@S%/VT52%"S0U1 F>' :@S%/Vt100%"S4U1 F>':@S%/T10%"S6U1 F>' :@S%/PR%"S-1U1 F>' :@S%/GL%"S-2U1 F>' > :@s/ /"F zj' -K Q1-2"=4U1' Q1-4"=@^U5/U5!S!/ |Q1+1"G@^U5/U5!I!/ |Q1+1"=@^U5/U5!P!/|@^U5/U5!G!/''' !* S for Scroll, I for Line I/D, G for Glass, P for printing! Q1"L @^uw~uzuy~ :@^u5~ Q5-^^H"=13^T 10^T '~ !* Printing or Glass! | Q1-9"N:@^U5~155^TQ5^T~ !* Almost everyone else! | !* ADM-31 !:@^U5/ Q5-^^H"=158^T'Q5-^^J"=^^yM5'Q5-^^K"=^^tM5' Q5-^^L"=^^EM5'Q5-^^M"=^^RM5'/' Q1-8"=@^Uw~UzUy155^T^^&^T^^a^Tqy:=^^y^TQz:=^^C^T~ !HP cursor position! |Q1-9"N@^Uw~UzUy155^T^^Y^TQy+32^tQz+32^T~ !DEC standard! |@^Uw~UzUy155^T^^=^TQy+32^tQz+32^T~'' !ADM-31 ! Q1-6"=128+15^T155^T^^h^T155^T^^H^T 155^T^^G^T 00<8<32^T>155^T^^F^T>13^T^^eM513^T5<32^T>13^T' ' Q1Ux 0j Xr !* load CCL line ! @^UK~+0UKET#16ET 1< QK"G Qk-4"L^^HM522,32Mw' Qk-1"=^U2Menu Item: :G2^^KM50;' Qk-2"=20<7^T>0;' Qk-3"=Go To Node: 0;' Qk-4"=^^HM521,20MwSearch: 0;' Qk-5"=^^HM522,0Mw^^KM5Qr,.T21,0MwThis? (Y,N,^G,?): 8^T0;' Qk-6"=21,49Mw^^KM5 [Y:yes, N:next, ^G:abort?]:0;' Qk-7"=21,0Mw^^KM5@^A\Quit?(YES/NO)\0;' Qk-8"=:QW-5"G20,28mw'^^KM5 Node:  :Qn"G^^(^T:Gn^^)^T:Gc|:QC"G:Gc|^^(^T:G*^^)^T'' 0;' Qk-9"= ET#16ET20,0Mw^^Km5 Qx-6"=^^RM5^^J^T13^T'INFO Documentation Reader * 0;' Qk-10"=^^HM522,4MwAdd Node to file [DEFAULT: :Go ]:^^KM50;' Qk-11"=^^HM521,0Mw^^KM5 Written: :Gf0;' | ^^HM5 21,0Mw7^T^^KM5 Qk"=INVALID CODEF>0;' QK+6"GThis node has no ' QK+1"=up0;' Qk+2"=previous0;' Qk+3"=Last0;' Qk+4"=Menu0;' Qk+5"=Next0;' Qk+6"=No Such :G2:Gt0;' Qk+7"=Cant find :G2:Gt0;' Qk+8"=Search Failure::G_0;' Qk+9"= Qr-10"=Line Feed|Qr^T'Qr-127"=Rubout'Qr-9"=13^TTab' Qr-7"=^G' is not an INFO command0;' Qk+10"=It is not necessary to type a CR after an INFO command0;' Qk+11"=Can't open file: :Gu0;' ' @^A/Message macro called for unknown reason/>Qk"L^^HM5'~ @^Uh%? This HELP Summary |P Prev node | U Up to Parent Node | N Next node < Last Half screen |BS Last Screen | D Returns to DIR node | M Menu Item > Next Half screen |SP Next Screen | L Last INFO Node | S Search B Beginning of Node |^O Stop Output | T like B (But type all| Q QUIT!!! O Output node to File |^L Retypes Page| " of Node on dumb terminals) H Go to HELP Tutorial --------- TYPE ANY KEY to continue:------% 7:@^Uh// !** end of text **! @^U0~8Mk.Us0,19m3~ !* Print New Node! @^U1~@^Uf//0uf0u4 < 1%u QuQu"L0;' QuQu-^^)"N 1' QuQu-^^[ "= Qf&(16^_)"N-1uf0;' Qf#1Uf Qf#4Uf F>' QuQu-^^$ "= Qf&(16^_)"N-1uf0;' Qf#1Uf Qu+1Qu"R |-1Uf' F>' QuQu-^^] "= Qf&4"=-1Uf0;'Qf&8"N-1uf0;' Qf#8Uf Qu+1Qu"R |-1uf' F>' QuQu-^^."= Qf&2"N-1uf0;'Qf#2UfF>' Ququ-^^,"=Qf&4"NQf&8"=qu-1qu"Dqu+1qu"DF>''''-1uf' QuQu-^^#"=Qf&2"=:@^Uf/.HLP/Qf#2Uf'F>' QuQu-^^="=Qf&2"=:@^Uf/.EXE/Qf#2Uf'F>' QuQu-^^!"=Qf&2"=:@^Uf/.INS/Qf#2Uf'F>' QuQu"R|-1Uf' >0Qf-^^."=-1Uf0;' :Qf-(Qu+2)"LQuQu:@^Uf//' |1%u0;'> Qf&4"N qf&8"=-1Uf''!BAD ACCOUNT NAME! :Qf"=0U1-1UF' QF"LQF&32767UF|QF#32768UF' QF ~ @^U3~U4U3^^Hm5ET#256ET 3q5-^^P"=0U3 Q4-9"G9u4'' 20 20,74mw^^KM5 Q4-18"L3Q5-^^P"N10L'' .-Qd"S(.-Qa)/((qd-qa)/100+1):=|@^a/100/'@^A/ %/ QsJQ4-Q3~!* Screen Printer! !**** THE Node EXTRACTOR ****! @^U4~u4 32768UI 1< -1u1 0UF ]U0UU 0QU-^^("= M1"U4Ui0;' Qf&2"=:@^Uf/.inf/' [G @^UG// 1< @EN/^EQg^EQf/ :enU1 Qf&1"= Q1"U@EN/^EQg^EQf[44,12]/:EnU1 Q1"U@EN/^EQg^EQf[4,67]/ :EnU1 Q1"U@EN/^EQg^EQf[44,22]/:Enu1 Q1"U@EN/^EQg^EQf[1,6]/ :EnU1 Q1"U@EN/^EQg^EQf[3,243]/:EnU1 ''''' ' Q1#(QF&16)"=@^UG/CC:/QF#16UF F<' > ]G Q1"S M9&1"N 8Ui | :@ER/^EQ*/ "SQi#1Ui QX-6"=^^eM5'0ua0usEy3<<:A;(Z+^Z)-26500"G0;'>>zud Qx-6"=^^fM5^^fM5' 0Ul::@S/-*-TAGS-*-/"Szj-:@S/^ELTAGS: :SGAT/"S.Ul' '.Us |4Ui' ' |4uiF>'' @er// Qi"F0;' @^Uf// !* Build Node Name! (-Qi-1)#:Qf"G (0qf-^^*)#(:QF-1)"=0Us0uazud QI#32768#128#2UI| .Us Q4"=0j +1u4' Qi&1"N 0,:@S/Node: /"SQI#16UI 0L.ua.us''!* IF NEW FILE, CHECK FOR Nodes! 1'QsJ'> [Y9^UY13:^UY^^,:^UY 0,q4:@S/Node: ^EQf^EGY/"S0L.uaQi#2#32768 Ui|Qi&1"=0Ui'' ]Y ' ' QI"UF>' QaUs QI"S QI&2"=:Qf"G@^U2/Node: /[f]t-6MK'' !* ! 2L .uh^^,@^Uy//9:@^Uy//10:@^Uy//13:@^Uy// :Qn"n .uh zj.uv Qi&1"NGM|Gc' Qv,zXa Qv,zd qhj' @^ud//@^ue//@^Ub//@^Uc//@^un// Qi&128"= QSJ."G-c'::@S/^eLFILE: /"SMp]n' Qsj Qh-.,:@S/NEXT: / "SMp]d' qsj Qh-.,:@S/PREV: /"SMp]e' qsj Qh-.,:@S/UP: /"SMp]b' qsj Qh-.,:@S/NODE: /"SMp]c' ' | Q1+1"=0u1' ' ' QSJ Qi"S :Qc"N .uh zj.uv :Qn"G@i/(/G*@i/)/Gc Qv,zXm Qv,zd' qhj|:Qn"=[u]c'' Qi&1"G 0j:@s/^_/ "SL'Q1&2"=.us''Qsj (:QF-1)#(0Qf-^^*)"N :@S/^_/"S 0L .-1"G.-2Ud|.ud' | zUd '' ' > QsJQi~ !* Qm = Name used to get to current node! !* Prot. viol. Qi= 8 ! !* read failed, Qi = 4 ! !* no file specified Qi =32768? ! !* read ok, Qi = 32769 ! @^Up~.Uy@S/^EGy/Qy,.-1xQQyj[q~ !* Gets string ending with any char in Qy! @^U6~U60U3 3q5-^^P"= Q6"LQ6+10"L-10u6'|Q6-10"G10u6''' 1F>'Q6"GQ6F>'>Q3~ !*M3= movement within node! @^U7~[s@^UT//.Us1< ^TUT QT-3"=ET#16#32768ETQKMKQS,.TF<' Qt-127"=.-Qs"G-D8^T32^T8^T'F<'Qt-7"=F>'Qt-13"=^TF>' Qt-10"=F>'@Qti//Qt^TF< >Qs,.XtQs,.K]sQt-7"=@^Ut//'^^HM5~ @^U8~ UiQiUj.Us 1 | Qi"S1MkM7':Qt"=7^TQsj0uiF>' Qd-.,:@S/^EL* ^EQt/"S@S/:/0A-^^:"=[y^^:@^Uy//0L2CMp]u]y[u| [y13@^Uy//9:@^Uy//c@S/^N^ES/rMp]u]y[u' Qi"=-1ui' Qsj-QiM4+1"G-7MkQsj5uiF>|Qj"SM0'' |-6Mkqsj5ui' '>Qi-5"=0uiqsj|-1Ui' Qi~ @^U9~[s.us[sG*.Us^Sc@s/[/\*256u9c\+Q9u9@s/ur'Qr-^^,"=^^^^Km5^^HM5':Gh^T-13"=^tur'.Us:QW-5"G0,5M3'F<' Qr-12"=.us:QW-5"G^^HM5^^JM5'9mk8mk 3q5-^^P"N 0,19m3'F<'!*^L! 3q5-^^I"= Qr-^^>"=:QW-5"G20^QU6|10^QU6'(Qd-.)-Q6-1"G10m6U3qd-."G^^HM5 :QW-5"GQ3<^^MM5>(20-Q3),0MwQ3<^^LM5>'.UsQ3L(20-Q3),9+Q3m3'|7^T'F<' QR-^^<"=.-Qa"N-10M6U3(20-Q3),0Mw :QW-5"GQ3<^^Mm5>^^Hm5Q3<^^LM5>'.Us0,(Q3-1)M3|7^T'F<' ' Qr-32"=3q5-^^P"N 20^QU6|10^QU6'(Qd-.)-Q6-1"G19m6U3.Us0,19m3|7^T'F<' Qr-8"=.-qa"N-19m6U3.Us0,19m3|7^T'F<' Qr-^^B"=QaJ.Us0,19m3F<' Qr-^^N"=1<:Qd"=|[d1M4"SM0F>'' -5Mk>F<' Qr-^^U"=1<:Qb"=|[b0M4"SM0F>''-1mk>F<' Qr-^^P"=1<:Qe"=|[e0M4"SM0F>''-2Mk>F<' Qr-^^L"=1<:Qa"=|[a@^Ua//1M4"SM0F>''-3Mk>F<' Qr-^^M"=-1M8F<' Qr-^^T"=3q5-^^P"N QaJ.Us0,19m3|13^T10^TQA,QDT'F<' Qr-^^G"=1<.Us3Mk^^Km5M7:Qt"=7^TF>'[t0M4"SM0|@^U2/node: /-7Mk'>F<' Qr-^^H"=1<@^Ut/(help)Help/[t 0M4"SM0'>F<' Qr-^^S"=.Qs4MkM7 1<:Qt"=7^TF>'1ED (.-Qd)-2,:@S/Qt/"U-8MkQsJF> |.Uq0L.UrL5Mk Qt^TQt-^^Y"=3q5"N -10M6u3|-5m6U3'.Us0,19M3F>'Qt-^^N"=1M6F<'Qt-7"=QsJF>'' > 0EDF<' Qr-^^O"= 1< 10MkM7qt-7"=-1Ut7^TF>' :Qt"G[t|[o' ]u-1uu M1"F f>'Qf&1"NF>'Qf&16"NF>' Qf&2"=:@^Uf/.OUT/'qdj 13i10i31i13i10i @EN/^EQf/:@en//"S m9-1"= -5df>' Ep20,0Mw @ew/^EQF/ @er/^EQF/Qd+5,zd0,qad EC@ER//@ER/^EQ*/ <:a;(^Z+z)-26500"G0;' > | @EW/^EQf/Qa,Qd+5PwEF-5d@ER//'[f]o-1Ut 11Mk >QsjQt"G-11Mk'F<' Qr-^^Q"=^^HM5 7 Mk 1<^Tu1 (Q1&223)-^^N"=No F>' Q1&223-^^Y"=Yes 13^T10^T^^KM5Goodbye from INFO 60<0^T>^^HM5 :QW-5"G10<^^MM5>10<^^KM510^T>'10^T^^Jm5 ' 7^TF<> F<' Qr-26"=2ej-(44*256+12)"=F>'' !* debug command *! -9MkF< >QR-26"NF<'>21,0Mw^^JM5~ !* end of Loop ! !* The debug command will only work for [ 44,12 ] unless the constant in the ! !* control Z command is removed. Its form is p * 256 + pn (taken from [p,pn])! 0Ur @^U2/Node: / @^Ui~ 0M4!get node! <!skip blanks! QrQr"L0;'!nomore CCL line! @^Ut// [r0M8"F]r0;|]r'> et#32768et^^HM5^^JM59mkm0ml ~ 518ET@EI//MI