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