{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: COREMACROS)}}
====== COREMACROS ======
(George Source)
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<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 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