|
|
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: 2048 (0x800)
Types: TextFile
Names: »SL69.PAS«
└─⟦2a24d2e1b⟧ Bits:30003042 Programmer fra Aarhus kursus
└─⟦this⟧ »SL69.PAS«
program sl69;
var
register : integer;
lager : array (. 0..63 .) of integer;
ordre : integer;
ordretaeller : 0..63;
adresse : 0..63;
operation : 0..15;
stop : boolean;
begin
(* Initialiser lageret saa det indeholder indlaeseprogram. *)
lager(. 0.) := 633; lager(.51.) := 126;
lager(.52.) := 249; lager(.53.) := 185;
lager(.54.) := 126; lager(.55.) := 250;
lager(.56.) := 186; lager(.57.) := 448;
lager(.58.) := 64; lager(.59.) := 319;
lager(.60.) := 691; lager(.61.) := 576;
lager(.62.) := 1; lager(.63.) := 1023;
(* Lageret indeholder program og data. Maskinen startes. *)
ordretaeller := 0;
stop := false;
repeat
(* Hent ordre og opdater ordretaeller. *)
ordre := lager(. ordretaeller .);
ordretaeller := ordretaeller + 1;
(* Afkod ordre efter format:
4 bit 6 bit
Operation Adresse *)
operation := (ordre mod 1024) div 64;
adresse := ordre mod 64;
(* Udfqr ordre. *)
case operation of
0: (*STOP*)
stop := true;
1: (*HENT*)
register := lager(.adresse.);
2: (*GEM*)
lager(.adresse.) := register;
3: (*ADDER*)
register := register + lager(.adresse.);
4: (*SUBTRAHER*)
register := register - lager(.adresse.);
5: (*MULTIPLICER*)
register := register * lager(.adresse.);
6: (*DIVIDER*)
register := register div lager(.adresse.);
7: (*LAES*)
begin
write('? ');
readln( lager(.adresse.) );
end;
8: (*TRYK*)
writeln( lager(.adresse.) );
9: (*HOP*)
ordretaeller := adresse;
10: (*HOPNEG*)
if register < 0 then
ordretaeller := adresse;
end; (*case*)
until stop;
end. (*SL69*)
«eof»