{{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]]
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