SAVEDA70

(George Source)

Macros used: CLOSE, COMBRKIN, ENDCOM, FPCACA, GEOERR, GETWORD, GETWORDX, HUNT2, MENDAREA, MFREE, MHUNT, MHUNTW, MONOUT, NAME, OUTPACK, SCANPT, SEGENTRY, SETNCORE, SWAPOUT, TESTREP2, TESTRPN2, TRACE, VFREEW, WORDFIN, WRITED

SAVEDA70.txt
22FL    #LIS  K0SAVEDA>K0SAVE>K0COMMAND>K0ALLGEO
22^=    #SEG  SAVEDA70                     [RUTH PORTER 
23DW          8HSAVEDA  
23YG    #   
24D6    #     THIS SEGMENT COMPLETES THE SAVE COMMAND FOR DA FILES  
24XQ    #   
25CB                SEGENTRY K1SAVEDA,XK1            [ENTRY FROM SAVE   
25X2    #   
26BL    #   
26W=    # THIS SUBROUTINE FORMS ORGANISATIONAL RECORD   
27*W    ORGR
27TG          MHUNTW   1,ADATA,CSTORE      [FIND POSITION FOR NEXT  
28*6          LDN   0  5
28SQ          LDN   3  A1(1)               [ORGANISATIONAL ENTRY
29#B          ADX   3  0(3) 
29S2          ADS   0  A1(1)
2=?L          SMO      FX1  
2=R=          LDX   0  TYPE5               [SPECIFICATION WORD  
2?=W          STO   0  0(3) 
2?QG          LDX   0  AWORK3(2)           [DESTINATION IN CORE 
2#=6          STO   0  1(3) 
2#PQ          STO   7  2(3)                [RECORD LENGTH   
2*9B          NGS   6  3(3)                [CHECKSUM
2*P2          LDX   0  AWORK4(2)           [BUCKET ADDRESS  
2B8L          SBX   0  A1+2(1)  
2BN=          STO   0  4(3) 
2C7W    #SKI  K6SAVEDA>199-199  
2CMG          TRACE    4(3),SVORGBUC
2D76          LDN   6  0                   [RESET CHECKSUM  
2DLQ          LDN   7  0                   [AND RECORD LENGTH   
2F6B          EXIT  4  0
2FL2    WRITB                              [WRITE TO BUCKET SPECIFIED   
2G5L          SBX   4  FX1                 [IN X3   
2GK=          WRITED   3,1  
2H4W          TESTRPN2 OVERFILE,SPACE   
2HJG          GEOERR   1,SVFULL 
2J46    SPACE   
2JHQ          SETNCORE 128,1,FILE,FRWB  
2K3B          ADX   4  FX1  
2KH2          EXIT  4  0
2L2L    ORGB                               [TIDY ORGANISATIONAL BUCKET  
2LG=          MHUNTW   1,ADATA,CSTORE   
2L^W          LDN   0  1                   [WHERE IS NEXT ORG BUCKET?   
2MFG          STO   0  A1+1(1)             [TENTATIVELY,ADJACENT
2M^6          LDX   0  A1+2(1)             [FIND CURRENT BUCKET 
2NDQ    #SKIP G4
2NYB          ANDN  0  7
2PD2    #SKIP G3
2PXL          ANDN  0  3
2QC=          BNZ   0  ORGBX               [J IF GROUP SUFFICES,ELSE
2QWW          LDX   0  AWORK2(2)           [FIND RELATIVE ADDRESS OF
2RBG          SBX   0  A1+2(1)             [NEXT QUARTET OR OCTET   
2RW6          STO   0  A1+1(1)  
2S*Q    #SKIP G4
2STB          LDN   0  8
2T*2    #SKIP G3
2TSL          LDN   0  4
2W#=          ADS   0  AWORK2(2)           [NEXT FREE GROUP 
2WRW    ORGBX   
2X?G          LDX   0  A1+1(1)             [ABSOLUTE BUCKET NUMBER +
2XR6          ADX   0  A1+2(1)             [NEXT REL.=NEW ABSOLUTE  
2Y=Q          STO   0  AWORK3(2)
2YQB    ORGBY   
2^=2          LDX   2  A1(1)               [DATA LENGTH 
2^PL          SBN   2  3
329=          LDN   3  A1+3(1)             [FIRST USEFUL WORD   
32NW          SUM   2  0(2)                [CHECKSUM
338G          LDX   3  A1+2(1)             [DESTINATION 
33N6          NGS   2  A1+2(1)  
347Q          EXIT  4  0
34MB    NORGB                              [BEGIN NEW ORG BUCKET
3572          MHUNTW   1,ADATA,CSTORE   
35LL          LDN   0  3                   [RESET POINTER   
366=          STO   0  A1(1)
36KW          LDX   0  AWORK3(2)
375G          STOZ     A1+1(1)             [NEXT REL BUCK   
37K6          STO   0  A1+2(1)             [CURRENT ORG BUCKET  
384Q          EXIT  4  0
38JB    RENAM                              [SWITCH WRITE BLOCKS 
3942          MHUNTW   1,ADATA,CSTORE   
39HL          MHUNTW   2,FILE,FRWB  
3=3=          NAME     2,ADATA,CSTORE   
3=GW          NAME     1,FILE,FRWB  
3?2G          LDX   2  FX2  
3?G6          EXIT  4  0
3?^Q    #SKIP G4
3#FB    (   
3#^2    #   
3*DL    # ROUTINE STORES NEXT TYPE 7 RECORD FROM X6+X7  
3*Y=    #   
3BCW    SV0 
3BXG          LDX   2  FX2  
3CC6          SBX   4  FX1  
3CWQ          LDX   0  AWORK1(2)           [JUMP UNLESS FIRST ENTRY 
3DBB          BNZ   0  SV1  
3DW2          SETNCORE 128,1,FILE,FRWB     [CREATE BLOCK
3F*L          BRN      SV5  
3FT=    SV1 
3G#W          MHUNTW   1,FILE,FRWB         [FIND BLOCK  
3GSG          LDX   0  AWORK3(2)
3H#6          SBN   0  128  
3HRQ          BZE   0  SV3                 [JUMP IF FULL
3J?B    SV2 
3JR2          SMO      AWORK3(2)           [STORE NEW PAIR  
3K=L          STO   6  A1(1)
3KQ=          SMO      AWORK3(2)
3L9W          STO   7  A1+1(1)  
3LPG          LDN   0  2
3M96          ADS   0  AWORK3(2)           [UPDATE POINTER  
3MNQ          LDCT  0  #40                 [EXTRACT SHARED BIT  
3N8B          ANDX  0  6
3NN2          ADN   0  1                   [GNDICATE PRESENCE OF
3P7L          ORS   0  AWORK1(2)           [TYPE 7 RECORDS  
3PM=          ADX   4  FX1  
3Q6W          EXIT  4  0
3QLG    SV3                                [FULL BUCKET ROUTINE 
3R66          LDX   0  AWORK2(2)
3RKQ          SBN   0  2                   [FIRST TYPE 7 BUCKET?
3S5B          BNZ   0  SV4  
3SK2          LDN   0  3
3T4L          STO   0  AWORK2(2)           [SKIP BUCKET 2   
3TJ=    SV4 
3W3W          SMO      FX1  
3WHG          LDX   0  TYPE7               [SPECIFICATION WORD  
3X36          STO   0  A1(1)
3XGQ          LDN   0  128                 [USEFUL WORDS
3Y2B          STO   0  A1+1(1)  
3YG2          LDX   3  AWORK2(2)           [DESTINATION BUCKET  
3Y^L          LDN   0  1
3^F=          ADS   0  AWORK2(2)           [NEW BUCKET  
3^YW          ADX   0  3
42DG          STO   0  A1+3(1)             [CHAIN ADDRESS   
42Y6          LDN   1  A1(1)               [CHECKSUM
43CQ          SUM   0  128  
43XB          SBS   0  2(1) 
44C2          STO   4  AWORK3(2)           [PRESERVE LINK   
44WL          CALL  4  WRITB               [WRITE AWAY BUCKET   
45B=          LDX   4  AWORK3(2)           [RESTORE LINK
45TW    SV5 
46*G          LDN   0  4
46T6          STO   0  AWORK3(2)           [RESET POINTER   
47#Q          BRN      SV1                 [NOW STORE RECORD
47SB    )   
48#2    #   
48RL    TYPE           #73230000
49?=    TEB            #73020003
49QW    TES            #73100006
4==G    TURTY          #74000              [MAX.RECORD SIZE 30K 
4=Q6    #SKIP G4
4?9Q    TYPE7          #73000007
4?PB    TYPE5          #73050005           [FIRST WORD OF ORG.RECORD
4#92    TYPE2          #73020002           [FIRST WORD OF ENTRY BLOCK   
4#NL    XBUC1          +0                  [DATA FOR FIRST BUCKET   
4*8=                   #1000023 
4*MW                   +8   
4B7G                   12HCOMPOFILE 
4BM6                   +0   
4C6Q                   +1   
4CLB                   +0   
4D62                   +0   
4DKL                   +9   
4F5=                   12HPROGRAM          [NAME TO BE ADDED FROM R/S   
4FJW                   +2   
4G4G                   +0                  [NO.OF BUCKETS-CALCULATED
4GJ6                   +0   
4H3Q                   +1   
4HHB                   4HA100   
4J32    #   
4JGL    #   
4K2=    #     ENTRY  HERE !!
4KFW    #   
4K^G    XK1 
4LF6          SWAPOUT                      [STABLE FOR PERM CHECKS  
4LYQ
4MDB          SETNCORE 128,1,ADATA,CSTORE  [ORG BUCKET AREA 
4MY2          LDN   0  2                   [CURRENT ORG'BUCKET NUMBER   
4NCL          STO   0  AWORK2(2)
4NX=    N1  
4PBW          FPCACA   1,2  
4PWG    #SKIP G3
4QB6    (   
4QTQ          LDX   6  ALIMIT(1)           [PRESERVE CORE SIZE  
4R*B          SLC   6  9
4RT2    )   
4S#L    #SKIP G4
4SS=    (   
4T?W          HUNT2    3,BSTB,BSCB,1       [FIND PROGRAM SIZE   
4TRG          LDX   6  AMAXSIZE(3)  
4W?6          LDX   0  6
4WQQ          SLC   6  12   
4X=B          BPZ   0  N1A                 [JUMP IF DENSE   
4XQ2          SBN   6  #3776               [REMOVE B0,STORE BIT FOR RS  
4Y9L    N1A 
4YP=          SLC   6  7
4^8W    )   
4^NG          LDX   7  ARM1(1)  
5286          SRL   7  3
52MQ          ANDN  7  7
537B          HUNT2    1,AOBRES,0          [FIND REQUEST SLIP   
53M2          MHUNTW   2,ADATA,CSTORE      [FIND ORG.BUCKET 
546L          LDN   4  A1(1)
54L=          LDN   5  A1+3(2)  
555W          LDX   3  A1(1)               [FIND LENGTH OF REQUEST SLIP 
55KG          SRL   3  12   
5656          ANDN  3  #77  
56JQ          MOVE  4  0(3)                [REQUEST SLIP TO OUTPUT BLOCK
574B          STO   6  A1+6(2)  
57J2          SUM   4  0(3) 
583L          SBS   4  A1+16(2)            [NEGATIVE CHECKSUM   
58H=    #SKIP G3
592W    (   
59GG          LDX   0  ALOGLEN(1)   
5=26          SBN   0  17   
5=FQ          BPZ   0  N2                  [JUMP IF SRS 
5=^B          BZE   7  N3                  [JUMP IF MODES ABSENT
5?F2    # FORM SUPPLEMENTARY REQUEST SLIP IF ONE IS PRESENT OR NEEDED   
5?YL    )   
5#D=    N2  
5#XW          LDX   1  5
5*CG          ADX   1  3                   [WORD AFTER REQUEST SLIP 
5*X6          SMO      FX1  
5BBQ          LDX   0  TES                 [STORE SPECIFYING WORD   
5BWB          STO   0  0(1) 
5CB2          STO   7  1(1)                [STORE MODES 
5CTL          LDN   7  2(1)                [CLEAR RESERVED WORDS
5D*=          LDN   0  3(1) 
5DSW          STOZ     2(1) 
5F#G          MOVE  7  4
5FS6          SUM   0  7
5G?Q          NGS   0  7(1)                [CHECKSUM
5GRB          LDN   7  8                   [LENGTH OF SRS   
5H?2    N3  
5HQL          ADN   7  3                   [1ST THREE WORDS 
5J==          ADX   7  3                   [LENGTH OF R/S   
5JPW          STO   7  A1(2)               [RESULT IS POINTER   
5K9G    #SKIP G4
5KP6    (   
5L8Q    #   
5LNB    # THIS ROUTINE STORES PERMISSIONS FOR EACH SEGMENT NOT  
5M82    # HAVING NORMAL SETTINGS IN THE SWAP CONTROL BLOCK  
5MML    #   
5N7=    SW0 
5NLW          LDX   2  FX2  
5P6G          STOZ     AWORK1(2)
5PL6          LDN   6  0                   [START ADRESS
5Q5Q    SW1 
5QKB          LDX   2  FX2  
5R52          LDX   0  6                   [TEST IF NEW WD REQUIRED 
5RJL          SLL   0  8                   [I+E: MULTIPLE OF 8*64K  
5S4=          BNG   0  SW2  
5SHW          LDX   0  6
5T3G          SRL   0  16                  [FIND MULTIPLE OF 64K
5TH6          FPCACA   3,FX2               [FIND SCB
5W2Q          HUNT2    3,BSTB,BSCB,3
5WGB          SMO      0
5X22          LDX   0  HPERM(3) 
5XFL          STO   0  AWORK4(2)           [SETS OF PERMISSIONS 
5X^=    SW2                                [EXTRACT NEXT 3 BITS 
5YDW          LDX   0  AWORK4(2)
5YYG          SLC   0  3
5^D6          STO   0  AWORK4(2)
5^XQ          ERN   0  7                   [INVERT  
62CB          ANDN  0  7
62X2          LDX   7  0                   [ARRANGE FOR STORING IN  
63BL          SRC   7  3                   [BUCKET  
63W=          BZE   0  SW3  
64*W          CALL  4  SV0                 [STORE IF SPECIAL
64TG    SW3 
65*6          MHUNTW   3,ADATA,CSTORE      [FIND TEMPORARY STORAGE  
65SQ          BNZ   6  SW4                 [JUMP UNLESS FIRST CYCLE 
66#B          STOZ     4                   [ZEROISE START ADRESS
66S2          FPCACA   2,FX2
67?L          LDX   5  ALIMIT(2)           [FIND PROGRAM LENGTH IN K
67R=          SRL   5  10   
68=W          BRN      SW5  
68QG    SW4 
69=6          LDX   4  A1+124(3)           [MOVE IN START ADDRESS   
69PQ          LDX   5  A1+125(3)           [PROGRAM LENGTH  
6=9B          ADN   4  64                  [UPDATE LENGTH   
6=P2    SW5 
6?8L          LDN   0  4                   [PRESERVE WITH RECORD
6?N=          LDN   1  A1+124(3)           [FOR SEGMENT 
6#7W          MOVE  0  4
6#MG          FPCACA   2,FX2
6*76          SCANPT   3,SOVER,SCOOR,SGAP,ASEGTAB(2),4,5,2,3
6*LQ    SCOOR   
6B6B          LDX   5  7                   [SET PREVIOUS VALUE  
6BL2          STOZ     4                   [ZEROISE RECFRD LENGTH   
6C5L    SW6 
6CK=          LDX   1  0(2)                [EXAMINE NEXT ENTRY  
6D4W          BNG   1  SW7                 [JUMP UNLESS REPLACED
6DJG          LDX   1  0(1) 
6F46    SW7 
6FHQ          SRL   1  6                   [EXTRACT PERMS & SHRBL BIT   
6G3B          ERN   1  14                  [INVERT PERMISSIONS  
6GH2          SLL   1  20   
6H2L          LDCT  0  #740 
6HG=          ANDX  0  5
6H^W          TXU   1  0
6JFG          BCC      SW10                [JUMP IF SAME AS PREVIOUS
6J^6    SW8 
6KDQ          LDCT  0  #740 
6KYB          ANDX  0  5
6LD2          ADX   6  4                   [FORM ADDRESSES FOR STORED   
6LXL          ADX   4  5                   [AND NEW RECORDS 
6MC=          SBX   4  0
6MWW          SBX   0  7
6NBG          LDX   7  5                   [PRESENT TO STORING ROUTINE  
6NW6          LDX   5  1                   [NEW VALUES FOR NEXT CYCLE   
6P*Q          BZE   0  SW9                 [JUMP IF SAME VALUES AS SEGMENT  
6PTB          MHUNTW   1,ADATA,CSTORE      [PRESERVE DETAILS OF SEARCH  
6Q*2          LDN   0  2
6QSL          LDN   1  A1+120(1)
6R#=          MOVE  0  4
6RRW          CALL  4  SV0                 [STORE TYPE 7 RECORD 
6S?G          MHUNTW   1,ADATA,CSTORE   
6SR6          LDN   6  A1+120(1)
6T=Q          LDN   7  2
6TQB          MOVE  6  4                   [RESTORE DETAILS OF SEARCH   
6W=2    SW9 
6WPL          MHUNTW   1,ADATA,CSTORE   
6X9=          LDX   6  A1+126(1)           [RESTORE SEGMENT ADDRESS 
6XNW          LDX   7  A1+127(1)           [AND PERMISSIONS 
6Y8G    SW10
6YN6          ADN   5  1024                [UPDATE RECORD LENGTH
6^7Q          ADN   2  1                   [UPDATE POINTER  
6^MB          SBN   3  1                   [UPDATE COUNT
7272          BZE   3  SW8                 [CLEAR LAST RECORD   
72LL          BPZ   3  SW6  
736=    SGAP
73KW          ADX   6  BIT7                [ADD 64K 
745G          LDX   0  6
74K6          SLL   0  2
754Q          BNZ   0  SW1                 [JUMP UNLESS 64 ENTRIES  
75JB    SOVER   
7642    #   
76HL    # CLEAR UP AFTER LAST TYPE 7 RECORD 
773=    #   
77GW          LDX   2  FX2  
782G          MHUNTW   1,ADATA,CSTORE      [FIND BLOCK WITH R/S 
78G6          LDX   5  AWORK1(2)
78^Q          BZE   5  SX1                 [JUMP IF NO TYPE 7 RECORDS   
79FB          MHUNTW   3,FILE,FRWB         [FIND TYPE 7 RECORDS 
79^2          LDX   0  AWORK2(2)           [TEST IF FIRST TYPE 7 BUCKET 
7=DL          SBN   0  2
7=Y=          BNZ   0  SX2                 [JUMP IF NOT 
7?CW          LDX   0  A1(1)               [POINTER TO ADATA/CSTORE 
7?XG          ADX   0  AWORK3(2)
7#C6          SBN   0  129                 [IS THERE ROOM IN BUCKET 2?  
7#WQ          BPZ   0  SX2                 [JUMP IF NOT 
7*BB          LDN   7  A1(1)               [MOVE RECORDS TO BUCKET 2
7*W2          ADX   7  A1(1)               [DESTINATION ADDRESS 
7B*L          LDN   6  A1(3)               [SO4RCE ADDRESS  
7BT=          LDX   3  AWORK3(2)
7C#W          MOVE  6  0(3) 
7CSG          LDN   0  3
7D#6          STO   0  AWORK2(2)           [NEXT ORG.BUCKET 
7DRQ          LDX   2  A1(1)
7F?B          ADN   2  A1-4(1)             [WORD 4 OF SRS   
7FR2          SMO      FX1  
7G=L          LDX   0  TYPE7               [SPECIFICATION WORD  
7GQ=          STO   0  4(2) 
7H9W          STO   3  5(2)                [LENGTH FO SPA INFORMATION   
7HPG          LDN   7  4(2) 
7J96          STOZ     7(2) 
7JNQ          SUM   6  0(3) 
7K8B          SBS   6  6(2)                [CHECSUM 
7KN2
7L7L    # STORE IN SRS A WORD INDICATING NO SHAREABLE AREAS,
7LM=    # RESTRICTED BINARY FORMAT AND TYPE 7 RECORDS IN THIS   
7M6W    # BUCKET
7MLG    #   
7N66          LDCT  7  1                   [EXTRACT SHAREABLE INDICATOR 
7NKQ          ERX   7  5                   [AND SET BIT 5   
7P5B          SRL   7  1                   [ELIMINATE INDICATOR 
7PK2          SLL   7  4
7Q4L          ADX   7  A1(1)
7QJ=          STO   7  0(2)                [STORE IN SRS
7R3W          SBS   7  3(2) 
7S36          BRN      SX3  
7SGQ    SX1                                [NO TYPE 7 RECORDS   
7T2B          LDX   2  A1(1)               [INDICATE IN WD4 OF SRS  
7TG2          ADN   2  A1-4(1)  
7T^L          LDCT  0  8
7WF=          STO   0  0(2) 
7WYW          SBS   0  3(2) 
7XDG          BRN      U0   
7XY6    #   
7YCQ    # WRITE AWAY LAST BUCKET OF TYPE 7 RECORDS  
7YXB    #   
7^C2    SX2 
7^WL          SMO      FX1  
82B=          LDX   0  TYPE7               [SPECIFICATION WORD  
82TW          STO   0  A1(3)
83*G          LDX   1  AWORK3(2)           [STORE NO OF USEFUL WORDS
83T6          STO   1  A1+1(3)  
84#Q          STOZ   A1+3(3)               [END OF CHAIN
84SB          LDN   7  A1(3)
85#2          SUM   6  0(1) 
85RL          SBS   6  A1+2(3)             [STORE CHECKSUM  
86?=          LDX   3  AWORK2(2)           [DESTINATION BUCKET  
86QW          CALL  4  WRITB               [LAST TYPE7 BUCKET   
87=G          LDN   0  1                   [NEXT ORG+BUCKET 
87Q6          ADS   0  AWORK2(2)
889Q    #   
88PB    # STORE IN SRS A WORD INDICATING NO SHAREABLE AREAS,
8992    # RESTRICTED BINARY FORMAT AND TYPE 7 RECORDS IN A  
89NL    # GROUP OF BUCKETS  
8=8=    #   
8=MW          MHUNTW   1,ADATA,CSTORE   
8?7G          LDX   3  A1(1)               [FIND WD 4 OF SRS
8?M6          ADN   3  A1-4(1)  
8#6Q          LDCT  0  #40                 [EXTRACT SHAREABLE INDICATOR 
8#LB          ANDX  0  AWORK1(2)
8*62          SRC   0  12   
8*KL          ADX   0  AWORK2(2)           [NO OF BUCKETS OF TYPE 7 
8B5=          ADN   0  #1005               [DATA FROM BUCKET 3  
8BJW          SRC   0  9
8C4G          STO   0  0(3) 
8CJ6          SBS   0  3(3) 
8D3Q    SX3 
8DHB          SMO      FX2                 [STORE RELATIVE ADDRESS OF   
8F32          LDX   0  AWORK2              [NEXT ORGANISATIONAL BUCKET  
8FGL          SBN   0  2
8G2=          STO   0  A1+1(1)  
8GFW          CALL 4   ORGBY               [TIDY AND
8G^G          CALL  4  RENAM               [WRITE AWAY BUCKET 2 
8HF6          LDN   3  2
8HYQ          CALL  4  WRITB
8JDB          CALL  4  RENAM
8JY2          MFREE    FILE,FRWB           [FREE TYPE 7'S BUCKET AREA   
8KCL          MHUNT   1,ADATA,CSTORE       [INITIALISE WITH NEXT
8KX=          LDN   0  3                   [FREE BUCKET 
8LBW          STO   0  A1(1)               [POINTER 
8LWG    )   
8MB6    # INITIALISE FOR MAJOR ROUTINES 
8MTQ    #   
8N*B    U0  
8NT2          SETNCORE 512,1,FILE,FRWB  
8P#L          MHUNTW   1,ADATA,CSTORE   
8PS=          LDX   0  AWORK2(2)
8Q?W          STO   0  A1+2(1)             [CURRENT ORG'BUCKET  
8QRG          STOZ     A1+1(1)             [NEXT ORG'BUCKET 
8R?6    #SKIP G4
8RQQ    (   
8S=B          ADN   0  7                   [FIND FIRST OCTET
8SQ2          ANDN  0  #7770
8T9L    )   
8TP=    #SKIP G3
8W8W    (   
8WNG          ADN   0  3                   [FIND FIRST QUARTET  
8X86          ANDN  0  #7774
8XMQ    )   
8Y7B          ADN   0  1
8YM2          STO   0  AWORK2(2)
8^6L          LDN   5  0                   [O/P POINTER 
8^L=    U1                                 [NEW RECORD  
925W          LDN   6  0                   [CHECKSUM
92KG          LDN   7  0                   [PECORD LENGTH   
9356    U2  
93JQ          FPCACA   1,FX2               [TEST IF END OF O/P  
944B          LDN   3  512  
94J2          LDX   0  ALIMIT(1)
953L          SBX   0  5
95H=          BZE   0  V4                  [JUMP IF SO  
962W    #SKIP G3
96GG    (   
9726          SBN   0  512                 [LESS THAN 512 WORDS LEFT?   
97FQ          BPZ   0  U2C  
97^B          ADX   3  0
98F2    )   
98YL    U2C 
99D=    #SKIP G4
99XW    (   
9=CG          LDN   4  CHUSED+GREAD 
9=X6          GETWORDX 5,1,4,4,3,VBIN      [GET NEXT 512 WORDS  
9?BQ          TESTRPN2 NOTUSED,U2B         [J IF NOT ACCESSED   
9?WB          VFREEW   ADATA,ERREPLY       [KEEP CORE TIDY  
9#B2          LDX   1  FX1                 [ON THE SAFE SIDE
9#TL          LDX   3  4                   [SKIP UNACCESSED AREA
9**=    )   
9*SW    #SKIP G3
9B#G          GETWORD  5,1,READ,4,3,VBIN
9BS6    #SKI  ADELO 
9C?Q          TESTREP2 LOADERR,Y8   
9CRB    U2B 
9D?2          BNZ   5  U2A  
9DQL          LDX   0  8(1)                [FIND ENTRY POINT
9F==          STO   0  AWORK1(2)           [PRESERVE IT 
9FPW    U2A 
9G9G          ADX   5  3                   [UPDATE POINTER BY RECORD LENGTH 
9GP6          STO   3  ACOMMUNE1(2)        [PRESERVE BLOCK LENGTH   
9H8Q    # NOW TEST IF BLOCK IS ENTIRELY ZERO
9HNB    #SKIP G4
9J82    (   
9JML          ANDN  3  512                 [TEST IF UNACCESSED  
9K7=          BZE   3  U5A  
9KLW    )   
9L6G          SUM   0  0(3)                [CHECKSUM IS NEEDED ANYWAY   
9LL6          ADX   6  0                   [UPDATE CHECKSUM OVER RECORD 
9M5Q    #SKIP G4
9MKB          BRN      U7   
9N52    #SKIP G3
9NJL    (   
9P4=          BNZ   0  U7   
9PHW    U5  
9Q3G          ORX   0  0(1) 
9QH6          BUX   1  £
9R2Q          BCT   3  U5   
9RGB          BNZ   0  U6   
9S22    )   
9SFL    # BLOCK IS ENTIRELY ZERO.TEST IF END OF RECORD  
9S^=    U5A 
9TDW          BZE   7  U2                  [BACK IF NO RECORD PRESENT   
9TYG          BRN      V2   
9WD6    U6  
9WXQ    #SKIP G3
9XCB          SBX   1  ACOMMUNE1(2)        [RESET O/P ADDRESS   
9XX2    U7  
9YBL          ADX   7  ACOMMUNE1(2)        [UPDATE RECORD LENGTH
9YW=          MHUNTW   2,FILE,FRWB  
9^*W          LDN   2  A1(2)
9^TG          MOVE  1  512  
=2*6          LDX   2  FX2  
=2SQ          SBSC  7  ACOMMUNE1(2)        [TEST IF FIRST BUCKET OF 
=3#B          BCS      V1                  [RECORD  
=3S2    # DEAL WITH FIRST BUCKET OF NEW RECORD  
=4?L          MHUNTW   3,ADATA,CSTORE      [ORGANISATIONAL BUCKET FULL? 
=4R=          LDX   0  A1(3)
=5=W          SBN   0  124  
=5QG          BNG   0  U9                  [JUMP IF NOT 
=6=6    U8  
=6PQ          CALL  4  ORGB                [TIDY ORGANISATIONAL BUCKET  
=79B          CALL  4  RENAM
=7P2          CALL  4  WRITB               [WRITE ORGANISATIONAL BUCKET 
=88L          CALL  4  RENAM
=8N=          CALL  4  NORGB               [BEGIN NEW ORG.BUCKET
=97W    U9  
=9MG          STO   5  AWORK3(2)           [STORE O/P ADDRESS   
==76          SBS   7  AWORK3(2)
==LQ          LDX   0  AWORK2(2)           [STORE BEGINNING BUCKET  
=?6B          STO   0  AWORK4(2)           [ADDRESS 
=?L2    # DEAL WITH BUCKETS OTHER THAN THE FIRST OF A RECORD
=#5L    V1  
=#K=          LDX   3  AWORK2(2)
=*4W          SRL   3  2                   [CONVERT TO BLOCK NUMBER 
=*JG          ADN   3  1
=B46          WRITED   3,4                 [WRITE 4 BUCKETS OF PROGRAM  
=BHQ          TESTRPN2 OVERFILE,ROOM
=C3B          GEOERR   1,SVFULL 
=CH2    ROOM
=D2L          SETNCORE 512,3,FILE,FRWB  
=DG=          LDN   0  4                   [FIND NEXT QUARTET   
=D^W          ADS   0  AWORK2(2)
=FFG          TXL   7  TURTY(1)            [JUMP UNLESS RECORD IS 30K   
=F^6          BCS      U2                  [NEXT RECORD 
=GDQ    V2  
=GYB          CALL  4  ORGR                [STORE ORG.RECORD
=HD2          BRN      U2   
=HXL    V4  
=JC=          BZE   7  V5   
=JWW          CALL  4  ORGR 
=KBG    # END OF OBJECT PROGRAM HAS BEEN REACHED AND LAST   
=KW6    # ORGANISATIONAL RECORD HAS BEEN FORMED 
=L*Q    V5  
=LTB          MHUNTW   1,ADATA,CSTORE      [TEST IF ROOM FOR ENTRY  
=M*2          LDX   3  A1(1)               [BLOCK   
=MSL          SBN   3  126  
=N#=          BNG   3  V6   
=NRW          CALL  4  ORGB                [IF NOT,TIDX BUCKET  
=P?G          CALL  4  RENAM
=PR6          CALL  4  WRITB               [AND WRITE IT
=Q=Q          CALL  4  RENAM
=QQB          CALL  4  NORGB               [NEW BUCKET  
=R=2          BRN      V5                  [FIND ADATA/CSTORE   
=RPL    V6  
=S9=          LDN   3  A1(1)               [FIND POSITION FOR ENTRY 
=SNW          LDN   0  2                   [UPDATE POINTER  
=T8G          ADX   3  0(3) 
=TN6          ADS   0  A1(1)
=W7Q          SMO      FX1  
=WMB          LDX   0  TEB               [STORE SPECIFICATION WORD  
=X72          STO   0  0(3) 
=XLL          LDX   0  AWORK1(2)           [STORE ENTRY WORD
=Y6=          STO   0  1(3) 
=YKW          CALL  4  ORGBX               [TIDY LAST BUCKET
=^5G          CALL  4  RENAM
=^K6          MFREE    ADATA,CSTORE        [FREE 512 WORD BLOCK 
?24Q          CALL  4  WRITB               [WRITE BUCKET AWAY   
?2JB          MHUNTW   1,FILE,FRWB         [MOVE IN CONSTANT DATA   
?342          LDN   4  A1(1)               [FOR FIRST BUCKET
?3HL          SMO      FX1  
?43=          LDN   3  XBUC1
?4GW          MOVE  3  19   
?52G          FPCACA   3,2                 [FIND REQUEST SLIP   
?5G6          HUNT2    3,AOBRES,0   
?5^Q          LDX   0  A1+1(3)  
?6FB          STO   0  A1+13(1)            [STORE PROGRAM NAME  
?6^2          LDX   0  AWORK2(2)
?7DL          SBN   0  1
?7Y=          STO   0  A1+15(1)            [STORE NUMBER OF BUCKETS 
?8CW          LDN   3  1
?8XG          CALL  4  WRITB               [WRITE BUCKET 1  
?9C6          MFREE    FILE,FRWB
?9WQ          LDN   6  0
?=BB    Y4    FPCACA   2,FX2
?=W2          HUNT2    3,APERI,APERIRES,2  [X3 -> PRB   
??*L          SMO      6
??T=          LDX   4  A1(3)               [GET 1ST/NEXT PRB ENTRY  
?##W          BNG   4  Y7                  [J IF END
?#SG          OUTPACK  4,1,PERINAME        [PERIPHERAL NAME -> OUTPUT BLOCK 
?*#6          MONOUT   JSAVE               [O/P NOT SAVED MESSAGE   
?*RQ          BDX   6  Y4                  [UPDATE PTR & GO BACK
?B?B    Y7    WORDFIN                      [TIDY UP 
?BR2    Y8  
?C=L          CLOSE                        [AND 
?CQ=          ENDCOM                       [FINISH  
?D9W    VBIN
?DPG          WORDFIN                      [SIGNAL END OF GETWORDS  
?F96          CLOSE 
?FNQ          COMBRKIN  
?G8B    ZERR  GEOERR   1,NOIMAGE           [NO CORE IMAGE   
?GN2          MENDAREA 30, K100SAVEDA   
?H7L    #END
^^^^ ...77504164000500000000