(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