home *** CD-ROM | disk | FTP | other *** search
/ Play and Learn 2 / 19941.ZIP / 19941 / EDUCICAL / MMBIOTUT / MMEDIT.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1994-02-04  |  10.0 KB  |  243 lines

  1. 1000  ON ERROR GOTO 9000
  2. 1001  COMMON UMSEG%()
  3. 1005  DEFINT A-Z:COLOR 0,0,0:KEY OFF:FOR I=1 TO 10:KEY I,"":NEXT
  4. 1010  COLOR 7,0:OPTION BASE 1
  5. 1020  DIM LESSON$(45),GNUM(45),PCT(45),HFLAG(45),QNUM(45),QUES$(50),ANS$(50)
  6. 1025  DIM QUSED(45),WTITLE$(45),TTITLE$(45),HINT$(45)
  7. 1030  DIM FDPOS(5,2),FDLEN(5),FDTYPE$(5),FDINBUF$(5)
  8. 1080  OPEN "MMHOME.dir" AS #1 LEN = 95
  9. 1090  FIELD #1, 8 AS F1$, 2 AS F2$, 2 AS F3$, 2 AS F4$, 2 AS F5$, 2 AS F6$, 15 AS F7$, 30 AS F8$, 32 AS F9$
  10. 1170  FOR I=1 TO 45
  11. 1180    GET #1,I:LESSON$(I)=F1$
  12. 1190    GNUM(I)=CVI(F2$):PCT(I)=CVI(F3$):QNUM(I)=CVI(F4$):QUSED(I)=CVI(F5$)
  13. 1195    HFLAG(I)=CVI(F6$):WTITLE$(I)=F7$:TTITLE$(I)=F8$:HINT$(I)=F9$
  14. 1200  NEXT
  15. 1230  COLOR 0,0,0:CLS:WIDTH 80:COLOR 0,15,0:LOCATE ,,0
  16. 1250  LOCATE 1,6:PRINT SPACE$(25)+"M A T C H M A K E R"+SPACE$(26)
  17. 1260  LOCATE 2,6:PRINT "     "+STRING$(19,205)+"  LESSON  DIRECTORY  "+STRING$(19,205)+SPACE$(6)
  18. 1270  LOCATE 3,6:PRINT SPACE$(70)
  19. 1280  FOR I=1 TO 15
  20. 1290    LOCATE I+3,6:PRINT USING "     ##.  ";I;:PRINT USING "\      \";LESSON$(I);
  21. 1300    PRINT SPACE$(10);:PRINT USING "##.  ";I+15;:PRINT USING "\      \";LESSON$(I+15);
  22. 1310    PRINT SPACE$(10);:PRINT USING "##.  ";I+30;:PRINT USING "\      \";LESSON$(I+30);
  23. 1320    PRINT SPACE$(6)
  24. 1330  NEXT
  25. 1350  IK$=INKEY$:IF IK$<>"" GOTO 1350
  26. 1360  LOCATE 20,6:COLOR 15,0:PRINT "CHOOSE A LESSON NUMBER THEN ";
  27. 1380  COLOR 7:PRINT "Press "+CHR$(17)+STRING$(2,196)+CHR$(217);:COLOR 15:PRINT " :"
  28. 1385  LOCATE 22,6:PRINT "(I WILL ";:COLOR 0,15:PRINT " EDIT ";:COLOR 15,0:PRINT " THE LESSON YOU SELECT)"
  29. 1387  NUMFD=1:FTRY=0:FDINBUF$(1)=SPACE$(2)
  30. 1390  DATA 20,48,"I",2
  31. 1400  GOSUB 8000
  32. 1500  IF FDINBUF$(1)="  " THEN CLOSE:CHAIN "MMEDITOR",1000
  33. 1620  LESN=VAL(FDINBUF$(1))
  34. 1630  IF LESN>45 OR LESN<1 THEN BEEP:RESTORE 1390:GOTO 1400
  35. 1700  IF LEFT$(LESSON$(LESN),1)<>"-" THEN OLDLESN$=LESSON$(LESN):GOTO 2000
  36. 1710  BEEP:FOR I=0 TO 25:COLOR 12,0:LOCATE 23,6,0:PRINT "LESSON IS EMPTY, PLEASE RE-ENTER!":NEXT I:GOTO 1720
  37. 1720  LOCATE 23,6:PRINT SPACE$(70):COLOR 15,0:RESTORE 1390:GOTO 1400
  38. 2000  COLOR 0,0,0:CLS:SCREEN 0,1:WIDTH 40
  39. 2005  NUMFD=3:FTRY=1
  40. 2006  FDINBUF$(1)=WTITLE$(LESN):FDINBUF$(2)=TTITLE$(LESN):FDINBUF$(3)=HINT$(LESN)
  41. 2010  COLOR 9,0,0:LOCATE 1,1,0:PRINT "******  MATCHMAKER   E D I T O R  ******";
  42. 2015  LOCATE 3,12:COLOR 11,0:PRINT "EDIT ";:COLOR 11,1:PRINT " OLD ";:COLOR 11,0:PRINT " LESSON"
  43. 2020  COLOR 15,0:LOCATE  6,11:PRINT "  LESSON NAME: ";:COLOR 7,0:PRINT LESSON$(LESN)
  44. 2025  COLOR 15,0:LOCATE 10,5:PRINT "~ WORD TITLE: ";:COLOR 7:PRINT "(MAX 15 CHAR)"
  45. 2026  COLOR 15,0:LOCATE 14,5:PRINT "~ TEXT TITLE: ";:COLOR 7:PRINT "(MAX 30 CHAR)"
  46. 2030  COLOR 15,0:LOCATE 18,5:PRINT "~ HINT: ";:COLOR 7:PRINT "(MAX 32 CHAR)"
  47. 2050  DATA 11,9,"ANY",15,15,9,"ANY",30,19,9,"ANY",32
  48. 2060  GOSUB 8000
  49. 2070  MSG$="ARE ALL ENTRIES CORRECT ? (Y/N) ":R$=" Y ":GOSUB 7000
  50. 2080  IF REDO=1 THEN COLOR 0,0:LOCATE 22,2:PRINT SPACE$(38):RESTORE 2050:GOTO 2060
  51. 2160  WTITLE$(LESN)=FDINBUF$(1):TITLE1$=WTITLE$(LESN)
  52. 2165  L=LEN(TITLE1$):IF RIGHT$(TITLE1$,1)=" " THEN TITLE1$=LEFT$(TITLE1$,L-1):GOTO 2165
  53. 2170  TTITLE$(LESN)=FDINBUF$(2):TITLE2$=TTITLE$(LESN)
  54. 2175  L=LEN(TITLE2$):IF RIGHT$(TITLE2$,1)=" " THEN TITLE2$=LEFT$(TITLE2$,L-1):GOTO 2175
  55. 2180  HINT$(LESN)=FDINBUF$(3)
  56. 2300  COLOR 0,0,0:CLS:SCREEN 0,1:WIDTH 40:CNT=1
  57. 2301  OPEN LESSON$(LESN)+".LES" AS #2 LEN = 144
  58. 2302  FIELD #2, 20 AS LF1$, 124 AS LF2$
  59. 2303  FOR I=1 TO 50
  60. 2305    IF I<=QNUM(LESN) THEN GET #2,I:ANS$(I)=LF1$:QUES$(I)=LF2$ ELSE ANS$(I)=" ":QUES$(I)=STRING$(4,10)
  61. 2306  NEXT
  62. 2308  NUMFD=5:FTRY=1
  63. 2310  COLOR 9,0,0:LOCATE 1,1,0:PRINT "******  MATCHMAKER   E D I T O R  ******";
  64. 2315  LOCATE 3,12:COLOR 11,0:PRINT "EDIT ";:COLOR 11,1:PRINT " OLD ";:COLOR 11,0:PRINT " LESSON"
  65. 2320  COLOR 7,0:LOCATE  5,10:PRINT "LESSON NAME: ";:COLOR 15,0:PRINT " "+LESSON$(LESN)+" "
  66. 2325  COLOR 7,0:LOCATE 7,10:PRINT "WORD  # ";:COLOR 0,6:PRINT USING "##";CNT;:COLOR 7,0:PRINT "  OF  ";:COLOR 0,6:PRINT USING "##";QNUM(LESN);:COLOR 7,0:PRINT "  WORDS"
  67. 2326  COLOR 15,0:LOCATE 9,2:PRINT TITLE1$+":"
  68. 2330  COLOR 15,0:LOCATE 13,2:PRINT TITLE2$+":"
  69. 2332  COLOR 15,0:LOCATE 14,2:PRINT "  "
  70. 2333  COLOR 15,0:LOCATE 16,2:PRINT "+ "
  71. 2334  COLOR 15,0:LOCATE 18,2:PRINT "+ "
  72. 2335  COLOR 15,0:LOCATE 20,2:PRINT "+ "
  73. 2340  DATA 10,5,"ANY",20,14,5,"ANY",30,16,5,"ANY",30,18,5,"ANY",30,20,5,"ANY",30
  74. 2350  FDINBUF$(1)=ANS$(CNT):FOR I=2 TO 5:FDINBUF$(I)=MID$(QUES$(CNT),31*I-61,30):NEXT
  75. 2360  GOSUB 8000
  76. 2365  GOSUB 7500
  77. 2380  IF OPT=1 THEN RESTORE 2340:GOTO 2360
  78. 2390  IF OPT=2 THEN GOSUB 2600:IF FL1=1 GOTO 2365 ELSE GOSUB 2700:FTRY=1:RESTORE 2340:GOTO 2350
  79. 2400  IF CNT<=QNUM(LESN) THEN GOSUB 2800
  80. 2410  IF CNT<QNUM(LESN) THEN FTRY=1:CNT=CNT+1:GOSUB 2700:RESTORE 2340:GOTO 2350
  81. 2470  MSG$="MORE TO ADD ? (Y/N) ":R$=" Y ":COLOR 0,0:LOCATE 22,1:PRINT SPACE$(40);:GOSUB 7000
  82. 2480  IF REDO=1 GOTO 4000
  83. 2490  CNT=CNT+1:QNUM(LESN)=CNT:GOSUB 2700
  84. 2500  COLOR 0,0:LOCATE 22,1:PRINT SPACE$(40);
  85. 2510  FDINBUF$(1)=SPACE$(20):FOR I=2 TO 5:FDINBUF$(I)=SPACE$(30):NEXT:RESTORE 2340:GOTO 2360
  86. 2600  FL1=0:IF QNUM(LESN)<=1 THEN BEEP:FOR I=1 TO 25:LOCATE 23,1:COLOR 12,0:PRINT "ONE AND ONLY ENTRY, CAN NOT BE DELETED!":NEXT:GOTO 2670
  87. 2620  FOR I=CNT TO QNUM(LESN)-1
  88. 2630    ANS$(I)=ANS$(I+1)
  89. 2640    QUES$(I)=QUES$(I+1)
  90. 2650  NEXT
  91. 2660  QNUM(LESN)=QNUM(LESN)-1:IF CNT>QNUM(LESN) THEN CNT=QNUM(LESN)
  92. 2665  RETURN
  93. 2670  LOCATE 23,1:COLOR 0,0:PRINT SPACE$(39);:FL1=1:RETURN
  94. 2700  COLOR 0,6:LOCATE 7,18:PRINT USING "##";CNT:LOCATE 7,26:PRINT USING "##";QNUM(LESN)
  95. 2710  RETURN
  96. 2800  ANS$(CNT)=FDINBUF$(1)
  97. 2810  D$=CHR$(94):QUES$(CNT)=FDINBUF$(2)+D$+FDINBUF$(3)+D$+FDINBUF$(4)+D$+FDINBUF$(5)+D$
  98. 2820  RETURN
  99. 4000  COLOR 0,0,0:CLS:SCREEN 0,1:WIDTH 40
  100. 4001  NUMFD=3:FTRY=1
  101. 4002  FDINBUF$(1)=MID$(STR$(GNUM(LESN)),2)
  102. 4003  FDINBUF$(2)=MID$(STR$(QUSED(LESN)),2)
  103. 4005  FDINBUF$(3)=MID$(STR$(PCT(LESN)),2)
  104. 4010  COLOR 9,0,0:LOCATE 1,1,0:PRINT "******  MATCHMAKER   E D I T O R  ******";
  105. 4015  LOCATE 3,12:COLOR 11,0:PRINT "EDIT ";:COLOR 11,1:PRINT " OLD ";:COLOR 11,0:PRINT " LESSON"
  106. 4020  COLOR 15,0:LOCATE  7,2:PRINT "GUESSES ALLOWED PER QUESTION (1-9)..."+FDINBUF$(1)
  107. 4025  COLOR 15,0:LOCATE 12,2:PRINT "NUMBER OF QUESTIONS TO BE USED......"+FDINBUF$(2)
  108. 4026  COLOR 7,0:LOCATE 13,2:PRINT "(THIS LESSON HAS ";:COLOR 15:PRINT USING "##";QNUM(LESN);:COLOR 7:PRINT " QUESTIONS)"
  109. 4030  COLOR 15,0:LOCATE 17,2:PRINT "PERCENT (%) CORRECT TO GET REWARD.."+FDINBUF$(3)
  110. 4050  DATA 7,39,"I",1,12,38,"I",2,17,37,"I",3
  111. 4060  GOSUB 8000
  112. 4070  MSG$="ARE ALL ENTRIES CORRECT ? (Y/N) ":R$=" Y ":GOSUB 7000
  113. 4080  IF REDO=1 THEN COLOR 0,0:LOCATE 22,2:PRINT SPACE$(38):RESTORE 4050:GOTO 4060
  114. 4150  GNUM(LESN)=VAL(FDINBUF$(1)):IF GNUM(LESN)<1 GOTO 4180
  115. 4160  QUSED(LESN)=VAL(FDINBUF$(2)):IF QUSED(LESN)>QNUM(LESN) OR QUSED(LESN)=0 GOTO 4180
  116. 4170  PCT(LESN)=VAL(FDINBUF$(3)):IF PCT(LESN)>100 OR PCT(LESN)=0 GOTO 4180
  117. 4175  GOTO 5000
  118. 4180  COLOR 0,0:LOCATE 22,2:PRINT SPACE$(38)
  119. 4185  BEEP:COLOR 12,0,0:FOR I=0 TO 35:LOCATE 23,2,0:PRINT "ERROR IN ENTRIES!!! RE-ENTER.":NEXT I
  120. 4190  COLOR 0,0:LOCATE 23,2:PRINT SPACE$(38):RESTORE 4050:GOTO 4060
  121. 5000  COLOR 0,0:LOCATE 22,2:PRINT SPACE$(38)
  122. 5015  COLOR 14,0:LOCATE 22,2:PRINT "SAVING LESSON ..."
  123. 5020  FOR I=1 TO QNUM(LESN)
  124. 5035    IF LEFT$(ANS$(I),1)=" " THEN ANS$(I)=MID$(ANS$(I),2):GOTO 5035
  125. 5036  REM  L=LEN(ANS$(I)):FOR J=1 TO L:C$=MID$(ANS$(I),j,1):IF C$>="a" AND C$<="z" THEN MID$(ANS$(i),j,1)=CHR$(ASC(C$)-32)
  126. 5037  REM  NEXT J
  127. 5040    LSET LF1$=ANS$(I):LSET LF2$=QUES$(I)
  128. 5050    PUT #2,I
  129. 5060  NEXT I
  130. 5065  CLOSE #2
  131. 5070  LSET F1$=LESSON$(LESN)
  132. 5085  LSET F2$=MKI$(GNUM(LESN))
  133. 5090  LSET F3$=MKI$(PCT(LESN))
  134. 5100  LSET F4$=MKI$(QNUM(LESN))
  135. 5140  LSET F5$=MKI$(QUSED(LESN))
  136. 5150  LSET F7$=WTITLE$(LESN)
  137. 5160  LSET F8$=TTITLE$(LESN)
  138. 5170  LSET F9$=HINT$(LESN)
  139. 5180  PUT #1,LESN
  140. 5520  COLOR 0,0,0:CLS:WIDTH 40
  141. 5530  LOCATE 6,3,0:COLOR 14,0:PRINT "EDIT ANOTHER LESSON ? (Y/N) "+SPACE$(5)
  142. 5535  COLOR 0,14:LOCATE 6,34:PRINT " Y "
  143. 5540  K$=INKEY$:IF K$<>"" GOTO 5540
  144. 5550  COLOR 0,14:LOCATE 6,35,1,7,0
  145. 5560  K$=INKEY$:IF K$="" GOTO 5560
  146. 5570  IF K$="N" OR K$="n" THEN LOCATE 6,35,0:PRINT K$
  147. 5580  IF K$="N" OR K$="n" THEN CLOSE:CHAIN "MMEDITOR",1000
  148. 5590  IF K$="Y" OR K$="y" OR K$=CHR$(13) THEN RESTORE 1390:GOTO 1230 ELSE BEEP:GOTO 5530
  149. 7000  LOCATE 22,2:COLOR 14,0:PRINT MSG$+SPACE$(5)
  150. 7070  COLOR 0,14:LOCATE 22,35:PRINT R$
  151. 7090  K$=INKEY$:IF K$<>"" GOTO 7090
  152. 7100  COLOR 0,14:LOCATE 22,36,1,7,0
  153. 7110  K$=INKEY$:IF K$="" GOTO 7110
  154. 7127  IF K$="N" OR K$="n" THEN LOCATE 22,36,0:PRINT K$
  155. 7130  IF K$="N" OR K$="n" THEN COLOR 0,0:LOCATE 22,1:PRINT SPACE$(40);:REDO=1:RETURN
  156. 7140  IF K$="Y" OR K$="y" OR K$=CHR$(13) THEN REDO=0:RETURN ELSE BEEP:GOTO 7070
  157. 7500  LOCATE 22,1:COLOR 14,0
  158. 7510  PRINT "YOUR OPTIONS (E";:COLOR 6:PRINT "dit, ";
  159. 7520  COLOR 14:PRINT "D";:COLOR 6:PRINT "elete, ";:COLOR 14:PRINT "A";:COLOR 6:PRINT "ccept";:COLOR 14:PRINT "): ";:COLOR 0,14:PRINT " A ";
  160. 7530  K$=INKEY$:IF K$<>"" GOTO 7530
  161. 7540  COLOR 0,14:LOCATE 22,39,1,7,0
  162. 7550  K$=INKEY$:IF K$="" GOTO 7550
  163. 7560  IF K$="E" OR K$="e" THEN LOCATE 22,39,0:PRINT K$:OPT=1:GOSUB 7590:RETURN
  164. 7570  IF K$="D" OR K$="d" THEN LOCATE 22,39,0:PRINT K$:OPT=2:GOSUB 7590:RETURN
  165. 7580  IF K$="A" OR K$="a" OR K$=CHR$(13) THEN OPT=3:RETURN ELSE BEEP:GOTO 7500
  166. 7590  COLOR 7,0:LOCATE 22,1:PRINT SPACE$(40);:RETURN
  167. 8000  FOR I=1 TO NUMFD
  168. 8110    READ FDPOS(I,1),FDPOS(I,2),FDTYPE$(I),FDLEN(I)
  169. 8115    IF LEN(FDINBUF$(I))<FDLEN(I) THEN FDINBUF$(I)=FDINBUF$(I)+SPACE$(FDLEN(I)-LEN(FDINBUF$(I)))
  170. 8120    COLOR 7,0:LOCATE FDPOS(I,1)+1,FDPOS(I,2),0:PRINT STRING$(FDLEN(I),45);
  171. 8130    COLOR 6,0:LOCATE FDPOS(I,1),FDPOS(I,2),0:PRINT FDINBUF$(I)
  172. 8200  NEXT I
  173. 8205  IF FTRY=1 THEN FTRY=0:RETURN
  174. 8210  CFD=1 : COLOR 14,0
  175. 8220  CPOS=FDPOS(CFD,2):RPOS=FDPOS(CFD,1):LOCATE RPOS,CPOS,0
  176. 8230  CPOSMAX=CPOS+FDLEN(CFD)-1:CPOSMIN=CPOS
  177. 8240  LOCATE RPOS,CPOS,1,0,7
  178. 8250  A$=INKEY$
  179. 8260  IF A$="" THEN GOTO 8250
  180. 8270  L=LEN(A$):IF L=2 THEN A$=RIGHT$(A$,1)
  181. 8273  IF A$=CHR$(27) THEN CLOSE:CHAIN "mmeditor",1000
  182. 8275  IF A$=CHR$(8) THEN GOSUB 8350:GOTO 8240
  183. 8280  IF L=2 THEN IF A$="K" THEN GOSUB 8340:GOTO 8240 ELSE IF A$="M" THEN GOSUB 8380:GOTO 8240
  184. 8290  IF L=2 THEN IF A$="H" THEN GOSUB 8420:GOTO 8220 ELSE IF A$="P" THEN GOSUB 8460:GOTO 8220
  185. 8300  IF L=2 THEN IF A$="S" THEN GOSUB 8500:GOTO 8240 ELSE IF A$="R" THEN GOSUB 8560:GOTO 8240
  186. 8310  IF A$=CHR$(13) THEN IF CFD=NUMFD THEN GOSUB 8670:RETURN ELSE GOSUB 8670:CFD=CFD+1:GOTO 8220
  187. 8320  GOSUB 8720 : IF CPOS < CPOSMAX THEN CPOS=CPOS+1
  188. 8330  GOTO 8240
  189. 8340  IF CPOS-CPOSMIN+1 > 0 THEN CPOS=CPOS-1
  190. 8342  IF CPOS-CPOSMIN+1 < 1 THEN BEEP:CPOS=CPOS+1
  191. 8343  RETURN
  192. 8350  IF CPOS-CPOSMIN+1 > 0 THEN CPOS=CPOS-1
  193. 8355  IF CPOS>=CPOSMIN THEN LOCATE RPOS,CPOS+1,0:PRINT " ":MID$(FDINBUF$(CFD),CPOS-CPOSMIN+2,1)=" "
  194. 8360  IF CPOS-CPOSMIN+1 < 1 THEN BEEP:CPOS=CPOS+1
  195. 8370  RETURN
  196. 8380  REM =========================================== CURSOR RIGHT KEY
  197. 8390  IF CPOS<=CPOSMAX THEN CPOS=CPOS+1
  198. 8400  IF CPOS>CPOSMAX THEN BEEP:CPOS=CPOS-1
  199. 8410  RETURN
  200. 8420  REM ====================================== TAB BACKWARD -- CURSOR UP KEY
  201. 8430  GOSUB 8670
  202. 8440  IF CFD=1 THEN CFD=NUMFD ELSE CFD=CFD-1
  203. 8450  RETURN
  204. 8460  REM ====================================== TAB FORWARD -- CURSOR DOWN KEY
  205. 8470  GOSUB 8670
  206. 8480  IF CFD=NUMFD THEN CFD=1 ELSE CFD=CFD+1
  207. 8490  RETURN
  208. 8500  REM ======================================= DELETE A CHARACTER -- DEL KEY
  209. 8510  PTR=CPOS-CPOSMIN+1:RESTBUF$=MID$(FDINBUF$(CFD),PTR+1)+SPACE$(1)
  210. 8520  LOCATE ,,0
  211. 8530  PRINT RESTBUF$;:FDINBUF$(CFD)=LEFT$(FDINBUF$(CFD),PTR-1)+RESTBUF$
  212. 8550  RETURN
  213. 8560  REM ======================================= INSERT A CHARACTER -- INS KEY
  214. 8570  LOCATE RPOS,CPOS,1,4,7
  215. 8575  A$=INKEY$:IF A$="" THEN GOTO 8575
  216. 8580  L=LEN(A$):IF L=2 THEN A$=RIGHT$(A$,1)
  217. 8585  IF A$=CHR$(8) THEN GOTO 8275
  218. 8590  IF L=2 THEN IF A$="K" OR A$="M" THEN GOTO 8280 ELSE IF A$="H" OR A$="P" THEN GOTO 8290 ELSE IF A$="S" THEN GOTO 8300 ELSE IF A$="R" THEN RETURN
  219. 8600  IF A$=CHR$(13) THEN GOTO 8310
  220. 8610  PTR=CPOS-CPOSMIN+1:RESTBUF$=MID$(FDINBUF$(CFD),PTR,FDLEN(CFD)-PTR)
  221. 8620  GOSUB 8700:LOCATE ,,0:PRINT RESTBUF$;:CPOS=CPOS+1
  222. 8630  IF CPOS>CPOSMAX THEN BEEP:CPOS=CPOS-1:RETURN
  223. 8640  FDINBUF$(CFD)=LEFT$(FDINBUF$(CFD),PTR)+RESTBUF$
  224. 8650  GOTO 8570
  225. 8660  REM ======================================== DEACTIVATE CURRENT FIELD
  226. 8670  CPOS=FDPOS(CFD,2):RPOS=FDPOS(CFD,1):LOCATE RPOS,CPOS,0
  227. 8680  COLOR 6,0:PRINT FDINBUF$(CFD);:COLOR 14,0
  228. 8690  RETURN
  229. 8700  REM ======================================== VALIDATE ENTERED DATA AND ECHO
  230. 8710  LOCATE ,,0
  231. 8720  IF FDTYPE$(CFD)="I" OR FDTYPE$(CFD)="i" THEN IF (A$>"9") OR (A$<"0" AND A$>"-") OR (A$<"-") THEN GOTO 8770 ELSE GOTO 8760
  232. 8730  IF FDTYPE$(CFD)="D" OR FDTYPE$(CFD)="d" THEN IF (A$ > "9") OR (A$ < "0" AND A$ >".") OR (A$<"-") THEN GOTO 8770 ELSE GOTO 8760
  233. 8740  IF FDTYPE$(CFD)="A" OR FDTYPE$(CFD)="a" THEN IF (A$ < "A") OR (A$ > "Z" AND A$ < "a") OR (A$ > "z") THEN GOTO 8770 ELSE GOTO 8760
  234. 8750  IF FDTYPE$(CFD)="AN" OR FDTYPE$(CFD)="an" THEN IF (A$ <"0") OR (A$ <"A" AND A$ >"9") OR (A$ >"Z" AND A$ <"a") OR (A$ >"z") THEN GOTO 8770 ELSE GOTO 8760
  235. 8760  MID$(FDINBUF$(CFD),CPOS-CPOSMIN+1)=A$:PRINT A$;:TYPERR=0:RETURN
  236. 8770  BEEP:CPOS=CPOS-1:TYPERR=1:RETURN
  237. 9000  IF ERR=61 THEN MSG$="DISKETTE SPACE FULL!":GOTO 9040
  238. 9010  IF ERR=70 THEN MSG$="DISKETTE WRITE PROTECT!":GOTO 9040
  239. 9020  IF ERR=71 THEN MSG$="DISK DRIVE NOT READY!":GOTO 9040
  240. 9030  IF ERR=72 THEN MSG$="DISK MEDIA ERROR!" ELSE MSG$="ERROR DETECTED! ("+MID$(STR$(ERR),2)+")"
  241. 9040  BEEP:COLOR 12,0:FOR B=1 TO 40:LOCATE 23,2,0:PRINT MSG$:NEXT B
  242. 9050  CLOSE:CHAIN "MMEDITOR",1000
  243.