Program LPTCont; {programa de control del port paralel} Uses DOS, CRT, U_Entsor; Var nom_arxiu: string; adreca_LPT: word; tecla: Char; sortir: Boolean; Procedure Menu_opcions; Begin{Menu_opcions} Window (1,1,80,24); Clrscr; Writeln; Writeln; Writeln (' PROGRAMA DE CONTROL DEL PORT PARALLEL'); Writeln; Writeln (' Opcions disponibles: '); Writeln; Writeln (' t - Maneig des de Teclat'); Writeln; Writeln (' a - Maneig des dArxiu (seqencia Binria)'); Writeln; Writeln (' j - Maneig des de Joystick'); Writeln; Writeln (' c - Calibrar rellotge intern del PC'); Writeln; Writeln (' e - modalitat dEntrenador'); Writeln; Writeln (' s - Sortir'); End{menu_opcions}; Procedure Acces_LPT (LPTdada, LPTIn, LPTOut: Byte); Begin {p1-Acces_lpt} Port [adreca_LPT]:= LPTdada; LPTIn:= Port [adreca_LPT+1]; Port [adreca_LPT+2]:= LPTOut; End;{p1-acces_lpt} Procedure Maneig_Teclat; var Mov_central: string[5]; Mov_superior, Mov_inferior: Char; retras, LPTdada, LPTIn, LPTOut: Byte; begin{p1-maneig_teclat} sortir:= False; LPTDada:= 0; LPTOut:= 0; Obrir_finestra_Texte (10,4,60,20,'CONTROL LPT DES DE TECLAT'); ClrScr; Write (' Opci en proces de proves. Polsau ESC per acabar'); Writeln; Writeln ('Moviments tecles: G=M1-, H=M1+, Y=M2+, B=M2-, A=M3+, S=M3-'); Repeat begin retras:= 2; Mov_superior:=' '; Mov_inferior:=' '; Mov_central:=' O '; Retras_o_tecla (retras,tecla); Case Upcase (tecla) of 'H': begin LPTdada:= 32; Mov_central:= ' O >'; end; 'U': begin LPTdada:= 40; Mov_superior:= '^'; Mov_central:= ' O >'; end; 'Y': begin LPTdada:= 8; Mov_superior:= '^'; end; 'T': begin LPTdada:= 24; Mov_central:= '< O '; Mov_superior:= '^'; end; 'G': begin LPTdada:= 16; Mov_central:= '< O '; end; 'V': begin LPTdada:= 20; Mov_inferior:= 'v'; Mov_central:= '< O '; end; 'B': begin LPTdada:= 4; Mov_inferior:= 'v'; end; 'N': begin LPTdada:= 36; Mov_inferior:= 'v'; Mov_central:= ' O >'; end; 'A': begin LPTdada:= 2; Mov_central:= ' X '; end; 'S': begin LPTdada:= 1; Mov_central:= ' '; end; end;{case} Acces_LPT (LPTdada, LPTIn, LPTOut); Window (45,15,58,18); ClrScr; Writeln ('LPT Dada: ',LPTdada); Writeln ('LPT In: ',LPTIn); Writeln ('LPT Out: ',LPTOut); Window (15, 10, 55, 18); GotoXY (18,1); Write (Mov_superior); GotoXY (16,2); Write (Mov_central); GotoXY (18,3); Write (Mov_inferior); LPTDada:=0; LPTOut:=0; end;{repeat} Until Ord (tecla) = 27; end;{p1-maneig_teclat} { ^ vvvvv // 00000 >\ ^^^ vvv <<< 00000 >>> ^^^^^ v \\ 00000 >/ } Procedure Maneig_Arxiu; begin{p1-maneig_arxiu} Obrir_finestra_texte (10,4,60,20,'CONTROL LPT DES DARXIU'); ClrScr; Exec ('LCONTROL.EXE',nom_arxiu); tecla:= ReadKey; end;{p1-maneig_arxiu} Procedure Maneig_JoyStick; begin{p1-maneig_joystick} Obrir_finestra_texte (10,4,60,20,'CONTROL LPT DES DE JOYSTICK'); ClrScr; Write (' Opci encara sense desenvolupar. Polsau una tecla per continuar'); tecla:= ReadKey; end;{p1-maneig_teclat} Procedure Calibrar_Rellotge; begin{p1-Calibrar_rellotge} Obrir_finestra_texte (10,4,60,20,'CALIBRAT DEL RELLOTGE INTERN DEL PC'); ClrScr; Write (' Opci encara sense desenvolupar. Polsau una tecla per continuar'); tecla:= ReadKey; end;{p1-calibrar_rellotge} Procedure Mode_entrenador; begin{p1-mode_entrenador} Obrir_finestra_texte (5,4,65,20,'ACTIVACI DE LA MODALITAT DENTRENADOR'); ClrScr; Writeln; Writeln ('La modalitat dEntrenador serveix per preparar arxius'); Writeln ('(seqencies binaries) a partir de les ordres executades'); Writeln ('en temps real, des del teclat o del Joystick. Es graven'); Writeln ('les seqencies en larxiu indicat, junt amb el temps'); Writeln ('corresponent.'); Writeln; Writeln ('Polsar E per activar lentrenador o S per no fer-ho'); Case Opcio_seleccionada ('es') of 'E': Missatge_avis (' Opci encara sense desenvolupar'); end;{case} end;{p1-mode_entrenador} Begin sortir:= False; nom_arxiu:= ''; adreca_LPT:=$378; Repeat begin Menu_opcions; Case Opcio_seleccionada ('tajces') of 'T': Maneig_teclat; 'A': Maneig_arxiu; 'J': Maneig_Joystick; 'C': Calibrar_rellotge; 'E': Mode_entrenador; 'S': sortir:= True; end;{case} end;{repeat} Until sortir; End{programa}.