{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMSUMA867)}}
====== PMSUMA867 ======
(George Source)
**Macros used:** [[george:macro:ADDRESS|ADDRESS]], [[george:macro:BLOCK|BLOCK]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:FSHTEST|FSHTEST]], [[george:macro:IDENTITY|IDENTITY]], [[george:macro:ILLEGAL|ILLEGAL]], [[george:macro:ISSUE|ISSUE]], [[george:macro:MARK|MARK]], [[george:macro:MASK|MASK]], [[george:macro:NAME|NAME]], [[george:macro:ON|ON]], [[george:macro:OPEN|OPEN]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMCORES|PMCORES]], [[george:macro:PMDLGET|PMDLGET]], [[george:macro:PMFMODE|PMFMODE]], [[george:macro:PMOVE|PMOVE]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:USERJOB|USERJOB]]
22FL #OPT K0PMSUMA=0
22^= #LIS K0PMSUMA>K0POST>K0ALLGEO
23DW #
23YG #SEG PMSUMA85 [M.C.D. MANN
248# ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
24D6 #
24XQ # THIS SEGMENT PRINTS OUT THE POSTMORTEM SUMMARY LISTING
25CB #
25X2 8HPMSUMA
26BL #
26W= # ENTRY POINT TABLE
27*W #
27TG SEGENTRY K1PMSUMA,XK1PMSUMA
28*6 SEGENTRY K2PMSUMA,XK2PMSUMA
28SQ SEGENTRY K3PMSUMA,XK3PMSUMA
29#B SEGENTRY K4PMSUMA,XK4PMSUMA
29S2 JPMREL [THIS WORD IS UPDATED BY NEWFIXED
2=?L ...REL +AENDCHAPS-DDATUM
2=R= #
2?=W #
2?QG XHEADA 7HINSTR:
2#=6 XHEADB 7HSUMMARY
2#C# ...XSYSER 16HSYSTEM ERROR: 0
2#JG ...XF5PST 16HF5POST
2#PQ XHEADC 28HBROKE IN AT ADDRESS
2*9B XHEADD 8HOBEYING
2*P2 XHEADE 8HGEOERR:
2B8L XHEADF 8H????????
2BN= XHEADG 23HCONTENTS OF FX2 ILLEGAL
2C7W XHEADH 39HFX2 DOES NOT POINT TO AN ACTIVITY BLOCK
2CMG XHEADI 17HCURRENT ACTIVITY:
2D76 XHEADJ 47HJOB NAME,:USER NAME:
2DLQ XHEADK +30,30H^*CURRENT CHAPTER: ^*
2F6B XHEADL 14HACTIVITY NO.:
2FL2 XHEADM 24HFILES OPEN TO ACTIVITY:
2G5L XHEADN 52HUSER.LOCAL NAME REEL NO. GEN. NO. LANGUAGE
2GK= 4HMODE
2H4W #SKI G4
2HJG (
2J46 XHEADT 35H GEORGE4 MARK ISSUE POSTMORTEM
2JHQ XHEADU 48H IDENTITY: GEORGE4 LOADED AT
2K3B )
2KH2 #SKI G3
2L2L (
2LG= XHEADT 35H GEORGE3 MARK ISSUE POSTMORTEM
2LL7 ...#UNS FSHTEST
2LQ4 ...#SKI
2LT^ ... FSHSKIP
2L^W XHEADU 48H IDENTITY: GEORGE3 LOADED AT
2M3K ...#UNS FSHTEST
2M5# ...#SKI
2M73 ...(
2M8Q ... FSHCODE A
2M=F ...XHEADU 48H IDENTITY: MASTER LOADED AT
2M#8 ... FSHCODE B
2M*X ...XHEADU 48H IDENTITY: SLAVE LOADED AT
2MCL ...)
2MFG )
2M^6 16H ON
2NDQ XHEADV 32H^*JOB CURRENTLY BEING PROCESSED:
2NYB XHEADY +2,2H^*
2PD2 XHEADZ +22,22H^*POSTMORTEM ENTERED^*
2PXL XHEADW 17HBREAK IN FILERING
2QC= XHEADX 19HFCB BLOCK NOT FOUND
2QWW MESSAGE +0 [ SAVES ADD. OF CTW MESSAGE
2RBG XHJ +XHEADJ+5.1
2RW6 XHT +XHEADT.3
2S*Q XLINK +0
2STB XLINK3 +0
2T*2 XBJOBQ +BJOBQ
2TSL XBCHAP +BCHAP
2W#= XBACKCH +0 [SET=1 IF BACKWARD CHAINING
2WRW XBACKPR +0 [TO H_LD START ADD. OF PREVIOUS BLOCK
2X?G [IN CHAIN. USED BY SEARCH ROUTINES
2XR6 XK +0 [TO CONTAIN CONTENTS OF K0-1 MASKED
2Y=Q XKX +0 [DUPLICATE K0-1 FOR RELATIVISING
2YQB X3 +0 [ X3 PRESERVE ACCUMULATOR
2^=2 XEIGHT +8
2^PL X45 +45
329= XCOMCOL 4H,:
338G PMSUMEND +ZPMSUMA+1
33N6 SEGSFS +ZPMSUMA+50
347Q TACT #60
34MB TAMOP #72
3572 TBAT +BAT/64
35LL TAPET +APET/64
366= TFCB +FILE+FCB
36KW SAFR +0 [TO HOLD START ADDR. OF FILERING
375G RBACK +0 [TO HOLD INDICATOR IF BREAK IN RING
37K6 RELE +0 [TO HOLD CURRENT ADDR. IN FILERING
384Q RBACKPR +0 [TO HOLD START ADDR. OF PREVIOUS
38JB [BLOCK IN FILERING USED BY RSEARCH
3942 [ROUTS.
39HL SPACE #20
3=3= MASK #17777777
3=GW MASK1 #77400000
3?2G MODEIND +0
3?G6 NONE 4HNONE
3?^Q #
3#FB # TAPE OF FILE OPEN MODE INDICATORS
3#^2 #
3*DL MODETAB
3*Y= PMFMODE 0,READ
3BCW PMFMODE 1,READR
3BXG PMFMODE 2,APPEND
3CC6 PMFMODE 3,WRITE
3CWQ PMFMODE 4,GENERAL
3DBB PMFMODE 5,COPY
3DW2 PMFMODE 6,CLEAN
3F*L MODETABEND +MODETABEND
3FT= #
3G#W # ROUTINE TO GET ADDRESS OF NEXT BLOCK IN CHAIN WHEN FORWARD
3GSG # CHAINING
3H#6 # ENTRY X2=ADDRESS OF CURRENT BLOCK
3HRQ # EXIT 0 & IF FORWARD AND BACKWARD POINTERS CORRECT
3J?B # X2,X3=ADDRESS OF NEXT BLOCK
3JR2 # X0=LINK
3K=L # EXIT 0 0 IF BREAK IN CHAIN DETECTED
3KQ= # X3=ADDRESS OF NEXT BLOCK
3L9W # (SEARCHA:ENTRY POINT FOR FIRST BLOCK ON CHAIN
3LPG #
3M96 SEARCH
3MNQ LDX 3 BPTR(2) [J IF BPTR IN CURRENT
3N8B TXU 3 XBACKPR(1) [BLOCK INCORRECT
3NN2 BCS S1
3P7L SEARCHA
3PM= LDX 3 FPTR(2) [GET ADD. OF NEXT BLOCK
3Q6W S2 STO 2 XBACKPR(1) [STORE ADDRESS OF CURRENT BLOCK
3QLG PMCORES 3,S1
3R66 TXL 3 X45(1) [J IF ADDR. < 45
3RKQ BCS S1
3S5B LDX 2 3
3SK2 EXIT 0 1
3T4L S1 EXIT 0 0 [BREAK IN CHAIN
3TJ= #
3W3W # ROUTINE TO GET ADDRESS OF NEXT BLOCK IN CHAIN, WHEN BACKWARD
3WHG # CHAINING
3X36 # ENTRY & EXIT AS SEARCH
3XGQ # (SEARCHC:ENTRY POINT FOR FIRST BLOCK ON CHAIN
3Y2B #
3YG2 SEARCHB
3Y^L LDX 3 FPTR(2) [J IF FPTR IN CURRENT
3^F= TXU 3 XBACKPR(1) [BLOCK INCORRECT
3^YW BCS S1
42DG SEARCHC
42Y6 LDX 3 BPTR(2) [GET ADD. OF NEXT BLOCK
43CQ BRN S2
43XB #
44C2 # ROUTINE TO GET ADDR. OF NEXT RING ELEMENT WHEN FORWARD RINGING
44WL # ENTRY X2=ADDR. OF CURRENT ELEMENT
45B= # EXIT 0 1 IF FPTR & BPTR CORRECT
45TW # X2,X3=ADDR. OF NEXT ELEMENT
46*G # EXIT 0 0 IF BREAK IN CHAIN DETECTED
46T6 # X3=ADDR. OF NEXT ELEMENT
47#Q # (RSEARCHA:ENTRY POINT FOR INITIAL ELEMENT ADDR.)
47SB #
48#2 RSEARCH
48RL LDX 3 1(2)
49?= TXU 3 RBACKPR(1) [J IF BACKWARD PNTR. TO
49QW BCS R1 [CURRENT ELEMENT INCORRECT
4==G RSEARCHA
4=Q6 LDX 3 0(2) [GET ADDR. OF NEXT
4?9Q R2 STO 2 RBACKPR(1) [STORE ADDRESS OF CURRENT ELEMENT
4?PB PMCORES 3,R1
4#92 TXL 3 X45(1)
4#NL BCS R1
4*8= LDX 2 3
4*MW EXIT 0 1
4B7G R1 EXIT 0 0 [BREAK IN CHAIN
4BM6 #
4C6Q # ROUTINE TO GET ADDR. OF NEXT RING ELEMENT WHEN BACKWARD RINGING
4CLB # ENTRY & EXIT AS FOR RSEARCH
4D62 # (RSEARCHC:ENTRY POINT FOR INITIAL ELEMENT ADDR.
4DKL #
4F5= RSEARCHB
4FJW LDX 3 0(2) [J IF BACKWARD POINTER OF
4G4G TXU 3 RBACKPR(1) [CURRENT ELEMENT INCORRECT
4GJ6 BCS R1
4H3Q RSEARCHC
4HHB LDX 3 1(2) [NEXT RING ELEMENT ADDR.
4J32 BRN R2
4JGL #
4K2= #
4KFW # ROUTINE TO GET CURRENT JOB AND USER NAME AND STORE IN OUTPUT
4K^G # MESSAGES
4LF6 # EXIT X0=LINK
4LYQ # X3=NO OF CHARS. IN JOB NAME,:USER NAME
4MDB # JOB & USER NAMES INSERTED IN OUTPUT MESSAGES STARTING
4MY2 # AT XHEADJ & XHEADK
4NCL # 'NONE' INSERTED IF NO JOB OR USER NAME
4NX= # ALL ACCUMULATORS UNDEFINED
4PBW #
4PWG USERJOB
4QB6 STO 0 XLINK(1) [STORE LINK
4QTQ LDX 3 FX2
4R*B PMCORES 3,U5
4RT2 LDCH 2 ATYPE(3) [GET TYPE VALUE
4S#L LDX 7 JOBNO(3) [J IF JOBNO=0
4SS= BZE 7 U5
4T?W TXL 2 TACT(1) [TEST AND J IF FX2 DOES
4TRG BCS U5 [NOT POINT AT AN ACTIVITY BLOCK
4W?6 TXU 2 TAMOP(1)
4WQQ BCC U5 [J IF AMOP ACTIVITY
4X=B TXU 2 TBAT(1)
4XQ2 BCC U5 [J IF BAT ACTIVITY
4Y9L LDN 2 BJOBQ [GET BASE ADDRESS OF CHAIN
4YP= STOZ XBACKCH(1)
4^8W CALL 0 SEARCHA
4^NG BRN U6 [J IF BREAK IN CHAIN
5286 BRN U3
52MQ U1 LDN 3 SEARCH(1)
537B LDX 7 XBACKCH(1)
53M2 BZE 7 U2 [J IF FORWARD CHAINING
546L LDN 3 SEARCHB(1)
54L= U2 CALL 0 (3) [ROUTINE TO GET ADD. OF NEXT BLOCK
555W BRN U6 [J IF BREAK IN CHAIN
55KG U3 TXU 2 XBJOBQ(1)
5656 BCC U5 [J IF END OF JOBQ REACHED
56JQ LDX 7 JOBNUM(2) [TEST IF JOB BLOCK FOR
574B SMO FX2
57J2 TXU 7 JOBNO [CURRENT ACTIVIY
583L BCS U1 [J IF NOT
58H= LDX 1 XHJ(1) [OUTPUT BUFFER
592W ADX 1 FXPM1
59GG LDN 3 JNAME(2) [JOB NAME
5=26 LDN 6 12 [CHAR. COUNT
5=FQ U8 LDCH 5 0(3)
5=^B SMO FXPM1
5?F2 TXU 5 SPACE [J IF SPACE CHAR. ENCOUNTERED
5?YL BCC U4
5#D= DCH 5 0(1) [INSERT JOB NAME IN OUTPUT BUFFER
5#XW BCHX 1 £
5*CG BCHX 3 £
5*X6 BCT 6 U8 [J IF NOT END OF JOB NAME
5BBQ U4 SBN 6 26
5BWB NGX 3 6 [COUNT OF CHARS. IN JOB,:USER NAME
5CB2 SMO FXPM1
5CTL LDN 0 XCOMCOL [MOVE ',:' INTO OUTPUT BUFFER
5D*= MVCH 0 2
5DSW LDN 0 JUSER(2) [MOVE USER NAME INTI OUTPUT BUFFER
5F#G MVCH 0 12
5FS6 LDX 1 FXPM1
5G?Q U7 LDX 0 XLINK(1) [RESTORE LINK
5GRB EXIT 0 0
5H?2 U5 LDN 4 NONE(1)
5HQL LDX 5 XHJ(1) [MOVE 'NONE' INTO
5J== ADX 5 1
5JPW MVCH 4 4 [OUTPUT BUFFER
5K9G LDN 3 4 [COUNT OF CHARS.
5KP6 BRN U7
5L8Q U6 LDX 7 XBACKCH(1)
5LNB BNZ 7 U5 [J IF ALREADY BACKWARD CHAINING
5M82 LDN 7 1
5MML STO 7 XBACKCH(1) [OTHERWISE SET BACKWARD CHAINING
5N7= LDN 2 BJOBQ [INDICATOR AND START S_ARCHING
5NLW CALL 0 SEARCHC [FROM BACK OF CHAIN
5P6G BRN U5 [BREAK IN CHAIN
5PL6 BRN U3
5Q5Q #
5QKB # ROUTINE TO SET UP 1ST LINE OF SUMMARY
5R52 # ENTRY X0=LINK
5RJL # JPMOD=PRINT BUFFER MODIFIER
5S4= # EXIT ALL ACCS. UNDEFINED
5SHW # 1ST LINE OF SUMMARY SET UP IN CURRENT PRINT BUFFER
5T3G # JPMOD=UPDATE PRINT BUFFER MODIFIER
5TH6 #
5W2Q SUMLINE
5WGB STO 0 XLINK(1) [STORE LINK
5X22 LDX 5 GONRDUMP
5XFL ANDX 5 MASK(1)
5X^= BZE 5 SUM1
5YDW SBN 5 1
5YYG SUM1 STO 5 XK(1) [STORE MASKED VERSION OF K0-1
5^D6 STO 5 XKX(1) [STORE ADDRESS TO BE RELATIVISED
5^XQ LDN 3 XHEADC(1)
62CB LDX 4 JPMOD [MOVE FIRST HALF
62X2 ADN 4 1 [OF NEXT HEADING
63BL MVCH 3 28 [INTO PRINT BUFFER
63W= STO 4 JPMOD [UPDATE PRINT BUFFER MOD.
64*W CALL 7 (JUP)
64TG +1
65*6 # BUFFER MOD POINTS TO START OF BREAK ADDRESS IN HEADING
65SQ LDX 3 5
66#B PMCORES 3,SF3
66S2 ... TXL 3 ENDFIX [TEST ADDRESS IS IN FIXED CORE
67?L BCS SF1 [J IF ADD IN FIXED CORE
67R= #
68=W # CODING TO FIND NAME OF CHAPTER CONTAINING BREAK
68QG #
69=6 LDN 2 BCHAP
69PQ CALL 0 SEARCHA [GET ADD. OF FIRST BLOCK IN CHAPTER
6=9B BRN SUM6 [CHAIN. J IF BREAK IN CHAIN
6=P2 BRN SUM4
6?8L SUM2 LDN 3 SEARCH(1)
6?N= LDX 7 XBACKCH(1)
6#7W BZE 7 SUM3 [J IF FORWARD CHAINING
6#MG LDN 3 SEARCHB(1)
6*76 SUM3 CALL 0 (3) [GET ADDR OF NEXT BLOCK IN CHAPTER
6*LQ BRN SUM6 [CHAIN AND J IF BREAK IN CHAIN
6B6B SUM4 TXU 2 XBCHAP(1)
6BL2 BCC SUM7 [J IF POINTS TO BASE IN CHAIN
6C5L ADN 3 A1-1 [GET START ADD. OF CHAPTER
6CK= TXL 3 XK(1) [J IF K0-1 POINTS BEFORE
6D4W BCC SUM2
6DJG SBN 3 A1-1
6F46 ADX 3 ASIZE(2) [GET END ADD OF CHAPTER
6FHQ ANDX 3 MASK(1)
6G3B TXL 3 XK(1) [J IF K0-1 POINTS AFTER
6GH2 BCS SUM2 [CHAPTER
6H2L LDN 4 A1(2)
6HG= SBS 4 XKX(1) [RELATIVISE BREAK ADDRESS
6H^W SUM5 LDX 5 JOZ [MOVE CHAPTER
6JFG ADN 5 3 [NAME INTO
6J^6 BCHX 5 £ [PRINT BUFFER
6KDQ MVCH 4 8
6KYB LDX 3 XK(1)
6LD2 BRN SUM8
6LXL SUM6 LDX 7 XBACKCH(1)
6MC= BNZ 7 SUM7 [J IF ALREADY BACKWARD CHAINING
6MWW LDN 7 1
6NBG STO 7 XBACKCH(1) [SET BACKWARD CHAINING INDICATOR
6NW6 LDN 2 BCHAP [GET POINTER TO LAST BLOCK IN CHAIN
6P*Q CALL 0 SEARCHC
6PTB BRN SUM7
6Q*2 BRN SUM4
6QSL SUM7 LDN 4 XHEADF(1)
6R#= BRN SUM5
6RRW #
6S?G # CODING TO FIND OUT WHAT FIXED CORE ROUTINE CONTAINS BREAK
6SR6 #
6T=Q SF1 STO 3 XLINK3(1)
6TQB ADS 1 SEGSFS(1) [ DATUMISE ADDRESS
6W=2 LDX 2 SEGSFS(1) [GET START ADD OF FIXED STORE SEGS
6WPL [TABLE
6X9= PMOVE FIXINT,2 [TEST IF END OF TABLE REACHED
6XNW LDX 1 FXPM1
6Y8G LDX 2 SEGSFS(1)
6YN6 LDX 3 XLINK3(1)
6^7Q SF2 LDX 4 0(2)
6^MB BNZ 4 SF5 [J IF NOT
7272 SF3 LDN 5 XHEADF(1) [MOVE 8H???????? INTO PRINT BUFFER
72LL BRN SF6
736= SF4 ADN 2 4 [GET NEXT SEG ENTRY
73KW BRN SF2
745G SF5 ANDX 4 MASK(1) [GET DRUM ADD. OF NEXT SEG IN TABLE
74K6 ADX 4 REL(1) [RELATIVISE DRUM ADD. TO CORE ADD.
754Q TXL 3 4
75JB BCS SF4 [J IF BREAK ADD. LESS THAN START OF
7642 [SEG.
76HL ADX 4 1(2) [END ADD OF SEG
773= TXL 3 4 [J IF BREAK ADD. MORE THAN END OF SEG
77GW BCC SF4
782G LDN 5 2(2)
78G6 SF6 LDX 6 JOZ
78^Q ADN 6 3
79FB BCHX 6 £
79^2 MVCH 5 8 [MOVE SEG NAME INTO PRINT BUFFER
7=DL PMCORES 3,,SF61
7=Y= LDX 0 XLINK(1)
7?CW EXIT 0 0
7?XG SF61 TXL 3 XEIGHT(1) [TEST IF ADD AN ACCUMULATOR
7#C6 BCC SF7 [J IF NOT
7#WQ LDN 3 JACC(3)
7*BB BRN SUM8
7*W2 SF7 PMDLGET SPARE,5
7B*L ADX 3 5 [READ DOWN CONTENTS OF ADD. IN K0-1
7BT= LDN 5 3 [PLUS CONTENTS OF FOLLOWING 2 WORDS
7C#W PMBSADD GEO,0,5,PMSUMEND(1),3
7CSG LDX 1 FXPM1
7D#6 LDX 3 PMSUMEND(1)
7DRQ SUM8 LDX 5 XKX(1) [PICK UP BREAK ADDRESS (REL OR ABS)
7F?B STO 3 X3(1) [PRESERVE X3
7FR2 CALL 7 (JDECN) [CONVERT BREAK ADDRESS INTO BUFFER
7G=L LDX 3 X3(1) [RELOAD X3
7GQ= LDN 4 XHEADD(1) [LOAD START ADDRESS OF 2ND HEADING
7H9W #
7HPG # CODING TO INSERT CHAPTER OF FIXED CORE SEGMENT NAME IN PRINT
7J96 # BUFFER
7JNQ #
7K8B LDX 5 JPMOD [MOVE SECOND HALF OF HEADING INTO
7KN2 BCHX 5 £
7L7L MVCH 4 8 [PRINT BUFFER
7LM= #
7M6W # CODING TO INSERT GEOERR NAME OR INSTR. THAT GEORGE BROVE ON IN
7MLG # BUFFER
7N66 #
7NKQ LDX 7 0(3)
7P5B SMO PMSUMEND(1) [STORE CONTENTS OF BREAK ADDR. IF
7PK2 STO 7 0 [IN A CHAPTER
7Q4L SRL 7 14
7QJ= SBN 7 #1770 [SEST IF GEOERR
7R3W BNZ 7 SUM9 [J IF NOT
7RHG LDN 4 XHEADE(1)
7S36 MVCH 4 8 [INSERT GEOERR CHAR STRING IN HEADING
7SGQ LDN 4 1(3)
7T2B MOVE 4 2
7TG2 LDX 0 XLINK(1)
7T^L EXIT 0 0
7WF= SUM9 LDN 4 XHEADA(1) [MOVE 'INSTR' INTO PRINT BUFFER
7WYW MVCH 4 7
7XDG BCHX 5 £
7XY6 STO 5 JPMOD
7YCQ LDX 4 PMSUMEND(1)
7YXB ADN 4 3
7^C2 ... PMOVE PMINPRIN,4
7^WL LDX 1 FXPM1
82B= SMO PMSUMEND(1)
82TW LDX 5 0
83*G CALL 7 (JCON1) [CONVERT CONTENTS TO INSTRUCTION
83T6 LDX 0 XLINK(1) [ EXIT
84#Q EXIT 0 0
84SB #
85#2 XK1PMSUMA
85RL #
86?= # ENSURE A LP IS AVAILABLE FOR SUMMARY
86QW #
87=G LDX 1 FXPM1
87Q6 #UNS JPMDA
889Q #SKI
88PB (
8992 SMO FXPMDR
89NL LDX 0 JUNITNO
8=8= BNG 0 (JPMSEG) [J IF NO LP AVAILABLE
8=MW )
8?7G ADS 1 MODETABEND(1)
8?M6 CALL 7 (JPRINTX) [MAKE SURE LP BUFFER SPACE FILLED
8#6Q #
8#LB # CODING TO PRINT GENERAL HEADING
8*62 #
8*KL LDX 5 GVERSION
8B5= SRL 5 12 [OBTAIN MARK NUMBER
8BJW SMO FXPM1
8C4G DCH 5 XHEADT+3 [AND INSERT IN PM HEADING
8CJ6 LDX 6 GVERSION
8D3Q ANDN 6 #7777 [OBTAIN ISSUE NUMBER
8DHB CALL 7 (JGNO1) [CONVERT TO DECIMAL CHARS.
8F32 DSA 5 XHEADT+5(1) [AND INSERT IN PM HEADING
8FGL LDX 6 XHT(1)
8G2= ADX 6 1
8GFW LDX 7 JOZ [SET UP 'G3 MK ISS PM' HEADING
8G^G ADN 7 1
8HF6 MVCH 6 32
8HYQ LDN 2 IDENTITY
8JDB LDN 3 XHEADU+3(1)
8JY2 MVCH 2 8
8KCL ADN 3 5
8KX= BCHX 3 £
8LBW BCHX 3 £
8LWG MVCH 2 8
8MB6 ADN 3 1
8MTQ BCHX 3 £
8N*B MVCH 2 8
8NT2 #UNS JPMDA
8P#L (
8PS= SMO FXPMDR
8Q?W LDX 0 JUNITNO [J IF NO LP AVAILABLE. CONDITION MAY
8QRG BNG 0 XTW [OCCUR WITH "DUMP"OPERATOR DIRECTIV
8R?6 )
8RQQ LDN 6 XHEADU(1)
8S=B ADN 7 2 [MOVE IDENTITY,TIME AND DATE INTO
8SQ2 MVCH 6 64 [PRINT BUFFER AREA
8T9L CALL 7 (JPRINT) [PRINT POSTMORTEM HEADING
8TP= #
8W8W # CODING TO SET UP AND PRINT FIRST LINE OF SUMMARY INFORMATION
8WNG #
8X86 LDN 6 XHEADB(1)
8XMQ LDX 7 JOZ
8Y7B ADN 7 1
8YM2 MVCH 6 7
8^6L CALL 7 (JPRINT2) [PRINT 'SUMMARY' HEADING
8^L= ADS 1 PMSUMEND(1)
8^LB ... FSHCODE AORB
8^LG ...(
8^LL ... SMO FXPMDR
8^LQ ... LDEX 7 ERRORTYPE
8^LW ...)
8^M2 ... FSHSKIP
8^M9 ... LDX 7 9
8^N8 ... ANDN 7 #77 [GET LAST CHAR OF WORD 9
8^P7 ... BZE 7 POSTF5 [J IF NO CHARACTER
8^Q6 ... ORS 7 XSYSER+3(1)
8^R5 ... LDN 6 XSYSER(1)
8^S4 ...TRANSFER
8^T3 ... LDX 7 JOZ
8^W2 ... ADN 7 1
8^W^ ... MVCH 6 16
8^XY ... CALL 7 (JPRINT2) [PRINT SYSTEM ERROR INFORMATION
8^YX ... BRN SUMA1
8^^W ...POSTF5
922T ... LDN 6 XF5PST(1)
923S ... BRN TRANSFER
924T ...SUMA1
925W CALL 0 SUMLINE [SET UP 1ST LINE OF SUMMARY
92KG CALL 7 (JPRINT2) [PRINT 1ST LINE
9356 #
93JQ # CODING TO SET UP AND PRINT ACTIVITY BLOCK TYPE MNEMONICS
944B #
94J2 LDX 3 FX2
953L PMCORES 3,,T2
95H= LDN 4 XHEADG(1) [PRINT MESSAGE THAT FX2
962W LDN 3 6 [IS CORRUPTED
96GG T1 LDX 5 JPMOD
9726 ADN 5 1
97FQ MOVE 4 0(3)
97^B CALL 7 (JPRINT2)
98F2 BRN (JPMSEG) [CEASE PM SUMMARY LISTING
98YL T2 LDX 5 PMSUMEND(1) [CALL DOWN TABLE OF TYPES
99D= PMOVE PMTYPES,5
99XW LDX 1 FXPM1
9=CG LDX 3 FX2
9=X6 LDCH 2 ATYPE(3) [GET TYPE VALUE FROM CURRENT ACTIVITY
9?BQ TXL 2 TACT(1)
9?WB BCC T3 [J IF ACTIVITY BLOCK
9#B2 LDN 4 XHEADH(1) [PRINT MESSAGE THAT FX2 DOES
9#TL LDN 3 10 [NOT POINT TO AN ACTIVITY BLOCK
9**= BRN T1
9*SW T3 CALL 7 (JUP)
9B#G +10
9BS6 LDN 5 XHEADI(1) [SET UP 'CURRENT ACTIVITY' HEADING
9C?Q MVCH 5 18
9CRB STO 2 3
9D?2 ADX 2 3
9DQL ADX 2 3
9F== SMO PMSUMEND(1)
9FPW LDN 5 0(2)
9G9G MVCH 5 8 [MOVE ACTIVITY TYPE MNEMONIC INTO
9GP6 CALL 7 (JPRINT2) [PRINT BUFFER AND PRINT A LINE
9H8Q #
9HNB # CODING TO SET UP AND PRINT NUMBER OF CURRENT ACTIVITY
9J82 #
9JML CALL 7 (JUP)
9K7= +14
9KLW LDN 5 XHEADL(1)
9L6G MVCH 5 15 [SET UP 'ACTIVITY NO.' HEADING
9LL6 CALL 7 (JUP)
9M5Q +11
9MKB LDX 3 FX2
9N52 LDCH 2 ATYPE(3) [GET TYPE OF BLOCK
9NJL TXU 2 TBAT(1) [J IF NOT BAT ACTIVITY
9P4= BCS T4
9PHW CALL 7 (JUP)
9Q3G +3
9QH6 LDN 5 NONE(1) [INSERT 'NONE' IN PRINT
9R2Q MVCH 5 4 [BUFFER
9RGB BRN T5
9S22 T4 LDX 5 ACTNUM(3) [CONVERT ACTIVITY NO. TO DECIMAL AND
9SFL CALL 7 (JUP)
9S^= +2
9TDW CALL 7 (JDECN) [INSERT IN PRINT BUFFER
9TYG T5 CALL 7 (JPRINT1) [PRINT A LINE
9WD6 #
9WXQ # CODING TO PRINT JOB AND USER NAME
9XCB #
9XX2 CALL 0 USERJOB
9YBL CALL 7 (JUP)
9YW= +7
9^*W LDN 5 XHEADJ(1)
9^TG MVCH 5 47
=2*6 CALL 7 (JPRINT1) [PRINT JOB NAME,:USER NAME
=2SQ #
=3#B # CODING TO LIST FILES OPEN TO CURRENT ACTIVITY
=3S2 #
=4?L # CODING TO FIND OUT IF FILES ARE OPEN TO THE CURRENT ACTIVITY
=4R= #
=5=W LDN 4 XHEADM(1)
=5QG LDX 5 JPMOD
=6=6 ADN 5 1 [SET UP 'FILES OPEN TO
=6PQ MVCH 4 24 [ACTIVITY' HEADER
=79B LDX 2 FX2
=7P2 LDCH 6 ATYPE(2) [GET TYPE VALUE
=88L TXU 6 TAMOP(1)
=8N= BCC XF1 [J IF AMOP ACTIVITY
=97W TXU 6 TBAT(1)
=9MG BCC XF1 [J IF BAT ACTIVITY
==76 TXU 6 TAPET(1)
==LQ BCS XF3 [FALL THROUGH IF APET ACTIVITY
=?6B XF1 LDN 4 NONE(1)
=?L2 MVCH 4 4
=#5L XF2 CALL 7 (JPRINT1)
=#K= BRN (JPMSEG)
=*4W XF3 LDN 2 FILERING(2)
=*JG LDX 6 0(2) [GET ADDR. 1ST ELEMENT ON RING
=B46 TXU 6 2
=BHQ BCC XF1 [J IF FILERING POINTS AT ITSELF
=C3B STO 2 SAFR(1) [START ADDR. OF RING
=CH2 CALL 7 (JPRINT1) [PRINT 'FILES OPEN ' HEADING
=D2L CALL 7 (JUP)
=DG= +17
=D^W LDN 5 XHEADN(1)
=FFG MVCH 5 56
=F^6 CALL 7 (JPRINT1)
=GDQ CALL 7 (JPRINT1)
=GYB #
=HD2 # GET ADDRESS OF NEXT ELEMENT ON RING
=HXL #
=JC= LDN 3 RSEARCHA(1)
=JWW BRN XF4
=KBG XF5 LDN 3 RSEARCH(1)
=KW6 LDX 0 RBACK(1)
=L*Q BZE 0 XF4 [J IF FORWARD RINGING
=LTB LDN 3 RSEARCHB(1)
=M*2 XF4 CALL 0 (3) [GET ADDR. NEXT ELEMENT ON RING
=MSL BRN XFB [J IF BREAK IN RING
=N#= TXU 2 SAFR(1)
=NRW BCC (JPMSEG) [J IF END OF RING
=P?G LDX 7 FGENERAL1(2)
=PR6 STO 7 MODEIND(1) [MODE FILE IS OPENED IN
=Q=Q ADX 3 FBACKPOINT(2)
=QQB PMCORES 3,XFC
=R=2 LDX 3 BPTR(3) [ADDR. OF ASSOCIATED FCB BLOCK
=RPL PMCORES 3,XFC
=S9= TXL 3 X45(1)
=SNW BCS XFC [J IF INVALID
=T8G LDX 7 ATYPE(3)
=TN6 SRL 7 12
=W7Q TXU 7 TFCB(1)
=WMB BCS XFC [J IF NOT A FCB BLOCK
=X72 #
=XLL # CODING TO SET UP FILE AND LOCAL NAMES IN PRINT BUFFER
=Y6= #
=YKW STO 2 RELE(1) [ADDR. OF CURRENT RING ELEMENT
=^5G CALL 7 (JUP)
=^K6 +12
?24Q LDX 2 6
?2JB LDN 5 #12
?342 DCH 5 0(2) [STORE ':' IN PRINT BUFFER
?3HL BCHX 6 £
?43= LDX 5 COMM(3)
?4GW BPZ 5 UL2 [J IF NOT A DIRECTORY
?52G LDN 5 FME1(3)
?5G6 MVCH 5 12 [MOVE DIRECTORY NAME INTO PRINT BUFF.
?5^Q CALL 7 (JUP)
?6FB +57
?6^2 BRN UL4
?7DL UL2 LDN 5 FUSER1(3)
?7Y= MVCH 5 12 [MOVE USER NAME INTO PRINT BUFF.
?8CW LDX 2 6
?8XG UL LDCH 5 0(2)
?9C6 TXU 5 SPACE(1)
?9WQ BCS UL1 [BACKSPACE TO LAST 'NON-SPACE' CHAR.
?=BB SLC 2 2
?=W2 SBN 2 1
??*L SRC 2 2
??T= BRN UL
?##W UL1 BCHX 2 £
?#SG LDN 5 #36
?*#6 DCH 5 0(2) [DUMP '.' INTO PRINT BUFFER
?*RQ STO 2 6
?B?B BCHX 6 £
?BR2 LDN 5 FLOC1(3) [MOVE LOCAL NAME INTO PRINT BUFFER
?C=L MVCH 5 12
?CQ= #
?D9W # TO SET UP FILE REEL AND GENERATION NOS AND LANGUAGE IN PRINT BUFF
?DPG #
?F96 CALL 7 (JUP)
?FNQ +30
?G8B LDX 5 FREEL(3)
?GN2 STO 3 2
?H7L CALL 7 (JDECN) [INSERT REEL NO. IN PRINT BUFFER
?HM= CALL 7 (JUP)
?J6W +2
?JLG LDX 5 FGEN(2)
?K66 CALL 7 (JDECN) [INSERT GEN NO. IN PRINT BUFFER
?KKQ CALL 7 (JUP)
?L5B +3
?LK2 LDX 5 FLAN(2)
?M4L CALL 7 (JCHA) [INSERT LANGUAGE IN PRINT BUFFER
?MJ= CALL 7 (JUP)
?N3W +4
?NHG #
?P36 # CODING TO SET UP MODE OF FILE IN PRINT BUFFER
?PGQ #
?Q2B UL4 LDN 3 MODETAB(1)
?QG2 UL3 LDX 7 MODEIND(1)
?Q^L ANDX 7 MASK1(1) [GET MODE
?RF= TXU 3 MODETABEND(1) [TEST IF END OF TABLE REACHED
?RYW BCS UL5 [J IF NOT
?SDG LDN 5 XHEADF(1) [INSERT '????????' IN PRINT BUFFER
?SY6 BRN UL7
?TCQ UL5 ERX 7 0(3)
?TXB BZE 7 UL6 [J IF CORRECT ENTRY
?WC2 ADN 3 3 [UPDATE TABLE POINTER
?WWL BRN UL3
?XB= UL6 LDN 5 1(3)
?XTW UL7 MVCH 5 8 [MOVE MODE INTO PR BUFFER
?Y*G UL8 CALL 7 (JPRINT1) [PRINT A LINE
?YT6 LDX 2 RELE(1) [ADDR. OF CURRENT ELEMENT
?^#Q BRN XF5
?^SB #
#2#2 # IF BREAK IN FILERING
#2RL #
#3?= XFB LDX 7 RBACK(1)
#3QW BNZ 7 (JPMSEG) [J IF ALREADY BACKRINGING
#4=G CALL 7 (JUP)
#4Q6 +12
#59Q LDN 5 XHEADW(1)
#5PB MVCH 5 17
#692 CALL 7 (JPRINT1) [PRINT 'BREAK IN RING' MESSAGE
#6NL XFB1 LDN 7 1
#78= STO 7 RBACK(1) [SET BACKRING INDICATOR
#7MW LDX 2 SAFR(1)
#87G LDN 3 RSEARCHC(1)
#8M6 BRN XF4
#96Q #
#9LB # IF UNABLE TO FIND FCB BLOCK
#=62 #
#=KL XFC CALL 7 (JUP)
#?5= +12
#?JW LDN 5 XHEADX(1)
##4G MVCH 5 19
##J6 CALL 7 (JPRINT1) [PRINT 'FCB BLOCK NOT FOUND' MESSAG
#*3Q BRN XF5
#*HB #
#B32 #UNS JPMDA
#BGL (
#C2= # CODING TO OUTPUT TIME,DATE,AND IDENTITY ON CONSOLE IF NOT GIVING
#CFW # A POSTMORTEM LISTING
#C^G #
#DF6 XTW LDN 4 20 [LOAD COUNT
#DYQ STO 4 XHEADT+8(1) [STORE IN FRONT OF MESS
#FDB LDN 4 #5612
#FY2 SLL 4 12
#GCL ORS 4 XHEADU(1) [INSERT ^*
#GX= ORS 4 XHEADU+5(1)
#HBW LDN 3 XHEADT+8(1)
#HWG CALL 7 (JCONOUT) [OUTPUT IDENTITY
#JB6 LDN 4 44 [LOAD COUNT
#JTQ STO 4 XHEADU+4(1)
#K*B LDN 3 XHEADU+4(1)
#KT2 CALL 7 (JCONOUT)
#L#L BRN (JPMSEG)
#LS= )
#M?W #
#MRG XK2PMSUMA
#N?6 #
#NQQ # ENTRY POINT TO OUTPUT CURRENT JOB AND USER NAME ON CONSOLE T/W.
#P=B # ENTERED FROM #SEG PMJOBS VIA #MAC PMACROSS
#PQ2 #
#Q9L LDX 1 FXPM1
#QP= CALL 0 USERJOB [INSERT JOB & USER NAMES IN MESSAGES
#R8W LDN 5 XHEADV(1)
#RNG CALL 7 (JUP)
#S86 +5
#SMQ MVCH 5 32 ['CURRENT JOB' INTO PRINT BUFFER
#T7B ADN 6 1
#TM2 LDX 5 XHJ(1)
#W6L ADX 5 1
#WL= MVCH 5 0(3) [JOB,:USER NAME INTO PRINT BUFFER
#X5W ADN 3 36
#XKG LDX 2 JOZ
#Y56 BCHX 2 £
#YJQ STO 3 0(2)
#^4B LDX 3 2
#^J2 CALL 7 (JCONOUT)
*23L CALL 7 (JPRINTX) [SPACEFILL PRINT BUFFER
*2H= BRN (JPMSEG)
*32W #
*3GG XK3PMSUMA
*426 #
*4FQ # ENTRY POINT TO OUTPUT CURRENT JOB AND USER NAME ON LP PRIOR TO
*4^B # POSTMORTEM LISTING. ENTERED FROM #SEG PMJOBS VIA PMACROSS MACRO
*5F2 #
*5YL LDX 1 FXPM1
*6D= CALL 0 USERJOB [GET CURRENT JOB & USER NAME
*6XW LDN 5 XHEADV(1) ['CURRENT JOB' INTO PRINT BUFFER
*7CG BCHX 5 £
*7X6 BCHX 5 £
*8BQ LDX 6 JOZ
*8WB ADN 6 1
*9B2 MVCH 5 30
*9TL ADN 6 1
*=*= LDX 5 XHJ(1)
*=SW ADX 5 1
*?#G MVCH 5 0(3) [JOB,:USER NAME INTO PRINT BUFFER
*?S6 CALL 7 (JPRINT2)
*#?Q CALL 7 (JPRINT) [THROW TO TOP OF FORM
*#RB BRN (JPMSEG)
**?2 #
**QL XK4PMSUMA
*B== #
*BPW # ENTRY POINT TO OUTPUT 1ST LINE OF SUMMARY INFOMATION ON CONSOLE
*C9G # T/W IMMEDIATELY ON ENTRY TO PM
*CP6 # BUT FIRST CHECKS TO SEE IF THE GEORGE BREAK WAS CAUSED BY A
*D8Q # GEOSTOP AND IF SO OUTPUTS THE NECESSARY MESSAGE TO THE CONSOLE
*DNB # AND FORGETS ABOUT PRINTING A POSTMORTEM
*F82 #
*FML LDX 1 FXPM1
*G7= ADS 1 PMSUMEND(1)
*GLW LDX 2 K0-1
*H6G ANDX 2 MASK(1)
*HL6 SBN 2 1
*J5Q PMCORES 2,XK4B [J IF ADDR. OF LAST INSTR. ILLEGAL
*JKB ... TXL 2 ENDFIX
*K52 BCC XK4C [J IF NOT IN FIXED STORE
*KJL LDN 4 1
*L4= PMDLGET SPARE,6
*LHW ADX 2 6
*M3G PMBSADD GEO,0,4,PMSUMEND(1),2
*MH6 LDX 1 FXPM1
*N2Q LDX 2 PMSUMEND(1)
*NGB XK4C LDX 2 0(2) [GET LAST INSTRUCTION OBEYED
*P22 SRL 23 14 [X & F IN X2
*PFL SBN 2 #1570
*P^= BNZ 2 XK4B [J IF NOT A GEOSTOP
*QDW SLL 23 2 [M IN X2
*QYG SRL 3 12 [N IN X3
*RD6 BZE 2 XK4D [J IF NO MODIFIER
*RXQ ADX 3 JACC(2)
*SCB XK4D ANDX 3 MASK(1)
*SX2 PMCORES 3,XK4B
*TBL ... TXL 3 ENDFIX [IF ADDRESS OF OPERAND IS
*TW= BCC XK4E [IN FIXED CORE
*W*W PMDLGET SPARE,5
*WTG ADX 3 5
*X*6 LDN 4 20
*XSQ PMBSADD GEO,0,4,PMSUMEND(1),3
*Y#B LDX 1 FXPM1
*YS2 LDX 3 PMSUMEND(1)
*^?L XK4E LDN 4 64
*^R= TXL 4 0(3)
B2=W BCS XK4B [J IF TOO MANY CHARS. IN MESSAGE
B2QG STO 3 MESSAGE(1) [STORE START ADDR. OF MESSAGE
B3=6 LDN 3 XHEADY(1)
B3PQ CALL 7 (JCONOUT)
B49B LDX 3 MESSAGE(1)
B4P2 CALL 7 (JCONOUT)
B58L LDN 3 XHEADZ(1)
B5N= CALL 7 (JCONOUT) ['POSTMORTEM ENTERED'
B67W LDN 4 1
B6MG SMO FXPMDR
B776 STO 4 ALLPOST [NO POSTMORTEM AT ALL
B7LQ STO 4 ARELOAD
B86B BRN (JPMSEG)
B8L2 XK4B CALL 0 SUMLINE [SET UP 1ST LINE OF SUMMARY
B95L LDN 1 5
B9K= LDX 2 JOZ [SET TO OUTPUT 1ST HALF
B=4W ADN 2 1 [OF LINE ON CONSOLE
B=JG XK4A SMO FXPM1
B?46 LDX 3 PMSUMEND
B?HQ SMO FXPM1
B#3B STO 3 MESSAGE [FOR JCONOUT ROUT.
B#H2 SMO FXPM1
B*2L LDN 4 XHEADY+1
B*G= ADN 1 34 [NO. OF CHARS. IN MESSAGE
B*^W STO 1 0(3)
BBFG ADN 3 1
BB^6 LDX 5 3
BCDQ MVCH 4 2
BCYB SBN 1 2
BDD2 LDX 3 5
BDXL MVCH 2 0(1) [SET UP MESSAGE FOR TWOUT
BFC= SMO FXPM1
BFWW LDX 3 MESSAGE
BGBG CALL 7 (JCONOUT) [OUTPUT TO T/W
BGW6 SBN 1 37
BH*Q BZE 1 XK4A [J TO OUTPUT 2ND HALF OF LINE
BHTB LDX 1 FXPM1
BJ*2 LDX 5 XK(1) [MASKED VERSI.N OF K0-1
BJSL ... TXL 5 ENDFIX [TEST ADDRESS IN FIXED CORE
BK#= BCS XK4G [J IF INSIDE FIXED CORE
BKRW LDX 3 JOZ
BL?G BCHX 3 £
BLR6 LDX 5 3(3)
BM=Q TXU 5 XHEADF(1) [BROKE IN '????????'
BMQB BCS XK4H [J IF NOT
BN=2 XK4G LDX 3 FX1
BNPL BZE 3 XK4H [J IF NO CURRENT CHAPTER
BP9= PMCORES 3,XK4H [J IF OUTSIDE CORE
BPNW LDN 4 XHEADK+6(1)
BQ8G MOVE 3 2
BQN6 LDN 3 XHEADK(1)
BR7Q CALL 7 (JCONOUT) [OUTPUT CURRENT CHAPTER NAME
BRMB XK4H CALL 7 (JPRINTX) [SPACEFILL PRINT BUFFER AREA
BS72 BRN (JPMSEG)
BSLL #
BT6= #
BTKW ZPMSUMA
BW5G #
BWK6 #END
^^^^ ...257720050001