home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / steel44.zip / EXPERT.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  29KB  |  995 lines

  1. 3 PRINT FRE(0)
  2. 4 DEFINT B-D,G-Z
  3. 5 DIM ANS(3000)
  4. 13 DIM SB(1000)
  5. 16 DIM PRI(1000)
  6. 35 DIM K$(80)
  7. 40 DIM PFOR(1000)
  8. 45 DIM PA(1000)
  9. 50 DIM EVAL(1000)
  10. 60 DIM PBM(200)
  11. 65 DIM ACT(25)
  12. 70 CH = 29
  13. 75 PRINT FRE(0)
  14. 80 GOSUB 52000
  15. 100 GOSUB 50000
  16. 150 IF DT# = 2 THEN GOSUB 36000
  17. 200 GOSUB 53000
  18. 300 IF DT# = 1 THEN GOSUB 10000 
  19. 310 GOSUB 12000
  20. 320 GOTO 20000
  21. 500 REM  CLEAR SCREEN
  22. 510 CLS
  23. 520 RETURN
  24. 8000 REM ***** FILE NAME ACCEPLABLE TEST ************
  25. 8010 TEST = 1
  26. 8100 FOR Q = 1 TO LEN(A$)
  27. 8110 K$(Q) = MID$(A$,Q,1)
  28. 8120 C = ASC(K$(Q))
  29. 8130 IF C < 48 OR C > 122 THEN TEST = 4
  30. 8140 IF Q = 1 AND ( C < 65 OR C > 122 ) THEN TEST = 4
  31. 8150 NEXT Q
  32. 8190 RETURN
  33. 10000 REM INITAL ASK ALL QUESTIONS
  34. 10010 GOSUB 500
  35. 10020 NEFLG = 5
  36. 10030 PRINT "                       START A NEW ANALYSIS "
  37. 10035 PRINT ""
  38. 10040 PRINT "        The computer will ask you the introductory questions "
  39. 10045 PRINT ""
  40. 10050 PRINT "  Answer the questions by entering the answer then press return "
  41. 10055 PRINT ""
  42. 10060 PRINT "                 You may enter  N  for no answer"
  43. 10065 PRINT ""
  44. 10070 PRINT "                    PRESS ANY KEY TO CONTINUE "
  45. 10080 IF INKEY$ = "" THEN 10080
  46. 10100 FOR R = 1 TO MRN1
  47. 10103 ANS(R) = -999
  48. 10104 RN = R
  49. 10105 GOSUB 54100
  50. 10110 IF Q2 = 2 THEN GOSUB 10200
  51. 10120 NEXT R
  52. 10125 NEFLG = 0
  53. 10130 RETURN
  54. 10200 REM ASK QUESTION
  55. 10210 GOSUB 500
  56. 10240 PRINT Q$
  57. 10250 IF ABS(Q3) > 1 THEN 10400
  58. 10260 GOSUB 60120
  59. 10265 IF DT# = -999 AND NFLG = 0 THEN 10500
  60. 10270 ANS(R) = DT#
  61. 10290 RETURN
  62. 10400 REM PRINT CONTINUED QUESTIONS
  63. 10410 RN = ABS(Q3)
  64. 10420 GOSUB 54100
  65. 10430 PRINT Q$
  66. 10440 GOTO 10250
  67. 10500 REM DONT ACCEPT -999
  68. 10510 PRINT "  THE COMPUTER WILL NOT ACCEPT -999 FOR AN ANSWER BECAUSE IT IS THE "
  69. 10520 PRINT " CODE FOR NO ANSWER "
  70. 10530 PRINT " PLEASE GIVE ANOTHER ANSWER FOR THE QUESTION "
  71. 10540 GOTO 10260
  72. 10600 REM DONT ACCEPT -999
  73. 10610 PRINT "  THE COMPUTER WILL NOT ACCEPT -999 FOR AN ANSWER BECAUSE IT IS THE "
  74. 10620 PRINT " CODE FOR NO ANSWER "
  75. 10630 PRINT " PLEASE GIVE ANOTHER ANSWER FOR THE QUESTION "
  76. 10640 GOTO 31130
  77. 11000 REM READ OLD DATA
  78. 12000 REM READ SUBPROBLEMS AND PRIORITY
  79. 12100 FOR T = 1 TO MRN2
  80. 12110 GET #2,T
  81. 12120 SB(T) = CVI(P2$)
  82. 12130 PRI(T) = CVI(P3$)
  83. 12140 NEXT T
  84. 12150 RETURN
  85. 17000 REM CHECK FOR CONTINUED QUESTIONS
  86. 17100 IF ABS(Q3) <= 1 THEN RETURN
  87. 17110 RN = ABS(Q3)
  88. 17120 GOSUB 54000
  89. 17122 KTQ = KTQ - 1
  90. 17130 PRINT TAB(8) Q$
  91. 17135 IF PRTFLG = 2 THEN LPRINT TAB(8)Q$
  92. 17140 GOTO 17100
  93. 17200 RN = T
  94. 17208 IF ABS(Q3) <= 1 THEN RETURN
  95. 17210 RN = ABS(Q3)
  96. 17220 GOSUB 54000
  97. 17230 LPRINT TAB(8) Q$
  98. 17240 GOTO 17200
  99. 18000 REM PRINT SINGLE PROBLEM AND SUPPORTING EVIDENCE
  100. 18010 PRINT "******  MAKE SURE YOUR PRINTER IS ON  ******"
  101. 18100 PRINT "WHICH PROBLEM DO YOU WANT PRINTED ON PAPER ?"
  102. 18105 PRINT "          ENTER  0  TO RETURN "
  103. 18110 GOSUB 60060
  104. 18115 IF DT# = 0 THEN 20000
  105. 18120 RN = DT#
  106. 18130 GOSUB 54200
  107. 18140 LPRINT RN;P1$;TAB(60) PFOR(RN);TAB(65) PA(RN)
  108. 18145 T = RN
  109. 18150 GOSUB 34000
  110. 18160 GOTO 20000
  111. 19000 REM **** OPTIONS MENU
  112. 19100 PRINT "** OPTIONS ** 0 - NONE  1 - SAVE  2 - PRINT OPTIONS DISPLAYED ON PAPER "
  113. 19110 PRINT "3 - REVIEW ALL PROBLEMS  4 - ALL QUESTIONS & ANSWERS 5 - PRINT PROBLEM  6-EXIT"
  114. 19150 GOSUB 60000
  115. 19160 IF DT# < 0 OR DT# > 6 THEN 19150
  116. 19170 IF DT# = 0 THEN 20000
  117. 19180 ON DT# GOTO 35000,24000,37000,41000,18000,51000
  118. 20000 REM START SEARCH
  119. 20005 LPRTFLG = 0
  120. 20007 KTQ = 0
  121. 20008 PRTFLG = 0
  122. 20010 H = 0
  123. 20020 GOSUB 500
  124. 20030 KT = 0
  125. 20035 IF SB(ND) > 3000 THEN ND = 0
  126. 20040 GOSUB 21000
  127. 20050 PRINT " #    PROBLEM  ";TAB(60) " +    -    P CK CONT"
  128. 20055 IF LPRTFLG = 1 THEN LPRINT " #    PROBLEM  ";TAB(60) " +    -    P CK CONT"
  129. 20100 FOR T = 1 TO MRN2
  130. 20110 IF SB(T) = ND OR SB(T) = -ND THEN GOSUB 20500
  131. 20120 NEXT T
  132. 20140 IF ND = 0 AND H = 0 THEN PRINT "END OF COMPUTER RECOMMENDATIONS, EXIT OR CONDUCT MANUAL SEARCH"
  133. 20150 IF ND <> 0 AND H = 0 THEN PRINT "COMPUTER RECOMMENDS BACKTRACK TO SUBPROBLEM";SB(ND)
  134. 20200 PRINT "BRANCH ? * NEGATIVE NBR TO OVERRIDE * 9999 TO OPTIONS *";
  135. 20205 IF H > 0 THEN PRINT " COMPUTER RECOMMENDS";H ELSE PRINT " "
  136. 20210 RN = P12
  137. 20250 GOSUB 60060
  138. 20252 IF DT# > 9998 THEN 19000
  139. 20253 IF ABS(DT#) > MRN2 THEN 20250
  140. 20255 IF DT# > 0 THEN 30000
  141. 20260 ND = -DT#
  142. 20265 IF SB(ND) < 0 THEN 20250
  143. 20270 GOTO 20000
  144. 20500 REM PRINT STARTING NODE ON SCREEN
  145. 20504 PB = T
  146. 20505 GOSUB 22000
  147. 20510 RN = T
  148. 20520 GOSUB 54200
  149. 20530 PRINT RN;TAB(6) P1$;TAB(60) PFOR(T);TAB(65) PA(T);TAB(70) P3;
  150. 20532 IF EVAL(T) = 1 THEN PRINT TAB(73) "PC ";
  151. 20533 IF EVAL(T) = 0 THEN PRINT TAB(73) "NC ";
  152. 20534 IF EVAL(T) = 2 THEN PRINT TAB(73) "C  ";
  153. 20535 IF SB(T) >-1 THEN PRINT "CONT" ELSE PRINT "END"
  154. 20537 IF PFOR(T) > 89 AND PA(T) > 89 THEN PRINT " PROBABLE CONTRADICTORY EVIDENCE "
  155. 20540 KT = KT + 1
  156. 20545 IF PRI(T) > PRI(H) AND EVAL(T) = 0 THEN H = T
  157. 20547 IF LPRTFLG = 1 THEN GOSUB 20600
  158. 20550 RETURN
  159. 20600 REM PRINT ON PAPER
  160. 20630 LPRINT RN;TAB(6) P1$;TAB(60) PFOR(T);TAB(65) PA(T);TAB(70) P3;
  161. 20632 IF EVAL(T) = 1 THEN LPRINT TAB(73) "PC ";
  162. 20633 IF EVAL(T) = 0 THEN LPRINT TAB(73) "NC ";
  163. 20634 IF EVAL(T) = 2 THEN LPRINT TAB(73) "C  ";
  164. 20635 IF SB(T) >-1 THEN LPRINT "CONT" ELSE LPRINT "END"
  165. 20637 IF PFOR(T) > 89 AND PA(T) > 89 THEN LPRINT " PROBABLE CONTRADICTORY EVIDENCE "
  166. 20650 RETURN
  167. 21000 REM PRINT SUBRECORDS UP TO 0
  168. 21005 IF ND = 0 THEN PRINT "AT STARTING NODE 0"
  169. 21006 IF ND = 0 THEN RETURN
  170. 21010 PRINT "SUBPROBLEMS OF :"
  171. 21015 IF LPRTFLG = 1 THEN LPRINT "SUBPROBLEMS OF :"
  172. 21100 T = ND
  173. 21105 T = ABS(T)
  174. 21110 RN = T
  175. 21115 IF RN = 0 THEN RETURN
  176. 21120 GOSUB 54200
  177. 21130 PRINT RN;TAB(6) P1$,TAB(60) PFOR(T);TAB(65) PA(T)
  178. 21135 IF LPRTFLG = 1 THEN  LPRINT RN;TAB(6) P1$,TAB(60) PFOR(T);TAB(65) PA(T)
  179. 21140 T = SB(T)
  180. 21145 T = ABS(T)
  181. 21150 GOTO 21110
  182. 22000 REM compute probability
  183. 22010 PA(PB) = 0
  184. 22020 PFOR(PB) = 0
  185. 22030 DCHKFLG = 0
  186. 22100 RN = PB
  187. 22105 RNH = RN
  188. 22110 T4= RN
  189. 22120 S = SB(T4)
  190. 22125 S = ABS(S)
  191. 22128 IF S > 2000 THEN RETURN
  192. 22130 IF S = 0 THEN 22300
  193. 22140 IF PA(S) > PA(RN) THEN PA(RN) = PA(S)
  194. 22150 S = SB(S)
  195. 22155 S = ABS(S)
  196. 22160 GOTO 22130
  197. 22300 GOSUB 54200
  198. 22310 IF ANS(P8) = -999 THEN 22410
  199. 22315 ANS = ANS(P8)
  200. 22320 RT = P7
  201. 22330 QN = P8
  202. 22340 FV = P9!
  203. 22350 PB = P10
  204. 22360 GOSUB 23000
  205. 22410 IF ANS(P12) = -999 THEN 22510
  206. 22415 ANS = ANS(P12)
  207. 22420 RT = P11
  208. 22430 QN = P12
  209. 22440 FV = P13!
  210. 22450 PB = P14
  211. 22460 GOSUB 23000
  212. 22510 IF ANS(P16) = -999 THEN 22610
  213. 22515 ANS = ANS(P16)
  214. 22520 RT = P15
  215. 22530 QN = P16
  216. 22540 FV = P17!
  217. 22550 PB = P18
  218. 22560 GOSUB 23000
  219. 22610 IF ANS(P20) = -999 THEN 22710
  220. 22615 ANS = ANS(P20)
  221. 22620 RT = P19
  222. 22630 QN = P20
  223. 22640 FV = P21!
  224. 22650 PB = P22
  225. 22660 GOSUB 23000
  226. 22710 IF ANS(P24) = -999 THEN 22800
  227. 22715 ANS = ANS(P24)
  228. 22720 RT = P23
  229. 22730 QN = P24
  230. 22740 FV = P25!
  231. 22750 PB = P26
  232. 22760 GOSUB 23000
  233. 22800 REM REDUCE EVALUATION TO PARTIAL CHECK
  234. 22810 IF EVAL(RN) = 0 THEN 22880
  235. 22820 IF EVAL(RN) = 1 THEN 22880
  236. 22830 IF ANS(P8) = -999 THEN EVAL(RN) = 1
  237. 22835 IF P11 = 0 THEN 22880
  238. 22840 IF ANS(P12) = -999 THEN EVAL(RN) = 1
  239. 22845 IF P15 = 0 THEN 22880
  240. 22850 IF ANS(P16) = -999 THEN EVAL(RN) = 1
  241. 22855 IF P19 = 0 THEN 22880
  242. 22860 IF ANS(P20) = -999 THEN EVAL(RN) = 1
  243. 22865 IF P23 = 0 THEN 22880
  244. 22870 IF ANS(P24) = -999 THEN EVAL(RN) = 1
  245. 22880 IF ABS(P5) > 1 THEN GOTO 22910
  246. 22890 IF DCHKFLG = 5 THEN 22950
  247. 22900 RETURN
  248. 22910 REM COMPUTE PROBABILITY FOR CONTINUED PROBLEMS
  249. 22915 RNH = RN
  250. 22918 DCHKFLG = 5
  251. 22920 RN = ABS(P5)
  252. 22930 GOSUB 54200
  253. 22935 RN = RNH
  254. 22940 GOTO 22310
  255. 22950 REM RETURN FOR CONTINUED PROBLEMS 
  256. 22960 RN = RNH
  257. 22970 GOSUB 54200
  258. 22980 RETURN
  259. 23000 REM CALCULATE
  260. 23010 TEST = 0
  261. 23020 IF RT = 0 THEN RETURN
  262. 23100 ON RT GOSUB 23500,23600,23700,23800:REM PRINT RT;QN;FV;PB N;TEST;"-"
  263. 23120 IF TEST = 0 THEN RETURN
  264. 23130 IF PB < 0 THEN 23300
  265. 23140 PFOR(RN) = INT(PFOR(RN) + (100 - PFOR(RN))*(PB/100))
  266. 23150 RETURN
  267. 23300 PA(RN) = INT(PA(RN) + (100 - PA(RN))*ABS(PB/100))
  268. 23310 RETURN
  269. 23500 REM EQUALS TEST
  270. 23510 IF ANS = FV THEN TEST = 1
  271. 23520 RETURN
  272. 23600 REM LESS THEN TEST
  273. 23610 IF ANS < FV THEN TEST = 1
  274. 23620 RETURN
  275. 23700 IF ANS > FV THEN TEST = 1
  276. 23710 RETURN
  277. 23800 REM LESS THEN TEST
  278. 23810 IF ANS <> FV THEN TEST = 1
  279. 23820 RETURN
  280. 24000 REM ***** PRINT NODE
  281. 24100 LPRTFLG = 1
  282. 24110 PRINT " MAKE SURE YOUR PRINTER IS ON "
  283. 24120 PRINT " PRESS ANY KEY TO CONTINUE "
  284. 24130 IF INKEY$ = "" THEN 24130
  285. 24200 GOTO 20010
  286. 30000 REM ASK SEARCH QUESTIONS
  287. 30100 RN = ABS(DT#)
  288. 30101 IF SB(RN) > 3000 THEN 20000
  289. 30102 HRN = RN
  290. 30105 EVAL(RN) = 2
  291. 30110 GOSUB 54200
  292. 30120 RN = P8
  293. 30130 GOSUB 54000
  294. 30140 PRINT KTQ;P8;TAB(10) Q$;
  295. 30145 IF ANS(P8) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P8);
  296. 30150 R = P7
  297. 30160 GOSUB 32000
  298. 30170 PRINT P9!;"  ";TAB(75)P10
  299. 30180 GOSUB 17000
  300. 30200 IF P11 = 0 THEN 31000
  301. 30210 RN = P12
  302. 30220 GOSUB 54000
  303. 30230 PRINT KTQ;P12;TAB(10) Q$;
  304. 30245 IF ANS(P12) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P12);
  305. 30250 R = P11
  306. 30260 GOSUB 32000
  307. 30270 PRINT P13!;"  ";TAB(75)P14
  308. 30280 GOSUB 17000
  309. 30300 IF P15 = 0 THEN 31000
  310. 30310 RN = P16
  311. 30320 GOSUB 54000
  312. 30330 PRINT KTQ;P16;TAB(10) Q$;
  313. 30345 IF ANS(P16) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P16);
  314. 30350 R = P15
  315. 30360 GOSUB 32000
  316. 30370 PRINT P17!;"  ";TAB(75) P18
  317. 30380 GOSUB 17000
  318. 30400 IF P19 = 0 THEN 31000
  319. 30410 RN = P20
  320. 30420 GOSUB 54000
  321. 30430 PRINT KTQ;P20;TAB(10) Q$;
  322. 30445 IF ANS(P20) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P20);
  323. 30450 R = P19
  324. 30460 GOSUB 32000
  325. 30470 PRINT P21!;"  ";TAB(75) P22
  326. 30480 GOSUB 17000
  327. 30500 IF P23 = 0 THEN 31000
  328. 30510 RN = P24
  329. 30520 GOSUB 54000
  330. 30530 PRINT KTQ;P24;TAB(10) Q$;
  331. 30545 IF ANS(P24) = -999 THEN PRINT TAB(62)"NA "; ELSE PRINT TAB(61) ANS(P24);
  332. 30550 R = P23
  333. 30560 GOSUB 32000
  334. 30570 PRINT P25!;"  ";TAB(75) P26
  335. 30580 GOSUB 17000
  336. 30600 GOTO  32300
  337. 31000 PRINT "WHAT QUESTION ? ";"1 TO ";KTQ;", 0 for NONE,  THEN ENTER THE ANSWER"
  338. 31100 GOSUB 60000
  339. 31110 IF DT# < 1 THEN 33000
  340. 31115 IF DT# > KTQ THEN 31000
  341. 31120 H = ACT(DT#)
  342. 31122 NEFLG = 5
  343. 31130 GOSUB 60120
  344. 31132 IF DT# = -999 AND NFLG = 0 THEN 10600
  345. 31133 NEFLG = 0
  346. 31140 ANS(H) = DT#
  347. 31500 GOTO 31000
  348. 31600 REM CHECK FOR ACCEPTABLE QUESTION TO ANSWER
  349. 31605 TEST = 0
  350. 31610 FOR T1 = 1 TO KTQ
  351. 31620 IF H = ACT(T1) THEN TEST = 1
  352. 31630 NEXT T1
  353. 31640 IF TEST = 0 THEN 31000
  354. 31650 GOTO 31130
  355. 32000 REM PRINT RULE
  356. 32100 IF R = 1 THEN PRINT "=";
  357. 32110 IF R = 2 THEN PRINT "<";
  358. 32120 IF R = 3 THEN PRINT ">";
  359. 32130 IF R = 4 THEN PRINT "<>";
  360. 32140 RETURN
  361. 32200 IF R = 1 THEN LPRINT "=";
  362. 32210 IF R = 2 THEN LPRINT "<";
  363. 32220 IF R = 3 THEN LPRINT ">";
  364. 32230 IF R = 4 THEN LPRINT "<>";
  365. 32240 RETURN
  366. 32300 REM ***** ADDITIONAL RULES FOR THE PROBLEM
  367. 32310 IF ABS(P5) < 2 THEN 31000
  368. 32320 RN = ABS(P5)
  369. 32330 GOTO 30110
  370. 32400 REM ***** ADDITIONAL RULES FOR THE PROBLEM
  371. 32410 IF ABS(P5) < 2 THEN 34600
  372. 32420 RN = ABS(P5)
  373. 32430 GOTO 34110
  374. 33000 REM
  375. 33100 PB = HRN
  376. 33110 GOSUB 22000
  377. 33115 IF SB(HRN) < 0 THEN 33130
  378. 33120 IF PFOR(HRN) > 40 AND PA(HRN) <40 THEN ND=HRN
  379. 33130 GOTO 20000
  380. 34000 REM PRINT ON PAPER QUESTIONS
  381. 34100 RN = T
  382. 34102 HRN = RN
  383. 34110 GOSUB 54200
  384. 34120 RN = P8
  385. 34130 GOSUB 54000
  386. 34140 LPRINT P8;TAB(8) Q$;
  387. 34145 IF ANS(P8) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P8);
  388. 34150 R = P7
  389. 34160 GOSUB 32200
  390. 34170 LPRINT P9!;"  ";P10
  391. 34180 GOSUB 17200
  392. 34200 IF P11 = 0 THEN 34600
  393. 34210 RN = P12
  394. 34220 GOSUB 54000
  395. 34230 LPRINT P12;TAB(8) Q$;
  396. 34245 IF ANS(P12) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P12);
  397. 34250 R = P11
  398. 34260 GOSUB 32200
  399. 34270 LPRINT P13!;"  ";P14
  400. 34280 GOSUB 17200
  401. 34300 IF P15 = 0 THEN 34600
  402. 34310 RN = P16
  403. 34320 GOSUB 54000
  404. 34330 LPRINT P16;TAB(8) Q$;
  405. 34345 IF ANS(P16) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P16);
  406. 34350 R = P15
  407. 34360 GOSUB 32200
  408. 34370 LPRINT P17!;"  ";P18
  409. 34380 GOSUB 17200
  410. 34400 IF P19 = 0 THEN 34600
  411. 34410 RN = P20
  412. 34420 GOSUB 54000
  413. 34430 LPRINT P20;TAB(8) Q$;
  414. 34445 IF ANS(P20) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P20);
  415. 34450 R = P19
  416. 34460 GOSUB 32200
  417. 34470 LPRINT P21!;"  ";P22
  418. 34480 GOSUB 17200
  419. 34500 IF P23 = 0 THEN 34600
  420. 34510 RN = P24
  421. 34520 GOSUB 54000
  422. 34530 LPRINT P24;TAB(8) Q$;
  423. 34545 IF ANS(P24) = -999 THEN LPRINT TAB(60)"NA"; ELSE LPRINT TAB(60) ANS(P24);
  424. 34550 R = P23
  425. 34560 GOSUB 32200
  426. 34570 LPRINT P25!;"  ";P26
  427. 34580 GOSUB 17200
  428. 34590 GOTO 32400
  429. 34600 RETURN
  430. 35000 REM SAVE 
  431. 35010 GOSUB 500
  432. 35100 PRINT "  WHAT FILE NAME DO YOU WANT TO SAVE THIS ANALYSIS UNDER"
  433. 35110 PRINT "          Eight Characters or less no spaces "
  434. 35115 PRINT "Just Press return if you do not want to save at this time"
  435. 35120 MAX = 8
  436. 35130 GOSUB 62030
  437. 35135 IF A$ = "" THEN 20000
  438. 35140 GOSUB 8000
  439. 35150 IF TEST = 4 THEN 35000
  440. 35160 CLOSE #3
  441. 35170 OPEN "O",#3,A$
  442. 35180 WRITE #3, MRN1,MRN2,MRN3
  443. 35190 FOR T = 1 TO MRN1
  444. 35200 WRITE #3, ANS(T)
  445. 35210 NEXT T
  446. 35220 FOR T = 1 TO MRN2
  447. 35230 WRITE #3, PFOR(T),PA(T),EVAL(T)
  448. 35240 NEXT T
  449. 35245 CLOSE #3
  450. 35250 GOSUB 53300
  451. 35260 GOTO 20000
  452. 36000 REM READ SAVED FILES
  453. 36100 GOSUB 500
  454. 36110 PRINT "DIRECTORY OF ALL FILES ON THE DEFAULT DISK DRIVE :"
  455. 36115 PRINT ""
  456. 36120 FILES
  457. 36130 PRINT "ENTER THE NAME OF THE FILE THAT YOU PREVIOUSLY STORED AN ANALYSIS ON"
  458. 36135 PRINT ""
  459. 36140 MAX = 8
  460. 36150 GOSUB 62030
  461. 36160 GOSUB 8000
  462. 36165 IF TEST = 4 THEN 36000
  463. 36170 OPEN "I",#3,A$
  464. 36180 INPUT #3, MRN1,MRN2,MRN3
  465. 36190 FOR T = 1 TO MRN1
  466. 36200 INPUT #3, ANS(T)
  467. 36210 NEXT T
  468. 36220 FOR T = 1 TO MRN2
  469. 36230 INPUT #3, PFOR(T),PA(T),EVAL(T)
  470. 36240 NEXT T
  471. 36245 CLOSE #3
  472. 36260 RETURN
  473. 37000 REM PRINT OUT ALL PROBLEMS
  474. 37010 NBRT = 0
  475. 37100 GOSUB 500
  476. 37110 PRINT "                    PRINT OUT PROBLEMS  "
  477. 37115 PRINT ""
  478. 37120 PRINT "  DO YOU WANT TO CHECK ALL PROBLEMS OR ONLY THOSE SEARCHED ?"
  479. 37125 PRINT "            0 - RETURN"
  480. 37130 PRINT "            1 - ONLY THOSE AREADY SEARCHED "
  481. 37140 PRINT "            2 - ALL - TAKES A LOT LONGER "
  482. 37150 GOSUB 60000
  483. 37155 IF DT# < 0 OR DT# > 2 THEN 37100
  484. 37160 IF DT# = 0 THEN 20000
  485. 37170 PEVAL = DT#
  486. 37200 PRINT " PRINT OUT ALL PROBLEMS WITH A PROBABLILY FOR HIGHER THEN "
  487. 37210 PRINT "            ENTER A NUMBER FROM  -1  TO  100"
  488. 37220 GOSUB 60060
  489. 37222 IF DT# = -1 THEN 37230
  490. 37225 IF DT# < 0 OR DT# > 100 THEN 37200
  491. 37230 FMIN = DT#
  492. 37240 PRINT "      AND WHOSE PROBABLITY AGAINST IS LOWER THEN "
  493. 37250 PRINT "            ENTER A NUMBER FROM  0  TO  101 "
  494. 37260 GOSUB 60060
  495. 37265 IF DT# < 0 OR DT# > 101 THEN 37240
  496. 37270 AMAX = DT#
  497. 37300 PRINT "         DO YOU WANT THE PROBLEMS "
  498. 37310 PRINT " 1 - SHOWN ON THE SCREEN ONLY "
  499. 37320 PRINT " 2 - PRINTED ON PAPER AND SHOWN ON THE SCREEN"
  500. 37325 PRINT " 3 - PRINTED ON PAPER WITH SUPPORTING RULES "
  501. 37330 GOSUB 60000
  502. 37340 IF DT# < 1 OR DT# > 3 THEN 37300
  503. 37350 PPRT = DT#
  504. 37400 REM ***** START LOOP 
  505. 37410 FOR T = 1 TO MRN2
  506. 37420 IF PEVAL = 1 AND EVAL(T) = 0 THEN 37600
  507. 37422 PB = T
  508. 37424 GOSUB 22000
  509. 37430 IF PFOR(T) > FMIN AND PA(T) < AMAX THEN GOSUB 38000
  510. 37600 NEXT T
  511. 37610 GOTO 39000
  512. 38000 REM ****  SUBROUTINE FOR PROBLEMS THAT MEET THE LIMITS
  513. 38005 NBRT = NBRT + 1
  514. 38006 IF NBRT > 250 THEN NBRT = 250
  515. 38007 PBM(NBRT) = T
  516. 38010 RN = T
  517. 38020 GOSUB 54200
  518. 38025 IF P5 < 0  THEN RETURN
  519. 38030 PRINT T;P1$; TAB(55) PFOR(T); TAB(60) PA(T)
  520. 38040 IF PPRT > 1 THEN LPRINT T;P1$;TAB(55) PFOR(T);TAB(60) PA(T)
  521. 38050 RN = P4
  522. 38060 GOSUB 54427
  523. 38065 GOSUB 40000
  524. 38067 RN = P4
  525. 38068 GOSUB 54427
  526. 38070 PRINT P4;TAB(6)"SOLUTION ";S1$;" SUCCESS ";SS
  527. 38080 IF PPRT > 1 THEN LPRINT P4;TAB(6)"SOLUTION ";S1$;" SUCCESS ";SS
  528. 38085 IF PPRT = 3 THEN GOSUB 34000
  529. 38200 RETURN
  530. 38218 S2H = S2
  531. 39000 REM CONT
  532. 39010 IF NBRT = 250 THEN PRINT "  THERE ARE TOO MANY PROBLEMS TO DO A SEARCH "
  533. 39020 IF NBRT = 250 THEN PRINT "  A SEARCH MAY ONLY BE CONDUCTED ON 249 OR LESS PROBLEMS "
  534. 39100 PRINT "DO YOU WANT TO CONDUCT A SEARCH FOR ALL AND MULTIPLE SOLUTIONS ?"
  535. 39110 PRINT "               1  - YES SEARCH "
  536. 39120 PRINT "               2  - NO "
  537. 39130 GOSUB 60000
  538. 39140 IF DT# < 1 OR DT# > 2 THEN 39100
  539. 39150 IF DT# = 2 THEN 20000
  540. 39200 REM  **** START SEARCH 
  541. 39210 FOR S = 1 TO MRN3
  542. 39215 NPRT = 1
  543. 39217 RN = S
  544. 39220 GOSUB 54427
  545. 39225 IF S2 < 1 THEN 39290
  546. 39230 FOR N = 1 TO NBRT 
  547. 39235 IF ABS(S2H) > 1 THEN RN = S
  548. 39237 IF ABS(S2H) > 1 THEN GOSUB 54427
  549. 39240 T = PBM(N) 
  550. 39250 SS = 0
  551. 39260 GOSUB 40000
  552. 39270 IF ABS(SS) > 0 THEN GOSUB 39500
  553. 39280 NEXT N
  554. 39290 NEXT S
  555. 39300 PRINT "*******  PRESS ANY KEY TO CONTINUE  *******"
  556. 39310 IF INKEY$ = "" THEN 39310
  557. 39480 GOTO 20000
  558. 39500 REM PRINT PROBLEM
  559. 39502 RN = S
  560. 39504 GOSUB 54427
  561. 39510 RN = T
  562. 39520 GOSUB 54200
  563. 39530 IF NPRT = 1 THEN PRINT S;"SOLUTION ";S1$;" SOLVES :"
  564. 39535 IF NPRT = 1 AND PPRT > 1 THEN LPRINT S;"SOLUTION ";S1$;" SOLVES :"
  565. 39540 PRINT T;TAB(6) P1$;" SUCCESS RATE";SS
  566. 39545 IF PPRT > 1 THEN LPRINT T;TAB(6) P1$;" SUCCESS RATE";SS
  567. 39550 NPRT = 0
  568. 39560 RETURN
  569. 39980 GOTO 20000
  570. 40000 REM * DETERMINE PROBABILIYTY OF SUCCESS
  571. 40100 IF T = S4 THEN SS = S5
  572. 40110 IF T = S6 THEN SS = S7
  573. 40120 IF T = S8 THEN SS = S9
  574. 40130 IF T = S10 THEN SS = S11
  575. 40140 IF T = S12 THEN SS = S13
  576. 40145 IF ABS(S2) > 1 THEN GOTO 40200
  577. 40150 RETURN
  578. 40200 REM *** SOLUTIONS CONTINUED
  579. 40210 RN = ABS(S2)
  580. 40215 S2H = S2
  581. 40220 GOSUB 54427
  582. 40230 GOTO 40000
  583. 41000 REM ** PRINT OUT QUESTIONS
  584. 41100 GOSUB 500
  585. 41110 PRINT "  DO YOU WANT "
  586. 41120 PRINT "   1 - ONLY QUESTIONS ANSWERED SHOWN"
  587. 41130 PRINT "   2 - ALL QUESTIONS SHOWN "
  588. 41140 GOSUB 60000
  589. 41150 IF DT# < 0 OR DT# > 2 THEN 41000
  590. 41155 IF DT# = 0 THEN 20000
  591. 41160 QT = DT#
  592. 41170 PRINT "  DO YOU WANT "
  593. 41180 PRINT "   1 - SHOWN ON THE SCREEN ONLY "
  594. 41190 PRINT "   2 - SHOWN ON THE SCREEN AND PRINTED ON PAPER"
  595. 41195 PRINT "       MAKE SURE YOUR PRINTER IS ON "
  596. 41200 GOSUB 60000
  597. 41210 IF DT# < 1 OR DT# > 2 THEN 41170
  598. 41220 PRTFLG = DT#
  599. 41300 REM *** START LOOP
  600. 41310 FOR T = 1 TO MRN1
  601. 41315 IF INKEY$ >< "" THEN GOSUB 42000
  602. 41320 IF ANS(T) = -999 AND QT = 1 THEN 41700
  603. 41330 RN = T
  604. 41340 GOSUB 54000
  605. 41345 IF Q3 < 0 THEN 41700
  606. 41350 PRINT T;TAB(5);Q$;
  607. 41355 IF ANS(T) = -999 THEN PRINT TAB(60) "NA" ELSE PRINT TAB(60) ANS(T)
  608. 41360 IF PRTFLG = 2 THEN LPRINT T;TAB(5);Q$;
  609. 41362 IF PRTFLG = 2 THEN GOSUB 41800 
  610. 41364 GOSUB 17000
  611. 41365 REM         IF PRTFLG = 2 THEN GOSUB 17200
  612. 41700 NEXT T
  613. 41710 PRINT " PRESS ANY KEY TO CONTINUE "
  614. 41720 IF INKEY$ = "" THEN 41720
  615. 41730 GOTO 20000
  616. 41800 IF ANS(T) = -999 THEN LPRINT TAB(60) "NA" ELSE LPRINT TAB(60) ANS(T)
  617. 41810 RETURN
  618. 42000 REM ******  PAUSE SUBROUTINE  
  619. 42100 PRINT "  PRESS ANY KEY TO CONTINUE "
  620. 42110 IF INKEY$ = "" THEN 42110
  621. 42120 RETURN
  622. 50000 REM **********  INTRO
  623. 50010 GOSUB 500
  624. 50100 PRINT "          E X P E R T   S Y S T E M   P R O G R A M    1.0   "
  625. 50105 PRINT ""
  626. 50110 PRINT "         Copyright 1984 by Potomac Pacific Engineering Inc."
  627. 50120 PRINT ""
  628. 50130 PRINT "This program is licensed FREE to all users with some restrictions"
  629. 50165 PRINT "        See the manual for more information on the license."
  630. 50167 PRINT ""
  631. 50950 PRINT "***********************  DO YOU WANT TO  ************************"
  632. 50960 PRINT "                  1 - START A NEW PROBLEM "
  633. 50970 PRINT "                  2 - CONTINUE WITH A PROIR ANALYSIS "
  634. 50975 PRINT "*************** ENTER THE NUMBER THEN PRESS RETURN  *************"
  635. 50980 GOSUB 60000
  636. 50985 IF DT# <1 OR DT# > 2 THEN 50000
  637. 50990 RETURN
  638. 51000 REM ***** EXIT TO SYSTEM
  639. 51010 GOTO 51200
  640. 51100 GOSUB 500
  641. 51110 CLOSE
  642. 51120 PRINT " -BYE, Have a nice day"
  643. 51130 END
  644. 51200 REM WANRING 
  645. 51210 GOSUB 500
  646. 51220 PRINT "  YOU WILL LOSE YOUR ANSWERS UNLESS YOU HAVE PREVIOUSLY SAVED THEM"
  647. 51230 PRINT ""
  648. 51240 PRINT "                    DO YOU WANT TO :"
  649. 51250 PRINT "                  1 - EXIT THE PROGRAM "
  650. 51260 PRINT "                  2 - RETURN TO OPTIONS "
  651. 51270 PRINT "            ENTER THE NUMBER THEN PRESS RETURN "
  652. 51280 GOSUB 60000
  653. 51290 IF DT# < 1 OR DT# > 2 THEN 51280
  654. 51300 ON DT# GOTO 51100,19000
  655. 52000 REM ***** INTRO 1
  656. 52010 GOSUB 500
  657. 52100 PRINT "        Put the Expert System disk the default disk drive  "
  658. 52110 PRINT ""
  659. 52120 PRINT "          *****  THEN PRESS ANY KEY TO CONTINUE  *****"
  660. 52130 PRINT ""
  661. 52140 PRINT "      The Expert System  ONLY uses the Expert System Disk "
  662. 52150 PRINT "Keep it in the default disk drive at all times during this program."
  663. 52200 IF INKEY$ = "" GOTO 52200
  664. 52210 RETURN
  665. 53000 REM OPEN AND FIELD FILES
  666. 53100 OPEN "R",#1,"QUESTION",56
  667. 53110 FIELD #1, 50 AS Q$,2 AS Q2$,2 AS Q3$,2 AS Q4$
  668. 53200 OPEN "R",#2,"PROBLEMS",120
  669. 53210 FIELD #2, 50 AS P1$,2 AS P2$,2 AS P3$,2 AS P4$,2 AS P5$,2 AS P6$, 2 AS P7$, 2 AS P8$,4 AS P9$,4 AS P10$,2 AS P11$,2 AS P12$,4 AS P13$,4 AS P14$,2 AS P15$,2 AS P16$
  670. 53220 FIELD #2,88 AS DY$,4 AS P17$,4 AS P18$,2 AS P19$,2 AS P20$,4 AS P21$,4 AS P22$,2 AS P23$,2 AS P24$,4 AS P25$,4 AS P26$
  671. 53300 OPEN "R",#3,"SOLUTION",74
  672. 53310 FIELD #3, 50 AS S1$, 2 AS S2$,2 AS S3$,2 AS S4$,2 AS S5$,2 AS S6$,2 AS S7$,2 AS S8$,2 AS S9$,2 AS S10$,2 AS S11$,2 AS S12$,2 AS S13$
  673. 53350 REM GET MAXIMUM NUMBER OF RECORDS
  674. 53360 MRN1 = LOF(1) / 56
  675. 53370 MRN2 = LOF(2) / 120
  676. 53380 MRN3 = LOF(3) / 74
  677. 53400 RETURN
  678. 54000 REM get and convert files
  679. 54010 KTQ = KTQ + 1
  680. 54100 REM question file
  681. 54105 GET #1,RN
  682. 54110 Q2 = CVI(Q2$)
  683. 54120 Q3 = CVI(Q3$)
  684. 54130 Q4 = CVI(Q4$)
  685. 54140 ACT(KTQ) = RN
  686. 54160 IF KTQ > 24 THEN KTQ = 1
  687. 54170 RETURN
  688. 54200 REM PROBLEM FILE
  689. 54203 GET #2,RN
  690. 54205 P2 = CVI(P2$)
  691. 54210 P3 = CVI(P3$)
  692. 54220 P4 = CVI(P4$)
  693. 54230 P5 = CVI(P5$)
  694. 54240 P6 = CVI(P6$)
  695. 54250 P7 = CVI(P7$)
  696. 54260 P8 = CVI(P8$)
  697. 54270 P9!= CVS(P9$)
  698. 54280 P10 = CVS(P10$)
  699. 54290 P11 = CVI(P11$)
  700. 54300 P12 = CVI(P12$)
  701. 54310 P13!= CVS(P13$)
  702. 54320 P14 = CVS(P14$)
  703. 54330 P15 = CVI(P15$)
  704. 54340 P16 = CVI(P16$)
  705. 54350 P17!= CVS(P17$)
  706. 54360 P18 = CVS(P18$)
  707. 54370 P19 = CVI(P19$)
  708. 54380 P20 = CVI(P20$)
  709. 54390 P21!= CVS(P21$)
  710. 54400 P22 = CVS(P22$)
  711. 54410 P23 = CVI(P23$)
  712. 54420 P24 = CVI(P24$)
  713. 54422 P25!= CVS(P25$)
  714. 54424 P26 = CVS(P26$)
  715. 54426 RETURN
  716. 54427 GET #3, RN
  717. 54428 S2 = CVI(S2$)
  718. 54430 S3 = CVI(S3$)
  719. 54440 S4 = CVI(S4$)
  720. 54450 S5 = CVI(S5$)
  721. 54460 S6 = CVI(S6$)
  722. 54470 S7 = CVI(S7$)
  723. 54480 S8 = CVI(S8$)
  724. 54490 S9 = CVI(S9$)
  725. 54500 S10 = CVI(S10$)
  726. 54510 S11 = CVI(S11$)
  727. 54520 S12 = CVI(S12$)
  728. 54530 S13 = CVI(S13$)
  729. 54540 RETURN
  730. 60000 REM *******  INTEGER LESS THEN 100 CHECK  ********
  731. 60010 MAX = 2
  732. 60020 ACT$ = "1234567890=<>^"
  733. 60030 IF NE = 0 THEN ACT$ = "1234567890"
  734. 60040 PRINT ">__<";
  735. 60050 GOTO 60240
  736. 60060 REM *******  INTEGER *******                        
  737. 60070 MAX = 8
  738. 60080 ACT$ = "1234567890-+,=<>^"
  739. 60090 IF NE = 0 THEN ACT$ = "1234567890-+,"
  740. 60100 PRINT ">________<";
  741. 60110 GOTO 60240
  742. 60120 REM *******  SINGLE PRECISION  *******                        
  743. 60130 MAX = 10
  744. 60140 ACT$ = "1234567890-+,.%$=<>^"
  745. 60150 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  746. 60160 PRINT ">__________<";
  747. 60170 GOTO 60240
  748. 60180 REM *******  DOUBLE PRECISION  *******                        
  749. 60190 MAX = 20
  750. 60200 ACT$ = "1234567890-+,.%$=<>^"
  751. 60210 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  752. 60220 PRINT ">____________________<";
  753. 60230 GOTO 60240
  754. 60240 REM ********** NUMBER CHECK **********
  755. 60245 NFLG = 0
  756. 60250 A$ = ""
  757. 60260 K$(20) = " "
  758. 60270 KTMAX = 0
  759. 60280 FOR T9 = 1 TO MAX
  760. 60290 K$(T9) = " "
  761. 60300 NEXT T9
  762. 60310 DIG$ = "1234567890."
  763. 60320 DOTFLG = 0
  764. 60330 T2 = MAX + 1
  765. 60340 FOR T6 = 1 TO T2
  766. 60350 PRINT CHR$(CH);
  767. 60360 NEXT T6
  768. 60370 IF INKEY$ = "" GOTO 60380 ELSE GOTO 60370
  769. 60380 KT = 0
  770. 60390 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  771. 60400 KT = KT + 1
  772. 60410 REM     
  773. 60420 W$ = INKEY$
  774. 60425 IF W$ = "N" OR W$ = "n" THEN GOTO 63100
  775. 60430 IF W$ = "" GOTO 60420
  776. 60440 C = ASC(W$)
  777. 60450 IF C = 0 THEN GOSUB 61900
  778. 60460 IF C = 13 GOTO 60580
  779. 60470 IF C = 17 OR C = 8 GOTO 61150
  780. 60480 IF C = 19 GOTO 60670
  781. 60490 IF C = 4 GOTO 60720
  782. 60500 IF C = 6 GOTO 60780
  783. 60510 IF C = 1 GOTO 60960
  784. 60520 IF KT > MAX GOTO 60410
  785. 60530 IF INSTR(ACT$,W$) = 0 GOTO 61230
  786. 60540 K$(KT) = W$
  787. 60550 PRINT K$(KT);
  788. 60560 IF KT > KTMAX THEN KTMAX = KT
  789. 60570 GOTO 60400
  790. 60580 REM **********  RETURN  **********
  791. 60590 FOR T9 = 1 TO KTMAX
  792. 60600 A$ = A$ + K$(T9)
  793. 60610 NEXT T9
  794. 60620 IF KTMAX = 0 THEN PRINT "1"
  795. 60630 IF KTMAX = 0 THEN DT# = 1
  796. 60640 IF KTMAX = 0 THEN RETURN
  797. 60650 IF SPRT >< 5 THEN PRINT ""
  798. 60655 SPRT = 0
  799. 60660 GOTO 61260
  800. 60670 REM ********* MOVE CURSE BACK ********
  801. 60680 IF KT = 1 GOTO 60410
  802. 60690 KT = KT - 1
  803. 60700 PRINT CHR$(CH);
  804. 60710 GOTO 60410
  805. 60720 REM ********* MOVE CURSER FORWARD *********
  806. 60730 IF KT >= MAX GOTO 60410
  807. 60740 IF KT > (KTMAX + 1) GOTO 60410
  808. 60750 PRINT K$(KT);
  809. 60760 KT = KT + 1
  810. 60770 GOTO 60410
  811. 60780 REM ********** INSERT ***********
  812. 60790 IF KT > KTMAX GOTO 60410
  813. 60800 X9 = MAX
  814. 60810 WHILE X9 > KT
  815. 60820 X9 = X9 - 1
  816. 60830 K$(X9 + 1) = K$(X9)
  817. 60840 WEND 
  818. 60850 K$(KT) = " "
  819. 60860 KTMAX = KTMAX + 1
  820. 60870 IF KTMAX > MAX THEN KTMAX = MAX
  821. 60880 FOR T9 = KT TO KTMAX
  822. 60890 PRINT K$(T9);
  823. 60900 NEXT T9
  824. 60910 T6 = (KTMAX - KT) + 1
  825. 60920 FOR T7 = 1 TO T6
  826. 60930 PRINT CHR$(CH);
  827. 60940 NEXT T7
  828. 60950 GOTO 60410
  829. 60960 REM ********** DELETE ***********
  830. 60970 IF KT > KTMAX GOTO 60410
  831. 60980 IF KTMAX = 1 GOTO 60410
  832. 60990 K$(MAX + 1) = ""
  833. 61000 X9 = KT 
  834. 61010 WHILE X9 <= MAX
  835. 61020 K$(X9) = K$(X9 + 1)
  836. 61030 X9 = X9 + 1
  837. 61040 WEND 
  838. 61050 KTMAX = KTMAX - 1
  839. 61060 FOR T9 = KT TO KTMAX
  840. 61070 PRINT K$(T9);
  841. 61080 NEXT T9
  842. 61090 PRINT "_";
  843. 61100 T7 = (KTMAX - KT) + 2
  844. 61110 FOR T8 = 1 TO T7
  845. 61120 PRINT CHR$(CH);
  846. 61130 NEXT T8
  847. 61140 GOTO 60410
  848. 61150 REM ********* BACKSPACE ********
  849. 61160 IF KT = 1 GOTO 60410
  850. 61170 KT = KT - 1
  851. 61180 PRINT CHR$(CH);
  852. 61190 K$(KT) = " " 
  853. 61200 PRINT "_";
  854. 61210 PRINT CHR$(CH);
  855. 61220 GOTO 60410
  856. 61230 REM *******  INPUT NOT ACCEPTABLE  ********
  857. 61240 PRINT CHR$(7);
  858. 61250 GOTO 60420
  859. 61260 REM ********* CLEAR STRINGS ********
  860. 61270 MAX = LEN(A$)
  861. 61280 D2$ = ""
  862. 61290 D1$ = ""
  863. 61300 DFLG = 0
  864. 61310 FOR Q93 = 1 TO MAX
  865. 61320 R$ = MID$(A$,Q93,1)
  866. 61330 IF INSTR(DIG$,R$) = 0 GOTO 61400
  867. 61340 IF R$ = "." OR DFLG = 1 GOTO 61380
  868. 61350 IF DFLG = 1 GOTO 61380
  869. 61360 D2$ = D2$ + R$
  870. 61370 GOTO 61400
  871. 61380 D1$ = D1$ + R$
  872. 61390 DFLG = 1
  873. 61400 NEXT Q93
  874. 61410 DA# = VAL(D2$)
  875. 61420 D1# = VAL(D1$)
  876. 61430 DT# = DA# + D1#
  877. 61440 IF K$(1) = "-" THEN DT# =  -DT#   
  878. 61450 RETURN
  879. 61900 REM ****** CHECK FOR ASC0
  880. 61910 SS4$ = INKEY$
  881. 61915 IF SS4$ = "" THEN RETURN
  882. 61920 C2 =  ASC(SS4$)
  883. 61930 IF C2 = 83 THEN C = 1
  884. 61940 IF C2 = 82 THEN C = 6
  885. 61950 IF C2 = 75 THEN C = 19
  886. 61960 IF C2 = 77 THEN C = 4 
  887. 61970 RETURN
  888. 62000 REM **********  ALPHANUMERIC CHECK  **************
  889. 62010 REM   MAX = FL(A,Q)
  890. 62020 GOTO 62040
  891. 62030 REM ********  MAX SET IN PROGRAM  ********
  892. 62040 A$ = ""
  893. 62050 PRINT ">"; 
  894. 62060 FOR N9 = 1 TO MAX
  895. 62070 K$(N9) = ""
  896. 62080 PRINT "_";
  897. 62090 NEXT N9
  898. 62100 PRINT "<";
  899. 62110 T2 = MAX + 1
  900. 62120 FOR T4 = 1 TO T2
  901. 62130 PRINT CHR$(CH);
  902. 62140 NEXT T4
  903. 62150 KT = 0
  904. 62160 KTMAX = 1
  905. 62170 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  906. 62180 KT = KT + 1
  907. 62190 PRINT TAB(KT+1)"";
  908. 62200 K$ = INKEY$
  909. 62210 IF K$ = "" GOTO 62200
  910. 62220 C = ASC(K$)
  911. 62230 IF C = 0 THEN GOSUB 61900
  912. 62240 IF C = 13 GOTO 62350
  913. 62250 IF C = 17 OR C = 8 GOTO 62920
  914. 62260 IF C = 19 GOTO 62450
  915. 62270 IF C = 4  GOTO 62500
  916. 62280 IF C = 6 GOTO 62560
  917. 62290 IF C = 1 GOTO 62730
  918. 62300 IF KT > MAX GOTO 62190
  919. 62310 K$(KT) = K$
  920. 62320 PRINT K$(KT);
  921. 62330 IF KT > KTMAX THEN KTMAX = KT
  922. 62340 GOTO 62180
  923. 62350 REM **********  RETURN  **********
  924. 62360 FOR T9 = 1 TO MAX
  925. 62370 A$ = A$ + K$(T9)
  926. 62420 NEXT T9
  927. 62430 PRINT "" 
  928. 62440 RETURN  
  929. 62450 REM ********* MOVE CURSE BACK ********
  930. 62460 IF KT = 1 GOTO 62190
  931. 62470 KT = KT - 1
  932. 62480 PRINT CHR$(CH);
  933. 62490 GOTO 62190
  934. 62500 REM ********* MOVE CURSER FORWARD *********
  935. 62510 IF KT >= MAX GOTO 62190
  936. 62520 IF KT >  KTMAX  GOTO 62190
  937. 62530 PRINT K$(KT);
  938. 62540 KT = KT + 1
  939. 62550 GOTO 62190
  940. 62560 REM ********** INSERT ***********
  941. 62570 X9 = MAX
  942. 62580 WHILE X9 > KT
  943. 62590 X9 = X9 - 1
  944. 62600 K$(X9 + 1) = K$(X9)
  945. 62610 WEND 
  946. 62620 K$(KT) = " "
  947. 62630 KTMAX = KTMAX + 1
  948. 62640 IF KTMAX > MAX THEN KTMAX = MAX
  949. 62650 FOR T9 = KT TO KTMAX
  950. 62660 PRINT K$(T9);
  951. 62670 NEXT T9
  952. 62680 T6 = (KTMAX - KT) +1
  953. 62690 FOR T7 = 1 TO T6
  954. 62700 PRINT CHR$(CH);
  955. 62710 NEXT T7
  956. 62720 GOTO 62190
  957. 62730 REM ********** DELETE ***********
  958. 62740 IF KT > KTMAX GOTO 62200
  959. 62750 IF KTMAX = 1 GOTO 62190
  960. 62760 K$(MAX + 1) = ""
  961. 62770 X9 = KT 
  962. 62780 WHILE X9 <= KTMAX
  963. 62790 K$(X9) = K$(X9 + 1)
  964. 62800 X9 = X9 + 1
  965. 62810 WEND 
  966. 62820 KTMAX = KTMAX - 1
  967. 62830 FOR T9 = KT TO KTMAX
  968. 62840 PRINT K$(T9);
  969. 62850 NEXT T9
  970. 62860 PRINT "_";
  971. 62870 T7 = (KTMAX - KT) + 2
  972. 62880 FOR T6 = 1 TO T7
  973. 62890 PRINT CHR$(CH);
  974. 62900 NEXT T6
  975. 62910 GOTO 62190
  976. 62920 REM ********* BACKSPACE ********
  977. 62930 IF KT = 1 GOTO 62190
  978. 62940 K$(KT) = " "
  979. 62950 KT = KT - 1
  980. 62960 K$(KT) = " "
  981. 62970 PRINT CHR$(CH);
  982. 62980 PRINT "_";
  983. 62990 PRINT CHR$(CH);
  984. 63000 GOTO 62190
  985. 63100 REM N for no answer
  986. 63110 IF NEFLG >< 5 THEN 60430
  987. 63120 DT# = -999
  988. 63130 PRINT "NA"
  989. 63135 NFLG = 5
  990. 63140 RETURN
  991. 
  992. 63100 REM N for no answer
  993. 63110 IF NEFLG >< 5 THEN 60430
  994. 63120 DT# = -999
  995. 63130 PRINT