CODE = 2000
domains
i = integer
s = symbol
st = string
li = i*
ls = s*
lst = st*
key = arr;aba;izq;der;f(i);otro;enter
database - posicion
posicion(i,i) % (menu,actual)
database - menu
ual,col_nuevo)
database - opc
opc(i,i,i,st,st,st) % (menu,pos,long,opc,help,arch_bat)
database - fin
predicates
actualiza_pos(i,i,i) % (menu,actual, 1)
a_key(key)
aviso(i,st) % (Menu,Help)
b_key(i,key)
clear(li)
e_tecla(key)
fill(st,i) % (Relleno,Renglones) - (i,i)
key(i,key)
mes(i,st)
pantalla
remove(li)
retardo(i,i) % (segundo,valor) - (i,i)
run % ciclo infinito del programa
shift(li)
clauses
% ___________________________________________________________________________
% ------------------- Control del cursor --------------------------------
% ------- --- -------
run:-
fin("si"), remove([1,2,3,4,5]), !.
run:-
a_key(K), e_tecla(K), !, run.
run:- !.
% para trazar a_key(Key):- readchar(_), readchar(K), char_int(K,Asc), key(Asc,Key).
% para correr
a_key(Key):- inkey(K), !, char_int(K,Asc), key(Asc,Key).
a_key(K_):- !, a_key(K_).
key(13,enter):- !.
key(72,arr):-!. key(80,aba):-!. key(75,izq):-!. key(77,der):-!.
key(0,Key):- readchar(T), char_int(T,Asc), b_key(Asc,Key).
key(_,otro):- !.
b_key(72,arr):-!. b_key(80,aba):-!. b_key(75,izq):-!.
b_key(77,der):-!. b_key(N,f(K)):- N >= 59, N <= 68, !, N - 58 = K.
b_key(_,otro):-!.
e_tecla(enter):- posicion(Menu,Pos), ejecuta(Menu,Pos), !.
e_tecla(enter):- !, fail.
e_tecla(f(1)):-!.
/* shift([5]), file_str("ayuda.pro",Logo),
display(Logo), clear([5]), shift([3]), !.*/
e_tecla(Flecha):-
Flecha = der, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,1), !;
Flecha = aba, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,1), !;
Flecha = izq, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,-1),!;
Flecha = arr, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,-1),!.
e_tecla(_):-!.
% ___________________________________________________________________________
% ---------------------------------------------------------------------------
% ___________________________________________________________________________
% --------- -- ---------
ejecuta(1,Opc):-
Opc = 10, !, remove([1,2,3,4,5]), % Terminar
renamefile("sid.bat","fin.bat"), fail;
!, Opc + 1 = Menu, menu(Menu,Opcs,Ventana,_,_,_,Col_n),
Opcs + 3 = Fondo, Opc + 3 = Ren,
desp_opc(Menu,0,Ventana), opc(1,Opc,_,_,Help,_),
aviso(1,Help), shift([Ventana]), retractall(_,posicion),
asserta(posicion(Menu,0),posicion),opc(Menu,0,Long,_,_,_),
field_attr(0,2,Long,Col_n),
run, remove([6]), shift([5]),!,
retractall(_,posicion), asserta(posicion(1,Opc),posicion).
ejecuta(Menu,Opcion):-
opc(Menu,Opcion,_,_,_,Arch), Arch = "", !, fail.
ejecuta(Menu,Opcion):-
opc(Menu,Opcion,_,_,_,Arch), file_str("sid.bat",Arch), !,
retractall(_,fin), asserta(fin("si"),fin), fail;
opc(Menu,Opc,_,_,_,Archivo),
makewindow(7,78,78,"",14,15,5,45,1,255,"ɻȼͺ"),
write("\n SID_FIE ..."), time(_,_,Seg,_), Segcont = Seg + 4,
retardo(Seg,Segcont), !, remove([7]).
% ___________________________________________________________________________
% ---------------------------------------------------------------------------
% ___________________________________________________________________________
% ------------------- manejo de ventanas --------------------------------
% ------ -- --------
shift([]):- !. shift([H|T]):- shiftwindow(H), !, shift(T).
clear([]):- !. clear([H|T]):- shift([H]), clearwindow(), !, clear(T).
remove([]):- !. remove([H|T]):- shift([H]), removewindow(), !, remove(T).
% ___________________________________________________________________________
% ---------------------------------------------------------------------------
% ___________________________________________________________________________
% -------- --- ------
actualiza_pos(Menu,Actual,Inc):-
Actual + Inc = Nueva, menu(Menu,Nopc,Ventana,Inicio,Max,Col_a,Col_n),
Inicio - 1 = Minimo, Nueva > Minimo, Nueva < Max, % opciones + Inicio = Opc
opc(Menu,Actual,Long1,_,_,_), opc(Menu,Nueva,Long2,_,Help,_),
aviso(Menu,Help), shift([Ventana]),
field_attr(Actual,2,Long1,Col_a), field_attr(Nueva,2,Long2,Col_n),
% Color --> field_attr(Actual,2,Long1,Col_a), field_attr(Nueva,2,Long2,Col_n),
retractall(_,posicion), asserta(posicion(Menu,Nueva),posicion), !;
menu(Menu,Nopc,Ventana,Inicio,Max,Col_a,Col_n), Actual + Inc = Max,
opc(Menu,Actual,Long1,_,_,_), opc(Menu,Inicio,Long2,_,Help,_),
aviso(Menu,Help), shift([Ventana]),
field_attr(Actual,2,Long1,Col_a), field_attr(Inicio,2,Long2,Col_n),
retractall(_,posicion), asserta(posicion(Menu,Inicio),posicion), !;
menu(Menu,Opc,Ventana,Inicio,_,Col_a,Col_n), Actual + Inc = Inicio - 1,
opc(Menu,Actual,Long1,_,_,_), opc(Menu,Opc,Long2,_,Help,_),
aviso(Menu,Help), shift([Ventana]),
field_attr(Actual,2,Long1,Col_a), field_attr(Opc,2,Long2,Col_n),
retractall(_,posicion), asserta(posicion(Menu,Opc),posicion), !.
aviso(Menu,Help):-
Menu = 1, clear([4]), write(Help), !; !.
desp_opc(Menu,Pos,Ventana):-
opc(Menu,Pos,Long,Opc,Help,_),
field_str(Pos,2,Long,Opc),
clear([4]),write(Help),shift([Ventana]),
Pos + 1 = Pos1, !, desp_opc(Menu,Pos1,Ventana).
desp_opc(_,_,_):-!.
% ___________________________________________________________________________
% ---------------------------------------------------------------------------
% ___________________________________________________________________________
% --------------------- efectos de video --------------------------------
% ------- -- -----
mes(1,"ENE/"):-!. mes(2,"FEB/"):-!. mes(3,"MAR/"):-!. mes(4,"ABR/"):-!.
mes(5,"MAY/"):-!. mes(6,"JUN/"):-!. mes(7,"JUL/"):-!. mes(8,"AGO/"):-!.
mes(9,"SEP/"):-!. mes(10,"OCT/"):-!. mes(11,"NOV/"):-!. mes(12,"DIC/"):-!.
fill(_,0):-!. fill(Bety,Rafa):- write(Bety), Rafa - 1 = BEyRa, !,
fill(Bety,BEyRA).
pantalla:-
makewindow(1,16,0,"",0,0,25,80), % limpia pantalla
fill(Bety,24),
date(A,M,_), str_int(An,A), mes(M,Me), concat(Me,An,Fecha),
makewindow(1,30,0,"",0,0,1,80), % derechos reservados [2]
write(" ------------------------------------------------------------------------------"),
makewindow(2,31,112,"",4,54,14,25), % carpetas [4]
makewindow(2,31,112,"",3,52,14,25),
makewindow(2,7,112,"",2,50,14,25),
file_str("pant.1",Logo), window_str(Logo),
makewindow(3,78,0,"",24,0,1,80), % derechos reservados [2]
write(" (\74. \82. \82. \79.) \85\77\83\78\72\47\70\73\69\47\83\73\68 ",Fecha),
makewindow(4,15,3,"",21,1,3,78,1,0,"ɻȼͺ"), % Ayuda
sound(10,300), !.
retardo(Seg,Seg):-!. retardo(_,Seg):- time(_,_,Seg1,_),!, retardo(Seg1,Seg).
% ___________________________________________________________________________
% ---------------------------------------------------------------------------
% ___________________________________________________________________________
% --------------------------- meta --------------------------------------
% ----
goal
pantalla, retractall(_,opc), retractall(_,menu), retractall(_,fin),
asserta(fin("no"),fin), renamefile("out.out","sid.bat"),
asserta(menu(1,10,5,1,11,2,46),menu), % principal.
asserta(menu(2,3,6,0,4,12,112),menu), % procesadores de texto.
asserta(menu(7,3,6,0,4,12,112),menu), % Bases de datos.
asserta(menu(8,1,6,0,2,12,112),menu), % Sistemas de aprendizaje.
asserta(menu(10,6,6,0,7,12,112),menu), % Antivirus.
%Color --> asserta(menu(_,_,_,_,_,121,30),menu),
% opc(menu,pos,long,opc,help,arch_bat)
"),opc),
,opc),
),
mas",""),opc),
",""),opc),
opc),
asserta(opc(1,7,23,"SISTEMAS DE APRENDIZAJE","Control de bancos de informac,""),opc),
lexibles",""),opc),
asserta(opc(1,10,5,"SALIR","Terminar contacto con F.I.E./S.I.D.",""),opc),
shift([5]), desp_opc(1,1,5),
% opc(menu,pos,long,opc,help,arch_bat) PROCESADORES DE TEXTO
asserta(opc(2,0,16,"Word Perfect 6.0","","FWP60"),opc),
asserta(opc(2,1,9,"Works 3.0","","FWK3"),opc),
asserta(opc(2,2,16,"Write (Windows)","","FWRI"),opc),
asserta(opc(2,3,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) HOJAS DE CALCULO
asserta(opc(3,0,9,"Works 3.0","","FWK3"),opc),
asserta(opc(3,1,9,"Excel 4.0","","FEXCEL"),opc),
asserta(opc(3,2,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) LENGUAJES DE PROGRAMACION
asserta(opc(4,0,13,"Turbo C++ 3.0","","FTCPP3"),opc),
asserta(opc(4,1,16,"Turbo Pascal 6.0","","FTP60"),opc),
asserta(opc(4,2,16,"Turbo Prolog 2.0","","FTPRO"),opc),
asserta(opc(4,3,15,"Quick Basic 4.5","","FQB45"),opc),
asserta(opc(4,4,10,"Dbase III+","","FDB3P"),opc),
asserta(opc(4,5,8,"Fox Base","","FFOX"),opc),
asserta(opc(4,6,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) SISTEMAS DE SIMULACION
asserta(opc(5,0,12,"Pc Spice 5.0","","FSPICE"),opc),
asserta(opc(5,1,11,"EWB Digital","","FEWBD"),opc),
asserta(opc(5,3,5,"Orcad","","FORCAD"),opc),
asserta(opc(5,4,10,"Program CC","","FCC"),opc),
asserta(opc(5,5,6,"Derive","","FDE"),opc),
asserta(opc(5,6,7,"MathCad","","FMCAD"),opc),
asserta(opc(5,7,7,"MathLab","","FMLAB"),opc),
asserta(opc(5,8,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) SISTEMAS GRAFICOS
asserta(opc(6,0,11,"Auto CAD 12","","FCAD12"),opc),
asserta(opc(6,1,21,"Paint Brush (windows)","","FPB"),opc),
asserta(opc(6,2,12,"Windows 3.11","","FWIN"),opc),
asserta(opc(6,3,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) BASES DE DATOS
asserta(opc(7,0,9,"Works 3.0","","FWK3"),opc),
asserta(opc(7,1,10,"Dbase III+","","FDB3P"),opc),
asserta(opc(7,2,8,"Fox Base","","FFOX"),opc),
asserta(opc(7,3,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) SISTEMAS DE APRENDIZAJE
asserta(opc(8,0,13,"TUTOR DEL DOS","","FT2"),opc),
asserta(opc(8,1,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) UTILERIAS
asserta(opc(9,0,11,"Pctools 4.1","","FPCT"),opc),
asserta(opc(9,1,21,"Copy 2 pc 6.0 (a: a:)","","FC2PCA"),opc),
asserta(opc(9,2,21,"Copy 2 pc 6.0 (b: b:)","","FC2PCB"),opc),
asserta(opc(9,3,6,"Norton","","FNORTON"),opc),
asserta(opc(9,4,4,"Tech","","FTECH"),opc),
asserta(opc(9,5,8,"Regresar","",""),opc),
% opc(menu,pos,long,opc,help,arch_bat) ANTIVIRUS
asserta(opc(10,0,7,"Msav a:","","FMSAVA"),opc),
asserta(opc(10,1,7,"Msav b:","","FMSAVB"),opc),
asserta(opc(10,2,7,"Scan a:","","FSCANA"),opc),
asserta(opc(10,3,7,"Scan b:","","FSCANB"),opc),
asserta(opc(10,4,9,"Killer a:","","FKILLA"),opc),
asserta(opc(10,5,9,"Killer b:","","FKILLB"),opc),
asserta(opc(10,6,8,"Regresar","",""),opc),
field_attr(1,2,21,46),
retractall(_,posicion), asserta(posicion(1,1),posicion),
shift([5]),run.
% ___________________________________________________________________________
%
% Programa: menured.pro
% Objetivo: Mostrar los programas instalados en la red.
% U. M. S. N. H.
% ------------------------------------------------------------------------