7 22FL #SEG CASCODE 8 22LS ...#OPT K0CASCODE=0 7 22S2 ...#LIS K0CASCODE 4 22_= # 4 23DW # 19 23YG # THIS SEGMENT CONTAINS DATA THAT IS USED BY FIXED CORE ROUTINES 20 24D6 # ONLY.THE ADDRESSES OF DATA MAY CHANGE WHEN FIXED IS RECOMPILED 20 24XQ # SO NO REFERENCE SHOULD BE MADE TO THESE ITEMS BY NON-FIXED CORE 8 25CB # OVERLAY CHAPTERS 4 25X2 # 18 26BL # THIS IS A FIXED CORE SEGMENT.IT CONTAINS FIXED CORE 19 26W= # WORDS AND CODE FOR THE ALTERNATIVE CORE ALLOCATION SYSTEM 10 27*W # (STRUCTURED FREE CORE). 19 27TG # THE CODE CONSISTS OF ROUTINES ENTERED FROM SEGMENT COREALL 13 28*6 # WHICH WOULD OTHERWISE BE TOO LONG. 4 28SQ # 8 29#B FIXTRA K1CASCODE 4 29S2 # 6 2=?L #UNS ISFCON 4 2=R= ( 18 2?=W ...# THE FOLLOWING WORDS UP TO AND INCLUDING CASTAB ARE 16 2?QG ...# REQUIRED IN THIS ORDER BY SEGMENT PERFCAS 5 2#=6 CASFOUND 5 2#PQ #REP 16 8 2*9B +0 5 2*P2 CASSPLIT 5 2B8L #REP 16 8 2BN= +0 8 2C7W CASCHAPS +0 8 2CMG CASIFPB +0 8 2D76 CASVFPB +0 8 2DLQ CASAMAL +0 8 2F6B CASFAIL +0 8 2FL2 CASK7 +0 8 2G5L CASMILL +0 8 2GK= BFRING1 CHANBASE 8 2H4W BFRING02 CHANBASE 8 2HJG BFRING03 CHANBASE 8 2J46 BFRING04 CHANBASE 8 2JHQ BFRING05 CHANBASE 8 2K3B BFRING06 CHANBASE 8 2KH2 BFRING07 CHANBASE 8 2L2L BFRING08 CHANBASE 8 2LG= BFRING09 CHANBASE 8 2L_W BFRING10 CHANBASE 8 2MFG BFRING11 CHANBASE 8 2M_6 BFRING12 CHANBASE 8 2NDQ BFRING13 CHANBASE 8 2NYB BFRING14 CHANBASE 8 2PD2 BFRING15 CHANBASE 8 2PXL BFRING16 CHANBASE 5 2QC= CASTAB 6 2QWW #REP 16 5 2RBG +0 5 2RW6 CASMID 6 2S*Q #REP 16 5 2STB +0 9 2T*2 #DEF CMIDSIZE1=CASMID 7 2TJS ...CASLNK +0 7 2TNP ...CAS1024 +1024 7 2TP5 ...BFTEMP CHANBASE 7 2TPF ...BF64 CHANBASE 7 2TPT ...CXFT +BFTEMP 6 2TQ9 ...CX64 +BF64 7 2TQK ...CASQUICK +128 6 2TQ_ ...CASQAM +0 6 2TR* ...CASQAME +0 7 2TRP ...CASPOOLGC +0 6 2TS5 ...CASGC +0 6 2TS= ...CASST1 +0 6 2TSC ...CASST7 +0 4 2TSL # 21 2W#= # IN THE STRUCTURED FREE CORE SYSTEM FREE BLOCKS ARE RINGED ON TO 21 2WRW # SIZE RINGS THROUGH THEIR SIZE RING POINTERS. THEY REMAIN ON THE 19 2X?G # FREE CORE CHAIN. EACH SIZE RING HOLDS A RANGE OF SIZES IN 19 2XR6 # ASCENDING ORDER OF SIZE. THE SIZE RANGE FOR EACH RING IS 13 2Y=Q # DETERMINED BY A FIXED CORE TABLE. 4 2YQB # 20 2_=2 # THIS SUBROUTINE SEARCHES THE SIZE RINGS TO FIND A BLOCK BIG 21 2_PL # ENOUGH TO SATISFY THE REQUEST. IT RETURNS TO THE CALLING ROUTINE 21 329= # IF UNSUCCESSFUL. IF SUCCESSFUL IT BRANCHES TO PROCESS THE BLOCK. 21 32NW # IT IS USED BY THE FREEIN MACRO, IN WHICH CASE ONLY THE APPROPRIAT 21 338G # SIZE RING IS SEARCHED, RETURNING THE ADDRESS OF THE BLOCK BEHIND 15 33N6 # WHICH THE FREED BLOCK SHOULD BE CHAINED. 4 347Q # 14 34MB # GEN4 CONTAINS THE 'REQUIRED' AMOUNT. 20 3572 # X7 NEG. IF ENTRY FROM FREEIN ROUTINE, LINK ADDRESS OTHERWISE. 21 35LL # ON EXIT,X0 X1 X2 OVERWRITTEN - FOR FREEIN X1 CONTAINS ADDRESS. 4 366= # 15 36KW # S = BLOCK SIZE, R = REQUIRED SIZE 4 375G # 7 37K6 LABFIX HZRNG 8 37SY ... LDX 2 GEN4 5 384Q SRINGBEG 10 38JB ... BXL 2 CAS1024,SMALL 14 3942 ... LDCH 2 CASTAB+15 [GET LAST RING NO 8 39HL ... BRN SRG 5 3=3= SMALL 16 3=GW SRL 2 4 [DIVIDE R BY 16 21 3?2G SBN 2 1 [ADJUST SO THAT 1 = POSITION 0, ETC. 17 3?G6 SRC 2 2 [X2 NOW A CHAR. POINTER 21 3?_Q LDCH 2 CASTAB(2) [PICK UP RING NUMBER - X2 NOW RINGNO 4 3#FB SRG 20 3#_2 SLL 2 1 [MPY BY 2 -EACH ENTRY IS 2 WORDS 10 3*=B ... LDX 1 BFRING1(2) 14 3*HQ ... BXL 1 FVARST,NEXTRING [J IF EMPTY 10 3*T6 ... LDX 0 ASFCSIZE(1) 16 3B6G ... BXGE 0 GEN4,SFCYES [GO DIRECT IF BIG ENUF 11 3BCW LDX 1 BFRING1+BPTR(2) 21 3BXG LDX 0 ASFCSIZE(1) [SIZE OF LAST BLK IN RING IS LARGEST 8 3CC6 SBX 0 GEN4 17 3CWQ BNG 0 NEXTRING [J IF NONE BIG ENOUGH 19 3DBB SRL 2 1 [RESTORE ORIGINAL RING NO. 17 3DW2 LDX 0 CMIDSIZE1(2) [FIND MIDPOINT SIZE 7 3F*L SLL 2 1 21 3FT= BXL 0 GEN4,SRCHRINGB [J IF MIDSIZE < R TO BACKWARDS SEARCH 10 3G#W LDX 1 BFRING1(2) 20 3YG2 # THIS ROUTINE SEARCHES A SIZE RING FORWARDS UNTIL BIG ENOUGH 8 3Y_L # BLOCK FOUND 4 3_F= # 6 3_YW SRCHRINGF 10 42DG LDX 0 ASFCSIZE(1) 13 42Y6 ... BXGE 0 GEN4,SFCYES [I IF S>R 9 44WL LDX 1 FPTR(1) 9 45B= BRN SRCHRINGF 5 45BW ...NEXTRING 20 45CG ... BZE 7 SFRADDR [J IF ENTRY FROM FREEIN ROUTINE 19 45D6 ... SRL 2 1 [RESTORE ORIGINAL RING NUMBER 18 45DQ ... ADN 2 1 [MOVE TO NEXT RING NO. 17 45FB ... LDCH 0 CASTAB+15 [GET LARGEST RING NO IN USE 16 45G2 ... BXGE 0 2,SRG [J IF STILL MORE TO TRY 15 45GL ... EXIT 7 0 [ELSE EXIT 4 45H= ...# 4 45HW ...# 21 45JG ...# RING SEARCH ROUTINES. ENTERED KNOWING BIG ENOUGH BLOCK THERE 4 45K6 ...# 19 45KQ ...# THIS ROUTINE SEARCHES A SIZE RING BACKWARDS UNTIL EITHER 19 45LB ...# FIRST BLK OF RING - SO 1ST BLOCK SMALLEST TO SATISFY R 21 45M2 ...# OR BLOCK FOUND SMALLER THAN R - SO TAKE THE NEXT ONE FORWARD 4 45ML ...# 4 45N= ...# 6 45NW ...SRCHRINGB 9 45PG ... LDX 1 BPTR(1) 10 45Q6 ... LDX 0 ASFCSIZE(1) 14 45QQ ... SBX 0 GEN4 [S - R 15 45RB ... BNG 0 SPTNXT [J IF R > S 12 45S2 ... BZE 0 SFCYES [J IF MATCH 9 45SL ... BRN SRCHRINGB 4 45T= ...# 4 45TW # 5 46*G SPTNXT 9 46T6 LDX 1 FPTR(1) 5 47#Q SFCYES 20 47KT ... BZE 7 NFRIN1 [J IF ENTRY FROM FREEIN ROUTINE 9 47W_ ... LDX 3 FPTR(1) 9 47_J ... LDX 0 BPTR(1) 7 4847 ... SMO 0 8 486Q ... STO 3 FPTR 13 489* ... STO 0 BPTR(3) [DERING BLOCK 19 48#2 SBN 1 ASFCFPTR [PT TO START OF SELECTED BLK 19 48RL SRL 2 1 [RESTORE ORIGINAL RING NUMBER 14 49?= TRACEIF ARNGTR,99,199,1,SFCSIZE 13 49QW TRACEIF ARNGTR,99,199,2,RINGNO 7 4==G #UNS ICASSTATS 4 4=Q6 ( 7 4?9Q LDN 7 1 21 4?PB ADS 7 CASFOUND(2) [ADD TO COUNT OF FOUND IN THIS RING 4 4#92 ) 9 4#NL TRANSFIX BRN,HNTST 4 4B7G # 4 4BM6 # 19 4C6Q # ENTRY FROM FREEIN ROUTINE IN COREALL. FOR FREEIN MACRO. 18 4CLB # CHAINS BLOCK POINTED TO BY X1 INTO ITS SIZE RING IN 12 4D62 # STRUCTURED FREE CORE SYSTEM. 20 4DKL # X0, X2 OVERWRITTEN. X1 REMAINS POINTING TO THE BLOCK ON EXIT. 4 4F5= # 7 4F*4 ... FIXTRA ISFCM0 7 4FJW LABFIX HZFRIN 17 4FKG ...[IF LL AREA BLK BUNG ON LAST RING TO STOP TOO EARLY USE 9 4FL6 ... STO 0 CASLNK 16 4FLQ ... BXL 1 CTOP,NOTLL [J IF NOT IN LL AREA 14 4FMB ... LDCH 2 CASTAB+15 [LAST RING NO 9 4FN2 ... STO 1 CASST1 9 4FNL ... STO 7 CASST7 7 4FP= ... LDN 7 0 8 4FPW ... LDX 0 GEN4 12 4FQG ... STO 0 ASFCSIZE+ASFCFPTR(1) 9 4FR6 ... LDX 0 ASIZE(1) 8 4FRQ ... STO 0 GEN4 8 4FSB ... BRN SRG 5 4FT2 ...NOTLL 16 4FTL ...[ DO QUICK CHECK FOR FAST CASE OF SMALLEST BLOCK... 12 4FW= ...[MUST BE ON FRONT OF FIRST SIZE RING 9 4FWW ... LDX 2 ASIZE(1) 17 4FXG ... BXU 2 CASQUICK,NFR2 [DROP THRU IF SMALLEST 9 4FY6 ... ADN 1 ASFCFPTR 14 4FYQ ... STO 2 ASFCSIZE(1) [SET SIZE WORD 15 4F_B ... LDN 2 BFRING1 [BASE OF RING 1 10 4G22 ... TRANSFIX CALL 0,ACHAIN 15 4G2L ... SBN 1 ASFCFPTR [BACK TO THE FRONT 13 4G3= ... BRN (CASLNK) [ALL DONE 4 4G3W ...NFR2 17 4G?J ... STO 1 CASST1 [STR BLOCK ADDRESS 14 4GH= ... STO 7 CASST7 [AND X7 11 4GQY ... LDN 7 0 [SET MARKER 8 4G_Q ... LDX 0 GEN4 12 4H8J ... STO 0 ASFCSIZE+ASFCFPTR(1) 19 4HCF ... [SAVE GEN4 TEMP IN SIZE WORD 21 4J32 STO 2 GEN4 [X2 & GEN4 CONTAIN 'REQUIRD' SIZE (R) 21 4JGL BRN SRINGBEG [FIND SIZE RING AND POSITION IN IT 5 4JMS ...SFRADDR 15 4JT2 ... LDN 1 BFRING1(2) [GET RING BASE 5 4K2= NFRIN1 21 4KFW # X1 = ADDR OF SIZE RING PTR OF NEXT BIGGEST BLK IN RING, 20 4K_G # OR THE RING BASE (I.E. THIS BLOCK BIGGEST IN RING) 7 4L39 ...#SKI K6COREALL 4 4L4Y ...( 9 4L6M ... LDX 1 BPTR(1) 12 4L8B ... TRANSFIX CALL 0 ,CHECKCHN 20 4L=5 ... LDX 2 1 [ADDRESS PREVIOUS BLK, FOR CHAINING 4 4L?S ...) 7 4L*H ...#SKI K6COREALL 4 4LC= ...#SKI 21 4LF6 LDX 2 BPTR(1) [ADDRESS PREVIOUS BLK, FOR CHAINING 17 4LYQ ... LDX 1 CASST1 [POINT TO OUR BLOCK 19 4MDB ADN 1 ASFCFPTR [POINT TO SIZE RING POINTER 18 4MY2 TRANSFIX CALL 0,ACHAIN [CHAIN BLK IN SIZE RING 14 4N7S ... LDX 7 ASFCSIZE(1) [GET OLD GEN4 8 4NCL LDX 0 GEN4 21 4NX= STO 0 ASFCSIZE(1) [DUPLICATE OF SIZE AFTER RING PTRS 8 4P4D ... STO 7 GEN4 14 4P9L ...[ RESTORE GEN4 20 4PBW SBN 1 ASFCFPTR [POINT TO START OF BLOCK AGAIN 15 4PWG ... LDX 7 CASST7 [RESTORE X7 13 4QB6 ... BRN (CASLNK) [EXIT 9 4QBD ... FIXTRA ISFCMLL 7 4QBQ ... LABFIX LLQK 9 4QC4 ... STO 0 CASLNK 17 4QCB ... LDCH 2 CASTAB+15 [RING FOR POSSIBLE LLBLOCKS 7 4QCN ... SLL 2 1 10 4QD2 ... LDX 1 BFRING1(2) 16 4QD# ...R2 BXL 1 FVARST,(CASLNK) [J IF NOTHING THERE 16 4QDL ... BXL 1 CTOP,R1 [ J IF NOT IN LL AREA 10 4QDY ... LDX 0 ASFCSIZE(1) 14 4QF= ... BXGE 0 GEN4,XLL [J IF BIG ENUF 9 4QFJ ...R1 LDX 1 FPTR(1) 8 4QFW ... BRN R2 16 4QG8 ...XLL SBS 0 CFREE [ADJUST AMOUNT OF FREE LEFT 17 4QGG ... TRANSFIX CALL 0,ADECH [DERING FROM STRUCTURE 8 4QGS ... LDX 2 FX2 15 4QH6 ... SBN 1 ASFCFPTR [X1->START OF BLOCK 16 4QHD ... TRANSFIX CALL 0,CHAN [CHAIN AFTER CUUR ACT 10 4QHQ ... TRANSFIX BRN ,GOTENUF 4 4QJ4 ...[ 20 4QJB ...[IF RING SEARCH FAILS,TRY QUICK AMAL HERE BY LOOK UP FREE CORE CHAIN 21 4QJN ...[TO SEE IF CAN AMAL ENUF ON ADJACENT BLOX.IF SO,GO TO UNIT IN COREALL 18 4QK2 ...[OTHERWISE EXIT.UNIT EXPECTS X2->FREE BLOCK TO START FROM 4 4QK# ...[ 7 4QKL ... LABFIX QAMALG 9 4QKY ... LDX 2 BFTEMP 12 4QL= ...QAM BXE 2 CXFT,(7) [GIVE UP 14 4QLJ ... LDX 3 2 [WHERE TO GO FROM NEXT 4 4QLW ...QAM2 14 4QM8 ... LDX 1 ASIZE(2) [RUNNING TOTAL 12 4QMG ...QAM1 ADX 2 ASIZE(2) [X2->NEXT 12 4QMS ... BXGE 1 GEN4,UNIT [J IF ENUF 14 4QN6 ... JBC NOTF,2,AFFREE [J IF NOT FREE 15 4QND ... ADX 1 ASIZE(2) [UPDATE RUNNING TOTAL 21 4QNQ ... BXU 3 BPTR(2),QAM1 [J IF THIS BLOCK NOT NEXT ON FREE CHAIN 20 4QP4 ... LDX 3 2 [MORE EFFICIENT TO GO ON FROM THIS NEXT TIME 8 4QPB ... BRN QAM1 4 4QPF ...UNIT 7 4QPJ ... LDX 0 2 9 4QPM ... ADX 0 ASIZE(2) 17 4QPQ ... SBX 2 1 [X2 -> 1ST BLOCK NOW 8 4QPT ... TXL 0 CTOP 9 4QPY ... TRANSFIX BCS,UNIT 10 4QQ3 ... TRANSFIX BRN,ISFCONE 15 4QQ# ...NOTF LDX 2 FPTR(3) [GET NEXT TO INSPECT 8 4QQL ... BRN QAM 4 4QQY ...[ 4 4QR= ...[ 11 4QRJ ...[FOR QUICK AMALG AFTER FREECORE 4 4QRW ...[ 9 4QS8 ... LABFIX QAMALG1 14 4QSG ... LDX 2 CNAFRA [X1->BLOCK FREED 19 4QSS ... LDX 3 BFTEMP+BPTR [ONLY LOOK AT 1,SO SET END CONDITION 8 4QT6 ... BRN QAM2 4 4QTQ # 4 4R*B ) 4 4RT2 [ 4 4S#L [ 6 4SS= [ ICT DATA 4 4T?W [ 6 4TRG #UNS ICTON 4 4W?6 ( 4 4WQQ [ 18 4X=B [ DEFINED BY OVERLAY IDENTIFIERS COS COULD CHANGE DEPENDING 20 4XQ2 [ ON WHETHER SFC ON OR NOT.STILL NEED UNIVERSALS FOR RES TIME MACS 4 4Y9L [ 7 4YP= #DEF GMEL0=GMEL 12 4_6= ...OASFDUMP +0 [WORK WORD FOR ASF 16 4_8W OACTLIS +OACTLIST0,+OACTLIST1,+OACTLIST2,+OACTLIST3 5 4_NG OGMEL1 15 5286 +OGMEL2,+GMEL,#20000000,#01000000,+GPDA,0 5 52MQ OGMEL2 16 537B +OGMEL3,+OGMEL1,#20000000,#02000000,+GPDA,0 5 53M2 OGMEL3 15 546L +BPROG,+OGMEL2,#20000000,#03000000,+GPDA,0 12 54BD ...OGAMREXEC -1,#37777777,60*64,30*64 12 54L= OACTLIST0 +OACTLIST0,+OACTLIST0 12 555W OACTLIST1 +OACTLIST1,+OACTLIST1 12 55KG OACTLIST2 +OACTLIST2,+OACTLIST2 12 5656 OACTLIST3 +OACTLIST3,+OACTLIST3 6 56JQ OAPTYPETAB 9 574B APSETTAB GENERAL 8 57J2 APSETTAB IPCA 9 583L APSETTAB AMSCAN 8 58H= +2 [ACTCDT 9 592W APSETTAB ACTDOC 8 59GG +1 [ACTUNJAM 8 5=26 +1 [AEWIND 9 5=FQ APSETTAB ACTLF 9 5=_B APSETTAB CONSA 8 5?F2 +1 [ASWINT 8 5?YL APSETTAB AMOP 8 5#D= APSETTAB BSA 9 5#XW #20000000 [APET 9 5*CG #20000000 [AOLPT 7 5*X6 +2 [CPAT 6 5BBQ OAPSUBTYPE 6 5BWB #32332333 5 5CB2 #REP 5 7 5CTL #33333333 7 5D*= #33333323 7 5DSW #33333333 9 5F#G #31111113 [IPCA 9 5FS6 #11333333 [AMSCAN 9 5G?Q ... #11313333 [ACTDOC 9 5GRB #31212333 [ACTLF 9 5H?2 ... #33121033 [CONSA 9 5HQL ... #11000333 [AMOP 7 5J== #03333333 7 5JPW #13333333 9 5K9G #03001023 [BSA 5 5KP6 #REP 5 7 5L8Q #33333333 7 5LNB #33333331 7 5M82 #33311330 5 5MML -1 4 5N7= [ 9 5NLW [ NOW ALTER UNIVERSALS 4 5P6G [ 9 5PHG ...#ALT ASFDUMP=OASFDUMP 8 5PL6 #ALT ACTLIS=OACTLIS 9 5Q5Q #ALT ACTLIST0=OACTLIST0 9 5QKB #ALT ACTLIST1=OACTLIST1 9 5R52 #ALT ACTLIST2=OACTLIST2 9 5RJL #ALT ACTLIST3=OACTLIST3 8 5S4= #ALT GMEL1=OGMEL1 8 5SHW #ALT GMEL2=OGMEL2 8 5T3G #ALT GMEL3=OGMEL3 9 5T?# ...#ALT GAMREXEC=OGAMREXEC 10 5TH6 #ALT APTYPETAB=OAPTYPETAB 10 5W2Q #ALT APSUBTYPE=OAPSUBTYPE 4 5WGB ) 13 5WQ8 ... FIXTRA CASCODEND [FOR USE BY PM 4 5X22 #END 6 ____ ...056321210063