DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦227daac57⟧ TextFile

    Length: 2270 (0x8de)
    Types: TextFile
    Names: »SORT.S«

Derivation

└─⟦434915751⟧ Bits:30005204 8" CR80 Floppy CR80FD_0057 ( VOL: DOWN CF/810615 )
    └─⟦8498d5bf1⟧ 
        └─ ⟦this⟧ »SORT.S« 

TextFile

SUBMODULE SORT;
EXPORT PROCEDURE SORT   (R4; R5; R6);
CONST
  MAXINT = 15;
TYPE
  REGISTER = 0..MAXINT;
VAR
  TABEL: ARRAY [REGISTER] OF INTEGER;
BEGIN
  R6 => R7;
  0 => R0;
  13 => R1;
  WHILE R1 >= R0 DO
    BEGIN
      15 => R3;
      WHILE R3 >= R0 DO
        BEGIN
          R4@INTEGER => R2;
          (R4 + 1)@INTEGER => R5;
          IF R3 = 15 LOGAND R1 = 13 THEN   "HVIS R3 = 15 OG R1 = 13 LAEG-
            BEGIN                          "GES TALLET FRA 1.STE ADR. I
              R2 => R6;                    "REGISTERET IND I R6.
            END;
            WHILE R1 = 13 DO               "SAALAENGE R1 = 13 LAEGGES
              BEGIN                        "TALLET FRA NAESTE ADR. I
                R6 + R5;                   "REGISTRET SOM ER I R5 LAEG-
              END;                         "GES TIL R6. R6 SUMMERER.
              IF R5 < R2 THEN              "HVIS R5 < R2 PAABEGYNDES EN
                BEGIN                      "SWAPNING AF TALLENE (BYTNING).
                  R5 => (R4 - 1)@INTEGER;
                  R2 => (R4 + 1)@INTEGER;
                END;
        END;
        R3 - 1;
    END;
    IF R1 = R0 THEN                        "HVIS R1 = R0 NULSTILLES R3 OG
      BEGIN                                "15 LAEGGES I R5.
        0 => R3;
        15 => R5;
        WHILE R5 >= R0 DO                  "SAALAENGE R5 >= R0 HENTES TAL
          BEGIN                            "FRA REGISTRET OG LAEGGES I R2.
            R4@INTEGER => R2;
            IF R2 >= 1 THEN                "HVIS R2 >= 1 FOROEGES R3 MED
              BEGIN                        "1.
                R3 + 1;
              END;
          END;
          (R4 + 1)@INTEGER;                "NAESTE ADR. I REGISTRET.
          R0 + 1;                          "R0 FOROEGES MED 1.
          IF R5 = R0 THEN                  "HVIS R5 = R0 LAEGGES R6 IND
            BEGIN                          "I R5. R6 NULSTILLES. R56 DI-
              R6 => R5;                    "VIDERES MED R3.
              0 => R6;
              R56/R3;
            END
      END
    ELSE
      BEGIN                                "HVIS R1 IKKE ER IDENTISK MED
        R1 - 1;                            "R0 SUBTRAHERER VI R1 MED 1.
      END;
  R7 => R6;
  EXIT(R6);
END;
ENDMODULE