{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMFIXSTO84)}}
====== PMFIXSTO84 ======
(George Source)
**Macros used:** [[george:macro:ERROR|ERROR]], [[george:macro:MASK|MASK]], [[george:macro:NAME|NAME]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMDLGET|PMDLGET]], [[george:macro:PMESSAGE|PMESSAGE]], [[george:macro:PMOVE|PMOVE]], [[george:macro:SEGENTRY|SEGENTRY]]
22^= #OPT K0PMFIXSTO=0
23DW #LIS K0PMFIXSTO>K0POST>K0ALLGEO
24D6 #
24XQ ...#SEG PMFIXSTO84 [KAREL KOSKUBA - DIAG
25CB #
25X2 # THIS SEGMENT GIVES THE POSTMORTEM LISTING OF FIXED STORE
26BL #
26W= 8HPMFIXSTO
27*W #
27TG # ENTRY POINT TABLE
28*6 #
28SQ ... SEGENTRY K1PMFIXSTO,XK1PMFIXSTO
29S2 #
2=?L # CHECKSUM ERROR ACTION MESSAGE
2=R= XSUMMESS 30HMEND CHECKSUM ERROR IN RESTORE
2?=W NAME 12H FIXED STORE
2?QG ...REMAINDER +0
2#=6 ...STARTTAB +0
2#PQ ...ZDSPARE +0
2*P2 UPARROW 4H^^^^
2B8L MASK #17777777
2C7W ZBSL1 +BSL1
2CMG XBSL +JBSL
2FL2 WORDADD +0 [CONTAINS ADDRESS OF FIXED
2G5L [STORE WORD
2GK= ...STARTSTO +0
2H4W ...# THE NEXT 4 WORDS MUST REMAIN CONTIGUOUS
2HJG ...# SEE CODE AFTER "CALCULATE BUFFER SIZES....."
2J46 ...ZDPMFSADDS +0 [ DPMFSADDB
2JHQ ... +0 [ DPMFSADDC
2K3B ...XLPMFSADDS +0 [ LPMFSADDB
2KH2 ... +0 [ LPMFSADDC
2L^W TFLAG +1 [ =0 FOR END OF TABLE
2M#? ...TABIND -1 [ NO OF TABLES ACCESSED SO FAR
2MLN ...TABENT +0
2M^5 ...ZBUFL +0
2N?G ...ZSEGEND +ZEND
2NKX ...XPT +0 [ POINTER TO FIXED-STORE BUFFER
2NYB STARS 4H****
2PD2 #
2PXL ...# PROGRAM ENTERED MEND CHECKSUM VALIDATED
2QC= #
2QWW XK1PMFIXSTO
2R22 ... LDX 1 FXPM1
2R56 ... ADS 1 ZSEGEND(1)
2R8= ... ADS 1 TABIND(1)
2R?B ... SMO FXPMDR
2RBG LDX 4 JBADMEND [MEND CHECKSUM ERROR TEST
2RW6 BZE 4 NOBADMEND [J IF NOT DETECTED
2S*Q ... CALL 7 (JPRINT1)
2STB ... PMESSAGE XSUMMESS(1),8 [OUTPUT INDICATIVE MESSAGE
2T*2 ... PMESSAGE XSUMMESS(1),8 [REPEAT MESSAGE
2TSL ... CALL 7 (JPRINT1)
2W#= NOBADMEND
2WRW ... LDN 4 NAME(1)
2X?G LDX 5 JPMOD [MOVE THE CHARACTERS
2XR6 MVCH 4 12 ['FIXED STORE' INTO LP BUFFER
2Y=Q ... CALL 7 (JPRINT2)
2YQB ...#
2^=2 ...#
2^PL ...# CALCULATE BUFFER SIZES,POINTERS,D&L VALUES
329= ...#
32NW ...#
338G ... PMDLGET PMFSADDA,,4
33N6 ... PMDLGET PMFSADDB,5,7
347Q ... PMDLGET PMFSADDC,6,0
34MB ... STO 5 ZDPMFSADDS(1)
3572 ... STO 6 ZDPMFSADDS+1(1)
35LL ... STO 7 XLPMFSADDS(1)
366= ... STO 0 XLPMFSADDS+1(1)
36KW ... PMDLGET PMINPRIN,,7 [ X7 = LPMINPRIN
375G ... ADX 7 ZSEGEND(1) [ X7 = [FXPM1] + LPMINPRIN + ZEND
37K6 ... STO 7 STARTTAB(1) [ ADDRESS OF BASE OF MNEMONIC TABLE
384Q ... STO 7 TABENT(1) [ PRESET MNEMONIC TABLE POINTER
38JB ... ADX 7 4 [ X7=[FXPM1]+LPMINPRIN+ZEND+LPMFSADDA
3942 ... STO 7 STARTSTO(1) [ ADDRESS OF BUFFER FOR FIXED-STORE
39HL ... SBX 7 ENDFIX [ X7=[FXPM1]+LPMINPRIN+ZEND+LPMFSADDA
3=3= ... [ -[ENDFIX]=-(CORE BETWEEN END OF
3=GW ... [ PMFSADDA AND END OF FIXED CORE)
3?2G ... ADN 7 128 [ ALLOW FOR LONG TRANSFERS
3?G6 ... NGX 7 7 [ X7=CORE BETWEEN PMFSADDA AND BDT
3?^Q ... STO 7 ZBUFL(1) [ LENGTH OF BUFFER FOR FIXED-STORE
3#FB ... ADX 7 4 [ X7=CORE BETWEEN PMINPRIN AND BDT
3#^2 ... STO 7 REMAINDER(1) [ LENGTH OF ENLARGED BUFFER FOR F-S
3*DL ... PMDLGET SPARE,7
3*Y= ... STO 7 ZDSPARE(1) [ SET UP DSPARE
3BCW ...#
3BXG ...# READ DOWN PMINPRIN INTO CORE
3CC6 ...#
3CWQ ... PMOVE PMINPRIN,ZSEGEND(1)
3DBB ... LDX 1 FXPM1
3DW2 ...#
3F*L ...# READ DOWN FIRST SEGMENT OF MNEMONIC TABLE
3FT= ...#
3G#W ... PMOVE PMFSADDA,STARTTAB(1)
3GSG ... LDX 1 FXPM1
3H#6 ...#
3HRQ ...# READ FIRST PART OF FIXED-STORE INTO CORE
3J?B ...#
3JR2 ... PMBSADD GEO,0,ZBUFL(1),STARTSTO(1),ZDSPARE(1)
3K=L ... LDX 1 FXPM1
3KQ= ...#
3L9W ... LDX 5 ZBUFL(1) [ CALCULATE START ADDRESS IN
3LPG ... [ SPARE OF NEXT FIXED-STORE PIECE.
3M96 ... ADS 5 ZDSPARE(1)
3PM= #
3Q6W # MOVE ACCUMULATORS FROM SEG PM
3QLG #
3R66 LDN 4 JACC
3RKQ ... LDX 5 STARTSTO(1) [MOVE ACCUMULATORS
3S5B MOVE 4 8
3SCR ... LDX 4 STARTSTO(1) [SET FIXED CORE BUFFER POINTER
3SQ8 ... STO 4 XPT(1)
3T4L BRN SF3A [J TO SKIP TABLE READING
3TJ= #
3Y2B #
3YG2 #
3Y^L ...# THIS SECTION READS DOWN A NEW TABLESEGMENT
3^F= #
3^YW #
42DG ...SF4A LDX 3 TABIND(1) [LOAD LAST TABLE INDICATOR
42Y6 ADN 3 1 [MOVE TO NEW TABLE
43CQ LDX 6 ZDPMFSADDS(3) [GET BS ADDRESS OF NEW TABLE
43XB LDX 5 XLPMFSADDS(3) [GET LENGTH
44?G ... STO 3 TABIND(1) [STORE INDICATOR
44ML ...# READ NEW TABLE INTO STORE
453Q ... PMBSADD GEO,0,5,STARTTAB(1),6
45CW ... LDX 1 FXPM1
45S2 ... LDX 6 STARTTAB(1) [RESET TABLE POINTER --
4686 ... STO 6 TABENT(1) [--TO START OF TABLE
46J= ... CALL 7 (JUP) [RESET PRINT BUFFER
46YB ... -5
47#Q #
47SB # START OF MAIN LOOP
48#2 #
48RL ...SF3A LDX 5 WORDADD(1) [GET WORD ADDRESS
49?= ... CALL 7 (JUP) [RESET PRINT BUFFER
49QW +5
4==G ... LDX 4 TFLAG(1) [J IF TABLE FINISHED
4=Q6 BZE 4 SF6A
4?9Q #
4?PB # EXAMINE TABLE ENTRY FOR **** OR ^^^^
4#92 #
4#NL ...SF7A LDX 2 TABENT(1) [LOAD TABLE POINTER
4*8= LDX 6 0(2)
4*MW ... TXU 6 STARS(1) [TEST FOR END OF TABLE SEGMENT
4B7G BCC SF4A [J TO READ NEW SEGMENT
4BM6 ... TXU 6 UPARROW(1) [TEST FOR END OF TABLE
4C6Q BCS SF12A [J IF NOT
4CLB ... STOZ TFLAG(1) [SET FLAG
4D62 ... LDX 6 REMAINDER(1) [CHANGE BUFFER SIZE OF FIXED CORE
4DKL ... STO 6 ZBUFL(1)
4F5= ... LDX 3 STARTTAB(1) [RESET START OF FIXED CORE BUFFER
4FJW ... STO 3 STARTSTO(1)
4G4G BRN SF6A [J TO SPACEFILL MNEMONIC
4GJ6 #
4H3Q # COMPARE POSITIONS IN TABLE AND F.C. BUFFER
4HHB #
4J32 SF12A TXU 6 5 [FIXED CORE ADDRESS=TABLE ADDRESS
4JGL BCS SF13A [J IF NOT
4K2= #
4KFW # PUT MNEMONIC IN PRINT BUFFER
4K^G #
4LF6 ADN 2 1 [PUT MNEMONIC IN BUFFER
4LYQ LDX 3 JPMOD
4MDB MOVE 2 2
4MY2 ADN 2 2 [RESET TABLE POINTER
4NCL ... STO 2 TABENT(1)
4NX= BRN SF6A [BRANCH TO SKIP OTHER POSSIBILITIES
4PBW SF13A TXL 6 5 [J IF TABLE ADDRESS > FIXED CORE
4PWG BCC SF6A [ ADDRESS
4QB6 ADN 2 3 [OTHERWISE UPDATE TABLE *POINTER ---
4QTQ ... STO 2 TABENT(1) [THIS SHOULD NOT OCCUR
4R*B BRN SF7A [RETURN FOR ANOTHER TRY
4RT2 ...SF6A TXU 5 ZBSL1(1) [J IF BSL WORDS TO BE RESTORED
4S#L BCC SF10
4SS= ...SF11 CALL 7 (JUP) [RESET POINTER TO LEAVE BLANKS
4T?W +14
4TRG #
4W?6 # PUT F.C. WORD INTO PRINT BUFFER
4WQQ #
4X=B ... CALL 7 (JDECN) [PUT ADDRESS IN DECIMAL INTO BUFFER
4XQ2 LDN 6 1 [RESETS POINTERS
4Y9L ... ADS 6 WORDADD(1)
4YP= ADS 6 JPMOD
4^5Q ... SMO XPT(1)
4^G= ... LDX 5 0 [GET CONTENTS OF FIXED CORE WORD
4^WQ ... CALL 7 (JCON4) [CONVERT TO 4 FORMATS IN PRINT BUFF
52?= ... CALL 7 (JPRINT1) [AND PRINT IT
52MQ #
537B # DECIDE WHETHER ALL F.C. PRINTED OR IF F.C. BUFFER EMPTY
53M2 #
53YB ... LDN 5 1 [RESET FIXED CORE BUFFER POINTER
549Q ... ADS 5 XPT(1)
54H6 ... SMO FXPMDR
54SG ... LDX 5 JPMLEV
555W ... TXU 5 WORDADD(1) [ END OF LISTING--
55C= ... BCC (JPMSEG) [---J IF YES
55NL ... LDX 4 XPT(1)
5622 ... ADN 4 128
56?B ... TXL 4 ENDFIX [J IF STILL FIXED CORE LEFT IN BUFFER
56JQ BCS SF3A
574B ... LDX 6 WORDADD(1) [FIND SMALLEST OF BUFFER LENGTH AND-
57J2 SBX 5 6 [--FIXED CORE REMAINING TO PRINT---
583L ... LDX 6 ZDSPARE(1)
58H= ... TXL 5 ZBUFL(1)
592W BCS SF14A
59B3 ... LDX 5 ZBUFL(1) [USE SMALLEST TO READ MORE FIXED---
59P8 ...SF14A ADS 5 ZDSPARE(1) [-- CORE INTO BUFFER
5=4* ... PMBSADD GEO,0,5,STARTSTO(1),6
5=CG ... LDX 1 FXPM1
5=QM ... LDX 5 STARTSTO(1)
5?5S ... STO 5 XPT(1)
5?F2 BRN SF3A [RETURN TO START OF MAIN LOOP
5?YL #
5#D= # END OF MAIN LOOP
5#XW #
5GRB #
5H?2 # READ SAVED AREA FROM SEG PM WHICH IS CORRUPTED IN FIXED STORE
5HQL #
5J== SF10 LDN 7 BSL5+1
5JPW ... TXU 7 ZBSL1(1) [IF AREA HAS BEEN PRINTED OUT
5K9G BCC SF11 [BRANCH BACK
5KP6 ... LDX 2 XBSL(1)
5L8Q LDX 6 0(2) [MOVE SAVED WORD BACK
5LH7 ... SMO XPT(1)
5LTJ ... STO 6 0 [INTO FIXED STORE AREA
5M82 LDN 7 1
5MML ... ADS 7 XBSL(1) [UPDATE BOTH
5N7= ... ADS 7 ZBSL1(1) [THE POINTERS
5NLW BRN SF11
5P6G ...ZEND
67R= #END
^^^^ ...57261716000300000000