💾 Archived View for going-flying.com › files › LED.PAS captured on 2020-09-24 at 00:47:16.

View Raw

More Information

-=-=-=-=-=-=-

Program CgiLights;
Uses CRT,strnttt5;

Const Address : word = $378;
    	mver : string = '1';
        minver : string ='0b3c';

type statrec = record
	Led1Toggled:boolean;
	Led2Toggled:boolean;
        Led3Toggled:boolean;
	End;

var inchar:char;
    Status:statrec;
    CommandProcessed: boolean;
    tf:text;
    counts:string;count:longint;


Procedure IncrementCounter;
Var
f:text;
Begin
Assign(f,'count.txt');

Reset(f);
readln(f,counts);
close(f);
count:=str_to_int(counts);
inc(count);
rewrite(f);
writeln(f,count);
close(f);
end;


Procedure SetLed1(Status:boolean);
Begin
Case Port[Address] of
	$00 : If Status then Port[Address]:=$01;
        $02 : If Status then Port[Address]:=$03;
        $04 : If Status then Port[Address]:=$05;
        $06 : If Status then Port[Address]:=$07;
        $01 : If Not Status Then Port[Address]:=$00;
        $03 : If Not Status Then Port[Address]:=$02;
        $07 : If Not Status Then Port[Address]:=$06;
End; {case}
End; {proc}


Procedure SetLed2(Status:boolean);
Begin
Case Port[Address] of
	$00 : If Status then Port[Address]:=$02;
        $01 : If Status then Port[Address]:=$03;
        $04 : If Status then Port[Address]:=$06;
        $05 : If Status then Port[Address]:=$07;
        $02 : If Not Status Then Port[Address]:=$00;
        $03 : If Not Status Then Port[Address]:=$01;
        $06 : If Not Status Then Port[Address]:=$04;
        $07 : If Not Status Then Port[Address]:=$05;
End; {case}
End; {proc}


Procedure SetLed3(Status:boolean);
Begin
Case Port[Address] of
	$00 : If Status then Port[Address]:=$04;
        $01 : If Status then Port[Address]:=$05;
        $02 : If Status then Port[Address]:=$06;
        $03 : If Status then Port[Address]:=$07;
        $04 : If Not Status Then Port[Address]:=$00;
        $05 : If Not Status Then Port[Address]:=$01;
        $06 : If Not Status Then Port[Address]:=$02;
        $07 : If Not Status Then Port[Address]:=$03;
End; {case}
End; {proc}

Function GetLed1:boolean;
Begin
        GetLed1:=False;
        if Port[Address]=$01 then GetLed1:=true;
        if Port[Address]=$03 then GetLed1:=true;
	if Port[Address]=$05 then GetLed1:=true;
        if Port[Address]=$07 then GetLed1:=true;
End; {proc}

Function GetLed2:boolean;
Begin
        GetLed2:=False;
        if Port[Address]=$02 then GetLed2:=true;
        if Port[Address]=$03 then GetLed2:=true;
	if Port[Address]=$06 then GetLed2:=true;
        if Port[Address]=$07 then GetLed2:=true;
End; {proc}

Function GetLed3:boolean;
Begin
        GetLed3:=False;
        if Port[Address]=$04 then GetLed3:=true;
        if Port[Address]=$05 then GetLed3:=true;
	if Port[Address]=$06 then GetLed3:=true;
        if Port[Address]=$07 then GetLed3:=true;
End; {proc}

