home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / disasm / uasm / doskeys.bas < prev    next >
Encoding:
BASIC Source File  |  1988-06-03  |  16.4 KB  |  308 lines

  1. 10 '┌─────────────────────────────────────────────────────────────────────────┐
  2. 20 '│ * DOS FUNCTION KEY EDITOR * (for DOS 2.0 and the ANSI.SYS driver only). │
  3. 30 '├─────────────────────────────────────────────────────────────────────────┤
  4. 50 '│ This program may be copied--free of charge--for any non-commercial use. │
  5. 60 '│ For futher info., contact: Vince Bly, PO Box 409, Ft. Belvoir, VA 22060 │
  6. 70 '└─────────────────────────────────────────────────────────────────────────┘
  7. 80 '
  8. 90 RUN 8000
  9. 100 '───── Read to EOL subroutine ─────
  10. 500 T="": I=0: WHILE RIGHT$(T,2)<>"  " AND I<L
  11. 510 T=T+CHR$(SCREEN(ROW,COL+I)): I=I+1: WEND
  12. 530 I=I-2: T=LEFT$(T,I): RETURN
  13. 540 '
  14. 999 '─────── SCREEN EDITOR ────────────────────────────────────────────────────
  15. 1000 DEFINT A-R: DEFSTR S-W: S="": I=0: COL=9: ROW=13
  16. 1010 BELL$="MB MS L64 O5 T255 C"
  17. 1090 LOCATE ROW,COL,1,6,7: GOSUB 9000' Go set FN definitions
  18. 1095 '
  19. 1400 IF SCREEN (ROW,COL,1)=120 THEN ROW=13
  20. 1410 LOCATE ROW,COL,1
  21. 1500 S=INKEY$: IF S="" THEN 1500
  22. 1510 IF S=>" " THEN 1700'                               standard char.
  23. 1515 IF LEN(S)>1 THEN 1900'                             extended char.
  24. 1520 IF S=CHR$(8) THEN 1800'                            backspace
  25. 1522 IF S=CHR$(9) THEN 2200'                            right tab
  26. 1524 IF S=CHR$(13) THEN 2000'                           return
  27. 1527 IF S=CHR$(10) THEN PRINT CHR$(27);: GOTO 2000'     ctrl. return
  28. 1530 IF S=CHR$(19) THEN S=CHR$(126): GOTO 1700'         trailing space
  29. 1531 IF S=CHR$(27) THEN 2300'                           escape
  30. 1535 IF S<>CHR$(17) THEN 1500 ELSE LOCATE ,,0,6,7: RUN 3000'exit to read screen
  31. 1590 '
  32. 1700 PRINT S;: IF FNRB(COL) THEN COL=COL+1: GOTO 1500'             [std. char.]
  33. 1710 PLAY BELL$: COL=FNHM((COL+27)MOD 80): GOTO 1400
  34. 1800 IF NOT FNLB(COL) THEN 1400 ELSE COL=COL-1'                    [back-space]
  35. 1810 LOCATE ,COL: GOTO 1970
  36. 1900 I= ASC(RIGHT$(S,1))-71: IF I<0 THEN 2100
  37. 1905 ON I GOTO 1940,1910,1910,1930,1910,1920,1910,1980,1950,1910,1960,1970
  38. 1910 IF I=0 THEN ROW=7: COL=FNHM(COL): GOTO 1400'                  [home]
  39. 1915 IF I=46 THEN PRINT SPC(15-COL+FNHM(COL)): GOTO 1400 ELSE 1500'[ctl]-[end]
  40. 1920 IF FNRB(COL) THEN COL=COL+1: GOTO 1400'                       [right]
  41. 1925 IF COL<60 THEN COL=COL+12: GOTO 1400 ELSE COL=9: GOTO 1400
  42. 1930 IF FNLB(COL) THEN COL=COL-1: GOTO 1400'                       [left]
  43. 1935 IF COL>15 THEN COL=COL-12: GOTO 1400 ELSE COL=78: GOTO 1400
  44. 1940 IF ROW>7 THEN ROW=ROW-1: GOTO 1400 ELSE ROW=16: GOTO 1400'    [up]
  45. 1950 IF ROW<16 THEN ROW=ROW+1: GOTO 1400 ELSE ROW=7: GOTO 1400'    [down]
  46. 1960 LOCATE ,,0: L=18-COL+FNHM(COL): GOSUB 500: GOTO 2500'         [insert]
  47. 1970 LOCATE ,,0: COL=COL+1: L=18-COL+FNHM(COL): GOSUB 500'         [delete]
  48. 1975 COL=COL-1: PRINT T" ": GOTO 1400
  49. 1980 LOCATE ,,0: L=18-COL+FNHM(COL): GOSUB 500'                    [end]
  50. 1985 IF I=L-2 THEN 1400 ELSE COL=COL+I: GOTO 1400
  51. 2000 COL=FNHM(COL): GOTO 1950'                                     [enter]
  52. 2100 IF (I<>-56) OR NOT FNLB(COL) THEN 1500'                       [tab left]
  53. 2110 COL=FNHM(COL): GOTO 1400
  54. 2200 COL=FNHM((COL+27)MOD 80): GOTO 1400'                          [tab right]
  55. 2300 COL=FNHM(COL): LOCATE ,COL,0: PRINT SPC(16);: GOTO 1400'      [escape]
  56. 2310 '
  57. 2499 '────── Insert Mode ─────────────
  58. 2500 L=L-3: IF I<L THEN T=T+STRING$(L-I,32)
  59. 2510 LOCATE ,COL,1,0,6
  60. 2520 S=INKEY$: IF S="" THEN 2520
  61. 2530 IF S<" " THEN 2580 ELSE IF NOT FNRB(COL) THEN 2520
  62. 2540 LOCATE,,0: PRINT S;LEFT$(T,L);: L=L-1: COL=COL+1: GOTO 2510
  63. 2580 IF S=CHR$(8) THEN IF FNLB(COL) THEN L=L+1: COL=COL-1: LOCATE ,COL,0: PRINT LEFT$(T,L+1);: GOTO 2510 ELSE 2510
  64. 2590 LOCATE ,,,6,7: IF S=CHR$(0)+"R" THEN 1400 ELSE 1524
  65. 2595 '
  66. 2999 '────── READ SCREEN ROUTINE ──────────────────────────────────────────────
  67. 3000 DEFINT A-R: DEFSTR S-W: T="": I=0: DIM S(23)
  68. 3020 LOCATE 18,1: COLOR 16,7:PRINT " COMPILING ";
  69. 3025 COLOR 15,0: PRINT SPC(60): COLOR 0,15: B=0: C=0: L=18
  70. 3029 FOR COL=9 TO 63 STEP 27
  71. 3030    FOR ROW=7+(6 AND (COL=9)) TO 16
  72. 3040        LOCATE ROW,COL: GOSUB 500
  73. 3043        IF RIGHT$(T,1)=CHR$(126) THEN MID$(T,I,1)=" "
  74. 3048        B=B+I+(3 AND (I>0)): IF B>192 THEN 3095
  75. 3050        S(C)=T: PRINT T: LOCATE 18,12: PRINT B
  76. 3060    C=C+1: NEXT
  77. 3065 NEXT
  78. 3070 LOCATE 18,1,1: COLOR 15,0: PRINT SPC(79);: GOTO 5000
  79. 3090 '
  80. 3095 LOCATE 18,1: PRINT " COMPILED ";: LOCATE ,16: COLOR 16,7: PRINT " ««";
  81. 3097 COLOR 0,15: LOCATE ,19: PRINT " ANSI Buffer Full ": COLOR 15,0: GOTO 5000
  82. 3109 '
  83. 3110 '────── SAVE FILE TO DISK ROUTINE ────────────────────────────────────────
  84. 3111 LOCATE 19,1:PRINT: LOCATE 21,46: COLOR 31,0: PRINT "[1]": COLOR 15,0: GOSUB 9100: LOCATE 19,2: COLOR 15,0
  85. 3112 LINE INPUT "Please enter filename (.KEY will be used as the extension): ";N$
  86. 3113 GOSUB 9200: IF INSTR(N$,"+") THEN LOCATE 22,2: PRINT "Saving aborted";: GOTO 5035
  87. 3114 IF INSTR(N$,"^") THEN 7510 ELSE IF N$="" THEN 5035
  88. 3115 I=INSTR(N$,"."): IF I THEN N$=LEFT$(N$,I)+"KEY" ELSE N$=N$+".KEY"
  89. 3118 OPEN "O",#1,N$: LOCATE 18,1: COLOR 16,7: PRINT " ** SAVING ** ";
  90. 3120 PRINT #1, "INSTALLING "N$
  91. 3125 FOR I=0 TO 23
  92. 3130    T=S(I): L=LEN(T): C$="p"
  93. 3140    IF L=0 THEN 3180
  94. 3150    IF RIGHT$(T,1)=CHR$(27) THEN T=LEFT$(T,L-1): C$=";13p"
  95. 3153    IF T="^C" THEN T=" ": C$=";3p"
  96. 3155    PRINT #1,CHR$(27)"[0;";
  97. 3160    J=65+I+(15 AND (I>3)): IF J<100 THEN F$="##" ELSE F$="###"
  98. 3165    PRINT #1,USING F$;J;
  99. 3170    PRINT #1,";"CHR$(34)T;CHR$(34)C$
  100. 3180 NEXT
  101. 3280 PRINT #1, "DONE"
  102. 3290 CLOSE: LOCATE 18,1: COLOR 0,15: PRINT " ** SAVED "N$" ** "
  103. 3300 COLOR 15,0: GOTO 5000
  104. 3399 '
  105. 3400 '─────────── UNCOMPILE ROUTINE ───────────────────────────────────────────
  106. 3410 LOCATE 18,1: COLOR 15,0: PRINT SPC(50)CHR$(13)
  107. 3420 T=CHR$(29)+CHR$(126): PRINT SPC(60)
  108. 3425 COLOR 15,0: LOCATE ,,0: C=-6
  109. 3430 FOR COL=9 TO 63 STEP 27
  110. 3440    FOR ROW=7 TO 16
  111. 3445        IF COL=9 AND ROW<13 THEN 3490' skip DOS keys
  112. 3450        LOCATE ROW,COL: PRINT S(C);
  113. 3460        IF RIGHT$(S(C),1)=" " THEN PRINT T;
  114. 3470        I=LEN(S(C)): IF I THEN PRINT SPC(16-I);
  115. 3490 C=C+1: NEXT:NEXT
  116. 3500 GOSUB 6520: RUN 1000
  117. 3510 '
  118. 5000 '──────REQUEST USER OPTION ───────────────────────────────────────────────
  119. 5005 COLOR 15: LOCATE 19,1: PRINT SPC(79);SPC(79);: LOCATE 21,1,0
  120. 5010 PRINT SPC(45)"[1]... Save this key file to disk."
  121. 5020 PRINT SPC(45)"[2]... Load a key file from disk."
  122. 5022 PRINT SPC(45)"[3]... Print a hardcopy of keyset."
  123. 5025 PRINT SPC(45)"[4]... Go to the edit mode.";: LOCATE 25,1
  124. 5030 PRINT SPC(45)"[5]... Quit this program.";
  125. 5035 LOCATE 19,1: PRINT SPC(79);: LOCATE 19,2,1
  126. 5040 LINE INPUT"Please choose an option from the list below [1-5]: ",N$
  127. 5045 LOCATE 22,1: PRINT SPC(40);
  128. 5050 I=VAL(N$): IF (I<1) OR (I>5) THEN 5035
  129. 5060 IF I=5 THEN 9300 ELSE IF I=4 THEN 3410
  130. 5070 IF I=3 THEN 8500 ELSE IF I=2 THEN 7010 ELSE 3110
  131. 5080 '
  132. 5999 '──────────────── PRINT EDIT SCREEN ──────────────────────────────────────
  133. 6000 DEFINT A-R: DEFSTR S-W: I=0: DIM S(23)
  134. 6010 'SCREEN 0,0,0: WIDTH 80: COLOR 15,0,8
  135. 6020 CLS: LOCATE 1,,0
  136. 6030 '
  137. 6035 MDL$="│ F## = ": L$=STRING$(2,9)
  138. 6037 MDL$=MDL$+L$+" │ "+MDL$+L$+"    │ "+MDL$+L$+"       │"
  139. 6040 L$=STRING$(24,196)
  140. 6050 TOP$="├"+L$+"┤"
  141. 6070 BOT$="└"+L$+"┘"
  142. 6080 '
  143. 6090 LOCATE ,15: PRINT "╔═════════════════════════════════════════════════╗"
  144. 6110 LOCATE ,15: PRINT "║ *** DOS FUNCTION KEY EDITOR - V. Bly - 4/83 *** ║"
  145. 6115 LOCATE ,15: PRINT "╚═════════════════════════════════════════════════╝"
  146. 6130 LOCATE ,2: PRINT "┌───── Standard Keys ────┐ ┌───── Shifted Keys ─────┐ ┌───── Control Keys ─────┐";
  147. 6140 PRINT TOP$" "TOP$" "TOP$;
  148. 6150 FOR I=1 TO 10
  149. 6160    LOCATE 6+I: PRINT USING MDL$;I;I;I
  150. 6180 NEXT
  151. 6190 LOCATE 17,1: PRINT BOT$" "BOT$" "BOT$: COLOR 8,7
  152. 6191 LOCATE 7,8: PRINT " copy one char    ";
  153. 6192 LOCATE 8,8: PRINT " copy to char     ";
  154. 6193 LOCATE 9,8: PRINT " copy from char   ";
  155. 6195 LOCATE 10,8: PRINT " skip to char     "
  156. 6196 LOCATE 11,8: PRINT " accept template  "
  157. 6197 LOCATE 12,8: PRINT " control-Z        "
  158. 6300 COLOR 15,0: GOTO 5000: GOSUB 6520: RUN 1000
  159. 6310 '
  160. 6520 COLOR 15,0: LOCATE 18,1' ───── Print bottom of edit screen ─────
  161. 6530 PRINT " DO NOT PRESS <Ctrl>[Break], ";: COLOR 7: PRINT "use ";: COLOR 15: PRINT "<Ctrl>[Q] ";: COLOR 7: PRINT "to go to the menu."
  162. 6532 LOCATE 19: PRINT SPC(70)
  163. 6535 COLOR 15,0: LOCATE 20,1
  164. 6540 PRINT " ["CHR$(24)"], ["CHR$(25)"], ["CHR$(26)"], ["CHR$(27)"], [Ins], [Del], and [Backsp]
  165. 6550 PRINT " [Rgt.tab]                             [Lft.tab] "
  166. 6560 PRINT " [End]                                 <Ctrl>[End] "
  167. 6570 PRINT " [Esc]                                 [Home] "
  168. 6580 PRINT " <Ctrl>[Enter]                         <Ctrl>[S] ";
  169. 6610 COLOR 7,0: LOCATE 20,1
  170. 6630 LOCATE ,49: PRINT "work the same as BASIC editor."
  171. 6650 LOCATE ,12:PRINT "goes to next panel.";: LOCATE ,50: PRINT "goes to start of line.        "
  172. 6660 LOCATE ,8: PRINT "goes to end of line.";: LOCATE ,52: PRINT "erases to end of line.     "
  173. 6670 LOCATE ,7: PRINT " erases all of line.";: LOCATE ,47: PRINT "goes to top-left of panel.       "
  174. 6680 LOCATE ,16: PRINT "adds trailing C/R.";: LOCATE ,50: PRINT "adds trailing space.        ";
  175. 6690 COLOR 15,0: LOCATE 25,45: PRINT SPC(30);: RETURN
  176. 7000 '────── LOAD A KEY FILE FROM DISK ────────────────────────────────────────
  177. 7010 LOCATE 22,46: COLOR 31,0: PRINT "[2]"
  178. 7015 COLOR 15,0: A$=CHR$(27)+"[0;"
  179. 7016 GOSUB 9100: LOCATE 19,1
  180. 7017 PRINT SPC(79): LOCATE 19,1: PRINT: LOCATE 19,2
  181. 7020 INPUT "Please enter filename (.KEY will be used as the extension): ",N$
  182. 7025 GOSUB 9200
  183. 7028 IF INSTR(N$,"+") THEN LOCATE 22,2: PRINT "Loading aborted.";: GOTO 5035
  184. 7029 IF INSTR(N$,"^") THEN 7510
  185. 7030 I=INSTR(N$,"."): IF I THEN N$=LEFT$(N$,I)+"KEY" ELSE N$=N$+".KEY"
  186. 7040 ON ERROR GOTO 7400: OPEN "I",#1,N$
  187. 7045 LOCATE 18,1: COLOR 16,7: PRINT " ** LOADING ** ";: COLOR 15,0
  188. 7050 WHILE 1=1
  189. 7060    LINE INPUT #1, T ' get a line of text from disk file
  190. 7070    IF LEFT$(T,4)<> A$ THEN 7060
  191. 7080    I=VAL(MID$(T,5,3))-65: I=I-(15 AND (I>3))
  192. 7090    B=INSTR(6,T,";")+2
  193. 7095    C=INSTR(B,T,CHR$(34))
  194. 7097    IF MID$(T,C+2,1)="3" THEN S(I)="^C": GOTO 7200
  195. 7100    IF MID$(T,C-1,1)=" " THEN MID$(T,C-1,1)=CHR$(126)
  196. 7110    S(I)=MID$(T,B,C-B)+STRING$(-(LEN(T)>(C+1)),27)
  197. 7200 WEND
  198. 7400 CLOSE
  199. 7410 IF ERL=7060 THEN RESUME 3410' normal exit, read past EOF.
  200. 7420 IF ERL<>7040 THEN ON ERROR GOTO 0' unknown error, go give message.
  201. 7430 LOCATE 22,2: PRINT "Can't find the file: "N$;' file not found.
  202. 7440 LOCATE ,46: PRINT "[2]";: RESUME 5035
  203. 7450 '
  204. 7500 '────── PRINT DIRECTORY ON PAGE 1 ───────────────
  205. 7510 SCREEN ,,1,1: CLS: LOCATE 3
  206. 7520 PRINT " Directory of .KEY files: "CHR$(10): FILES "*.KEY"
  207. 7530 PRINT " Press any key to return to program."
  208. 7540 WHILE INKEY$="": WEND
  209. 7550 SCREEN ,,0,0: GOTO 5035
  210. 7560 '
  211. 8000 KEY OFF'────── PRINT INITIAL INSTRUCTION PAGE ────────────────────────────
  212. 8005 SCREEN 0,0,0: WIDTH 80: COLOR 15,0,8: CLS: LOCATE ,,0
  213. 8010 PRINT " ── not for sale ──   ╔═══════════════════════════════╗   Vince Bly, P.O Box 409";
  214. 8020 LOCATE 2,23: PRINT "║ ** DOS FUNCTION KEY EDITOR ** ║   Ft. Belvoir, VA  22060"
  215. 8030 LOCATE 3,23: PRINT "╚═══════════════════════════════╝ "
  216. 8060 LOCATE 3,1: PRINT " PROGRAM FUNCTION:
  217. 8070 PRINT "        This program helps PC-DOS 2.0 users to easily define 24 additional"
  218. 8080 PRINT "     function keys for use in DOS and application programs such as EDLIN and"
  219. 8090 PRINT "     the Macro Assembler.  They will have no effect in BASIC.  The program"
  220. 8100 PRINT "     uses the ANSI.SYS keyboard driver included with your DOS 2.0.  Before"
  221. 8110 PRINT "     you can use this editor, you will have to install the ANSI driver."
  222. 8130 PRINT "
  223. 8140 PRINT " INSTALLING THE ANSI DRIVER:
  224. 8150 PRINT "        For once, the instructions in the DOS manual are clear!  Follow them
  225. 8160 PRINT "     exactly.  After you have created the CONFIG.SYS file, you must turn your"
  226. 8170 PRINT "     system off & back on to activate the driver.  Note: the ANSI key defin-"
  227. 8180 PRINT "     ition buffer is limited to 192 bytes, including 3 over-head bytes per key."
  228. 8190 PRINT "
  229. 8200 PRINT " USING THE DOS KEY EDITOR:
  230. 8220 PRINT "        Because of the limited buffer, this editor is designed to work with";
  231. 8240 PRINT "     24 keys: the 4 standard function keys not pre-defined by DOS [F7-F10],"
  232. 8250 PRINT "     the 10 shifted function keys, and the 10 control function keys."
  233. 8340 PRINT "   "
  234. 8350 PRINT " USING THE KEY FILES:
  235. 8360 PRINT "        The files created by the editor are saved with the extension .KEY."
  236. 8370 PRINT "     To activate your key definitions, use the DOS TYPE command; for example:"
  237. 8380 PRINT "     TYPE SAMP1.KEY.  CAUTION, don't redefine them again without rebooting 1st";
  238. 8390 LOCATE 25,1: PRINT "     (the ANSI buffer again).  More info @ line 9999.";: LOCATE 25,54: COLOR 16,7: PRINT "  PRESS ANY KEY TO START  ";
  239. 8395 COLOR 15,0
  240. 8400 WHILE INKEY$="": WEND: RUN 6000
  241. 8410 '
  242. 8499 '────── SEND HARDCOPY TO PRINTER ─────────────────────────────────────────
  243. 8500 LOCATE 23,46: COLOR 31,0: PRINT "[3]";
  244. 8510 LOCATE 19,1: PRINT SPC(79);: LOCATE 19,2: COLOR 15
  245. 8520 LINE INPUT "Enter an optional title (32 characters max.): ",N$
  246. 8530 N$=LEFT$(N$,32): I=LEN(N$)
  247. 8540 LPRINT TAB((80-I)\2)N$CHR$(13)
  248. 8545 FOR I=0 TO 23: IF RIGHT$(S(I),1)=CHR$(27) THEN MID$(S(I),LEN(S(I)),1)="{"
  249. 8547 NEXT
  250. 8550 LPRINT "-------- Standard ------   -------- Shifted -------   -------- Control --------"
  251. 8560 S="F#: \      \ F#: \      \| F#: \      \ F#: \      \| F#: \      \ F#: \      \"
  252. 8570 LPRINT USING S;1,"copy chr",2,"copy to",1,S(4),2,S(5),1,S(14),2,S(15)
  253. 8575 LPRINT USING S;3,"copy frm",4,"skip to",3,S(6),4,S(7),3,S(16),4,S(17)
  254. 8580 LPRINT USING S;5,"template",6,"Ctrl-Z",5,S(8),6,S(9),5,S(18),6,S(19)
  255. 8585 LPRINT USING S;7,S(0),8,S(1),7,S(10),8,S(11),7,S(20),8,S(21)
  256. 8590 LPRINT USING S;9,S(2),0,S(3),9,S(12),0,S(13),9,S(22),0,S(23)
  257. 8595 LPRINT STRING$(3,13)
  258. 8596 FOR I=0 TO 23: IF RIGHT$(S(I),1)="{" THEN MID$(S(I),LEN(S(I)),1)=CHR$(27)
  259. 8598 NEXT
  260. 8600 LOCATE 23,46: COLOR 15,0: PRINT "[3]";
  261. 8610 GOTO 5035
  262. 9000 DEF FNRB(COL)=(COL<>24)AND(COL<>51)AND(COL<>78)' true if not right boundry
  263. 9010 DEF FNLB(COL)=(COL<>9)AND(COL<>36)AND(COL<>63)'  true if not left boundry
  264. 9020 DEF FNHM(COL)=9+27*INT((COL-9)/27)'              = left boundry column #
  265. 9030 RETURN
  266. 9100 LOCATE 21,2: PRINT CHR$(26);" Include "CHR$(34)"+"CHR$(34)" in filename to"
  267. 9110 LOCATE 22,4: PRINT "abort saving or loading.";
  268. 9120 LOCATE 23,2: PRINT CHR$(26);" Or, include "CHR$(34)"^"CHR$(34)" to see"
  269. 9130 LOCATE 24,4: PRINT "directory of key files.";
  270. 9140 RETURN
  271. 9200 LOCATE 21,1: PRINT SPC(45): LOCATE 22,1: PRINT SPC(45);
  272. 9205 LOCATE 23,1: PRINT SPC(45): LOCATE 24,1: PRINT SPC(45);
  273. 9210 LOCATE 21,46: PRINT "[1]";: LOCATE 22,46: PRINT "[2]";
  274. 9220 RETURN
  275. 9300 FOR I=21 TO 25: LOCATE I,45: PRINT SPC(35);: NEXT
  276. 9310 LOCATE 19,1: PRINT "GOTO 5000' to re-enter the program.";
  277. 9320 PRINT SPC(30): GOTO 10290
  278. 9999 ' ────── More information follows:
  279. 10000 '
  280. 10020 ' CONDITIONS OF (NON)SALE:
  281. 10030 '       This program is not for sale.  However, feel free to copy it
  282. 10040 '    or give it to a friend.  If you have any problems or suggestions,
  283. 10050 '    drop me a line at the address shown at the start of the program.
  284. 10060 '
  285. 10070 ' ADDITIONAL INFO. ON ANSI.SYS:
  286. 10080 '       The present version of the ANSI.SYS driver appears to have a
  287. 10090 '    key definition buffer limited to 192 bytes.  Also, if--after you
  288. 10100 '    have installed a set of key definitions--you try to re-define
  289. 10110 '    them by installing another set, you may overflow the buffer, even
  290. 10120 '    though you are re-defining the same keys.  Therefore, always re-
  291. 10130 '    boot before installing a new set of key definitions.
  292. 10140 '       Unfortunately, the presence of the ANSI.SYS driver disables key-
  293. 10150 '    trapping of the "shifted" keys added in the 2.0 version of BASIC.
  294. 10160 '    This is why this program doesn't trap <Ctrl>[Break].
  295. 10170 '
  296. 10180 ' MORE INFO. ON THIS EDITOR:
  297. 10190 '       The editor works much like the BASIC screen editor.  The actions
  298. 10200 '    of the various editing keys are shown at the bottom of the screen
  299. 10210 '    when you are in the edit mode.  You can type in any string of up
  300. 10220 '    to 16 characters for any key; however, you will need to average
  301. 10230 '    5 characters per key if you want to use all 24 keys and stay with-
  302. 10240 '    in the buffer limit.  The editor will not let you overflow the
  303. 10250 '    buffer.  Also, the editor accepts one special sequence: if you
  304. 10260 '    enter "^C" as the 1st and only two symbols for a key definition,
  305. 10270 '    the editor will interpret this as control-C, allowing you to de-
  306. 10280 '    fine a one-stroke "break" key.
  307. 10290 '
  308.