DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

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

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦14f97226d⟧ TextFile

    Length: 5056 (0x13c0)
    Types: TextFile
    Notes: Mikados_K
    Names: »FORSKY1.K«

Derivation

└─⟦5630b2e42⟧ Bits:30009005 START APRIL 1985 aft april 1985 (PASCAL kildetekster)
    └─⟦this⟧ »FORSKY1.K« 
└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
    └─⟦this⟧ »FORSKY1.K« 

Mikados K File

PROCEDURE FSKDIBLK(BLKPEG:INTEGER);
VAR I,J,K:INTEGER;
BEGIN
  WITH FILEHEAD DO
  IF BLKPEG>0 THEN
(*
    FOR I:=Z((BLKINZONE-1)*ENTRYSIZE+BLT+1) DOWNTO BLKPEG DO
      FOR J:=1 TO RECSIZE DO Z(BLK+I*RECSIZE-1+J):=Z(BLK+(I-1)*RECSIZE-1+J)
*)
    MOVERIGHT(Z(BLK+(BLKPEG-1)*RECSIZE),Z(BLK+BLKPEG*RECSIZE),
              2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-BLKPEG+1))
  ELSE
(*
    FOR I:=-BLKPEG TO Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-1 DO
      FOR J:=1 TO RECSIZE DO Z(BLK+(I-1)*RECSIZE-1+J):=Z(BLK+I*RECSIZE-1+J)
*)
    MOVELEFT(Z(BLK-BLKPEG*RECSIZE),Z(BLK-(BLKPEG+1)*RECSIZE),
             2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)+BLKPEG))
END;
 
FUNCTION FINDDIR(FØRSTE,SIZE,TABLESIZE,TABLE:INTEGER):INTEGER;
VAR NÆSTE,FORRIGE,TESTV:INTEGER;
BEGIN
  WITH FILEHEAD DO
  BEGIN
    TESTV:=TABLESIZE+1;                                                   
    NÆSTE:=FØRSTE+1;                                                      
    FORRIGE:=FØRSTE;                                                      
    WHILE TESTV=TABLESIZE+1 DO                                            
    BEGIN                                                                 
      IF (NÆSTE>TABLESIZE) AND (FORRIGE<1) THEN NÆSTE:=1 DIV 0;           
(*$R-*) IF (NÆSTE<=TABLESIZE) AND (Z(TABLE+(NÆSTE-1)*ENTRYSIZE+1)<SIZE) THEN
         TESTV:=NÆSTE-FØRSTE;                                             
      IF (FORRIGE>=1) AND (Z(TABLE+(FORRIGE-1)*ENTRYSIZE+1)<SIZE) THEN     
(*$R+*)  TESTV:=FORRIGE-FØRSTE;                                           
      NÆSTE:=NÆSTE+1;                                                     
      FORRIGE:=FORRIGE-1                                                  
    END;                                                                  
    FINDDIR:=TESTV                                                        
  END
END;
 
FUNCTION RETNING(VAR PLADSIBUKET:BOOLEAN):INTEGER;
BEGIN
  WITH FILEHEAD DO
  BEGIN
   PLADSIBUKET:=Z(BUT+(BUCINZONE-1)*ENTRYSIZE+1)<RECPRBUC;
   IF PLADSIBUKET THEN
      RETNING:=FINDDIR(BLKINZONE,RECPRBLK,BLKPRBUC,BLT)
   ELSE
      RETNING:=FINDDIR(BUCINZONE,RECPRBUC,NBUC,BUT);
  END
END;
(*$P*)
PROCEDURE FSKDUBLK;
VAR I,RDPOST,WRPOST,AFSTAND,DIR:INTEGER;
    COPFRA,COPTIL:ZONEADR;
    PLADSIBUKET:BOOLEAN;
