{{htmlmetatags>metatag-description:(ICL George 3 and George 4 GIN macro: SUBRELT)}}
====== SUBRELT ======
(GIN Macro)
**Defined in:** [[george:source:COREMACROS|COREMACROS]]
**Used in:** [[george:source:CDCIPB864|CDCIPB864]], [[george:source:CLOSEALT864|CLOSEALT864]], [[george:source:CLOSEND867|CLOSEND867]], [[george:source:IPBCCA867|IPBCCA867]], [[george:source:IPBCCD867|IPBCCD867]], [[george:source:IPQUAKER865|IPQUAKER865]]
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