LOADERPM867

(George Source)

Macros used: ADDRESS, BXGE, DCA, DUMP, FINDPEREC, GELL, GEOERR, GPERI, JBUSY, JDISENG, JRIGHT, JWRONG, LGEOG, MARK, NAME

LOADERPM867.txt
22^=    #BAS  LOADPOST,0
23DW ...#SEG  LOADERPM86                   [M.C.D. MANN 
23HF ...#  ######################################################## 
23L4 ...#   
23NM ...#  (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982   
23R= ...#   
23TT ...#  #########################################################
23YG    #OPT  K0LOADERPM=K0LOADER>K0KERNEL>K0ALLGEO 
24D6    #LIS  K0LOADERPM
24XQ    #   
25CB    #   
25X2    #   
26BL    #     THIS SEGMENT IS ENTERED BY EXECUTIVE  (VIA K0)
26W=    #     AT K1LOADERPM WHENEVER A SYSTEM ERROR IS DETECTED 
27*W    #     DURING EXECUTION OF LOADER
27TG    #   
28*6    #   
28SQ    #   
29#B    #   
29S2    #     DATA WORDS FOR USE BY THE POST-MORTEM ROUTINES
2=?L    #   
2=R=    JLXX           0                   [TO CONTAIN ACCUMULATORS  ...
2?=W    #REP  7                            [  ...  AFTER A SYSTEM ERROR 
2?QG                   0
2#=6    JLINSTR        0                   [TO CONTAIN ILLEGAL INSTR ADDRESS
2#PQ                   0                   [TO CONTAIN ILLEGAL INSTRUCTION  
2*9B    OPMSTOP        BRN  OPMSTOP        [FOR PLUGGING K0 
2*P2    OPMTYPES
2B8L                   4H00NO   
2BN=                   4H00N
2C7W                   4H00YE   
2CMG                   4H00Y
2D76                   4H00LI   
2DLQ                   4H00L
2F6B                   4H00MI   
2FL2                   4H00M
2G5L                   4H00LS   
2GK=                   4H00LL   
2H4W                   4H00MS   
2HJG                   4H00ML   
2J46                   4H00DU   
2JHQ                   4H00D
2K3B                   4H00LD   
2KH2                   4H00MD   
2L2L                   4H00RI   
2LG=                   4H00XL   
2L^W    OPMTYPEND   
2MFG    #GAP  4                            [FOR FURTHER TYPES TO BE MENDED IN   
2M^6    OPMBRNTAB   
2NDQ                   BRN     PMNO 
2NYB                   BRN     PMNO 
2PD2                   BRN     PMYES
2PXL                   BRN     PMYES
2QC=                   BRN     PMLS 
2QWW                   BRN     PMLS 
2RBG                   BRN     PMLS 
2RW6                   BRN     PMLS 
2S*Q                   BRN     PMLS 
2STB                   BRN     PMLS 
2T*2                   BRN     PMLS 
2TSL                   BRN     PMLS 
2W#=                   BRN     PMD  
2WRW                   BRN     PMD  
2X?G                   BRN     PMD  
2XR6                   BRN     PMD  
2Y=Q                   BRN     PMRI 
2YQB                   BRN     PMXL 
2^=2    #GAP  4                            [TO CORRESPOND WITH THE PM TYPE TABLE
2^PL    OPMLPTYPE      2                   [INTERNAL TYPE OF LP 
329= ...OPMENDGEO      +K19              [LAST WORD OF GEORGE TO BE PRINTED 
32NW    OPMCONTYPE     #77                 [INTERNAL TYPE OF OPERATOR'S CONSOLE 
338G    OPMCOMMA       #34  
33N6    OPMTEN         10   
347Q    OPMSP          #20  
34MB    OPMLPNO        -1                  [UNIT NUMBER OF LP   
3572    OPMSPACES      4H   
35LL    OPMINBUFF      8H                  [CONSOLE INPUT BUFFER
366=    OPMBUFF        52H000A               *           *           *  
36KW                   52H   *           *           *           *           *  
375G                   17H  
37K6    OPMCNTRL1      +OPMBUFF.3          [POINTER TO PRINTER BUFFER   
384Q    OPMHEAD        8H000AGEOR   
38JB    #SKI  G4
3942                   4HGE 4   
39HL    #SKI  G3
3=3=                   4HGE 3   
3=GW                   28H LOADER POST-MORTEM MARK 0 I  
3?2G    #OPT  JLMARK=0?+37?-1   
3?G6    #FID  6,11,+G4MARK  
3?^Q                   8HSSUE 00
3#FB    #OPT  JLISSUE=0?+37?-1  
3#^2    #FID  6,11,+G3ISSUE/10  
3*DL    #FID  12,17,+G3ISSUE-(G3ISSUE/10*10)
3*Y=                   8H  DATE:
3BCW    OPMDATE        16H          TIME:   
3BXG    OPMTIME        8H   
3CC6    OPMCNTRL2      +OPMHEAD.3   
3CWQ    OPMLPCNT       77   
3DBB    OPMCNTRL3      +OPMBROKE.3  
3DW2    #   
3F*L    #     PSEUDO-ACTIVITY BLOCK FOR OPERATOR'S CONSOLE AND LINE PRINTER 
3FT=    #   
3G#W    #REP           CPPTR-CHAINADD+1 
3GSG                   0
3H#6                                       [DEVICE LIST POINTERS FOR:   
3HRQ    OPMCON         0                   [CENTRAL CONSOLE 
3J?B                   0                   [  REPLY WORD
3JR2    OPMLP          0                   [CENTRAL LINE PRINTER
3K=L                   0                   [  REPLY WORD
3KQ=    OPMX1          0                   [FOR USE BY OCTAL ROUTINE
3L9W    OPMX3          0
3LPG    OPMPRLINK      0                   [LINK FOR OPMPRINT ROUTINE   
3M96    OPMINLINK      0                   [LINK FOR OINCON ROUTINE 
3MNQ    OPMOUTLINK     0                   [LINK FOR OUTCON ROUTINE 
3N8B    OPMLPLINK      0                   [LINK FOR OUTLP ROUTINE  
3NN2    OPMFIN         0                   [LAST CORE ADDRESS TO BE PRINTED 
3P7L ...OPMLAST        18*1024             [LENGTH OF LOADER
3PM= ...OPMK18         -K42            [LOADER'S CORE DATUM 
3Q6W    XK9PERSEC      1000/K9  
3QLG    XECTIME        +K30+K72            [TIME IN K9'S SINCE MIDNIGHT 
3R66    XECDATE        +K30+K70            [DATE IN DAYS SINCE 31.12.1899   
3RKQ    YEARS          73050               [DATES < 2100 ONLY ALLOWED   
3S5B    TSFTF          365*4+1             [DIVISION CONSTANT FOR YEARS 
3S*8 ...XK18         +K18   
3SK2    #   
3T4L    #     LIST OF THE NUMBER OF DAYS IN EACH MONTH  
3TJ=    #   
3W3W                   0
3WHG    NDAYS          31                  [JANUARY 
3X36                   -1                  [FEBRUARY-SPECIAL (28 OR 29) 
3XGQ                   31                  [MARCH   
3Y2B                   30                  [APRIL   
3YG2                   31                  [MAY 
3Y^L                   30                  [JUNE
3^F=                   31                  [JULY
3^YW                   31                  [AUGUST  
42DG                   30                  [SEPTEMBER   
42Y6                   31                  [OCTOBER 
43CQ                   30                  [NOVEMBER
43XB                   31                  [DECEMBER
44C2    #   
44WL    #     LIST OF THREE CHARACTER NAMES FOR EACH MONTH  
45B=    #   
45TW    NAME           4HN JA   
46*G                   4HB FE   
46T6                   4HR MA   
47#Q                   4HR AP   
47SB                   4HY MA   
48#2                   4HN JU   
48RL                   4HL JU   
49?=                   4HG AU   
49QW                   4HP SE   
4==G                   4HT OC   
4=Q6                   4HV NO   
4?9Q                   4HC DE   
4?PB    #   
4#92    #     VARIOUS CONSOLE MESSAGES  
4#NL    #   
4*8=    OPMINTRO       26,26H^*^*LOADER POST-MORTEM^*^* 
4*MW    OPMBROKE       82,12H  BROKE IN 
4B7G    #SKI  G4
4BM6                   4HGEO4   
4C6Q    #SKI  G3
4CLB                   4HGEO3   
4D62    OPMBR1         40H LOADER AT ADDRESS *        ^*  OBEYING   
4DKL    OPMBR2         26H GEOERR                 ^*
4F5=    OPMFC          12HFIXED CORE
4FJW    OPMINSTR       8H INSTR 
4G4G    OPMQUESTN      25,25H^*  POST-MORTEM REQUIRED?  
4GJ6    OPMTYPEQ       26,26H^*^*  TYPE OF POST-MORTEM? 
4H3Q    OPMNODUMP      75,43H^*^*  PM DUMP NOT AVAILABLE DURING LOADER^*
4HHB                   32H PM TO PRINTER TAKES 40 SECONDS   
4J32    OPMOK          8,8H  OK^*^* 
4JGL    OPMCANCEL      10,10H  CANCEL^* 
4K2=    OPMXX          18,18H   X0= *        ^* 
4KFW    OPMFIX         28,28H^*  PLEASE ENGAGE LP    ^*^*   
4K^G    OPMNOTLP       29,29H   UNIT    IS NOT A PRINTER^*  
4LF6    OPMWRONG       23,23H   UNIT    IS WRONGED^*
4LYQ    OPMFINISH      32,32H^*^*POST-MORTEM FINISHED^*^*^*^*   
4MDB    OPMNOLP        21,21H  NO LP AVAILABLE^*^*  
4MY2    OPMFAIL        11,11H  LP FAIL^*
4NCL    #   
4NX=    #     SUBROUTINE TO INPUT A MESSAGE FROM THE CONSOLE TO OINBUFF 
4PBW    #     EXIT 1 - OK ;  EXIT 0 - FAILED
4PWG    #   
4QB6    OINCON  
4QTQ          STO   0  OPMINLINK(2)        [SAVE LINK   
4R*B          LDX   4  OPMSPACES(2)        [SPACEFILL  ...  
4RT2          STO   4  OPMINBUFF(2)        [       ...  INPUT BUFFER
4S#L          STO   4  OPMINBUFF+1(2)   
4SS=          LDX   3  OPMCON(2)           [OPERATOR'S CONSOLE DL POINTER   
4T?W          LDN   4  8                   [COUNT   
4TRG          DCA      3,STO,4,COUNT
4W?6          LDN   4  0                   [READ MODE   
4WQQ          DCA      3,STO,4,MODE 
4X=B          LDN   4  OPMINBUFF(2)        [ADDRESS OF INPUT BUFFER 
4XQ2          DCA      3,STO,4,CTSA 
4Y9L          LDN   1  OPMCON-CPPTR(2)     [ -> PSEUDO ACTIVITY BLOCK   
4YP=          GPERI    3,1,NC              [INITIATE TRANSFER   
4^8W    OIN1  JBUSY    3,OIN1              [WAIT FOR TERMINATION
4^DN ...      LDX   0  CPRW1(1) 
4^NG ...      SLL   0  3
4^Y# ...      BNG   0  OIN2                [J IF FAILED 
5286          LDX   0  OPMCON+1(2)         [GET REPLY WORD  
52MQ          SLC   0  4
537B          BPZ   0  OIN3                [J IF INPUT SUCCESSFUL   
53M2          LDN   1  OPMCANCEL(2)        [REPLY CANCELLED OR TOO LONG 
546L          CALL  0  OUTCON              [CANCEL MESSAGE TO CONSOLE   
54L=    OIN2  LDX   0  OPMINLINK(2)        [RESTORE LINK
555W          EXIT  0  0                   [EXIT:  FAILED   
55KG    OIN3  LDX   0  OPMINLINK(2)        [RESTORE LINK
5656          EXIT  0  1                   [EXIT:  OK   
56JQ    #   
574B    #     SUBROUTINE TO OUTPUT A MESSAGE TO THE OPERATOR'S CONSOLE  
57J2    #     MESSAGE POINTED TO BY X1 ON ENTRY  -  CALLED VIA X0   
583L    #     USES X1, X3 AND X4
58H=    #   
592W    OUTCON  
59GG          STO   0  OPMOUTLINK(2)       [SAVE LINK   
5=26          LDX   3  OPMCON(2)           [OPERATOR'S CONSOLE DL POINTER   
5=FQ          LDX   4  0(1)                [COUNT   
5=^B          DCA      3,STO,4,COUNT
5?F2          LDN   4  1(1)                [CORE ADDRESS OF MESSAGE 
5?YL          DCA      3,STO,4,CTSA 
5#D=          LDN   4  1                   [WRITE MODE  
5#XW          DCA      3,STO,4,MODE 
5*CG          LDN   1  OPMCON-CPPTR(2)     [ -> PSEUDO ACTIVITY BLOCK   
5*X6    TC1   GPERI    3,1,NC              [INITIATE TRANSFER   
5BBQ    TC2   JBUSY    3,TC2               [WAIT FOR TERMINATION
5BWB          LDX   4  OPMCON+1(2)         [GET REPLY WORD  
5CB2          SRL   4  18   
5CTL          BNZ   4  TC1                 [FAILURE...TRY AGAIN 
5D*=          LDX   0  OPMOUTLINK(2)       [RESTORE LINK
5DSW          EXIT  0  0                   [TRANSFER OK 
5F#G    #   
5FS6    #     SUBROUTINE TO PRINT A LINE ON THE LINE PRINTER
5G?Q    #     USES X1, X3 AND X4  -  CALLED VIA X0  
5GRB    #     EXIT 0 - TRANSFER FAILURE ;  EXIT 1 - OK  
5H?2    #   
5HQL    OUTLP   
5J==          STO   0  OPMLPLINK(2)        [SAVE LINK   
5JPW          LDX   3  OPMLP(2)            [LP DEVICE LIST POINTER  
5K9G    TL1   LDX   4  OPMLPCNT(2)  
5KP6          DCA      3,STO,4,COUNT       [CHARACTER COUNT 
5L8Q          LDX   4  OPMCNTRL2(2) 
5LNB          DCA      3,STO,4,CTSA        [PRINT BUFFER
5M82          JDISENG  3,TL4               [J IF LP NOT ENGAGED 
5MML          LDN   1  OPMLP-CPPTR(2)      [ -> PSEUDO ACTIVITY BLOCK   
5N7=          GPERI    3,1,NC              [INITIATE TRANSFER   
5NLW    TL2   JBUSY    3,TL2               [WAIT FOR TERMINATION
5NWN ...      LDX   0  CPRW1(1) 
5P6G ...      SLL   0  3
5PB# ...      BNG   0  TL3                 [J IF TRANSFER FAILED
5PL6          LDX   0  OPMLPLINK(2)        [RESTORE LINK
5Q5Q          EXIT  0  1                   [TRANSFER OK 
5QKB    TL3   LDX   0  OPMLPLINK(2)        [RESTORE LINK
5R52          EXIT  0  0                   [TRANSFER FAILURE
5RJL    TL4   LDN   1  OPMFIX(2)           [FIX MESSAGE  ...
5S4=          CALL  0  OUTCON              [    ...  TO THE CONSOLE 
5SHW          LDX   3  OPMLP(2)            [RELOAD DEVICE LIST POINTER  
5T3G    TL5   JDISENG  3,TL5               [WAIT FOR PRINTER ENGAGE 
5TH6          BRN      TL1                 [AND TRY AGAIN   
5W2Q    #   
5WGB    #     SUBROUTINE TO STORE THE OCTAL EQUIVALENT OF X5 IN THE TWO WORDS   
5X22    #     POINTED TO BY X1   -   USES X4 AND X5   -   CALLED VIA X0 
5XFL    #   
5X^=    OCTAL   
5YDW          STO   1  OPMX1(2)            [SAVE X1 
5YYG          STO   3  OPMX3(2)            [SAVE X3 
5^D6          LDN   3  8                   [8 OCTAL CHARACTERS  
5^XQ    TOC1  LDN   4  0
62CB          SLL   45 3                   [GET A CHARACTER 
62X2          DCH   4  0(1)                [AND PUT IT IN THE BUFFER
63BL          BCHX  1  £                   [INCREMENT BUFFER POINTER
63W=          BCT   3  TOC1                [AND REPEAT FOR 8 CHARACTERS 
64*W          LDX   3  OPMX3(2)            [RESTORE X3  
64TG          LDX   1  OPMX1(2)            [RESTORE X1  
65*6          EXIT  0  0
65SQ    #   
66#B    #     SUBROUTINE TO DUMP CORE TO THE LINE PRINTER   
66S2    #     ON ENTRY,  X6 : START ADDRESS AND OPMFIN(2) : END ADDRESS 
67?L    #     CALLED VIA X0 
67R=    #   
68=W    OPMPRINT
68QG          STO   0  OPMPRLINK(2)        [SAVE LINK   
69=6    PMPR1 LDX   5  6                   [START ADDRESS OF THIS PRINT LINE
69PQ          LDN   1  OPMBUFF+1(2)        [   ...  TO PRINT BUFFER 
6=9B          CALL  0  OCTAL               [   ...  IN OCTAL
6=P2          LDN   7  8                   [8 CORE WORDS PER PRINT LINE 
6?8L          LDN   1  OPMBUFF+5(2)        [PRINT BUFFER POINTER TO 1ST WORD
6?N=          LDX   3  6                   [FIRST WORD TO BE PRINTED ON LINE
6#7W          LDN   0  7                   [CHECK FOR ALL 8 WORDS ZERO  
6#MG    PMPR2 SMO      0
6*76          LDX   5  0(3) 
6*LQ          BNZ   5  PMPR3               [J IF THIS ONE IS NON-ZERO   
6B6B          BCT   0  PMPR2               [CHECK NEXT WORD 
6BDR ...      LDX   5  0(3) 
6BR8 ...      BZE   5  PMPR5               [ALL 8 ARE ZERO  -  DON'T PRINT  
6C5L    PMPR3 LDX   5  0(3)                [PICK UP THE CORE WORD   
6CK=          CALL  0  OCTAL               [CONVERT TO OCTAL IN PRINT BUFFER
6D4W          ADN   1  3                   [INCREMENT PRINT BUFFER POINTER  
6DJG          ADN   3  1                   [   ...  AND CORE POINTER
6F46          BCT   7  PMPR3               [REPEAT FOR 8 CORE WORDS 
6FHQ    PMPR4 CALL  0  OUTLP               [AND PRINT THE LINE  
6G3B          BRN      PMPR6               [FAILURE DURING THE TRANSFER 
6GH2    PMPR5 ADN   6  8                   [INCREMENT CORE POINTER  
6H2L          TXL   6  OPMFIN(2)           [ANY MORE TO BE PRINTED? 
6HG=          BCS      PMPR1               [YES - CONTINUE WITH NEXT LINE   
6H^W          LDX   0  OPMPRLINK(2)        [NO  - RELOAD LINK   
6JFG          EXIT  0  0
6J^6    PMPR6 LDX   4  OPMLP+1(2)          [GET REPLY WORD  
6KDQ          SRL   4  18   
6KYB          BNZ   4  PMPR9               [J IF REAL FAILURE   
6LD2    PMPR7 LDN   1  OPMFIX(2)           [OTHERWISE,  FIX MESSAGE  ...
6LXL          CALL  0  OUTCON              [       ...  TO CONSOLE  
6MC=          LDX   1  OPMLP(2)            [LP DEVICE LIST POINTER  
6MWW    PMPR8 JDISENG  1,PMPR8             [WAIT FOR FIX
6NBG          BRN      PMPR4               [AND TRY AGAIN   
6NW6    PMPR9 LDN   1  OPMFAIL(2)          [FAIL MESSAGE  ...   
6P*Q          CALL  0  OUTCON              [      ...  TO CONSOLE   
6PTB          BRN      PMPR7               [AND TRY AGAIN   
6Q*2    #   
6QSL    #     SUBROUTINE USED BY ROUTINE WHICH CONVERTS EXECUTIVE'S TIME IN 
6R#=    #     K9 CLOCK INTERRUPTS SINCE MIDNIGHT INTO CHARACTER FORM
6RRW    #   
6S?G    RAGEN   
6SR6          STO   5  6
6T=Q          DVS   5  0(3) 
6TQB          STO   6  7
6W=2    SEND  DVS   6  OPMTEN(2)
6WPL          DCH   7  0(1) 
6X9=          BCHX  1  £
6XNW          DCH   6  0(1) 
6Y8G          BCHX  1  £
6YN6          EXIT  3  1
6^7Q    #   
6^MB    #   
7272    #     LOADER POST-MORTEM ENTRY POINT
72LL    #   
736=    #   
73KW    K1LOADERPM  
745G    #   
74K6          STO   2  K0                  [TEMPORARILY ONLY
754Q          CALL  2  £                   [DATUMISE LOADER ... 
75JB          SBN   2  K1LOADERPM+2        [     ...  POST-MORTEM   
7642          STO   0  JLXX(2)             [SAVE
76HL          STO   1  JLXX+1(2)           [    ALL 
773=          LDX   0  K0                  [         ACCUMULATORS IN JLXX   
77GW          STO   0  JLXX+2(2)
782G          LDN   0  3
78G6          LDN   1  JLXX+3(2)
78^Q          MOVE  0  5
793^ ...      LDX   1   BK18X   
7968 ...      BNZ   1   XOK 
798C ...      LDX   1   XK18
79=L ...      STO   1   BK18X   
79#T ...XOK   ADS   1   OPMENDGEO(2)
79C4 ...      ADS   1   OPMK18(2)   
79FB          LDX   1  GONRDUMP            [GET ILLEGAL INSTRUCTION ADDRESS 
79^2          SBN   1  1                   [CORRECT IT  
7=DL          STO   1  JLINSTR(2)          [AND SAVE IT 
7=Y=          LDX   1  0(1)                [GET ILLEGAL INSTRUCTION 
7?CW          STO   1  JLINSTR+1(2)        [AND SAVE IT TOO 
7?XG          LDX   0  OPMSTOP(2)          [PLUG K0 IN CASE OF  
7#C6          STO   0  K0                  [SYSTEM ERRORS DURING PM 
7#WQ          FINDPEREC 1,APFOTY,OPMCONTYPE(2),PM1  [SEARCH FOR CENTRAL CONSOLE 
7*BB          BPZ   1  PM3                 [J IF CONSOLE AVAILABLE  
7*W2    PM2   BRN      PM2                 [OTHERWISE LOOP STOP 
7B*L    PM3   JWRONG   1,PM1               [IF CONSOLE WRONGED, TRY NEXT ONE
7BT=          STO   1  OPMCON(2)           [SAVE CONSOLE'S DEVICE LIST POINTER  
7C#W          LDN   1  OPMINTRO(2)         [PM INTRODUCTORY MESSAGE  ...
7CSG          CALL  0  OUTCON              [      ...  TO CONSOLE   
7D#6          LDX   5  JLINSTR+1(2)        [IS ILLEGAL INSTRUCTION  ... 
7DRQ          SLL   5  3
7F?B          SRL   5  17                  [ ... A GEOERR?  
7FR2          SBN   5  #170 
7G=L          BNZ   5  PM3A                [NO  
7GQ=          LDX   4  JLINSTR(2)          [YES 
7H9W          ADN   4  1                   [INSERT GEOERR  ...  
7HPG          LDN   5  OPMBR2+2(2)         [  ...  INFORMATION CODE 
7J96          MOVE  4  2                   [  ...  IN BROKE MESSAGE 
7JNQ          BRN      PM3B 
7K8B    PM3A  LDN   4  OPMINSTR(2)         [MOVE "INSTR" ...
7KN2          LDN   5  OPMBR2(2)           [   ...  TO BROKE MESSAGE
7L7L          MOVE  4  2
7LM=          LDN   1  OPMBR2+2(2)         [CONVERT ILLEGAL INSTRUCTION ... 
7M6W          LDX   4  JLINSTR+1(2) 
7MLG          LDN   3  0
7N66          LDN   5  0
7NKQ          SLC   34 3
7P5B          SRC   45 23   
7PK2          LDN   6  3
7Q4L    P1    STO   4  7                   [  ...  INTO A READABLE FORMAT  ...  
7QJ=          ANDN  7  7
7R3W          DCH   7  0(1) 
7RHG          BCHX  1  £
7S36          SLC   45 3
7SGQ          BCT   6  P1   
7T2B          BCHX  1  £
7TG2          DCH   3  0(1) 
7T^L          BCHX  1  £
7WF=          BCHX  1  £
7WYW          SRC   45 1
7XDG          LDN   6  4
7XY6    P2    SLC   45 3                   [   ...  IN THE "BROKE" MESSAGE  
7YCQ          STO   4  7
7YXB          ANDN  7  7
7^C2          DCH   7  0(1) 
7^WL          BCHX  1  £
82B=          BCT   6  P2   
82TW          SRC   45 12   
83*G          ANDN  4  3
83T6          LDN   6  #30                 [  "("   
84#Q          DCH   6  0(1) 
84SB          BCHX  1  £
85#2          DCH   4  0(1) 
85RL          BCHX  1  £
86?=          LDN   6  #31                 [  ")"   
86QW          DCH   6  0(1) 
87=G    PM3B  LDX   5  JLINSTR(2)          [ILLEGAL INSTRUCTION ADDRESS 
87Q6          TXL   5  G3DOL               [BELOW LOADER'S DATUM?   
889Q          BCS      PM3C                [YES 
88PB          SBX   5  G3DOL               [NO  -  DATUMISE IT  
8992          BRN      PM3D 
89NL    PM3C  LDN   3  OPMFC(2)            [SAY IT BROKE ...
8=8=          LDN   4  OPMBROKE+4(2)       [   ...  IN FIXED CORE   
8=MW          MOVE  3  3
8?7G    PM3D  LDN   1  OPMBR1+5(2)         [PUT ILLEGAL INSTRUCTION  ...
8?M6          CALL  0  OCTAL               [  ...  ADDRESS IN MESSAGE   
8#6Q          LDX   1  XECTIME(2)   
8#LB          LDX   5  0(1)                [PICK UP TIME IN K9'S FROM EXECUTIVE 
8*62          DVS   4  XK9PERSEC(2) 
8*KL          LDN   1  OPMTIME(2)          [WHERE TO PUT CHARACTER TIME IN BUFFE
8B5=          CALL  3  RAGEN               [CONVERT HOURS TO CHARACTER FORM 
8BJW                   3600 
8C4G          LDN   4  #36                 [SET STOP CHARACTER  
8CJ6          DCH   4  0(1)                [STORE FULL STOP 
8D3Q          BCHX  1  £
8DHB          CALL  3  RAGEN               [CONVERT MINUTES TO CHARACTER FORM   
8F32                   60   
8FGL          DCH   4  0(1)                [STORE FULL STOP 
8G2=          BCHX  1  £
8GFW          LDX   7  5                   [COPY SECONDS
8G^G          CALL  3  SEND                [AND STORE THEM  
8HF6                   0
8HYQ          LDX   1  XECDATE(2)          [PICK UP DATE FROM EXECUTIVE 
8JDB          LDX   7  0(1)                [  (IN DAYS SINCE 31.12.1899)
8JY2          BZE   7  ZEROD               [J IF ZERO SPECIFIED AS DATE 
8KCL          BXGE  7  YEARS(2),ZEROD      [ERROR IF 0 OR > YEAR 2100   
8KX=          SLA   7  2                   [DIVIDE BY 365*4+1 TO GET NUMBER OF  
8LBW          DVS   6  TSFTF(2)            [  ...  YEARS ALLOWING FOR LEAP YEARS
8LWG          SRL   6  2
8MB6          LDX   4  7                   [TEST AND J IF THIS YEAR  ...
8MTQ          ANDN  4  3                   [   ...  IS NOT A LEAP YEAR  
8N*B          LDN   5  28                  [SET APPROPRIATE NO OF DAYS FOR FEB  
8NT2          LDX   3  2
8P#L          BNZ   4  NLEAP
8PS=          LDN   5  29   
8Q?W    NLEAP SMO      3
8QRG          LDX   0  NDAYS               [NUMBER OF DAYS THIS MONTH   
8R?6          BPZ   0  NFEB                [IF FEBRUARY, TAKE 28 OR 29  
8RQQ          LDX   0  5
8S=B    NFEB  SBX   6  0
8SQ2          ADN   3  1
8T9L          BPZ   6  NLEAP               [J BACK IF NOT THIS MONTH
8TP=          ADX   6  0
8W8W          LDX   4  NAME-1(3)
8WNG          ADN   6  1
8X86          DVS   5  OPMTEN(2)
8XMQ          BNZ   6  STORE               [J IF MORE THAN 9
8Y7B          LDN   6  #20                 [SET SPACE CHARACTER 
8YM2    STORE LDN   3  OPMDATE(2)          [WHERE TO PUT CHARACTER DATE 
8^6L          DCH   6  0(3)                [STORE FIRST CHARACTER   
8^L=          BCHX  3  £
925W          DCH   5  0(3)                [STORE SECOND CHARACTER  
92KG          DSA   4  0(3)                [STORE 1ST 2 CHARACTERS OF MONTH 
9356          STO   4  1(3)                [STORE LAST CHARACTER OF MONTH   
93JQ          DVS   6  OPMTEN(2)
944B          TXL   7  OPMTEN(2)
94J2          BCS      X10                 [J IF LESS THAN YEAR 2000
953L          SBN   7  10                  [MINUS 100 YEARS 
95H=    X10   DCH   7  1(3)                [STORE FIRST CHARACTER OF YEAR   
962W          BCHX  3  £
96GG          DCH   6  1(3)                [STORE SECOND CHARACTER OF YEAR  
9726          BCHX  3  £
97FQ          LDN   6  #20                 [SPACE FILL LAST CHARACTER   
97^B          DCH   6  1(3) 
98F2          BRN      X11  
98YL    ZEROD LDX   0  OPMSPACES(2)        [DATE ERROR : SPACE FILL DATE
99D=          STO   0  OPMDATE(2)   
99XW          STO   0  OPMDATE+1(2) 
9=CG    X11   LDN   1  OPMBROKE(2)         [PRINT BROKE MESSAGE   ...   
9=X6          CALL  0  OUTCON              [      ...  ON CONSOLE   
9?BQ    PM4   LDN   1  OPMQUESTN(2)        [ASK WHETHER PM  
9?WB    PM5   CALL  0  OUTCON              [IS REQUIRED 
9#B2    PM6   CALL  0  OINCON              [GET REPLY   
9#TL          BRN      PM4                 [FAILED  -  TRY AGAIN
9**=          LDX   4  OPMINBUFF(2)        [REPLY   
9*SW          LDN   5  0
9B#G          SRC   45 12                  [GET FIRST 2 CHARACTERS OF REPLY 
9BS6          LDN   1  OPMTYPES(2)         [COMMAND TABLE   
9C?Q          LDN   6  OPMTYPEND-OPMTYPES  [LENGTH OF COMMAND TABLE 
9CRB    PM7   TXU   4  0(1)                [COMPARE REPLY WITH COMMAND TABLE
9D?2          BCC      PM8                 [FOUND IT
9DQL          ADN   1  1
9F==          BCT   6  PM7  
9FPW          BRN      PM4                 [INVALID REPLY  -  REPEAT QUESTION   
9G9G    PM8   EXIT  1  OPMBRNTAB-OPMTYPES  [EXECUTE BRANCH TABLE
9GP6    PMXL  LDN   1  OPMOK(2)            [OK MESSAGE  ... 
9H8Q          CALL  0  OUTCON              [       ...  TO CONSOLE  
9HNB          LDN   7  8                   [TO COUNT ACCUMULATORS PRINTED   
9J82          LDN   6  0                   [X0 FIRST
9JML    PM9   SMO      6                   [PICK UP EACH ACCUMULATOR
9K7=          LDX   5  JLXX(2)  
9KLW          LDN   1  OPMXX+3(2)          [CONVERT IT TO OCTAL  ...
9L6G          CALL  0  OCTAL               [  ...  AND PLACE IT IN THE MESSAGE  
9LL6          LDN   1  OPMXX(2)            [OUTPUT ACCUMULATOR VALUE TO CONSOLE 
9M5Q          CALL  0  OUTCON   
9MKB          ADN   6  1                   [INCREMENT COUNT 
9N52          DCH   6  OPMXX+2(2)          [AND "X" NUMBER IN MESSAGE   
9NJL          BCT   7  PM9                 [REPEAT FOR ALL 8 ACCUMULATORS   
9P4=          BRN      PM94 
9PHW    PMLS  LDN   6  4
9Q3G          LDN   1  OPMINBUFF(2) 
9QH6    PM90  LDCH  4  0(1)                [IS "D" IN REPLY?
9R2Q          SBN   4  #44  
9RGB          BZE   4  PMD                 [YES - SAY NO DUMP POSSIBLE  
9S22          BCHX  1  £
9SFL          BCT   6  PM90 
9S^=          LDN   1  OPMINBUFF(2)        [NO  - SEARCH FOR UNIT NUMBER
9TDW          LDN   6  6
9TYG          LDN   3  OPMNOTLP+3(2)       [IN CASE UNIT IS NOT A LINE PRINTER  
9WD6    PM91  LDCH  4  0(1)                [GET CHARACTER FROM REPLY
9WXQ          BCHX  1  £
9XCB          TXU   4  OPMCOMMA(2)         [IS IT  COMMA?   
9XX2          BCC      PM92                [YES 
9YBL          BCT   6  PM91                [NO  - CHECK NEXT CHARACTER  
9YW=          NGS   4  OPMLPNO(2)          [NO UNIT SPECIFIED   
9^*W          BRN      PM94 
9^TG    PM92  LDCH  4  0(1)                [GET FIRST CHARACTER OF UNIT NUMBER  
=2*6          TXL   4  OPMTEN(2)           [IS IT NUMERIC?  
=2SQ          BCC      PMYES               [NO  - REPEAT PM? QUESTION   
=3#B          DCH   4  0(3)                [YES - PUT IT IN MESSAGE 
=3S2          BCHX  1  £
=4?L          BCHX  3  £
=4R=          LDCH  5  0(1)                [GET SECOND CHARACTER OF UNIT NUMBER 
=5=W          DCH   5  0(3)                [AND PUT IT IN THE MESSAGE   
=5QG          TXU   5  OPMSP(2)            [IS IT A SPACE?  
=6=6          BCC      PM92A               [YES - END OF UNIT NUMBER
=6PQ          TXL   5  OPMTEN(2)           [NO  - IS IT NUMERIC?
=79B          BCC      PMYES               [NO  - REPEAT PM? QUESTION   
=7P2    PM92A LDN   3  OPMNOTLP+3(2)       [YES - VALID UNIT NUMBER 
=88L          LDN   5  0
=8N=    PM92B CDB   4  0(3)                [CONVERT IT TO BINARY
=97W          BCS      PM93 
=9MG          BCHX  3  PM92B
==76    PM93  STO   5  OPMLPNO(2)          [SAVE UNIT NUMBER OF LP  
==LQ    PM94  FINDPEREC 1,APFOTY,OPMLPTYPE(2),PM11  [SEARCH FOR PRINTER 
=?6B          BNG   1  NOLP               [J IF NO LP AVAILABLE 
=?L2          LDX   4  OPMLPNO(2)         [PARTICULAR PRINTER WANTED?   
=#5L          BPZ   4  PM95               [YES - CHECK IT   
=#K=          JWRONG   1,PM11             [NO  - BUT TRY NEXT IF WRONGED
=*4W          BRN      PM96 
=*JG    PM95  LGEOG    1,5                [GET ITS GEOG NUMBER  
=B46          TXU   5  4                  [HAVE WE FOUND IT?
=BHQ          BCS      PM11               [NO  - TRY NEXT ONE   
=C3B          JRIGHT   1,PM96             [YES - BUT IF WRONGED, SAY SO 
=CH2          LDN   1  OPMWRONG(2)        [SPECIFIED PRINTER IS WRONGED 
=D2L          LDX   6  OPMNOTLP+3(2)      [PUT UNIT NUMBER...   
=DG=          STO   6  OPMWRONG+3(2)      [   ...  IN "WRONGED" MESSAGE 
=D^W          CALL  0  OUTCON             [AND SAY IT'S WRONGED 
=FFG          BRN      PM4                [REPEAT PM? QUESTION  
=F^6    PM96  STO   1  OPMLP(2)           [SAVE ITS DEVICE LIST POINTER 
=GDQ          LGEOG    1,5                [GET GEOG NUMBER OF LP
=GYB          LDN   4  10   
=HD2          DVS   4  4
=HXL          LDX   3  4
=JC=          LDN   4  10   
=JWW          DVS   4  4
=KBG          BNZ   5  PM97 
=KW6          LDN   5  #20  
=L*Q          BNZ   4  PM97                [CONVERT IT TO CHARACTER FORM... 
=LTB          LDN   4  #20  
=M*2    PM97  SLL   5  12   
=MSL          SLL   4  6
=N#=          ORX   5  3
=NRW          LDCT  3  #200 
=P?G          ORX   3  5
=PR6          ORX   3  4
=Q=Q          STO   3  OPMFIX+6(2)         [AND SAVE IT IN THE FIX MESSAGE  
=QQB          LDN   1  OPMOK(2)            [SAY "OK"
=R=2          CALL  0  OUTCON   
=RPL          ADS   2  OPMCNTRL2(2)        [DATUMISE PRINT BUFFER POINTER   
=S9=          CALL  0  OUTLP               [PRINT HEADER LINE ...   
=SNW          NULL  
=T8G          LDN   0  1
=TN6          STO   0  OPMHEAD(2)   
=W7Q          CALL  0  OUTLP               [  ...  AND A BLANK LINE 
=WMB          NULL  
=X72          LDX   7  OPMSPACES(2) 
=XLL          STO   7  OPMBR1+7(2)  
=Y6=          LDN   7  #41  
=YKW          STO   7  OPMBROKE(2)  
=^5G          LDX   7  OPMCNTRL3(2) 
=^K6          ADX   7  2
?24Q          STO   7  OPMCNTRL2(2) 
?2JB          LDN   7  81   
?342          STO   7  OPMLPCNT(2)  
?3HL          CALL  0  OUTLP               [PRINT "BROKE" MESSAGE   
?43=          NULL  
?4GW          LDN   0  1
?52G          STO   0  OPMBROKE(2)  
?5G6          CALL  0  OUTLP               [AND A BLANK LINE
?5^Q          NULL  
?6FB          LDN   7  121  
?6^2          STO   7  OPMLPCNT(2)  
?7DL          LDX   7  OPMCNTRL1(2) 
?7Y=          ADX   7  2
?8CW          STO   7  OPMCNTRL2(2) 
?8XG          LDN   6  JLXX(2)             [ADDRESS OF ACCUMULATOR SAVE AREA
?9C6          LDN   7  JLXX+5(2)
?9WQ          STO   7  OPMFIN(2)           [ONLY 1 LINE TO BE PRINTED   
?=BB          CALL  0  OPMPRINT            [PRINT ACCUMULATORS ON LP
?=W2          LDN   6  0                   [PRINT FIRST #30000 WORDS
??*L          LDX   7  OPMENDGEO(2)        [  OF GEORGE ON THE LP   
??T=          STO   7  OPMFIN(2)
?##W          CALL  0  OPMPRINT 
?#SG          LDN   0  1
?*#6          STO   0  OPMBUFF(2)   
?*RQ          CALL  0  OUTLP               [  ... AND A BLANK LINE  
?B?B          NULL  
?BR2          LDN   0  #41  
?C=L          STO   0  OPMBUFF(2)   
?CQ=          LDX   6  G3DOL               [LOADER'S DATUM? 
?D9W          TXU   6  OPMK18(2)
?DPG          BCC      PM98                [YES - START DUMP AT LOADER  
?F96          SBN   6  1024                [NO  - L/A : START DUMP AT LOADER PM 
?FNQ    PM98  LDX   7  OPMLAST(2)   
?G8B          ADX   7  6
?GN2          STO   7  OPMFIN(2)
?H7L          CALL  0  OPMPRINT 
?HM=          LDN   1  OPMFINISH(2)        [FINISHED MESSAGE  ...   
?J6W          CALL  0  OUTCON              [    ... TO THE CONSOLE  
?JLG          GELL                         [RE-ENTER GELL   
?K66    NOLP  LDX   6  OPMLPNO(2)   
?KKQ          BPZ   6  NOLP1
?L5B          LDN   1  OPMNOLP(2)   
?LK2          CALL  0  OUTCON   
?M4L          BRN      PM4  
?MJ=    NOLP1 LDN   1  OPMNOTLP(2)  
?N3W          CALL  0  OUTCON   
?NHG          BRN      PM4  
?P36    PMNO  LDN   1  OPMOK(2)            [NO PM REQUIRED  
?PGQ          CALL  0  OUTCON              [SO SAY "OK" 
?Q2B          GELL                         [AND RE-ENTER GELL   
?QG2    PMYES LDN   1  OPMTYPEQ(2)         [ASK TYPE OF PM REQUIRED 
?Q^L          BRN      PM5  
?RF=    PMD   LDN   1  OPMNODUMP(2)        [PM DUMP NOT AVAILABLE.. 
?RYW          CALL  0  OUTCON              [  .. DURING LOADER  
?SDG          BRN      PMYES               [ASK TYPE OF PM REQUIRED 
?SY6    PMRI  BRN      PM4  
?TCQ    #   
?TXB    #   
?WC2    K7LOADERPM                         [MEND AREA FOR LOADER PM 
?WWL    #GAP  100   
?XB=    #   
?XTW    #END
?Y*G    #OVE
^^^^ ...471676610001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1