home *** CD-ROM | disk | FTP | other *** search
- 10 REM ****************************
- 12 REM * A NEW EXPERT SYSTEM PROG *
- 14 REM ****************************
- 16 CD$=""
- 18 CD$(1)=LEFT$(CD$,5)
- 20 CD$(2)=LEFT$(CD$,11)
- 22 CD$(3)=LEFT$(CD$,19)
- 24 IT$=" THE ADVISOR [146]"
- 26 PRINT"[147]";TAB(12);IT$
- 29 PRINT"";TAB(7);" BOB GARNER APRIL 1990 ":GOSUB482
- 30 PRINT"[147]";CD$(2);TAB(7);" SETTING THE DIMENSIONS [146]"
- 32 DIM T(10,10,10),A$(15),V$(15,15),C$(20),VT(10)
- 34 S1=1065:S2=S1+37:S3=1982:S4=S3-37
- 36 DE$(6)="UNKNOWN FACTOR"
- 38 GOSUB518
- 40 GOSUB 390
- 42 POKE 53281,6:GOSUB466
- 44 REM ************
- 46 REM * THE MENU *
- 48 REM ************
- 50 PRINT"";TAB(11);IT$
- 52 PRINT""TAB(13)"**THE MENU**"
- 54 PRINTTAB(10);"1. INPUT DATA"
- 56 PRINTTAB(10);"2. VIEW THE DATA"
- 58 PRINTTAB(10);"3. SAVE DATA"
- 60 PRINTTAB(10);"4. RETRIEVE THE DATA"
- 62 PRINTTAB(10);"5. CHANGE THE DATA"
- 64 PRINTTAB(10);"6. ANALYSE DATA"
- 66 PRINTTAB(10);"7. SCRATCH DATA"
- 68 PRINTTAB(10);"8. DISK DIRECTORY"
- 70 PRINTTAB(10);"9. RANK DATA"
- 72 PRINTTAB(10);"0. QUIT"
- 74 PRINTTAB(10)" TYPE THE NUMBER [146]"
- 76 GET M$:IF M$="" THEN 76
- 78 M=ASC(M$):IF M<48 OR M>57 THEN GOSUB 516:M=0:GOTO76
- 80 ON M-47 GOSUB88,92,202,272,320,354,536,402,484,232
- 82 GOTO86
- 84 GOTO50
- 86 GOTO42
- 88 SYS 64760
- 90 REM *********************
- 92 REM * NAMING THE SYSTEM *
- 94 REM *********************
- 96 PRINT"[147]";TAB(11);IT$
- 98 PRINTTAB(10);" NAMING THE SYSTEM [146]"
- 100 ZZ=1:PRINT"WHAT WILL YOU CALL THE SYSTEM"
- 102 PRINT"BEING CREATED":PRINT"";:INPUT NA$
- 104 REM ********************
- 106 REM * THE ATTRIBUTES *
- 108 REM ********************
- 110 PRINT"[147]";TAB(11);IT$
- 112 PRINTTAB(9);" CREATING ATTRIBUTES [146]"
- 114 FOR T=1TO6
- 116 PRINT"ATTRIBUTE ";T;
- 118 PRINT"";:INPUT A$(T)
- 120 NEXT
- 122 PRINT"[147]"
- 124 REM **************
- 126 REM * THE VALUES *
- 128 REM **************
- 130 PRINT"[147]";TAB(11);IT$
- 132 PRINTTAB(11);" CREATING VALUES [146]"
- 134 FOR T=1TO6
- 136 PRINT"ATTRIBUTE - ";A$(T)
- 138 FOR S=1TO3
- 140 PRINT "VALUE ";S;
- 142 PRINT"";:INPUT V$(T,S)
- 144 NEXT:PRINT"":NEXT:PRINT:PRINT:GOSUB390
- 146 REM *****************
- 148 REM * THE DECISIONS *
- 150 REM *****************
- 152 X=1
- 154 PRINT"[147]";TAB(11);IT$
- 156 PRINTTAB(11);" THE DECISIONS [146]"
- 158 PRINT"WHAT IF YOU HAVE ALL THESE"
- 160 FORT=1TO6
- 162 PRINT
- 164 FORS=XTO3STEP3
- 166 PRINTTAB(5);S;"[157]. ";V$(T,S)
- 168 NEXT:NEXT
- 170 PRINT"";:INPUT "YOUR DECISION :";DE$(X)
- 172 X=X+1:IF X>3 THEN 176
- 174 GOTO154
- 176 PRINT"[147]";TAB(11);IT$
- 178 PRINTTAB(11);" THE DECISIONS [146]"
- 180 PRINT"WHAT IF ";DE$(1);"[146] AND "
- 182 PRINT"";DE$(2);"[146] ARE MIXED"
- 184 PRINT"";:INPUT "YOUR DECISION :";DE$(X)
- 186 X=X+1
- 188 PRINT"[147]";TAB(11);IT$
- 190 PRINTTAB(11);" THE DECISIONS [146]"
- 192 PRINT"WHAT IF ";DE$(2);"[146] AND "
- 194 PRINT"";DE$(3);"[146] ARE MIXED"
- 196 PRINT"";:INPUT "YOUR DECISION :";DE$(X)
- 198 RETURN
- 200 REM ***********************
- 202 REM * SCREEN VIEW OF DATA *
- 204 REM ***********************
- 206 X=1:Y=3
- 208 IF Y>6THEN 226
- 210 PRINT"[147]";TAB(8);NA$
- 212 FOR T=XTOY
- 214 PRINT"ATTRIBUTE ";T;"- ";A$(T)
- 216 PRINT
- 218 FOR S=1TO3
- 220 PRINTTAB(5);"VALUE";S;"- ";V$(T,S)
- 222 NEXT:NEXT:PRINT:PRINT:PRINT
- 224 GOSUB390:Y=Y+3:X=X+3:GOTO208
- 226 PRINT"[147]";TAB(5)"THESE ARE YOUR DECISIONS"
- 228 PRINT"":FORG=1TO5:PRINTTAB(6);DE$(G):PRINT"":PRINT:NEXT:GOSUB390:RETURN
- 230 REM ********************
- 232 REM * RANKING THE DATA *
- 234 REM ********************
- 236 PRINT"[147]";TAB(11);IT$
- 238 FORT=1TO6
- 240 PRINT" VALUES FOR ATTRIBUTE '";A$(T);"'"
- 242 FORS=1TO3
- 244 PRINT""S;V$(T,S):NEXT
- 246 PRINT"":FOR R=1TO3
- 248 IFR=1THENS$="FIRST ":GOTO254
- 250 IFR=2THENS$="SECOND":GOTO254
- 252 IFR=3THENS$="THIRD "
- 254 IF S>1THEN PRINTTAB(10);"[145][145][145][145] ":GOTO 258
- 256 PRINT""
- 258 PRINT" WHICH WOULD YOU PUT ";S$
- 260 PRINTTAB(10)"";:INPUTC(R)
- 262 B$(T,R)=V$(T,C(R)):NEXT
- 264 PRINTTAB(10)" ";
- 266 FOR S=1TO3:V$(T,S)=B$(T,S):NEXTS
- 268 PRINT"[147]":NEXTT:GOSUB390:RETURN
- 270 REM *****************
- 272 REM * SAVE THE DATA *
- 274 REM *****************
- 276 PRINT"[147]";TAB(12);IT$
- 278 PRINT"ARE YOU SURE (Y/N)"
- 280 GET B$:IF B$="" THEN 280
- 282 IF B$="N" THEN RETURN
- 284 PRINT"OK - I HAVE THE NAME FILE "NA$" "
- 286 PRINT"IS THIS CORRECT (Y/N)"
- 288 GET B$:IF B$="" THEN 288
- 290 IF B$="Y" AND LEN(NA$)>=3 THEN 302
- 292 IF B$="N" THEN 296
- 294 :
- 296 PRINTTAB(7);" TYPE IN THE CORRECT NAME [146]"
- 297 PRINTTAB(12);" THEN [RETURN] [146]"
- 298 PRINT:PRINTTAB(7);:INPUT NA$
- 300 IF LEN(NA$)<3 THEN PRINTCD$(3);TAB(11);" INVALID ENTRY [146]":GOSUB390:RETURN
- 302 PRINTTAB(4);"CREATING ";NA$;" DISK FILE"
- 304 OPEN 15,8,15
- 306 OPEN4,8,4,NA$+",S,W":GOSUB444
- 308 PRINT#4,NA$
- 310 FOR T=1TO6:PRINT#4,A$(T):NEXT
- 312 FORT=1TO6:FOR S=1TO3:PRINT#4,V$(T,S):NEXT:NEXT
- 314 FOR T=1TO5:PRINT#4,DE$(T):NEXT
- 316 CLOSE15:CLOSE4:PRINT:PRINTTAB(4);"FILE SAVED":GOSUB 390:RETURN
- 318 REM *********************
- 320 REM * RETRIEVE THE DATA *
- 322 REM *********************
- 324 PRINT"[147]";TAB(11);IT$
- 326 PRINT"WHICH FILE IS TO BE RETRIEVED"
- 328 PRINT"";:INPUT NA$
- 330 IF LEN(NA$)<3 THEN PRINTCD$(3);TAB(11);"INVALID INPUT":GOSUB390:RETURN
- 332 TA3=INT((19-(LEN(NA$)))/2)
- 334 PRINTTAB(TA3);"RETRIEVING ";NA$;"[146] DATA FILE"
- 336 OPEN 15,8,15
- 338 OPEN4,8,4,NA$+",S"
- 340 INPUT#4,NA$
- 342 FOR T=1TO6:INPUT#4,A$(T):NEXT
- 344 FORT=1TO6:FOR S=1TO3:INPUT#4,V$(T,S):NEXT:NEXT:GOSUB 444
- 346 FOR T=1TO5:INPUT#4,DE$(T):NEXT
- 348 CLOSE15:CLOSE4:ZZ=1
- 350 PRINT"";TAB(TA3);"DATA FILE ";NA$;"[146] RETRIEVED":GOSUB390:RETURN
- 352 REM *******************
- 354 REM * CHANGE THE DATA *
- 356 REM *******************
- 358 PRINT"[147]";TAB(11);IT$
- 360 PRINT"SYSTEM NAME IS ",NA$;:INPUT NA$
- 362 FOR T=1TO6
- 364 PRINT"ATTRIBUTE ";T;"- ";A$(T);:INPUT A$(T)
- 366 PRINT
- 368 FOR S=1TO3
- 370 PRINT"VALUE";S;"- ";V$(T,S);:INPUTV$(T,S)
- 372 NEXT:NEXT
- 374 PRINT:PRINT:PRINT
- 376 PRINT"THESE ARE YOUR DECISIONS"
- 378 FOR U=1TO5
- 380 PRINT"";U". ";DE$(U):PRINT:INPUT"";DE$(U)
- 382 NEXT:PRINT"":GOSUB390:RETURN
- 384 REM ****************
- 386 REM * PAGE CONTROL *
- 388 REM ****************
- 390 PRINTCD$;TAB(6);" SPACE=CONTINUE [146] _ = ABORT [146]"
- 392 GET SP$:IF SP$=""THEN 392
- 394 IF SP$=CHR$(32) THEN RETURN
- 396 IF SP$="_" AND ZZ>0 THEN TT=0:X=6:GOTO42
- 398 GOSUB516:GOTO392
- 400 REM *********************
- 402 REM * SCRATCH DATA FILE *
- 404 REM *********************
- 406 OPEN15,8,15
- 408 PRINT"[147]EXPERT SYSTEMS"
- 410 PRINT"CONTINUE AND THE DATA FILE WILL BE"
- 412 PRINT"SCRATCHED !"
- 414 PRINT:PRINT" [SPACE] TO CONTINUE - '_' TO ABORT [146]"
- 416 GET K$:IF K$="" THEN 416
- 418 IF K$=CHR$(32) THEN 422
- 420 PRINT:PRINT:PRINTTAB(10)" SCRATCH ABORTED !! ":GOSUB482:GOTO434
- 422 PRINT"WHICH FILE TO BE SCRATCHED"
- 424 PRINT"";:INPUT NA$
- 426 PRINT"ARE YOU SURE [Y/N]"
- 428 GET A$:IF A$="" THEN 428
- 430 IF A$="Y" THEN PRINT#15,"S:";NA$
- 432 PRINT"OK ! BACK TO THE MENU":GOSUB 482
- 434 CLOSE15:RETURN
- 436 :
- 438 :
- 440 :
- 442 REM ***************
- 444 REM * DISK ERRORS *
- 446 REM ***************
- 448 INPUT#15,EN,EM$,ET,ES
- 450 IF EN<20 THEN RETURN
- 452 PRINT"[147][158] DISK ERROR HAS OCCURRED "
- 454 PRINT"ERROR NUMBER ";EN
- 456 PRINT"ERROR MESSAGE ";EM$
- 458 PRINT"TRACK NUMBER ";ET
- 460 PRINT"SECTOR NUMBER ";ES
- 462 CLOSE 15
- 464 REM *****************
- 466 REM * SCREEN EDGING *
- 468 REM *****************
- 470 PRINT"[147]":POKE53281,1:POKE53280,6
- 472 FOR K=S1TOS2:POKE K,102:NEXT
- 474 FOR K=S2TOS3STEP40:POKE K,102:NEXT
- 476 FOR K=S3TOS4STEP-1:POKE K,102:NEXT
- 478 FOR K=S4TOS1STEP-40:POKE K,102:NEXT
- 480 RETURN
- 482 FOR Y=1TO2500:NEXT:RETURN
- 484 REM **********************
- 486 REM * READ THE DIRECTORY *
- 488 REM **********************
- 490 GOSUB466
- 492 PRINT" THIS IS THE DISK DIRECTORY "
- 494 OPEN 1,8,0,"$"
- 496 GET#1,X$,X$
- 498 GET#1,X$,X$,X$,X$
- 500 IF ST THEN CLOSE 1:GOSUB390:RETURN
- 502 GET#1,X$:IF X$="" THEN PRINTTAB(5);CHR$(34):GOTO498
- 504 IF X$=CHR$(34) THEN Q=NOT Q
- 506 IF Q THEN PRINTTAB(5);X$;
- 508 GOTO502
- 510 REM *******************
- 512 REM * SCREEN REVERSER *
- 514 REM *******************
- 516 FOR L=1TO10:SYS 52992:GOSUB532: NEXT:RETURN
- 518 FORJ=52992TO53018:READK:POKEJ,K:NEXT
- 520 DATA 169,000,133,251,169,004,133,252
- 522 DATA 162,004,160,000,177,251,073,128
- 524 DATA 145,251,200,208,247,230,252,202
- 526 DATA 208,240,096
- 528 :
- 530 RETURN
- 532 FOR K=1TO80:NEXT:RETURN
- 534 REM ****************
- 536 REM * THE ANALYSIS *
- 538 REM ****************
- 540 :
- 542 X=1:Q=1
- 544 :
- 546 :
- 548 :
- 550 :
- 552 IF TT>0 THEN 556
- 554 FORT=1TO6:C$(T)="UNKNOWN":NEXT
- 556 :
- 558 IFZZ=1THENGOTO574
- 560 A$(1)="ATTRIBUTE HERE"
- 562 T=1:FOR S=1TO3
- 564 V$(T,S)="VALUE HERE"
- 566 NEXT
- 568 DE$(F)="DECISION HERE"
- 570 :
- 572 PRINT"[147]"
- 574 FOR T=1TO6
- 576 GOSUB636:REM *PRINT BOXES*
- 578 PRINTCD$(1);TAB(9);A$(T):PRINTCD$(2);
- 580 FOR S=1TO3:PRINTTAB(5);S;"[157]. ";V$(T,S):NEXT
- 582 :
- 584 IF ZZ=0 THEN PRINTCD$(3);DE$(T):GOSUB390:RETURN
- 586 REM ***********
- 588 REM * SCORING *
- 590 REM ***********
- 592 :
- 594 PRINTCD$;
- 596 GET B$:IF B$="" THEN 596
- 598 IF B$="1" THEN VT(T)=3:GOTO606
- 600 IF B$="2" THEN VT(T)=2:GOTO606
- 602 IF B$="3" THEN VT(T)=1:GOTO606
- 604 GOSUB516:GOTO596
- 606 T(Q,T,S)=VT(T)
- 608 :
- 610 IF Q>1 THEN TT=TT-T(Q-1,T,S)
- 612 TT=TT+VT(T)
- 614 V=VAL(B$):C$(T)=V$(T,V):TT(Q,T,S)=TT
- 616 IF TT=X*3 THEN F=1:GOTO626
- 618 IF TT=>(X*2)+1 AND TT<=(X*3)-1 THEN F=4:GOTO626
- 620 IF TT=X*2 THEN F=2:GOTO626
- 622 IF TT=>X+1 AND TT<=(X*2)-1 THEN F=5:GOTO626
- 624 IF TT=X THEN F=3:GOTO626
- 626 IF X<=5 THEN F=6
- 628 GOSUB668
- 630 IF Q=>2 THEN X=6:NEXT:GOTO634
- 632 X=X+1:NEXT
- 634 Q=Q+1:GOTO572
- 636 PRINT"[147]";TAB(11);IT$
- 638 PRINTTAB(7);"[176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]
- 640 [153][163]7);"PEEK PEEK
- 642 PRINTTAB(7);"[173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]
- 644 [153]:[153]
- 646 [153][163]4);"ORLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLEN^
- 648 PRINTTAB(4);"[194] [194]
- 650 [153][163]4);"PEEK PEEK
- 652 PRINTTAB(4);"[194] [194]
- 654 [153][163]4);"PEEK PEEK
- 656 PRINTTAB(4);"[194] [194]
- 658 [153][163]4);"/LENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENLENEXP
- 660 IF ZZ=0 THEN RETURN
- 662 PRINT"TYPE THE NUMBER OF YOUR CHOICE"
- 664 RETURN
- 666 REM *********************
- 668 REM * THE 'WHY' FACTORS *
- 670 REM *********************
- 672 GOSUB466
- 674 PRINT"";TAB(11);IT$
- 676 TA1=INT((37-(LEN(NA$)))/2)
- 678 PRINT"";TAB(TA1);NA$;" SAYS "
- 680 TA1=INT((40-LEN(DE$(F)))/2)
- 682 PRINT"";TAB(TA1)DE$(F)
- 684 PRINT"";TAB(15)" BECAUSE :"
- 686 FOR G=1TO6
- 688 TA2=INT((36-(LEN(A$(G))+LEN(C$(G))))/2)
- 690 PRINTTAB(TA2);A$(G);" IS ";C$(G)
- 692 NEXT
- 694 GOSUB390:RETURN
- 696 REM *********
-