Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PATCH)}} ====== PATCH ====== (George Source) **Macros used:** [[george:macro:BACKTRAN|BACKTRAN]], [[george:macro:BC|BC]], [[george:macro:BITDEFS|BITDEFS]], [[george:macro:BXE|BXE]], [[george:macro:CHTRAN|CHTRAN]], [[george:macro:COMERRX|COMERRX]], [[george:macro:CONVERTX|CONVERTX]], [[george:macro:COOR3|COOR3]], [[george:macro:DATUMADD|DATUMADD]], [[george:macro:DCA|DCA]], [[george:macro:DOWN|DOWN]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:EXMESS|EXMESS]], [[george:macro:EXOFILE|EXOFILE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GPERI|GPERI]], [[george:macro:INFORMX|INFORMX]], [[george:macro:JBSS|JBSS]], [[george:macro:JBUSY|JBUSY]], [[george:macro:LOCKC|LOCKC]], [[george:macro:MFINDEXOF|MFINDEXOF]], [[george:macro:MFINDSU|MFINDSU]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OUTBLOCK|OUTBLOCK]], [[george:macro:OUTPARAM|OUTPARAM]], [[george:macro:PARALYSE|PARALYSE]], [[george:macro:PARANEXT|PARANEXT]], [[george:macro:PARANOT|PARANOT]], [[george:macro:PARANUMB|PARANUMB]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:PATCH|PATCH]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTREPNOT|TESTREPNOT]] <code - PATCH.txt>22FL #SEG PATCH [G.OGSTON 22^= #OPT K0PATCH=0 23DW #LIS K0PATCH 23YG 8HPATCH 24D6 # 24XQ # THIS CHAPTER IMPLEMENTS THE PATCH COMMAND. 25CB # I.E. IT INCORPORATES A PROGRAM FILEEDIT (PFE) 25X2 # IN THE PROGRAM FILE AT RUN TIME. 26BL # ADDITIONAL CODE IS ALSO INCLUDED TO INCORPORATE NON-NEWCHENTED 26W= # AND NON-NEWCHAPED MENDITS THAT HAVE BEEN RESTORED INTO THE GEORGE 27*W # FILE. 27TG # THE PATCH CHANGE RECORD (A 128 WORD BLOCK STARTING AT GFLEND-128 28*6 # IN THE GEORGE FILE) DOES NOT EXIST YET, INSTEAD THE RELEVANT 28SQ # INFORMATION ID WRITTEN TO THE GAP AREA OF PATCH (WORDS 895-1023) 29#B # 29S2 SEGENTRY K1PATCH,QK1PATCH 2=?L # 2=R= # 2?=W # 2?QG # 2#=6 SPACE #20202020 [4 SPACES 2#PQ SMASK #777777 [MASK FOR B6-23 2*9B JPVERSION +18?+11]+0 [GEORGE VERSION NUMBER 2*P2 ...YLS13 #17777 [ MASK FOR BITS 11-13 2B8L PATM +JPATM1 [ERROR MESSAGE IDENTIFIERS 2BN= +JPATM2 2C7W +JPATM3 2CMG +JPATM4 2D76 +JPATM5 2DLQ +JPATM6 2F6B +JPATM7 2FL2 +JPATM8 2G5L +JPATM9 2GK= +JPATM10 2H4W +JPATM11 2HJG +JPATM12 2J46 +JPATM13 2JHQ +JPATM14 2K3B +JPATM15 2KH2 +JPATM16 2L2L +JPATM17 2LG= +JPATM18 2L^W +JPATM19 2MFG +JPATM20 2M^6 +JPATOK [PATCH OK 2NDQ +JPATK [PATCH OK + CHAPTER NAMES 2NNJ ... +JMAXPAR 2NYB # 2PD2 # 2PXL # 2QC= # 2QWW #DEF APFEB4=APFEB3+128 [CHAPTER START ADDRESS BLOCK 2RBG #DEF SAVEX=AWORK1 [PFE EXOFILE NUMBER 2RW6 #DEF PFNEW=AWORK4 [FLAG INDICATING WHETHER PFES OR 2S*Q [NEWSEGS ARE BEING PATCHED 2STB BITDEFS ASWITCH0,APATYN,BAPJTW 2T*2 #DEF NTRY=ACOMMUNE1 [NO. OF TRYS TO FIND ALL CHAPS FREE 2TSL #DEF SAPFE=AWORK2 [POINTER TO EWDAS/APFE 2W#= #DEF PARANUM=AWORK3 [NUMBER OF PARAMETERS IN PATCH 2WRW #DEF PDLP=ACOMMUNE6 [POINTER TO PFE DEVICE LIST 2X3N ...#OPT GFLEND=-1 [KEEPS SIB HAPPY 2X?G # 2XR6 # 2Y=Q # 2YQB SFIND MHUNTW 2,EWDAS,APFE [ROUTINE TO REFIND THE LOCKED BLOCK 2^=2 EXIT 1 0 2^?8 ...# 2^#B ...SETPGLEN [ CALCULATES VALE OF PGFLEN 2^*J ...# AT RUN TIME AS DPATCH RESET DY MENDIT 2^BQ ... LDX 4 FX1 2^CY ... SBN 4 A1 [ START OF PATCH CH BLOCK 2^F6 ... SMO 4 2^G# ... LDX 4 BACK2 [ GET BS ADDS 2^GX ... SMO FX1 2^HG ... ANDX 4 YLS13 [ LEAST SIG 13 BITS 2^JN ... SLL 4 7 [ DPATCH 2^KW ... ADN 4 896 [ DPATCH +1024-128 2^M4 ... EXIT 0 0 2^N= ...# 2^PL # 329= # 32NW # 338G PACOM [ROUTINE TO SEE IF A ONE WORD LINK (X3) REFERS 33N6 [TO A CHAPTER MENTIONED IN THE PFE HEADER 347Q [OR IN THE PATCH CHANGE RECORD 34MB SRL 3 12 [GET CHAPNUM INTO B12-23 3572 BZE 3 PACEN [EXIT IF CHAPNUM ZERO 35LL STO 6 ACOMMUNE4(2) 366= STO 3 ACOMMUNE5(2) 36KW STO 1 ACOMMUNE3(2) 375G STO 5 ACOMMUNE2(2) 37K6 LDX 0 PARANUM(2) 384Q BZE 0 TPCR [ANY PARAMETERS IN PATCH COMMAND 38JB SMO SAPFE(2) 3942 LDX 6 APFEB1+1 [NUMBER OF CHAPTERS IN PFE 39HL SMO SAPFE(2) 3=3= LDX 0 APFEB1+2 3=GW STO 0 5 3?2G SRL 0 18 [SIZE OF EACH ENTRY IN PFE HEADER 3?G6 SMO FX1 3?^Q ANDX 5 SMASK [WORD ADDRESS OF 1ST ENTRY 3#FB SMO SAPFE(2) 3#^2 LDN 1 APFEB1 3*DL ADX 1 5 [ABSOLUTE WORD ADDRESS OF 1ST ENTRY 3*Y= NCHAP LDX 4 0(1) 3BCW ANDN 4 #7777 [CHAPTER NUMBER 3BXG TXU 4 ACOMMUNE5(2) [COMPARE WITH LINKED CHAPTER 3CC6 BCS NOLN 3CWQ SMO SAPFE(2) 3DBB LDX 3 APFEB3 [NUMBER OF BAD CHAPTERS SO FAR 3DW2 BNZ 3 SMTO 3F*L LDN 3 1 [THIS IS THE FIRST 3FT= UPAP SMO SAPFE(2) 3G#W ADS 3 APFEB3 [UPDATE NUMBER OF BAD CHAPTERS 3GSG SMO SAPFE(2) 3H#6 LDX 3 APFEB3 3HRQ SMO SAPFE(2) 3J?B STO 4 APFEB3(3) [STORE LATEST BAD CHAPTER 3JR2 BRN SFIN 3K=L SMTO SMO SAPFE(2) [CHECK IF THIS CHAPTER IS LINKED 3KQ= TXU 4 APFEB3(3) [MORE THAN ONCE 3L9W BCC SFIN 3LPG BCT 3 SMTO 3M96 LDN 3 1 3MNQ BRN UPAP 3N8B NOLN ADX 1 0 3NN2 BCT 6 NCHAP 3P7L SBX 1 0 3PM= SMO SAPFE(2) 3Q6W LDN 6 APFEB2 3QLG TXL 1 6 [HAS PATCH CR BEEN CHECKED 3R66 BCC SFIN 3RKQ # 3S5B TPCR SMO SAPFE(2) [START CHECK OF PATCH CR 3SK2 LDX 6 APFEB2 [NUMBER OF ENTRIES 3T4L BZE 6 SFIN [CHECK IF ANY 3TJ= LDN 0 2 [SIZE OF EACH ENTRY 3W3W SMO SAPFE(2) 3WHG LDN 1 APFEB2+1 [ABSOLUTE WORD ADDRESS OF 1ST ENTRY 3X36 BRN NCHAP 3XGQ SFIN LDX 1 ACOMMUNE3(2) 3Y2B LDX 6 ACOMMUNE4(2) 3YG2 LDX 5 ACOMMUNE2(2) 3Y^L PACEN EXIT 7 0 3^F= # 3^YW # 42DG # 42Y6 #SKI 43CQ ( 43XB TPERI [THIS IS A ROUTINE WHICH CONTROLS THE ISSUING OF 44C2 [A PERI TO THE GEORGE FILE OR PFE EXOFILE. 44WL [NO CHAINING IS SPECIFIED. 45B= [MODE AND DEVICE TRANSFER START ADDRESS ARE 45TW [OBTAINED AT ACOMMUNE1,ACOMMUNE4. 46*G [X5 CONTAINS A POINTER TO THE RELEVANT DEVICE LIST. 46T6 LDX 0 ACOMMUNE1(2) [MODE 47#Q DCA ,DLA,0,MODE [STORED IN DEVICE LIST 47SB LDN 0 128 48#2 DCA ,STO,0,COUNT [LENGTH OF TRANSFER 48RL SMO SAPFE(2) 49?= LDN 0 APFEB3 49QW DCA ,STO,0,CTSA [CORE TRANSFER START ADDRESS 4==G LDX 0 ACOMMUNE4(2) 4=Q6 DCA ,STO,0,DTSA [DEVICE TRANSFER START ADDRESS 4?9Q GPERI 5,2,NC 4?PB XWP LDX 0 CPRW1(2) [WAIT FOR TRANSFER TO 4#92 BNG 0 XWP [BE COMPLETED 4#NL SRL 0 18 4*8= BNZ 0 XERR19 [BRANCH IF TRANSFER NOT OK 4*MW EXIT 7 0 4B7G # 4BM6 ) 4C6Q # 4CLB # 4D62 QK1PATCH [ENTRY POINT 4DKL JBSS XERR1,,BAPJTW 4F5= # 4FJW SETNCORE APFELEN+63,4,EWDAS,APFE [SET UP EWDAS/APFE BLOCK 63 4G4G [WORDS LONGER THAN NORMAL 4GJ6 LOCKC 4,SFIND [LOCK IT 4H3Q MHUNTW 3,EWDAS,APFE [FIND IT 4HHB STO 3 SAPFE(2) [SAVE POINTER TO IT 4J32 # 4JGL # # # # # # # # # # # # # # # # # # 4K2= STOZ PFNEW(2) [ASSUME PFES TO BE PATCHED 4KFW # # # # # # # # # # # # # # # # # # 4K^G # 4LF6 MHUNTW 3,CPB,CALAS [GET NUMBER OF PARAMETERS 4LYQ LDX 0 APARANUM(3) [IN PATCH COMMAND 4MDB STO 0 PARANUM(2) [SAVE IT 4MY2 BZE 0 NPR1 [NO PARAMETERS 4NCL # 4NX= # # # # # # # # # # # # # # # # # # 4PBW PARAPASS 4PWG MHUNT 3,CPB,CUNI [GET PARAMETER 4QB6 LDX 0 ANUM(3) 4QTQ SRL 0 12 [CHECK FOR SIMPLE 4R*B BZE 0 TF1 [PARAMETER TYPE 4RT2 # # # # # # # # # # # # # # # # # # 4S#L #SKI 4SS= ( 4T?W LDX 0 PARANUM(2) [THERE SHOULD ONLY 4TRG SBN 0 1 [BE ONE PARAMETER 4W?6 BNZ 0 XERR2 [IN THE COMMAND 4WQQ LDN 4 1 4X=B PARALYSE ,,4 [STRIP OFF OUTER BRACKETS 4XG8 ... TESTREP2 TOOMANY,XERR23 4XQ2 TESTREP UNPAIR,XERR3 [TEST FOR UNPAIRED BRACKETS 4Y9L PARALYSE ,,4 [SPLIT PARAMETER 4YFD ... TESTREP2 TOOMANY,XERR23 4YP= TESTREP UNPAIR,XERR3 [TEST FOR UNPAIRED BRACKETS 4^8W # 4^NG LDN 5 1 5286 PARANUMB 7,5 [GET NUMBER OF PARAMETERS 52MQ # RESULTING FROM SPLIT 537B PARANOT 1 [GET 1ST PARAMETER INTO CPB/CUNI 53M2 MHUNT 3,CPB,CUNI 546L LDX 0 ANUM(3) [TEST PARAMETER TYPE 54L= BZE 0 XERR3 [...NULL 555W BNG 0 XERR3 [...NON-EXISTENT 55KG SRL 0 12 5656 BNZ 0 XERR3 [...WRONG TYPE 56JQ # 574B LDCH 0 APARA(3) [...SIMPLE I.E. OK 57J2 SBN 0 #40 [CHECK 1ST CHARACTER ALPHABETIC 583L BNG 0 XERR3 [...OF FILENAME 58H= SBN 0 #32 592W BPZ 0 XERR3 59GG # 5=26 SETNCORE GEXDLEN,5,EWDAS,GEXD 5=FQ SETNCORE FDCELLS-A1,1,EWDAS,EXOF 5=^B MHUNT 3,CPB,CUNI 5?F2 LDN 0 BOPEN+BANY 5?YL STO 0 EXMARK(1) [SET OPEN MARKERS 5#D= STOZ FIP+4(1) 5#XW SMO FX1 5*CG LDX 6 SPACE [FILL 5*X6 STO 6 FIP(1) [FILENAME 5BBQ STO 6 FIP+1(1) [WITH 5BWB STO 6 FIP+2(1) [SPACES 5CB2 LDN 6 FIP(1) 5CTL LDX 4 ANUM(3) 5D*= ANDN 4 #7777 5DSW ADN 4 3 5F#G SRL 4 2 [PARAMETER LENGTH (WORDS) 5FS6 LDN 5 APARA(3) 5G?Q SMO 4 5GRB MOVE 5 0 [MOVE IN FILE NAME 5H?2 SBN 7 1 5HQL BZE 7 XEXOP [NO SERIAL NUMBER-BRANCH TO EXOPEN 5J== LDN 4 2 5JPW PARANEXT ,,4 [EXTRACT SERIAL NUMBER 5J^N ... TESTREP2 TOOMANY,XERR23 5K9G MHUNT 3,CPB,CUNI 5KP6 LDX 0 ANUM(3) [TEST PARAMETER TYPE 5L8Q BZE 0 XERR3 [...NULL 5LNB BNG 0 XERR3 [...NON-EXISTENT 5M82 ANDN 0 #7777 [GET NO. CHARACTERS IN SERIAL NUMBER 5MML STO 0 7 5N7= SBN 0 8 5NLW BPZ 0 XERR3 [TOO MANY CHARACTERS 5P6G # THE FOLLOWING ASSEMBLES THE SERIAL NUMBER IN BINARY FORM 5PL6 LDCH 0 APARA(3) 5Q5Q SBN 0 #32 5QKB BNZ 0 XERR3 [BRANCH IF 1ST CHARACTER NOT * 5R52 LDN 4 8 [FIND NUMBER OF EMPTY 5RJL SBX 4 7 [SPACES IN SERIAL NUMBER 5S4= LDX 5 APARA(3) 5SHW LDX 6 APARA+1(3) 5T3G SAG SRL 56 6 [MOVE SERIAL NUMBER TO 5TH6 BCT 4 SAG [RHS OF X5,X6 5W2Q STOZ ACOMMUNE1(2) [ZERO SERIAL NUMBER 5WGB SBN 7 1 [7 NOW HOLDS NUMBER OF NUMERICS 5X22 STOZ 3 5XFL SACC LDCH 4 6 [GET RIGHT MOST CHARACTER 5X^= SLL 4 0(3) [POSITION IT 5YDW ADS 4 ACOMMUNE1(2) [ADD TO SERIAL NUMBER 5YYG SRL 4 0(3) 5^D6 SBN 4 10 [CHECK THAT IT IS NUMERIC 5^XQ BPZ 4 XERR3 62CB ADN 3 3 62X2 SRL 56 6 [MOVE SERIAL NUMBER TO RIGHT 63BL BCT 7 SACC 63W= # 64*W MHUNTW 3,EWDAS,EXOF 64TG LDX 0 ACOMMUNE1(2) 65*6 STO 0 ASUSN(3) 65SQ LDN 0 BSERL+BSUPP [SET SERIAL NO. AND SUPPRESSION 66#B ORS 0 EXMARK(3) [...MARKERS IN EXMARK 66S2 # 67?L XEXOP DOWN EXOPEN,1 [OPEN PFE EXOFILE 67R= TESTREPNOT OK,XEX 68=W MHUNTW 3,EWDAS,EXOF [START CHECKS ON FILE 68QG LDEX 0 FIP+5(3) 69=6 SBN 0 1 69PQ BNZ 0 XERR4 [MUST ONLY BE ONE FILE AREA 6=9B LDX 0 FDCELLS(3) 6=P2 TXU 0 ASUSN(3) 6?8L BCS XERR5 [FILE AREA MUST BE ON SAME SU AS FIC 6?N= LDCT 0 #100 6#7W ANDX 0 FIP+5(3) 6#MG BNZ 0 XERR6 [SYSTEM FILE BIT SET 6*76 LDX 0 FIP+8(3) 6*LQ ANDN 0 #77 [BUCKET SIZE 6B6B SBN 0 1 6BL2 BNZ 0 XERR7 [...NOT ONE BLOCK 6C5L LDN 1 BCCB [CHECK IF THIS FILE SPECIFIED BEFORE 6CK= T1 LDX 1 BPTR(1) 6D4W TXU 1 CXCC 6DJG BCC T2 [END OF CHAIN 6F46 LDX 0 BACK2(1) 6FHQ BZE 0 T2 [NO MORE EXOFS 6G3B LDX 0 ASUSN(1) 6GH2 TXU 0 ASUSN(3) 6H2L BCS T1 [JUMP IF SERIAL NUMBERS DIFFERENT 6HG= LDX 0 HOME(1) 6H^W TXU 0 HOME(3) 6JFG BCS T1 [JUMP IF HOMES DIFFERENT 6J^6 BRN XFND [EXOFILE ALREADY SPECIFIED 6KDQ T2 LDN 0 1 [EXOFILE SPECIFIED FOR FIRST TIME 6KYB STO 0 COPEN(3) [SET NUMBER OF TIMES OPEN 6LD2 EXOFILE 3 [CHAIN INTO CCB CHAIN 6LXL BRN SEN 6MC= XFND LDX 0 FIP+5(1) 6MWW SRL 0 22 [GET INTEGRITY CODE 6NBG SBN 0 1 6NW6 BZE 0 XERR8 [FILE MAY ONLY BE OPEN ONCE 6P*Q LDX 0 EXMARK(1) 6PTB BNG 0 XERR9 [FILE ALREADY OPEN FOR WRITING 6Q*2 LDN 0 1 6QSL ADS 0 COPEN(1) [UPDATE NUMBER OF TIMES OPENED 6R#= STO 1 3 6RRW SEN LDX 0 BACK2(3) 6S?G STO 0 SAVEX(2) [SAVE EXOFILE NUMBER 6SR6 # 6T=Q # GET READY FOR TRANSFER OF PFE HEADER 6TQB MFINDEXOF 3,SAVEX(2) 6W=2 MHUNTW 2,EWDAS,GEXD 6WPL CONVERTX FDCELLS+1(3),FDCELLS+2(3),ETYPE(2) 6X9= STO 0 7 [SAVE HARDWARE ADDRESS 6XNW STOZ 6 [MODE 6Y8G LDN 5 128 [LENGTH 6YN6 SMO SAPFE(2) 6^7Q LDN 4 APFEB1 6^MB MHUNT 3,EWDAS,GEXD 7272 BACKTRAN EX6,BSET+BONL,EX5,,EBSUN(3),EX7,EX4 72LL CHTRAN ETYPE(3),XERR14,XERR14 [CHECK TRANSFER OK 736= # 73KW # 745G # START CHECKS ON PFE HEADER 74K6 SMO SAPFE(2) 754Q LDX 0 APFEB1 [GET PFE VERSION NUMBER 75JB TXU 0 JPVERSION [COMPARE WITH GEORGE VERSION NUMBER 7642 BCS XERR10 76HL BRN SMTF1 773= ) 77GW TF1 782G LDN 0 1 78G6 STO 0 PFNEW(2) [SET PATCH TYPE FLAG 78^Q DOWN PATINF,1 [SET UP PFE HEADER INFO ETC. 79FB LDX 0 ACOMMUNE1(2) [CHECK FOR ERRORS 79^2 BZE 0 SMTF1 [BRANCH IF NO ERROR 7=DL SBN 0 3 7=Y= BZE 0 XERR3 7?CW SBN 0 14 7?XG BZE 0 XERR17 7#C6 SBN 0 1 7#WQ BZE 0 XERR18 7*BB BRN XERR20 7*W2 # 7B*L # CHECKS ARE NOW PERFORMED ON THE PFE HEADER TO 7BT= # ENSURE THAT NO LONG OVERLAYS ARE PRESENT 7C#W # 7CSG SMTF1 7D#6 SMO SAPFE(2) 7DRQ LDX 7 APFEB1+1 [NUMBER OF OVERLAYS BEING EDITED 7F?B SMO SAPFE(2) 7FR2 LDX 0 APFEB1+2 7G=L STO 0 1 7GQ= SRL 0 18 7H9W STO 0 6 [SIZE OF EACH ENTRY 7HPG SMO FX1 7J96 ANDX 1 SMASK [WORD ADDRESS OF 1ST ENTRY 7JNQ SMO SAPFE(2) 7K8B LDN 3 APFEB1 7KN2 ADX 3 1 [ABSOLUTE WORD ADDRESS OF 1ST ENTRY 7LM= SCPFE LDX 0 0(3) [LOAD PFE ENTRY WORD 7M6W BNG 0 XERR11 [TEST IF LONG OVERLAY 7MLG ADX 3 6 [NEXT ENTRY 7N66 BCT 7 SCPFE 7NKQ # 7P5B # THE HARDWARE ADDRESS OF THE START OF 7PK2 # THE PATCH CHANGE RECORD IS FOUND 7Q4L # 7QJ= ...NPR1 CALL 0 SETPGLEN 7S36 LDN 5 128 [LENGTH OF TRANSFER 7SGQ DATUMADD 4,BINDEX,5 [GET HARDWARE ADDRESS 7T2B BZE 2 SDOK 7TG2 BZE 1 XERR12 [WORD ADDRESS OUTSIDE FILE 7T^L BRN XERR12 [TRANSFER TOO LONG 7WF= # 7WYW # 7XDG # 7XY6 # PREPARE TO READ PATCH CR 7YCQ SDOK STOZ 6 [MODE 7YXB LDN 5 128 [LENGTH 7^C2 LDX 2 FX2 7^WL SMO SAPFE(2) 82B= LDN 4 APFEB2 [CORE START ADDRESS 82TW LDN 3 1 [BACKING STORE UNIT NUMBER 83*G BACKTRAN EX6,BSET+BONL,EX5,,3,1,EX4 83T6 SMO BBAC [GET DEVICE 84#Q LDX 3 AWORK1 [SUBTYPE 84SB SRL 3 12 [FROM BSA 85#2 CHTRAN 3,XERR15,XERR15 [CHECK TRANSFER OK 85RL # 86?= # 86QW LDX 0 PARANUM(2) [CHECK IF NO PARAMETERS 87=G BNZ 0 NPR6 [IN COMMAND 87Q6 SMO SAPFE(2) [AND IF NO PREVIOUS PATCH 889Q LDX 0 APFEB2 [IS CURRENTLY 88PB BZE 0 NPR9 [IN OPERATION 8992 BRN TF3 89NL NPR6 8=8= # # # # # # # # # # # # # # 8=MW LDX 0 PFNEW(2) 8?7G BNZ 0 TF3 8?M6 # # # # # # # # # # # # # # # 8#6Q MFINDEXOF 1,SAVEX(2) [FIND PFE EWDAS/EXOF 8#LB MFINDSU 3,ASUSN(1) [FIND PFE EWDAS/ASTUC 8*62 LDX 0 HUNIT(3) 8*KL STO 0 PDLP(2) [SAVE PFE DEVICE LIST POINTER 8B5= TF3 STOZ NTRY(2) [ZERO NUMBER OF CHECKS 8BJW RETRY LDX 0 PARANUM(2) [CHECK IF 8C4G BZE 0 SFREE [NO PARAMETERS IN PATCH COMMAND 8CJ6 # # # # # # # # # # # # # # 8D3Q LDX 0 PFNEW(2) 8DHB BNZ 0 SFREE 8F32 # # # # # # # # # # # # # # 8FGL JBUSY PDLP(2),WAIT [TEST IF PFE EXOFILE DEVICE BUSY 8G2= LDX 3 BBAC 8GFW JBUSY CPPTR(3),WAIT [TEST IF GEORGE DEVICE BUSY 8G^G BRN SFREE 8HF6 ...WAIT COOR3 #41 8HYQ BRN RETRY [TRY AGAIN 8JDB # BOTH DEVICES ARE FREE 8JY2 # THE FOLLOWING IS A SCAN THROUGH ALL THE ACTIVITIES 8KCL # AND THEIR ASSOCIATED BLINK BLOCKS TO CHECK IF ANY 8KX= # PFE OR PATCH CR CHAPTERS ARE CURRENTLY LINKED 8LBW # 8LWG SFREE SMO SAPFE(2) 8MB6 STOZ APFEB3 [ZERO NUMBER OF PFE,PCR CHAPTERS LINK 8MTQ STO 2 1 [START SCAN THROUGH ACTIVITIES 8N*B NXAC LDX 1 ACTRING(1) 8NT2 SBN 1 ACTRING [FPTR OF NEXT ACTIVITY 8P#L TXU 1 2 [CHECK IF X1 POINTS 8PS= BCC SEAC [TO THE CURRENT ACTIVITY 8Q?W LDN 0 BSA [IGNORE CHECKS 8QRG SLL 0 12 [IF THIS 8R?6 TXU 0 ATYPE(1) [ACTIVITY 8RQQ BCC NXAC [IS A BSA 8S=B LDX 3 ALINK1(1) [GET ALINK1 OF NEXT ACTIVITY 8SQ2 BNZ 3 TLINK 8T9L TXU 3 BSEN1 [CHECK IF LINK 8TP= BCC PLK1 [IS IN ACOMMUNE9 8W8W TXU 3 BSEN2 [FOLLOWING 8WNG BCS PLK2 [BSQ ACTION 8X86 PLK1 LDX 3 ACOMMUNE9(1) 8XMQ TLINK CALL 7 PACOM [SEE IF CHAPTER IS LINKED 8Y7B PLK2 LDN 0 ALINKRING(1) 8YM2 SBX 0 ALINKRING+1(1) 8^6L BZE 0 NXAC [ANY LINK BLOCKS? 8^L= SMO ALINKRING(1) [...YES 925W LDN 6 ALOGLEN 92KG SBN 6 BLINKRING 9356 SMO 6 93JQ LDX 6 0 [LOGICAL LENGTH OF BLOCK 944B SBN 6 2 94J2 BZE 6 NXAC [BRANCH IF NO CHAPTERS IN BLINK 953L LDN 7 ALINK 95H= DVS 5 7 [NUMBER OF LINK AREAS 962W SMO ALINKRING(1) 96GG LDN 5 7 [START SCAN OF LINK AREAS 9726 NBLK SMO 5 97FQ LDX 3 0 97^B CALL 7 PACOM [SEE IF CHAPTER IS LINKED 98F2 ADN 5 ALINK 98YL BCT 6 NBLK 99D= BRN NXAC 99XW # 9=CG # 9=X6 # 9?BQ SEAC SMO SAPFE(2) 9?WB LDX 0 APFEB3 9#B2 BZE 0 NOWT [ANY CHAPTERS LINKED 9#TL COOR3 #62 [WAIT 9**= LDX 0 NTRY(2) [UPDATE NUMBER OF TIMES THROUGH HERE 9*SW ADN 0 1 9B#G STO 0 NTRY(2) 9BS6 SBN 0 5 9C?Q BNG 0 RETRY [IF NOT >4 TRY AGAIN 9CRB BRN XERR13 [OTHERWISE ERROR 9D?2 # 9DQL # 9F== # 9FPW # IT HAS BEEN ESTABLISHED THAT NO PFE OR PATCH CR CHAPTERS 9G9G # ARE LINKED. 9GP6 # THE FOLLOWING IS CONCERNED WITH FREECOREING ANY PFE OR 9H8Q # PATCH CR CHAPTERS THAT ARE IN CORE 9HNB NOWT LDX 0 PARANUM(2) [CHECK IF NO 9J82 BZE 0 NPR3 [PARAMETERS IN COMMAND 9JML SMO SAPFE(2) [SEE IF ANY PFE CHAPTERS IN CORE 9K7= LDX 6 APFEB1+1 [NUMBER OF CHAPTERS IN PFE 9KLW SMO SAPFE(2) 9L6G LDX 0 APFEB1+2 9LL6 STO 0 5 9M5Q SRL 5 18 [SIZE OF EACH ENTRY IN PFE HEADER 9MKB SMO FX1 9N52 ANDX 0 SMASK [WORD ADDRESS OF 1ST ENTRY 9NJL SMO SAPFE(2) 9P4= LDN 4 APFEB1 9PHW ADX 4 0 [ABSOLUTE WORD ADDRESS OF 1ST ENTRY 9Q3G NPCP SMO 4 9QH6 LDX 3 0 9R2Q ANDN 3 #7777 [CHAPTER NUMBER 9RGB LDXC 1 KTAB(3) [CHAPTAB ENTRY 9S22 BCC NOIC [BRANCH IF CHAPTER NOT IN CORE 9SFL LDX 7 BACK2(1) [GET ONE WORD LINK FROM CHAPTER BLOCK 9S^= STO 7 KTAB(3) [STORE IT IN CHAPTAB 9TDW NGX 3 ASIZE(1) 9TYG ... BXE 1 GFIXCHAP,NOFRE [ CANT FREE SO SET BACK2=0 9WXQ ADS 3 ACHAP [SUBTRACT CHAPTER BLOCK SIZE 9XCB FREECORE 1 [FREECORE THIS CHAPTER 9XM8 ... BRN NOIC 9XX2 NOFRE STOZ BACK2(1) 9Y48 ... STOZ 9(1) [ ZEROISE CH NAME 9Y9B ... STOZ 10(1) 9Y?6 ... LDN 7 1 9Y#W ... STO 7 ALOGLEN(1) 9YBL NOIC ADX 4 5 9YW= BCT 6 NPCP 9^*W SBX 4 5 9^TG SMO SAPFE(2) =2*6 LDN 6 APFEB2 =2SQ TXL 4 6 =3#B BCC PCRD [PATCH CR CHECKED YET? =3S2 NPR3 SMO SAPFE(2) [...NO =4?L LDX 6 APFEB2 [NUMBER OF ENTRIES IN PATCH CR =4R= BZE 6 PNEX =5=W LDN 5 2 [SIZE OF EACH ENTRY =5QG SMO SAPFE(2) =6=6 LDN 4 APFEB2+1 [ABSOLUTE WORD ADDRESS OF 1ST ENTRY =6PQ BRN NPCP =79B # =7P2 # =88L # THE ORIGINAL CHAPTER TABLE ENTRIES ARE NOW RESTORED =8N= # FROM THE PATCH CHANGE RECORD =97W # =9MG PCRD SMO SAPFE(2) ==76 LDX 6 APFEB2 [NUMBER OF ENTRIES IN PATCH CR ==LQ BZE 6 PNEX =?6B SMO SAPFE(2) =?L2 LDN 1 APFEB2+1 [ABSOLUTE WORD ADDRESS OF 1ST ENTRY =#5L PRSL LDX 3 0(1) [CHAPTER NUMBER =#K= LDX 5 1(1) [ORIGINAL CHAPTAB ENTRY =*4W STO 5 KTAB(3) [IS RESTORED =*JG ADN 1 2 =B46 BCT 6 PRSL =BHQ # =C3B # =CH2 # =D2L PNEX LDX 0 PARANUM(2) =DG= BZE 0 NPR4 [BRANCH IF NO PARAMETERS =D^W SMO SAPFE(2) [NUMBER OF CHAPTERS =FFG LDX 6 APFEB1+1 [BEING PFE'D ARE =F^6 SMO SAPFE(2) [STORED IN 1ST WORD =GDQ STO 6 APFEB2 [OF PATCH CR =GYB SMO SAPFE(2) =HD2 LDX 0 APFEB1+2 =HXL STO 0 5 =JC= SRL 0 18 [SIZE OF EACH ENTRY IN PFE HEADER =JWW SMO FX1 =KBG ANDX 5 SMASK =KW6 SMO SAPFE(2) =L*Q LDN 7 APFEB1 =LTB ADX 7 5 [ABSOLUTE WORD ADDRESS OF 1ST ENTRY =M*2 # # # # # # # # # # # # # # =MSL LDX 1 PFNEW(2) =N#= BZE 1 PFJ1 =NRW SMO SAPFE(2) =P?G LDN 1 APFEB4-1 =PR6 STO 1 ACOMMUNE3(2) =Q=Q STOZ 1 =QQB BRN NCHP =R=2 PFJ1 =RPL # # # # # # # # # # # # # # =S9= LDX 1 GFLEND [STORE END OF =SNW SRL 1 7 [PROGRAM FILE AS =T8G STO 1 ACOMMUNE3(2) [(GFLEND)/128 =TN6 STOZ 1 =W7Q NCHP SMO 7 =WMB LDX 3 0 [NEXT PFE ENTRY =X72 STO 3 5 =XLL ANDN 3 #7777 [CHAPTER NUMBER =Y6= ADN 1 1 =YKW SMO SAPFE(2) =^5G STO 3 APFEB2(1) [SAVE CHAPTER NUMBER IN PATCH CR =^K6 ADN 1 1 ?24Q LDX 4 KTAB(3) [CHAPTAB ENTRY ?2JB SMO SAPFE(2) ?342 STO 4 APFEB2(1) [SAVE IT IN PATCH CR ?3HL # # # # # # # # # # # # # # ?43= LDX 4 PFNEW(2) ?4GW BZE 4 PFJ2 ?52G LDN 4 1 ?5G6 ADS 4 ACOMMUNE3(2) ?5^Q SMO ACOMMUNE3(2) ?6FB LDX 4 0 ?6^2 SRL 4 7 ?7DL BRN PFJ3 ?7Y= PFJ2 ?8CW LDX 4 ACOMMUNE3(2) ?8XG PFJ3 STO 4 KTAB(3) [STORE CHAP START ADDR IN CHAPTAB ?9C6 SRL 5 13 [PFE CHAPTER LENGTH ?9WQ STO 5 ACOMMUNE5(2) ?=BB # # # # # # # # # # # # # # ?=W2 LDX 4 PFNEW(2) ??*L BNZ 4 PFJ4 ??T= # # # # # # # # # # # # # # # ?##W ANDN 5 #177 [SEE IF LENGTH IS A MULTIPLE OF 128 ?#SG LDN 4 1 ?*#6 BNZ 5 PMUL ?*RQ STOZ 4 ?B?B PMUL LDX 5 ACOMMUNE5(2) ?BR2 SRL 5 7 ?C=L ADX 5 4 [NUMBER OF BLOCKS IN CHAPTER ?CQ= ADS 5 ACOMMUNE3(2) [NEW END OF PROGRAM FLE ?D9W PFJ4 LDX 4 ACOMMUNE5(2) ?DPG ADN 4 3 ?F96 SRL 4 2 [DIVIDE CHAPTER LENGTH BY 4 ?FNQ SMO 4 ?G8B LDCT 5 0 ?GN2 BNG 5 THOU [IF -VE THEN LENGTH=1024 ?H7L ORS 5 KTAB(3) [MERGE LENGTH INTO CHAPTAB ENTRY ?HM= THOU ADX 7 0 ?J6W BCT 6 NCHP ?JLG # # # # # # # # # # # # # # # # # # ?K66 LDX 0 PFNEW(2) [SKIP COPY OF PFE TO GEORGE FILE ?KKQ BNZ 0 NPR4 [IF NEWSEGS ARE BEING PATCHED ?L5B # # # # # # # # # # # # # # # # # # ?LK2 # ?M4L #SKI ?MJ= ( ?N3W # ?NHG # HERE BEGINS THE COPYING OF THE PFE ONTO THE END ?P36 # OF THE GEORGE FILE - NO CHAINING IS SPECIFIED ?PGQ # ?Q2B # ?QG2 STOZ 6 [CHAPTER COUNTER ?Q^L MFINDEXOF 3,SAVEX(2) [FIND PFE EXOFILE ?RF= LDX 0 FDCELLS+1(1) ?RYW STO 0 ACOMMUNE5(2) [STARTING CYLINDER ?SDG STOZ ACOMMUNE2(2) [BLOCK COUNT WITHIN CYLINDER ?SY6 MHUNTW 1,EWDAS,GEXD ?TCQ LDX 0 ETYPE(1) ?TXB STO 0 ACOMMUNE9(2) [DEVICE TYPE/SUBTYPE ?WC2 LDX 4 GFLEND [INTIALIZE GEORGE FILE POINTER ?WWL STOZ ACOMMUNE7(2) [ZERO NO. OF WORDS XFERRED FOR CHAP ?XB= NXCP SMO SAPFE(2) [NEXT CHAPTER ?XTW LDX 0 APFEB1+2 ?Y*G STO 0 5 ?YT6 SRL 0 18 [ENTRY SIZE ?^#Q ANDX 5 SMASK [WORD ADDRESS OF 1ST ENTRY ?^SB MPR 0 6 #2#2 ADX 5 0 [WORD ADDRESS OF THIS ENTRY #2RL STO 5 1 #3?= NXBL LDX 5 ACOMMUNE2(2) #3QW ADX 5 FDCELLS+2(3) #4=G CONVERTX ACOMMUNE5(2),5,ACOMMUNE9(2) #4Q6 LDX 2 FX2 #59Q STO 0 ACOMMUNE4(2) [DEVICE TRANSFER START ADDRESS #5PB STOZ ACOMMUNE1(2) [TRANSFER MODE (READ) #692 LDX 5 CPPTR(2) [DEVICE LIST POINTER #6NL CALL 7 TPERI [READ BLOCK PERI FROM PFE FILE #78= LDX 0 ACOMMUNE2(2) #7MW ADN 0 1 [UPDATE BLOCK COUNT #87G STO 0 ACOMMUNE2(2) #8M6 TXU 0 FDCELLS+4(3) [TEST IF ALL DONE IN THIS CYLINDER #96Q BCS SICL #9LB LDN 0 1 #=62 ADS 0 ACOMMUNE5(2) [UPDATE CYLINDER COUNT #=KL STOZ ACOMMUNE2(2) [RESET BLOCK COUNT #?5= SICL LDN 0 128 #?JW ADS 0 ACOMMUNE7(2) [UPDATE NO. OF WORDS TRANSFERRED ##4G SMO SAPFE(2) ##J6 LDX 0 APFEB1(1) [ENTRY FOR THIS CHAPTER #*3Q SRL 0 13 [CHAPTER LENGTH #*HB TXL 0 ACOMMUNE7(2) [TEST IF ALL CHAPTER READ #B32 BCS SSTC #BGL STOZ ACOMMUNE7(2) [RESET NO. OF WORDS XFERRED #C2= # #CFW # #C^G # UPDATE CHECKSUM IF NECESSARY #DF6 #SKI 76?-2 #DYQ #SKI #FDB ( #FY2 ANDN 0 #177 [FIND LAST WORD IN CHAPTER #GCL BZE 0 SFUL [IF ZERO CHECKSUM IS WORD 128 #GX= STO 0 1 #HBW BRN UPD #HWG SFUL LDN 1 128 #JB6 UPD LDX 0 GFLEND #JTQ SMO SAPFE(2) #K*B ADS 0 APFEB3-1(1) [ADD GFLEND TO CHECKSUM #KT2 ) #L#L # #LS= # #M?W # #MRG SSTC LDN 5 128 #N?6 DATUMADD 4,BINDEX,5 [DATUMISE NEXT LOC ON GEORGE FILE #NQQ ADN 4 128 [UPDATE GEORGE FILE POINTER #P=B LDX 2 FX2 #PQ2 STO 1 ACOMMUNE4(2) [DEVICE TRANSFER START ADDRESS #Q9L LDN 0 1 #QP= STO 0 ACOMMUNE1(2) [TRANSFER MODE (WRITE) #R8W SMO BBAC #RNG LDX 5 CPPTR #S86 CALL 7 TPERI [WRITE BLOCK TO GEORGE FILE #SMQ LDX 0 ACOMMUNE7(2) #T7B BNZ 0 NXBL #TM2 ADN 6 1 #W6L SMO SAPFE(2) #WL= TXU 6 APFEB1+1 #X5W BCS NXCP #XKG ) #Y56 # #YJQ # #^4B # #^J2 # THE PFE HAS NOW BEEN APPENDED TO THE GEORGE FILE *23L # COORDINATION IS PERMITTED ONCE MORE *2H= LDX 0 COPEN(3) [DECREMENT NUMBER OF TIMES *32W SBN 0 1 [PFE EXOFILE IS OPEN *3GG STO 0 COPEN(3) *426 BNZ 0 NPR4 *4FQ FREECORE 3 [FREECORE THE EXOF *4^B # *5F2 NPR4 *5YL #SKI 76? [CHECK IF PATCH IS CHECKSUMMED *6D= ( [UPDATE PATCH CHECKSUM *6XW LDX 6 FX1 *7CG ADN 6 895 [START OF PATCH CHANGE RECORD *7X6 SUM 5 127 [SUM OF 1ST 127 WORDS OF OLD PCR *8BQ SMO SAPFE(2) *8WB ADS 5 APFEB2+127 [SUBTRACT OLD PCR FROM CHECKSUM *9B2 SMO SAPFE(2) *9TL LDN 6 APFEB2 *=*= SUM 5 127 [SUM OF 1ST 127 WORDS OF NEW PCR *=SW NGX 6 5 *?#G SMO SAPFE(2) *?S6 ADS 6 APFEB2+127 [ADD IN NEW CONTRIBUTION TO CHECKSUM *#?Q ) *#RB ... CALL 0 SETPGLEN [ GET BS ADD OF PCR IN X4 **QL LDX 0 PARANUM(2) [SET NUMBER OF ENTRIES *B== BNZ 0 NPR5 [IN PATCH CR TO ZERO *BPW SMO SAPFE(2) [IF NO PARAMETERS *C9G STOZ APFEB2 [IN PATCH COMMAND *CP6 ...NPR5 *D8Q LDN 5 128 [LENGTH OF PATCH CR *DNB DATUMADD 4,BINDEX,5 [DATUMISE WORD ADDRESS *F82 LDN 6 1 [MODE (WRITE) *FML LDN 5 128 [LENGTH *G7= LDX 2 FX2 *GLW SMO SAPFE(2) *H6G LDN 4 APFEB2 [CORE TRANSFER START ADDRESS *HL6 LDN 3 1 [BACKING STORE UNIT NUMBER *J5Q BACKTRAN EX6,BSET+BONL,EX5,,3,1,EX4 *JKB CHTRAN ETYPE(3),XERR16,XERR16 *K52 # *KJL NPR9 STOZ 5 *L4= LDN 7 21 [PATCH OK MESSAGE *LHW LDX 0 PARANUM(2) *M3G BZE 0 NPR7 *MH6 # COPY CHAPTER NUMBERS INTO APFEB3+1 ONWARDS SO THAT *N2Q # PATINF CAN ASSEMBLE THE CHAPTER NAMES INTO APFEB2 ONWARDS *NGB # *P22 LDX 3 SAPFE(2) *PFL LDX 4 APFEB2(3) [NUMBER OF PATCHED CHAPTERS *P^= STO 4 APFEB3(3) *QDW LDN 6 APFEB2-1(3) *QYG NCPY ADN 3 1 *RD6 ADN 6 2 *RXQ SMO 6 *SCB LDX 0 0 [CHAPTER NUMBER IS *SX2 STO 0 APFEB3(3) [STORED IN APFEB3 AREA *TBL BCT 4 NCPY *TW= BRN XERR13B *W*W NPR8 LDN 7 22 [PATCH + CHAPTER NAMES MESSAGE *WTG NPR7 LDX 1 FX1 *X*6 SMO 7 *XSQ LDX 7 PATM-1(1) [MESSAGE IDENTIFIER *Y#B LDN 3 1 [ROUTING PARAMETER *YS2 INFORMX 3,7,1 [PATCH COMPLETED OK *^?L BRN XEND *^R= # B2=W # B2QG XEX [EXOFILE OPENING FAILS B3=6 TESTREP EXFAIL,XEXF B3PQ GEOERR 1,WRNGREP [WRONG REPLY B49B XEXF EXMESS [OUTPUT ERRORS FROM EXOPEN B4P2 BRN XEND B58L XERR1 LDN 5 1 B5N= BRN XEN4 B67W XERR2 LDN 5 2 B6MG BRN XERRPR B776 XERR3 LDN 5 3 B7LQ BRN XERRPR B86B XERR4 LDN 5 4 B8L2 BRN XERRPR B95L XERR5 LDN 5 5 B9K= BRN XERRPR B=4W XERR6 LDN 5 6 B=JG BRN XERRPR B?46 XERR7 LDN 5 7 B?HQ BRN XERRPR B#3B XERR8 LDN 5 8 B#H2 BRN XERRPR B*2L XERR9 LDN 5 9 B*G= BRN XERRPR B*^W XERR10 BBFG LDN 5 10 BB^6 BRN XERRPR BCDQ XERR11 BCYB LDN 5 11 BDD2 BRN XERRPR BDXL XERR12 BFC= LDN 5 12 BFWW BRN XERRPR BGBG XERR13 BGW6 LDN 5 13 BH*Q XERR13B BHTB DOWN PATINF,2 [SET UP BAD CHAP BLOCK IN EW APFE BJ*2 XERR13A BJSL SMO SAPFE(2) BK#= LDX 6 APFEB2 [NO OF WORDS IN BAD CHAPTER BKRW STO 6 7 BL?G SLL 7 2 [NO OF CHARS IN BAD CHAPTERS BLR6 ADN 6 1 [LENGTH OF PARAMETER BLOCK BM=Q OUTBLOCK 6 [SET IT UP BMQB OUTPARAM 7,APFEB2+1,EWDAS,APFE [MOVE IN PARAMETER BN=2 BZE 5 NPR8 BNPL BRN XERRPR BP9= XERR14 BPNW LDN 5 14 BQ8G BRN XERRPR BQN6 XERR15 BR7Q LDN 5 15 BRMB BRN XERRPR BS72 XERR16 BSLL LDN 5 16 BT6= BRN XERRPR BTKW XERR17 BW5G LDN 5 17 BWK6 BRN XERRPR BX4Q XERR18 BXJB LDN 5 18 BY42 BRN XERR13A BYHL XERR19 B^3= LDN 5 19 B^GW BRN XERRPR C22G XERR20 C2G6 LDN 5 20 C2^Q BRN XERRPR C35M ...XERR23 C39J ... LDN 5 23 C3*F ... BRN XERRPR C3FB XERRPR C3^2 XEND BC ,BAPJTW C4DL BZE 5 XEN3 C4Y= XEN4 LDX 1 FX1 C5CW SMO 5 [GET ERROR MESSAGE C5XG LDX 5 PATM-1(1) [IDENTIFIER C6C6 COMERRX 5 [OUTPUT MESSAGE C6WQ XEN3 ENDCOM [END OF COMMAND C7BB TF2 C7W2 #GAP 1023-0? C8*L #END ^^^^ ...03224660003200000000 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In