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;

Mikados K File

0x0000…0025 Line {l1=0x23, l2=»PROCEDURE FSKDIBLK(BLKPEG:INTEGER);«, l3=0x23}
0x0025…0039 Line {l1=0x12, l2=»VAR I,J,K:INTEGER;«, l3=0x12}
0x0039…0040 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x0040…0054 Line {l1=0x12, l2=»  WITH FILEHEAD DO«, l3=0x12}
0x0054…0068 Line {l1=0x12, l2=»  IF BLKPEG>0 THEN«, l3=0x12}
0x0068…006c Line {l1=0x02, l2=»(*«, l3=0x02}
0x006c…00aa Line {l1=0x3c, l2=»    FOR I:=Z((BLKINZONE-1)*ENTRYSIZE+BLT+1) DOWNTO BLKPEG DO«, l3=0x3c}
0x00aa…00f7 Line {l1=0x4b, l2=»      FOR J:=1 TO RECSIZE DO Z(BLK+I*RECSIZE-1+J):=Z(BLK+(I-1)*RECSIZE-1+J)«, l3=0x4b}
0x00f7…00fb Line {l1=0x02, l2=»*)«, l3=0x02}
0x00fb…013b Line {l1=0x3e, l2=»    MOVERIGHT(Z(BLK+(BLKPEG-1)*RECSIZE),Z(BLK+BLKPEG*RECSIZE),«, l3=0x3e}
0x013b…0181 Line {l1=0x44, l2=»              2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-BLKPEG+1))«, l3=0x44}
0x0181…0189 Line {l1=0x06, l2=»  ELSE«, l3=0x06}
0x0189…018d Line {l1=0x02, l2=»(*«, l3=0x02}
0x018d…01ca Line {l1=0x3b, l2=»    FOR I:=-BLKPEG TO Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)-1 DO«, l3=0x3b}
0x01ca…0217 Line {l1=0x4b, l2=»      FOR J:=1 TO RECSIZE DO Z(BLK+(I-1)*RECSIZE-1+J):=Z(BLK+I*RECSIZE-1+J)«, l3=0x4b}
0x0217…021b Line {l1=0x02, l2=»*)«, l3=0x02}
0x021b…025a Line {l1=0x3d, l2=»    MOVELEFT(Z(BLK-BLKPEG*RECSIZE),Z(BLK-(BLKPEG+1)*RECSIZE),«, l3=0x3d}
0x025a…029d Line {l1=0x41, l2=»             2*RECSIZE*(Z((BLKINZONE-1)*ENTRYSIZE+BLT+1)+BLKPEG))«, l3=0x41}
0x029d…02a3 Line {l1=0x04, l2=»END;«, l3=0x04}
0x02a3…02a6 Line {l1=0x01, l2=» «, l3=0x01}
0x02a6…02e6 Line {l1=0x3e, l2=»FUNCTION FINDDIR(FØRSTE,SIZE,TABLESIZE,TABLE:INTEGER):INTEGER;«, l3=0x3e}
0x02e6…0308 Line {l1=0x20, l2=»VAR NÆSTE,FORRIGE,TESTV:INTEGER;«, l3=0x20}
0x0308…030f Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x030f…0323 Line {l1=0x12, l2=»  WITH FILEHEAD DO«, l3=0x12}
0x0323…032c Line {l1=0x07, l2=»  BEGIN«, l3=0x07}
0x032c…0378 Line {l1=0x4a, l2=»    TESTV:=TABLESIZE+1;                                                   «, l3=0x4a}
0x0378…03c4 Line {l1=0x4a, l2=»    NÆSTE:=FØRSTE+1;                                                      «, l3=0x4a}
0x03c4…0410 Line {l1=0x4a, l2=»    FORRIGE:=FØRSTE;                                                      «, l3=0x4a}
0x0410…045c Line {l1=0x4a, l2=»    WHILE TESTV=TABLESIZE+1 DO                                            «, l3=0x4a}
0x045c…04a8 Line {l1=0x4a, l2=»    BEGIN                                                                 «, l3=0x4a}
0x04a8…04f4 Line {l1=0x4a, l2=»      IF (NÆSTE>TABLESIZE) AND (FORRIGE<1) THEN NÆSTE:=1 DIV 0;           «, l3=0x4a}
0x04f4…0542 Line {l1=0x4c, l2=»(*$R-*) IF (NÆSTE<=TABLESIZE) AND (Z(TABLE+(NÆSTE-1)*ENTRYSIZE+1)<SIZE) THEN«, l3=0x4c}
0x0542…058e Line {l1=0x4a, l2=»         TESTV:=NÆSTE-FØRSTE;                                             «, l3=0x4a}
0x058e…05db Line {l1=0x4b, l2=»      IF (FORRIGE>=1) AND (Z(TABLE+(FORRIGE-1)*ENTRYSIZE+1)<SIZE) THEN     «, l3=0x4b}
0x05db…0627 Line {l1=0x4a, l2=»(*$R+*)  TESTV:=FORRIGE-FØRSTE;                                           «, l3=0x4a}
0x0627…0673 Line {l1=0x4a, l2=»      NÆSTE:=NÆSTE+1;                                                     «, l3=0x4a}
0x0673…06bf Line {l1=0x4a, l2=»      FORRIGE:=FORRIGE-1                                                  «, l3=0x4a}
0x06bf…070b Line {l1=0x4a, l2=»    END;                                                                  «, l3=0x4a}
0x070b…0757 Line {l1=0x4a, l2=»    FINDDIR:=TESTV                                                        «, l3=0x4a}
0x0757…075e Line {l1=0x05, l2=»  END«, l3=0x05}
0x075e…0764 Line {l1=0x04, l2=»END;«, l3=0x04}
0x0764…0767 Line {l1=0x01, l2=» «, l3=0x01}
0x0767…079b Line {l1=0x32, l2=»FUNCTION RETNING(VAR PLADSIBUKET:BOOLEAN):INTEGER;«, l3=0x32}
0x079b…07a2 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x07a2…07b6 Line {l1=0x12, l2=»  WITH FILEHEAD DO«, l3=0x12}
0x07b6…07bf Line {l1=0x07, l2=»  BEGIN«, l3=0x07}
0x07bf…07fb Line {l1=0x3a, l2=»   PLADSIBUKET:=Z(BUT+(BUCINZONE-1)*ENTRYSIZE+1)<RECPRBUC;«, l3=0x3a}
0x07fb…0813 Line {l1=0x16, l2=»   IF PLADSIBUKET THEN«, l3=0x16}
0x0813…084c Line {l1=0x37, l2=»      RETNING:=FINDDIR(BLKINZONE,RECPRBLK,BLKPRBUC,BLT)«, l3=0x37}
0x084c…0855 Line {l1=0x07, l2=»   ELSE«, l3=0x07}
0x0855…088b Line {l1=0x34, l2=»      RETNING:=FINDDIR(BUCINZONE,RECPRBUC,NBUC,BUT);«, l3=0x34}
0x088b…0892 Line {l1=0x05, l2=»  END«, l3=0x05}
0x0892…0898 Line {l1=0x04, l2=»END;«, l3=0x04}
0x0898…08a0 Line {l1=0x06, l2=»(*$P*)«, l3=0x06}
0x08a0…08b5 Line {l1=0x13, l2=»PROCEDURE FSKDUBLK;«, l3=0x13}
0x08b5…08df Line {l1=0x28, l2=»VAR I,RDPOST,WRPOST,AFSTAND,DIR:INTEGER;«, l3=0x28}
0x08df…08fb Line {l1=0x1a, l2=»    COPFRA,COPTIL:ZONEADR;«, l3=0x1a}
0x08fb…0915 Line {l1=0x18, l2=»    PLADSIBUKET:BOOLEAN;«, l3=0x18}
0x0915…091c Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x091c…0930 Line {l1=0x12, l2=»  WITH FILEHEAD DO«, l3=0x12}
0x0930…0939 Line {l1=0x07, l2=»  BEGIN«, l3=0x07}
0x0939…095d Line {l1=0x22, l2=»    AFSTAND:=RETNING(PLADSIBUKET);«, l3=0x22}
0x095d…0974 Line {l1=0x15, l2=»    IF AFSTAND>0 THEN«, l3=0x15}
0x0974…097f Line {l1=0x09, l2=»    BEGIN«, l3=0x09}
0x097f…099b Line {l1=0x1a, l2=»      RDPOST:=2;WRPOST:=1;«, l3=0x1a}
0x099b…09c3 Line {l1=0x26, l2=»      COPFRA:=BLK+BLKSIZE;COPTIL:=BLK;«, l3=0x26}
0x09c3…09d1 Line {l1=0x0c, l2=»      DIR:=1«, l3=0x0c}
0x09d1…09df Line {l1=0x0c, l2=»    END ELSE«, l3=0x0c}
0x09df…09ea Line {l1=0x09, l2=»    BEGIN«, l3=0x09}
0x09ea…0a06 Line {l1=0x1a, l2=»      RDPOST:=1;WRPOST:=2;«, l3=0x1a}
0x0a06…0a2e Line {l1=0x26, l2=»      COPFRA:=BLK;COPTIL:=BLK+BLKSIZE;«, l3=0x26}
0x0a2e…0a3d Line {l1=0x0d, l2=»      DIR:=-1«, l3=0x0d}
0x0a3d…0a47 Line {l1=0x08, l2=»    END;«, l3=0x08}
0x0a47…0a60 Line {l1=0x17, l2=»    WHILE AFSTAND<>0 DO«, l3=0x17}
0x0a60…0a6b Line {l1=0x09, l2=»    BEGIN«, l3=0x09}
0x0a6b…0a8d Line {l1=0x20, l2=»      SÆTKEY(WRPOST+RECPRBLK-1);«, l3=0x20}
0x0a8d…0ad3 Line {l1=0x44, l2=»      COPSEGS(Z(BLT+(BLKINZONE-1)*ENTRYSIZE),BLKSIZE,BLK+(WRPOST-1)*«, l3=0x44}
0x0ad3…0b18 Line {l1=0x43, l2=»                                                    RECSIZE,SKRIV);«, l3=0x43}
0x0b18…0b2e Line {l1=0x14, l2=»      BLKCHG:=FALSE;«, l3=0x14}
0x0b2e…0b6d Line {l1=0x3d, l2=»      IF DIR=-1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);«, l3=0x3d}
0x0b6d…0bba Line {l1=0x4b, l2=»                   (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)«, l3=0x4b}
0x0bba…0c07 Line {l1=0x4b, l2=»      IF ((BLKINZONE=1) AND (DIR=-1)) OR ((BLKINZONE=BLKPRBUC) AND (DIR=1))«, l3=0x4b}
0x0c07…0c19 Line {l1=0x10, l2=»      THEN BEGIN«, l3=0x10}
0x0c19…0c3c Line {l1=0x21, l2=»        READTABLE(BUCINZONE+DIR);«, l3=0x21}
0x0c3c…0c7a Line {l1=0x3c, l2=»        IF DIR=1 THEN BLKINZONE:=1 ELSE BLKINZONE:=BLKPRBUC;«, l3=0x3c}
0x0c7a…0c99 Line {l1=0x1d, l2=»        AFSTAND:=AFSTAND-DIR;«, l3=0x1d}
0x0c99…0cd7 Line {l1=0x3c, l2=»        IF AFSTAND=0 THEN AFSTAND:=RETNING(PLADSIBUKET)+DIR;«, l3=0x3c}
0x0cd7…0cf9 Line {l1=0x20, l2=»        BLKINZONE:=BLKINZONE-DIR«, l3=0x20}
0x0cf9…0d05 Line {l1=0x0a, l2=»      END;«, l3=0x0a}
0x0d05…0d43 Line {l1=0x3c, l2=»      IF DIR=1 THEN MOVELEFT(Z(COPFRA),Z(COPTIL),2*RECSIZE);«, l3=0x3c}
0x0d43…0d8f Line {l1=0x4a, l2=»                  (*FOR I:=1 TO RECSIZE DO Z(COPTIL-1+I):=Z(COPFRA-1+I);*)«, l3=0x4a}
0x0d8f…0db7 Line {l1=0x26, l2=»      READBLOCK(BLKINZONE+DIR,RDPOST);«, l3=0x26}
0x0db7…0df8 Line {l1=0x3f, l2=»      IF PLADSIBUKET AND (AFSTAND<>0) THEN AFSTAND:=AFSTAND-DIR«, l3=0x3f}
0x0df8…0e02 Line {l1=0x08, l2=»    END;«, l3=0x08}
0x0e02…0e44 Line {l1=0x40, l2=»    DIR:=BLK+RECSIZE*Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1);    (*-1*)«, l3=0x40}
0x0e44…0e80 Line {l1=0x3a, l2=»    IF RDPOST=1 THEN MOVELEFT(Z(COPTIL),Z(DIR),2*RECSIZE);«, l3=0x3a}
0x0e80…0ec8 Line {l1=0x46, l2=»                   (*FOR I:=1 TO RECSIZE DO Z(DIR+I):=Z(COPTIL-1+I);*)«, l3=0x46}
0x0ec8…0edb Line {l1=0x11, l2=»    BLKCHG:=TRUE;«, l3=0x11}
0x0edb…0f0c Line {l1=0x2f, l2=»    SÆTKEY(Z(BLT+(BLKINZONE-1)*ENTRYSIZE+1)+1);«, l3=0x2f}
0x0f0c…0f13 Line {l1=0x05, l2=»  END«, l3=0x05}
0x0f13…0f19 Line {l1=0x04, l2=»END;«, l3=0x04}
0x0f19…0f20 00 00 04 45 4e 44 3b                                                                              ┆   END;┆
0x0f20…0f40 04 00 00 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63   ┆   ccccccccccccccccccccccccccccc┆
0x0f40…0f60 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63   ┆cccccccccccccccccccccccccccccccc┆
            […0x23…]

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

Reduced view