|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4736 (0x1280)
Types: TextFile
Names: »XYFYSIK.PAS«
└─⟦ba3b4f658⟧ Bits:30003088 Xray: elevopgave i Pascal, feb 92
└─⟦this⟧ »XYFYSIK.PAS«
(************ XYFYSIK ******************************************)
CONST OMSKIFT = FALSE;
procedure tristate;
var i :integer;
begin
port(.piodata.):=53;
port(.piodata.):=21;
for i:=1 to 5000 do; (* vent mindst 0.1 sek *)
port(.piodata.):=31;
for i:=1 to 22000 do; (* vent mindst 0.6 sek *)
port(.piodata.):=53;
for i:=1 to 10000 do; (* vent mindst 0.2 sek *)
end;
FUNCTION COMPX :INTEGER;
BEGIN
COMPX:=PORT(.PIODATA.) AND 128 (* ER BIT 7 =1 ?? *);
END;
FUNCTION COMPY : INTEGER;
BEGIN
COMPY:= PORT(.PIODATA.) AND 64 ; (* ER BIT 6 = 1 ?? *)
END;
FUNCTION VOLTINDX :REAL;
BEGIN
TRISTATE;
IF COMPX=0 THEN
WHILE (COMPX=0) AND (XYCURX<1023) DO XUYN
ELSE
WHILE (COMPX<>0) AND (XYCURX>0) DO XDYN;
TRISTATE;
IF NOT(PENOPPE) THEN POSSHIFT; (* FOR AT GENSKABE PEN-POSITION *)
VOLTINDX:=XYCURX/1023*10;
END;
FUNCTION VOLTINDY :REAL;
BEGIN
TRISTATE;
IF COMPY=0 THEN
WHILE (COMPY=0) AND (XYCURY<1023) DO XNYU
ELSE
WHILE (COMPY<>0) AND (XYCURY>0) DO XNYD;
TRISTATE;
IF NOT(PENOPPE) THEN POSSHIFT; (* FOR AT GENSKABE PEN-POSITION *)
VOLTINDY:=XYCURY/1023*10;
END;
PROCEDURE VOLTUDX(V:REAL);
VAR I,STEP :INTEGER;
BEGIN
IF V>10 THEN
BEGIN
V:=10;WRITELN;WRITELN('* Overflow i x-spændingen *');
end;
IF V<0 THEN
BEGIN
V:=0;WRITELN;WRITELN('* Underflow i y-spændingen *');
END;
STEP:=ROUND(V/10*1023)-XYCURX;
FOR I:=1 TO STEP DO XUYN;
FOR I:=-1 DOWNTO STEP DO XDYN;
END;
PROCEDURE VOLTUDY(V:REAL);
VAR I,STEP :INTEGER;
BEGIN
IF V>10 THEN
BEGIN
V:=10;WRITELN;WRITELN('* Overflow i x-spændingen *');
end;
IF V<0 THEN
BEGIN
V:=0;WRITELN;WRITELN('* Underflow i y-spændingen *');
END;
STEP:=ROUND(V/10*1023)-XYCURY;
FOR I:=1 TO STEP DO XNYU;
FOR I:=-1 DOWNTO STEP DO XNYD;
END;
PROCEDURE VOLTUDCLK(VAR DATA:REALARRAY;ANTAL :INTEGER);
VAR I: INTEGER; VOLT :INTARRAY; OVERFLOW,UNDERFLOW :BOOLEAN;
PROCEDURE VCLKUD(VAR DATA:INTARRAY;ANTAL:INTEGER);
BEGIN
(* EN CODE PROCEDURE *)
END;
BEGIN
OVERFLOW:=FALSE; UNDERFLOW:=FALSE;
FOR I:=0 TO ANTAL-1 DO
BEGIN
IF DATA(.I.)>10 THEN BEGIN VOLT(.I.):=1023;OVERFLOW:=TRUE;END;
IF DATA(.I.)<0 THEN BEGIN VOLT(.I.):=0; UNDERFLOW:=TRUE;END;
IF (DATA(.I.)>=0) AND (DATA(.I.)<=10) THEN
VOLT(.I.):= ROUND(DATA(.I.)/10*1023);
END;
IF OVERFLOW THEN BEGIN WRITELN;WRITELN('*OVERFLOW I SPÆNDINGEN') END;
IF UNDERFLOW THEN BEGIN WRITELN;WRITELN('*UNDERFLOW I SPÆNDINGEN') END;
INITZERO;
TRISTATE;
FOR I:=1 TO 143 DO XUYN; (* SÆT X-TRIGGERNIVEAU TIL 1.4 V *)
IF OMSKIFT THEN POSSHIFT; (* PENUDGANG SKAL VÆRE 0 V *)
WRITELN;WRITELN('* CLOCKED SPÆNDINGSUDSENDELSE - KLAR!! *');
PAUSE;
VCLKUD(VOLT,ANTAL);
TRISTATE;
IF NOT(PENOPPE) THEN POSSHIFT; (* GENSKABER PEN-POSITION *)
XYCURY:=VOLT(.ANTAL-1.);
END;
PROCEDURE VOLTINDCLK(VAR DATA:REALARRAY;ANTAL:INTEGER);
VAR I :INTEGER;VOLT:INTARRAY;
PROCEDURE VCLKIND(VAR DATA:INTARRAY;ANTAL:INTEGER);
BEGIN
CODE
$ED,$4B,ANTAL,$ED,$6B,DATA,$11,$00,$00,$F3,$DB,$11,$E6,$80,$28,$FA,
$DB,$11,$E6,$80,$20,$FA,$DB,$11,$E6,$40,$28,$15,$7B,
$B2,$28,$27,$3E,$31,$D3,$11,$3E,$35,$D3,$11,$1B,$DB,
$11,$E6,$40,$20,$ED,$18,$16,$13,$7A,$FE,$04,$28,$0F,
$3E,$39,$D3,$11,$3E,$3D,$D3,$11,$13,$DB,$11,$E6,$40,
$28,$EC,$1B,$73,$23,$72,$23,$0B,$78,$B1,$20,$BA,$FB
END;
BEGIN
INITZERO;
TRISTATE;
FOR I:=1 TO 143 DO XUYN; (* SÆT TRIGGERNIVEAU TIL 1.4 V *)
WRITELN;WRITELN('* CLOCKED SPÆNDINGSMÅLING KLAR!! *');
PAUSE;
VCLKIND(VOLT,ANTAL);
TRISTATE;
IF NOT(PENOPPE) THEN POSSHIFT; (* PENPOSITION GENSKABES *)
FOR I:=0 TO ANTAL-1 DO DATA(.I.):=VOLT(.I.)/1023*10;
XYCURX:=143;XYCURY:=VOLT(.ANTAL-1.);
END;
procedure impulsclk(var puls:intarray;antal:integer);
var i: integer;
begin
initzero;
for i:=1 to 143 do xuyu; (* sæt x-y-triggerniveau til 1.4V *)
code
$01,PIODATA,$2A,ANTAL ,$DD,$2A,PULS ,$F3,$ED,$78,$E6,$80,$28,
$FA,$ED,$78,$E6,$80,$20,$FA,$11,$00,$00,$ED,$78,$CB,$7F,$20,$11,
$E6,$40,$20,$F6,$13,$ED,$78,$CB,$7F,$20,$06,$E6,$40,$28,$F6,$18,
$E9,$ED,$78,$CB,$7F,$28,$11,$E6,$40,$20,$F6,$13,$ED,$78,$CB,$7F,
$28,$06,$E6,$40,$28,$F6,$18,$E9,$DD,$73,$00,$DD,$23,$DD,$72,$00,
$DD,$23,$2B,$7C,$B5,$20,$C0,$FB
END;
«eof»