{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: ANALYSE865)}}
====== ANALYSE865 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:CHAIN|CHAIN]], [[george:macro:FINDCORE|FINDCORE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GETCOREN|GETCOREN]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:NAME|NAME]], [[george:macro:PHOTO|PHOTO]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETREP|SETREP]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]]
22FL #LIS K0ANALYSE>K0ALLGEO>K0GREATGEO>K0COMMAND
22^= #SEG ANALYSE5 [ BILL IZATT
23DW 8HANALYSE
23YG [ THE ENTRY POINTS
24D6 [ THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT
24XQ SEGENTRY K1ANALYSE,QENTRY1
25CB SEGENTRY K2ANALYSE,QENTRY2
25X2 SEGENTRY K3ANALYSE,QENTRY3
26BL [
26W= [
27*W # THIS SEGMENT IS ENTERED BY THE MACROS PARALYSE AND PARANEXT
27TG # AND THEIR ANALOGUES, AT K1ANALYSE AND K2ANALYSE RESPECTIVELY
28*6 # IT SETS UP A CPB,CMULTI BLOCK TO HOLD THE COMPONENTS OF THE
28SQ # PARAMETER TO BE SPLIT,AND GOES ACROSS TO K1ANALYSEA . ON ENT
29#B # EXT+2(2) HOLDS THE ANALYSIS LEVEL OF THE BLOCK CONTAINING TH
29S2 # PARAMETER TO BE SPLIT,EXT+3(2) HOLDS THE NUMBER OF THE PARAM
2=?L # IN THIS BLOCK,AND EXT+4(2) HOLDS THE SEPARATOR AT WHICH THE
2=R= # PARAMETER IS TO BE SPLIT .IF ANY OF THESE PARAMETERS OF THE
2?=W # MACRO ARE NOT GIVEN,THE CORRESPONDING EXT WORD IS SET TO -1
2?QG #
2#=6 #DEF SIZEPB=AVELINE+APB
2#PQ MINUS1 #77777777
2*9B #
2*P2 # THIS SUBROUTINE LOCATES THE CPB,CMULTI OR ALAS BLOCK WITH
2B8L # ANALYSIS LEVEL IN EXT+2, AND DELETES ANY AT LOWER LEVELS
2BN= SEARCHDEL
2C7W LDX 2 FX2
2CMG STO 7 EXT(2) [SET TO DELETE
2D76 P2 LDX 2 FPTR(2)
2DLQ LDCH 0 ATYPE(2) [CHECK IS A CPB BLOCK
2F6B SBN 0 CPB/64
2FL2 BNZ 0 P2 [BRANCH IF NOT
2G5L LDX 0 ATYPE(2)
2GK= SRL 0 12
2H4W ERN 0 CPB+CUNI
2HJG BZE 0 P2 [IGNORE IF UNIBLOCK
2J46 SMO FX2
2JHQ LDX 1 EXT+2 [ANALYSIS LEVEL OF REQUIRED BLOCK
2K3B BNG 1 RET [BRANCH IF ANALYSIS LEVEL 'LOWEST'
2KH2 TXL 1 ANALEV(2) [CHECK ANALYSIS LEVEL
2L2L BCS TDEL
2LG= TXU 1 ANALEV(2)
2L^W BCC RET
2MFG NAME 3,CPB,CMULTI
2M^6 BRN NMPARAM [ERROR IF ANALYSIS LEVEL TOO LARGE
2NDQ P3 LDX 2 FPTR(2)
2NYB SMO FX2
2PD2 LDX 1 EXT+2
2PXL TXU 1 ANALEV(2)
2QC= BCC RET [BRANCH IF CORRECT ANALYSIS LEVEL
2QWW TDEL
2RBG LDX 7 BPTR(2) [STORE POINTER
2RW6 FREECORE 2 [DELETE BLOCK
2S*Q LDX 2 7 [RESTORE POINTER
2STB BRN P3
2T*2 RET SMO FX2
2TSL LDX 7 EXT
2W#= EXIT 7 0
2WRW #
2X?G # ROUTINES IF PARENT PARAMETER NULL OR NON EXISTENT
2XR6 #
2Y=Q ZPARAM
2YQB NGN 7 1
2^=2 STO 7 APARAFIR+1(3) [SET END OF BLOCK
2^PL LDN 7 0 [NULL PARAMETER
329= STO 7 APARAFIR(3)
32NW LDN 7 1 [1 NULL PARAMETER
338G BRN STORE
33N6 NMPARAM
347Q NGN 7 1 [NON EXISTENT PARAMETER
34MB STO 7 APARAFIR(3) [SET END OF BLOCK
3572 LDN 7 0 [NO PARAMETERS
35LL STORE STO 7 APARANUM(3)
366= STOZ APTNECHA(2)
36KW LDN 7 APARAFIR
375G SLL 7 12
37K6 ADN 7 1
384Q STO 7 APTBEPAR(3) [POINTER TO FIRST PARAMETER
38JB STO 7 ADNOPARAL(3)
3942 BRN TWCH
39HL #
3=3= # ENTRY POINT FOR PARALYSE AND PARALYSX MACROS
3=GW QENTRY1
3?2G STOZ EXT+5(2) [SET 'PARALYSE'
3?G6 BRN PLYSE
3?^Q #
3#FB # ENTRY POINT FOR PARANEXT MACRO AND DERIVATIVES
3#^2 QENTRY3
3*DL NGN 0 1
3*Y= STO 0 EXT+5(2)
3BCW BRN PLYSE
3BXG QENTRY2
3CC6 #SKI K6ANALYSE>499-499
3CWQ TRACE 2,NEXT
3DBB LDN 0 1
3DW2 STO 0 EXT+5(2)
3F*L PLYSE
3FT= GETCOREN SIZEPB,1 [GET A MULTI PARAMETER BLOCK
3G#W FINDCORE 3
3GSG CALL 7 SEARCHDEL [FIND CORRECT MULTI BLOCK AND DELETE
3H#6 #SKI K6ANALYSE>499-499
3HRQ TRACE 2,ANALYSE
3J?B NAME 3,CPB,CMULTI
3JR2 STO 2 7 [STORE ADDRESS OF OLD BLOCK
3K=L LDX 2 BPTR(2)
3KQ= CHAIN 3,2 [CHAIN NEW BLOCK INFRONT OF OLD
3L9W LDX 2 7 [LOAD ADDRESS OF OLD BLOCK
3LPG LDX 7 ANALEV(2) [ANALYSIS LEVEL OF OLD BLOCK
3M96 ADN 7 1
3MNQ STO 7 ANALEV(3) [STORE ANALYSIS LEVEL OF NEW BLOCK
3N8B LDX 7 CPBCPLEV(2)
3NN2 STO 7 CPBCPLEV(3) [STORE COMMAND PROCESSOR LEVEL IN NEW
3P7L STOZ CPBFSD(3) [ZEROISE BRACKET COUNT
3PM= STOZ APARANUM(3)
3Q6W STOZ APARAFIR(3) [ZEROISE FIRST WORD OF FIRST PARAMETE
3QLG STOZ CMFMSK(3)
3QRN ...#UNS CMXMSK
3QYW ... STOZ CMXMSK(3)
3R66 STOZ CPBSTART(3)
3RKQ STOZ CPBSTOP(3)
3S5B LDN 7 APARAFIR
3SK2 STO 7 APTBEPAR(3) [POINTER IN TER SUBROUTINE
3T4L ADN 7 1
3TJ= STO 7 APTNECHA(3) [POINTER TO FIRST CHARACTER
3W3W LDX 6 APARANUM(2)
3WHG BZE 6 NMPARAM [BRN IF PARENT BLOCK HOLDS NO PARAMET
3X36 LDX 7 ANALEV(2)
3XGQ BZE 7 XALAS [BRN IF ALAS
3Y2B LDX 7 CPBPROGLEV(2)
3YG2 STO 7 CPBPROGLEV(3) [PASS ON PROGLEV FROM MULTIBLOCK
3Y^L XALAS SMO FX2
3^F= LDX 7 EXT+3 [NUMBER OF PARAMETER
3^YW BPZ 7 PFIND [BRANCH IF NOT 'NEXT' PARAMETER
42DG LDX 6 ADNOPARAL(2)
42Y6 SRL 6 12 [POINTER TO NEXT PARAMETER TO BE ANAL
43CQ SMO 6
43XB LDX 4 0(2) [NUMBER OF CHARACTERS IN PARAMETER
44C2 SMO FX1
44WL TXU 4 MINUS1
45B= BCC NMPARAM [BRANCH IF END OF BLOCK
45TW #SKI AJOBUSE<1$1
46*G (
46T6 LDX 7 ANALEV(2)
47#Q BNZ 7 MULT3 [BRN IF MULTI BLOCK
47SB )
48#2 LDCT 7 #400
48RL SMO 6
49?= ORS 7 0(2) [SET B0 IN TYPE WORD TO INDICATE 'ACC
49QW #SKI AJOBUSE
4==G (
4=Q6 LDX 7 ANALEV(2)
4?9Q BNZ 7 MULT3 [BRN IF MULTI BLOCK
4?PB )
4#92 LDX 7 ADNOPARAL(2)
4#NL ANDN 7 #7777
4*8= STO 7 CPBPROGLEV(3) [PASS ON ADNOPARAL FROM ALAS BLOCK
4*MW MULT3 LDN 5 #7777
4B7G ANDS 5 ADNOPARAL(2) [CLEARPOINTER TO NEXT PARAMETER
4BM6 ANDX 5 4 [EXTRACT NUMBER OF CHARACTERS
4C6Q ADN 5 7
4CLB SRL 5 2 [SIZE OF PARAMETER IN WORDS
4D62 ADX 5 6
4DKL SLL 5 12
4F5= ADN 5 1 [TO UPDATE L.S. HALF
4FJW ADS 5 ADNOPARAL(2) [POINTER IN AND NUMBER UPDATED
4G4G LDXC 4 4 [CLEAR ANY SIGS BIT
4GJ6 BZE 4 ZPARAM [BRN IF PARAMETER NULL
4H3Q BRN SPT
4HHB PFIND LDN 6 APARAFIR [POINTER TO FIRST PARAMETER
4J32 BRN NLD
4JGL NPAR ANDN 4 #7777 [EXTRACT NO. OF CHARACTERS IN PARAMET
4K2= ADN 4 7
4KFW SRL 4 2
4K^G ADX 6 4 [POINTER TO NEXT PARAMETER
4LF6 NLD SMO 6
4LYQ LDX 4 0(2) [NUMBER OF CHARACTERS IN PARAMETER
4MDB SMO FX1
4MY2 TXU 4 MINUS1
4NCL BCC NMPARAM [BRN IF END OF BLOCK
4NX= BCT 7 NPAR [BRANCH IF NOT N'TH PARAMETER
4PBW #SKI AJOBUSE<1$1
4PWG (
4QB6 LDX 7 ANALEV(2)
4QTQ BNZ 7 MULT4 [BRN NOT ALAS BLOCK
4R*B )
4RT2 LDCT 7 #400
4S#L SMO 6
4SS= ORS 7 0(2) [SET B0 IN TYPE WORD TO INDICATE 'ACC
4T?W #SKI AJOBUSE
4TRG (
4W?6 LDX 7 ANALEV(2)
4WQQ BNZ 7 MULT4 [BRN IF MULTI BLOCK
4X=B )
4XQ2 SMO FX2
4Y9L LDX 7 EXT+3
4YP= STO 7 CPBPROGLEV(3) [PASS ON EXT+3 FOR ALAS BLOCK
4^8W #SKI AJOBUSE
4^NG MULT4
5286 LDXC 4 4 [CLEAR ANY SIGN BIT
52MQ #SKI AJOBUSE<1$1
537B MULT4
53M2 BZE 4 ZPARAM [N'TH PARAMETER
546L SPT SRL 45 12 [ISOLATE PARAMETER TYPE
54L= ANDN 4 #3777 [CLEAR 'ACCESSED' BIT
555W ORS 4 ATYPE(3) [STORE IN NEW BLOCK
55KG SRL 5 12 [NUMBER OF CHARACTERS IN PARAMETER
5656 SETREP OK
56JQ SMO FX2
574B STO 5 EXT+7 [HOLD NUMBER OF CHARACTERS
57J2 ADN 6 1
583L STO 2 5
58H= PHOTO 7
592W ACROSS ANALYSEA,1
59GG # TEST FOR PARALYSE OR PARANEXT
5=26 TWCH SMO FX2
5=FQ LDX 7 EXT+5
5=^B SETREP OK
5?F2 BNZ 7 NEXT
5?YL UP [RETURN IF PARALYSE
5#D= NEXT
5#XW SMO FX2
5*CG STO 7 EXT+7 [SET EXT+7=-1 FOR SPARAPAS
5*X6 UDAL NGN 7 1
5BBQ SMO FX2
5BWB STO 7 EXT+2
5CB2 ACROSS PARAM,25 [BRN TO PASS FIRST PARAMETER
5CTL MENDAREA 20,K99ANALYSE
5D*= #END
^^^^ ...60657477000100000000