{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MACROS GLJ)}}
====== MACROS GLJ ======
(George Source)
22FL ...[??? FINDJOBQ SECT CENT FGN 18 DOC
2G5L #
2GK= # MACROS FOR GEORGE 3
2H4W #
2HJG #
2J46 # HERE IS A QUICK JOBLOCK MACRO
2JHQ # %A = ADDRESS ON EXIT
2K3B # %B = JOB NUMBER
2KH2 # %C = LABEL IF NOT FOUND
2L2L #MAC FINDJOBQ
2LG= #STR %B,0
2L^W LDX 0 %B
2MFG LDN %A BJOBQ
2M^6 M1FJQ LDX %A FPTR(%A)
2NDQ BXE %A CXJO,%C
2NYB BXU 0 JOBNUM(%A),M1FJQ
2PD2 #NOR
2PMS ...[??? GETWORD SECT CENT FGN 18 DOC
2PXL #MAC GETWORD
2QC= LDX 0 %A
2QWW #SKI %G
2RBG ORX 0 GSIGN
2RW6 SMO FX2
2S*Q STO 0 ACOMMUNE1
2STB #SKI %E
2T*2 #SKI
2TSL (
2W#= LDN 0 1
2WRW SMO FX2
2X?G STO 0 ACOMMUNE2 [DEFAULT SIZE OF AREA
2XR6 )
2Y=Q #SKI %E
2YQB (
2^=2 LDX 0 %E
2^PL SMO FX2
329= STO 0 ACOMMUNE2
32NW )
338G #STR %C,WRITE
33N6 DOWN GETWORD,1 [READ ENTRY
347Q #STR %C,WRITE
34MB #SKI
3572 DOWN GETWORD,2 [WRITE ENTRY
35LL #STR %F
366= BRN %F
36KW #STR %F
375G #STR
37K6 NULL
384Q #STR %D
38JB (
3942 LDX 0 ACOMMUNE2(2)
39HL STO 0 %D
3=3= )
3=GW #STR 2,%D
3?2G LDX 0 ACOMMUNE1(2)
3?G6 #STR 2,%D
3?^Q #SKI
3#FB (
3#^2 SMO FX2
3*DL LDX 0 ACOMMUNE1
3*Y= )
3BCW #STR %B,0
3BXG STO 0 %B
3CC6 #NOR
3CLY ...[??? WORDFIN SECT CENT FGN 18 DOC
3CWQ #
3DBB #
3DW2 #MAC WORDFIN
3F*L DOWN GETWORD,3
3FT= #NOR
3G54 ...[??? TESTGETW SECT CENT FGN 18 DOC
3G#W #
3GSG #
3H#6 # THIS MACRO BRANCHES TO %A IF NO GETWORD HAS BEEN OBEYED IN THIS
3HRQ # CPA SINCE THE LAST WORDFIN OR LOAD
3J?B #
3JR2 #
3K=L #MAC TESTGETW
3KQ= #SKI K6GETWORD
3L9W (
3LPG LDX 2 FX2
3M96 LDCH 0 ATYPE(2)
3MNQ SBN 0 CPAT/64
3N8B BZE 0 MTESTGETW1 [J IF ISSUED FROM CPA
3NN2 GEOERR 1,NOT CPA
3P7L MTESTGETW1
3PM= )
3Q6W LDX 2 FX2
3QLG LDX 0 EXTPS+1(2)
3R66 LDX 1 FX1
3RKQ ANDX 0 MTESTGETW2(1)
3S5B BZE 0 %A [J IF NO GETWORD SINCE LAST WORDFIN
3SK2 BRN MTESTGETW3 [OR LOAD
3T4L MTESTGETW2 #17000000 [BITS 2,3,4,5
3TJ= MTESTGETW3
3W3W #NOR
3W?N ...[??? GETWORDX SECT CENT FGN 18 DOC
3WHG #
3X36 #
3XGQ #
3Y2B # GETWORDX IS A FORM OF GETWORD WHICH ALLOWS THE TYPE OF ACCESS
3YG2 # TO BE MADE TO AN AREA TO BE DEFINED BY THE CONTENTS
3Y^L # OF A WORD IT HAS BEEN DESIGNED WITH GEORGE 4 IN MIND
3^F= #
3^YW #MAC GETWORDX
42DG LDX 0 %A
42Y6 #SKI %G
43CQ ORX 0 GSIGN
43XB SMO FX2
44C2 STO 0 ACOMMUNE1
44WL #STR %E
45B= #SKIP
45TW LDN 0 1
46*G #STR %E
46T6 LDX 0 %E
47#Q SMO FX2
47SB STO 0 ACOMMUNE2
48#2 LDX 0 %C
48RL SMO FX2
49?= STO 0 ACOMMUNE3
49QW DOWN GETWORD,4
4==G #STR %F
4=Q6 BRN %F
4?9Q #STR %F
4?PB #STR
4#92 NULL
4#NL #STR %D
4*8= (
4*MW LDX 0 ACOMMUNE2(2)
4B7G STO 0 %D
4BM6 )
4C6Q #STR 2,%D
4CLB LDX 0 ACOMMUNE1(2)
4D62 #STR 2,%D
4DKL #SKIP
4F5= (
4FJW SMO FX2
4G4G LDX 0 ACOMMUNE1
4GJ6 )
4H3Q #STR %B,0
4HHB STO 0 %B
4J32 #NOR
4J=S ...[??? LOADNOW SECT CENT FGN 18 DOC
4JGL #
4K2= #
4KFW #
4K^G #
4LF6 #MAC LOADNOW
4LYQ DOWN LOADPROG,3%C
4MDB BRN %A
4MY2 BRN %B
4NCL #NOR
4NMD ...[??? TESTLOAD SECT CENT FGN 18 DOC
4NX= #
4PBW #MAC TESTLOAD
4PWG TBS 14,JMISC(%A),0
4QB6 BZE 0 %B
4QTQ #NOR
4R5J ...[??? CHERRMES SECT CENT FGN 18 DOC
4R*B #
4RT2 #
4S#L #SKI G4
4SS= (
4T?W # CHERRMESS - THIS MACRO CHECKS THE ERROR REPLY WORD GIVEN
4TRG # BY THE CHECKPTE MACRO AND OUTPUTS THE APPROPRIATE
4W?6 # MESSAGE TO THE MONITORING FILE. %A IF PRESENT SHOULD
4WQQ # CONTAIN THE REPLY WORD ITSELF. IF %A IS NOT GIVEN,
4X=B # AN ADATA/ERREPLY BLOCK CONTAINING THE REPLY WILL BE
4XQ2 # LOCATED AND SUBSEQUENTLY FREED.
4Y9L #
4YP= #MAC CHERRMESS
4^8W #STR %A
4^NG #SKI
5286 (
52MQ HUNTW 1,ADATA,ERREPLY
537B BNG 1 MCHERRMESS
53M2 LDX 0 A1(1)
546L SMO FX2
54L= STO 0 ACOMMUNE1
555W FREECORE 1
55KG )
5656 #STR %A
56JQ (
574B LDX 0 %A
57J2 SMO FX2
583L STO 0 ACOMMUNE1
58H= )
592W DOWN GETWORDX,3
59GG MCHERRMESS
5=26 LDX 1 FX1
5=FQ #NOR
5=S7 ...)
5?6J ...[??? SWAPOUT SECT CENT FGN 18 DOC
5?F2 # THIS MACRO EFFECTS A SWAP OUT FOR A ROUTINE IN THE
5?YL # COMMAND PROCESSING ACTIVITY
5#D= #
5#XW #SKI G3
5*CG (
5*X6 #MAC SWAPOUT
5BBQ DOWN SWAP,3
5BWB #NOR
5CB2 )
5CTL #SKI G4
5D*= (
5DSW #MAC SWAPOUT
5F#G DOWN SWAPOUT,3
5FS6 #NOR
5F^# ...)
5G6G ...[??? MKPROG SECT CENT FGN 18 DOC
5G?Q # THIS MACRO ALTERS THE STATE OF AN OBJ PROG
5GRB # %A CHRACTER STRING INDICATING THE CHANGE IN STATE
5H?2 # UNSWAP - MAKE PROG UNSWAPPABLE,PROG MUST BE SWAPPED IN
5HQL # SWAP - MAKE PROG SWAPPABLE,PROG.MUST BE UNSWAPPABLE
5J== # STABLE - MAKE PROG SWAPPED OUT OR UNSWAPPABLE
5JPW # UNSTABLE- IF PROG IS UNSWAPPABLE MAKE IT SWAPPABLE
5K9G # %B MODIFIER WITH ADDRESS OF JOBBLOCK
5KP6 #
5KYY ...#SKI G4
5L4T ...(
5L8Q #MAC MKPROG
5LNB #SKIP IZUNSTABLE+IZSTABLE&IZ%A
5M82 (
5MML LDX 0 BIT11
5N7= ANDX 0 JMISC(%B) [JUMP IF PROG SWAPPED OUT
5NLW BNZ 0 MMKPROG
5P6G )
5PL6 #SKIP IZUNSWAP&IZ%A
5Q5Q (
5QKB LDX 0 BIT10
5R52 ANDX 0 JMISC(%B)
5RJL BZE 0 (GEOERR) [ERROR UNLESS PROG SWAPPED IN
5S4= ADS 0 JMISC(%B) [CHANGE FROM SWAPPEDIN TO UNSWAPPABLE
5SHW )
5T3G #SKIP IZSWAP+IZUNSTABLE&IZ%A
5TH6 (
5W2Q LDX 0 BIT9
5WGB ANDX 0 JMISC(%B)
5X22 BZE 0 (GEOERR) [ERROR UNLESS PROG UNSWAPPABLE
5XFL SRL 0 1
5X^= SBS 0 JMISC(%B) [CHANGE FROM UNSWAPPABLE TO SWAPPEDIN
5YDW )
5YYG #SKIP IZSTABLE&IZ%A
5^D6 (
5^XQ LDX 0 BIT10
62CB ANDX 0 JMISC(%B)
62X2 BNZ 0 MMKPROG1 [J IF PROG SWAPPED IN
63BL SWAPOUT [WAIT FOR SWAP TO FINISH
63W= BRN MMKPROG
64*W MMKPROG1
64TG ADS 0 JMISC(%B)
65*6 )
65SQ MMKPROG
66#B #NOR
66LR ...)
66^8 ...[??? FPCACA SECT CENT FGN 18 DOC
67?L #
67R= #
68=W #
68QG #
69=6 #MAC FPCACA [FIND PCA FROM CPA
69PQ [
6=9B #STR %B
6=P2 MOD LDX %A JOBRING+BPTR,%B
6?8L #STR %B
6?N= #SKI
6#7W LDX %A JOBRING+BPTR(%A)
6#MG SBN %A JOBRING
6*76 [
6*LQ #STR N,%C
6B6B (
6BL2 #SKI K6ALLGEO [CHECK THAT BLOCK FOUND
6C5L ( [IS OF THE RIGHT TYPE
6CK= LDCH 0 ATYPE(%A)
6D4W SBN 0 APET/64
6DJG BZE 0 MFPCACA1
6F46 GEOERR 1,PCA?
6FHQ MFPCACA1
6G3B )
6GH2 )
6H2L [
6HG= #NOR
6HQ4 ...[??? FCAPCA SECT CENT FGN 18 DOC
6H^W #
6JFG #
6J^6 #MAC FCAPCA [FIND CPA FROM PCA
6KDQ [
6KYB #STR %B
6LD2 MOD LDX %A JOBRING+FPTR,%B
6LXL #STR %B
6MC= #SKI
6MWW LDX %A JOBRING+FPTR(%A)
6NBG SBN %A JOBRING
6NW6 [
6P*Q #STR N,%C
6PTB (
6Q*2 #SKI K6ALLGEO [CHECK THAT THE BLOCK FOUND
6QSL ( [ IS OF THE RIGHT TYPE
6R#= LDCH 0 ATYPE(%A)
6RRW SBN 0 CPAT/64
6S?G BZE 0 MFCAPCA1
6SR6 GEOERR 1,CPA?
6T=Q MFCAPCA1
6TQB )
6W=2 )
6WPL [
6X9= #NOR
6XF4 ...[??? FJOCA SECT CENT FGN 18 DOC
6XNW #
6Y8G #
6YN6 #MAC FJOCA [FIND JOB BLOCK FROM CPA
6^7Q [
6^MB #STR %B
7272 MOD LDX %A JOBRING+FPTR,%B
72LL #STR %B
736= #SKI
73KW LDX %A JOBRING+FPTR(%A)
745G SBN %A AJBRING
74K6 [
754Q #STR N,%C
75JB (
7642 #SKI K6ALLGEO
76HL ( [CHECK THAT THE BLOCK FOUND
773= LDCH 0 ATYPE(%A) [ IS OF THE RIGHT TYPE
77GW SBN 0 JOBQE/64
782G BZE 0 MFJOCA1
78G6 GEOERR 1,JBBLOCK?
78^Q MFJOCA1
79FB )
79^2 )
7=DL [
7=Y= #NOR
7?84 ...[??? FJOPCA SECT CENT FGN 18 DOC
7?CW #
7?XG #
7#C6 #MAC FJOPCA [FIND JOB BLOCK FROM PCA
7#WQ [
7*BB #STR %B
7*W2 MOD LDX %A JOBRING+BPTR,%B
7B*L #STR %B
7BT= #SKI
7C#W LDX %A JOBRING+BPTR(%A)
7CSG SBN %A AJBRING
7D#6 [
7DRQ #STR N,%C
7F?B (
7FR2 #SKI K6ALLGEO [CHECK THAT BLOCK FOUND
7G=L ( [ IS OF THE RIGHT TYPE
7GQ= LDCH 0 ATYPE(%A)
7H9W SBN 0 JOBQE/64
7HPG BZE 0 MFJOPCA1
7J96 GEOERR 1,JBBLOCK?
7JNQ MFJOPCA1
7K8B )
7KN2 )
7L7L [
7LM= #NOR
7LX4 ...[??? FPCAJO SECT CENT FGN 18 DOC
7M6W #
7MLG #
7N66 #MAC FPCAJO [FIND PCA FROM JOB BLOCK
7NKQ [
7P5B #STR %B
7PK2 MOD LDX %A AJBRING+FPTR,%B
7Q4L #STR %B
7QJ= #SKI
7R3W LDX %A AJBRING+FPTR(%A)
7RHG SBN %A JOBRING
7S36 [
7SGQ #STR N,%C
7T2B (
7TG2 #SKI K6ALLGEO [CHECK THAT BLOCK FOUND
7T^L ( [ IS OF THE RIGHT TYPE
7WF= LDCH 0 ATYPE(%A)
7WYW SBN 0 APET/64
7XDG BZE 0 MFPCAJO1
7XY6 GEOERR 1,PCA?
7YCQ MFPCAJO1
7YXB )
7^C2 )
7^WL [
82B= #NOR
82L4 ...[??? FCAJO SECT CENT FGN 18 DOC
82TW #
83*G #
83T6 #MAC FCAJO [FIND CPA FROM JOB BLOCK
84#Q [
84SB #STR %B
85#2 MOD LDX %A AJBRING+BPTR,%B
85RL #STR %B
86?= #SKI
86QW LDX %A AJBRING+BPTR(%A)
87=G SBN %A JOBRING
87Q6 [
889Q #STR N,%C
88PB (
8992 #SKI K6ALLGEO [CHECK THAT BLOCK FOUND
89NL ( [ IS OF THE RIGHT TYPE
8=8= LDCH 0 ATYPE(%A)
8=MW SBN 0 CPAT/64
8?7G BZE 0 MFCAJO1
8?M6 GEOERR 1,CPA?
8#6Q MFCAJO1
8#LB )
8*62 )
8*KL [
8B5= #NOR
8B*4 ...[??? FJOTP SECT CENT FGN 18 DOC
8BJW #
8C4G #
8CJ6 #
8D3Q # THE NEXT TWO MACROS ARE PARTICULARY USEFUL IN GEORGE 4
8DHB # WHERE CERTAIN ROUTINES ARE FORCED TO WORK FROM THE TP.PCA
8F32 #
8FGL # THIS MACRO LOCATES THE JOB BLOCK FROM THE TP.PCA WHETHER IT
8G2= # IS ON THE JOB RING OR NOT,IT WORKS IF PROG IS NOT RCTP
8GFW #
8G^G #MAC FJOTP
8HF6 #STR %B
8HYQ LDX %A %B
8JDB LDX 0 JOBRING+BPTR(%A)
8JY2 BNZ 0 MFJOTP [J IF PCA NOT ON JOB RING
8KCL FINDPUC %A,%A [LOCATE PUC WHICH MUST BE ON JOB RING
8KX= MFJOTP
8LBW FJOPCA %A,,%C
8LWG #NOR
8M6# ...[??? FCATP SECT CENT FGN 18 DOC
8MB6 #
8MTQ # THIS MACRO LOCATES THE CPA FROM THE TP.PCA WHETHER IT IS
8N*B # ON THE JOB RING OR NOT.IT WORKS IF THE PROG IS NOT RCTP
8NT2 #
8P#L #MAC FCATP
8PS= #STR %B
8Q?W LDX %A %B
8QRG LDX 0 JOBRING+BPTR(%A)
8R?6 BNZ 0 MFCATP [J IF PCA NOT ON JOB RING
8RQQ FINDPUC %A,%A [IF IT IS NOT THEN THE PUC.PCA MUST B
8S=B MFCATP
8SQ2 FCAPCA %A,,%C
8T9L #NOR
8TFD ...[??? HUNTSCB SECT CENT FGN 18 DOC
8TP= #
8W8W #SKI G4
8WNG (
8X86 #
8XMQ # THIS MACRO FINDS SCB AND SETS UP S/R FOR USE BY SUBSEQUENT
8Y7B # CALLS OF THIS MACRO
8YM2 #
8^6L #
8^L= #MACRO HUNTSCB
925W #STRING %A
92KG LDX 3 %A
9356 CALL 0 MHUNTSCB
93JQ #OPTIONAL MHUNTSCB=0?+1
944B #SKIP MHUNTSCB-0?-1
94J2 #SKIP
953L (
95H= BRN MHUNTSCB1
962W STO 0 GEN0
96GG HUNT2 3,BSTB,BSCB
9726 BRN (GEN0)
97FQ MHUNTSCB1
97^B )
98F2 #NORMAL
98RC ...)
995S ...[??? OPND SECT CENT FGN 18 DOC
99D= #
99XW #MACRO OPND
9=CG #STRING %B
9=X6 #SKIP
9?BQ OPND %A,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N
9?WB #STRING %B
9#B2 %A %B
9#TL #NORMAL
9*5D ...[??? PCATEST SECT CENT FGN 18 DOC
9**= #MACRO PCATEST
9*SW MOD LDX 0 ATYPE,%A
9B#G SRL 0 12
9BS6 SBN 0 APET
9C?Q OPND BZE 0, %B,MPCATEST
9CRB SBN 0 ATP
9D?2 OPND BZE 0, %C,MPCATEST
9DQL SBADN 0, APUC-ATP
9F== OPND BZE 0, %D,MPCATEST
9FPW #SKIP G3
9G9G GEOERR 1,NOT PCA
9GP6 #SKIP G4
9H8Q BRN (GEOERR)
9HNB MPCATEST
9J82 #NORMAL
9JCS ...[??? FIXEMSCR SECT CENT FGN 18 DOC
9JML #
9K7= #
9KLW #
9L6G #
9LL6 #
9M5Q # MACROS FOR GEORGE FOUR
9MKB #
9N52 # THIS MACRO IS USED BY LOADER AND SET UP TO TRY TO OBTAIN CORE
9NJL # AT EMS TIME FROM THE AREA BETWEEN THE END OF FIXED CORE AND
9P4= # THE ADDRESS GIVEN BY K21-1. IF THIS AREA IS NOT LARGE ENOUGH,
9PHW # A NORMAL EMSCORE IS OBEYED
9Q3G #
9QH6 #
9R2Q #SKI G4
9RGB (
9S22 #
9SFL #MAC FIXEMSCR
9S^= LDX 2 %A
9TDW STO 2 GLOGLEN [PRESERVE LOGICAL LENGTH
9TYG ADN 2 A1
9WD6 LDX 0 GFIXFREE
9WXQ SBX 0 2
9XCB BNG 0 MFIXEMSCR
9XX2 LDX 1 BSUT
9YBL SBX 1 GFIXFREE [S/A OF NEW BLOCK IN X1
9YW= SBS 2 GFIXFREE [UPDATE TOTAL
9^*W STO 2 ASIZE(1) [SET SIZE OF BLOCK
9^TG #SKI CAMK7<5-5
=2*6 (
=2SQ LDCT 0 128
=3#B ORS 0 ASIZE(1) [LOCK BLOCK
=3S2 )
=4?L LDX 0 GLOGLEN
=4R= STO 0 ALOGLEN(1) [SET LOGICAL LENGTH
=5=W STOZ BACK1(1)
=5QG STOZ BACK2(1)
=6=6 #SKI CAMK7>4-4
=6PQ (
=79B LDN 0 #10
=7P2 STO 0 AFLAG(1) [LOCK IT
=88L )
=8N= #SKI CAMK7<5-5
=97W STOZ AFLAG(1)
=9MG STOZ ATYPE(1) [NAME THE BLOCK 'GCB'
==76 LDX 2 FX2
==LQ LDX 0 FPTR(2) [CHAIN AFTER
=?6B STO 1 FPTR(2) [CALLING ACTIVITY
=?L2 STO 0 FPTR(1) [X2 CALLING ACTIVITY BLOCK
=#5L STO 2 BPTR(1) [X1 NEW BLOCK
=#K= SMO 0 [X0 NEXT BLOCK IN CHAIN
=*4W STO 1 BPTR
=*JG LDX 1 FX1
=B46 BRN MFIXEMSCR1
=BHQ MFIXEMSCR
=C3B LDX 2 GLOGLEN
=CH2 #STR %B
=D2L (
=DG= BRN MFIXEMSCR2
=D^W MFIXEMSCR3
=FFG LDX 2 %A [ ENTRY HERE IF NORMAL EMSCORE REQD.
=F^6 #DEF %B=MFIXEMSCR3
=GDQ MFIXEMSCR2
=GYB )
=HD2 EMSCORE 2 [NORMAL EMSCORE
=HXL MFIXEMSCR1
=JC= #NOR
=JFT ...)
=JJD ...[??? FIXEMSAC SECT CENT FGN 18 DOC
=JM4 ...#SKI G4
=JQ^ ...(
=JWW #MAC FIXEMSACTX
=KBG #STR %B,2
=KW6 LDX 2 %B
=L*Q STO 2 GLOGLEN
=LTB ADN 2 A1
=M*2 LDX 0 GFIXFREE
=MSL SBX 0 2
=N#= BNG 0 MFIXEMSACTX
=NRW LDX 1 BSUT
=P?G SBX 1 GFIXFREE
=PR6 SBS 2 GFIXFREE
=Q=Q MFXEMSACTX2
=QQB STO 2 ASIZE(1)
=R=2 #SKI CAMK7<5-5
=RPL (
=S9= LDCT 0 #200
=SNW ORS 0 ASIZE(1)
=T8G )
=TN6 LDX 2 GLOGLEN
=W7Q STO 2 ALOGLEN(1)
=WMB STO %A ATYPE(1)
=X72 STOZ BACK1(1)
=XLL STOZ BACK2(1)
=Y6= #SKI CAMK7>4-4
=YKW (
=^5G LDN 0 #10
=^K6 STO 0 AFLAG(1) [LOCK IT
?24Q )
?2JB #SKI CAMK7<5-5
?342 STOZ AFLAG(1)
?3HL LDX 2 FX2
?43= STO 2 FPTR(1)
?4GW LDX 2 BPTR(2)
?52G SMO FX2
?5G6 STO 1 BPTR
?5^Q STO 1 FPTR(2)
?6FB STO 2 BPTR(1)
?6^2 LDN 0 ACTRINGNUM
?7DL LDN 2 ARINGNO+1(1)
?7Y= MFXE1 STO 2 FPTR(2)
?8CW STO 2 BPTR(2)
?8XG ADN 2 2
?9C6 BCT 0 MFXE1
?9WQ STOZ BACKCHAN(1)
?=BB LDN 2 FILERING
?=W2 NGS 2 FILERING+BSTART(1)
??*L LDX 2 ACTYPE
??T= STO 2 ARINGNO(1)
?##W LDN 2 ACTRING(1)
?#SG SMO FX2
?*#6 LDN 1 ACTRING
?*RQ STO 1 0(2)
?B?B LDX 1 1(1)
?BR2 SMO FX2
?C=L STO 2 ACTRING+1
?CQ= STO 2 0(1)
?D9W STO 1 1(2)
?DPG LDN 0 ACC3-ACTRING(2)
?F96 LDN 1 ACC4-ACTRING(2)
?FNQ STOZ ACC3-ACTRING(2)
?G8B LDX 2 GLOGLEN
?GN2 SBN 2 ACC3-A1+1
?H7L MOVE 0 0(2)
?HM= LDX 0 ACTCOUNT
?J6W STO 0 ACTNUM-ACC4(1)
?JLG ADN 0 1
?K66 STO 0 ACTCOUNT
?KKQ LDX 1 FX1
?L5B LDX 2 FX2
?LK2 BRN MFXEMSACTX1
?M4L #STR %C
?MJ= (
?N3W MLABEL
?NHG LDX 2 %B [ ENTRY HERE IF NORMAL EMSACTX REQD.
?P36 #DEF %C=MLABEL
?PGQ STO 2 GLOGLEN
?Q2B ADN 2 A1
?QG2 )
?Q^L MFIXEMSACTX
?RF= LDX 1 BFREE+1
?RYW #SKI CAMK7>4-4
?SDG LDX 0 ASIZE(1)
?SY6 #SKI CAMK7<5-5
?TCQ (
?TXB SMO ASIZE(1)
?WC2 LDN 0 0
?WWL )
?XB= SBS 2 AFREE
?XTW SBS 2 CFREE
?Y*G SBX 0 2
?YT6 BPZ 0 MFXEMSACTX3
?^#Q MFXEMSACTX4
?^SB GEOERR 1,EMSCORE
#2#2 MFXEMSACTX3
#2RL BZE 0 MFXEMSACTX4
#3?= SBS 2 ASIZE(1)
#3QW ADX 1 0
#4=G BRN MFXEMSACTX2
#4Q6 MFXEMSACTX1
#59Q #NOR
#5BY ...)
#5J6 ...[??? GETPTAB SECT CENT FGN 18 DOC
#5PB #
#5^8 ...#SKI G4
#655 ...(
#692 ...#MAC GETPTAB
#6#X ...#UNSET G4VOPA
#6DS ...#SKIP
#6JP ...(
#6NL BRN MGETPTAB
#78= DOWN PROGDEL,5 [TRY TO DELETE A SUD
#7D4 ...)
#7MW MGETPTAB
#7RF ... LDX 2 %A
#7X4 ...#UNSET G4VOPA
#82M ...(
#86= ... SMO FX2
#89T ... STO 2 ACOMMUNE1
#8*D ...)
#8F3 ...#STR %B,PDESC
#8JL ...(
#8N9 ...#UNSET G4VOPA
#8RS ... DOWN SETUPPTS,9
#8XC ...#UNSET G4VOPA
#932 ...#SKI
#96Q LDN 1 0
#9BJ ...)
#9LB #STR %B,PDESC
#9Q? ...#SKI
#9W8 ...(
#=25 ...#UNSET G4VOPA
#=62 ... DOWN SETUPPTS,8
#=9X ...#UNSET G4VOPA
#=*S ...#SKI
#=FP ... LDCT 1 #100
#=KL ...)
#=PH ...#UNSET G4VOPA
#=TD ...#SKI
#=^* ...(
#?5= #STR %C
#?JW ORN 1 %C
##4G #STR %C
##J6 #SKI
#*3Q ORN 1 0
#*8Y ... CALL 0 (GPTAB)
#*B6 ...)
#*H# ...#UNSET G4VOPA
#*NG ...#SKIP
#*TN ...(
#B32 #OPT GPTABEXP=0?-MGETPTAB
#BGL #FREE MGETPTAB
#BQD ...)
#C2= #NOR
#C7D ...)
#C#L ...[??? FREEPTAB SECT CENT FGN 18 DOC
#CFW #
#C^G #
#D9# ...#SKI G4
#D*9 ...(
#DF6 #MAC FREEPTAB
#DHY ... LDX 1 %A
#DLQ ...#UNSET G4VOPA
#DPJ ...(
#DSB ... ANDX 1 BITS22LS
#DX8 ... SMO FX2
#F22 ... STO 1 ACOMMUNE1
#F4S ... DOWN SETUPPTS,10
#F7L ...)
#F=D ...#UNSET G4VOPA
#F*= ...#SKI
#FDB CALL 0 (GFPTAB)
#FY2 #NOR
#G58 ...)
#P6F ...[??? GETPAGE SECT CENT FGN 18 DOC
#P=B #
#P^S ...#SKI G4
#Q5P ...(
#Q9L #MAC GETPAGE
#Q=C ...MGETPAGE
#Q?8 ...#UNSET G4VOPA
#Q?^ ...(
#Q#Q ... LDX 0 CFPCFREZ
#Q*H ... BZE 0 MGETOK
#QB# ...[
#QC5 ... NGX 0 APTURNPAGS [AS A FREEZE IS IN PROGRESS WE MUST..
#QCW ... ADX 0 CPAGETURNS [. CHECK WE CAN MEET REQUEST FROM..
#QDM ... [ .. FROM APTURNPAGS
#QFD ... BPZ 0 MGETWAIT
#QG9 ...[
#QH2 ...MGETOK
#QHR ... LDN 0 1
#QJJ ... SMO FX2
#QK* ... STO 0 ACOMMUNE1
#QL6 ...
#QLX ... CALL 0 (GETPRING)
#QMN ... BRN MGETFINI [OK SO FINISH
#QNF ...MGETWAIT
#QP= ... LDN 0 1 [FAILURE SO WE GO WAITING
#QQ3 ... ADS 0 COBJWAIT
#QQS ... ADS 0 CFPCFREZ
#QRK ...[
#QSB ... COOR3 #105
#QT7 ...[
#QTY ... LDN 0 1
#QWP ... SBS 0 CFPCFREZ
#QXG ...[
#QY? ... BRN MGETPAGE
#Q^4 ...MGETFINI
#Q^T ... LDN 0 1
#R2L ... ADS 0 CPAGETURNS
#R3C ...#FREE MGETWAIT
#R48 ...#FREE MGETOK
#R4^ ...#FREE MGETFINI
#R5Q ...)
#R6H ...#UNSET G4VOPA
#R7# ...#SKIP
#R8W CALL 0 (GPAG)
#RNG #OPT GPAGEXP=0?-MGETPAGE
#S86 #FREE MGETPAGE
#SMQ #NOR
#SSY ...)
*5SP ...[??? FREEOBJC SECT CENT FGN 18 DOC
*5YL #
*6N4 ...#SKI G4
*6R^ ...(
*6XW #MAC FREEOBJCORE
*7CG #STR %A,1
*7X6 LDX 1 %A
*8BQ #STR %B,2
*8HY ... LDX 2 %B
*8P6 ...#UNSET G4VOPA
*8P* ...(
*8PJ ...#UNS ISTDP
*8PR ...(
*8Q2 ...#STR %C
*8Q9 ...(
*8QD ...#ACC %C
*8QM ...#SKI
*8QW ... STO %C JWSP1
*8R5 ...#ACC %C
*8R# ...(
*8RH ... LDX 0 %C
*8RQ ... STO 0 JWSP1
*8R^ ...)
*8S8 ... CALL 0 (GIVPRING1)
*8SC ...)
*8SL ...#STR %C
*8ST ...#SKI
*8T4 ... CALL 0 (GIVPRING)
*8T? ...)
*8TG ...#UNS ISTDP
*8TP ...#SKI
*8W# ... CALL 0 (GIVPRING)
*8YX ...)
*93G ...#UNSET G4VOPA
*98N ...#SKIP
*9B2 CALL 0 (GFOBJ)
*9TL #NOR
*=2S ...)
*=82 ...[??? FREEPAGE SECT CENT FGN 18 DOC
*=*= #
*=SW #
*?4N ...#SKI G4
*?8K ...(
*?#G #MAC FREEPAGE [G4 ONLY
*?S6 #STR %A,2
*#?Q LDX 2 %A
**5Q ...#UNSET G4VOPA
**5X ...(
**64 ...#UNS ISTDP
**69 ...(
**6B ...#STR %B
**6H ...(
**6N ...#ACC %B
**6T ...#SKI
**72 ... STO %B JWSP1
**77 ...#ACC %B
**7# ...(
**7F ... LDX 0 %B
**7L ... STO 0 JWSP1
**7R ...)
**7Y ... LDN 1 1
**85 ... SBS 1 CPAGETURNS
**8= ... CALL 0 (GIVPRING1)
**8C ...)
**8J ...#STR %B
**8P ...#SKI
**8W ...(
**93 ... LDN 1 1
**98 ... SBS 1 CPAGETURNS
**9* ... CALL 0 (GIVPRING)
**9G ...)
**9M ...)
**9S ...#UNS ISTDP
**9^ ...#SKI
**=6 ...(
**=? ... LDN 1 1
**=D ... SBS 1 CPAGETURNS
**=Y ... CALL 0 (GIVPRING)
**#M ...)
**BB ...)
**D6 ...#UNSET G4VOPA
**K# ...#SKI
**LL ...(
**MY ... LDN 1 1
**P= ... SBS 1 CPAGETURNS
**QL CALL 0 (GFOBJ)
*B2D ...)
*B== #NOR
*BCD ...)
*BJL ...[??? FREEPGCN SECT CENT FGN 18 DOC
*BPW #
*B^N ...#SKI G4
*C5K ...(
*C9G #MACRO FREEPGCNT
*CP6 LDN 0 1
*D8Q SBS 0 CPAGETURNS
*DNB #NORMAL
*DTJ ...)
*F2Q ...[??? ILLPRQ SECT CENT FGN 18 DOC
*F82 #
*FCS ...#SKI G4
*FHP ...(
*FML #MAC ILLPRQ
*G7= SMO FX1
*GLW LDX 5 MILL
*H6G ACROSS OPILLS,9 [DON'T STEP ONR
*HL6 MILL +JY%A
*J5Q #NOR
*J8W ...)
*J#2 ...[??? FINDGPUT SECT CENT FGN 18 DOC
*JC6 ...#SKI G4
*JG= ...(
*JKB #
*K52 #
*KJL # GIVEN A REAL ADDRESS, THIS MACRO GIVES A POINTER TO
*L4= # THE APPROPRIATE GPUT ENTRY.
*LHW # %A IS THE ADDRESS OF A WORD THAT WILL CONTAIN
*M3G # THE POINTER,AND MUST BE AN ACCUMULATOR.
*MH6 # %B IS THE ADDRESS OF A WORD THAT CONTAINS A
*N2Q # POINTER TO A WORD CONTAINING THE REAL ADDRESS
*NGB # (E.G A POINTER INTO A PAGE TABLE.)
*P22 # IF OMITTED,%A IS ASSUMED TO CONTAIN THE ACTUAL
*PFL # REAL ADDRESS.
*P^= #
*^?L #SKIP BPG
*^R= (
B234 ...#SKI G4
B26^ ...(
B2=W #MACRO FINDGPUT
B2QG #STRING %B
B3=6 (
B3PQ #MODIFIER %B
B49B (
B4P2 #STRING %B,%A
B58L LDX %A %B
B5N= MOD LDX %A 0,%A
B67W )
B6MG #MODIFIER %B
B776 #SKIP
B7LQ LDX %A 0(%B)
B86B )
B8L2 SRL %A 10
B95L ANDN %A #7777
B9K= ADX %A BGPUT%C
B=4W #NORMAL
B=?6 ...)
B=FB ...)
B=ML ...)
B=TW ...[??? FDPTLEN SECT CENT FGN 18 DOC
B?46 #
B?HQ #
B#3B # GIVEN A POINTER TO A PAGE TABLE ENTRY IN THE FIRST
B#H2 # HALF OF A SEGMENT DESCRIPTION (%B),THIS MACRO GIVES
B*2L # THE LENGTH OF THE PAGE TABLE (IN %A). IT OPTIONALLY
B*G= # GIVES A POINTER TO THE START OF THE TABLE (%C).
B*^W # %A MUST BE AN ACCUMULATOR.
BBFG #
BBP# ...#SKI G4
BBT9 ...(
BB^6 #MACRO FDPTLEN
BCDQ LDX %A %B
BCYB #STRING %C
BDD2 STO %A %C
BDXL FDESC %A
BFC= MOD LDX %A 0,%A
BFWW SLC %A 10
BGBG ANDN %A #160
BGW6 #STRING %C
BH*Q (
BHTB SBN %A 1
BJ*2 ORS %A %C
BJSL ERS %A %C
BK#= ADN %A 1
BKRW )
BL?G #NORMAL
BLDN ...)
BLKW ...[??? FINDBSH SECT CENT FGN 18 DOC
BLR6 #
BM=Q # GIVEN A POINTER TO A PAGE TABLE ENTRY, THIS MACRO FINDS THE
BMQB # BACKING STORE HOME OF A PAGE.
BN=2 # %A= MODIFIER CONTAINING POINTER TO PAGE TABLE ENTRY
BNPL # %B= ADDRESS OF WORD CONTAINING LENGTH OF TABLE
BP9= # %C WILL CONTAIN BACKING STORE HOME.
BPNW # %D= LABEL TO JUMP TO IF BSH NOT ALLOCATED
BQ8G # %E WILL CONTAIN THE LOGICAL FILE NO.(OPTIONAL)
BQN6 # %F= LABEL TO JUMP TO IF BSH ALLOCATED BUT NOT USED.
BR7Q #
BRCJ ...#SKI G4
BRHF ...(
BRMB #MACRO FINDBSH
BS72 SMO %B
BSLL LDX 0 0(%A)
BT6= ANDX 0 BSP16
BTKW BZE 0 %D
BW5G #STRING %E
BWK6 (
BX4Q SRC 0 11
BXJB STO 0 %E
BY42 SLC 0 11
BYHL )
B^3= ANDN 0 #3777
B^GW SLL 0 3
C22G STO 0 %C
C2G6 #STRING %E
C2^Q (
C3FB LDN 0 #17
C3^2 ANDS 0 %E
C4DL )
C4Y= #STRING %F
C5CW (
C5XG LDCT 0 #100
C6C6 SMO %B
C6WQ ANDX 0 0(%A)
C7BB BNZ 0 %F
C7W2 )
C8*L #NORMAL
C8GS ...)
C8N2 ...[??? GIVFP SECT CENT FGN 18 DOC
C8T= #
C9#W #
C9SG # THIS MACRO ADDS A FREE PAGE [ POINTED TO BY %A ] TO A
C=#6 # FREE PAGE LIST [ POINTED TO BY %B ].
C=RQ # %C,IF GIVEN,IS INCREMENTED BY 1.
C??B #
C?H8 ...#SKI G4
C?M5 ...(
C?R2 #MACRO GIVFP
C#=L #STRING %C
C#Q= (
C*9W LDN 0 1
C*PG ADS 0 %C
CB96 )
CBNQ LDX 0 %B
CC8B MOD STO 0 0,%A
CCN2 LDX 0 %A
CD7L STO 0 %B
CDM= #NORMAL
CDSD ...)
CD^L ...[??? GETFP SECT CENT FGN 18 DOC
CF6W #
CFLG #
CG66 # THIS MACRO REMOVES A PAGE FROM A FREE PAGE LIST
CGKQ # %A WILL CONTAIN A FREE PAGE
CH5B # %B IS THE FREE PAGE LIST
CHK2 # %C,IF GIVEN,IS DECREMENTED BY 1
CJ4L #
CJ#D ...#SKI G4
CJD* ...(
CJJ= #MACRO GETFP
CK3W #STRING %C
CKHG (
CL36 LDN 0 1
CLGQ SBS 0 %C
CM2B )
CMG2 LDX 0 %B
CM^L BNG 0 (GEOERR)
CNF= STO 0 %A
CNYW MOD LDX 0 0,%A
CPDG STO 0 %B
CPY6 #NORMAL
CQ5# ...)
D3YD ...[??? QUOTIME SECT CENT FGN 18 DOC
D48= #
D4MW #
D57G # AND NOW SOME RESTORE TIME MACROS.
D5M6 #
D5WY ...#SKI G4
D62T ...(
D66Q #MACRO QUOTIME
D6LB #SKIP %A
D762 #SKIP
D7KL ! ZERO QUOTIME INVALID
D85= #SKIP %A
D8JW (
D94G #MEND CONSTANT
D9J6 #TRANSFER AQUOTIME
D=3Q %A
D=HB #END
D?32 )
D?GL #NORMAL
D?MS ...)
D?T2 ...[??? PROGAREA SECT CENT FGN 18 DOC
D#2= #
D#FW #
D#PN ...#SKI G4
D#TK ...(
D#XQ ...#MACRO PROGAREA
D#^X ...
D*44 ...#UNSET G4VOPA
D*69 ...#STR %A
D*8B ...! 1ST PARAMETER HAS BEEN IGNORED
D*=H ...#UNSET G4VOPA
D*#N ...#SKIP
D*BT ...(
D*F6 #MEND FIXED
D*YQ #STRING %A
DBDB (
DBY2 #TRANSFER APROGAREA
DCCL %A*1024
DCX= )
DD9M ...#END
DDJ4 ...)
DDWG #MEN CONSTANT
DFB6 #STRING %B
DFTQ (
DG*B #TRANSFER APTURNPAGS
DGT2 %B
DH#L )
DHS= #STRING %C
DJ?W (
DJRG #TRANSFER APTABPAGS
DK?6 %C
DKQQ )
DL=B #END
DLQ2 #NORMAL
DLX8 ...)
DM4B ...[??? SWAPSPAC SECT CENT FGN 18 DOC
DM9L #
DMP= #
DM^4 ...#SKI G4
DN4^ ...(
DN8W #MACRO SWAPSPACE
DNNG #STRING %A
DP86 (
DPMQ #MEND SETLIST
DQ7B #TRANSFER K99SETLIST
DQM2 %A
DR6L #END
DRL= )
DS5W #NORMAL
DS?4 ...)
DSD= ...[??? INTELOCK SECT CENT FGN 18 DOC
DSKG #
DT56 #
DTB2 ...#SKI G4
DTGD ...(
DTLW ...#UNSET G4VOPA
DTR# ...#SKI
DTXQ ...(
DW4B #MAC INTELOCK
DWJ2 #MEN COREALLB
DX3L #TRA INHIBTLOCK
DXH= EXIT 0 0
DY2W #END
DYGG ...#NOR
D^26 ...)
D^FQ ...)
D^^B ...#SKI G4
F2F2 ...(
F2YL ...#UNSET G4VOPA
F3D= ...(
F3XW ...#MAC INTELOCK [O N JOHN .ENT)
F4CG ...#STR %A [IF NO PARAMETER - ERROR
F4X6 ...#SKI
F5BQ ...(
F5WB ...!
F6B2 ...! NO PARAMETER - MACRO ABANDONED
F6TL ...!
F7*= ...#EXIT
F7SW ...)
F8#G ...#MEND COREALLB
F8S6 ...#STR IGNORE,%A
F9?Q ...#SKI
F9RB ...(
F=?2 ...#TRA INHIBTLOCK
F=QL ... EXIT 0 0
F?== ...#END
F?PW ...#EXIT
F?S5 ...)
F?W# ...[
F?YH ...#STR OFF,%A
F#2Q ...#SKI
F#4^ ...(
F#78 ...#TRA INHIBTLOCK
F#9C ... STO 0 GEN6
F#?L ...#TRA INHIBIT2
F#*T ... BZE 0 INHIBIT2 + 2
F#D4 ...#END
F#G? ...#EXIT
F#JG ...)
F#LP ...[
F#P6 ...#TRA INHIBIT2
F*8Q ...#STR EXEC,%A
F*NB ...#SKI
FB82 ...(
FBCS ... BZE 0 (GEN6)
FBML ...#TRA INHIBTLOCK
FBXD ... STO 0 GEN6
FC7= ...#END
FCLW ...#EXIT
FD6G ...)
FDL6 ...#STR GEORGE,%A
FF5Q ...#SKI
FFKB ...(
FFT8 ... BRN INHIBIT2 + 2
FG52 ...#TRA INHIBTLOCK
FG#S ... STO 0 GEN6
FGJL ...#END
FH4= ...#EXIT
FHHW ...)
FJ3G ...#END
FJH6 ...!
FK2Q ...! THE PARAMETER '%A' IS ILLEGAL
FKGB ...! :MACRO ABANDONED :
FL22 ...!
FLFL ...#NOR
FL^= ...)
FMDW ...)
FMYG ...[??? TRYPAGE SECT CENT FGN 20 DOC
FND6 ...[
FNXQ ...[
FPCB ...#UNS ISTDP
FPX2 ...(
FQBL ...#MAC TRYPAGE
FQW= ...#STR %A,1
FR*W ... LDX 1 %A
FRTG ...#STR %C,2
FS*6 ... LDN 2 %C
FSSQ ...#STR %D
FT#B ... ORX 2 GSIGN
FTS2 ... CALL 0 (ATRYPAGE)
FW?L ... BRN %B
FWHD ...#NOR
FWR= ...)
^^^^ ...07034014002400000000