BEGIN
  WITH FILEHEAD DO
  BEGIN
    AFSTAND:=RETNING(PLADSIBUKET);
    IF AFSTAND>0 THEN
    BEGIN
      RDPOST:=2;WRPOST:=1;
      COPFRA:=BLK+BLKSIZE;COPTIL:=BLK;
      DIR:=1
    END ELSE
    BEGIN
      RDPOST:=1;WRPOST:=2;
      COPFRA:=BLK;COPTIL:=BLK+BLKSIZE;
      DIR:=-1
    END;
    WHILE AFSTAND<>0 DO
    BEGIN
      SÆTKEY(WRPOST+RECPRBLK-1);
      COPSEGS(Z(BLT+(BLKINZONE-1)*ENTRYSIZE),BLKSIZE,BLK+(WRPOST-1)*
                                                    RECSIZE,SKRIV);
      BLKCHG:=FALSE;
      IF DIR=-1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);
                   (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)
      IF ((BLKINZONE=1) AND (DIR=-1)) OR ((BLKINZONE=BLKPRBUC) AND (DIR=1))
      THEN BEGIN
        READTABLE(BUCINZONE+DIR);
        IF DIR=1 THEN BLKINZONE:=1 ELSE BLKINZONE:=BLKPRBUC;
        AFSTAND:=AFSTAND-DIR;
        IF AFSTAND=0 THEN AFSTAND:=RETNING(PLADSIBUKET)+DIR;
        BLKINZONE:=BLKINZONE-DIR
      END;
      IF DIR=1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);
                  (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)
      READBLOCK(BLKINZONE+DIR,RDPOST);
      IF PLADSIBUKET AND (AFSTAND<>0) THEN AFSTAND:=AFSTAND-DIR
    END;
    DIR:=BLK+RECSIZE*Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1);    (*-1*)
    IF RDPOST=1 THEN MOVELEFT(Z(COPTIL),Z(DIR),2*RECSIZE);
                   (*FOR I:=1 TO RECSIZE DO Z(DIR+I):=Z(COPTIL-1+I);*)
    BLKCHG:=TRUE;
    SÆTKEY(Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)+1);
  END
END;

TextFile

#PROCEDURE FSKDIBLK(BLKPEG:INTEGER);#▶12◀VAR I,J,K:INTEGER;▶12◀▶05◀BEGIN▶05◀▶12◀  WITH FILEHEAD DO▶12◀▶12◀  IF BLKPEG>0 THEN▶12◀▶02◀(*▶02◀<    FOR I:=Z((BLKINZONE-1)*ENTRYSIZE+BLT+1) DOWNTO BLKPEG DO<K      FOR J:=1 TO RECSIZE DO Z(BLK+I*RECSIZE-1+J):=Z(BLK+(I-1)*RECSIZE-1+J)K▶02◀*)▶02◀>    MOVERIGHT(Z(BLK+(BLKPEG-1)*RECSIZE),Z(BLK+BLKPEG*RECSIZE),>D              2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-BLKPEG+1))D▶06◀  ELSE▶06◀▶02◀(*▶02◀;    FOR I:=-BLKPEG TO Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-1 DO;K      FOR J:=1 TO RECSIZE DO Z(BLK+(I-1)*RECSIZE-1+J):=Z(BLK+I*RECSIZE-1+J)K▶02◀*)▶02◀=    MOVELEFT(Z(BLK-BLKPEG*RECSIZE),Z(BLK-(BLKPEG+1)*RECSIZE),=A             2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)+BLKPEG))A▶04◀END;▶04◀▶01◀ ▶01◀>FUNCTION FINDDIR(FØRSTE,SIZE,TABLESIZE,TABLE:INTEGER):INTEGER;> VAR NÆSTE,FORRIGE,TESTV:INTEGER; ▶05◀BEGIN▶05◀▶12◀  WITH FILEHEAD DO▶12◀▶07◀  BEGIN▶07◀J    TESTV:=TABLESIZE+1;                                                   JJ    NÆSTE:=FØRSTE+1;                                                      JJ    FORRIGE:=FØRSTE;                                                      JJ    WHILE TESTV=TABLESIZE+1 DO                                            JJ    BEGIN                                                                 JJ      IF (NÆSTE>TABLESIZE) AND (FORRIGE<1) THEN NÆSTE:=1 DIV 0;           JL(*$R-*) IF (NÆSTE<=TABLESIZE) AND (Z(TABLE+(NÆSTE-1)*ENTRYSIZE+1)<SIZE) THENLJ         TESTV:=NÆSTE-FØRSTE;                                             JK      IF (FORRIGE>=1) AND (Z(TABLE+(FORRIGE-1)*ENTRYSIZE+1)<SIZE) THEN     KJ(*$R+*)  TESTV:=FORRIGE-FØRSTE;                                           JJ      NÆSTE:=NÆSTE+1;                                                     JJ      FORRIGE:=FORRIGE-1                                                  JJ    END;                                                                  JJ    FINDDIR:=TESTV                                                        J▶05◀  END▶05◀▶04◀END;▶04◀▶01◀ ▶01◀2FUNCTION RETNING(VAR PLADSIBUKET:BOOLEAN):INTEGER;2▶05◀BEGIN▶05◀▶12◀  WITH FILEHEAD DO▶12◀▶07◀  BEGIN▶07◀:   PLADSIBUKET:=Z(BUT+(BUCINZONE-1)*ENTRYSIZE+1)<RECPRBUC;:▶16◀   IF PLADSIBUKET THEN▶16◀7      RETNING:=FINDDIR(BLKINZONE,RECPRBLK,BLKPRBUC,BLT)7▶07◀   ELSE▶07◀4      RETNING:=FINDDIR(BUCINZONE,RECPRBUC,NBUC,BUT);4▶05◀  END▶05◀▶04◀END;▶04◀▶06◀(*$P*)▶06◀▶13◀PROCEDURE FSKDUBLK;▶13◀(VAR I,RDPOST,WRPOST,AFSTAND,DIR:INTEGER;(▶1a◀    COPFRA,COPTIL:ZONEADR;▶1a◀▶18◀    PLADSIBUKET:BOOLEAN;▶18◀▶05◀BEGIN▶05◀▶12◀  WITH FILEHEAD DO▶12◀▶07◀  BEGIN▶07◀"    AFSTAND:=RETNING(PLADSIBUKET);"▶15◀    IF AFSTAND>0 THEN▶15◀	    BEGIN	▶1a◀      RDPOST:=2;WRPOST:=1;▶1a◀&      COPFRA:=BLK+BLKSIZE;COPTIL:=BLK;&\f

      DIR:=1\f

