{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMJOURNL866)}}
====== PMJOURNL866 ======
(George Source)
**Macros used:** [[george:macro:BBUS|BBUS]], [[george:macro:BXGE|BXGE]], [[george:macro:FINDBSA|FINDBSA]], [[george:macro:JBC|JBC]], [[george:macro:MOVX|MOVX]], [[george:macro:NEXTFCB|NEXTFCB]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMCORES|PMCORES]], [[george:macro:SEGENTRY|SEGENTRY]]
22FL ...#OPT K0PMJOURNL=0
22^= ...#LIS K0PMJOURNL>K0POST>K0ALLGEO
23DW ...#SEG PMJOURNL860 [VIJAY KUMAR
23YG #
24=X ...# THIS SEGMENT OBTAINS A SWAP FILE AND SAVES
24K# ...# ON IT THE FCB, FSTACK AND FUWB FOR JOURNAL SJFILE AND
24XP ...# ALSO GMON-JRNAL BLOCKS. IT PASSES THE END ADDRESS OF
25=6 ...# THIS SAVED AREA TO THE SEGMENT PMCRABS FROM WHERE ON
25JH ...# PMCRABS WRITES THE VARIABLE STORE.
25X2 #
26BL 8HPMJOURNL
26W= # ENTRY POINT TABLE
27*W #
27TG SEGENTRY K1PMJOURNL,XK1PMJOURNL
285# ...#
28*6 XSJEND +0 [POINTER TO INDICATE THE END OF INFORMATION TRANS
28SQ [TO THE STORE BUFFER
29#B XFILEND +0 [POINTER TO INDICATE THE END OF TRANSFER OF BLOCK
29S2 [FROM FILE CHAIN TO THE STORE BUFFER
2=?L XPMJRNLEND +ZEND [END OF SEGMENT PMJOURNL
2=CH ...XACC2 +0 [THIS IS USED TO SAVE X2
2=HD ...XACC7 +0 [USED TO SAVE X7
2=M* ...XASWAPID +ASWAPID [ASWAPID INDICATES VERSIKON OF GEORGE IN USE
2=^5 ...XBOUND 4HPMSJ [HEADING TO PUT IN THE BEGINNING AND END OF THE T
2?=W [INFORMATION SAVED ON THE SWAP FILE
2??C ...XPMSQ 4HPMSQ
2??^ ...XBACT +0 [HOLDS BASE OF ACTIVITY CHAIN
2?*4 ...XBACK2 +0 [HOLDS BLOCK NUMBER TO BE WRITTEN TO BS
2?B7 ...XBASE +0 [HOLDS BASE OF THE FILE CHAIN
2?C= ...XBINDEX +BINDEX [HOLDS BASE OF THE INDEX CHAIN
2?D* ...XBLKEND +0 [IF =1 PART OF A BLOCK STILL REMAINS
2?FD ... [TO BE TRANSFERED TO STORE BUFFER
2?GH ...XBLKNUM +0 [HOLDS NUMBER OF BLOCKS IN BLOCK LIST
2?HL ...XBSWORDS +0 [HOLDS NUMBER OF WORDS TO BE
2?JP ... [TRANSFERED TO SWAP FILE
2?KS ...XBUFFULL +0 [XBUFFULL=1 WHEN STORE BUFFER IS FULL
2?LX ...XBUFSIZE +0 [SIZE OF STORE BUFFER IN MULTIPLE OF 128
2?N2 ...XCPPTR +0 [HOLDS CPPTR
2?P5 ...XDISPLMT +0 [DISPLACEMENT IN ALFTABL
2?QG XBUFPTR +ZEND+1 [POINTS TO THE LOCATION IN STORE WHERE THE BLOCKS
2#=6 [TO BE MOVED
2#FY ...XENTRY +0 [HOLDS THE ENTRY OF A SWAP FILE GOT FROM ALFTABLE
2#PQ XFILCHAIN +0 [HOLDS START OF THE FILE CHAIN
2*4F ...XBWRITE [VALUE OF BSTB/BWRITE BLOCK
2*C8 ...#HAL +BSTB+BWRITE,0
2*PX ...XFCB [VALUE OF FILE/FCB
2B4L ...#HAL +FILE+FCB,0
2BC* ...XFCBASE +0 [BASE OF FCB
2BQ4 ...XFCBRING +0 [FCB RING ELEMENT
2C4R ...XFSTACK [VALUE OF FILE/FSTACK BLOCK
2CCG ...#HAL +FILE+FSTACK,0
2CQ9 ...XFUWB [VALUE OF FILE/FUWB BLOCK
2D4Y ...#HAL +FILE+FUWB,0
2DCM ...XGMONJR [ATYPE OF GMON/JRNAL BLOCK
2DQB ...#HAL +GMON+JRNAL,0
2F55 ...XFNAME 12HJOURNAL
2FCS ... 12HSJFILE
2FQH ...X512 +512 [USED BY MOVX MACRO
2G5L X128 +128
2GK= XFOUR +4
2H4W ZERO +0
2H#N ...XBSONETRAN +0 [IF =1,ONE BS TRANSFER HAS TAKEN PLACE
2HJG XALFTABL +0 [HOLDS THE BASE OF ALFTABL
2J46 XBUFBEGIN +0 [START OF THE STORE BUFFER
2JHQ XBUFSTART +0 [HOLDS XBUFBEGIN+1
2JJT ...XJBASE +0
2JKY ...XJSWAPDR +0 [SAVES THE VALUE OF PREVIOUS DEVICE RECORD
2JM3 ...XJSWAPFD +0 [SAVES THE VALUE OF PREVIOUS DISPT. OF SWAPFILE E
2JN6 ...XLINK1 +0
2JP9 ...XLINK2 +0
2JQ# ...TRANSIZE +0 [HOLDS THE NUMBER OF WORDS TO BE TRANSFERED TO SW
2JRC ...NEXTADDR +0 [HOLDS ADDRESS OF REMAINING PART OF THE
2JSG ... [BLOCK TO BE TRANSFERED
2JTK ...MASK1 #77777600
2JWN ...MASK2 #17770000
2JXR ...MASK3 #77770000
2JYW ...MASK4 #77000000
2J^^ ...SIXTY +60
2K34 ...SBACKPR +0 [ADDRESS OF CURRENT BLOCK ON CHAIN
2K47 ...SJBASE +0 [ADDRESS OF THE BASE OF THE JOURNAL CHAIN
2K5= ...SAVEPTR +0 [HOLDS THE PREVIOUS STORE BUFFER POINTER
2K6* ...SAVESIZE +0 [HOLDS THE PREVIOUS SIZE OF STORE BUFFER
2K7D ...SAVEIT +0 [HOLDS THE ORIGINAL SIZE OF THE STORE BUFFER
2K8H ...SAVEX2 +0
2K9L ...#
2K=P ...# THE FOLLOWING AREA IS USED TO STORE THE DEVICE
2K?S ...# LIST OF THE DEVICE HOLDING THE SWAP FILE WHICH
2K#X ...# WILL BE USED BY THIS SEGMENT (PMJOURNL)
2KB2 ...#
2KC5 ...XDEVICELIST
2KD8 ...#GAP K53-K50 [K53=31,K50=0 (START OF THE DEVICE LIST
2KF? ... +0
2KH2 #
2L2L # ROUTINE TO GET ADDRESS OF NEXT BLOCK ON CHAIN AND VALIDATE IT
2LG= # FORWARD POINTER
2L^W #
2MFG # ENTRY X0=LINK
2M^6 # SBACKPR=ADDRESS OF CURRENT BLOCK
2NDQ #
2NYB # EXIT 0 1 IF POINTER OF NEXT BLOCK OK
2PD2 ...# X2 AND SBACKPR = ADDRESS OF NEXT BLOCK
2PXL # EXIT 0 0 IF CHAIN BREAK DETECTED
2QC= #
2QWW SEARCH
2RBG SMO SBACKPR(1)
2RW6 LDX 2 FPTR [LOAD ADDRESS OF NEXT BLOCK TO VAL
2S5Y ... LDX 3 BPTR(2)
2S*Q ... TXU 3 SBACKPR(1)
2SKJ ... BCS S1
2STB LDX 3 FPTR(2)
2T*2 ... STO 2 SBACKPR(1) [STORE BLOCK ADDRESS
2TSL ... PMCORES 3,S1 [JUMP IF FORWARD POINTER INVALID
2W#= EXIT 0 1 [FPTR OK
2WRW S1 EXIT 0 0 [FPTR CORRUPT
2X?G #
329# ...#
329B ...#
329D ...# SUBROUTINE TRANACT
329G ...# THIS SUBROUTINE TRANSFERS REQUIRED BLOCKS
329J ...# FROM THE ACTIVITY CHAIN.
329L ...#
329N ...# ENTRY - NO CONDITIONS.
329Q ...# EXIT - X3,X4,X5 DESTROYED.
329S ...#
329W ...TRANACT
329Y ... STO 2 XACC2(1) [SAVE X2
32=2 ... LDN 2 BACT [BACT=BASE OF ACTIVITY CHAIN
32=4 ... STO 2 XBACT(1)
32=6 ... LDX 2 BACT
32=7 ... PMCORES 2,XBREAK
32=8 ... STO 2 SBACKPR(1)
32== ...TESTBLK
32=# ... TXU 2 XBACT(1) [IS IT END OF ACTIVITY CHAIN
32=B ... BCC YEXIT [IF YES THEN JUMP
32=D ... LDX 3 ATYPE(2)
32=G ... ANDX 3 MASK3(1)
32=J ... TXU 3 XBWRITE(1) [IS IT BSTB-BWRITE BLOCK:XBWRITE=#
32=L ... BCC XSKIP [IF BWRITE BLOCK THEN JUMP
32=N ... TXU 3 XFUWB(1) [OR IS IT FILE-FUWB BLOCK:XFUWB=#4
32=Q ... BCS NEXTACT [IF NONE OF THEM THEN JUMP
32=S ...XSKIP
32=W ... LDX 3 XFCBASE(1) [ELSE GET BASE OF LAST FCB TRANSFE
32=Y ... LDX 4 BSPRE(3) [GET THE RESIDENCE NUMBER FROM FCB
32?2 ... TXU 4 BACK1(2) [ARE BOTH RESIDENCE NUMBERS SAME
32?4 ... BCS NEXTACT [IF NOT THEN JUMP
32?6 ... LDX 4 BACK2(2)
32?8 ... STO 4 XBACK2(1) [STORE BLOCK NUMBER TO BE WRITTEN
32?= ... LDX 4 FBLMOD(3)
32?# ... ADN 4 A1 [X4=LAST BLOCK IN BLOCK LIST IN FC
32?B ... SBN 4 FBLKS
32?D ... STO 4 XBLKNUM(1) [STORE NUMBER OF BLOCKS IN BLOCK L
32?G ...NEXTNUM
32?J ... LDX 5 FBLKS(3) [GET NEXT BLOCK NUMBER FROM LAST F
32?L ... TXU 5 XBACK2(1) [IS IT EQUAL TO BLK NUMBER IN BSWR
32?N ... BCC SAVEBLK [IF YES THEN JUMP
32?Q ... ADN 3 1
32?S ... BCT 4 NEXTNUM [IF NOT ALL BLK NUMBERS TESTED THE
32?W ... BRN NEXTACT
32?Y ...SAVEBLK
32#2 ... CALL 0 TRANBLK
32#4 ...NEXTACT
32#6 ... CALL 0 SEARCH
32#8 ... BRN XBREAK [BREAK IN ACTIVITY CHAIN THEN JUMP
32#= ... BRN TESTBLK
32## ...YEXIT
32#B ... LDX 2 XACC2(1)
32#D ... STO 2 SBACKPR(1)
32#G ... EXIT 7 0
32#J ...#
32#L ...# SUBROUTINE XBSTRANS
32#N ...# THIS SUBROUTINE TRANSFERS THE CONTENTS OF THE
32#Q ...# STORE BUFFER TO THE SWAP FILE OBTAINED ON BACKING STORE
32#S ...#
32#W ...# ENTRY NO CONDITIONS
32#Y ...# EXIT X3,X4 ARE DESTROYED
32*2 ...#
32*4 ...XBSTRANS
32*6 ... STO 0 XLINK2(1)
32*8 ... STO 2 SAVEX2(1)
32*= ... LDX 4 XBUFBEGIN(1)
32*# ... SBS 4 XBUFPTR(1)
32*B ... LDX 3 XBUFPTR(1)
32*D ... ANDN 3 #177 [GET LEAST SINIFICANT 7 BITS
32*G ... BZE 3 MULTIPLE
32*J ... LDX 4 X128(1)
32*L ... SBX 4 3 [SUBTRACT THIS NUMBER FROM 128
32*N ... ADS 4 XBUFPTR(1) [AND ADD THE RESULT TO BUFFER
32*Q ... [POINTER TO MAKE IT MULTIPLE OF 12
32*S ...MULTIPLE
32*W ... LDX 4 XBUFPTR(1)
32*Y ... STO 4 XBSWORDS(1) [NUMBER OF WORDS TO BE TRANSFERED
32B2 ...#
32B4 ...# TRANSFER THE CONTENTS OF STORE BUFFER TO SWAP FILE
32B6 ...#
32B8 ... PMBSADD SWAP,1,XBSWORDS(1),XBUFBEGIN(1),ZERO(1)
32B= ...#
32B# ... LDX 1 FXPM1
32BB ... LDX 4 XBUFBEGIN(1)
32BD ... STO 4 XBUFPTR(1) [RESET BUFFER POINTER
32BG ... LDX 4 SAVEIT(1)
32BJ ... STO 4 XBUFSIZE(1) [RESET BUFFER SIZE
32BL ... LDX 4 XBSWORDS(1)
32BN ... ADS 4 ZERO(1) [SET POINTER FOR NEXT BS TRANSFER
32BQ ... LDX 3 JSWAPFD
32BS ... TXU 3 XJSWAPFD(1) [ARE TWO SWAP FILES UNEQUAL?
32BW ... BCS UNEQUAL [IF YES THEN JUMP
32BY ... LDX 4 ZERO(1)
32C2 ... SMO FXPMDR
32C4 ... STO 4 BEGINCRAB [AND STORE IT TO PASS THIS NUMBERT
32C6 ...UNEQUAL
32C8 ... LDX 4 XSJEND(1)
32C= ... BZE 4 XEXIT [JUMP IF TOTAL TRANSFER NOT FINISH
32C# ... LDX 2 XJSWAPFD(1)
32CB ... STO 2 JSWAPFD
32CD ... LDX 2 XJSWAPDR(1)
32CG ... STO 2 JSWAPDR
32CJ ... LDN 2 XDEVICELIST(1)
32CL ... LDX 3 XCPPTR(1)
32CN ... MOVE 2 K53-K50 [ELSE MOVE BACK THE DEVICE LIST
32CQ ... BRN (JPMSEG) [AND GO HOME TO RELAX
32CS ...XEXIT
32CW ... LDX 0 XLINK2(1)
32CY ... LDX 2 SAVEX2(1)
32D2 ... EXIT 0 0
32D4 ...#
32D6 ...# SUBROUTINE TRANBLK
32D8 ...# THIS SUBROUTINE TRANSFERES THE REQUIRED BLOCK TO THE
32D= ...# STORE BUFFER
32D# ...#
32DB ...# ENTRY X2 = BASE OF THE BLOCK TO BE TRANSFERED
32DD ...# EXIT X2 UNCHANGED. X7,X4,X3 DESTROYED
32DG ...#
32DJ ...TRANBLK
32DL ... STO 7 XACC7(1)
32DN ... STO 0 XLINK1(1)
32DQ ... LDX 4 ASIZE(2)
32DS ... STO 4 TRANSIZE(1)
32DW ...TRANSREST
32DY ... LDX 6 2 [X6=START ADDRESS OF THE TRANSFER
32F2 ... LDX 7 XBUFPTR(1) [X7=DESTINATION FOR TRANSFER-STORE
32F4 ... LDX 4 XBUFSIZE(1) [X4=AVAILABLE SIZE OF STORE BUFFER
32F6 ... BXGE 4 TRANSIZE(1),MOVEBLK [IF BUFFER SIZE>=ASIZE GOTO MOVBLK
32F8 ... MOVX XBUFSIZE(1) [ELSE MOVE THE AMOUNT OF WORDSFROM
32F= ... [BLOCK=SPACE AVAILABLE IN STORE BU
32F# ... LDX 2 SBACKPR(1) [RESET X2
32FB ... LDX 4 2
32FD ... ADX 4 XBUFSIZE(1)
32FG ... STO 4 NEXTADDR(1) [NEXT TRANSFER ADDRESS IN THE BLOC
32FJ ... LDX 4 ASIZE(2)
32FL ... SBX 4 XBUFSIZE(1) [REST OF THE BLOCK TO BE TRANSFERE
32FN ... STO 4 TRANSIZE(1)
32FQ ... LDX 4 XBUFSIZE(1)
32FS ... ADS 4 XBUFPTR(1) [UPDATE BUFFER POINTER
32FW ... CALL 0 XBSTRANS [CALL BACKING STORE TRANSFER ROUTI
32FY ... LDN 4 1
32G2 ... STO 4 XBSONETRAN(1) [AND SET THE BACKING STORE TRANSFE
32G4 ... LDX 4 SAVEIT(1)
32G6 ... STO 4 XBUFSIZE(1) [RESET STORE BUFFER SIZE
32G8 ... LDX 4 XPMJRNLEND(1)
32G= ... STO 4 XBUFPTR(1) [RESET STORE BUFFER POINTER
32G# ... LDX 2 NEXTADDR(1) [X2=NEXT TRANSFER ADDRESS IN THE B
32GB ... BRN TRANSREST
32GD ...MOVEBLK
32GG ... MOVX TRANSIZE(1) [MOVE BLOCK TO STORE BUFFER
32GJ ... LDX 2 SBACKPR(1) [RESET X2
32GL ... LDX 3 TRANSIZE(1)
32GN ... SBS 3 XBUFSIZE(1) [UPDATE STORE BUFFER SIZE
32GQ ... ADS 3 XBUFPTR(1) [UPDATE BUFFER POINTER
32GS ... LDX 3 XBUFPTR(1)
32GW ... LDX 4 XBUFBEGIN(1)
32GY ... SBX 3 4 [GET IN X3 TOTAL NO. OF WORDS TRAN
32H2 ... TXU 3 SAVEIT(1) [IS SIZE OF TRANSFER=BUFFER SIZE?
32H4 ... BCC XCALL [IF YES THEN JUMP
32H6 ... LDX 0 XLINK1(1)
32H8 ... LDX 7 XACC7(1)
32H= ... EXIT 0 0 [ELSE GET OUT
32H# ...XCALL
32HB ... CALL 0 XBSTRANS
32HD ... LDN 0 1
32HG ... STO 0 XBSONETRAN(1) [SET BACKING STORE TRANSFER INDICA
32HJ ... LDX 0 XLINK1(1)
32HL ... LDX 7 XACC7(1)
32HN ... EXIT 0 0
32NW #
338G # FOLLOWING MODULE IS TO FIND A SWAP FILE
33N6 #
347Q XK1PMJOURNL
34MB LDX 1 FXPM1
3572 ... LDX 2 BINDEX
35LL LDX 2 0(2) [LOAD BASE OF ALFTABL
35RS ... TXU 2 XBINDEX(1) [IF EQUAL THEN-
35^2 ... BCC (JPMSEG) [ALFTABLE HAS NOT BEEN SET UP SO I
366= STO 2 XALFTABL(1) [STORE BASE OF ALFTABL
36KW ... LDX 4 ALOGLEN(2) [LOAD LENGTH OF BLOCK
375G NEXTSWAP
37*# ... LDX 3 XFOUR(1)
37K6 ... ADN 3 2
37SY ... STO 3 XFOUR(1) [INITIAL DISPLACEMENT IN ALFTABL
384Q ... TXL 3 4 [COMPARE WITH THE SIZE
38#J ... BCC (JPMSEG) [RETURN TO IF NO SWAP FILE AVAILAB
38JB ... ADN 3 A1 [GET THE RIGHT DISPLACEMENT FOR TH
38S8 ... STO 3 XDISPLMT(1) [AND STORE THE ABSOLUTE DISPLACEME
3942 ... SMO XALFTABL(1)
39?S ... LDX 5 0(3) [GET THE CONTENTS OF THE ENTRY
39HL ... BNG 5 NEXTSWAP [NOT A SWAP FILE ENTRY SO JUMP
39RD ... STO 5 XENTRY(1)
3=3= ... BBUS 1,XENTRY(1),NEXTSWAP [TEST B1 OF THIS ENTRY OF ALFTABL.
3=?4 ... LDX 5 XENTRY(1)
3=GW ... ANDN 5 #7777 [EXTRACT THE DISPLACEMENT DIGITS
3=QN ... STO 5 XDISPLMT(1) [THE ENTRY AND STORE IT
3?2G ... ADN 5 A1 [ADD A1 FOR COMPARISION
3?=# ... LDX 3 JSWAPFD [JSWAPFD=DISPLACEMENT OF SWAPFILE
3?G6 ... STO 3 XJSWAPFD(1) [ SAVE JSWAPFD
3?PY ... STO 5 JSWAPFD [AND STORE RIGHT DISPLACEMENT
3?^Q ... LDX 5 XENTRY(1)
3#9J ... ANDX 5 MASK2(1) [GET THE UNIT NUMBER FROM THE SWAP
3#FB ... SRL 5 12
3#P8 ... FINDBSA ,5 [THIS MACRO GIVES A POINTER IN X2
3#^2 ... LDX 1 FXPM1
3*8S ... LDX 2 CPPTR(2) [GET THE POINTER TO THE DEVICE LIS
3*DL ... STO 2 XCPPTR(1) [FOR DEVICE HOLDING THE SWAP FILE
3*ND ... LDX 3 JSWAPDR
3*Y= ... STO 3 XJSWAPDR(1) [SAVE JSWAPDR
3B84 ... STO 2 JSWAPDR [STORE REQUIRED DEVICE RECORD POIN
3BCW ... LDN 3 XDEVICELIST(1)
3BMN ... MOVE 2 K53-K50 [SAVE THE DEVICE LIST
3BXG #
3CC6 # THE FOLLOWING CODING CONVERTS THE STORE BUFFER SIZE INTO A MULTIPL
3CWQ #
3DBB ... ADS 1 XPMJRNLEND(1) [END OF PMJOURNL SEGMENT
3DW2 ... LDX 2 XPMJRNLEND(1)
3G#W STO 2 XBUFPTR(1) [SET POINTER TO THE START OF STORE
3GSG ... LDX 3 ENDFIX
3H#6 SBX 3 2
3HHY ... ANDX 3 MASK1(1) [MAKE 7 LEAST SIG. BIT ZERO=MULTIP
3HRQ ... STO 3 SAVEIT(1)
3J3J ... STO 3 SAVESIZE(1)
3J?B ... SBN 3 4
3JH8 ... STO 3 XBUFSIZE(1)
3JR2 LDX 3 XBUFPTR(1)
3K=L STO 3 XBUFBEGIN(1) [START OF BUFFER
3KGD ... LDX 2 XBOUND(1)
3KQ= ... STO 2 0(3) [STORE 'PMSJ' INTO THE FIRST WORD
3L24 ... ADN 3 1
3L9W ... LDX 2 XASWAPID(1) [CONTENTS OF XASWAPID INDICATES VE
3LFN ... STO 2 0(3)
3LPG ... ADN 3 1
3LQK ... LDX 2 XPMSQ(1) [STORE 'PMSQ' IN THIRD WORD
3LRN ... STO 2 0(3) [OF STORE BUFFER
3LSR ... ADN 3 1
3LTW ... LDX 2 ERLSEQNO [PICK UP ERROR LOGGING SEQ. NO.
3LW^ ... STO 2 0(3) [AND STORE IN FOURTH WORD
3LY4 ... ADN 3 1
3L^# ... STO 3 SAVEPTR(1)
3M96 STO 3 XBUFPTR(1) [STORE CURRENT VALUE OF POINTER
3MNQ STO 3 XBUFSTART(1)
3N8B #
3NN2 # FOLLOWING CODING SCANNS THE FILE CHAIN FOR FCB,FSTACK AND FUWB BLO
3P7L #
3PFB ... LDN 2 BSJC
3PR6 ... STO 2 SJBASE(1)
3Q4W ... LDX 2 BSJC
3Q9Q ... PMCORES 2,XBREAK
3QBL ... STO 2 XJBASE(1)
3QNB ... LDN 2 BFILE [LOAD BASE OF FILE CHAIN
3R26 ... STO 2 XBASE(1) [SAVE THE BASE OF FILE CHAIN
3R?W ... LDX 2 BFILE
3RDS ... PMCORES 2,XBREAK
3RKQ STO 2 SBACKPR(1) [SAVE ADDRESS OF CURRENT BLOCK
3S5B ...NEXTBLK
3SK2 ... LDX 4 ATYPE(2) [ELSE GET THE ATYPE CONTENTS
3T4L ... ANDX 4 MASK3(1) [EXTRACT TYPE/SUBTYPE VALUE MASK3
3TJ= ... TXU 4 XFCB(1) [IS IT FCB-XFCB = #4401
3XGQ BCC TRANFCB [IF YES THEN JUMP
3Y2B ... TXU 2 XBASE(1)
3YG2 ... BCC XJRCHAIN [IF END OF FILE CHAIN THEN JUMP
3Y^L ... CALL 0 SEARCH [GET THE NEXT BLOCK IN FILE CHAIN
3^F= ... BRN XBREAK [IF BREAK IN CHAIN THEN JUMP
3^YW ... BRN NEXTBLK [ELSE JUMP TO TEST THE BLOCK
45B= #
45TW ...# THE FOLLOWING COADING SCANS THE JOURNAL CHAIN FOR GMON/JRNAL
46*G #
46MH ...XJRTEST
46^J ... LDX 2 XJBASE(1)
47?K ... TXU 2 SJBASE(1) [TEST IF END OF THE CHAIN
47KL ... BCS RESETX2 [IF NO THEN JUMP
47XM ... LDX 4 SAVEPTR(1)
489N ... STO 4 XBUFPTR(1)
48HP ... LDX 4 SAVESIZE(1)
48TQ ... STO 4 XBUFSIZE(1)
497R ...RESETX2
49FS ... LDX 2 XFCBASE(1) [RESET X2
49RT ... BRN NEXTFCB
4=5W ...XJRCHAIN
4=CX ... LDN 4 1
4=PY ... STO 4 XFILEND(1) [SET POINTER TO INDICATE END OF FI
4?3^ ...XJRNLBLK
4?B2 ... LDX 2 XJBASE(1)
4?N3 ... STO 2 SBACKPR(1)
4#24 ...XGMONEND
4##5 ... TXU 2 SJBASE(1) [TEST IF END OF JOURNAL CHAIN
4#L6 ... BCC XPMSJ [IF YES THEN JUMP
4#Y7 ... LDX 4 ATYPE(2) [ELSE GET THE ATYPE CONTENTS
4*=8 ... ANDX 4 MASK3(1)
4*J9 ... TXU 4 XGMONJR(1) [IS IT GMON/JRNAL BLOCK-XGMONJR =
4*W= ... BCS NEXTGMON [IF NOT THEN JUMP
4B8? ... CALL 0 TRANBLK [ELSE TRANSFER THE BLOCK
4BG# ...NEXTGMON
4BS* ... CALL 0 SEARCH [GET THE NEXT BLOCK IN THE CHAIN
4C6Q BRN XBREAK [IF CHAIN BREAK THEN JUMP
4CLB ... BRN XGMONEND
4D62 #
4DKL # THE FOLLOWING CODING TRANSFER THE REQUIRED BLOCKS TO THE END OF TH
4F5= #
4FJW TRANFCB
4G4G ... JBC NEXTFCB,2,BFREV [TEST BFREV BIT OF FCB. IF UNSET J
4GJ6 ... LDX 3 FUSE1(2) [IF SET THEN LOAD USER NAME
4HHB LDX 4 FUSE2(2)
4J32 ... LDX 5 FUSE3(2)
4JGL ... TXU 3 XFNAME(1) [COMPARE USER NAME
4K2= ... TXU 4 XFNAME+1(1)
4KFW ... TXU 5 XFNAME+2(1)
4K^G BCS NEXTFCB [IF NOT JOURNAL THEN JUMP
4LF6 LDX 3 FLOC1(2) [ELSE LOAD FILE NAME
4LYQ LDX 4 FLOC2(2)
4MDB ... LDX 5 FLOC3(2)
4MY2 ... TXU 3 XFNAME+3(1) [COMPARE FILE NAME
4NCL ... TXU 4 XFNAME+4(1)
4NX= ... TXU 5 XFNAME+5(1)
4PBW BCS NEXTFCB [IF NOT SJFILE THEN JUMP
4PLX ... CALL 0 TRANBLK [CALL TRANBLK TO TRANSFER FCB
4PWY ... CALL 0 SEARCH [GET FSTACK BLOCK
4Q6^ ... BRN XBREAK [IF CHAIN BREAK THEN JUMP
4QC2 ... CALL 0 TRANBLK [ELSE TRANSFER FSTACK BLOCK
4QM3 ... CALL 7 TRANACT
4QX4 ... CALL 0 SEARCH [GET NEXT BLOCK
4R75 ... BRN XBREAK [IF BREAK IN CHAIN THEN JUMP
4RC6 ... LDX 4 ATYPE(2)
4RM7 ... ANDX 4 MASK3(1) [GET TYPE-SUBTYPE VALUE MASK3 = #7
4RX8 ... TXU 4 XFCB(1) [IS IT A FCB BLOCK? XFCB = #4401
4S79 ... BCC XJRTEST
4SC= ... TXU 2 XBASE(1) [OR IS IT END OF FILE CHAIN?
4SM? ... BCC XJRTEST [IF YES THEN GOTO TEST JOURNAL CHA
4SX# ...MOVEIT
4T7* ... CALL 0 TRANBLK [ELSE TRANSFER THE BLOCK(FUWB)
4TCB ... CALL 0 SEARCH [GET NEXT BLOCK
4TMC ... BRN XBREAK
4TXD ... LDX 4 ATYPE(2)
4W7F ... ANDX 4 MASK3(1)
4WCG ... TXU 4 XFCB(1) [IS IT AN FCB BLOCK
4WMH ... BCC SAVEPOINTER [IF YES THEN JUMP
4WXJ ... TXU 2 XBASE(1) [OR IS IT THE END OF FILE CHAIN?
4X7K ... BCC XJRCHAIN [IF YES THEN JUMP
4XCL ... BRN MOVEIT
4XMM ...SAVEPOINTER
4XXN ... LDX 4 XBUFPTR(1)
4Y7P ... STO 4 SAVEPTR(1)
4YCQ ... LDX 4 XBUFSIZE(1)
4YMR ... STO 4 SAVESIZE(1)
4YXS ... STO 2 XFCBASE(1)
4^7T ... BRN TRANFCB
4^CW ...#
4^NG # THE FOLLOWING COADING GETS THE NEXT FCB ON THE FILE CHAIN
5286 #
52MQ NEXTFCB
537B ... CALL 0 SEARCH
53M2 ... BRN XBREAK
555W ... LDX 4 BPTR(2) [LOAD BPTR
55KG ... TXU 4 XBASE(1) [IS BPTR = BFILE?
56JQ BCC XJRCHAIN [IF YES THEN JUMP
574B ... LDX 4 ATYPE(2)
57J2 ... ANDX 4 MASK3(1) [GET TYPE/SUBTYPE VALUE OF THE BLO
583L ... TXU 4 XFCB(1) [IS IT FCB BLOCK? (XFCB = #4401)
58H= ... BCS NEXTFCB [IF NOT THEN JUMP
592W ... STO 2 XFCBASE(1)
5=FQ STO 2 SBACKPR(1)
5=^B BRN TRANFCB
5?F2 #
5?YL # THE FOLLOWING CODING STORES 'PMSJ' AT THE END OF THE TOTAL TRANSFE
5#D= #
5#XW XPMSJ
5*5H ... LDX 2 XBOUND(1)
5*?8 ... LDX 3 XBUFPTR(1)
5*DT ... LDX 4 XBUFSTART(1)
5*LG ... TXU 3 4 [IS ANY WORD (XBUFPTR=XBUFSTART?
5*S7 ... [HAS BEEN TRANSFERED TO THE STORE
5*^S ... BCS MARKER [IF YES THEN JUMP
5B7F ... LDX 5 XBSONETRAN(1)
5B*6 ... BZE 5 PTRSET [ELSE IF XBSONETRAN=0 THEN JUMP (N
5BGR ...MARKER
5BND ... STO 2 0(3)
5BWB LDN 3 1
5C68 ... ADS 3 XBUFPTR(1)
5CB2 STO 3 XSJEND(1) [SET END OF TRANSFER INDICATOR
5CQ= ... CALL 0 XBSTRANS
5D9W ... BRN SETDLPTRS
5GD2 ...XBREAK
5GS= ...XRGBREAK
5H8G ... LDX 4 XBSONETRAN(1)
5HJQ ... BZE 4 PTRSET [IF NO BS TRANSFER THEN JUMP
5H^2 ... STOZ ZERO(1) [SET BACKING STORE ADDRESS TO OVER
5J*= ... LDX 3 XPMJRNLEND(1)
5JPG ... STOZ 0(3)
5K5Q ... LDN 4 1
5KG2 ... STO 4 XBSWORDS(1)
5KW= ...#
5L=G ...# IF THERE HAD BEEN A BS TRANSFER THE FOLLOWING MACRO OVERWRITES
5LLQ ...# THE LABLE 'PMSJ' ON THE SWAP FILE
5M32 ...#
5MC= ... PMBSADD SWAP,1,XBSWORDS(1),XPMJRNLEND(1),ZERO(1)
5MDF ... BRN SETDLPTRS [JUMP TO RESET THE DEVICE LIST POI
5MFN ...#
5MGX ...# THE FOLLOWING MACRO WILL FIRST STORE "PMSJ"
5MHP ...# VERSION OF GEORGE IDENTIFIER(CONTENTS OF ASWAPID),'PMSQ',
5MJH ...# ERROR LOGGING SEQUENCE NO. AND 'PMSJ'
5MK* ...# IN THE STORE BUFFER(AT THE END OF THE CURRENT SEGMENT) AND
5MLJ ...# THEN TRANSFER THIS INFORMATION TO THE FIVE CONSECUTIVE WORDS
5MMR ...# OF THE SWAP FILE FOR BACKMAP. THE REST OF THE CODING
5MP2 ...# WILL RESET THE DEVICE LISTS POINTERS.
5MQ9 ...#
5MRG ...PTRSET
5MSB ... LDX 1 FXPM1
5MT= ... LDX 4 XBOUND(1) [LOAD "PMSJ"
5MW6 ... LDX 2 XPMJRNLEND(1)
5MX2 ... STO 4 0(2) [AND STORE IT IN THE STORE BUFFER
5MXW ... STO 4 4(2)
5MYQ ... LDX 4 XASWAPID(1) [LOAD THE IDENTIFIER
5M^L ... STO 4 1(2)
5M^X ... LDX 4 XPMSQ(1) [LOAD 'PMSQ'
5N28 ... STO 4 2(2) [AND STORE IT IN STORE BUFFER
5N2F ... LDX 4 ERLSEQNO [LOAD SEQUENCE NO.
5N2Q ... STO 4 3(2)
5N33 ... LDN 4 5
5N3B ... STO 4 XBSWORDS(1)
5N4= ... STOZ ZERO(1)
5N56 ... PMBSADD SWAP,1,XBSWORDS(1),XPMJRNLEND(1),ZERO(1)
5N62 ...SETDLPTRS
5N6W ... LDX 1 FXPM1
5N7Q ... LDX 4 XJSWAPDR(1)
5NJ2 ... STO 4 JSWAPDR [RESTORE JSWAPDR
5NY= ... LDX 4 XJSWAPFD(1)
5P#G ... STO 4 JSWAPFD [RESTORE JSWAPFD
5PNQ ... BRN (JPMSEG)
5Q5Q #
5QKB ZEND
5R52 ...#END
^^^^ ...336242210004