COREMACROS

(George Source)

COREMACROS.txt
229S ...[??? COREMOVE SECT CENT FGN 32 DOC  
22FL ...[                                  DEK BEASLEY : CENT   
23YG    [   
24D6    [ RESTORE TIME MACRO TO ADJUST THE AMOUNT OF CORE THAT THE CORE 
24XQ    [     ALLOCATION SYSTEM IS PREPARED TO MOVE TO AMALGAMATE FREE CORE 
25CB    #MAC  COREMOVE  
25X2    #STR  %A
26BL    #SKI  4*%A-48*%A+23&#40000000<1$1   
26W=    (   
27*W    #CON        COREMOVE'S PARAMETER NOT IN RANGE 1-11. 
27TG     !    %A NOT IN RANGE 12>PARAMETER>0
28*6    #EXIT   
28SQ    )   
29#B    #MEN  COREALL   
29S2    #TRA  CORESET   
2=?L          SRL   5  %A   
2=R=    #END
2?=W    #NOR
2?=Y ...[??? CHAPLOW SECT CENT FGN 32 DOC   
2??2 ...#   
2??6 ...#   
2?BG ...#MAC  CHAPLOW   
2?BH ...#ALT  CHAPLOW=%A+INSTPARAM  
2?BJ ...      FCMEND
2?BK ...      FIXTRA  CHAPLOW2  
2?BL ...      STO   0  GL2  
2?BM ...      LDX   0  CHAPLOW  
2?BN ...      BXGE  0  CHAPQUOTA,XIT1   
2?BP ...      BXL   0  ACHAP,XIT1   
2?BQ ...      BRN      XIT  
2?BR ...XIT1
2?BS ...      LDN   0  1
2?BT ...      ADS   0  GL2  
2?BW ...XIT 
2?BX ...      BRN      (GL2)
2?BY ...      FCEND 
2?B^ ...#MEN  COREALL   
2?C2 ...#UNS ISFCON 
2?C3 ...(   
2?C4 ...#TRA  CHAPLOW3  
2?C5 ...      CALL  0  CHAPLOW2 
2?C6 ...)   
2?C7 ...#TRA  CHAPLOW1  
2?C8 ...      CALL  0  CHAPLOW2 
2?C9 ...#END
2?C= ...#NOR
2?C? ...[??? CHAPMOVE SECT CENT FGN 32 DOC  
2?C# ...#   
2?C* ...#   
2?CB ...#MAC  CHAPMOVE  
2?CC ...#DEF  20?=0 
2?CD ...#STR  OFF,%A
2?CF ...#DEF  20?=1 
2?CG ...#SKI  20?   
2?CJ ...(   
2?CQ ...      FCMEND
2?CW ...XCMF
2?D2 ...      LDX   1  BDESTN   
2?D6 ...      NGNC  2  1
2?D= ...      FIXTRA   CHAPMOVE 
2?DB ...      LDN   2  0
2?DG ...      STO   0  GL2  
2?DL ...      LDX   0  AFLAG(1) 
2?DQ ...      ANDN  0  #200 
2?DW ...      BZE   0  NOCH 
2?F2 ...      LDX   0  1
2?F6 ...      ORX   0  GSIGN
2?F= ...      SMO      BACK1(1) 
2?FB ...      STO   0  KTAB 
2?FG ...      BZE   2  (GL2)
2?FL ...      LDX   2  BSOURCE  
2?FM ...      LDX   0  AFLAG(1) 
2?FN ...      ANDN  0  2                   [DON'T ALTER ACHAP & FREZCHAP IF 
2?FP ...      BNZ   0  MFX1                [ DESTINATION FROZEN 
2?FQ ...      LDX   0  ASIZE(2) 
2?FW ...      SBS   0  FREZCHAP 
2?G2 ...      ADS   0  ACHAP
2?G6 ...MFX1  LDN   0  A1(2)
2?G= ...      BXU   0  FX1,NF   
2?GB ...      LDN   2  A1(1)
2?GG ...      STO   2  FX1  
2?GL ...      SBS   0  GL2  
2?GQ ...      ADS   2  GL2  
2?GW ...NF    LDX   0  ALOGLEN(1)   
2?GX ...#UNS CA1D   
2?GY ...      ADX   0  CIRNDB   
2?G^ ...#UNS CA1D   
2?H2 ...#SKI
2?H3 ...      ADN   0  A1+IROUND-1  
2?H6 ...      ANDX  0  IROUNDNG 
2?H= ...      SBX   0  ASIZE(1) 
2?HB ...      BZE   0  NOCH 
2?HG ...      ADS   0  ASIZE(1) 
2?HJ ...      LDX   2  AFLAG(1) 
2?HL ...      ADX   1  ASIZE(1) 
2?HQ ...      NGS   0  ASIZE(1) 
2?HR ...      ANDN  2  2                   [IF DESTINATION FROZEN,THEN FAG  
2?HS ...      BNZ   2  MFAGFROZ            [ END SHOULD BE FROZEN AS WELL   
2?HW ...      STOZ     GENDP
2?J2 ...      BRN      CHAPMOVE7
2?J3 ...MFAGFROZ
2?J4 ...      STO   1  FPTR(1)             [SET UP RED TAPE FOR FROZEN FAG END  
2?J5 ...      STO   1  BPTR(1)  
2?J6 ...      STO   2  AFLAG(1) 
2?J7 ...      LDX   0  FPSEUTYP 
2?J8 ...      STO   0  ATYPE(1) 
2?J9 ...      LDX   0  GL2                 [JUMP TO CHAIN FAG END   
2?J= ...      BRN      (GFREE)             [ IN FROZEN FREE CHAIN   
2?J? ...NOCH  BZE   2  (GL2)
2?J# ...      LDX   1  FX1  
2?JB ...      LDX   2  FX2  
2?JG ...      BRN      (GL2)
2?JJ ...      FIXTRA CHAPMOVEF  
2?JL ...               +XCMF
2?JQ ...      FCEND 
2?JW ...)   
2?K2 ...#MEN  COREALL   
2?K6 ...#TRA  CHAPMOVE1 
2?K= ...      LDN   0  #217-(#200*20?)  
2?KB ...#TRA  CHAPMOVE2 
2?KG ...      ANDN  0  #201-(#200*20?)  
2?KL ...#TRA  CHAPMOVE3 
2?KQ ...      CALL  0  CHAPMOVE3+1+(CHAPMOVE-CHAPMOVE3-1*20?)   
2?KW ...#END
2?L2 ...#MEN  COREALLF  
2?L6 ...#TRA  CHAPMOVE5 
2?L= ...#SKI  20?   
2?LB ...      BRN      CHAPMOVE4
2?LG ...#SKI  20?<1$1   
2?LH ...(   
2?LK ...      LDN   0  4
2?LP ...)   
2?LQ ...#TRA  CHAPMOVE6 
2?LR ...#SKI  20?   
2?LS ...      CALL  0  (CHAPMOVEF)  
2?LT ...#SKI  20?<1$1   
2?LW ...      NULL  
2?LX ...#UNS  ISTDP 
2?LY ...#SKI
2?L^ ...(   
2?M2 ...#TRA  CHAPMOVE8 
2?M3 ...#SKI  20?   
2?M4 ...      NULL  
2?M5 ...#SKI  20?<1$1   
2?M6 ...      ANDX  0  AWORK1(2)
2?M7 ...)   
2?M8 ...#SKI  G4
2?M9 ...(   
2?M= ...#TRA  CHAPMOVE9 
2?M? ...#SKI  20?   
2?M# ...      BRN      CHAPMOVE10   
2?M* ...#SKI  20?<1$1   
2?MB ...      LDX   3  6
2?MC ...)   
2?MD ...#END
2?MG ...#NOR
2?MJ ...[??? LOCK SECT CENT FGN 32 DOC  
2?ML ...#   
2?QG    [   
2#=6    [ENTRY SEQUENCE FOR LOCKING A BLOCK ROUTINE 
2#PQ    [   
2*9B    #MAC  LOCK  
2*P2    #STR  %A,2  
2B8L          LDX   2  %A                  [ADDRESS OF BLOCK TO BE LOCKED   
2BN=          CALL  0  (GLOCK)  
2C7W    #NOR
2CCN ...[??? LOCKC SECT CENT FGN 32 DOC 
2CMG    #   
2D76    #   
2DLQ    #MAC  LOCKC 
2F6B    #STR  2,%A  
2FL2          LDX   2  %A   
2G5L          CALL  0  (GLOCKC) 
2GK=          CALL  1  %B   
2H4W          BLOCKCOPY 
2HJG    #NOR
2HS# ...[??? UNLOCK SECT CENT FGN 32 DOC
2J46    #   
2JHQ    [   
2K3B    [ENTRY SEQUENCE FOR UNLOCKING A BLOCK ROUTINE   
2KH2    [   
2L2L    #MAC  UNLOCK
2LG=    #STR  %A,2  
2L^W          LDX   2  %A                  [ADDRESS OF BLOCK TO BE UNLOCKED 
2MFG          CALL  0  (GUNL)   
2M^6    #NOR
2M^G ...[???  RELOCKLONG SECT FILE FGN 1 DOC
2M^W ...[   
2N2= ...[      MACRO TO MOVE & RELOCK A LONGLOCK BLOCK  
2N2L ...[   
2N32 ...#MAC  RELOCKLONG
2N3B ...#SKI  %A-3  
2N3Q ...      LDX   3  %A   
2N46 ...      LDX   0  AFLAG(3) 
2N4G ...      ANDN  0  #402 
2N4W ...      BZE   0  MRELOCKLONG  
2N5= ...      GETCORE  ALOGLEN(3),1,1   
2N5L ...      FINDCORE 0
2N62 ...      LDX   2  %A   
2N6B ...      LDX   3  0
2N6Q ...#SKI  %A-3  
2N76 ...      STO   3  %A   
2N7G ...      BLOCKCOPY 
2N7W ...MRELOCKLONG 
2N8= ...#NOR
2N8Y ...[??? CHAIN SECT CENT FGN 32 DOC 
2NDQ    [   
2NYB    [   
2PD2    [ENTRY SEQUENCE FOR CHAIN BLOCK ROUTINE 
2PXL    [   
2QC=    #MAC  CHAIN 
2QWW    #STR  %A,1  
2RBG          LDX   1  %A                  [ADDRESS OF BLOCK TO BE CHAINED  
2RW6    #STR  %B,1  
2S*Q    #SKI
2STB    (   
2T*2    ! %B=1 ILLEGAL FOR CHAIN
2TSL          GEOERR   1,CHAINBWR   
2W#=    )   
2WRW    #STR  %B,2  
2X?G          LDX   2  %B                  [ADDRESS OF PRECEDING BLOCK  
2XR6          CALL  0  (GCHAN)  
2Y=Q    #NOR
2YGJ ...[??? CHAIND SECT CENT FGN 32 DOC
2YQB    [   
2^=2    [ENTRY SEQUENCE FOR CHAIN ROUTINE WHEN %B=THE BASE OF A CHAIN   
2^PL    [   
329=    #MAC  CHAIND
32NW    #STR  %A,1  
338G          LDX   1  %A                  [LOAD ADDRESS OF BLOCK TO BE CHAINED 
33N6          LDN   2  %B                  [LOAD ADDRESS OF BASE
347Q          CALL  0  (GCHAN)  
34MB    #NOR
3?=# ...[??? FREECORE SECT CENT FGN 32 DOC  
3?G6    [   
3?^Q    [ENTRY SEQUENCE FOR FREEING CORE ROUTINE
3#FB    [   
3#^2    #MAC  FREECORE  
3*DL    #STR  %A,1  
3*Y=          LDX   1  %A                  [ADDRESS OF BLOCK TO BE FREED
3BCW          CALL  0  (GFREE)  
3BXG    #NOR
3C7# ...[??? FREECORD SECT CENT FGN 32 DOC  
3CC6    [   
3CWQ    [ENTRY SEQUENCE FOR FOEEING CORE WITHOUT WAKING UP OTHER ACTIVITIES 
3DBB    [   
3DW2    #MAC  FREECORD  
3F*L          FREECORE %A   
3FT=    #NOR
3FTK ...#UNS ISFC   
3FTY ...(   
3FW? ...[??? FREEIN SECT CENT FGN   
3FWL ...[   
3FW^ ...[ENTRY SEQUENCE FOR CHAINING BLK INTO SIZE RING (IN STRUCTURED FREECORE)
3FX# ...[   
3FXM ...#MAC  FREEIN
3FY2 ...#STR  %A,1  
3FY* ...      LDX   1  %A                  [ADDRESS OF BLOCK
3FYN ...      CALL  0  (GFRIN)  
3F^3 ...#NOR
3F^B ...[??? FREEOUT SECT CENT FGN  
3F^P ...[   
3G24 ...[ENTRY SEQUENCE FOR DECHAINING BLK FROM SIZE RING (STRUCTURED FREE CORE)
3G2C ...[   
3G2Q ...#MAC  FREEOUT   
3G35 ...#STR  %A,1  
3G3D ...      LDX   1  %A                  [ADDRESS OF BLOCK
3G3R ...      CALL  0  (GFROUT) 
3G46 ...#NOR
3G4F ...)   
3G54 ...[??? ALTBOTH SECT CENT FGN 32 DOC   
3G#W    [   
3GSG    [ENTRY SEQUENCE FOR CHANGING A BLOCK LENGTH ROUTINE 
3H#6    [   
3HRQ    #MAC  ALTBOTH      [DEFINING MACRO FOR ALTLEN,ALTLEND   
3J?B    #STR  %C%D  
3JR2    (   
3K=L          BRN      MALT2
3KQ=    MALT1 MHUNT    2,%C,%D  
3L9W          EXIT  1  0
3LPG    MALT2 ALTLENG%F %A,%B,MALT1 
3M96    #EXI
3MNQ    )   
3N8B    #STR  FX2,%A
3NN2    #SKI
3P7L    (   
3PM=          ALTLENG%F %A,%B,£ 
3Q6W    #EXI
3QLG    )   
3R66          LDX   1  %A   
3RKQ          LD%E  2  %B   
3S5B          CALL  0  (CHANGE) 
3SK2    #NOR
3SSS ...[??? ALTLEN SECT CENT FGN 32 DOC
3T4L    #   
3TJ=    #MAC  ALTLEN                       [TO ALTER BLOCKS LOGICAL LENGTH  
3W3W          ALTBOTH  %A,%B,%C,%D,X
3WHG    #NOR
3WR# ...[??? ALTLEND SECT CENT FGN 32 DOC   
3X36    #   
3XGQ    #MAC  ALTLEND                      [TO ALTER BLOCKS LOGICAL LENGTH  
3Y2B          ALTBOTH  %A,%B,%C,%D,N,D  
3YG2    #NOR
3YPS ...[??? ALTLENG SECT CENT FGN 32 DOC   
3Y^L    #   
3^F=    # ALTLENG & VARIANTS ARE LIKE ALTLEN ETC BUT DONT INVOLVE LOCKING THE   
3^YW    # BLOCK 
42DG    #   
42Y6    #MAC  ALTLENG   
43CQ          LDX   1  %A   
43XB          LDX   2  %B   
44C2          CALL  0  (CHANGEG)
44WL    #STR  %C,£  
45B=                   +%C                 [SUBROUTINE ADDRESS  
45TW    #STR  %C
46*G    #SKI
46T6                   #10000000           [%C ABSENT   
47#Q    #STR  £,%C  
47SB    #SKI
48#2                   +0                  [%C=£
48RL    #NOR
493D ...[??? ALTLENGD SECT CENT FGN 32 DOC  
49?=    #   
49QW    #MAC  ALTLENGD  
4==G          LDX   1  %A   
4=Q6          LDN   2  %B   
4?9Q          CALL  0  (CHANGEG)
4?PB    #STR  %C,£  
4#92                   +%C                 [SUBROUTINE ADDRESS  
4#NL    #STR  %C
4*8=    #SKI
4*MW                   #10000000           [%C ABSENT   
4B7G    #STR  £,%C  
4BM6    #SKI
4C6Q                   +0                  [%C=£
4CLB    #NOR
4CW8 ...[??? ALTLENGR SECT CENT FGN 32 DOC  
4D62    #   
4DKL    #MAC  ALTLENGR                     [ALTLENR VERSION AVOIDING LOCK   
4F5=     MOD  LDX   %B ARINGNO,%A   
4FJW          SRL   %B 15   
4G4G     MOD  ADX   %B ALOGLEN,%A   
4GJ6          ALTLENG  %A,%B,%C 
4H3Q    #NOR
4H?J ...[??? GETCORAL SECT CENT FGN 32 DOC  
4HHB    #   
4J32    #     THE GETCORE SET OF MACROS FOR GETTING A BLOCK OF CORE 
4JGL    #   
4K2=    #MAC  GETCORAL                     [USED FOR DEFINING THE REST  
4KFW          LD%B  2  %A   
4K^G    #STR  %D%E  
4LF6    (   
4LYQ    #STR  %E
4MDB          LDCT  1  %E   
4MY2    #STR  %E
4NCL    #SKI
4NX=          LDCT  1  2
4PBW    #STR  %D
4PWG          OR%F  1  %D   
4QB6    #STR  %D
4QTQ    #SKI
4R*B          NULL                         [INCLUDED SO LINK STEPPING WORKS 
4RT2          CALL  0  (GCORE1) 
4S#L                   +%C  
4SS=    #EXI
4T?W    )   
4TRG          CALL  0  (GCORE)  
4W?6                   +%C  
4WQQ    #NOR
4X2J ...[??? GETCORE SECT CENT FGN 32 DOC   
4X=B    #   
4XQ2    #MAC  GETCORE   
4Y9L          GETCORAL %A,X,HMANDAT*%B+0%C:0,%D,%E,N
4YP=    #NOR
4Y^4 ...[??? GETCOREN SECT CENT FGN 32 DOC  
4^8W    #   
4^NG    #MAC  GETCOREN  
5286          GETCORAL %A,N,HMANDAT*%B+0%C:0,%D,%E,N
52MQ    #NOR
52XJ ...[??? GETCOREX SECT CENT FGN 32 DOC  
537B    #   
53M2    #MAC  GETCOREX  
546L          GETCORAL %A,X,HMANDAT*%B+0%C:0,%D,%E,X
54L=    #NOR
54W4 ...[??? LONGLOCK SECT CENT FGN 32 DOC  
555W    #   
556^ ...#MAC  LONGLOCK  
5584 ...      MOD      LDX 2 ALOGLEN,%A 
5597 ...      CALL  0  (GCORE)  
55== ...               +HMANDAT+HLONGLOCK:0 
55?* ...#STR  %B
55#D ...      CALL  1  %B   
55*H ...      BLOCKCOPY 
55*R ...      LDN   0  #4                  [SET THE LONGLOCK BIT
55B3 ...      SMO      BDESTN   
55B? ...      ORS   0  AFLAG
55BL ...#NOR
55C7 ...[??? LOSELONG SECT CENT FGN 32 DOC  
55CP ...#MAC  LOSELONG  
55DS ...      LDN   0  4
55FX ...      MOD      ORS 0 AFLAG,%A   
55H2 ...      MOD      ERS 0 AFLAG,%A   
55J5 ...#NOR
55JR ...[??? BLOCKCOP SECT CENT FGN 32 DOC  
55KG    #MAC  BLOCKCOPY                    [COPIES BLOCK FROM OLD TO NEW SITES  
5656                                       [ & FREES OLD SITE   
56JQ          CALL  0  (BCOPY)  
574B    #NOR
57#8 ...[??? BLOCKMOV SECT CENT FGN 32 DOC  
57J2    #   
583L    #MAC  BLOCKMOVE                    [MOVES [X3] WORDS FROM BLOCK AT  
58H=                                       [ X1 TO X2 ,UPDATING RINGS ETC   
592W          CALL  0  (BMOVE)  
59GG    #NOR
59Q# ...[??? EMSCORE SECT CENT FGN 32 DOC   
5=26    #   
5=FQ    [   
5=^B    [ENTRY SEQUENCE TO SPECIAL EARLY MORNING START ROUTINE WHICH GETS CORE  
5?F2    [FROM THE TOP END OF THE STORE  
5?YL    [   
5#D=    #MAC  EMSCORE   
5#XW    [   
5*CG    [THIS IS A SPECIAL EARLY MORNING START ROUTINE WHICH GETS A BLOCK OF
5*X6    [CORE FROM THE TOP OF STORE 
5BBQ    [   
5BWB    SEMS  LDX   2  %A                  [LOAD AMOUNT REQUIRED
5CB2          STO   2  GLOGLEN             [PRESERVE LOGICAL LENGTH 
5CTL          ADN   2  A1   
5D*=    #STR  %B
5DSW    (   
5F#G          BZE   %B SEMS1               [J IF BLOCK NEEDNT START AT IROUND   
5FS6          LDX   1  BFREE+1             [ MULTIPLE   
5G?Q          LDX   1  ASIZE(1)            [ELSE SET SIZE SO THAT BLOCK WILL
5GBW ...#UNS CA1D   
5GG2 ...      ANDX  1  CIRNDA   
5GK6 ...#UNS CA1D   
5GN= ...#SKI
5GRB          ANDN  1  IROUND-1            [ START ON A MULTIPLE OF IROUND  
5H?2          SBX   2  1
5HB6 ...#UNS CA1D   
5HF= ...      ADX   2  CIRNDA   
5HJB ...#UNS CA1D   
5HMG ...#SKI
5HQL          ADN   2  IROUND-1 
5J==          ANDX  2  IROUNDNG 
5JPW          ADX   2  1
5K9G    SEMS1   
5KP6    )   
5L8Q          LDX   1  BFREE+1             [FIND LAST BLOCK OF FREECORE 
5LNB          LDX   0  ASIZE(1)            [ GET ITS SIZE   
5M82          SBS   2  CFREE               [SUB AMOUNT GIVEN FROM CURRENT FREE  
5MML          SBS   2  AFREE
5N7=          SBX   0  2                   [SUB REQUIRED SIZE   
5NLW          BNG   0  SERR                [J IF NOT ENOUGH 
5P6G          BZE   0  SALL                [J IF ALL NEEDED 
5PL6          SBS   2  ASIZE(1)            [SET NEW SIZE OF FREE BLOCK  
5R52          ADX   1  0                   [CALC ADDRESS OF GOT BLOCK   
5RJL          STO   2  ASIZE(1)            [STORE ITS SIZE  
5RLJ ...#UNS ISFC   
5RNG ...(   
5RQD ...      SBX   1  0                   [RETURN TO THE FREE BLOCK
5RSB ...      FREEOUT  1                   [DECHAIN FROM SIZE RING,AS SHORTER   
5RW# ...      FREEIN   1                   [CHAIN INTO NEW SIZE RING
5RY= ...      ADX   1  ASIZE(1)            [NOW BACK TO THE GOT BLOCK   
5S28 ...)   
5S4=          LDN   0  #10                 [ LOCK IT
5SHW          STO   0  AFLAG(1) 
5T3G          STOZ     ATYPE(1) 
5TH6          STOZ     BACK1(1) 
5W2Q          STOZ     BACK2(1) 
5WGB          LDX   2  GLOGLEN             [SET LOGICAL LENGTH  
5X22          STO   2  ALOGLEN(1)   
5XFL          LDCT  2  #2   
5X^=          STO   2  ARINGNO(1)   
5YDW          LDX   2  FX2                 [CHAIN GOT BLOCK AFTER ACTIVITY  
5YYG          LDX   0  FPTR(2)  
5^D6          STO   1  FPTR(2)  
5^XQ          STO   0  FPTR(1)  
62CB          STO   2  BPTR(1)  
62X2          SMO      0
63BL          STO   1  BPTR 
63W=          LDX   1  FX1  
64*W          BRN      SEMSEND  
64TG    SALL
657X ...#UNS ISFC   
65G# ...      FREEOUT  1                   [REMOVE BLK FROM SIZE RING   
65SQ          LDN   0  #10                 [ LOCK IT
66#B          STO   0  AFLAG(1) 
66S2          STOZ     ATYPE(1) 
67?L          STOZ     BACK1(1) 
67R=          STOZ     BACK2(1) 
68=W          CHAIN    1,FX2               [CHAIN IT
68QG          BRN      SEMSEND  
69=6    SERR  GEOERR   1,EMSCORE
69PQ    SEMSEND 
6=9B    #NOR
6=F8 ...[??? GETEMSCR SECT CENT FGN 32 DOC  
6=P2    [   
6?8L    [ENTRY SEQUENCE FOR EMS TO GET CORE SAME WAY AS LINK BLOCK  
6?N=    [   
6#7W    #MAC  GETEMSCR  
6#MG    #STR  %A,4  
6*76          LDX   4  %A   
6*LQ          CALL  0  (GEMS)   
6B6B    #NOR
6BB8 ...[??? GETLINK SECT CENT FGN 32 DOC   
6BL2    [   
6C5L    [ENTRY SEQUENCE FOR GETTING A LINK BLOCK
6CK=    [   
6D4W    #MAC  GETLINK   
6DJG          CALL  0  GLINK
6F46    #NOR
6F?Y ...[??? GETQUE SECT CENT FGN 32 DOC
6FHQ    [   
6G3B    [ENTRY SEQUENCE FOR GETTING A QUEUE BLOCK   
6GH2    [   
6H2L    #MAC  GETQUE
6HG=          CALL  0  GQUEU%A  
6H^W          ZERORING 0
6JFG    #NOR
6JP# ...[??? ZERORING SECT CENT FGN 32 DOC  
6J^6    [   
6KDQ    [THIS IS A RECURSIVE MACRO WHICH INITIALISES ALL RING ELEMENTS IN A 
6KYB    [QUEUE BLOCK UP TO BUT NOT INCLUDING CHAINADD/BACKCHAN  
6LD2    [   
6LXL    #MAC  ZERORING  
6MC=    #OPT  MZERORING1=%A 
6MWW    #OPT  MZERORING=1   
6NBG    #SKI  CHAINADD-ARINGNO-1-MZERORING1 
6NW6    (   
6P*Q    #SKI  MZERORING 
6PTB    (   
6Q*2          LDX   3  FPTR(2)  
6QSL    #FRE  MZERORING 
6R#=    #OPT  MZERORING=0   
6RRW    )   
6S?G          STOZ     ARINGNO+MZERORING1+2(3)  
6SR6    #FRE  MZERORING1
6T=Q          ZERORING %A+2 
6TQB    )   
6W=2    #FRE  MZERORING1,MZERORING  
6WPL    #NOR
6W^D ...[??? GETCHAP SECT CENT FGN 32 DOC   
6X9=    [   
6XNW    [ENTRY SEQUENCE FOR GETTING CHAPTER SPACE   
6Y8G    [   
6YN6    #MAC  GETCHAP   
6^7Q          GETCORAL %A,X,HMANDAT+HCHAP:0 
6^MB    #NOR
6^X8 ...[??? FINDCORE SECT CENT FGN 32 DOC  
7272    [   
72LL    [MACRO FOR FINDING A BLOCK OF CORE JUST GOT 
736=    [   
73KW    #MAC  FINDCORE  
745G          LDX   %A FPTR(2)             [LOAD FORWARD POINTER
74K6    #NOR
74SY ...[??? NAME SECT CENT FGN 32 DOC  
754Q    [   
75JB    [THE MACRO FOR GIVING A BLOCK A PARTICULAR TYPE AND SUB TYPE
7642    [   
76HL    #MAC  NAME  
773=          LDN   0  %C+%B               [LOAD BLOCK TYPE 
77GW          SLL   0  12                  [SHIFT UP
782G          MOD      STO 0 ATYPE,%A   
78G6    #NOR
78PY ...[??? NAMETOP SECT CENT FGN 32 DOC   
78^Q    [   
79FB    [     ALTERS TYPE WORD OF BLOCK (MS 12BITS ONLY). PARAMETERS SAME AS FOR
79^2    [   
7=DL    #MAC  NAMETOP   
7=Y=          LDN   0  #7777
7?CW          MOD      ANDS 0 ATYPE,%A  
7?XG          LDN   0  %C+%B               [LOAD BLOCK TYPE 
7#C6          SLL   0  12   
7#WQ          MOD      ORS 0 ATYPE,%A   
7*BB    #NOR
7*L8 ...[??? NAMEX SECT CENT FGN 32 DOC 
7*W2    #   
7B*L    # MACRO FOR GIVING A BLOCK THE TYPE AND SUB-TYPE HELD IN X0 
7BT=    #MAC  NAMEX 
7C#W          MOD      STO 0 ATYPE,%A   
7CSG    #NOR
7D4# ...[??? PHOTO SECT CENT FGN 32 DOC 
7D#6    #   
7DRQ    [   
7F?B    [THIS MACRO PHOTOGRAPHS THE CURRENT BLOCKS MOVED COUNT  
7FR2    [   
7G=L    #MAC  PHOTO 
7GQ=          LDX   %A BCOUNT              [LOAD BLOCKS MOVED COUNT 
7H9W    #NOR
7HFN ...[??? TESTMOVE SECT CENT FGN 32 DOC  
7HPG    [   
7J96    [THIS MACRO TESTS WHETHER ANY BLOCKS HAVE BEEN MOVED SINCE THE BLOCK
7JNQ    [COUNT WAS LAST PHOTOGRAPHED
7K8B    [   
7KN2    #MAC  TESTMOVE  
7L7L          TXU   %A BCOUNT              [COMPARE THE TWO COUNTS  
7LM=          BCC      %B                  [J IF UNCHANGED  
7M6W    #NOR
7MBN ...[??? CXMEND SECT CENT FGN 32 DOC
7MLG    #   
7N66    # THE FOLLOWING CX MACROS PROVIDE A RESTORE TIME CHECKING FACILITY  
7NKQ    #MAC  CXMEND
7P5B    #OPT  FC50A=0   
7PK2    #SKI  FC50A<1-1    [IF FIRST CXMEND,FOLLOWING CODE COMPILES 
7Q4L    (   
7QJ=    #STR  DELAY,%A  
7R3W    #SKI
7RHG    (   
7S36          RESOFF   CHECK
7SGQ    )   
7T2B    #MEN  CHCH  
7TG2    #TRA  FZCO  
7T^L          BRN      JFCT                [FCMEND STARTING LABEL   
7WF=    #END
7WYW          FCMEND
7XDG          BSOFF    CHECK,FC50B  
7XY6    )   
7YCQ    [  SUBSEQUENT CXMENDS MUST NOT HAVE 'DELAY' PARAM, AND CANNOT HAVE MORE 
7YXB    [     THAN ONE CXMEND IF FIRST HAD 'DELAY' PARAM.   
7^C2    #SKI  FC50A 
7^WL    (   
82B=    #STR  DELAY,%A  
82TW    #SKI
83*G    (   
83T6    ! DELAY PARAMETER NOT ALLOWED   
84#Q    #CON  ERROR IN CXMEND DELAY 
84SB    #MEN  CEND  
85#2    #TRA  FC50A 
85RL          BRN      FC50B
86?=    #END
86QW          FCMEND
87=G    #EXIT   
87Q6    )   
889Q    #SKI
88PB    (   
8992    ! DELAY PARAMETER USED PREVIOUSLY   
89NL    #CON  ERROR IN CXMEND   
8=8=    #MEN  CEND  
8=MW    #TRA  FC50A 
8?7G          BRN      FC50B
8?M6    #END
8#6Q          FCMEND
8#LB    #EXIT   
8*62    )   
8*KL    #MEN  CEND         [IF NOT FIRST CXMEND, THIS CODE COMPILES 
8B5=    #TRA  FC50A 
8BJW          BRN      JFCT                [FCMEND STARTING LABEL   
8C4G    #END
8CJ6          FCMEND
8D3Q    )   
8DHB    #SKI  FNOISE
8F32    (   
8FGL    #STR  SELECT,%B 
8G2=    #SKI
8GFW    (   
8G^G          SMO      FX2  
8HF6          LDX   1  ALINK1   
8HYQ          BPZ   1  FC50B
8JDB          ANDX  1  BITS22LS 
8JY2          JBC   FC50B,BACK2(1),CXSELECT 
8KCL    )   
8KX=    )   
8LBW    #NOR
8LLN ...[??? CXEND SECT CENT FGN 32 DOC 
8LWG    #   
8MB6    #MAC  CXEND 
8MTQ    #DEF  20?=37?+0?                   [CURRENT TRANSFER ADDRESS
8N*B    #SKI  FC50A<1-1    [IF FIRST CXEND, FOLLOWING CODE COMPILES 
8NT2    (   
8P#L          NULL  
8PS=    FC50B LDX   2  FX2  
8Q?W          LDX   0  ACTNUM(2)
8QRG          STO   0  AGEDACTY 
8R?6          BRN      FZCO+1   
8RQQ    )   
8S=B    #SKI  FC50A        [IF NOT FIRST CXEND, THIS NEXT LINE COMPILES 
8SQ2          BRN      FC50B
8T9L          FCEND    %A   
8TP=    #ALT  FC50A=20? 
8W8W    #NOR
8WDN ...[??? CXCHANS SECT CENT FGN 32 DOC   
8WNG    #   
8X86    #MAC  CXCHANS                      [CHECKS CHAINS   
8XMQ    #STR  %A
8Y7B    #SKI
8YM2    (   
8^6L          LDN   1  0
8^L=          LDN   6  CHCX 
925W    MCX1  LDX   3  CXSTART(1)   
92KG    )   
9356    #STR  %A
93JQ    (   
944B          CALL  1  MCX2 
94J2    MCX3  CXCQ  %A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S
953L    MCX2  LDN   6  MCX2-MCX3
95H=    MCX1  OBEY     0(1) 
962W    )   
96GG          LDX   4  3
9726    MCX4  LDX   5  3
97FQ          LDX   3  FPTR(3)  
97^B          BXU   5  BPTR(3),MCX5 
98F2          BXU   3  4,MCX4   
98YL          ADN   1  1
99D=          BCT   6  MCX1 
99XW          BRN      MCX6 
9=CG    MCX5  GEOERR   1,CHCORE 
9=X6    MCX6
9?BQ    #NOR
9?F* ...[ MACROS CXSELECT AND NOISY ARE DORMANT UNTILL  
9?HY ...[ (IF EVER) NOISY CORE IS RESURECTED.   
9?LJ ...[??? CXSELECT SECT CENT FGN 32 DOC  
9#4L ...[#  
9#GN ...[[  
9#YQ ...[#MAC  CXSELECT 
9*BS ...[#SKI  FNOISE   
9*SW ...[(  
9B=Y ...[#STR  %A   
9BP2 ...[      RBS      CHTABLE,KTAB+K%A,CXSELECT   
9C74 ...[)  
9CK6 ...[#NOR   
9D38 ...[??? CXSIZE SECT CENT FGN 32 DOC
9D?2    [   
9DQL    #MAC  CXSIZE                       [CHECKS SIZE WORDS   
9F==          NGX   0  GFIXCHAP 
9FPW          BPZ   0  MCX1 
9G9G          LDX   3  FCORES   
9GP6    MCX2  ADX   3  ASIZE(3) 
9H8Q          BXU   3  GFIXCHAP,MCX2
9HNB    MCX1
9J82    #NOR
9JCS ...[??? CXCQ SECT CENT FGN 32 DOC  
9JML    #   
9K7=    #MAC  CXCQ     [RECURSIVE TABLE BUILDING MACRO USED IN CXCHAN   
9KLW    #STR  %A
9L6G    (   
9LL6          LDX   3  CX%A^0              [^0 SO GIN ERROR IF CX%A UNDEFINED   
9M5Q          CXCQ     %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q, 
9MKB    )   
9N52    #NOR
9N#S ...[??? NOISY SECT CENT FGN 32 DOC 
9NS= ...[[  
9P?N ...[[ THE NOISY MACRO IMPLEMENTS THE NOISY CORE SYSTEM.
9PR6 ...[[  IT SHUFFLES CORE, USING COREALLF, BEFORE ENTERING SELECTED CHAPTER  
9Q=J ...[[  
9QQ2 ...[#MAC  NOISY
9R9D ...[#SKI  FNOISE   
9RNW ...[(  
9S8# ...[#OPT  NOISENOW=1                   [ =1 IF NO NOISY HAS BEEN ISSUED YET
9SMQ ...[#SKI  NOISENOW                  [ INCLUDE CODE ONLY IF NO NOISY MACRO  
9T78 ...[(                                  [   HAS BEEN ISSUED YET 
9TLL ...[#DEF  26?=1?   
9W64 ...[#LIS  %B+0 
9WKG ...[      FCMENDV  
9X4Y ...[      REPLACER GNCCODE,FCNCXEQ     [ POINTER TO SUBROUTINE ENTRY POINT 
9XJB ...[      FCENDV                       [   AND DUMP AREA   
9Y3S ...[      CXMEND   %A,SELECT           [ J TO CXEND IF NEXT CHAP NOT SELECT
9YH= ...[      JBS      Z1A,2,BYPASS        [ NOISY MOVE ALREADY DONE IF BIT SET
9^2N ...[      SMO      GNCCODE 
9^G6 ...[      LDX   0  1+ALINK1-ACC3       [ LOAD DUMP OF ALINK1   
9^^J ...[      BNZ   0  Z1B              [ J IF NON-ZERO.  A NOISY IN PROGRESS  
=2F2 ...[      SMO      GNCCODE 
=2YD ...[      LDX   0  1                   [ DUMP WORDS ACC3 TO ACOMMUNE9 OF   
=3CW ...[      LDX   7  ACC3(2)             [   CURRENT ACTIVITY IN WORKSPACE   
=3X# ...[      MOVE  7  ACOMMUNE9+1-ACC3    [   AT ZCACCDP, AND 
=4BQ ...[      BS       2,BYPASS            [   SET BIT INDICATING NOISY ENTERED
=4W8 ...[      LDN   0  ACC3-1              [ NOW USE ACOMMUNE1 AS POINTER TO   
=5*L ...[      STO   0  ACOMMUNE1(2)        [   NEXT DATA WORD TO CHECK 
=5T4 ...[      LDN   5  0                   [ X5 IS SUCCESS OR FAIL MARKER IN   
=6#G ...[      ACROSS   COREALLF,4          [   COREALLF.  X5=0 => FAIL 
=6RY ...[ LABFIX FCNCXEQ     [ (GNCCODE) IDENTIFIES BOTH S/R ENTRY PT AND DUMP  
=7?B ...[      BRN      XEQ                 [ JUMP TO EXECUTE S/R CODE  
=7QS ...[[ WORK SPACE - FIXED AT (GNCCODE)+1 TO ALLOW REPLACED ADDRESSING OF
=8== ...[[     CORE ABOVE 4095  
=8PN ...[#REP  ACOMMUNE9+1-ACC3             [ DUMP OF WORDS ACC3 TO ACOMMUNE9   
=996 ...[               +0  
=9NJ ...[[ THE SUBROUTINE CALLED FROM COREALLF (WITH X4 AS LINK)
==82 ...[[     WHEN ALL MOVES COMPLETED, NOISY EXITS FROM THE MIDDLE OF THIS
==MD ...[[     SUBROUTINE.  HENCE THE CODE AT COREALLF,4 IS A LOOP  
=?6W ...[XEQ   BZE   5  Z5                  [ IF CORE WAS SUCCESSFULLY OBTAINED,
=?L# ...[      FREECORE FPTR(2)             [   FREE IT 
=#5Q ...[Z5    LDN   7  1                [ POINT TO NEXT DATA WORD OF ACTIVITY  
=#K8 ...[      ADS   7  ACOMMUNE1(2)        [   BLOCK   
=*4L ...[      LDN   6  ACOMMUNE9   
=*J4 ...[      BXL   6  ACOMMUNE1(2),Z3     [ IS THIS ONE OF THE DUMPED WORDS?  
=B3G ...[      LDX   3  ACOMMUNE1(2)        [ IF SO, GET IT FROM THE DUMP AREA  
=BGY ...[      SBN   3  ACC3-1           [ X3 IS A POINTER RELATIVE TO FCNCXEQ  
=C2B ...[      SMO      GNCCODE 
=CFS ...[      LDX   6  0(3)
=C^= ...[      BRN      Z2  
=DDN ...[Z3    SMO      ALOGLEN(2)          [ IF NOT, TEST THAT THE POINTER DOES
=DY6 ...[      LDN   6  A1-1                [   NOT POINT PAST THE END OF THE   
=FCJ ...[      BXL   6  ACOMMUNE1(2),Z4     [   DATA IN THE ACTIVITY BLOCK  
=FX2 ...[      SMO      ACOMMUNE1(2)        [ IF OK, GET THE WORD FROM THE  
=GBD ...[      LDX   6  0(2)                [   ACTIVITY BLOCK  
=GTW ...[Z2    ANDX  6  BITS22LS            [ GET THE BLOCK BOUNDARY ADDRESS
=H*# ...[      ANDX  6  IROUNDNG            [   JUST BELOW THE ADDRESS IN THIS  
=HSQ ...[      BXL   6  FCORES,Z5           [   WORD, AND TEST IF IT LIES IN
=J#8 ...[      BXGE  6  GFIXCHAP,Z5      [   VARIABLE CORE. IF NOT, GO TO NEXT  
=JRL ...[      LDN   7  A1+IROUND-1         [ PUT SMALLEST POSSIBLE BLOCK SIZE  
=K?4 ...[      ANDX  7  IROUNDNG            [   IN X7   
=KQG ...[      ADX   6  7                   [ CHECK THAT THE BLOCK WOULD NOT
=L9Y ...[P2    BXL   6  GFIXCHAP,P1         [   EXTEND PAST GFIXCHAP
=LPB ...[      SBN   6  IROUND              [ IF IT WOULD, MOVE X6 DOWN 
=M8S ...[      BRN      P2                  [   SUFFICIENTLY
=MN= ...[P1    SBX   6  7                   [ X6,X7 SET UP.  EXIT TO COREALLF TO
=N7N ...[      EXIT  4  0                   [ DO THE COREFREEZE, SO MOVING THE  
=NM6 ...[[     BLOCK WHICH THIS DATA WORD IN THE ACTIVITY BLOCK MAY HAVE BEEN   
=P6J ...[[     POINTING TO  
=PL2 ...[Z4    NGN   7  1                   [ HAVING TESTED ALL DATA WORDS, WE  
=Q5D ...[      STO   7  GEN0             [   OVERWRITE THE COMMON 'SCRATCHPAD'  
=QJW ...[      LDN   6  GEN0                [   WORDS GEN0-GEN6 WITH -1, IN CASE
=R4# ...[      LDN   7  GEN1                [   THEY TOO HELD LINKS OVER A  
=RHQ ...[      MOVE  6  GEN6-GEN0           [   COORDINATION
=S38 ...[      SMO      GNCCODE 
=SGL ...[      LDN   6  1                   [ RESTORE THE DUMPED WORDS TO THE   
=T24 ...[      LDN   7  ACC3(2)             [   ACTIVITY BLOCK  
=TFG ...[      MOVE  6  ACOMMUNE9+1-ACC3
=TYY ...[      SMO      GNCCODE 
=WDB ...[      STOZ     1+ALINK1-ACC3       [ CLEAR THE 'NOISY IN ACTION' MARKER
=WXS ...[      FON      FORACCDP         [ WAKE UP ACTIVITIES WAITING FOR TURN  
=XC= ...[      FPUT                         [ PUT THIS ACTY ON END OF ACTY LIST 
=XWN ...[      COOR1X                    [   AND PUT IT TO SLEEP.  ON RE-ENTRY  
=YB6 ...[[     TO THE COORDINATOR, THE BY-PASS BIT IS SET AND THIS CORE MOVING  
=YTJ ...[[     CODE WILL BE SKIPPED 
=^*2 ...[Z1B   COOR3X   FORACCDP            [ WAIT FOR TURN IN NOISY
=^SD ...[Z1A   BC       2,BYPASS            [ CLEAR BY-PASS BIT AND COMPLETE THE
?2?W ...[      CXEND                        [   COORDINATION
?2R# ...[#ALT  NOISENOW=0   
?3=Q ...[#LIS  26?  
?3Q8 ...[)  
?49L ...[)  
?4P4 ...[#NOR   
?5=# ...[??? GETACT SECT CENT FGN 32 DOC
?5G6    #     THESE MACROS GET ACTIVITY BLOCKS  
?5^Q    #   
?6FB    #MAC  GETACT
?6^2    #STR  %B
?7DL          GETCORAL %BLEN+%ALEN,N,HMANDAT+HACTY+0%C:0
?7Y=    #STR  %B
?8CW    #SKI
?8XG          GETCORAL %ALEN,N,HMANDAT+HACTY+0%C:0  
?9C6          FINDCORE 1
?9WQ          NAME     1,%A,%B  
?=BB          ADN   1  ACTRING  
?=W2          ENRING   1,ACTRING+BPTR(2)
??*L          CHAIN    FPTR(2),BPTR(2)  
??GS ...#UNS  ICT   
??N2 ...      APGA  %A,%B   
??T=    #NOR
?#54 ...[??? GETACTOP SECT CENT FGN 32 DOC  
?##W    #   
?#SG    #MAC  GETACTOP  
?*#6    #STR  %C
?*RQ          GETCORAL %CLEN+%BLEN,N,HACTY+0%D:0
?B?B    #STR  %C
?BR2    #SKI
?C=L          GETCORAL %BLEN,N,HACTY+0%D:0  
?CQ=          BRN      MGET 
?D9W          BRN      %A   
?DPG    MGET  FINDCORE 1
?F96          NAME     1,%B,%C  
?FNQ          ADN   1  ACTRING  
?G8B          ENRING   1,ACTRING+BPTR(2)
?GN2          CHAIN    FPTR(2),BPTR(2)  
?GT8 ...#UNS  ICT   
?H2B ...      APGA  %B,%C   
?H7L    #NOR
?HCD ...[??? GETACTX SECT CENT FGN 32 DOC   
?HM=    #   
?J6W    #MAC  GETACTX   
?JLG          GETCORAL %B,X,HMANDAT+HACTY+0%C:0 
?K66          FINDCORE 1
?KKQ          STO   %A ATYPE(1) 
?L5B          ADN   1  ACTRING  
?LK2          ENRING   1,ACTRING+BPTR(2)
?M4L          CHAIN    FPTR(2),BPTR(2)  
?M9S ...#UNS  ICT   
?MC2 ...      APGAX  %A 
?MJ=    #NOR
?MS4 ...[??? GETACTXO SECT CENT FGN 32 DOC  
?N3W    #   
?NHG    #MAC  GETACTXOP 
?P36          GETCORAL %C,X,HACTY+0%D:0 
?PGQ          BRN      MGET 
?Q2B          BRN      %A   
?QG2    MGET  FINDCORE 1
?Q^L          STO   %B ATYPE(1) 
?RF=          ADN   1  ACTRING  
?RYW          ENRING   1,ACTRING+BPTR(2)
?SDG          CHAIN    FPTR(2),BPTR(2)  
?SKN ...#UNS  ICT   
?SQW ...      APGAX  %B 
?SY6    #NOR
?T7Y ...[??? EMSACT SECT CENT FGN 32 DOC
?TCQ    #   
?TXB    # EMSACT GETS ABLOCK OF CORE FOR AN ACTIVITY BLOCK AT EARLY MORNING STAR
?WC2    # TIME. IT IS LOCKED PERMANENTLY AT THE TOP OF CORE 
?WWL    #   
?XB=    #MAC  EMSACT
?XTW    #STR  %B
?Y*G          LDN   2  %ALEN+%BLEN  
?YT6    #STR  %B
?^#Q    #SKI
?^SB          LDN   2  %ALEN
#2#2          STO   2  GLOGLEN             [STORE LENGTH REQUIRED   
#2RL          ADN   2  A1   
#3?=          LDX   1  BFREE+1             [TOP BLOCK IN F/C CHAIN  
#3QW          LDX   0  ASIZE(1)            [LENGTH  
#4=G          SBS   2  AFREE
#4Q6          SBS   2  CFREE
#59Q          SBX   0  2
#5PB          BPZ   0  MEMSACT1 
#692    MEMSACT2
#6NL          GEOERR   1,EMSCORE
#78=    MEMSACT1
#7MW          BZE   0  MEMSACT2 
#87G          SBS   2  ASIZE(1)            [NEW SIZE
#9LB          ADX   1  0                   [ADDR BLOCK  
#=62          STO   2  ASIZE(1)            [SET SIZE
#=7Y ...#UNS ISFC   
#=9W ...(   
#=?S ...      SBX   1  0                   [RETURN TO THE FREE BLOCK
#=*Q ...      FREEOUT  1                   [DECHAIN FROM SIZE RING,AS SHORTER   
#=CN ...      FREEIN   1                   [CHAIN INTO NEW SIZE RING
#=FL ...      ADX   1  ASIZE(1)            [NOW BACK TO GOT BLOCK   
#=HJ ...)   
#=KL          LDN   0  #10                 [AND 
#?5=          STO   0  AFLAG(1)            [LOCK BIT
#?JW          LDX   2  GLOGLEN             [AND 
##4G          STO   2  ALOGLEN(1)          [LOGICAL LENGTH  
##J6    #STR  %B
#*3Q          LDN   0  %A+%B
#*HB    #STR  %B
#B32    #SKI
#BGL          LDN   0  %A   
#C2=          SLL   0  12   
#CFW          STO   0  ATYPE(1) 
#C^G          STOZ     BACK1(1) 
#DF6          STOZ     BACK2(1) 
#DYQ          LDX   2  FX2  
#FDB          STO   2  FPTR(1)             [CHAIN IN FRONT OF ACT   
#FY2          LDX   2  BPTR(2)  
#GCL          SMO      FX2  
#GX=          STO   1  BPTR 
#HBW          STO   1  FPTR(2)  
#HWG          STO   2  BPTR(1)  
#JB6          LDN   0  ACTRINGNUM   
#JTQ    MEMSACT3
#K*B          LDN   2  ARINGNO+1(1) 
#KT2          STO   2  ARINGNO+1(1) 
#L#L          STO   2  ARINGNO+2(1) 
#LS=          BDX   1  £
#M?W          BCT   0  MEMSACT3 
#MRG          LDN   2  FILERING 
#N?6          NGS   2  ARINGNO+1(1) 
#NQQ          SBN   1  ACTRINGNUM*2 
#P=B          STOZ     BACKCHAN(1)  
#PQ2          LDX   2  ACTYPE   
#Q9L          STO   2  ARINGNO(1)          [RING WORD   
#QP=          LDN   2  ACTRING(1)          [RING ONTO ACT RING  
#R8W          SMO      FX2  
#RNG          LDN   1  ACTRING  
#S86          STO   1  0(2) 
#SMQ          LDX   1  1(1) 
#T7B          SMO      FX2  
#TM2          STO   2  ACTRING+1
#W6L          STO   2  0(1) 
#WL=          STO   1  1(2) 
#X5W          LDN   0  ACC3-ACTRING(2)     [ZEROISE BLOCK   
#XKG          LDN   1  ACC4-ACTRING(2)  
#Y56          STOZ     ACC3-ACTRING(2)  
#YJQ    #STR  %B
#^4B          MOVE  0  %ALEN+%BLEN-ACC3+A1-1
#^J2    #STR  %B
*23L    #SKI
*2H=          MOVE  0  %ALEN-ACC3+A1-1  
*32W          LDX   0  ACTCOUNT 
*3GG          STO   0  ACTNUM-ACC4(1)      [SET ACT NUMBER  
*426          ADN   0  1
*4FQ          STO   0  ACTCOUNT 
*4KM ...#UNS  ICT   
*4PJ ...#SKI
*4TF ...(   
*4^B          LDX   1  FX1  
*5F2          LDX   2  FX2  
*5JX ...)   
*5NS ...#UNS  ICT   
*5SP ...      APGA  %A,%B   
*5YL    #NOR
*68D ...[??? EMSACTX SECT CENT FGN 32 DOC   
*6D=    #   
*6XW    # X VERSION OF EMSACT(SEE ABOVE 
*7CG    #   
*7X6    #MAC  EMSACTX   
*8BQ    #STR  %B,2  
*8WB          LDX   2  %B   
*9B2          STO   2  GLOGLEN             [STORE LENGTH REQUIRED   
*9TL          ADN   2  A1   
*=*=          LDX   1  BFREE+1             [TOP BLOCK IN F/C CHAIN  
*=SW          LDX   0  ASIZE(1)            [LENGTH  
*?#G          SBS   2  AFREE
*?S6          SBS   2  CFREE
*#?Q          SBX   0  2
*#RB          BPZ   0  MEMSACTX1
**?2    MEMSACTX2   
**QL          GEOERR   1,EMSCORE
*B==    MEMSACTX1   
*BPW          BZE   0  MEMSACTX2
*C9G          SBS   2  ASIZE(1)            [NEW SIZE
*DNB          ADX   1  0                   [ADDR BLOCK  
*F82          STO   2  ASIZE(1)            [SET SIZE
*F9Y ...#UNS ISFC   
*F?W ...(   
*F*S ...      SBX   1  0                   [RETURN TO FREE BLOCK
*FCQ ...      FREEOUT  1                   [DECHAIN FROM SIZE RING, AS SHORTER  
*FFN ...      FREEIN   1                   [CHAIN INTO NEW SIZE RING
*FHL ...      ADX   1  ASIZE(1) 
*FKJ ...)   
*FML          LDN   0  #10                 [AND 
*G7=          STO   0  AFLAG(1)            [LOCK BIT
*GLW          LDX   2  GLOGLEN             [AND 
*H6G          STO   2  ALOGLEN(1)          [LOGICAL LENGTH  
*HL6          STO   %A ATYPE(1) 
*J5Q          STOZ     BACK1(1) 
*JKB          STOZ     BACK2(1) 
*K52          LDX   2  FX2  
*KJL          STO   2  FPTR(1)             [CHAIN IN FRONT OF ACT   
*L4=          LDX   2  BPTR(2)  
*LHW          SMO      FX2  
*M3G          STO   1  BPTR 
*MH6          STO   1  FPTR(2)  
*N2Q          STO   2  BPTR(1)  
*NGB          LDN   0  ACTRINGNUM   
*P22    MEMSACTX3   
*PFL          LDN   2  ARINGNO+1(1) 
*P^=          STO   2  ARINGNO+1(1) 
*QDW          STO   2  ARINGNO+2(1) 
*QYG          BDX   1  £
*RD6          BCT   0  MEMSACTX3
*RXQ          LDN   2  FILERING 
*SCB          NGS   2  ARINGNO+1(1) 
*SX2          SBN   1  ACTRINGNUM*2 
*TBL          STOZ     BACKCHAN(1)  
*TW=          LDX   2  ACTYPE   
*W*W          STO   2  ARINGNO(1)          [RING WORD   
*WTG          LDN   2  ACTRING(1)          [RING ONTO ACT RING  
*X*6          SMO      FX2  
*XSQ          LDN   1  ACTRING  
*Y#B          STO   1  0(2) 
*YS2          LDX   1  1(1) 
*^?L          SMO      FX2  
*^R=          STO   2  ACTRING+1
B2=W          STO   2  0(1) 
B2QG          STO   1  1(2) 
B3=6          LDN   0  ACC3-ACTRING(2)     [ZEROISE BLOCK   
B3PQ          LDN   1  ACC4-ACTRING(2)  
B49B          STOZ     ACC3-ACTRING(2)  
B4P2          LDX   2  GLOGLEN  
B58L          SBN   2  ACC3-A1+1
B5N=          MOVE  0  0(2) 
B67W          LDX   0  ACTCOUNT 
B6MG          STO   0  ACTNUM-ACC4(1)      [SET ACT NUMBER  
B776          ADN   0  1
B7LQ          STO   0  ACTCOUNT 
B7QM ...#UNS  ICT   
B7WJ ...#SKI
B82F ...(   
B86B          LDX   1  FX1  
B8L2          LDX   2  FX2  
B8PX ...)   
B8TS ...#UNS  ICT   
B8^P ...      APGAX  %A 
B95L    #NOR
B9*D ...[??? RINGPURG SECT CENT FGN 32 DOC  
B9K=    # CLEAR OUT REDUNDANT RINGS BY CLEARING LOWER FIELD OF ARINGNO  
B=4W    #MAC RINGPURG   
B=JG          LDN   0  0
B?46     MOD  DLA   0  ARINGNO,%A   
B?HQ    #NOR
B?RJ ...[??? SUBRELT SECT CENT FGN 32 DOC   
B#3B    #   
B#H2    # DELETE A RING FROM THE BLOCK,FIRST DERINGING IT,IT THEN MOVES UP ANY  
B*2L    # SUBSEQUENT RING ELEMENTS UPDATING THEIR POINTERS. THE BLOCK IS SHORTEN
B*G=    #   
B*^W    #MAC  SUBRELT   
BBFG    #STR  %A,2  
BB^6          LDX   2  %A                  [ADDRESS OF RING ELEMENT 
BCDQ          STO   2  GEN0 
BCYB          LDX   0  BPTR(2)  
BDD2          SMO      FPTR(2)  
BDXL          STO   0  BPTR 
BFC=          LDX   0  FPTR(2)  
BFWW          SMO      BPTR(2)  
BGBG          STO   0  FPTR 
BGW6          SMO      BSTART(2)
BH*Q          LDN   2  FPTR(2)             [ADDRESS OF BLOCK
BHTB          LDX   0  ARINGNO(2)   
BJ*2          SRL   01 15                  [X0=LENGTH OF RING ELEMENTS  
BJSL    #STR  1,%B  
BK#=    (   
BKRW          STO   2  GEN1 
BL?G          STO   3  GEN2 
BLR6          STO   7  GEN3 
BM=Q          SRL   1  9                   [X1=TOTAL NO OF RINGS
BMQB          LDX   3  GEN0 
BN=2          SBN   3  A1(2)
BNPL          DVS   2  0                   [X3=NO OF RING ELS UP TO CONDEMNED ON
BP9=          SBN   1  1(3)                [X1=NO OF RINGS TO BE MOVED  
BPNW          LDX   3  0                   [X3=LENGTH OF RING ELEMENTS  
BQ8G          LDX   0  1                   [X0=NO OF RINGS TO BE MOVED  
BQN6          BZE   0  MS1                 [J IF NO RING ELEMENTS TO MOVE   
BR7Q          LDX   2  GEN0                [MOVE DESTINATION ADDR   
BRMB          LDX   1  2
BS72          ADX   1  3                   [MOVE SOURCE ADDR
BSLL    MS3   LDX   7  BPTR(1)  
BT6=          BZE   7  MS2                 [J IF ELEMENT IS NULL
BTKW          SMO      FPTR(1)             [ ELSE UPDATE RING   
BW5G          SBS   3  BPTR 
BWK6          SMO      7
BX4Q          SBS   3  FPTR 
BXJB    MS2   ADS   3  BSTART(1)
BY42          MOVE  1  0(3)                [MOVE DOWN ELEMENT   
BYHL          ADX   1  3
B^3=          ADX   2  3
B^GW          BCT   0  MS3  
C22G    MS1   LDX   0  3                   [X0=LENGTH OF RING ELEMENT   
C2G6          LDX   2  GEN1 
C2^Q          LDX   3 GEN2  
C3FB          LDX   7  GEN3 
C3^2    )   
C4DL          LDN   1  1
C4Y=          SBS   1  ARINGNO(2)          [UPDATE ARINGNO  
C5CW          LDX   1  ALOGLEN(2)   
C5XG          SBX   1  0                   [NEW LOGICAL LENGTH  
C6C6          SHORTEN  2,0(1)   
C6WQ          LDX   1  FX1  
C7BB          LDX   2  FX2  
C7W2    #NOR
C85S ...[??? ALTLENR SECT CENT FGN 32 DOC   
C8*L    #   
C8T=    # MAKES ROOM FOR AN ADDITIONAL RING ELEMENT 
C9#W    #MAC  ALTLENR   
C9SG          MOD   LDX %B ARINGNO,%A      [CALCULATE AMT TO NEEDED 
C=#6          SRL   %B 15   
C=RQ          MOD   ADX %B ALOGLEN,%A   
C??B          ALTLEN   %A,%B,%C,%D         [ALTLEN  
C?R2    #NOR
C#2S ...[??? ADDRELT SECT CENT FGN 32 DOC   
C#=L    #   
C#Q=    # THIS INITIALISES THE NEW ELEMENT, SPACE HAVING BEEN PROVIDED BY ALTLEN
C*9W    # ARINGNO IS UPDATED AND THE ELEMENT ENRINGED AS SPECIFIED  
C*PG    #   
CB96    #MAC  ADDRELT   
CBNQ    #STR  %A,1  
CC8B          LDX   1  %A                  [BLOCK ADDR  
CCN2          STO   1  GEN0 
CD7L    #STR  2,%B  
CDM=    (   
CF6W    #STR  NULL,%B   
CFLG          LDX   2  %B   
CG66    )   
CGKQ          LDN   0  1
CH5B          ADS   0  ARINGNO(1)          [INDICATE EXTRA ELEMENT  
CHK2          LDX   0  ARINGNO(1)   
CJ4L          SRL   0  15   
CJJ=          SMO      ALOGLEN(1)   
CK3W          ADN   1  A1   
CKHG          SBX   1  0                   [X1 NOW = NEW ELEMENT
CL36    #STR  NULL,%B   
CLGQ    (   
CM2B          LDX   0  FPTR(2)             [ENRING  
CMG2          STO   0  FPTR(1)  
CM^L          STO   2  BPTR(1)  
CNF=          STO   1  FPTR(2)  
CNYW          SMO      0
CPDG          STO   1  BPTR 
CPY6    )   
CQCQ    #STR  NULL,%B   
CQXB    #SKI
CRC2          STOZ     BPTR(1)             [SET ELEMENT NULL
CRWL          LDX   2  1
CSB=          SBX   1  GEN0 
CSTW          NGS   1  BSTART(2)
CT*G          LDX   1  FX1  
CTT6          LDX   2  FX2  
CW#Q    #NOR
CWJJ ...[??? RERING SECT CENT FGN 32 DOC
CWSB    #   
CX#2    #     RERINGS AN ELEMENT
CXRL    #   
CY?=    #MAC  RERING
CYQW          CHAIN    %A,%B               [DEFINED AS CHAIN
C^=G    #NOR
C^G# ...[??? ENRING SECT CENT FGN 32 DOC
C^Q6    #   
D29Q    #     ENRINGS AN ELEMENT ON TO AN EXISTING RING(WHICH MAY BE EMPTY) AT  
D2PB    #     A SPECIFID POINT  
D392    #MAC  ENRING
D3NL    #STR  %A,1  
D48=          LDX   1  %A   
D4MW    #STR  %B,2  
D57G          LDX   2  %B   
D5M6          CALL  0  (ENRING) 
D66Q    #NOR
D6BJ ...[??? DERING SECT CENT FGN 32 DOC
D6LB    #   
D762    #     DERINGS A SPECIFIED ELEMENT RENDERING IT NULL 
D7KL    #   
D85=    #MAC  DERING
D8JW    #STR  %A,1  
D94G          LDX   1  %A   
D9J6          CALL  0  (GDERING)
D=3Q    #NOR
D=?J ...[??? SETNCORE SECT CENT FGN 32 DOC  
D=HB    #   
D?32    # A UTILITY MACRO WHICH GETS A BLOCK OF CORE LOCATES IT AND NAMES IT
D?GL    #   
D#2=    #MAC  SETNCORE  
D#FW          GETCOREN %A,1,%E,%F,%G
D#^G          FINDCORE %B   
D*F6          NAME     %B,%C,%D 
D*YQ    #NOR
DB8J ...[??? SETUPCOR SECT CENT FGN 32 DOC  
DBDB    #   
DBY2    # X VERSION OF SETNCORE(%A X PARAMETER BUT %F N IN BOTH CASES   
DCCL    #   
DCX=    #MAC  SETUPCORE 
DDBW          GETCORE  %A,1,%E,%F,%G
DDWG          FINDCORE %B   
DFB6          NAME     %B,%C,%D 
DFTQ    #NOR
DG5J ...[??? SETXCORE SECT CENT FGN 32 DOC  
DG*B    #   
DGT2    # VERSION OF SETNCORE WITH BOTH %A AND %F X PARAMETERS  
DH#L    #   
DHS=    #MAC  SETXCORE  
DJ?W          GETCOREX %A,1,%E,%F,%G
DJRG          FINDCORE %B   
DK?6          NAME     %B,%C,%D 
DKQQ    #NOR
DL2J ...[??? ENRINGD SECT CENT FGN 32 DOC   
DL=B    #   
DLQ2    #MAC  ENRINGD   
DM9L          LDN   1  %A   
DMP=          LDN   2  %B   
DN8W          CALL  0  (ENRING) 
DNNG    #NOR
DNY# ...[??? DERINGD SECT CENT FGN 32 DOC   
DP86    #   
DPMQ    #MAC  DERINGD   
DQ7B          LDN   1  %A   
DQM2          CALL  0  (GDERING)
DR6L    #NOR
DRBD ...[??? EMPTY SECT CENT FGN 32 DOC 
DRL=    #   
DS5W    #     THIS MACRO MAKES AN ELEMENT EMPTY 
DSKG    #   
DT56    #MAC  EMPTY 
DTJQ          LDN   0  %A   
DW4B          STO   0  FPTR+%A  
DWJ2          STO   0  BPTR+%A  
DX3L    #NOR
DX?D ...[??? RINGTWO SECT CENT FGN 32 DOC   
DXH=    #   
DY2W    # THIS MACRO RINGS TOGETHER TWO NULL ELEMENTS   
DYGG    #   
D^26    #MAC  RINGTWO   
D^FQ          LDN   0  %A   
D^^B          STO   0  FPTR+%B  
F2F2          STO   0  BPTR+%B  
F2YL          LDN   0  %B   
F3D=          STO   0  FPTR+%A  
F3XW          STO   0  BPTR+%A  
F4CG    #NOR
F4CT ...[??? RING2CHK TO REPLACE RINGTWO
F4D8 ...#MAC RING2CHK   
F4DH ...   LDN  0  %A   
F4DW ...   BXE  0  BPTR+%A,M1RING2CHK   
F4F9 ...   LDX  0  BPTR+%A  
F4FJ ...   BNZ  0  M3RING2CHK   
F4FX ...M1RING2CHK  
F4G= ...   LDN  0  %B   
F4GK ...   BXE  0  BPTR+%B,M2RING2CHK   
F4GY ...   LDX  0  BPTR+%B  
F4H? ...   BZE  0  M2RING2CHK   
F4HL ...M3RING2CHK  
F4H^ ...   GEOERR  1,RINGED!!   
F4J# ...M2RING2CHK  
F4JM ...   LDN  0  %A   
F4K2 ...   STO  0  FPTR+%B  
F4K* ...   STO  0  BPTR+%B  
F4KN ...   LDN  0  %B   
F4L3 ...   STO  0  FPTR+%A  
F4LB ...   STO  0  BPTR+%A  
F4LP ...#NOR
F4M# ...[??? RINGACT SECT CENT FGN 32 DOC   
F4X6    #   
F5BQ    # THIS MACRO CHAINS THE ACTIVITY BLOCK SPECIFIED IN %A IN FRONT 
F5WB    # OF THE ACTIVITY BLOCK SPECIFIED IN %B. THE ACTIVITY RING IS UPDATED   
F6B2    #   
F6TL    #MAC  RINGACT   
F7*=          STO   %A GEN5 
F7SW          STO   %B GEN6 
F8#G          MOD   LDN 1 ACTRING,%A
F8S6          MOD   LDX 2 ACTRING+1,%B  
F9?Q          RERING   1,2  
F9RB          SMO      GEN6 
F=?2          LDX   2  BPTR 
F=QL          CHAIN    GEN5,2   
F?==    #NOR
F?G4 ...[??? REDUCELL SECT CENT FGN 32 DOC  
F?PW    #   
F#9G    # THIS MACRO PERIODICALLY MONITORS THE DENSITY OF LONGLOCK BLOCKS IN THE
F#P6    # LONGLOCK AREA, AND TAKES STEPS TO INCREASE IT IF IT FALLS TOO LOW.
F*8Q    #     PRIVATE TO CHARGESC CHAPTER   
F*NB    #   
FB82    #MAC  REDUCELL                     [ REDUCELL   
FBML          SBS   %A BLLCLOCK 
FC7=          LDX   0  BLLCLOCK 
FCLW          BPZ   0  MRED1
FD6G          LDX   0  GLLSEMA             [ DO NOT SHIFT CTOP DURING   
FDL6          BNZ   0  MRED1               [   A LONGLOCK GETCORE   
FF5Q          LDN   0  BLLINT   
FFKB          STO   0  BLLCLOCK            [ RESTORE COUNT  
FG52          LDX   0  GFIXCHAP            [ 'THRESHOLD' TEST   
FGJL          SBN   0  17                  [ INCLUDES EMS CASE WHERE
FH4=          TXL   0  CTOP                [   GFIXCHAP=-2  
FHHW          BCS      MRED1               [   CTOP    =-1  
FJ3G          ACROSS  COREALLG,1          [ TO RETURN, MUST HAVE A SEGENTRY CALL
FJH6    MRED1                              [   SEGENTRY K13CHARGESC,MRED1   
FK2Q    #NOR
FK=J ...[??? COREQUST SECT CENT FGN 32 DOC  
FKGB    #   
FL22    # RE-ENTRY TO FIXED-CORE CORE ALLOCATION ROUTINES.  
FLFL    #     PRIVATE TO CORE ALLOCATION CHAPTERS.  
FL^=    #   
FMDW    #MAC  COREQUST  
FMYG          BRN      (COREQUST%A) 
FND6    #NOR
FNMY ...[??? STRATEGY SECT CENT FGN 32 DOC  
FPX2    [ THIS MACRO GETS A PROGRAM PLACEMENT STRATEGY  
FQBL    #MAC  STRATEGY  
FQHS ...#SKI  G3
FQP2 ...(   
FQW=          LDX   2  FX2  
FQYT ...#UNS  ISTDP 
FR3D ...(   
FR63 ...      LDX   0  COBJUNUSE           [STORE TOTAL FREE PROGRAM CORE FOR   
FR8L ...      STO   0  ACOMMUNE9(2)        [ CORESHED TO STORE FOR UNJAMMER 
FR?9 ...)   
FR*W          LDX   0  %A   
FRN= ...      STO   0  ACOMMUNE4(2) 
FS*6          LDX   0  %B   
FT76 ...      STO   0  ACOMMUNE3(2) 
FT=Q ...#UNS CA1D   
FTBB ...      ADX   0  CA1D 
FTG2 ...#UNS CA1D   
FTKL ...#SKI
FTP* ...      ADN   0  A1D  
FTS2          ANDX  0  BITS22LS 
FW?L          SBX   0  CFREE
FWR=          SBX   0  ACHAP
FX=W          ADX   0  CHAPQUOTA
FXQG          SBX   0  FREZFREE            [ ADD AMOUNT THAT MAY BE NEEDED TO   
FY=6          SBX   0  FREZCHAP            [   RECEIVE SWAPPED-OUT BLOCKS FROM  
FYPQ          ADX   0  FREZTOT             [   THE AREAS ALREADY FROZEN 
FYWY ...#UNS  ISTDP 
F^46 ...      SBX   0  COBJUNUSE           [CAN USE FREE PROGRAM BLOCKS AS WELL 
F^9B          SMO   FX2 
F^P2          STO   0  ACOMMUNE1
G28L          BPZ   0  MSTR2               [J IF NOT ENOUGH SPARE CORE  
G2N= ...MSTR1 DOWN     STRATEGY,1   
G37W          BRN      MSTR4               [SUCCESS 
G3MG          BRN      %E                  [CORE FRAGMENTED BY REALTIME PROG(S) 
G476          BRN      %C                  [ NOT ENOUGH CORE BUT TRY SWAP OUT   
G4LQ    MSTR2 LDX   1  FX1  
G56B          LDX   2  FX2  
G5L2          SBX   0  COBJUSE  
G65L          ADX   0  COBJUSRT            [IF NOT ENOUGH CORE EVEN IF ALL NON- 
G6=# ...      BPZ   0  MSTR3               [ REALTIME PROGX SWAPPED,TAKE %D EXIT
G6C2 ...[     IF REALTIME PROG.,THEN AS THERE ARE PROGRAMS TO SWAP OUT WE STILL 
G6HN ...[     GO DOWN TO STRATEGY FOR IT TO DECIDE WHICH PROG. TO SWAP OUT  
G6NB ...      LDXC  0  ACOMMUNE3(2) 
G6T4 ...      BCS      MSTR1
G6^Q ...      BRN      %C   
G76D ...MSTR3 LDN   0  0
G7?6 ...      ADSC  0  ACOMMUNE3(2) 
G7CS ...      BRN      %D   
G7JG    MSTR4   
G8HQ ...)   
GBC=    #SKIP          G4   
GBWW    (   
GYKT ...#ACC           %A   
GYL8 ...      ACCSTO   %A,ACOMMUNE2,FX2       [JOBNO.   
GYLH ...#ACC           %B   
GYLW ...      ACCSTO   %B,ACOMMUNE3,FX2       [CORE REQUIRED B2-23: B0= REALTIME
GYM9 ...#ACC           %A   
GYMJ ...#SKI
GYMX ...(   
GYN= ...      LDX   0  %A   
GYNK ...      ACCSTO   0,ACOMMUNE2,FX2     [JOBNO.  
GYNY ...)   
GYP? ...#ACC           %B   
GYPL ...#SKI
GYP^ ...(   
GYQ# ...      LDX   0  %B   
GYQM ...      ACCSTO   0,ACOMMUNE3,FX2     [SIZE!!  
GYR2 ...)   
GYR* ...      DOWN     SWAPIN,1            [GO TO IT!   
GYRN ...[   
GYS3 ...      BRN      MSTRTED             [SUCCESS 
GYSB ...      BRN      %C                  [NO STRATEGY WITHOUT SWAPOUT 
GYT4 ...      BRN      %D                  [NO STRATEGY EVEN IF ALL NON R/T S/O 
GYTC ...MSTRTED 
GYTJ ...)   
GYTQ ...#NOR
GYTT ...[??? STARTSTR SECT CENT FGN 32 DOC  
GYTW ...#SKI  G3
GYTX ...(   
GYTY ...#   
GYT^ ...[ THIS MACRO IMPLEMENTS A STRATEGY GIVEN BY'STRATEGY' MACRO 
GYW2 ...#MAC  STARTSTRAT
GYW3 ...#   
GYW4 ...      DOWN     COREALLF,2   
GYW5 ...      BRN      MSTA1
GYW6 ...      BRN      %A                  [NO CORE 
GYW7 ...      BRN      %B                  [OBDURATE LOCKED BLOCK   
GYW8 ...      BRN      %C                  [ABORT   
GYW9 ...MSTA1   
GYW= ...#NOR
GYW? ...)   
GYW# ...#SKIP          G4   
GYW* ...(   
GYWS ...#MAC           STARTSTRAT   
GYWT ...      LDX   1  FX1  
GYWW ...      LDX   2  FX2                 [RESET  X1/X2
GYWX ...[   
GYWY ...      BBS      21,ACOMMUNE2(2),%B     [STRATEGY FUSTRASTED - LOCKED BLK 
GYW^ ...      BBS      22,ACOMMUNE2(2),%C     [STRATEGY ABORTED 
GYX2 ...      BBS      23,ACOMMUNE2(2),%A     [STRATEGY IMPSSIBLE - INSUFFIENT  
GYX3 ...#NOR                                                            [  CORE 
GYX4 ...)   
GYX6 ...[??? COREFREE SECT CENT FGN 32 DOC  
HG5B ...[     THE NEXT TWO MACROS ARE PRIVATE TO THE CORE ALLOCATION SYSTEM &   
HG5Q ...[     MAY ONLY BE CALLED IN COREALLF SEGMENT
HG66 ...[   
HG6G ...#MAC  COREFREEZE
HG6W ...#STR  6,%A  
HG7= ...      LDX   6  %A                  [START OF FREEZE 
HG7L ...#STR  7,%B  
HG82 ...      LDX   7  %B                  [LENGTH OF FREEZE
HG8B ...      CALL  0  RCORFREZ 
HG8Q ...      BRN      %C                  [FAILURE EXIT
HG96 ...#STR  %D
HG9G ...      LDN   0  %D                  [ABORT S/R NO.   
HG9W ...#STR  %D
HG== ...#SKI
HG=L ...      LDN   0  0
HG?2 ...               +%E                 [ACTION ON LL BLOCKS 
HG?B ...               +%F                 [TIME OUT INTERVAL   
HG?Q ...#NOR
HG#C ...[??? COREFREX SECT CENT FGN 32 DOC  
HG#G ...[   
HG#H ...#MAC  COREFREX  
HG#W ...#STR  6,%A  
HG*= ...      LDX   6  %A                  [START OF FREEZE 
HG*L ...#STR  7,%B  
HGB2 ...      LDX   7  %B                  [LENGTH OF FREEZE
HGBB ...      CALL  0  RCORFREZ 
HGBQ ...      BRN      %C                  [FAILURE EXIT
HGC6 ...#STR  %D
HGCG ...      LDX   0  %D                  [LOAD ABORT S/R NO FROM %D   
HGCW ...#STR  %D
HGD= ...#SKI
HGDL ...      LDN   0  0
HGF2 ...               +%E                 [ACTION ON LL BLOCKS 
HGFB ...               +%F                 [TIME OUT INTERVAL   
HGFQ ...#NOR
HGGW ...[??? EXTRACOR SECT CENT FGN 32 DOC  
HGHG    #SKI  G3
HH36    (   
HHGQ    #   
HJ2B    #MAC  EXTRACOR     [EXTENDS AN O/P WITHOUT SWAPOUT  
HJG2                       [%A=ADDR OF WORD CONTG NEW REQU;J TO %B IF SUCCESSFUL
HJ^L          LDX   2  FX2  
HKF=          BRN      MEXT2
HKYW    MEXT1 SMO      JOBRING+FPTR(2)     [S/R TO J TO MEXT3 IF O/P NOT SWPD IN
HLDG          LDX   0  JMISC-AJBRING
HLY6          SLL   0  9                   [B9 OR B10 OF JMISC SET IF O/P IN COR
HMCQ          SLA   0  1                   [V CLEAR => EITHER BOTH 1(IMPOSSIBLE)
HMXB          BVC      MEXT3               [OR BOTH 0 => O/P NOT SWAPPED IN 
HNC2          EXIT  1  0
HNWL    MEXT2 CALL  1  MEXT1
HPB=          LDX   0  %A   
HPTW          STO   0  ACOMMUNE1(2) 
HQ*G          DOWN     COREALLF,3          [TRY TO EXTEND PROGRAM BLOCK 
HQT6          CALL  1  MEXT1
HR#Q          BRN      %B                  [SUCCESS EXIT
HRSB    MEXT3 SLL   0  1
HS#2          BNG   0  MEXT4               [J IF PROGRAM ALREADY SWAPPED OUT
HSRL          SWAPOUT                      [COME UP TO HERE FROM COREALLF FAIL  
HT?=    MEXT4 LDX   1  FX1  
HTQW    #NOR
HTY4 ...)   
HW5= ...[??? GETPROGC SECT CENT FGN 32 DOC  
HW=G    #   
HW=N ...#SKI  G4
HW=Q ...(   
HW=S ...#MAC  GETPROGCORE   
HW=W ...[   
HW=Y ...[     MACRO TO OBTAIN ONE OR MORE PAGES OF CORE TO HOLD AN OBJECT   
HW?2 ...[     PROGRAM OR ITS PAGE TABLES.   
HW?4 ...[   
HW?6 ...      ACCSTO %A,ACOMMUNE1,FX2      [STORE SIZE OF REQUEST IN ACOMMUNE1  
HW?8 ...      LDX   2  FX2  
HW?= ...[     ENOUGH PAGES AVAILABLE
HW?# ...[     I.E. REQUEST <OR= COBJFREE+CPAGETURNS-APTURNPAGS  
HW?B ...      LDX   0  COBJFREE 
HW?D ...      ADX   0  CPAGETURNS   
HW?G ...      SBX   0  APTURNPAGS   
HW?H ...#UNS  ISTDP 
HW?J ...(   
HW?K ...      SLA   0  10   
HW?L ...      STO   0  ACOMMUNE9(2)        [STORE TOTAL FREE FOR CORESHED   
HW?M ...      SRA   0  10   
HW?N ...)   
HW?P ...      SBX   0  ACOMMUNE1(2) 
HW?Q ...      BNG   0  MNOPAGS             [J IF SUFFICIENT PAGES NOT AVAILABLE 
HW?R ...      CALL  0  (GETPRING)   
HW?S ...      BRN      MEND                [J AS PAGES OBTAINED 
HW?T ...      BRN      MFREZ               [J IF SUFF. PAGES NOT IMM. AVAIL.
HW?W ...[     SUFFICIENT CORE AVAILABLE I.E.
HW?Y ...[     REQUEST <OR= COBJFREE+CPAGETURNS-APTURNPAGS      :- IN 1K UNITS   
HW#2 ...[                  +CFREE+(ACHAP-CHAPTERQUOTA)         :- NO. OF WORDS  
HW#4 ...[                  -(FREZTOT-FREZFREE-FREZCHAP) 
HW#6 ...[                  +CPROGFREZ   
HW#8 ...MNOPAGS 
HW#= ...      STOZ     ACOMMUNE2(2) 
HW## ...      SLA   0  10                  [CONVERT TO WORDS
HW#B ...      ADX   0  CFREE
HW#D ...      ADX   0  ACHAP
HW#G ...      SBX   0  CHAPQUOTA
HW#J ...      SBX   0  FREZTOT  
HW#L ...      ADX   0  FREZFREE 
HW#N ...      ADX   0  FREZCHAP 
HW#Q ...      ADX   0  CPROGFREZ
HW#S ...      BNG   0  MOPT                [NOT AVAILABLE   
HW#W ...      BSON BPROGFREZ,MFREZ         [J IF PROGRAM FREEZE ALREADY ACTIVE  
HW#Y ...      ON BPROGFREZ                 [INDICATE PROGRAM FREEZE ACTIVE  
HW*2 ...      LDN   0  1
HW*4 ...      ADS   0  CFPCFREZ            [INCREASE FREE PAGE CHAIN FROZEN IND.
HW*6 ...#STR  %B
HW*8 ...      LDN   0  %B   
HW*= ...#STR  %B
HW*# ...#SKI
HW*B ...      LDN   0  0
HW*D ...      STO   0  ACOMMUNE2(2)        [STORE ABORT SUBROUTINE NO.  
HW*G ...      DOWN COREALLF,5              [ENTER TO OBTAIN PAGES BY A FREEZE   
HW*J ...      OFF BPROGFREZ                [UNSET PROGRAM FREEZE INDICATOR  
HW*L ...      LDN   0  1
HW*N ...      SBS   0  CFPCFREZ            [REDUCE FREE PAGE CHAIN IND. 
HW*Q ...      NGX   0  COBJWAIT 
HW*S ...      BPZ   0  MWCOR               [J IF NO ACTS. WAITING FOR PROG. CORE
HW*W ...      FON #105                     [WAKE ACTS. WAITING FOR PROG. CORE   
HW*Y ...      STOZ     COBJWAIT 
HWB2 ...MWCOR   
HWB4 ...      CALL  0  (COREKICK)          [WAKE ACTS WAITING FOR CORE IF POSS. 
HWB6 ...#SKI  K6COREALLF>299-299
HWB8 ...(   
HWB= ...      TRACE    ACOMMUNE1(2),FREZAC1 
HWB# ...      TRACE    ACOMMUNE2(2),FREZAC2 
HWBB ...)   
HWBD ...      LDX   0  ACOMMUNE2(2) 
HWBG ...      SLL   0  12   
HWBJ ...      BZE   0  %E                  [J TO %E IF FREEZE SUCCESSFUL
HWBL ...      SLL   0  11   
HWBN ...      BPZ   0  %F                  [J TO %F IF SHORTFALL NOT REPORTED   
HWBQ ...#STR  %D
HWBS ...      BRN      %F                  [J IF OPTIONAL REQUEST   
HWBW ...#STR  %D
HWBY ...#SKI
HWC2 ...(   
HWC4 ...      LDCT  0  #400 
HWC6 ...      ORS   0  ACOMMUNE1(2)        [SET B0 TO INDICATE WE'VE COME FROM  
HWC8 ...      BRN      MFREZ1              [COREFREEZE CODE 
HWC= ...)   
HWC# ...MOPT  NGS   0  ACOMMUNE1(2)        [STORE SHORTFALL 
HWCB ...#SKI  K6COREALLF>499-499
HWCD ...      TRACE    ACOMMUNE1(2),MOPTAC1 
HWCG ...#STR  %D
HWCJ ...(   
HWCL ...      LDX   1  FX1  
HWCN ...      BRN      %D                  [J TO %D IF OPTIONAL REQUEST 
HWCQ ...)   
HWCS ...MFREZ1  
HWCW ...      LDCT  0  #020 
HWCY ...      ORS   0  CLONG1(2)           [SET B4 TO INDICATE FAILED REQUEST   
HWD2 ...      LDN   0  1
HWD4 ...      ADS   0  COBJFAIL 
HWD6 ...      LDX   0  %A                  [LOAD NO. OF PAGES REQUESTED AND ADD 
HWD8 ...      ADS   0  AOBJFAIL            [TO SUM OF FAILED PROGRAM REQUESTS   
HWD= ...      SLL   0  12   
HWD# ...      ORS   0  ACOMMUNE2(2)        [NOW STORE REQUEST IN B0-11  
HWDB ...MFREZ   
HWDD ...      LDN   0  1                   [INCREASE NO. OF 
HWDG ...      ADS   0  COBJWAIT            [OUTSTANDING PROGRAM CORE REQUESTS   
HWDJ ...      ADS   0  CFPCFREZ            [AND FREE PAGE CHAIN FROZEN IND. 
HWDL ...      COOR3 #105                   [WAIT FOR PAGES  
HWDN ...      LDN   0  1
HWDQ ...      SBS   0  CFPCFREZ            [REDUCE IND. 
HWDS ...      CALL  0  (COREKICK)          [WAKE ACTS WAITING FOR CORE IF POSS. 
HWDW ...#SKI  K6COREALLF>499-499
HWDY ...      TRACE    CLONG1(2),MFREZCL1   
HWF2 ...      LDX   0  CLONG1(2)
HWF4 ...      SLL   0  4
HWF6 ...      BPZ   0  %C                  [J TO %C IF NOT FAILED REQUEST   
HWF8 ...      LDCT  0  #020 
HWF= ...      ERS   0  CLONG1(2)           [UNSET B4
HWF# ...      LDX   0  ACOMMUNE2(2)        [LOAD REQUEST
HWFB ...      SRL   0  12   
HWFD ...      SBS   0  AOBJFAIL 
HWFG ...      LDN   0  #7777
HWFJ ...      ANDS  0  ACOMMUNE2(2)        [ZEROISE B0-11   
HWFL ...      LDN   0  1
HWFN ...      SBS   0  COBJFAIL 
HWFQ ...      LDX   0  ACOMMUNE1(2) 
HWFS ...#SKI  K6COREALLF>499-499
HWFW ...(   
HWFY ...      TRACE    ACOMMUNE1(2),MFREZAC1
HWG2 ...      TRACE    ACOMMUNE2(2),MFREZAC2
HWG4 ...)   
HWG6 ...      BPZ   0  %C                  [J TO %C IF NOT FROM COREFREEZE  
HWG8 ...      LDCT  0  #400 
HWG= ...      ERS   0  ACOMMUNE1(2)        [UNSET B0
HWG# ...      BRN      %F   
HWGB ...MEND
HWGD ...#NOR
HWGG ...)   
HWGH ...[??? COBJUSE SECT CENT FGN 32 DOC   
HWGL ...#MAC  COBJUSE   
HWGM ...[   
HWGN ...[     MACRO TO CALCULATE CORE IN USE FOR PROGRAMS.  
HWGQ ...[     %A - ACCUMULATOR IN WHICH TO STORE RESULT.
HWGS ...[        - IF ABSENT X0 IS USED 
HWGW ...[   
HWGY ...#STR  %A
HWH2 ...#SKI
HWH4 ...      COBJUSE 0                    [USE X0  
HWH6 ...#STR  %A
HWH8 ...(   
HWH= ...#SKI  G3
HWH# ...      LDX   %A COBJUSE  
HWHB ...#SKI  G4
HWHD ...(   
HWHG ...      LDX   %A AOBJFREE 
HWHH ...#UNS  ISTDP 
HWHJ ...      BZE   %A MCOBJ
HWHK ...      SBX   %A COBJFREE 
HWHL ...      SBX   %A CPAGETURNS   
HWHN ...      ADX   %A APTURNPAGS   
HWHQ ...      SLL   %A 10                  [CONVERT TO WORDS(I.E. * BY 1024)
HWHR ...MCOBJ   
HWHS ...)   
HWHW ...)   
HWHY ...#NOR
HWJ2 ...[??? COBJUSRT SECT CENT FGN 32 DOC  
HWJ5 ...#MAC  COBJUSRT  
HWJ6 ...[   
HWJ8 ...[     MACRO TO CALCULATE CORE IN USE FOR REALTIME PROGRAMS. 
HWJ= ...[     %A - ACCUMULATOR IN WHICH TO STORE RESULT.
HWJ# ...[        - IF ABSENT X0 IS USED 
HWJB ...[   
HWJD ...#STR  %A
HWJG ...#SKI
HWJJ ...      COBJUSRT 0                   [USE X0  
HWJL ...#STR  %A
HWJN ...(   
HWJQ ...#SKI  G3
HWJS ...      LDX   %A COBJUSRT 
HWJW ...#SKI  G4
HWJY ...(   
HWK2 ...      LDX   %A CRTPAGES 
HWK4 ...      ADX   %A CPAGTAB  
HWK6 ...      ADX   %A APTURNPAGS   
HWK8 ...      SLL   %A 10                  [CONVERT TO WORDS(I.E. * BY 1024)
HWK= ...)   
HWK# ...)   
HWKB ...#NOR
HX52 ...[??? COBJUNUS SECT CENT FGN 32 DOC  
HXJL ...#UNS  ISTDP 
HY4= ...(   
HYHW ...#MAC  COBJUNUSE 
H^3G ...[   
H^H6 ...[     MACRO TO CALCULATE TOTAL FREE PROGRAM CORE/PAGES  
J22Q ...[     %A - ACCUMULATOR IN WHICH TO STORE RESULT 
J2GB ...[        - IF ABSENT X0 IS USED 
J322 ...#STR  %A
J3FL ...#SKI
J3^= ...      COBJUNUSE 0                  [USE X0  
J4DW ...#STR  %A
J4YG ...(   
J5D6 ...#SKI  G3
J5XQ ...      LDX   %A  COBJUNUSE   
J6CB ...#SKI  G4
J6X2 ...(   
J7BL ...      LDX   %A COBJFREE 
J7W= ...      ADX   %A CPAGETURNS   
J8*W ...      SBX   %A APTURNPAGS   
J8TG ...      BPZ   %A MCOB 
J9*6 ...      LDN   %A 0
J9SQ ...MCOB
J=#B ...      SLL   %A 10                  [CONVERT TO WORDS(I.E. * BY 1024)
J=S2 ...)   
J??L ...)   
J?R= ...#NOR
J#=W ...)   
J#QG ...[??? FREEPROG SECT CENT FGN 33 DOC  
J*=6 ...#SKI  G3
J*PQ ...(   
JB9B ...#UNS  ISTDP 
JBP2 ...(   
JC8L ...#MAC  FREEPROG  
JCJ* ...[   
JCY4 ...[     MACRO TO RELEASE A PROGRAM BLOCK AND PUT IT ON THE FREE PROGRAM   
JD?R ...[     BLOCK CHAIN   
JDMG ...[     %A - PTR.TO OBJECT PROGRAM BLOCK  
JF39 ...[     %B - PTR.TO JOB BLOCK FOR PROGRAM 
JFBY ...#STR  %A,1  
JFQM ...      LDX   1  %A                  [PTR TO PROGRAM BLOCK
JG6B ...#STR  %B,2  
JGG5 ...      LDX   2  %B                  [PTR TO PROGRAMS JOB BLOCK   
JGTS ...      LDX   0  ALOGL(1) 
JH9H ...      SBS   0  COBJUSE  
JHK= ...      ADS   0  COBJUNUSE
JHY^ ...#UNS  FSHTEST   
JJ#N ...#SKI
JJNC ...(   
JK46 ...      BS    2,JBWASIN   
JKCT ...      LDX   0  JOBNM(2) 
JKRJ ...      STO   0  JOBNOWAS(1)         [STO JOB NO. IN FPB  
JL7? ...)   
JLH2 ...#UNS  FSHTEST   
JLWP ...(   
JM=D ...      ADS   0  CINVFPB  
JML7 ...      STOZ     JOBNOWAS(1)  
JM^W ...)   
JN*K ...      BS    1,AFFPB                [SET FPB MARKER IN AFLAG 
JNP# ...      LDN   2  BOBJUNUSE           [BASE OF FPB CHAIN   
JP53 ...MNEXT LDX   0  2
JPDQ ...      LDX   2  FPTR(2)             [LOAD FIRST/NEXT BLOCK ON CHAIN  
JPSF ...      BXE   2  CXOBJUN,MCHAIN      [J IF END OF CHAIN   
JQ88 ...      BXL   2  1,MNEXT  
JQHX ...[     CHAIN IN ADDR. ORDER ON FPB CHAIN 
JQXL ...MCHAIN  
JR?* ...      LDX   2  0
JRM4 ...      CHAIN 1,2 
JS2R ...      COREWAKE                     [WAKE ANY WAITERS FOR CORE   
JSBG ...#NOR
JSW6 ...)   
JT*Q ...)   
JTTB ...[??? TRYCORE SECT CENT FGN 32 DOC   
JW*2 ...#SKI  G3
JWSL ...(   
JX#= ...#UNS  ISTDP 
JXRW ...(   
JY?G ...#MAC  TRYCORE   
JYR6 ...[   
J^=Q ...[     MACRO TO SEE IF A VALID FPB EXISTS FOR THE CURRENT ACTS. PROG.
J^QB ...[     %A - LABEL TO BRANCH TO IF FPB DOESN'T EXIST  
K2=2 ...[     %B - TO CONTAIN ON EXIST ADDR. OF AREA SPECIFIED IN %C
K2PL ...[     %C - ADDR. WITHIN OBJ. PROG. OF REQUIRED AREA 
K39= ...[   
K3NW ...      LDX   0  JOBNO(2)            [LOAD JOB NO. FOR COMPARISION
K48G ...      LDN   2  BOBJUNUSE           [BASE OF FPB CHAIN   
K4N6 ...MEXTFPB 
K57Q ...      LDX   2  FPTR(2)             [LOAD NEXT FPB   
K5MB ...      BXU   2  CXOBJUN,MFPB        [J IF NOT END OF CHAIN   
K672 ...      LDX   2  FX2  
K6LL ...      LDX   1  FX1  
K76= ...      BRN      %A                  [EXIT AS NO FPB FOUND
K7KW ...MFPB
K85G ...      BXU   0  JOBNOWAS(2),MEXTFPB [J IF NOT CORRECT FPB
K8K6 ...      ADX   2  %C                  [ADD IN REQUIRED ADDR.   
K8N= ...#UNS CA1D   
K8RB ...      ADX   2  CA1D 
K8WG ...#UNS CA1D   
K8^L ...#SKI
K94Q ...      ADN   2  A1D  
K9JB ...#STR  %B,2  
K=42 ...(   
K=HL ...      STO   2  %B                  [STORE REQUIRED GEORGE ADDR. 
K?3= ...      LDX   2  FX2  
K?GW ...)   
K#2G ...#STR  %B,1  
K#G6 ...      LDX   1  FX1  
K#^Q ...#NOR
K*FB ...)   
K*^2 ...)   
KBDL ...[??? MOBJQUOT SECT CENT FGN 32 DOC  
KBY= ...#UNS  ECS   
KCCW ...(   
KCXG ...#MAC  MOBJQUOTA 
KDC6 ...[   
KDWQ ...[     MACRO TO OBTAIN EITHER OBJECTQUOTA MIN OR MAX 
KFBB ...[     %A - EITHER MIN OR MAX DEPENDING WHICH IS REQ'D   
KFW2 ...[     %B - ACC. IN WHICH TO STORE RESULT.IF ABSENT,X0 IS USED   
KG*L ...[   
KGT= ...#STR  MIN,%A
KH#W ...#SKI
KHSG ...(   
KJ#6 ...#STR  %B
KJRQ ...#SKI
KK?B ...      LDX   0  COBJQUOTA
KKR2 ...#STR  %B
KL=L ...      LDX   %B  COBJQUOTA   
KLQ= ...)   
KM9W ...#STR  MIN,%A
KMPG ...(   
KN96 ...#STR  MAX,%A
KNNQ ...! FIRST PARAMETER SHOULD BE EITHER MAX OR MIN   
KP8B ...#STR  MAX,%A
KPN2 ...#SKI
KQ7L ...(   
KQM= ...#STR  %B
KR6W ...#SKI
KRLG ...      LDX   0  COBJQUOTA
KS66 ...#STR  %B
KSKQ ...      LDX   %B  COBJQUOTA   
KT5B ...)   
KTK2 ...)   
KW4L ...#NOR
KWJ= ...)   
KX3W ...[??? SHORTFAL SECT CENT FGN 32 DOC  
KXHG ...#UNS  ECS   
KY36 ...(   
KYGQ ...#MAC  SHORTFALL 
K^2B ...[   
K^G2 ...[     MACRO TO CALCULATE SHORTFALL WHEN A PROGRAM FAILS TO GET IN   
K^^L ...[     %A - ACC. IN WHICH TO STORE RESULT.IF ABSENT,X0 IS USED   
L2F= ...[     ASSUMES ACOMMUNE3 OF FX2 CONTAINS REQUEST SIZE
L2P4 ...[     GEN0 WILL BE OVERWRITTEN  
L2YW ...[   
L3DG ...#STR  %A
L3Y6 ...#SKI
L4CQ ...      SHORTFALL 0   
L4XB ...#STR  %A
L5C2 ...(   
L5FK ...      LDX   %A  ACHAP   
L5J8 ...      SBX   %A  CHAPQUOTA   
L5LR ...      BPZ   %A  MSHORT  
L5PB ...      LDN   %A  0   
L5R^ ...MSHORT STO   %A  GEN0   
L5WL ...      COBJUNUSE %A  
L6B= ...      ADX   %A  CFREE   
L6TW ...      ADX   %A  GEN0
L7T6 ...      SBX   %A  FREZTOT 
L8#Q ...      ADX   %A  FREZFREE
L8SB ...      ADX   %A  FREZCHAP
L9#2 ...      NGX   %A  %A  
L9RL ...      SMO      FX2  
L=?= ...      ADX   %A  ACOMMUNE3   
L=QW ...)   
L?=G ...#NOR
L?Q6 ...)   
L#9Q ...[??? KEEPCHAP SECT CENT FGN 53 DOC  
L#PB ...#MAC  KEEPCHAP  
L*92 ...[ MACRO USED TO KEEP CHAPTERS IN CORE.IT SETS UP A TABLE OF COUNTS IN   
L*NL ...[ FIXED CORE AND A TABLE OF CHAPTERS PER PERIPHERAL IN SEGMENT KEEPCHAP 
LB8= ...[ THE CHAPTER CHANGER IS ALSO MENDED.   
LBMW ...[ IDENTIFIERS USED ARE AS FOLLOWS   
LC7G ...[ JKCTABNO - MAX NO. OF TIMES KEEPCHAP MAY BE ISSUED
LCM6 ...[ JKCTABLEN - MAX LENGTH OF EACH TABLE (I.E. MAX NO OF CHAPTERS + 2)
LD6Q ...[ JKCTABPOS - POSITION OF CURREN TABLE  
LDLB ...[ JKCCHAPPOS - POSITION OF CURRENT CHAPTER IN THE TABLE 
LF62 ...[ JKCTABSTRT - START OF THE TABLE IN KEEPCHAP   
LFKL ...#OPT JKCTABPOS=0                  [TABLE POSITION   
LG5= ...#SKI JKCTABNO*JKCTABLEN-JKCTABPOS<1$1   
LGJW ...! KEEPCHAP ISSUED TOO MANY TIMES
LH4G ...#SKI JKCTABNO*JKCTABLEN-JKCTABPOS   
LHJ6 ...(   
LJ3Q ...[ FIRST MEND THE CHAPTER CHANGER
LJHB ...#SKI JKCTABPOS<1$1                [ONLY DO IT ONCE  
LK32 ...(   
LKGL ...#MEN  CHCH  
LL2= ...#TRA CHKP   
LLFW ...      BRN      FCJKC              [BRANCH TO FCMEND AREA
LL^G ...FCRETURN
LMF6 ...#END
LMYQ ...      FCMEND
LN?7 ...      FIXTRA FCJKC  
LNKJ ...      BZE   0  XKC                [J IF CHAPTER TO BE KEPT  
LNY2 ...      ADS   3  ACTCHCH(2)   
LPCL ...      BRN      FCRETURN 
LPX= ...XKC   SBN   1  A1   
LQBW ...      BS   1,AFKPCP 
LQWG ...      SBS   3  CHCHCOUNT         [SINCE WE PREVIOUSLY ADDED IT IN   
LRB6 ...      SUNDUMP   
LRTQ ...      ACROSS   KEEPCHAP,3   
LS*B ...       FCEND
LST2 ...[ NOW THE TABLE IN KEEPCHAP 
LT#L ...      CHAPMOVE   ON 
LTS= ...[ MEND PUTPER AND RELPER SO THAT THEY GO DOWN TO KEEPCHAP   
LW?W ...#MEN PUTPER 
LWRG ...#TRA  JKCPUTPER 
LX?6 ...      NULL  
LXQQ ...#END
LY=B ...#MEN  RELPER
LYQ2 ...#TRA JKCRELPER  
L^9L ...      NULL  
L^P= ...#END
M28W ...)   
M2NG ...[ TABLE OF COUNTS   
M386 ...      FCMEND
M3MQ ...      FIXTRA 20?
M47B ...      +0
M4M2 ...      FCEND 
M56L ...[ SET UP THE TABLE IN KEEPCHAP USING THE AUXILLARY MACRO KEEPCHP1   
M5L= ...#MEN KEEPCHAP   
M65W ...#TRA JKCTABSTRT+JKCTABPOS   
M6KG ...      +%A   
M756 ...      +20?  
M7JQ ...#END
M84B ...#ALT JKCCHAPPOS=0   
M8J2 ...      KEEPCHP1 %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P 
M9H= ...
M=2W ...#ALT JKCTABPOS=JKCTABPOS+JKCTABLEN  
M=GG ...)   
M?26 ...#NOR
M?FQ ...[??? KEEPCHP1 SECT CENT FGN 53 DOC  
M?^B ...#MAC KEEPCHP1   
M#F2 ...#STR %A 
M#YL ...(   
M*D= ...#SKI JKCTABLEN-2-JKCCHAPPOS<1$1 
M*XW ...! TOO MANY PARAMATERS TO KEEPCHAP   
MBCG ...#SKI JKCTABLEN-2-JKCCHAPPOS 
MBX6 ...(   
MCBQ ...#UNS  D%A   
MCWB ...#SKI
MDB2 ...! %A IS AN INVALID CHAPTER NAME 
MDTL ...#UNS D%A
MF*= ...(   
MFSW ...#MEN KEEPCHAP   
MG#G ...#TRA JKCTABSTRT+JKCTABPOS+2+JKCCHAPPOS  
MGS6 ...#HAL K%A,0  
MH?Q ...#END
MHRB ...#ALT JKCCHAPPOS=JKCCHAPPOS+1
MJ?2 ...)   
MJQL ...      KEEPCHP1 %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P 
MKPW ...
ML9G ...)   
MLP6 ...)   
MM8Q ...#NOR
MMNB ...[??? NEWPERI SECT CENT FGN 53 DOC   
MN82 ...#MAC  NEWPERI   
MNML ...[ USED IN KEEPCHAP SYSTEM WHEN A PERIPHERAL IS ONLINED  
MP7= ...      BRN      MNEWPERI 
MPLW ...      SMO      FX2  
MQ6G ...      STO  %A  ACOMMUNE1
MQL6 ...      DOWN     KEEPCHAP,1   
MR5Q ...MNEWPERI
MRKB ...#NOR
MS52 ...[??? RELPERI SECT CENT FGN 53 DOC   
MSJL ...#MAC  RELPERI   
MT4= ...[ USED IN KEEPCHAP SYSTEM WHEN A PERIPHERAL IS RELEASED 
MTHW ...      BRN      MRELPERI 
MW3G ...      SMO      FX2  
MWH6 ...      STO  %A  ACOMMUNE1
MX2Q ...      DOWN     KEEPCHAP,2   
MXGB ...MRELPERI
MY22 ...#NOR
^^^^ ...02117573006700000000