PMJOURNL866
(George Source)
Macros used: BBUS, BXGE, FINDBSA, JBC, MOVX, NEXTFCB, PMBSADD, PMCORES, SEGENTRY
- PMJOURNL866.txt
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