home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
WDR Computer Club Digital 1996 June
/
CLUB_0696.BIN
/
ir
/
sw
/
irtvtest.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-08-02
|
6KB
|
163 lines
PROGRAM IR_Empfaenger_Demonstrationsprogramm;
USES CRT,DOS;
VAR i,j,nr,zahl,altnr : BYTE;
zeichen : CHAR;
time : LONGINT ABSOLUTE $40:$6C;
zeit : LONGINT;
regs : REGISTERS;
parameter : STRING[4];
druport,fehlers : WORD;
oldint : PROCEDURE;
a,b,c,d,e,f,g,h : WORD;
{###########################################################################}
{# umrande : zeichnet einen Rahmen um angegebene Koordinaten #}
{# Eingabe : x-linksoben,y-linksoben,x-rechtsunten,y-rechtsunten #}
{# Rahmenfarbe,Hintergrund #}
{###########################################################################}
PROCEDURE umrande(xl,yl,xr,yr,rahmen,hinterg:BYTE);
VAR i,j:BYTE;
BEGIN
TEXTCOLOR(rahmen);TEXTBACKGROUND(hinterg);
GOTOXY(xl,yl);WRITE('┌');FOR i:=2 TO xr-xl DO WRITE('─');WRITE('┐');
FOR i:=1 TO yr-yl DO BEGIN
GOTOXY(xl,yl+i);WRITE('│');
FOR j:=2 TO xr-xl DO WRITE(' ');
WRITE('│');
END;
GOTOXY(xl,yr);WRITE('└');FOR i:=2 TO xr-xl DO WRITE('─');WRITE('┘');
END;
{###########################################################################}
{# bildschirm : zeichnet Anfangsbildschirm #}
{###########################################################################}
PROCEDURE bildschirm;
BEGIN
TEXTBACKGROUND(3);
CLRSCR;
TEXTCOLOR(0);
TEXTBACKGROUND(15);
WRITE(' Infrarot-Empfänger Demonstrationsprogramm Copyright (c) by Klaus Kohlert 1995 ');
TEXTCOLOR(14);
TEXTBACKGROUND(3);
GOTOXY(11,3);WRITE('Interrupt-Routine');
GOTOXY(53,3);WRITE('Programmablauf');
umrande(5,5,34,24,7,0);
FOR i:=1 TO 5 DO
FOR j:=0 TO 3 DO
BEGIN
GOTOXY(7+j*7,7+i*3);WRITE('█████');
END;
GOTOXY(20,16);WRITE(' ');
TEXTCOLOR(RED);GOTOXY(7,7);WRITE('█████');
GOTOXY(30,7);WRITE('*');
TEXTCOLOR(7);GOTOXY(7,6);WRITE('POWER');
GOTOXY(7,9);WRITE(' 1 2 3 4');
GOTOXY(7,12);WRITE(' 5 6 7 8');
GOTOXY(7,15);WRITE(' 9 0');
GOTOXY(7,18);WRITE('SLEEP MUTE VOL- VOL+');
GOTOXY(7,21);WRITE(' DSP PRE CH- CH+');
TEXTBACKGROUND(WHITE);TEXTCOLOR(8);
GOTOXY(14,7);WRITE(' Channel : 0 ');
umrande(45,5,75,24,0,7);
END;
{###########################################################################}
{# interrupt_aufgerufen : Steuert die Virtuelle TV-Fernbedienung #}
{# (Wird aktiviert wenn IR-Empfänger-Treiber ein #}
{# IR-Signal "erkannt hat") #}
{# Ausgabe : nr = Ausgewählter TV-Kanal #}
{###########################################################################}
PROCEDURE interrupt_aufgerufen(reg:registers); INTERRUPT;
VAR i,j,k,irnr,taste:BYTE;
begin
irnr:=PORT[druport]; {lese IR-Codenr ein}
TEXTBACKGROUND(0);
{zeichne gedrückte Taste und gebe Kanalzahl aus}
FOR k:=1 TO 2 DO
BEGIN
IF k=1 THEN TEXTCOLOR(0)
ELSE IF irnr<>1 THEN TEXTCOLOR(7)
ELSE TEXTCOLOR(7);
CASE irnr OF
1 : GOTOXY(7,7);
2..11 : BEGIN
taste:=irnr-1;
IF taste=10 THEN taste:=0;
IF k=1 THEN BEGIN
IF time<zeit+15
THEN BEGIN
INC(zahl);
IF zahl<2 THEN nr:=altnr*10+taste
ELSE BEGIN
zahl:=0;
nr:=taste;
altnr:=nr;
END;
END
ELSE BEGIN
nr:=taste;altnr:=nr;zahl:=0;
END;
zeit:=time;
END;
i:=(irnr-2) DIV 4;j:=(irnr-1)-i*4;GOTOXY(j*7,10+i*3);
END;
12 : GOTOXY(28,19);
13 : GOTOXY(21,19);
14 : BEGIN IF (k=1)AND(nr<99) THEN INC(nr);GOTOXY(28,22);END;
15 : BEGIN IF (k=1)AND(nr>0) THEN DEC(nr);GOTOXY(21,22);END;
16 : GOTOXY(14,19);
17 : GOTOXY(7,19);
18 : GOTOXY(7,22);
19 : GOTOXY(14,22);
END;
WRITE('█████');
TEXTBACKGROUND(WHITE);TEXTCOLOR(8);
GOTOXY(14,7);WRITE(' Channel :',nr:3,' ');
TEXTBACKGROUND(8);
IF k=1 THEN BEGIN TEXTCOLOR(0);GOTOXY(30,7);WRITE('*');DELAY(400);END
ELSE BEGIN TEXTCOLOR(7);GOTOXY(30,7);WRITE('*');END;
END;
TEXTCOLOR(0);TEXTBACKGROUND(7);
END;
BEGIN
{ parameter:=paramstr(paramcount);}
druport:=$3bc;
{ VAL(parameter,druport,fehlers);
IF paramcount=0 THEN WRITE('keine Portadresse übergeben')
ELSE BEGIN }
{Cursor aus !}
regs.ah:=$01;
regs.ch:=$F1;
regs.cl:=$0;
INTR($10,regs);
bildschirm;
GETINTVEC($6E,@oldint);
SETINTVEC($6E,ADDR(interrupt_aufgerufen));
nr:=0;zahl:=0;altnr:=0;
REPEAT
FOR j:=1 TO 18 DO
FOR i:=0 TO 26 DO
BEGIN
IF KEYPRESSED THEN BEGIN j:=18;i:=26;END;
GOTOXY(47+i,5+j);WRITE(CHR(nr+65));DELAY(100);
END;
FOR i:=1 TO 18 DO
BEGIN
GOTOXY(47,5+i);WRITE(' ');
END;
UNTIL KEYPRESSED;
{Cursor an !}
regs.ah:=$01;
regs.ch:=$E;
regs.cl:=$0;
INTR($10,regs);
TEXTCOLOR(WHITE);
TEXTBACKGROUND(0);
CLRSCR;
{ END;}
SETINTVEC($6e,NIL);
END.