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.

Proxy Information
Original URL
gemini://going-flying.com/files/LED.PAS
Status Code
Success (20)
Meta
text/x-pascal; charset=utf-8
Capsule Response Time
591.043652 milliseconds
Gemini-to-HTML Time
1.911729 milliseconds

This content has been proxied by September (ba2dc).