home *** CD-ROM | disk | FTP | other *** search
- /*
- Copyright (c) 1988
- by Computer center of
- Shaan xi Mechinical colloge */
- code = 3000
- nowarnings
- /*
- This is a Diagnostic Directing expert-system
- for IBM PC XT computer. */
-
- DOMAINS
- CONDITIONS = BNO*
- HISTORY = RNO*
- RNO, BNO, FNO = INTEGER
- tone=integer*
- Namupn,Resupn,My, PART = STRING
- data_file = string
- file = save_file
- slist = string*
- song=tone*
-
- DATABASE
- rule(RNO,PART,PART,CONDITIONS)
- cond(BNO,STRING)
- data_file(data_file)
- yes(BNO)
- no(BNO)
- fact(FNO,PART,PART)
- result(string,string)
- include "tdoms.pro"
- include "tpreds.pro"
- include "menu2.pro"
-
- PREDICATES
-
- /*Commands*/
- diag
- list
- llist(HISTORY,string)
- load_know
- save_know
- pick_dba(data_file)
- erase
- clear
- proces(integer)
- proce2(integer)
- evalans(char)
- read
- run
- reverse(CONDITIONS,CONDITIONS)
- reverse1(CONDITIONS,CONDITIONS,CONDITIONS)
-
- /*Inferences mechanisms*/
- go(HISTORY,PART)
- check(RNO,HISTORY,CONDITIONS)
- notest(BNO)
- inpq(HISTORY,RNO,BNO,STRING)
- do_answer(HISTORY,RNO,STRING,BNO,INTEGER)
-
- /*Explanations*/
- sub_cat(PART,PART,PART)
- show_conditions(CONDITIONS,string)
- show_rule(RNO,string)
- show_cond(BNO,string)
- report(HISTORY,string)
-
- /*Update the knowledge*/
- getrnr(RNO,RNO)
- getbnr(BNO,BNO)
- readcondl( CONDITIONS )
- help
- getcond(BNO,STRING)
- /*menu */
- bootmenu
- beepmenu
- runmenu
- hdiskmenu
- sdiskmenu
- showmenu
- keydmenu
- prnmenu
- proboot(integer)
- probeep(integer)
- prorun(integer)
- prohdisk(integer)
- prosdisk(integer)
- proshow(integer)
- prokeyd(integer)
- proprn(integer)
-
- /* inteface */
- title
- gtitle
- tras(integer,integer)
- sing(song)
- /* kb acquing */
- kbacqmenu
- add_rule
- del_rule
- del_cond
- update_rule
- update_cond
- ansuprule(char)
- proacq(integer)
- print_l(CONDITIONS)
- input_l(CONDITIONS)
-
- GOAL
- makewindow(1,49,72,"",1,0,22,80),
- makewindow(2,13,3,"",14,0,10,80),
- makewindow(5,7,0,"",0,0,14,80),
- makewindow(8,13,0,"",23,0,2,80),
- makewindow(9,7,0,"",0,0,25,80),
- makewindow(19,7,0,"",7,10,5,30),
- sing([[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1]]),
- system("sound"),
- gtitle,
- run.
-
- clauses
- tras(1,131).
- tras(2,147).
- tras(3,165).
- tras(4,175).
- tras(5,196).
- tras(6,220).
- tras(7,247).
- tras(8,262).
- sing([]).
- sing([[T1,T2]|Y]):-tras(T1,Freq),Dura=T2*4,
- sound(Dura,Freq),sing(Y).
- gtitle:-
- text,
- makewindow(10,36,396,"",11,12,5,28),
- write(" Diagnostic Directing"),nl,
- write(" EXPERT SYSTEM "),
- makewindow(11,14,187,"",6,20,5,12),
- write("IBM PC/XT COMPUTER"),
- makewindow(13,6,0,"",17,14,4,27),
- write("Press any key to continue"),
- readchar(_).
- title:-
- clearwindow,
- write(" IBM PC/XT ╣╩╒╧╒∩╢╧╓╕╡╝╫¿╝╥╧╡═│ V2.0 "),nl,nl.
- /* write(" ╔┬╬≈╗·╨╡╤º╘║╝╞╦π╓╨╨─╤╨╓╞"),nl,nl. */
-
- run :-
- repeat,
- shiftwindow(1),
- graphics(2,1,10),
- title,
- write(" ╧╡═│╓≈▓╦╡Ñ "),nl,
- write(" 1) ╣╩╒╧╒∩╢╧╓╕╡╝ 2) ╙▓╝■╒∩╢╧│╠╨≥"),nl,
- write(" 3) ▒α╝¡╓¬╩╢┐Γ 4) ╫░╚δ╓¬╩╢┐Γ"),nl,
- write(" 5) ┤µ┤ó╓¬╩╢┐Γ 6) ╓¬╩╢╗±╚í"),nl,
- write(" 7) DOS ═Γ┐╟ 8) ░∩╓·╨┼╧ó"),nl,
- write(" 9) ═╦│÷▒╛╧╡═│ "),nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘±(1-9)"),
- readint(Replym),nl,
- Replym<11,
- proces(Replym),
- Replym>=11,!.
- /*Process Choice*/
- proces(1):-diag,!.
- proces(2):-text,system("pctest"),!.
- proces(3):-system("edkb"),!.
- proces(4):-text,load_know,!.
- proces(5):-text,save_know,!.
- proces(6):-kbacqmenu,!.
- proces(7):-system(""),!.
- proces(8):-help,!.
- proces(9):- clearwindow,nl,nl,
- write(" ─π╒µ╡─╥¬═╦│÷┬≡? (y/n) "),nl,nl,
- readchar(C),write(C),
- C='y',nl,
- cursor(10,15),
- write(" ╗╢╙¡╘┘╩╣╙├▒╛╧╡═│!"),nl,nl,nl,nl,nl,nl,nl,
- exit.
- proces(10):-list.
- /*Inference mechanism*/
-
- diag:-
- consult("cp.kb"),read,!.
- diag:- nl,
- write("▒╛╧╡═│╓¬╩╢╙╨╧▐╢°╬▐╖¿╒∩╢╧,╟δ╕ⁿ╨┬╓¬╩╢┐Γ!"),
- readchar(_),!.
- read:-
- repeat,
- clear,
- shiftwindow(1),
- clearwindow,
- graphics(2,1,11),nl,
- title,
- write(" ╒∩╢╧╬╩╠Γ╗∙▒╛▓╦╡Ñ:"),nl,
- write(" 1) ╞⌠╢»╬╩╠Γ 2) ╘╦╨╨╬╩╠Γ"),nl,
- write(" 3) ╙▓┼╠╬╩╠Γ 4) ╚φ┼╠╬╩╠Γ"),nl,
- write(" 5) ╧╘╩╛╬╩╠Γ 6) ╝ⁿ┼╠╬╩╠Γ"),nl,
- write(" 7) ┤≥╙í╗·╬╩╠Γ 8) ═╦│÷"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘± (1--8) "),
- readint(Dm),
- Dm<9,proce2(Dm),Dm>=8,!.
-
- proce2(1):-bootmenu,!.
- proce2(2):-runmenu,!.
- proce2(3):-hdiskmenu,!.
- proce2(4):-sdiskmenu,!.
- proce2(5):-showmenu,!.
- proce2(6):-keydmenu,!.
- proce2(7):-prnmenu,!.
- proce2(8):-text,run,!.
-
- bootmenu:-
- graphics(2,1,3),nl,nl,
- write(" ╞⌠╢»╬╩╠Γ└α╨═:"),nl,
- write(" 1)╞⌠╢»╩▒│÷╧╓╧╡═│┤φ( POST ╩º░▄)"),nl,
- write(" 2)╡τ╘┤╡╞▓╗┴┴,╞┴─╗▓╗╧╘╩╛ ,┼╠▓╗╣ñ╫≈"),nl,
- write(" 3)╡τ╘┤╡╞┴┴,╞┴─╗╞┴─╗╬▐╚╬║╬╧╘╩╛,┼╠▓╗╣ñ╫≈"),nl,
- write(" 4) POST ╒²│ú,╡½▓╗─▄╞⌠╢»"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘± (1-4):"),nl,
- write(" ╗≥╩Σ╚δ 5 ═╦│÷╞⌠╢»╬╩╠Γ╒∩╢╧ "),nl,nl,
- readint(Replyboot),nl,
- proboot(Replyboot),Replyboot>=5,!.
- proboot(1):-beepmenu.
- proboot(2):-go([],power_computer),!.
- proboot(3):-go([],clock),!.
- proboot(4):-go([],boot_4),!.
- proboot(5):-text,read,!.
- /*.........*/
- beepmenu:-
- clearwindow,
- graphics(2,0,14),
- write(" │⌡╩╝╒∩╢╧╩▒╡─╜╨╔∙└α╨═:"),nl,
- write(" 1) ╬▐╜╨╔∙,╗·╞≈╬▐╖┤╙ª 2) ╥╗╔∙╢╠╜╨,┤┼┼╠╡╞┴┴"),nl,
- write(" 3) ┴¼╨°╜╨ 4)╥╗╔∙│ñ╜╨,╥╗╔∙╢╠╜╨"),nl,
- write(" 5)╥╗╔∙│ñ╜╨,┴╜╔∙╢╠╜╨ 6)╥╗╔∙╢╠╜╨,╞┴─╗▒Σ║┌╗≥╧╘╩╛▓╗╒²│ú"),nl,
- write(" 7) ╓╪╕┤╡─╢╠╜╨╔∙ 8)╥╗╔∙╢╠╜╨,╝┤│÷╧╓ BASIC ╠ß╩╛╖√"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘± (1-8):"),nl,
- write(" ╗≥╩Σ╚δ 9 ═╦│÷╜╨╔∙╒∩╢╧ "),nl,nl,
- readint(Replybeep),
- probeep(Replybeep),Replybeep=9,!.
- probeep(1):-go([],power_computer),!.
- probeep(2):-go([],disk),!.
- probeep(3):-go([],power_computer),!.
- probeep(4):-go([],system_board),!.
- probeep(5):-go([],crt_circut),!.
- probeep(6):-go([],crt_circut),!.
- probeep(7):-go([],system_board),!.
- probeep(8):-go([],disk),!.
- probeep(9):-!.
- /* run menu */
- runmenu:-
- graphics(2,1,3),
- write(" ╘╦╨╨╬╩╠Γ└α╨═:"),nl,nl,
- write("1) ╝╞╦π╗·╦└╦°,╡½╡τ╘┤╚╘╘┌╣ñ╫≈"),nl,
- write("2) ╝╞╦π╗·╡⌠╡τ,╫╘╝║╣╪╢╧╡τ╘┤"),nl,
- write("3) ╞µ┼╝╨ú╤Θ┤φ "),nl,
- write("4) ╜╙╔╧═Γ▓┐╔Φ▒╕╩▒╝╞╦π╗·╧╡═│▒└└ú"),nl,
- write("5) ╣²╚╚"),nl,
- write("6) ═╦│÷"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘±(0-6)"),
- readint(Replyrun),
- prorun(Replyrun),
- Replyrun>=6,!.
-
- /* run proces */
- prorun(1):-go([],run_1),!.
- prorun(2):-go([],run_2),!.
- prorun(3):-go([],run_3),!.
- prorun(4):-go([],run_4),!.
- prorun(5):-go([],run_5),!.
- prorun(6):-!.
- /* hard disk */
- hdiskmenu:-
- graphics(2,0,19),
- write(" ╙▓┼╠╓ó╫┤└α╨═:"),nl,
- write("1) ╙▓┼╠▓╗╢»--╖├╬╩╩▒╫░╚δ╡╞▓╗┴┴"),nl,
- write("2) ╢┴╨┤▓╗═Ω╒√ "),nl,
- write("3) ╢┴╒²╚╖,╡½╨┤▓╗╒²╚╖ "),nl,
- write("4) ╘╦╨╨ CHKDSK ╩▒│÷┤φ "),nl,
- write("5) ╧∞╔∙╥∞│ú "),nl,
- write("6) ╢¬╡⌠┴╦╦∙┤µ╨┼╧ó "),nl,
- write("7) ═╦│÷"),nl,nl,
- write("╟δ╩Σ╚δ─π╡─╤í╘±(1-7)"),
- readint(Replyhdisk),
- prohdisk(Replyhdisk),
- Replyhdisk>=7,!.
- prohdisk(1):-go([],hdisk_1),!.
- prohdisk(2):-go([],hdisk_2),!.
- prohdisk(3):-go([],hdisk_3),!.
- prohdisk(4):-go([],hdisk_4),!.
- prohdisk(5):-go([],hdisk_5),!.
- prohdisk(6):-go([],hdisk_6),!.
- prohdisk(7):-!.
- /* soft disk */
- sdiskmenu:-
- graphics(2,1,15),
- write(" ╚φ┼╠╓ó╫┤└α╨═:"),nl,
- write("1) ╚φ┼╠▓╗╢»--╖├╬╩╩▒╫░╚δ╡╞▓╗┴┴"),nl,
- write("2) ╧╘╩╛ Not ready reading drive x ,Abort,Retry,Ignore?"),nl,
- write("3) ╢┴╨┤▓╗═Ω╒√ "),nl,
- write("4) ╢┴╒²╚╖,╡½╨┤▓╗╒²╚╖ "),nl,
- write("5) ╧∞╔∙╥∞│ú "),nl,
- write("6) ╫░╚δ,╨╢╧┬┼╠╞¼▒╚╜╧└º─╤ "),nl,
- write("7) ═╦│÷"),nl,nl,
- write("╟δ╩Σ╚δ─π╡─╤í╘±(1-7)"),
- readint(Replysdisk),
- prosdisk(Replysdisk),
- Replysdisk>=7,!.
- prosdisk(1):-go([],sdisk_1),!.
- prosdisk(2):-go([],sdisk_2),!.
- prosdisk(3):-go([],sdisk_3),!.
- prosdisk(4):-go([],sdisk_4),!.
- prosdisk(5):-go([],sdisk_5),!.
- prosdisk(6):-go([],sdisk_6),!.
- prosdisk(7):-!.
- /* display (show) */
- showmenu:-
- graphics(2,1,10),
- write(" ╧╘╩╛╬╩╠Γ└α╨═"),nl,nl,
- write("1) ╬▐╧╘╩╛ 2) ╧╘╩╛╡¡─«"),nl,
- write("3) ╧╘╩╛╞≈╣²╚╚ 4) ┤╣╓▒═¼▓╜╩º╡≈"),nl,
- write("5) ╦«╞╜═¼▓╜╩º╡≈ 6)╧╘╩╛╨┼╧ó╘╙┬╥"),nl,
- write("7) ▓╩╔½╧╘╩╛╞≈╗╡╗≥╬▐▓╩╔½ 8) ╫╓╖√╧╘╩╛▓╗┴╝ "),nl,
- write("9) ═╦│÷"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘±(1-9)"),
- readint(Replyshow),
- proshow(Replyshow),
- Replyshow>=9,!.
-
- proshow(1):-go([],show_1),!.
- proshow(2):-go([],show_2),!.
- proshow(3):-go([],show_3),!.
- proshow(4):-go([],show_4),!.
- proshow(5):-go([],show_5),!.
- proshow(6):-go([],show_6),!.
- proshow(7):-go([],show_7),!.
- proshow(8):-go([],show_8),!.
- proshow(9):-!.
-
- /* keyboard (keyd) */
- keydmenu:-
- graphics(2,0,11),
- write("╝╠╨°╒∩╢╧╟░╙ª╚╖▒ú╝ⁿ┼╠╬▐╬∩└φ╦≡╔╦"),nl,
- write(" ╝ⁿ┼╠╬╩╠Γ└α╨═:"),nl,nl,
- write("1) ╝ⁿ┼╠╩º┴Θ"),nl,
- write("2) ╝ⁿ┼╠╦°╢¿╘┌╔╧╡╡╗≥╧┬╡╡"),nl,
- write("3) ╥╗╕÷╗≥╢α╕÷╝ⁿ▓╗╣ñ╫≈"),nl,
- write("4) ═╦│÷"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘±(1-4)"),
- readint(Replykeyd),
- prokeyd(Replykeyd),
- Replykeyd>=4,!.
- prokeyd(1):-go([],keyd_1),!.
- prokeyd(2):-go([],keyd_2),!.
- prokeyd(3):-go([],keyd_3),!.
- prokeyd(4):-!.
- /* printer (prn) */
- prnmenu:-
- graphics(2,0,12),
- title,
- write(" ┤≥╙í╗·╬╩╠Γ└α╨═:"),nl,nl,
- write("0) ═╦│÷ 1) ┤≥╙í╗·╩º┴Θ"),nl,
- write("2) ▓╗─▄╫╘╝∞ 3) ╫╘╝∞╒²│ú,┴¬╗·╩º░▄"),nl,
- write("4) ┤≥╙í╨┼╧ó╘╙┬╥ 5) │÷╧╓╥∞│ú╡─┼╝╚╗╡─┤φ╬≤"),nl,
- write("6) ═╗╚╗═ú╓╣┤≥╙í 7) ┤≥╙í═╖╨í│╡▓╗─▄╥╞╢»"),nl,
- write("8) ┤≥╙í╩▒╙í▓╗│÷╚╬║╬╫╓╖√ 9) ┤≥╙í╗·╗≥┤≥╙í═╖╣²╚╚"),nl,
- write("10) ╙í│÷╡─╫╓╖√╝Σ╛α▓╗╛∙╘╚ 11) ╢¬╡⌠▓┐╖╓┤≥╙í╫╓╖√"),nl,
- write("12) ┤≥╙í╓╜╙╡╝╖│╔╢╤"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘±(0-12)"),
- readint(Replyprn),
- proprn(Replyprn),
- Replyprn=0,!.
-
- proprn(0):-!.
- proprn(1):-go([],printer_1),!.
- proprn(2):-go([],printer_2),!.
- proprn(3):-go([],printer_3),!.
- proprn(4):-go([],printer_4),!.
- proprn(5):-go([],printer_5),!.
- proprn(6):-go([],printer_6),!.
- proprn(7):-go([],printer_7),!.
- proprn(8):-go([],printer_8),!.
- proprn(9):-go([],printer_9),!.
- proprn(10):-go([],printer_10),!.
- proprn(11):-go([],printer_11),!.
- proprn(12):-go([],printer_12),!.
- /* kb acquing */
- kbacqmenu:-
- graphics(2,1,12),
- title,
- write(" ╓¬╩╢╗±╚í▓╦╡Ñ "),nl,nl,
- write(" 1) ╠φ╝╙╣µ╘≥"),nl,
- write(" 2) ╔╛│²╣µ╘≥ "),nl,
- write(" 3) ╨▐╕─╣µ╘≥ "),nl,
- write(" 4) ▒α╝¡╓¬╩╢┐Γ"),nl,
- write(" 5) ═╦│÷"),nl,nl,
- write(" ╟δ╩Σ╚δ─π╡─╤í╘±(1-5)"),nl,nl,
- readint(Repacq),
- Repacq<5,proacq(Repacq),
- Repacq>=4,!.
- proacq(1):-add_rule,!.
- proacq(2):-del_rule,!.
- proacq(3):-update_rule,!.
- proacq(4):-system("edkb"),!.
- proacq(5):-!.
- /* resoning mechine */
-
- go( _, Mygoal ):- /* My best guess */
- not(rule(_,Mygoal,_,_)),!,nl,
- result(Mygoal,Xr),nl,nl,
- write(Xr),nl,nl,
- clear,
- write("╜ß┬█╒²╚╖┬≡?╟δ╝ⁿ╚δ─π╡─╗╪┤≡(y/n)"),
- readchar(Ans),
- shiftwindow(19),
- graphics(1,1,23),
- evalans(Ans).
-
- go( HISTORY, Mygoal ):-
- rule(RNO,Mygoal,NY,COND),
- check(RNO,HISTORY, COND),
- go([RNO|HISTORY],NY).
-
- check( RNO, HISTORY, [BNO|REST] ):- yes(BNO), !,
- check(RNO, HISTORY, REST).
- check( _, _, [BNO|_] ):- no(BNO), !,fail.
- check( RNO, HISTORY, [BNO|REST] ):- cond(BNO,NCOND),
- fronttoken(NCOND,"not",_COND),
- frontchar(_COND,_,COND),
- cond(BNO1,COND),
- notest(BNO1), !,
- check(RNO, HISTORY, REST).
- check(_,_, [BNO|_] ):- cond(BNO,NCOND),
- fronttoken(NCOND,"not",_COND),
- frontchar(_COND,_,COND),
- cond(BNO1,COND),
- yes(BNO1), !,fail.
- check( RNO, HISTORY, [BNO|REST] ):-
- cond(BNO,TEXT),
- inpq(HISTORY,RNO,BNO,TEXT),
- check(RNO, HISTORY, REST).
- check( _, _, [] ).
-
- notest(BNO):-no(BNO),!.
- notest(BNO):-not(yes(BNO)),!.
-
- inpq(HISTORY,RNO,BNO,TEXT):-
- graphics(1,0,11),
- write("╬╩╠Γ:\n ",TEXT,"┬≡ ? "),nl,nl,nl,
- write(" ╟δ╥╞╣Γ▒Ω╝ⁿ╗╪┤≡ "),nl,
- ROW = 0,
- COL = 30,
- menu(ROW,COL,23,0,["╩╟","╖±","╜Γ╩═"],"",1,CHOICE),
- do_answer(HISTORY,RNO,TEXT,BNO,CHOICE).
- do_answer(_,_,_,_,0):-exit.
- do_answer(_,_,_,BNO,1):-assert(yes(BNO)),
- shiftwindow(1),write(yes),nl.
- do_answer(_,_,_,BNO,2):-assert(no(BNO)),
- shiftwindow(1),write(no),nl,fail.
- do_answer(HISTORY,RNO,TEXT,BNO,3):- !,
- shiftwindow(2),
- rule( RNO, Mygoal1, Mygoal2, _ ),
- sub_cat(Mygoal1,Mygoal2,Lstr),
- str_int(Str_num,RNO),
- concat("╬╩╠Γ╘┤╙┌╣µ╘≥ :",Str_num,Ans),
- show_rule(RNO,Lls1),
- concat(Ans,Lls1,Ans1),
- report(HISTORY,Sng),
- concat(Ans1,Sng,Answ),
- concat(Answ,"\n\n ╟δ░┤ F10 ╝ⁿ╝╠╨°╣ñ╫≈",Answend),
- display(Answend),
- shiftwindow(1),
- clearwindow,
- write("╬╩╠Γ:\n ",TEXT,"┬≡ ? "),nl,nl,nl,nl,
- write(" ╟δ╥╞╣Γ▒Ω╝ⁿ╗╪┤≡ "),nl,
- ROW=3,COL=35,
- menu(ROW,COL,10,0,["╩╟","╖±","╜Γ╩═"],"",1,CHOICE),
- clearwindow,
- do_answer(HISTORY,RNO,TEXT,BNO,CHOICE).
-
- /* List Rules / Explanation Mechanism */
-
- list :- findall(RNO,rule(RNO,_,_,_),LIST),
- llist(List,Str),display(Str),!.
-
- llist([],"") :-!.
- llist([RNO|List],Str):-
- llist(List,Oldstr),
- show_rule(RNO,RNO_Str),
- concat(RNO_Str,Oldstr,Str).
-
- show_rule(RNO,Strg):-
- rule( RNO, Mygoal1, Mygoal2, CONDINGELSER),
- str_int(RNO_str,RNO),
- concat("\n Rule ",RNO_str,Ans),
- concat(Ans,": ",Ans1),
- sub_cat(Mygoal1,Mygoal2,Lstr),
- concat(Ans1,Lstr,Ans2),
- concat(Ans2,"\n if ",Ans3),
- reverse(CONDINGELSER,CONILS),
- show_conditions(CONILS,Con),
- concat(Ans3,Con,Strg).
-
- show_conditions([],"").
- show_conditions([COND],Ans):-
- show_cond(COND,Ans),!.
- show_conditions([COND|REST],Ans):-
- show_cond(COND,Text),
- concat("\n and ",Text,Nstr),
- show_conditions(REST,Next_ans),
- concat(Next_ans,Nstr,Ans).
-
- show_cond(COND,TEXT):-cond(COND,TEXT).
-
- sub_cat(Mygoal1,Mygoal2,Lstr):-
- concat(Mygoal1," ╣╩╒╧╩╟ ",Str),
- concat(Str,Mygoal2,Lstr).
-
- report([],"").
- report([RNO|REST],Strg) :-
- rule( RNO, Mygoal1, Mygoal2, _),
- sub_cat(Mygoal1,Mygoal2,Lstr),
- concat("\n ",Lstr,L1),
- concat(L1,"\n : ",L2),
- str_int(Str_RNO,RNO),
- concat(L2,Str_RNO,L3),
- concat(L3,":\n ",L4),
- show_rule(RNO,Str),
- concat(L4,Str,L5),
- report(REST,Next_strg),
- concat(L5,Next_strg,Strg).
-
-
-
- /*HELP !!!*/
-
- help :- file_str("diag.hlp",Help),
- display(Help).
-
- /*User commands*/
-
- load_know:-pick_dba(Data), consult(Data).
-
- save_know :- data_file(Data), bound(Data),!,
- save(Data),clearwindow,
- writef(" Your % Knowledge base has been saved",Data).
- save_know :- makewindow(16,10,9,"File name ",10,40,4,35),
- write("Enter Knowledge\nBase Name: "),
- readln(Data),
- assert(data_file(Data)),
- removewindow,
- save(Data),clearwindow,
- writef(" Your % Knowledge base has been saved",Data).
-
- pick_dba(Data) :- makewindow(17,7,7,"PICK A DATA FILE",10,10,10,60),
- dir("","*.kb",Data),removewindow.
-
- erase:-
- retract(_),fail.
- erase.
-
- clear:-
- retract(yes(_)),
- retract(no(_)),fail,!.
- clear.
-
- evalans('y'):-
- write(" ╗╢╙¡╘┘╩╣╙├▒╛╧╡═│!"),nl,nl,
- write(" ░┤╚╬╥Γ╝ⁿ╝╠╨°╣ñ╫≈!"),nl,
- readchar(_),graphics(2,1,11),!.
- evalans(_):-
- write(" ▒╛╧╡═│╓¬╩╢╙╨╧▐,╟δ╕ⁿ╨┬╓¬╩╢┐Γ!"),nl,nl,
- write(" ░┤╚╬╥Γ╝ⁿ╝╠╨°╣ñ╫≈!"),nl,
- readchar(_),!,graphics(2,1,11),run.
-
- /*system commands*/
-
- reverse(X,Y):-
- reverse1([],X,Y).
- reverse1(Y,[],Y).
- reverse1(X1,[U|X2],Y):-reverse1([U|X1],X2,Y).
-
- /* knowleade acquing */
- add_rule:-
- clearwindow,
- graphics(2,1,14),
- makewindow(14,13,0,"",0,0,20,25),
- makewindow(15,10,0,"",0,45,25,34),
- write(" ╣╩╒╧└α╨═╩╛╥Γ"),nl,
- write("power_computer crt_circut boot_4"),
- write("boot_5 system_board clock disk "),
- write("run_1...run_5 hdisk_1...hdisk_6"),nl,
- write("sdisk_1...sdisk_6 show_1...show_8"),nl,
- write("keyd_1...keyd_4 printer_1...printer_13"),nl,
- shiftwindow(14),
- cursor(2,5),
- write("╟δ░┤╙╥▒▀╠ß╩╛╩Σ╚δ╣╩╒╧└α╨═"),nl,
- readln(Class),nl,
- write("╟δ╩Σ╚δ╣╩╒╧├√(▓╗║¼┐╒╕±╡─╚╬╥Γ ascii╫╓╖√┤«)"),nl,
- readln(Dname),nl,
- getrnr(100,RNO),
- readcondl(CONDL),
- assert(rule(RNO,Class,Dname,CONDL)),nl,
- write(" ╟δ╩Σ╚δ╣╩╒╧╖╓╬÷╗≥╜ß┬█ (┐╔╙├║║╫╓)"),nl,
- readln(Rel),nl,
- assert(result(Dname,Rel)),
- write("╗╣╥¬╠φ╝╙╣µ╘≥┬≡(y/n)?"),nl,
- readchar(Ansacq),
- Ansacq='y',add_rule.
-
- del_rule:-
- write("╩Σ╚δ╙√╔╛│²╡─╣µ╘≥║┼"),nl,
- readint(Numdel),
- rule(Numdel,_,Namdel,_),
- retract(result(Namdel,_)),
- retract(rule(Numdel,_,_,_)),
- write("╣µ╘≥",Numdel,"▒╗╔╛│²!"),nl,
- write("╗╣╥¬╔╛│²╣µ╘≥┬≡(y/n)?"),nl,
- readchar(Ansdel),
- Ansdel='y',del_rule.
- del_rule:-
- write("╥¬╔╛│²╠⌡╝■┬≡(y/n)?"),nl,
- readchar(Acdel),!,
- Acdel='y',
- del_cond. /* exit when answer is n */
-
- del_cond:-
- write("╩Σ╚δ╥¬╔╛│²╡─╠⌡╝■║┼"),nl,
- readint(Ncdel),
- retract(cond(Ncdel,_)),
- write(" ╗╣╥¬╔╛│²╠⌡╝■┬≡(y/n)?"),nl,
- readchar(Acdel2),
- Acdel2='y',
- del_cond,
- del_cond,!.
-
- update_rule:-
- graphics(2,1,11),
- write("╩Σ╚δ╥¬╨▐╕─╡─╣µ╘≥║┼"),nl,
- readint(Nupo),
- rule(Nupo,Clsupo,Namupo,Conupo),
- editmsg(Clsupo,Clsupn,"╟δ╨▐╕─╣╩╒╧└α╨═","╟δ╙├╬≈╬─","╨▐╕─═Ω║≤╙├ F10 ═╦│÷",1,uphlp,R),
- editmsg(Namupo,Namupn,"╟δ╨▐╕─╣╩╒╧├√","╟δ╙├╬≈╬─","╨▐╕─═Ω║≤╙├ F10 ═╦│÷",1,uphlp,R1),nl,
- result(Namupo,Resupo),
- editmsg(Resupo,Resupn,"╟δ╨▐╕─╣╩╒╧╒∩╢╧╜ß┬█","╟δ╙├║║╫╓","╨▐╕─═Ω║≤╙├ F10═╦│÷",1,uphlp,R3),
- retract(result(Namupo,_)),
- assert(result(Namupn,Resupn)),
- /* editmsg(Conupo,Conupn,"╟δ╨▐╕─╠⌡╝■▒φ","╟δ╙├╩²╫╓","F10--End edit",1,uphlp,R2),nl, */
- graphics(2,0,15),
- write("╟δ╨▐╕─╠⌡╝■▒φ! "),nl,
- write("╘¡╠⌡╝■▒φ╩╟: "),
- write(Conupo),nl,
- write("╟δ╩Σ╚δ╨┬╠⌡╝■▒φ,╩Σ╚δ╥╗╕÷▒φ║┼║≤╙ª╗╪│╡,╩Σ═Ω║≤╗╪┴╜┤╬│╡ "),nl,
- input_l(Conupn),
- write("─π╩Σ╚δ╡─╨┬╠⌡╝■▒φ╩╟: ",Conupn),nl,
- retract(rule(Nupo,_,_,_)),
- assert(rule(Nupo,Clsupn,Namupn,Conupn)), /* update rule ended */
- write("╣µ╘≥ ",Nupo," ╥╤╨▐╕─!"),beep,nl,
- write("╗╣╥¬╨▐╕─╣µ╘≥┬≡(y/n)?"),nl,
- readchar(Ansup),!,ansuprule(Ansup).
- ansuprule('y'):-update_rule.
- ansuprule(_):-
- graphics(2,1,13),
- write("╥¬╨▐╕─╠⌡╝■┬≡?(y/n)"),nl,
- readchar(Ansupcon1),
- Ansupcon1='y',!,
- update_cond.
- ansuprule(_).
- update_cond:-
- graphics(2,1,10),
- write("╟δ╩Σ╚δ╥¬╨▐╕─╡─╠⌡╝■║┼"),nl,
- readint(Nupcond),
- cond(Nupcond,Upcono),
- editmsg(Upcono,Upconn,"╟δ╨▐╕─╠⌡╝■","╟δ╙├║║╫╓","╨▐╕─╜ß╩°║≤╙├F10═╦│÷",1,uphlp,R4),
- assert(cond(Nupcond,Upconn)),nl,nl,
- write("╗╣╥¬╨▐╕─╠⌡╝■┬≡"),nl,
- readchar(Aupcon2),!,
- Aupcon2='y',
- update_cond.
- update_cond:-!.
- /* list print */
- print_l([H|T]):-
- write(H,","),
- print_l(T).
- print_l([]):-!.
- /* list input */
- input_l([H|T]):-
- readint(H),
- input_l(T).
- input_l([]):-!.
-
- getrnr(N,N):-not(rule(N,_,_,_)),!.
- getrnr(N,N1):-H=N+1,getrnr(H,N1).
-
- getbnr(N,N):-not(cond(N,_)),!.
- getbnr(N,N1):-H=N+1,getbnr(H,N1).
- readcondl( [BNO|R] ):-
- write("╟δ╩Σ╚δ╠⌡╝■(┐╔╙├║║╫╓,╥╤╬▐ ╠⌡╝■╩▒╜÷╗╪│╡): "),nl,
- write("╠⌡╝■: "),
- readln(COND),
- COND><"",!,
- getcond(BNO,COND),
- /* write("╗╣╙╨╠⌡╝■┬≡(y/n)?"),nl,nl,
- readchar(Anscond),!,
- Anscond='y',*/
- readcondl(R).
- readcondl([]).
-
- getcond(BNO,COND):-cond(BNO,COND),!.
- getcond(BNO,COND):-getbnr(1,BNO), assert( cond(BNO,COND) ).
-