|
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 - 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»