DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC700 "Piccolo"

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC700 "Piccolo"

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦bf83304a4⟧ TextFile

    Length: 2048 (0x800)
    Types: TextFile
    Names: »SL69.PAS«

Derivation

└─⟦2a24d2e1b⟧ Bits:30003042 Programmer fra Aarhus kursus
    └─ ⟦this⟧ »SL69.PAS« 

TextFile

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»