\f

    END ELSE\f

	    BEGIN	▶1a◀      RDPOST:=1;WRPOST:=2;▶1a◀&      COPFRA:=BLK;COPTIL:=BLK+BLKSIZE;&\r      DIR:=-1\r▶08◀    END;▶08◀▶17◀    WHILE AFSTAND<>0 DO▶17◀	    BEGIN	       SÆTKEY(WRPOST+RECPRBLK-1); D      COPSEGS(Z(BLT+(BLKINZONE-1)*ENTRYSIZE),BLKSIZE,BLK+(WRPOST-1)*DC                                                    RECSIZE,SKRIV);C▶14◀      BLKCHG:=FALSE;▶14◀=      IF DIR=-1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);=K                   (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)KK      IF ((BLKINZONE=1) AND (DIR=-1)) OR ((BLKINZONE=BLKPRBUC) AND (DIR=1))K▶10◀      THEN BEGIN▶10◀!        READTABLE(BUCINZONE+DIR);!<        IF DIR=1 THEN BLKINZONE:=1 ELSE BLKINZONE:=BLKPRBUC;<▶1d◀        AFSTAND:=AFSTAND-DIR;▶1d◀<        IF AFSTAND=0 THEN AFSTAND:=RETNING(PLADSIBUKET)+DIR;<         BLKINZONE:=BLKINZONE-DIR 
      END;
<      IF DIR=1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);<J                  (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)J&      READBLOCK(BLKINZONE+DIR,RDPOST);&?      IF PLADSIBUKET AND (AFSTAND<>0) THEN AFSTAND:=AFSTAND-DIR?▶08◀    END;▶08◀@    DIR:=BLK+RECSIZE*Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1);    (*-1*)@:    IF RDPOST=1 THEN MOVELEFT(Z(COPTIL),Z(DIR),2*RECSIZE);:F                   (*FOR I:=1 TO RECSIZE DO Z(DIR+I):=Z(COPTIL-1+I);*)F▶11◀    BLKCHG:=TRUE;▶11◀/    SÆTKEY(Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)+1);/▶05◀  END▶05◀▶04◀END;▶04◀▶00◀▶00◀▶04◀END;▶04◀▶00◀▶00◀ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

Full view