Procedure WriteWWWInterface;
var
f:text;
Begin
        Assign(f,'led.txt');
        Rewrite(f);
	Writeln(f,'Content-Type: text/html');
        Writeln(f,'');
        Writeln(f,'<HTML><HEAD><TITLE>The Amazing Led Thing</TITLE></HEAD><BODY><CENTER>');
        Writeln(f,'<IMG SRC="/led/header.jpg" alt="[Matt''s LED Script]"><BR>');
        Writeln(f,'<A HREF="/cgi-bin/led/led.bat?info">Information</A><BR>');
        If CommandProcessed Then
        	Begin
			Writeln(f,'<TABLE BORDER=1><TD>');
                        Writeln(f,'<B><CENTER>- - - - -Status Window- - - - -</B><BR>');
                        If Status.Led1Toggled Then Writeln(f,'Toggled LED 1!');
                        If Status.Led2Toggled Then Writeln(f,'Toggled LED 2!');
			If Status.Led3Toggled Then Writeln(f,'Toggled LED 3!');
                        Writeln(f,'</TD></TABLE><BR><HR>');
                End;
        Writeln(f,'Light Emitting Diode (LED) Status:<BR>');
	If GetLed1 Then Writeln(f,'LED 1: On') Else Writeln(f,'LED 1: Off');
        Writeln(f,'<BR>');
        If GetLed2 Then Writeln(f,'LED 2: On') Else Writeln(f,'LED 2: Off');
        Writeln(f,'<BR>');
        If GetLed3 Then Writeln(f,'LED 3: On') Else Writeln(f,'LED 3: Off');
        Writeln(f,'<BR>');
        Writeln(f,'Control Center:<HR Width="50%">');
        Writeln(f,'<A HREF="/cgi-bin/led/led.bat?toggle1">Toggle LED 1</A> ');
        Writeln(f,'<A HREF="/cgi-bin/led/led.bat?toggle2">Toggle LED 2</A> ');
        Writeln(f,'<A HREF="/cgi-bin/led/led.bat?toggle3">Toggle LED 3</A><BR>');
        Writeln(f,'There have been '+counts+'hits.<BR><HR><I></CENTER>lights'+mver+'.'+minver+'');
        Writeln(f,'<CENTER>This Project Is (c) 1998 <a href="mailto:selfdestruct@innocent.com">Matthew Ernisse</a>');
	Writeln(f,' All Rights Reserved.<BR>');
        Writeln(f,'Hosted By <a href="http://www.infinitycomputers.dyn.ml.org/">Infinity Computers Of Rochester, Ny.</A><BR>');
        Writeln(f,'</CENTER></BODY>');
	Close(f);
End;

Begin
{Port[Address]:=$00;
$00 = 1=0,2=0,3=0
$01 = 1=1,2=0,3=0
$02 = 1=0,2=1,3=0
$03 = 1=1,2=1,3=0
$04 = 1=0,2=0,3=1
$05 = 1=1,2=0,3=1
$06 = 1=0,2=1,3=1
$07 = 1=1,2=1,3=1}
        IncrementCounter;
	Status.Led1Toggled:=false;
        Status.Led2Toggled:=false;
        Status.Led3Toggled:=false;
        CommandProcessed:=false;
	If ParamStr(1)='info' then
        Begin
        	assign(tf,'led.txt');
                rewrite(tf);
        	Writeln(tf,'Content-Type: text/html');
                Writeln(tf,'');
                Writeln(tf,'<HTML><HEAD><TITLE>The Led Thingy!  Info</TITLE><BODY>');
                Writeln(tf,'This Is a Script to play with the 2 led''s plugged into my');
                Writeln(tf,'parallel port.  Play with it.');
        	Close(tf);
        	Halt(0);
        End;
        If ParamStr(1)='toggle1' then
        	Begin
                        CommandProcessed:=true;
                        Status.Led1Toggled:=true;
                        SetLed1(Not GetLed1);
                End;

        If ParamStr(1)='toggle2' then
        	Begin
                        CommandProcessed:=true;
                        Status.Led2Toggled:=true;
                        SetLed2(Not GetLed2);
                End;
        If ParamStr(1)='toggle3' then
        	Begin
                        CommandProcessed:=true;
                        Status.Led3Toggled:=true;
                        SetLed3(Not GetLed3);
                End;

	WriteWWWInterface;
End.