FILEMAP

(George Source)

Macros used: ALTLEND, ALTLENG, BXE, BXGE, BXL, FILENUMB, GEOERR, MAPBDEL, MENDAREA, NOBITS, SEGENTRY, SFMAP, SXFCB, TRACE, TRACEIF, UP

FILEMAP.txt
22FL    #OPT  K6FILEMAP=K6ALLGEO>K6FILESTORE
22^=    #OPT  K0FILEMAP=K0ALLGEO>K0FILESTORE
23DW    #LIS  K0FILEMAP 
23YG    #SEG    FILEMAP                    [ TONY HAMILTON  
24D6          8HFILEMAP 
24XQ    [   
25CB          SEGENTRY K1FILEMAP,XMAPBINS   
25X2          SEGENTRY K21FILEMAP,ZMAPBINS  
26BL    #   
26W=    #     USE OF WORKING SPACE  
27*W    #     AWORK1  =NO OF BITS TO BE INSERTED
27TG    #     AWORK2  =NO OF BIT BEFORE WHICH BITS ARE TO BE INSERTED   
28*6    #     AWORK3  =FILE DEPTH   
28SQ    NOBITS  
29#B    NOBIT   
29S2          GEOERR 1,MAPBIT??            [PARAMETERS FOR MAPBIN WRONG.
2=?L    MODBIT  
2=R=          GEOERR 1,FMAPP???            [NO FMAPP BLOCK. 
2?=W    SFMAP   
2?QG    #HAL  FILE+FMAPP,0  
2#=6    #   
2#PQ    #     MAPBIN INSERTS [EXEC1] BITS BEFORE THE [EXEC2]TH BIT IN THE   
2*9B    #     FMAPP BLOCK OF THE FILE AT DEPTH [EXEC3].THESE BITS ARE SET.  
2*P2    #   
2B8L    #     WE VALIDATE THE PARAMETERS,FIND THE FMAPP BLOCK,UPDATE FBCOMM &   
2BN=    #     FBITMOD,AND ALTLEN THE FMAPP BLOCK IF NECESSARY.  
2C7W    #   
2CMG    #     IN THE COMMENTS WE USE THE FOLLOWING TERMINOLOGY: 
2D76    #   
2DLQ    #     "THE INSERT BIT" IS THE BIT BEFORE WHICH WE ARE INSERTING THE 
2F6B    #     NEW BIT   
2FL2    #   
2G5L    #       WN     IS THE WORD IN WHICH THE INSERT BIT IS IN ON ENTRY   
2GK=    #       BN     IS THE BIT IN WN WHICH IS THE INSERT BIT (RANGE 1-24)
2H4W    #       WNM    IS THE WORD IN WHICH THE INSERT BIT ENDS UP IN   
2HJG    #       BNM    IS THE BIT IN WNM WHERE THE INSERT BIT ENDS UP.  
2J46    #       W1     IS THE INITIAL SIZE OF THE MAP IN WORDS -1   
2JHQ    #       W2     IS THE FINAL SIZE OF THE MAP IN WORDS-1  
2K3B    #   
2KH2    SFINDMAP
2L2L    #     REQUIRES AWORK3 TO HOLD FILE DEPTH
2LG=    #     GIVES X1->MAP 
2L^W    #           X0 DESTROYED  X7=LINK   
2MFG          SMO      FX2  
2M^6          LDX   0  AWORK3   
2NDQ          SXFCB    0,1                 [GET X1->FCB 
2NYB          LDX   1  FPTR(1)  
2PD2    SFLOOP  
2PXL          LDX   1  FPTR(1)  
2QC=          BXE   1  CXFI,MODBIT  
2QWW          LDX   0  ATYPE(1) 
2RBG          BXE   0  FILEPLUSFCB,MODBIT   
2RW6          SMO      FX1  
2S*Q          TXU   0  SFMAP
2STB          BCS      SFLOOP              [CHECK FOR FMAP  
2T*2          EXIT  7  0
2TSL    [   
2W#=    ZMAPBINS       [TOP LEVEL FILE  
2WRW    [   
2X?G          STOZ     AWORK3(2)
2XR6          BRN      MERJMAP  
2Y=Q    [   
2YQB    XMAPBINS
2^=2    [   
2^PL          LDX   6  ACOMMUNE9(2)        [PICK UP FILE DEPTH  
329=          BPZ   6  POS                 [J.UNLESS NEGATIVE DEPTH GIVEN   
32NW          FILENUMB 0                   [GET X0=NO OF FILES OPEN 
338G          ADX   6  0
33N6    POS 
347Q          STO   6  AWORK3(2)           [SET POSITIVE FILE DEPTH 
34MB    MERJMAP 
3572          LDX   0  ACOMMUNE7(2) 
35LL          BZE   0  NOBITS              [ERROR IF NONE OR TOO MANY   
366=          BXGE  0  BSBS,NOBITS  
36KW          STO   0  AWORK1(2)           [SET NO. OF BITS TO BE INSERTED  
375G          LDX   0  ACOMMUNE8(2) 
37K6          BZE   0  NOBITS   
384Q          BXGE  0  BSBS,NOBITS         [ERROR IF NONE OR TOO MANY   
38JB    #SKI K6FILEMAP>99$99
3942          TRACE  0,BIT INS  
39HL          STO   0  AWORK2(2)           [SET BIT ADDRESS 
3=3=          CALL  7  SFINDMAP 
3=GW    #SKI  K6FILEMAP>299$299 
3?2G          BLOCKTRA 1,FMAP1  
3?G6          LDN   5  3
3?^Q          ORS   5  FBCOMM(1)           [SET CAREFUL MODE MARKER FOR CLOSE   
3#FB          LDX   5  FBITMOD(1)   
3#^2    #SKI K6FILEMAP>99$99
3*DL          TRACE  5,FBITMOD  
3*Y=          BNG   5  MODBIT              [ERROR IF NEGATIVE   
3BCW          BXGE  5  BSBS,NOBITS         [ERROR IF TOO LARGE  
3BD2 ...#SKI  1        [CORRECTION FOR B3932: REPLACES REST OF CHAPTER  
3BD6 ...(   
3BD= ...[ THIS METHOD ROUNDS UP THE NUMBER OF BITS TO BE INSERTED(N) TO A MULTIP
3BDB ...[OF 24. THEN DOES MAPBDELS IN A LOOP TO DELETE THE EXTRA BITS   
3BDG ...[ W IS THE ADDRESS RELATIVE TO FBITS OF THE WORD CONTAINING THE 1ST NEW 
3BDL ...[ D IS THE ADDRESS RELATIVE TO FBITS OF THE LAST WORD IN THE EXTENDED MA
3BDQ ...[ X IS NUMBER OF BITS IN W BEFORE INSERT POSITION   
3BDW ...[ AWORK4 HOLDS THE ROUNDING FACTOR  
3BF2 ...#     NOTE WELL: WE DO NOT USE B0 OF FBITS.[FBITMOD]= NO OF BLOCKS IN   
3BF6 ...#     THE FILE,I.E. THE NUMBER OF SIGNIFICANT BITS.THUS WHEN WE DIVIDE  
3BF= ...#     [FBITMOD]BY 24,IF IT IS AN EXACT MULTIPLE,THE LAST BIT GOES INTO  
3BFB ...#     THE LAST WORD ON ITS OWN. 
3BFG ...      ADN   5  1
3BFL ...      BXL   5  AWORK2(2),MODBIT    [ERROR IF AWORK2>FBITMOD+1   
3BFQ ...      STOZ     AWORK4(2)
3BFW ...      LDX   6  AWORK1(2)           [N   
3BG2 ...      TRACEIF  K6FILEMAP,199,199,6,FILEMAPN 
3BG6 ...      LDN   5  24   
3BG= ...      DVS   5  5                   [X6 HAS NUMBER OF WHOLE WORDS
3BGB ...      BZE   5  ROUNDNUMBER         [J IF NO REMAINDER   
3BGG ...      ADN   6  1                   [ROUND UP X6 
3BGL ...      SBN   5  24   
3BGQ ...      NGX   5  5                   [GET ROUNDING FACTOR 
3BGW ...      ADS   5  AWORK1(2)           [ROUND UP N  
3BH2 ...      STO   5  AWORK4(2)           [SAVE ROUNDING FACTOR
3BH6 ...ROUNDNUMBER 
3BH= ...      TRACEIF  K6FILEMAP,99,199,6,FILEMAPP  
3BHB ...      LDX   5  AWORK1(2)
3BHG ...      ADX   5  FBITMOD(1)          [NEW SIZE OF MAP IN BITS 
3BHL ...      STO   5  FBITMOD(1)          [UPDATE FBITMOD  
3BHQ ...      TRACEIF  K6FILEMAP,99,,5,FBITMODN 
3BHW ...      LDN   4  24   
3BJ2 ...      DVS   4  4                   [X5=D
3BJ6 ...      TRACEIF  K6FILEMAP,99,199,5,FILEMAPD  
3BJ= ...      SMO      5
3BJB ...      LDN   4  FBITS-A1+1          [REQUIRED LOGICAL LENGTH 
3BJG ...      BXE   4  ALOGLEN(1),NOALTLEN [J IF BLOCK BIG ENOUGH   
3BJL ...      LDX   3  1                   [FMAPP ADDRESS   
3BJQ ...      ALTLENG  3,4,SFMAPP   
3BJW ...      CALL  7  SFINDMAP 
3BK2 ...NOALTLEN
3BK6 ...#SKI  K6FILEMAP>199$199 
3BK= ...(   
3BKB ...      LDX   0  ALOGLEN(1)   
3BKG ...      ADN   0  2
3BKL ...      BLOCKTRA 1,BEFORE,0   
3BKQ ...)   
3BKW ...      LDX   4  AWORK2(2)           [POSITION FOR INSERT 
3BL2 ...      LDN   3  24   
3BL6 ...      DVS   3  3                   [X4=W: X3=X  
3BL= ...      TRACEIF  K6FILEMAP,99,199,3,FILEMAPX  
3BLB ...      TRACEIF  K6FILEMAP,99,199,4,FILEMAPW  
3BLL ...      LDX   7  5
3BLQ ...      SBX   7  6
3BLW ...      SBX   7  4                   [D-P-W   
3BM2 ...      BZE   7  NOWORDMOVE          [W IS LAST WORD OF MAP   
3BM6 ...      BNG   7  NDOFFILE            [J IF APPEND &N A MULTIPLE OF 24 
3BM= ...      LDX   2  5
3BMB ...      SBX   2  6                   [D-P 
3BMG ...      STO   1  GEN1                [SAVE FMAPP ADDRESS  
3BML ...MOVEWORD
3BMQ ...      SMO      2                   [D-P 
3BMW ...      LDX   0  FBITS(1)            [OLD LAST WORD   
3BN2 ...      SMO      5                   [D   
3BN6 ...      STO   0  FBITS(1)            [NEW LAST WORD   
3BN= ...      BCT   1  £                   [STEP BACK TO PREVIOUS WORD  
3BNB ...      BCT   7  MOVEWORD            [LOOP ON D-P-W   
3BNG ...      LDX   1  GEN1                [RECOVER FMAPP ADDRESS   
3BNL ...NOWORDMOVE  
3BNQ ...      SMO      4                   [W   
3BNW ...      LDX   0  FBITS(1)            [LOAD [W]
3BP2 ...      NGN   7  1                   [#77777777   
3BP6 ...      SLC   70 0(3)                [ MOVE X BITS INTO X7
3BP= ...      SRC   7  0(3)                [MOVE X BITS TO TOP  
3BPB ...      SRC   0  0(3)                [MOVE DISPLACED BITS TO BOTTOM OF X0 
3BPG ...      SMO      4
3BPL ...      STO   7  FBITS(1)            [REPLACE W WITH X BITS + 1'S 
3BPQ ...      NGN   7  1
3BPW ...NEWWORD 
3BQ2 ...      SMO      4
3BQ6 ...      STO   7  FBITS+1(1)          [INSERT EXTRA WORDS  
3BQ= ...      BUX   1  £                   [STEP FORWARD
3BQB ...      BCT   6  NEWWORD             [LOOP ON COUNT OF P  
3BQG ...      SMO      4
3BQL ...      STO   0  FBITS(1)            [OVERWRITE LAST WORD WITH OVERFLOW FR
3BQQ ...XTRA
3BQW ...      LDX   2  FX2  
3BR2 ...      LDX   7  AWORK4(2)
3BR6 ...      BZE   7  UP                  [NO DELETES TO DO
3BR= ...NEXTMAPBDEL 
3BRB ...      SXFCB    AWORK3(2),3  
3BRG ...      MAPBDEL  AWORK2(2),3  
3BRL ...      BCT   7  NEXTMAPBDEL  
3BRQ ...UP  
3BRW ...#SKI  K6FILEMAP>199$199 
3BS2 ...(   
3BS6 ...      CALL  7  SFINDMAP 
3BS= ...      LDX   0  ALOGLEN(1)   
3BSB ...      ADN   0  2
3BSG ...      BLOCKTRA 1,AFTER,0
3BSL ...)   
3BSQ ...      UP
3BSW ...NDOFFILE                           [APPEND CASE ONLY & X=0  
3BT2 ...      BNZ   3  (GEOERR) 
3BT6 ...      NGN   7  1
3BT= ...NDAPPEND
3BTB ...      SMO      4
3BTG ...      STO   7  FBITS(1)            [STORE P WORDS STARTING FROM W   
3BTL ...      BUX   1  £
3BTQ ...      BCT   6  NDAPPEND 
3BTW ...      BRN      XTRA 
3BW2 ...[   
3BW6 ...SFMAPP  
3BW= ...      LDX   3  1                   [ALTLENG LINK
3BWB ...      CALL  7  SFINDMAP 
3BWG ...      LDX   2  1
3BWL ...      EXIT  3  0
3BWQ ...)   
3BWW ...#SKI  0 
3BX2 ...(   
3BXG          ADN   5  2
3CC6          BXL   5  AWORK2(2),MODBIT 
3CWQ          SBN   5  2
3DBB          LDX   3  AWORK1(2)           [PICK UP NO.OF BITS TO BE INSERTED   
3DW2          ADX   3  5
3F*L          STO   3  FBITMOD(1)          [UPDATE TOTAL
3FT=    #   
3G#W    #     NOTE WELL: WE DO NOT USE B0 OF FBITS.[FBITMOD]= NO OF BLOCKS IN   
3GSG    #     THE FILE,I.E. THE NUMBER OF SIGNIFICANT BITS.THUS WHEN WE DIVIDE  
3H#6    #     [FBITMOD]BY 24,IF IT IS AN EXACT MULTIPLE,THE LAST BIT GOES INTO  
3HRQ    #     THE LAST WORD ON ITS OWN. 
3J?B    #     THUS W1 & W2 ARE ALWAYS ONE LESS THAN THE NUMBER OF WORDS IN THE  
3JR2    #     MAP   
3K=L    #     (I'M ONLY WRITING THIS DOWN BECAUSE I GOT IT WRONG. DMB)  
3KQ=    #   
3L9W          LDN   2  24   
3LPG          DVS   2  2                   [CALC W2 = FINAL LENGTH OF MAP - 1   
3M96          LDN   4  24   
3MNQ          DVS   4  4                   [CALC W1=INITIAL LENGTH OF MAP-1 
3N8B          LDX   2  FX2  
3NN2          TXU   3  5
3P7L          BCC      NOALTLEN            [J.UNLESS FMAP NEEDS LENGTHENING 
3PM=          LDX   7  1
3Q6W    #SKI  K6FILEMAP>99$99   
3QLG          TRACE  3,NGN MAP  
3R66          ALTLEND  7,FBITS-A1+1(3)  
3RKQ          CALL  7  SFINDMAP            [RESET X1->MAP   
3S5B    NOALTLEN
3SK2    #   
3T4L    #     WE NOW EXTEND THE MAP 
3TJ=    #   
3W3W    #     WE SHALL ILLUSTRATE THE CODE BY THREE EXAMPLES (WHICH ARE REASON- 
3WHG    #     ABLY SIMILAR) 
3X36    #   
3XGQ    #     THE EXAMPLES ARE: 
3Y2B    #     INSERTING  (A) SIX BITS   ) BEFORE I (THE INSERT BIT) IN A BIT
3YG2    #                (B) 30  BITS   > PATTERN WE SHALL REPRESENT BY:-   
3Y^L    #                (B) 54  BITS   )  XXXXXXXXIYYYYYYYYYYYYYYY 
3^F=    #   
3^YW          LDX   7  AWORK2(2)           [PICK UP THE BIT NUMBER FOR INSERT   
42DG          LDX   2  5                   [SAVE W1 IN X2   
42Y6          SMO      FX2  
43CQ          LDX   5  AWORK1              [PICK UP NO.OF BIT TO BE INSERTED.   
43XB          ADX   5  7                   [ADD ON BIT ADDR FOR INSERT  
44C2    #   
44WL    #     WE HAVE TO MOVE A PATTERN OF BITS ALONG TO MAKE ROOM FOR THE  
45B=    #     NEW ONES. WN,BN IS THE ADDRESS OF THE INSERT BIT,THE FIRST OF 
45TW    #     THOSE TO BE MOVED,AND WNM,BNM IS THE ADDRESS IT IS TO BE MOVED
46*G    #     TO
46T6    #   
47#Q          LDN   6  24                  [CALC  BN AND WN IN X6 AND X7
47SB          DVS   6  6
48#2          LDN   4  24   
48RL          DVS   4  4                   [CALC  BNM AND  WNM IN X4 AND X5 
49?=          NGN   0  1
49QW          SBX   5  7
4==G    #SKI  K6FILEMAP>99$99   
4=Q6          TRACE  5,NEWWORDS 
4?9Q    #     THE TWO ADDRESS MAY BE IN THE SAME WORD(CASE A),  
4?PB          BZE   5  NODIFF              [J.IF NEW BITS FIT IN ONE WORD   
4#92          SBN   5  1
4#NL    #     OR IN ADJACENT WORDS(CASE B), 
4*8=          BZE   5  ONEDIFF             [J.IF NEW BITS EXTEND OVER 1 WORD
4*MW                                       [BOUNDARY ONLY   
4B7G    #     OR IN NONADJACENT WORDS(CASE C).  
4BM6          ADN   7  1(1)                [SET UP X7 FOR TEST IN LOOP  
4C6Q    #   
4CLB    #     [X7] IS NOW AN ABSOLUTE ADDRESS OF THE 1ST WORD AFTER THE ONE 
4D62    #     CONTAINING THE INSERT BIT( I.E WN +1) 
4DKL    #   
4F5=          ADX   2  1                   [ADD ON FMAP POINTER TO W1   
4FJW    MSKLOOPA
4G4G    #   
4GJ6    #     THIS CODE MOVES DOWN THE BIT PATTERN FROM THE WORD AFTER THE ONE  
4H3Q    #     CONTAINING THE INSERT BIT (I E WN+1) BY ENOUGH WORDS TO FIT IN ALL
4HHB    #     THE EXTRA BITS.   
4J32    #   
4JGL          LDX   0  FBITS(2)            [PICK UP NEXT WORD DOWN  
4K2=          SMO      5
4KFW          STO   0  FBITS(2)            [AND MOVE IN FORWARD BY  WNM-WN-1
4K^G          TXU   2  7                   [J.OUT WHEN X2=WN+FMAP+1 
4LF6          BCC      XFINA
4LYQ          SBN   2  1
4MDB          BRN      MSKLOOPA 
4MY2    XFINA   
4NCL    #   
4NX=    #     WE NOW FILL IN THE WNM-WN-1 WORDS OF GAP WE HAVE CREATED WITH BITS
4PBW    #     (I.E  -1'S )  
4PWG    #   
4QB6          NGN   0  1                   [SET UP MASK OF BITS 
4QTQ          SBX   7  1                   [[X7]= WN+1. 
4R*B          ADX   5  7                   [[X5]= WNM.  
4RT2          SBN   7  1                   [RESET X7 TO WN  
4S#L          ADX   5  1                   [AND X5 TO FMAP+WNM  FOR TEST IN LOOP
4SS=    MSKLOOPB
4T?W          STO   0  FBITS(2)            [SET BITS IN NEXT WORD   
4TRG          ADN   2  1
4W?6          TXU   2  5                   [J.OUT WHEN GAP IS FILLED
4WQQ          BCS      MSKLOOPB 
4X=B    #   
4XQ2    #     WE SHOULD NOW HAVE REDUCED THE "ADJACENT" & "NON-ADJACENT" CASES  
4Y9L    #     TO SIMILARITY (I.E. CASE B & C ARE NOW SIMILAR.   
4YP=    #   
4^8W    #     REENTRY  POINT FOR"ADJACENT"CASE. 
4^NG    #   
5286    SMERJONE
52MQ    #   
537B    #     [X7] = WN,[X5]=WNM,[X6]=BN,[X7]=BNM.  
53M2    #   
546L    #     WE NOW SET UP X1 TO CONTAIN THE NEW MASK FOR WORD'WN'; I.E WITH   
54L=    #     ALL BITS BEFORE THE INSERT BIT AS BEFORE, THEN AS MANY SET BITS   
555W    #     AS WE CAN FIT IN.X0 CONTAINS THE COMPLEMENTARY PATTERN.   
55KG    #   
5656    #     IN OUR EXAMPLE  (CASES B & C ).   
56JQ    #   
574B    #         [X1] =   XXXXXXXX1111111111111111 
57J2    #         [X0] =   11111111IYYYYYYYYYYYYYYY 
583L    #   
58H=          LDX   2  1                   [SET X2->FMAP
592W          SMO      7
59GG          LDX   1  FBITS(2)            [PICK UP WN  
5=26          SBN   6  24   
5=FQ          NGX   6  6                   [SET X6=24-BN
5=^B          SMO      6
5?F2          SRC   1  0
5?YL          SMO      6
5#D=          SLC   01 0                   [PICK UP BITS AT END OF WORD (BN ON) 
5#XW          ADX   6  4                   [RESET X6 TO Q= 24+BNM-BN
5*CG          BRN      MERJALL  
5*X6    #   
5BBQ    #     THE BITS ARE TO BE MOVED TO AN ADJACENT WORD (CASE B).
5BWB    #     WE READJUST THE POINTERS AND REENTER THE CODE FOR CASE C (OF  
5CB2    #     WHICH CASE B IS A DEGENERATE EXAMPLE  
5CTL    #   
5D*=    ONEDIFF 
5DSW          ADX   5  7                   [RESET X5 TO WN  
5F#G          ADX   5  1                   [AND ADD IN FMAP POINTER 
5FS6          BRN      SMERJONE 
5G?Q    NODIFF  
5GRB    #   
5H?2    #     CASE A . IN THIS ENTRY,THE TO-BE-INSERTED BITS ALL FIT INTO THE   
5HQL    #     SAME WORD.
5J==    #   
5JPW    #SKI  K6FILEMAP>99$99   
5K9G          TRACE    4,NODIFF 
5KP6          ADX   5  7                   [RESET X5 TO WNM=WN  
5L8Q          LDX   2  1                   [PICK UP ->FMAP  
5LNB          ADN   5  1(1)                [SET X5=FMAP+WN+1
5M82          SMO      7
5MML          LDX   1  FBITS(2)            [PICK UP WN  
5N7=          SMO      6
5NLW          SLC   01 0                   [SHIFT BN
5P6G          SBX   4  6
5PL6          SMO      4
5Q5Q          SLC   0  0                   [SHIFT BNM-BN
5QKB          ADX   4  6
5R52          SMO      4
5RJL          SRC   01 0                   [SHIFT BNM   
5S4=          SBX   4  6
5SHW          SMO      4
5T3G          SLC   0  0                   [SHIFT BNM-BN
5TH6          LDX   6  4                   [SET X6=Q=BNM-BN 
5W2Q    #   
5WGB    #     IN OUR EXAMPLE NOW :  
5X22    #   
5XFL    #        [X1]= XXXXXXXX111111IYYYYYYYYY 
5X^=    #        [X0]= 111111111111111111YYYYYY 
5YDW    #   
5YYG    MERJALL 
5^D6    #   
5^XQ    #     ALL CASES MERGE HERE. X0 CONTAINS THE BIT PATTERN LEFT OVER FROM  
62CB    #     WN AFTER WE'VE INSERTED THE BITS. 
62X2    #     WE STORE THE CONTENTS OF X1 IN WN 
63BL    #     X6 CONTAINS THE NUMBER OF BITS OVERFLOWED FROM WN WHICH WE HAVE TO
63W=    #     MOVE INTO WNM+1.  
64*W    #   
64TG    #SKI K6FILEMAP>99$99
65*6    (   
65SQ          TRACE  0,OVERFLOW 
66#B          TRACE  1,NEWFBITS 
66S2    )   
67?L          SMO      7
67R=          STO   1  FBITS(2)            [RE-STORE NEW WN 
68=W          ADN   3  1(2)                [SET X3=FMAP+W2+1 FOR TEST   
68QG          LDX   2  5                   [PICK X2=FMAP+WNM
69=6    #   
69PQ    #     WE PICK UP WNM+1 IN X1,MOVE IN [X6] BITS FROM X0,AND PRESERVE THE 
6=9B    #     BITS MOVED OUT IN X0. WE STORE X1 BACK IN WNM+1,AND RECURSE THIS  
6=P2    #     PROCESS UNTIL THE END 
6?8L    #   
6?N=    MOVELOOP
6#7W    #SKI K6FILEMAP>99$99
6#MG          TRACE  6,RESTALNG 
6*76          TXU   2  3
6*LQ          BCC      XDONE               [J.OUT WHEN END OF BLOCK REACHED 
6B6B          LDX   1  FBITS(2)            [PICK UP NEXT WORD IN MAP
6BL2          SMO      6
6C5L          SRC   01 0                   [SHIFT BY Q  
6CK=          STO   1  FBITS(2)            [STORE NEW VERSION   
6D4W          ADN   2  1
6DJG          SMO      6
6F46          SLC   0  0                   [RESET MASK FOR NEXT TIME
6FHQ          BRN      MOVELOOP 
6G3B    XDONE   
6GH2    #SKI  K6FILEMAP>299$299 
6H2L    (   
6HG=          CALL  7  SFINDMAP 
6H^W          BLOCKTRA 1,FMAPEND
6JFG    )   
6J^6          UP
6KDQ    [   
6KNJ ...)   
6KYB          MENDAREA 20,K99FILEMAP
6LD2    #END
^^^^ ...51145334000900000000