{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMBUFFS84)}}
====== PMBUFFS84 ======
(George Source)
**Macros used:** [[george:macro:EMPTY|EMPTY]], [[george:macro:GSCAN|GSCAN]], [[george:macro:GSCANDEF|GSCANDEF]], [[george:macro:GSCANEQU|GSCANEQU]], [[george:macro:OR|OR]], [[george:macro:PMCORES|PMCORES]], [[george:macro:PMESSAGE|PMESSAGE]], [[george:macro:PMOVE|PMOVE]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TRACE|TRACE]]
22FL #OPT K0PMBUFFS=0
22^= #LIS K0PMBUFFS>K0POST>K0ALLGEO
23DW #
23YG ...#SEG PMBUFFS84 [KAREL KOSKUBA - DIAG
24D6 #
24XQ # THIS SEGMENT PRINTS OUT BOTH THE TRACE AND GSCAN BUFFERS
25CB #
25X2 8HPMBUFFS
26BL #
26W= # ENTRY POINT TABLE
27*W #
27TG SEGENTRY K1PMBUFFS,XK1PMBUFFS
28*6 #SKI BUFTRACE
28SQ #SKI K6TRACE<6-6
29#B (
29S2 XK1PMBUFFS
2=?L BRN (JPMSEG)
2=R= )
2?=W #SKI BUFTRACE
2?QG (
2#=6 #SKI K6TRACE>5-5
2#PQ (
2*9B SWITCH +0
2*P2 WCOUNT +0 [COUNT OF WORDS IN RECORD
2B8L TCOUNT +0 [COUNT OF TRACES PRINTED
2BN= XLINK +0 [LINK WORD FOR CORE PRINT ROUTINE
2C7W STOP +0 [CONTAINS ADDRESS AFTER LAST TRACE
2D76 MINI 16H MINI POSTMORTEM
2DLQ PRESET 8HGSCAN
2F6B TNAME 12HTRACE BUFFER
2FL2 TLINE 40H %B ACT.NO. %A
2G5L 20H CONTENTS OF %A
2GK= PMESS1 37HCORE PRINT OF TRACE BUFFER IMPOSSIBLE
2H4W PMESS2 37HERROR IN TRACE BUFFER OR ITS POINTERS
2HJG PMESS3 35HJTRAIND CORRUPTED, ASSUME JTRAIND=0
2J46 TEMPTY 25HTHE TRACE BUFFER IS EMPTY
2JHQ SLINE 40H %B ACT.NO. CONTE
2K3B 12HNTS OF %A
2KH2 SNAME 12HGSCAN BUFFER
2L2L PMESS4 37HCORE PRINT OF GSCAN BUFFER IMPOSSIBLE
2LG= PMESS5 37HERROR IN GSCAN BUFFER OR ITS POINTERS
2L^W PMESS6 25HTHE GSCAN BUFFER IS EMPTY
2MFG PMOD +0 [USED TO CHECK FOR COMPLETE LINE
2M^6 POINTER +0 [POINTER TO NEXT RECORD IN SCTABLE
2NDQ PFORMAT LDX 6 JOCT
2NYB LDX 6 JCHA
2PD2 LDX 6 JDECS
2PXL LDX 6 JDECP
2QC= SCTABLE
2QWW GSCANDEF DOCUMENT,1,0,0,1
2RBG GSCANEQU SWAPOUTF,SWAPINI
2RW6 GSCANDEF CLOAD,1,2
2S*Q GSCANDEF NEWJOB,0,1
2STB GSCANDEF MONF OUT,1,0,0,1
2T*2 GSCANDEF COREJAM,1,3
2TSL SCEND +SCEND
2W#= #
2WRW # THIS ROUTINE GIVES A CORE PRINT
2X?G # ENTRY X0=NUMBER OF WORDS
2XR6 # X1=START ADDRESS
2Y=Q # X7=LINK
2YQB # EXIT ALL ACCS UNDEFINED
2^=2 #
2^PL PRINTC
329= SMO FXPM1
32NW STO 7 XLINK
338G CALL 7 (JPRINT1)
33N6 SMO FXPM1
347Q LDX 7 XLINK
34MB BZE 0 (7)
3572 TB7 LDN 4 1
35LL ADS 4 JPMOD [UPDATE LP MODIFIER
366= LDX 5 1 [LOAD ADDRESS OF WORD TO CONVERT
36KW CALL 7 (JDECN) [IT FROM BINARY TO DECIMAL
375G SMO FXPM1
37K6 STO 0 WCOUNT
384Q ADS 4 JPMOD [UPDATE LP MODIFIER
38JB LDX 5 0(1) [CONVERT WORD TO CHARACTER, DECIMAL,
3942 ADS 4 1
39HL CALL 7 (JCON4) [OCTAL AND INSTRUCTION FORMATS
3=3= CALL 7 (JPRINT1) [PRINT A LINE
3=GW SMO FXPM1
3?2G LDX 0 WCOUNT [TEST IF CORE PRINT
3?G6 BCT 0 TB7 [HAS BEEN FINISHED
3?^Q SMO FXPM1
3#FB LDX 7 XLINK
3#^2 EXIT 7 0
3*DL #SKI K6TRACE<12-12
3*Y= TRACE
3BCW #SKI K6TRACE>11-11
3BXG (
3CC6 #
3CWQ # TRACE BUFFER EMPTY OUTPUT A MESSAGE AND BRANCH TO (JPMSEG)
3DBB #
3DW2 TBEMPTY
3F*L PMESSAGE TEMPTY,7,FXPM1
3FT= BRN (JPMSEG)
3G#W #
3GSG # CHECK IF IT IS POSSIBLE TO GIVE A CORE PRINT
3H#6 # AND IF IT ISN'T OUTPUT A MESSAGE AND BRANCH TO (JPMSEG)
3HRQ #
3J?B TB1 LDX 1 JTRATOP [IF JTRATOP IS GREATER
3JR2 LDX 4 CORES [THAN CORES
3K=L TXL 4 1 [BRANCH TO (JPMSEG)
3KQ= BCC TB8
3L9W PMESSAGE PMESS1,10,FXPM1
3LPG BRN (JPMSEG) [AND DISPLAY A MESSAGE
3M96 TB8
3MNQ PMESSAGE PMESS2,10,FXPM1
3N8B ... SBX 1 JTRALEN [GIVE A CORE PRINT
3NN2 ... LDX 0 JTRALEN [USING JTRATOP AND TRALEN
3Q6W CALL 7 PRINTC
3QLG BRN (JPMSEG)
3R66 #
3RKQ # CHECK IF EITHER JTRABUFF OR JTRATOP HAVE BEEN CORRUPTED
3S5B # AND GIVE A CORE PRINT USING THE APPROPRIATE POINTER.
3SK2 #
3T4L PCORE1
3TJ= LDX 5 JTRAPNTR
3W3W TXL 5 4
3WHG BCS TB1
3X36 PCORE2
3XGQ PMESSAGE PMESS2,10,FXPM1
3Y2B ... LDX 0 JTRALEN [LOAD ACCUMULATORS IN
3Y^L LDX 1 JTRABUFF [ORDER TO GIVE CORE PRINT
3^F= CALL 7 PRINTC
3^YW BRN (JPMSEG)
42DG #
42Y6 # CHECK THE POINTERS TO SEE IF THE TRACE BUFFER IS EMPTY
43CQ #
43XB TB9 TXU 4 JTRAPNTR [IF JTRABUFF IS UNEQUAL TO
44C2 BCS PCORE2 [JTRAPNTR GIVE A CORE PRINT
44WL LDX 4 JTRATOP [OTHERWISE
45B= SMO FXPM1
45TW STO 4 STOP [TEST IF BUFFER
46*G LDX 4 JTRAIND [IS EMPTY AND OUTPUT A
46T6 BNZ 4 TBEMPTY [MESSAGE IF IT IS
47#Q LDN 6 2
47SB BRN TB2
48#2 #
48RL # TRACE BUFFER ROUTINE ENTERED HERE AND TITLE LINES PRINTED OUT
49?= #
49QW TRACE
4==G PMESSAGE TNAME,3,FXPM1
4=Q6 PMESSAGE TLINE,15,FXPM1
4?9Q #
4?PB # CHECK TO SEE IF ANY OF THE POINTERS HAVE BEEN CORRUPTED
4#92 # AND IF THEY HAVE GIVE A CORE PRINT WHERE THIS IS POSSIBLE
4#NL #
4*8= LDX 4 JTRABUFF
4*MW PMCORES 4,TB1
4B7G TXL 4 JTRATOP [IF JTRABUFF>JTRATOP BRANCH
4BM6 BCC PCORE1 [TO GIVE A CORE PRINT
4C6Q LDX 5 JTRATOP
4CLB LDX 6 CORES
4D62 TXL 6 5 [IF JTRATOP>CORES BRANCH
4DKL BCS PCORE2 [TO GIVE A CORE PRINT
4F5= TXL 5 JTRAPNTR [IF JTRATOP>JTRAPNTR BRANCH
4FJW BCS PCORE2 [TO GIVE A CORE PRINT
4G4G ... LDX 6 JTRALEN
4H3Q SBX 5 4 [USE TRALEN TO CHECK IF
4HHB TXU 6 5 [JTRABUFF AND JTRATOP ARE CORRUPTED
4J32 BCS PCORE2
4JGL TXL 4 JTRAPNTR [IF JTRABUFF>JTRAPNTR OR EQUAL
4K2= BCC TB9 [BRANCH TO SEE IF BUFFER IS EMPTY
4KFW LDX 5 JTRAPNTR
4K^G SMO FXPM1
4LF6 STO 5 STOP
4LYQ #
4MDB # CHECK THE VALUE OF JTRAIND. IF IT IS GREATER
4MY2 # THAN ONE ASSUME THAT BUFFER IS FULL.
4NCL #
4NX= LDX 6 JTRAIND
4PBW LDN 7 1
4PWG TXL 7 6 [TEST IF JTRAIND>1
4QB6 BCC TB2 [BRANCH IF IT ISN'T
4QTQ PMESSAGE PMESS3,9,FXPM1
4R*B STOZ 6
4RT2 TB2 SMO FXPM1
4S#L STO 6 SWITCH
4SS= BNZ 6 TB3
4T?W #
4TRG # LOAD ACCUMULATORS READY FOR PRINTING OUT OF TRACE BUFFER
4W?6 # X0=LENGTH OF EACH TRACE RECORD
4WQQ # X1=ADDRESS OF FIRST RECORD
4X=B #
4XQ2 CALL 7 (JPRINT1) [THROW A LINE
4Y9L LDX 1 JTRAPNTR
4YP= TB6 LDN 0 JTRAENT
4^8W #
4^NG # CHECK IF TRACE WAS INSERTED BY GSCAN
5286 #
52MQ CALL 7 (JUP)
537B +1
53M2 LDX 5 2(1)
546L BPZ 5 TB4 [IF RECORD INSERTED BY GSCAN
54L= SMO FXPM1
555W LDN 4 PRESET [SET UP CHARACTERS 'GSCAN' AT
55KG LDX 5 JPMOD [THE FRONT OF LP BUFFER
5656 MOVE 4 2
56JQ TB4 LDN 7 2
574B ADS 7 JPMOD
57J2 #
583L # SET UP TRACE RECORD IN CURRENT LP BUFFER
58H= #
592W LDX 4 1
59GG LDX 5 JPMOD [LOAD TRACE NAME
5=26 MOVE 4 2 [INTO LP BUFFER
5=FQ SBN 0 2
5=^B LDN 4 3
5?F2 ADS 4 JPMOD
5?YL ADN 1 2
5#D= LDX 5 2(1) [LOAD THE CURRENT ACTIVITY NUMBER
5#XW CALL 7 (JDECN) [AT TIME OF TRACE INTO LP BUFFER
5*CG LDN 4 1
5*X6 ADS 4 JPMOD
5BBQ LDXC 5 0(1) [LOAD THE ADDRESS OF THE
5BWB CALL 7 (JDECN) [WORD TRACED INTO LP BUFFER
5CB2 ADS 4 JPMOD
5CTL BUX 1 £
5D*= SMO FXPM1
5DSW STO 0 WCOUNT
5F#G LDX 5 0(1) [LOAD THE CONTENTS OF WORD TRACED
5FS6 CALL 7 (JCON4) [INTO LP BUFFER IN DIFFERENT FORMAT
5G?Q CALL 7 (JPRINT1) [PRINT A LINE
5GRB #
5H?2 # CHECK THE COUNT OF TRACES PRINTED AND LENGTH OF THE RECORDS
5HQL #
5J== SMO FXPM1
5JPW LDX 4 TCOUNT
5K9G ADN 4 1
5KP6 SMO FXPM1
5L8Q STO 4 TCOUNT
5LNB LDN 6 JTRAENT
5M82 MPY 4 6 [TEST IF THE NUMBER
5MML ... LDX 4 JTRALEN [OF TRACES PRINTED IS
5NLW TXL 4 5 [GREATER THAN THE MAXIMUM
5P6G BCS PCORE2 [IF IT IS GIVE A CORE PRINT
5PL6 ADN 1 2
5Q5Q SMO FXPM1
5QKB LDX 0 WCOUNT [TEST IF NUMBER OF WORDS IN RECORD
5R52 SBN 0 3 [IS WRONG AND IF IT IS
5RJL BNZ 0 PCORE2 [BRANCH TO GIVE A CORE PRINT
5S4= #
5SHW # CHECK IF ALL THE TRACES HAVE BEEN PRINTED. ACCORDING
5T3G # TO WHICH POINTER HOLDS THE END ADDRESS.
5TH6 #
5W2Q SMO FXPM1
5WGB LDX 4 SWITCH
5X22 BNZ 4 TB5
5XFL TXU 1 JTRATOP [TEST IF END OF BUFFER HAS BEEN
5X^= BCS TB6 [REACHED BRANCH IF IT HASN'T
5YDW LDN 4 1 [OTHERWISE SET SWITCH
5YYG SMO FXPM1
5^D6 STO 4 SWITCH [WORD TO ONE
5^XQ TB3 LDX 1 JTRABUFF [AND START PRINTING TRACES
62CB BRN TB6 [FROM START OF BUFFER
62X2 TB5 SMO FXPM1
63BL TXU 1 STOP [TEST IF ALL THE TRACES
63W= BCS TB6 [HAVE BEEN PRINTED
64*W )
64TG BRN (JPMSEG)
65*6 #
65SQ # THIS ROUTINE CHECKS TO SEE IF THE LP BUFFER IS FULL
66#B # IF IT IS THE LINE IS PRINTED AND THE OUTPUT CONTINUED
66S2 # ON THE NEXT LINE.
67?L # ENTRY X7=LINK
67R= # EXIT X3,X5,X6,X7 UNDEFINED
68=W #
68QG NEWLINE
69=6 SMO FXPM1
69PQ STO 7 XLINK
6=9B LDX 5 JPMOD
6=P2 SLC 5 2
6?8L SMO FXPM1
6?N= SBX 5 PMOD
6#7W LDN 6 79 [TEST IF THE LP BUFFER
6#MG TXL 5 6 [IS FULL BRANCH
6*76 BCS SC13 [IF IT ISN'T
6*LQ CALL 7 (JPRINT1) [PRINT A LINE
6B6B LDN 6 8
6BL2 ADX 6 JPMOD [UPDATE
6C5L STO 6 JPMOD [LP MODIFIER
6CK= SLC 6 2
6D4W SMO FXPM1
6DJG STO 6 PMOD
6F46 SC13 SMO FXPM1
6FHQ LDX 7 XLINK
6G3B EXIT 7 0
6GH2 #
6H2L # OUTPUT AN ERROR MESSAGE AND GIVE A CORE PRINT OF THE
6HG= # GSCAN BUFFER THEN BRANCH TO PRINT OUT THE TRACE BUFFER
6H^W #
6JFG PRNTCORE
6J^6 PMESSAGE PMESS5,10,FXPM1
6KDQ LDX 1 GSCANBUFF [LOAD ACCUMULATORS
6KYB ... LDX 0 GSCANLEN [IN ORDER TO
6LD2 CALL 7 PRINTC [CALL CORE PRINT ROUTINE
6LXL BRN TRACE
6MC= #
6MWW # CORE PRINT OF GSCAN BUFFER IMPOSSIBLE AS GSCANBUFF>CORES
6NBG # BRANCH TO PRINT OUT TRACE BUFFER
6NW6 #
6P*Q NOPRINT
6PTB PMESSAGE PMESS4,10,FXPM1
6Q*2 BRN TRACE
6QSL #
6R#= # GSCAN BUFFER ROUTINE ENTERED HERE AND TITLE LINES PRINTED OUT
6RRW #
6S?G XK1PMBUFFS
6SR6 #
6T=Q # PRINT MINI POSTMORTEM HEADING
6TQB #
6W=2 SMO FXPM1
6WPL LDN 4 MINI [SET UP HEADING
6X9= LDX 5 JPMOD
6XNW MVCH 4 16
6Y8G CALL 7 (JPRINT) [THROW A PAGE & PRINT HEADING
6YN6 PMESSAGE SNAME,3,FXPM1
6^7Q PMESSAGE SLINE,13,FXPM1
6^MB #
7272 ...# READ DOWN PMINPRIN FROM BACKING STORE
72LL #
736= SMO FXPM1
73KW LDN 5 XDINPRIN
745G ... PMOVE PMINPRIN,5
74K6 #
754Q # CHECK TO SEE IF ANY OF THE POINTERS HAVE BEEN CORRUPTED
75JB # AND IF THEY HAVE GIVE A CORE PRINT WHERE POSSIBLE
7642 #
76HL LDX 4 GSCANBUFF
773= LDX 5 GSCANPNTR
77GW LDX 1 GSCANVAL
782G PMCORES 4,NOPRINT
78G6 PMCORES 5,PRNTCORE
78^Q TXL 4 5 [IF GSCANBUFF