!* ((C)) 1981, (C)1982 Michael A. Bloom ! !* The text in this file, and the program it represents are the ! !* express property of Michael A. Bloom, and may not be copied ! !* in any form (electronic, mechanical, or other) either in part ! !* or in full, for any purpose whatsoever, unless otherwhise ! !* explicitly permitted in writing by Michael Bloom. Permission ! !* is hereby granted, on the condition that this notice be ! !* included in any copy made, to make copies for use in either ! !* an academic or a development environment, so long as said ! !* copy is made available for the cost of the media and not for ! !* profit. ! !* Additional code for startup messages may be added HERE ! !* DO NOT REMOVE THE FOLLOWING COMMENT. it is searched for by NUMAKE. *! !startup!  @^Ub~Uq Qq"=0,16#32768ET^[' Qq-1"=.uI zj.Uh 1<^TUg Qg-7"=F>' Qg-127"=.-Qh"G -1a-32"L-1a-27"N8^T32^T8^T''8^T32^T8^T-D'F<' Qg-12"=F>'Qg-13"=^TF>'Qg-10"=^TF>' @Qgi//QG^TF<> Qh,.XdQh,.KQijqg-7"=0,0xd0Ui|-1Ui'' Qq-2"=.UhZUd-3Ufqfua^^HMe13^T^^KMe10^T^^KMe13^T:Gd <^TUg!F!Qg^TZJQg@I%% Qg-10"E13^T^^KMe-1%fQa-Qf"Gqfua'' Qg-7"EQfW0Ug0,0XD0Ui0;' Qg-127"E-DZ-Qd"N-1AUi-DQi-27"E32Ui' qi-10"=1%f'Qi-31"G^^DMe^^KMe1+'0"E 13^T-Qf-2<^^KMe^^AMe>^^Hme10^T13^T:GdQd,ZT' '' Qg-27"E^TUgQg-27"E!F0!27@I%%Qd,ZXd^^HMe13^T-1Ui0;' @O!F!' >Qd,ZKQhJqauf' Qq-3"=[e5:WUo.UH-1000W1UE-1,5:W-1W6:W-1Ua QaJ5Xd5RRI( TECO Command ) [^G QUITS ]qaJ <0UF1UEqa-."gqaJ'.-qa+(-3^Q)"GqaJ4LRR'-1W^TUG!NOR! QG-27"=27i-1w^TUGQG-27"=-d0;|ONOR''QG-3"=0,16#32768ET0;|QG-1"=0L|QG-7"=0;| QG-10"=|QG-11"=|QG-12"=-5W-1W|QG-13"=^T0MF#(2A-13)#(3A-10)"=2C| .-Qa+(-2^Q)-1"L13I10I.UFQaJ4LKQFJ''|QG-16"=-1MPF<|QG-14"=1MP|QG-6"=2MS| QG-2"=1MS|QG-5"=18MR| QG-127"=0^Q"=.-Qa"G-2MF"=-2D.UFQaJ3L13I10IQFJ''|-d'| 1^Q-(0^Q)-42"LQGI|7^T-1000W''''''''''''''> QaJGdQG-27"=:Qd+Qaj.Uf4Lrr4<0^Q"N0^Q,-:S^N "S-1a-13"=r'27i27i0;| 0L''.-1"G2r'>Qf,.XiQfj-1ui|0ui'5KqhjQo,5:W0Uf]e' QQ-4"=-1UI 41000-(z+^Z+Qa)"L^^HMe^^Kme:GD Too Big?30<0^T>7^T-2w0UI'' Qq-5"=^Tug Qg-27"=ESC ^TUgQg-^^?"=^T#128Ug|Qg-^^O"=^T#128Ug|Qg"Vqg&(32^_)Ug'qg#128Ug ''' Qg-24"=C-X ^T#256ug' !* CHANGE mab 10/10/83 *! Qg&127-13"=^t'Qg&127-127"=Rubout  |Qg&127-27"=ESC | Qg&127-32"=@^A/Space / |Qg&127-32"LC- Qg&127#64^T |qg^T'''' 'Qi~ !* Word Movement ! @^Uc~ [o 0uo Qe"L-QeUe Qe<."G1%oR|7^T-1000w0;' ."GR'-:@S%^S^ER%"S -2a-^^'"=-3a"R2RF<'' -2a-^^-"=-3a"R2RF<'' -2a-^^."=-3a"R2RF<'' '.-1"G2R'>QoUeQo"G.-Z"N."NC''' |Qe<:@S%^ER^S%"S -1a-^^'"=0a"RF<'' -1a-^^."=0a"RF<'' -1a-^^-"=0A"RF<''1%o|QoUeZJ7^T-1000w0;'>Qo"G."NR'' ']o ~ !* THE FOLLOWING MACRO DETERMINES RELATIONSHIP TO EOLINE ! @^UF~+0UB(QBA-13)#(QB+1A-10)~ !*********************************************************! !* MOVE BY LINE,MAINTAINING COLUMN! @^Up~Up QP"NQE*QpUEQf"=0Ug.Up0L Qp-.%f<0A-32"L0A-27"N0A-9"=6-(Qg&7)%f^[-2Ug'%g1%f''C%g>' QEL-QfUi0UgQf<.-Z;0A-32"L0A-13"=0;' 0A-27"N0A-9"=6-(Qg&7)%i^[-2Ug'%g1%i''C%g 1%i"GR'Qi;> 0Ud' -1Un !* FLAG for no recompute ! ~ !********************************************************! :ql"=0,0XLJ384<^^Oi>128<0i>256<1i>|gl' !* create initial Dispatch table! @^Um~UmUo QmjD !* Move to location OF MACRO NAME AND delete old value ! qoi !* and insert new macro name ! QM+384JD !* DELETE OLD OFFSET LOCATION ! qo/256i !* AND INSTALL NEW ONE ! ~ !.B!0*256+^^O,9Mm !* TAB MUST BE ON SELF INSERT ! !* INSERT OR Ring the bell when command unrecognized ! @^Uo%uqQq"=Qe|7^T-1000w'%  1UE !* temporary QE value ! @^UE~Ui+0UJ QJ"=155^T Qi"A0:w-4"=^^[^T''Qi^T |155^T0:W-4"N^^Y^TQJ+31^TQI+31^T |^^[^TQj:=^^;^TQi:=^^H^T' ' ~ !* temp fix above ! !* Caps Commands ! @^UJ~Uq1< Qq-1"=Qe"LMc' Qe<0a"R|:@S/^S^ER/."GR'' 1<0a"R0A"V0A-32@i//DF<'z-."GC'F<' 0A-^^'"=1a"Rz-."GC'F<'' 0A-^^-"=1a"Rz-."GC'F<''>>0;' Qq-2"=Qe"LMc' Qe<0a"R|:@S/^S^ER/."GR'' 1<0a"R0A"W0A+32@i//DF<'z-."GC'F<' 0A-^^'"=1a"Rz-."GC'F<'' 0A-^^-"=1a"Rz-."GC'F<''>>0;' Qq-3"=Qe"LMc' Qe<0a"R|:@S/^S^ER/."GR''0A"V0a-32@i//d|z-."GC'' 1<0a"R0A"W0A+32@i//DF<'z-."GC'F<' 0A-^^'"=1a"Rz-."GC'F<'' 0A-^^-"=1a"Rz-."GC'F<''>> ' Qq-4"= -1UE^TUg Qg"D0UE'-QEUE'-1UL' !* minus sign ! Qq-5"=Qg&127Ug 0UE'-1UL0;' !* digit! Qq-6"=Qg-128ug 0,Qe:S^EUG&Q5"L-c'0;' Qq-7"= QE*2UAD?BTB Buffer4Mb"S 0Ui QE< Mf#(2a-13)#(3a-10)#(4A-13)#(5A-10)"=L| 13@i//10@i//-1Ui'> 5:W-3"= Qi"L.Ui6:WJ23^Q/2-(Qi-(6:W))"G16L0,5:W-1W3,5:W'QiJ''0;|  SAVE YOUR WORK60<0^T>-2w''>~ !.B!1*256+^^J,128+^^U Mm !* Uppercase ! !.B!2*256+^^J,128+^^L Mm !* Lowercase ! !.B!3*256+^^J,128+^^C Mm !* Capitalize! !.B!4*256+^^J,^^-#128Mm !.B!128#^^0Ug 10< 5*256+^^J,QgMm%g> !* load for M- 0 thru M- 9 ! !.B!6*256+^^J,^^:#128Mm !.B!6*256+^^J,^^;#128Mm !.B!6*256+^^J,^^.#128Mm !.B!6*256+^^J,^^,#128Mm !.B!6*256+^^J,^^(#128Mm !.B!6*256+^^J,^^)#128Mm !.B!6*256+^^J,^^@#128Mm !* 7Mj is carriage return behavior ! @^Ur~Uq1< Qq-1"= QE<."G -2MF "=-2d|-dQk&1"NI R'' |0;'>0;' Qq-2"=.+1,4:w0;' Qq-3"= Qg&127-13"=^T' 7Mj0;' Qq-4"= Qg&127-13"=^T' qe<13i10i2r>0;' Qq-5"= QE0;' Qq-6"=Qg&127-13"=^t'.Uc-:S^S"S0L::SS.ub0L0up Qb-.<0A-9"=qp/8+1*8Up|0A-27"N%p'0A-32"L%p''c> qcj7mjQp/8<9i>qp-(qp/8*8)<32i> '0;' Qq-7"=Z-."N.UgMc Qg-."L Qg,.K |.,QgK'' 0;' Qq-8"=-QeUe7MR' Qq-9"=0MfUoQo"NQe"G.UoL13i10iqoj''Qek' Qq-10"=zj' Qq-11"=j' Qq-12"=Qe<22L>' Qq-13"=Qe<-22L>' Qq-14"=0^Q+1"L.-1"GR[z0AUZDRQz"GQZ@I//']zC''' Qq-15"=Mc' Qq-16"=-qeueMc' Qq-17"E0L' Qq-18"= QEL."N-1A-10"ER''."N-1A-13"ER''' Qq-19"= 0^T-1W ' >~ !.B!1*256+^^r,127Mm !* delete backwards ! !.B!2*256+^^r,31 Mm !** Set Mark ! !.B!2*256+^^r,128+32 Mm !** Set Mark ! !.B!2*256+^^r,128+^^M Mm !** Set Mark ! !.B!3*256+^^r,13 Mm !* Carriage return ! !.B!4*256+^^r,13+128 Mm !* Open Line ! !.B!5*256+^^r,4 Mm !* delete forwards ! !.B!6*256+^^R,10 Mm !* Indent new line ! !.B!7*256+^^R,128+^^D Mm !* Delete word ! !.B!8*256+^^R,128+127 Mm !* Delete word backward ! !.B!9*256+^^R,11 Mm !* Delete Line ! !.B!10*256+^^R,128+^^>Mm !** End of buffer ! !.B!11*256+^^R,128+^^^[' Qq-2"=QE<.-z;Mf"=2c|c'>^[' Qq-3"=-1Mp^[' Qq-4"=1Mp^[' Qq-6"=^TugQg"VQg&(32^_)ug' Qg#128Ug@n/M/QgQL:@^Un//Qg+384QLMn^[' !* Meta Prefix ! Qq-5"=^T#128Ug@n/M/QgQL:@^Un//Qg+384QLMn^[' !* Function Key! ~ !.B!1*256+^^s,2Mm !* back char ! !.B!1*256+^^s,8Mm !* back char ! !.B!2*256+^^s,6Mm !* forw char ! !.B!3*256+^^s,16Mm !* previous line ! !.B!4*256+^^s,14Mm !* next line ! !.B!5*256+^^s,^^?+128Mm !* "?" function keys! !.B!5*256+^^s,^^O+128Mm !* "O" function keys! !.B!6*256+^^s, 27Mm !* Meta Prefix ! !*******! !* Q register T contains those routines whose speed is unimportant ! @^UT`Uq !* control C ! Qq"=1<0,16#32768ET-1000W-1W32^T32^T8^T8^T0a^T1a^T-1000W-1W -(2:W-2)^Q+."=0;'((-(2:W)+1^Q+.)-(6:W))+1"=0^T-1W'> ' Qq-1"=@^ud%Search: % 3Mt^[' Qq-2"=@^Ud%Reverse Search: %-QeUe 3Mt^[' Qq-3"=0uf 2mb"S Gd^Y-2Xh^YK0,Qe:@S%^EQh%"U 7^T-1000w''Qf"NQfW'^[' Qq-4"= 1<^TUg Qg@I//Qg-3"=0,16#32768ET -1000W-1W -(2:W-2)^Q+."=0;' ((-(2:W)+1^Q+.)-(6:W))+1"=0^T -1W''> ^[' Qq-5"=LZ-1"G2R'0^Q,-2:@S/^N^ES/"S K13I10I-L' 0L::@S/^ES^N^ES/"SR0K' 1^Q-2"G 1:W -(1^Q)/2'L^[' Qq-6"=0Uf 0,Qe:@S%^EQh%"U7^T-1000w'Qf"NQfW'^[' Qq-7"=Qk&16384"=^^Hme^^Kme7^TTECO commands not enabled. Use C-X $ to enable 7^T150<0^T>-2w^['QfUr3Mb"= ^['@O!C!' Qq-8"=QK&16384"=7^T-1000W^['QfUr^^HMe-1000w-1ui!C![n10Un[nETUn[nEDUn[nEUUn[n QrUf518ETMi]nQnEU]nQnED]nQnET]n]n ^D128#64#32#1,32768#16#8ETED&(1^_)ED-1EU ^[' Qq-9"=4:W"=.+1,4:WQeL'4:W-.UaQa"L-QaUa' @^Ud/?WTB Wipe/4mb"S 4:W-1,.Xg 4:W-1,.K Gg 0Uf0:w-4"=0,4:W''' Qq-10"=Qe*:QgUa@^Ud/?YTB Yank/4Mb"S Qe'' Qq-11"=4:W"=.+1,4:WQeL'4:W-.UaQa"L-QaUa' @^Ud/?WTB Wipe/4mb"S 4:W-1,.Xg 4:W-1,.K 0Uf0:w-4"=0,4:w''' Qq-12"=-QeL [d .Ug QeL Qg,.XdQg,.d QeL Gd]d' !* swap words ! Qq-13"= 1ue Mc -2ue Mc .ug 1ue Mc Qg,.Xd Qg,.D 1Ue mc -1ue mc [d Qg,.Xd Qg,.D 1Ue Mc Gd ]d Gd ' Qq-14"= 1ua !* Qa = number of lines of buffer obscured by LAST help text ! 1ub !* Qb = number of lines of text obscured by ANY help text ! <^^Hme^^Kme (I = Individual command, L = List commands, Q = Quit help) Which HELP:? ^TugQg-13"=^T' Qg-7"=0;' Qg"VQg&(32^_)ug' Qg-^^Q"=0;' 0,16#32768ET Qg-^^I"N Qg-^^L"Nf<' dscree2-1Um^^Hme^^Jme1ua24ub| 13^T^^KMeWhat command: 5Mb^[ Qg&256"Nqg&127"VQg&(32^_)ug'' 13^T dHLPQgQl:d Qg+384QLum' 0,16#32768ET Qa-23"LQa<^^Kme10^T>'^^Hme1ua !* after erase, restore to 1! ^Eue .Uo eaepef :er[44,22]^EQd.txt"S^^HMe^^KMe getting help...13^T50<0^T> Qm<> !* skip past earlier ones *! 10^T <%a qa - qb"Gqaub'8<0^T>zj.Uh1:A;^^KMeQH,zTqh,zd^N:;^E:;>^^KMe Qa-24"L--------' Qoj-1Ui|0Ui'Qe"=ernl:a'ewerQi"uSorry, No help is available%a' > 0,16#32768ET-Qb-1w Qm"L^^HMe^^Jme' ^[ ' Qq-15"= ^^HMe^^Kme Query Replace: 1Mb:Qd"GGd ^YXh^SD ^^Hme10^T^^Kme With: 1Mb' -3w:qd1"G 0Uo <0,:S^EQH;Qo"L|-1w' Qo"L|!cht!^TUo Qo-7"=7^T0; |Qo-^^."=^SdGd7^T0; |Qo-^^!"=-1Uo |Qo-^^N"=F< |Qo-^^n"=F< |Qo- 32"N^^Hme3<^^Kme10^T>^^Hme OPTIONS are: ^G Quit Space Replace this one . Replace this one and exit N Find next occurence ! Replace rest ^TUoQO-13"=^T'-4w-1w ocht '''''' '^SDGdQo"L|-1w'>'7^T-1000w ' Qq-16"=@^UD/!.?/13@^uq//32:@^uq//9:@^uq//^^":@^uq//^^):@^uq// QE"L10:@^Ud//.-2"G3R'-:S^ER"SR'' QE:S^EGD^EgQ"U !* if unsuccessful ! QE"GZJ-:S^ER|J:S^ER"SR'' !* THEN EXTREME ! |QE"GR-2Mf"=2r'|:S^ER"SR'' ' ' Qq-17"=-QEUE16Mt^[' QQ-18"=JQe-1L^[' Qq-19"=Qe<0,:s^H"U7^t-1000w0;'2ue1mr>^[' Qq-22"=ET#16#32768ET !* call control X routines *! ^^HMe ^^KMe @^A/C-X /^TUg Qg^TQg"VQg-32Ug' 50<0^T> 0,8ET0Un0Ud0Uf Qg"L 0ufqg&127Ug' Qg"v-32%g' !* make lower same as upper *! Qg#256ug !* set C-X bit *! @n/M/ QgQL:@^Un// !* build Q register *! Qg+384QLMn !* and EXECUTE *! -2w^[' ` !* COMMANDS IN QT *! !.B! ^^T, 3 Mm !* fix screen on control C ! !.B!1*256+^^T,26 Mm !* forward search! !.B!1*256+^^T,19 Mm !* forward search (for myself) ! !.B!2*256+^^T,18 Mm !* reverse search! !.B!3*256+^^T,128+^^Z Mm !* repeat search ! !.B!4*256+^^T,128+^^Q Mm !* quote next char ! !.B!4*256+^^T,17 Mm !* quote next char (for myself) ! !.B!5*256+^^T,128+^^S Mm !* center line ! !.B!6*256+^^T,128+^^Z Mm !* repeat last search ! !.B!7*256+^^T,128+ 27 Mm !* TECO command ! !.B!8*256+^^T,128+^^$ Mm !* Repeat TECO command ! !.B!9*256+^^T,128+^^W Mm !* Store text ! !.B!10*256+^^T,25 Mm !* Yank text ! !.B!11*256+^^T,23 Mm !* Wipe text ! !.B!12*256+^^T,128+20 Mm !* Transpose Lines ! !.B!13*256+^^T,128+^^TMm !* Transpose Words ! !.B!14*256+^^T,128+^^HMm !* Read in Help Screen ! !.B!15*256+^^T,128+ 18Mm !* Query Replace ! !.B!16*256+^^T,128+^^EMm !* Forward Sentence ! !.B!17*256+^^T,128+^^AMm !* Back Sentence ! !.B!18*256+^^T,128+^^GMm !* Goto line ! !.B!19*256+^^T,128+ 8Mm !* Fix Embedded Backspace ! !.B!22*256+^^T,24 Mm !* Control X Commands! @^uu`uq !* following code = control x ! ET"Gofix' Qq-1"=!fix! 0,32768#16ET^^Hme^^Kme Please note Key Change! Use C-X C-Z instead of C-X C-C360<0^T>' Qq-2"=4:W-1-z"gz+1,4:W' 4:W"G .ua 4:W-1J Qa+1,4:w '' !* C-X $ *! Qq-3"=Qk#16384Uk^^Hme^^KmeTECO commands enabled!60<0^T>-2w^[' !* overprint *! Qq-4"= Qk&1"N^^HMe@^A/Already in overprint mode/7^T60<0^T>-2w^[' Qk#32768#1Uk^^HMeENTER overprint mode60<0^T>-2wMk 1^_&QkUk Qk&63"=32768^_&QkUk'^^HMe EXIT overprint mode-qgug60<0^T>-2w^[' !* set key *! Qq-6"=1<^^HME^^KME10^T^^KMe^^HMe 0,32768et @^A/Set-Key: /1MB1Ub .UO ZJGD :QDR0a"d|-1ub'\up0a"r0a&223-^^M"n-1ub|c'|-1ub' z-.-1"N-1Ub' Qb"G0aUbQb"r|-1Ub''zj -:QdD 13^T qojQb"L^^Hme^^EmeInvalid Macro Name ":Gd^^"^T50<0^T>F>' ^^Hme^^Kme @^A/Place routine /Qp:= @^A/ in Register /Qb^T @^A/ On What Key: /5mb^[ Qg&127"VQg&(32^_)ug' !* ensure its loaded as upper case ! ET"L13^T10^T|0,32768#16et'@^A"Go ahead (Y/N): " ^T&223-^^Y"NET"L|0,32768#16et1000ug'^^YME33^T48^TNoF>'Yes qp*256+Qb,Qgmm >0^T-3w^[' !* exit one level *! QQ-7"=-QgUg^[' !* PAGE *! QQ-8"=EWG*^Yd^S"N QeP' -2W^[ ' !* changed to EW 10/5/83 - mab ! !* EXIT *! QQ-9"= EWG*^SD^^HMe7^T7^T^^KME ^S"N<0,32768#16ET^^HMe^^Kme Qe"L@#Unconditional Exit?#| @^A#(Exit and save file: #:G*@^A#)#'@^A# CONFIRM (Y/N): #^TUg Qg&223-^^Y"=@^A/Yes/^^Jme100<0^T>qe"LHKEK'egdcl run [44,22]acnt' QG-7"=0;'Qg&223-^^N"N>'@^A/No/ | z"=Egdcl run [44,22]acnt|^^HMe^^Kme@^A/?NFO No file for output/100<0^T>'' -2w ^[ ' !* APPEND *! QQ-10"=ErG*^Yd^S"N Qe'-2W ^[' !* YANK *! QQ-11"=@ER//G*^S"N ^SD|^[' z"=0:W-6"=^^eMe'Y0:w-6"=^^fMe^^fMe'|7^T'-2W' QQ-13"=!* C-W - save file ! @EW//G*^S"N@^A/ Saving... (Saved file will contain position marker)/ ^SD@i#~~/\~~ #^XUtEC^^HMe^^KMe@^A/Written: /:G* @EB/^EQ*/-1^X:N~~/\~~ "S^YD|@^A/Cant restore position/' Qt^X -1Uz| @^A/?NFO No file open for output/' 0^X 20<0^T> -2w ^[' !* general visit file *! QQ-14"= 1<^^HMe ^^KMe@EW//G*^S"N ^SD <13^T @^A/Save file /:G*@^A+ (Y/N)?+^^KMe1Mb:Qd"N0Qd&223ug Qg-^^Y"=0;' Qg-^^N"=0;' 'Qg-7"=0;'Qg^T> Qg-7"=@^A/(Quit)/7^T0;' [d ZJG*^YXd^SD Qg-^^Y"= Saving... EC|EKHK' @EN/^EQd/]d|' :en"Sen^EQ*|enNONAME.MAC' ^^HMe^^KMe @^A/Visit File *(^G Quits) [Default: / :G* @^A/]: / 1Mb Qg-7"=z"=:er[44,22]empty.txt"s<:a;>j2mrzj1,6:w''-2w F>' :Qd"N 0QD"R|0Qd-^^_"N?Huh7^T60<0^T>-2wf>'' @En/^eQd/' :@eb/^EQ*/"S HK0:W-6"=^^eMe'Y0:w-6"=^^fMe^^fMe' |@Ew/^eQ*/ HK 13^T^^KMe @^A/(New File)/100<0^T>' >-2w^[' Qq-15"=.ua1ue<-.;%e-l>qaj^^Hme^^Kme Point= .:=, Line= Qe:=, Mark 4:w"Gset at 4:w-1:=|not set' ^t-13"=^t' ^[' ` !*********! !* OK; All standard commands have been installed in the dispatch table, ! !* so lets load it into QL !  !.B! 1*256 + ^^U,256 + 3 Mm !* control x control c message ! !.B! 2*256 + ^^U,256 + 24 Mm !* Swap point and mark ! !.B! 3*256 + ^^U,256 + ^^$ Mm !* Enable Teco commands ! !.B! 4*256 + ^^U,256 + ^^O Mm !* enter overprint mode loop ! !.B! 6*256 + ^^U,256 + ^^# Mm !* Bind key to command ! !.B! 7*256 + ^^U,256 + ^^Q Mm !* Exit One Level ! !.B! 8*256 + ^^U,256 + 16 Mm !* Page ! !.B! 9*256 + ^^U,256 + 26 Mm !* EXIT AND SAVE ! !.B! 10*256 + ^^U,256 + 01 Mm !* Append ! !.B! 11*256 + ^^U,256 + 25 Mm !* Yank ! !.B! 13*256 + ^^U,256 + 23 Mm !* Save with marker ! !.B! 14*256 + ^^U,256 + 22 Mm !* Visit File Command ! !.B! 15*256 + ^^U,256 + ^^= Mm !* Show Location ! !*********! !* OK; All standard commands have been installed in the dispatch table, ! !* so lets load it into QL !  0,768XL 0,768d !* and process the user's library ! !* The user's EDM.INI file can do an "ENfname" followed by a call to MA ! !* to load the library "fname" ! @^Ua~ eaepef:ER^EQh"S[k[hZJ.Uo A Qo,ZXKQo,ZD ewer Mk0,0Xk !* EXECUTE CODE FROM USERS' library file *! ]h[ :Gh loaded] Qk]kUk !* let his init file modify numeric K ! |EWER'~ @^Uh/EDM.INI/EN^eQh:EN"S[Loading personal library ] JGL0UkMa0,768XL0,768d er' !* QL IS NOW ARG SET FLAG ! !* REPLACE USER'S STARTUP WITH COMMAND LOOP! !* Qk = Editor status word ! !* BITS ! !* 16 = don't use insert optimizer ! !* 1 = Overstrike mode ! !*********************************************************! !* /* This comment describes in C the subsequent TECO */ *! !* /* command loop. (all two lines of it) */ *! !* *! !* turn_off_echo(); *! !* Qn= qd= qf= 0; *! !* for (;;) *! !* { *! !* if (not last_cmd_was_arg) *! !* { *! !* Qe = 1; *! !* if (Qk & 32768) *! !* { *! !* redisplay(); *! !* Qg = getchar(); *! !* } *! !* else; *! !* Qg = insert_optimizer_getc();*! !* } *! !* else; *! !* last_cmd_was_arg = false; *! !* if (Qg < 0) *! !* qg &= 255; *! !* build_dispatch_macro(); *! !* *! !* if (execute_dispatch_macro() == DONE) *! !* break; *! !* if (Qn) *! !* { *! !* Qn = false; *! !* continue; *! !* } *! !* Qf = 0; *! !* Qd = 0; *! !* } *! @^UK~0,8ET0Un0Ud0Uf~ !********************************************************************! !* replace table builder with key setting macro ! @^UM~UMUp .uo !* save cursor ! jGL !* Insert dispatch table into buffer ! Qmjd !* Move to location we're changing ! QpI !* and insert new ones ! Qm+384jd Qp/256I 0,768xL !* Now save new dispatch table ! 0,768d !* and remove it from buffer ! QoJ !* we're done; go home ! ~ @^UA` 1^_&QkUKQk&63"=Qk&32767UK' ewG*^SD ^S"N@^A/Editing File: /:G*' 70<0^T> <:]D;>0UD0,0Xd ^DET&512"N128#64#32#1,32768#16#8ETED&(1^_)ED-1EU 16w 5:W"=3,5:W'^[ 0:W-4"= ^^