DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦0460c0f78⟧ TextFile

    Length: 49280 (0xc080)
    Types: TextFile
    Names: »MCBASM«

Derivation

└─⟦cf01ad7db⟧ Bits:30005181 8" CR80 Floppy CR80FD_0178 ( CR/D/1056 ICL/110 MASTER CLEAR + BOOTSTRAP COPY OF CR/D/0615 HKV 195111 HP1 )
    └─⟦03c2450a7⟧ 
        └─ ⟦this⟧ »MCB.MCBASM« 

TextFile

AU000001 0 0000 LIST                                                                    ;       AU000001        
AU000002 0 0000 BEGIN MODULE MCBLOC                                                     ;       AU000002
AU000003 0 0000 USE BASE                                                                ;       AU000003
AU000004 0 0000 AREASWITCH=1                                                            ;       AU000004
AU000005 0 0000 MCBLOC:=#FE00                                                           ;       AU000005
AU000006 0 0000 DISP:= 0                                                                ;       AU000006
AU000007 0 0000 ATEST:= 0                                                               ;       AU000007
00117000 0 0000 ;-----------------------------------------------------------------------;       00117000
00117200 0 0000 ; DATA BASE DEFINITIONS                                                 ;       00117200
00117400 0 0000 ;-----------------------------------------------------------------------;       00117400
00117500 0 0000   MC0:        MCCTO      ;  REGISTER 0, PRESET TO LOCAL INTERRUPT ADDRES;       00117500
00117600 0 0001   MC1:        1          ;      -    1                                  ;       00117600
0011770  0 0002   MC2:        1          ;      -    2                                  ;       0011770 
0011780  0 0003   MC3:        0          ;      -    3                                  ;       0011780 
00117900 0 0004   MC4:        1          ;      -    4                                  ;       00117900
00118000 0 0005   MC5:        1          ;      -    5                                  ;       00118000
00118100 0 0006   MC6:        -1         ;      -    6                                  ;       00118100
0011820  0 0007   MC7:        FDLINK     ;      -    7, REGS 1 THRU 7 CONTAIN PRESET DAT;       0011820 
00118300 0 0008                          ;              FOR DISKETTE DATA AREA.         ;       00118300
00118400 0 0008   MCBAS:      ATEST      ;  DATA BASE REGISTER                          ;       00118400
00118500 0 0009                          ;  NOTE:                                       ;       00118500
00118600 0 0009                          ;  THE PROCESS IS DISPLACED: WHEN THE PROCESS I;       00118600
00118700 0 0009                          ;  TO BE LOADED IT IS REFERENCED AS #FFE0. WHEN;       00118700
00118800 0 0009                          ;  IT HAS BEEN LOADED IT IS REFERENCED AS #0000;       00118800
00118900 0 0009   MCMBAS:     ATEST      ;  MODIFY REGISTER                             ;       00118900
0011900  0 000A   MCPROG:     PR         ;  PROGRAM BASE REGISTER                       ;       0011900 
00119100 0 000B   MCPC:       PC         ;  PROGRAM LOCATION COUNTER                    ;       00119100
00119200 0 000C   MCTIM:      0          ;  TIMER REGISTER                              ;       00119200
00119300 0 000D   MCPSW:      #E000      ;  PROCESS STATUS WORD; PRESET TO DISABLE ALL  ;       00119300
00119400 0 000E                          ;  INTERRUPTS (IO, CPU AND TIMER).             ;       00119400
00119500 0 000E   MCLNK:      0          ;  PROCESS LINK                                ;       00119500
AU000008 0 000F               -1                                                        ;       AU000008
AU000009 0 0010               -1, REPEAT 7; BASE AREA FOR THE PROCESS WHICH DOES NOT    ;       AU000009
AU000010 0 0018                          ;  PERFORM LOADING AND INITIALISATION          ;       AU000010
AU000011 0 0018               32, 32, PR, PC1, 0, #A000                                 ;       AU000011
AU000012 0 001E               LOC= 14                                                   ;       AU000012
00119700 0 000E               MCEM       ;  EMERGENCY ADDRESS                           ;       00119700
AU000013 0 000F   MCLINT:     MCEM       ;  LOCAL INTERRUPT ACTION ADDRESS              ;       AU000013
AU000014 0 0010   MCINTR:     0          ;  LOCAL INTERRUPT RETURN ADDRESS              ;       AU000014
AU000015 0 0011   MCINTC:     0          ;  LOCAL INTERRUPT CAUSE                       ;       AU000015
AU000016 0 0012                          ;  CAUSE CODES:                                ;       AU000016
AU000017 0 0012               PAER=2     ;  PARITY ERROR                                ;       AU000017
AU000018 0 0012               TOER=3     ;  TIME OUT                                    ;       AU000018
AU000019 0 0012               0,0                                                       ;       AU000019
AU000020 0 0014   MCSEM:      0          ; MCB SEMAPHORE FOR CONTROLLING SINGLE ACCESS  ;       AU000020
AU000021 0 0015                          ; TO BOOTING                                   ;       AU000021
00120300 0 0015   MCLD:       0          ;  LOADING DISKETTE DRIVE. POSSIBLE VALUES     ;       00120300
00120400 0 0016              ;0          ;  DISKETTE DRIVE 0                            ;       00120400
00120500 0 0016              ;1          ;  DISKETTE DRIVE 1                            ;       00120500
AU000022 0 0016  DRVSTA:      0,0        ; DRIVE STATUS FOR TWO DRIVES:                 ;       AU000022
AU000023 0 0018         DRINIT:=     0   ; INITIALISED                                  ;       AU000023
AU000024 0 0018         DRNRDY:=     1   ; NOT READY                                    ;       AU000024
AU000025 0 0018         DRFAULT:=    2   ; FAULT                                        ;       AU000025
AU000026 0 0018         DRNOBM:=     3   ; NO BOOT MODULE ON THIS DRIVE                 ;       AU000026
AU000027 0 0018         DRVOK:=      4   ; DRIVE OK, BOOT MODULE OK                     ;       AU000027
AU000028 0 0018   CDSTA:      0          ; STATUS                                       ;       AU000028
00120600 0 0019   MCPADI:     0          ;  PROGRAM ADDRESS, INITIAL VALUE              ;       00120600
00120700 0 001A   MCPPGI:     0          ;  PROGRAM MEMORY SECTION (PAGE), INITIAL VALUE;       00120700
0012080  0 001B   MCIBS:      0          ;  INITIALIZATION PROCESS BASE                 ;       0012080 
00120900 0 001C   MCCNTI:     0          ;  PROGRAM LENGTH, INITIAL VALUE               ;       00120900
00121000 0 001D   MCCHECK:    0          ;  CHECKWORD                                   ;       00121000
00121100 0 001E   MCDMM:      0          ;  DUMMY                                       ;       00121100
0012120  0 001F   MCPAD:      0          ;  PROGRAM ADDRESS, CURRENT VALUE              ;       0012120 
00121300 0 0020   MCPPG:      0          ;  PROGRAM MEMORY SECTION (PAGE), CURRENT VALUE;       00121300
00121400 0 0021   MCDUM:      0          ;  DUMMY                                       ;       00121400
00121500 0 0022   MCCNT:      0          ;  PROGRAM LENGTH, CURRENT VALUE               ;       00121500
         0 0023 ;-----------------------------------------------------------------------;               
AU000029 0 0023 ;                                                                       ;       AU000029
AU000030 0 0023 ; CONSTANTS RELATED TO OC                                               ;       AU000030
AU000031 0 0023 ;                                                                       ;       AU000031
         0 0023 ;-----------------------------------------------------------------------;               
AU000032 0 0023   MCOCAD=     1          ; IO ADDRESS OF OC                             ;       AU000032
AU000033 0 0023   OCORD=      11         ; OUTPUT READY FLAG                            ;       AU000033
AU000034 0 0023   OCENAB=     3          ; ENABLE OC COMMAND                            ;       AU000034
00125100 0 0023 ;-----------------------------------------------------------------------;       00125100
00125300 0 0023 ; DISKETTE DATA                                                         ;       00125300
00125500 0 0023 ;-----------------------------------------------------------------------;       00125500
00125600 0 0023   BENTRY:                ;  BOOT ENTRY                                  ;       00125600
00125700 0 0023               1          ;  AREA SIZE                                   ;       00125700
00125800 0 0024               1          ;  SEGMENTS                                    ;       00125800
00125900 0 0025               0          ;  HIBLOCKS                                    ;       00125900
00126000 0 0026               1          ;  BLOCKING                                    ;       00126000
00126100 0 0027               0<8+1      ;  AREA                                        ;       00126100
0012620  0 0028   AX=LOC                                                                ;       0012620 
00126300 0 0028 LOC=0                                                                   ;       00126300
00126400 0 0000   EAREAS=10                                                             ;       00126400
00126500 0 0000   BEAREE:     0          ;  BEAREASIZE                                  ;       00126500
00126600 0 0001   BESEGS:     0          ;  BESEGMENTS                                  ;       00126600
00126700 0 0002   BEHIBK:     0          ;  BEHIBLOCK                                   ;       00126700
00126800 0 0003   BEBLOG:     0          ;  BEBLOCKING                                  ;       00126800
00126900 0 0004   BEAREA:     0                                                         ;       00126900
00127000 0 0005               REPEAT(EAREAS - 1)    ; BEAREA                            ;       00127000
00127100 0 000E   BEFIRT:     0          ;  FIRST ADDRESS                               ;       00127100
00127200 0 000F   BEPAGE:     0          ;  MEMORY SECTION (PAGE)                       ;       00127200
00127300 0 0010   BEBASS:     0          ;  BASE ADDRESS                                ;       00127300
00127400 0 0011   BECOUT:     0          ;  WORD COUNT                                  ;       00127400
00127500 0 0012   BECHECK:    0          ;  CHECKSUM OF DISK FILE                       ;       00127500
00127600 0 0013   CHECKM:     0          ;  CHECK SUM OF BOOT ENTRY                     ;       00127600
00127700 0 0014   BENTRYH:   0           ;  ENTRY LENGTH                                ;       00127700
00127800 0 0015   LOC=AX                                                                ;       00127800
00127900 0 0028   TRACK:      -1                                                        ;       00127900
00128000 0 0029   FDLINK:     0                                                         ;       00128000
00128100 0 002A   BLOCKNR:    0                                                         ;       00128100
0012820  0 002B   INITCTRL:   0                                                         ;       0012820 
00128300 0 002C   STACK:      0, REPEAT 30                                              ;       00128300
00128400 0 004B   ESTACK:     0                                                         ;       00128400
0012850  0 004C   BLKBUF:     REPEAT BENTRYLENGTH                                       ;       0012850 
00128600 0 0060   MEMBUF:     REPEAT 64                                                 ;       00128600
00128700 0 00A0 ;-----------------------------------------------------------------------;       00128700
00128900 0 00A0 ; CONSTANTS AND DEFINITIONS RELATED TO DISKETTE                         ;       00128900
00129100 0 00A0 ;-----------------------------------------------------------------------;       00129100
00129200 0 00A0   FD=2                   ; DISKETTE IO ADDRESS                          ;       00129200
0012930  0 00A0   FSEEK=  2#0100<11                                                     ;       0012930 
00129400 0 00A0   FREST=  2#1000<11                                                     ;       00129400
00129500 0 00A0   FREAD=  2#0010<11                                                     ;       00129500
00129600 0 00A0   FRESET= #80                                                           ;       00129600
0013590  0 00A0 ;-----------------------------------------------------------------------;       0013590 
00136100 0 00A0 ; END OF DATA AREA                                                      ;       00136100
00136300 0 00A0 ;-----------------------------------------------------------------------;       00136300
00136400 0 00A0 USE PROG                                                                ;       00136400
00136900 1 0000 ;-----------------------------------------------------------------------;       00136900
0013710  1 0000 ; START OF PROGRAM AREA                                                 ;       0013710 
AU000035 1 0000 ; MCSOCS                                                                ;       AU000035
AU000036 1 0000 ; SENSE OC STATUS AND RETURN WHEN READY FOR OUTPUT                      ;       AU000036
AU000037 1 0000 ;                                                                       ;       AU000037
AU000038 1 0000 ; REGISTERS          CALL               EXIT                            ;       AU000038
AU000039 1 0000 ; R0                                    DESTROYED                       ;       AU000039
AU000040 1 0000 ; R1                                    DESTROYED                       ;       AU000040
AU000041 1 0000 ; R4                 LINK               DESTROYED                       ;       AU000041
AU000042 1 0000 ;                                                                       ;       AU000042
         1 0000 ;-----------------------------------------------------------------------;               
AU000043 1 0000 MCSOCS:                             ;   BEGIN MCSOCS                    ;       AU000043
AU000044 1 0000         MOVC  MCOCAD            R0  ;                                   ;       AU000044
AU000045 1 0001         MOVC  OCENAB            R1  ;                                   ;       AU000045
AU000046 1 0002         CIO          R1         R0  ;   ENABLE OC                       ;       AU000046
AU000047 1 0003         SIO          R0         R0  ;   READ STATUS(OC)                 ;       AU000047
AU000048 1 0004         IBZ          R0  OCORD      ;   IF NOT READY FOR OUTPUT THEN    ;       AU000048
AU000049 1 0005         JMP   MCSOCS                ;     CALL MCSOCS                   ;       AU000049
AU000050 1 0006         JMP          X4             ;   RETURN                          ;       AU000050
AU000051 1 0007                                     ; END                               ;       AU000051
         1 0007 ;-----------------------------------------------------------------------;               
AU000052 1 0007 ;                                                                       ;       AU000052
AU000053 1 0007 ; MCWROC                                                                ;       AU000053
AU000054 1 0007 ; SUBROUTINE WRITE OUTPUT TO OC                                         ;       AU000054
AU000055 1 0007 ; REGISTERS          CALL               EXIT                            ;       AU000055
AU000056 1 0007 ; R0                 -                  DESTROYED                       ;       AU000056
AU000057 1 0007 ; R4                 LINK               LINK                            ;       AU000057
AU000058 1 0007 ; R7                 STACK              STACK                           ;       AU000058
AU000059 1 0007 ;                                                                       ;       AU000059
         1 0007 ;-----------------------------------------------------------------------;               
AU000060 1 0007 MCWROC:                             ; BEGIN                             ;       AU000060
AU000061 1 0007         MOVC  MCOCAD            R0  ;   OC=>DEVICE                      ;       AU000061
AU000062 1 0008         WIO          X7         R0  ;   0.STACK=>DEVICE                 ;       AU000062
AU000063 1 0009         JMP          X4             ; END                               ;       AU000063
         1 000A ;-----------------------------------------------------------------------;               
AU000064 1 000A ;                                                                       ;       AU000064
AU000065 1 000A ; MCOTCH                                                                ;       AU000065
AU000066 1 000A ; SUBROUTINE OUTPUT CHARACTER TO OC - MCOTCH                            ;       AU000066
AU000067 1 000A ;                                                                       ;       AU000067
AU000068 1 000A ; REGISTERS          CALL           EXIT                                ;       AU000068
AU000069 1 000A ; R0                 CHARACTER      CHARACTER                           ;       AU000069
AU000070 1 000A ; R5                 LINK           LINK                                ;       AU000070
AU000071 1 000A ; R7                 STACK          STACK                               ;       AU000071
AU000072 1 000A ;                                                                       ;       AU000072
         1 000A ;-----------------------------------------------------------------------;               
AU000073 1 000A MCOTCH:                                                                 ;       AU000073
AU000074 1 000A         STC   5                     ;  SAVE REGS 0-5                    ;       AU000074
AU000075 1 000B MCOTCH1:                            ; WAIT READY FOR OUTPUT             ;       AU000075
AU000076 1 000B         JMP          S4  MCSOCS     ;  READ STATUS OF OC IF             ;       AU000076
AU000077 1 000C         JMP          S4  MCWROC     ;   WRITE CHARACTER TO OC           ;       AU000077
AU000078 1 000D         UNS   5                     ;   RESTORE REGS 0-5                ;       AU000078
AU000079 1 000E         JMP          X5             ;   RETURN                          ;       AU000079
         1 000F ;-----------------------------------------------------------------------;               
AU000080 1 000F ; MCOTHXC                                                               ;       AU000080
00163000 1 000F ; SUBROUTINE OUTPUT ONE HEXADECIMAL CHARACTER - MCOTHXC                 ;       00163000
AU000081 1 000F ; MCOTHXC TAKES THE 4 LEAST SIGNIFICANT BITS OF R0 AND CONVERTS THE     ;       AU000081
AU000082 1 000F ; BINARY VALUE TO THE CORRESPONDING HEXADECIMAL CHARACTER (0 THRU F).   ;       AU000082
AU000083 1 000F ; MCOTHXC OUTPUTS THE CHARACTER. RETURN IS MADE TO LINK+0.              ;       AU000083
AU000084 1 000F ;                                                                       ;       AU000084
AU000085 1 000F ; REGISTERS          CALL           EXIT                                ;       AU000085
AU000086 1 000F ; R0                 BINARY         BINARY                              ;       AU000086
AU000087 1 000F ; R5                 LINK           LINK                                ;       AU000087
AU000088 1 000F ; R7                 STACK          STACK                               ;       AU000088
         1 000F ;-----------------------------------------------------------------------;               
AU000089 1 000F MCOTHXC:                                                                ;       AU000089
AU000090 1 000F         STC   5                     ;  SAVE REGS 0-5                    ;       AU000090
AU000091 1 0010         XTR          R0  4          ;   GET 4 BIT BINARY VALUE          ;       AU000091
AU000092 1 0011         ILO          R0  10         ;   CONVERT IT TO A HEXADECIMAL     ;       AU000092
AU000093 1 0012         ADDC  <:0:>-<:A:>+10    R0  ;   CHARACTER                       ;       AU000093
AU000094 1 0013         ADDC  <:A:>-10          R0  ;                                   ;       AU000094
AU000095 1 0014         JMP          S5  MCOTCH     ;   OUTPUT CHARACTER                ;       AU000095
AU000096 1 0015         UNS   5                     ;   RESTORE REGS 0-5                ;       AU000096
AU000097 1 0016         JMP          X5             ;   RETURN                          ;       AU000097
         1 0017 ;-----------------------------------------------------------------------;               
AU000098 1 0017 ;                                                                       ;       AU000098
AU000099 1 0017 ; MCOTHXW                                                               ;       AU000099
AU000100 1 0017 ; SUBROUTINE OUTPUT ONE HEXADECIMAL WORD - MCOTHXW                      ;       AU000100
AU000101 1 0017 ; MCOTHXW CONVERTS A 16 BIT BINARY VALUE TO 4 HEXADECIMAL CHARACTERS    ;       AU000101
AU000102 1 0017 ; AND WRITE THOSE IN SEQUENCE (MOST SIGNIFICANT FIRST).                 ;       AU000102
AU000103 1 0017 ; REGISTERS          CALL           EXIT                                ;       AU000103
AU000104 1 0017 ; R0                 16 BIT BINARY  16 BIT BINARY                       ;       AU000104
AU000105 1 0017 ; R5                 LINK           LINK                                ;       AU000105
AU000106 1 0017 ;                                                                       ;       AU000106
         1 0017 ;-----------------------------------------------------------------------;               
AU000107 1 0017 MCOTHXW:                                                                ;       AU000107
AU000108 1 0017         STC   5                     ;  SAVE REGS 0-5                    ;       AU000108
AU000109 1 0018         MOVC  4                 R1  ;  PRESET LOOP COUNT                ;       AU000109
AU000110 1 0019 MCOTHXL:                            ; LOOP START:                       ;       AU000110
AU000111 1 0019         SLC          R0  4          ;   GET NEXT 4 BIT BINARY VALUE     ;       AU000111
AU000112 1 001A         JMP          S5  MCOTHXC    ;   CONVERT AND OUTPUT              ;       AU000112
AU000113 1 001B         SOB          R1  MCOTHXL    ;  IF NOT DONE GO TO LOOP START     ;       AU000113
AU000114 1 001C         UNS   5                     ;   RESTORE REGS 0-5                ;       AU000114
AU000115 1 001D         JMP          X5             ;   RETURN                          ;       AU000115
         1 001E ;-----------------------------------------------------------------------;               
AU000116 1 001E ; MCWRST                                                                ;       AU000116
AU000117 1 001E ; WRITE STRING                                                          ;       AU000117
         1 001E ; FIRST LOCATION AFTER CALL MUST CONTAIN A WORD COUNT. SUBSEQUENT LOCATI;               
AU000118 1 001E ; ONS MUST CONTAIN THE CORRESPONDING STRING.                            ;       AU000118
AU000119 1 001E ;                                                                       ;       AU000119
AU000120 1 001E ; REGISTERS          CALL               EXIT                            ;       AU000120
AU000121 1 001E ; R5                 LINK               DESTROYED                       ;       AU000121
AU000122 1 001E ; R7                 STACK              STACK                           ;       AU000122
AU000123 1 001E ;                                                                       ;       AU000123
         1 001E ;-----------------------------------------------------------------------;               
AU000124 1 001E MCWRST:                             ; BEGIN WRITE                       ;       AU000124
AU000125 1 001E         STC   5                     ;                                   ;       AU000125
AU000126 1 001F         MVP   0.     X5         R3  ;   N:=0.LINK                       ;       AU000126
AU000127 1 0020 MC0100:                             ; REPEAT                            ;       AU000127
AU000128 1 0020         MOV   5.     X7         R5  ;   RESTORE LINK                    ;       AU000128
AU000129 1 0021         MVP   1.     X5         R0  ;   CHAR:=LOWERBYTE(1.LINK)         ;       AU000129
AU000130 1 0022         JMP          S5  MCOTCH     ;   WRITE(CHAR)                     ;       AU000130
AU000131 1 0023         SWP          R0             ;   CHAR:=UPPERBYTE(1.LINK)         ;       AU000131
AU000132 1 0024         JMP          S5  MCOTCH     ;   WRITE(CHAR)                     ;       AU000132
AU000133 1 0025         INC   5.     X7             ;   LINK:=LINK+1                    ;       AU000133
AU000134 1 0026         SOB          R3  MC0100     ;   N:=N-1                          ;       AU000134
AU000135 1 0027                                     ; UNTIL N=0                         ;       AU000135
AU000136 1 0027         UNS   5                     ;                                   ;       AU000136
AU000137 1 0028         JMP   1.     X5             ;   RETURN                          ;       AU000137
AU000138 1 0029                                     ; END                               ;       AU000138
         1 0029 ;-----------------------------------------------------------------------;               
AU000139 1 0029 ; MCNL                                                                  ;       AU000139
AU000140 1 0029 ; WRITE NEW LINE                                                        ;       AU000140
AU000141 1 0029 ;                                                                       ;       AU000141
         1 0029 ;-----------------------------------------------------------------------;               
AU000142 1 0029 MCNL:                               ; BEGIN                             ;       AU000142
AU000143 1 0029         STC   5                     ;                                   ;       AU000143
AU000144 1 002A         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000144
AU000145 1 002B MCNL1:  NL1L, <:<13><10>:>,0,0,0    ;   'CR LF NULL NULL NULL NULL NULL ;       AU000145
AU000146 1 0030         NL1L=LOC-MCNL1-1            ;   NULL')                          ;       AU000146
AU000147 1 0030         UNS   5                     ;                                   ;       AU000147
AU000148 1 0031         JMP          X5             ;   RETURN                          ;       AU000148
AU000149 1 0032                                     ; END                               ;       AU000149
00139900 1 0032 ;-----------------------------------------------------------------------;       00139900
00140100 1 0032 ; SUBROUTINE READ PROGRAM WORD - MCRDP                                  ;       00140100
00140200 1 0032 ; MCRDP READS A PROGRAM WORD FROM THE CURRENT PROGRAM LOCATION  DEFINED ;       00140200
00140300 1 0032 ; BY:                                                                   ;       00140300
00140400 1 0032 ;       CURRENT PROGRAM ADDRESS                                         ;       00140400
00140500 1 0032 ;       CURRENT PAGE SELECTOR                                           ;       00140500
00140600 1 0032 ; AND INCREMENTS                                                        ;       00140600
00140700 1 0032 ;       CURRENT PROGRAM ADDRESS                                         ;       00140700
00140800 1 0032 ; IF CURRENT PROGRAM ADDRESS PASSES A MEMORY SECTION BOUNDARY, CURRENT  ;       00140800
0014090  1 0032 ; PAGE SELECTOR IS ALSO UPDATED.                                        ;       0014090 
00141200 1 0032 ; INPUT                                                                 ;       00141200
00141300 1 0032 ;  MCPAD                                                                ;       00141300
00141400 1 0032 ;  MCPPG                                                                ;       00141400
00141500 1 0032 ; OUTPUT                                                                ;       00141500
00141600 1 0032 ;  MCPAD                                                                ;       00141600
00141700 1 0032 ;  MCPPG                                                                ;       00141700
00142400 1 0032 ; REGISTER           CALL           EXIT                                ;       00142400
00142500 1 0032 ; R0                 -              PROGRAM WORD                        ;       00142500
00142600 1 0032 ; R1                 -              DESTROYED                           ;       00142600
00142700 1 0032 ; R2                 -              DESTROYED                           ;       00142700
00142800 1 0032 ; R3                 -              DESTROYED                           ;       00142800
00142900 1 0032 ; R4                 LINK           LINK                                ;       00142900
00143000 1 0032 ; R6                 -              DESTROYED                           ;       00143000
00143100 1 0032 ;                                                                       ;       00143100
         1 0032 ;-----------------------------------------------------------------------;               
AU000150 1 0032 LOASEL=0                                                                ;       AU000150
AU000151 1 0032 STOSEL=1                                                                ;       AU000151
00144200 1 0032 MCRDP:  MODC  LOASEL-STOSEL         ;  DEFINE LOAD/STORE SELECTOR       ;       00144200
0014320  1 0033 ;-----------------------------------------------------------------------;       0014320 
00143600 1 0033 ; SUBROUTINE STORE ASSEMBLED PROGRAM WORD - MCSTO                       ;       00143600
00143700 1 0033 ; MCSTO IS SIMILAR TO MCRDP EXCEPT THAT IT STORES INSTEAD OF READS A    ;       00143700
00143800 1 0033 ; PROGRAM WORD.                                                         ;       00143800
00143900 1 0033 ; REFER TO MCRDP.                                                       ;       00143900
00144100 1 0033 ;-----------------------------------------------------------------------;       00144100
00144300 1 0033 MCSTO:  MOVC  STOSEL            R6  ;                                   ;       00144300
0014440  1 0034         MOV   MCPAD             R1  ;  GET CURRENT PROGRAM ADDRESS      ;       0014440 
00144500 1 0035         MOVC  MCPPG             R2  ;  GET CURRENT PROGRAM PAGE         ;       00144500
00144600 1 0036         SVS                     R3  ;  SAVE PSW                         ;       00144600
0014470  1 0037         IOR          R3         X2  ;  DEFINE INTERRUPT MASK            ;       0014470 
00144800 1 0038         LDS          X2             ;  SWITCH TO CURRENT PROGRAM PAGE   ;       00144800
00144900 1 0039         IEQ          R6  LOASEL     ;  IF ACTION IS TO LOAD THEN        ;       00144900
00145000 1 003A         MOV          X1         R0  ;    GET PROGRAM WORD               ;       00145000
00145100 1 003B         IEQ          R6  STOSEL     ;  IF ACTION IS TO STORE THEN       ;       00145100
00145200 1 003C         MOV          R0         X1  ;    STORE PROGRAM WORD             ;       00145200
00145300 1 003D         LDS          R3             ;  RESTORE PSW                      ;       00145300
00145400 1 003E         ADDC  1                 R1  ;  INCREMENT CURRENT PROGRAM ADDRESS;       00145400
00145500 1 003F         MOV          R1  MCPAD      ;                                   ;       00145500
00145600 1 0040         JON          R1  MCSTOR     ;  IF THE PROGRAM ADDRESS DOES NOT  ;       00145600
00145700 1 0041                                     ;  CROSS A MEMORY SECTION BOUNDARY  ;       00145700
00145800 1 0041                                     ;  THEN RETURN ELSE                 ;       00145800
00145900 1 0041         MOV          X2         R3  ;                                   ;       00145900
00146000 1 0042         ADDC  1*4               R3  ;    INCREMENT CURRENT PAGE SELECTOR;       00146000
00146100 1 0043         MODC  3*4                   ;                                   ;       00146100
0014620  1 0044         PUT          R3         X2  ;                                   ;       0014620 
00146300 1 0045 MCSTOR: JMP          X4             ;  RETURN                           ;       00146300
00218900 1 0046 ;-----------------------------------------------------------------------;       00218900
00219100 1 0046 ; MCCTO                                                                 ;       00219100
00219200 1 0046 ; CLEAR UP AFTER TIME OUT.                                              ;       00219200
0021930  1 0046 ; MCCTO IS ENTERED WHEN A LOCAL INTERRUPT IS GENERATED IN THE CP.       ;       0021930 
00219400 1 0046 ; (TIME OUT, ILLEGAL INSTRUCTION, OR PARITY ERROR ON MEMORY).           ;       00219400
AU000152 1 0046 ; MCTTO RESETS THE PSW AND PERFORMS RECOVERY BY EXECUTION OF            ;       AU000152
AU000153 1 0046 ;       JMP          X4                                                 ;       AU000153
00221500 1 0046 ;-----------------------------------------------------------------------;       00221500
0022160  1 0046 MCCTO:                                                                  ;       0022160 
AU000154 1 0046         MOV          R7  MC7        ;   SAVE R7                         ;       AU000154
AU000155 1 0047         MOVC  #E000             R7  ;   RESTORE PSW                     ;       AU000155
00222000 1 0049         LDS          R7             ;                                   ;       00222000
AU000156 1 004A         MOV   MC7               R7  ;   RESTORE R7                      ;       AU000156
0022260  1 004B         JMP          X4             ;  RETURN                           ;       0022260 
0022450  1 004C ;-----------------------------------------------------------------------;       0022450 
002248   1 004C ; INITIALISE THE MCB                                                    ;       002248  
00224900 1 004C ; MCINI IS ENTERED WHEN THE PROMMED MCB PROCESS IS LOADED, I.E. AT      ;       00224900
002250   1 004C ; START AND RESTART.                                                    ;       002250  
00225100 1 004C ; MCINI UPDATES THE PROCESS DESCRIPTOR OF THE ACTIVE MCB PROCESS.       ;       00225100
002252   1 004C ; THIS IS NECESSARY BECAUSE THE PROMMED MCB PROCESS DESCRIPTOR IS       ;       002252  
0022530  1 004C ; DISPLACED ( BASE CONTENT NOT EQUAL TO BASE ADDRESS).                  ;       0022530 
00225400 1 004C ; MCINI INITIALISES                                                     ;       00225400
00225500 1 004C ;     THE BENTRY FILE (FROM PROMMED REGISTERS)                          ;       00225500
0022560  1 004C ;     THE STACK BY PRESETTING THE STACK POINTER                         ;       0022560 
00225700 1 004C ;     THE COMMAND DEVICE STATUS WORD CDSTA (=OCSTA=MPSTA)               ;       00225700
0022710  1 004C ; REGISTERS          ENTRY          EXIT                                ;       0022710 
0022720  1 004C ; R6                 -              ADDRESS OF CDSTA                    ;       0022720 
00227300 1 004C ; R7                 -              ESTACK                              ;       00227300
00228500 1 004C ;-----------------------------------------------------------------------;       00228500
AU000157 1 004C MCINI:                              ; BEGIN MCINI                       ;       AU000157
AU000158 1 004C         SVP   MCINI2                ;   UPDATE REGISTER SAVE AREA       ;       AU000158
AU000159 1 004D         MOV          R0  MCLINT     ;   UPDATE LOCAL INTERRUPT ACTION   ;       AU000159
0022883  1 004E         MOVC  0                 R0  ;                                   ;       0022883 
AU000160 1 004F         MOV          R0  MCINTC     ;   CLEAR MCINTC                    ;       AU000160
AU000161 1 0050         MOV          R0  MCSEM      ;   CLEAR MCSEM                     ;       AU000161
AU000162 1 0051         MOVC  MCLD              R7  ;   CLEAR WORK AREA                 ;       AU000162
AU000163 1 0052         MOVC  MCLD+1            R6  ;                                   ;       AU000163
0022884  1 0053         MOV          R0         X7  ;                                   ;       0022884 
00228850 1 0054 MCCLLP:                                                                 ;       00228850
0022886  1 0054         ILOP         R6  ESTACK+1   ;                                   ;       0022886 
0022887  1 0056         MOVM         X7         X6  ;                                   ;       0022887 
00228880 1 0057         JMP   MCCLLP                ;                                   ;       00228880
00228884 1 0058         LDN          R0             ;                                   ;       00228884
0022888  1 0059 MCINI2:                                                                 ;       0022888 
AU000164 1 0059 MCGATE:                             ;                                   ;       AU000164
AU000165 1 0059         MOVC  200               R0  ;                                   ;       AU000165
AU000166 1 005A MCWAIT:                             ;                                   ;       AU000166
AU000167 1 005A         SOB          R0  MCWAIT     ;   WAIT 200 MICROSECS              ;       AU000167
AU000168 1 005B         MOVC  MCSEM             R0  ;                                   ;       AU000168
AU000169 1 005C         RESS         X0  0          ;   RESERVE(MCSEM,0)                ;       AU000169
AU000170 1 005D         JMP & MCWAITCPU             ;   (LOST: WAIT FOR CPU INTERRUPT,  ;       AU000170
AU000171 1 005E                                     ;    WON:  CONTINUE)                ;       AU000171
00228900 1 005E         MOVC  ESTACK            R7  ;  INITIALISE STACK                 ;       00228900
AU000172 1 005F         JMP          S5  MCNL       ;   WRITENL                         ;       AU000172
AU000173 1 0060         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000173
AU000174 1 0061 MCST1:  ST1L, <:INITIALISING CPU= :>;   'INITIALISING CPU= '            ;       AU000174
AU000175 1 006B         ST1L=LOC-MCST1-1            ;   )                               ;       AU000175
AU000176 1 006B         SVS          R0             ;                                   ;       AU000176
AU000177 1 006C         SWP          R0             ;   NMB:= CPU NUMBER                ;       AU000177
AU000178 1 006D         XTR          R0  3          ;                                   ;       AU000178
AU000179 1 006E         JMP          S5  MCOTHXC    ;   WRITE(NMB)                      ;       AU000179
AU000180 1 006F         JMP          S5  MCNL       ;                                   ;       AU000180
AU000181 1 0070         MOVC  CDSTA             R6  ;                                   ;       AU000181
AU000182 1 0071         CLR          X6             ;   CDSTA:=0                        ;       AU000182
AU000183 1 0072         JMP   MCSETP                ;   GO TO CHECK/SET PARITY          ;       AU000183
AU000184 1 0073 MCWAITCPU:                          ; WAIT FOR CPU INTERRUPT:           ;       AU000184
AU000185 1 0073         MOVC  #FFF0             R0  ;   LOAD PROCESS WHICH DOES NOT     ;       AU000185
AU000186 1 0074         LDN          R0             ;   PERFORM LOADING AND INITIALISAT ;       AU000186
AU000187 1 0075 MCWAITCPUX:                                                             ;       AU000187
AU000188 1 0075         JMP   MCWAITCPUX            ;                                   ;       AU000188
         1 0076 ;-----------------------------------------------------------------------;               
AU000189 1 0076 ;                                                                       ;       AU000189
AU000190 1 0076 ; MCSETP                                                                ;       AU000190
AU000191 1 0076 ; SUBROUTINE CHECK AND RESET PARITY                                     ;       AU000191
         1 0076 ; MCSETP INSPECTS ALL RAM LOCATIONS. IF A PARITY ERROR IS FOUND THEN THE;               
AU000192 1 0076 ; CORRESPONDING LOCATION IS CLEARED AND THE PARITY ERROR IS INDICATED   ;       AU000192
AU000193 1 0076 ; IN CDSTA.                                                             ;       AU000193
AU000194 1 0076 ;                                                                       ;       AU000194
AU000195 1 0076 ; INPUT                                                                 ;       AU000195
AU000196 1 0076 ;  MCPAD, MCPPG                                                         ;       AU000196
AU000197 1 0076 ; OUTPUT                                                                ;       AU000197
AU000198 1 0076 ;  MCPAD, MCPPG, CDSTA                                                  ;       AU000198
AU000199 1 0076 ;                                                                       ;       AU000199
AU000200 1 0076 ; REGISTERS          CALL           EXIT                                ;       AU000200
AU000201 1 0076 ; ALL BUT R7         -              DESTROYED                           ;       AU000201
AU000202 1 0076 ; R7                 STACK          STACK                               ;       AU000202
AU000203 1 0076 ;                                                                       ;       AU000203
AU000204 1 0076 ; CALLS                                                                 ;       AU000204
AU000205 1 0076 ;  MCRDP, MCSTO, MCSTOP                                                 ;       AU000205
AU000206 1 0076 ; CALLED BY                                                             ;       AU000206
AU000207 1 0076 ;  MCTSCM                                                               ;       AU000207
AU000208 1 0076 ;                                                                       ;       AU000208
         1 0076 ;-----------------------------------------------------------------------;               
AU000209 1 0076 MCSETP:                             ; CHECK/RESET PARITY                ;       AU000209
AU000210 1 0076         MOVC  0                 R6  ;                                   ;       AU000210
AU000211 1 0077         MOV          R6  MCPPG      ;   START ADDRESS:=0                ;       AU000211
AU000212 1 0078         MOV          R6  MCPAD      ;                                   ;       AU000212
AU000213 1 0079         MOVC  MCINTC            R5  ;                                   ;       AU000213
AU000214 1 007A MCPACH:                             ;   FOR I=0 STEP 1 UNTIL 256K-1 DO  ;       AU000214
AU000215 1 007A         MOVC  0                 R0  ;   BEGIN                           ;       AU000215
AU000216 1 007B         MOV          R0         X5  ;   MCINTC:=0                       ;       AU000216
AU000217 1 007C         JMP          S4  MCRDP      ;     READ CURRENT LOCATION         ;       AU000217
AU000218 1 007D         JON          X5  MCPER      ;     IF TIME OUT OR PARITY ERROR   ;       AU000218
AU000219 1 007E MCPACH1:                            ;                                   ;       AU000219
AU000220 1 007E         MOVC  MCPAD             R6  ;                                   ;       AU000220
AU000221 1 007F         JON          X6  MCPACH     ;     THEN ERROR                    ;       AU000221
AU000222 1 0080         MOVC  MCPAD             R6  ;                                   ;       AU000222
AU000223 1 0081         MOV   MCPPG             R0  ;                                   ;       AU000223
AU000224 1 0082         XTR          R0  4          ;                                   ;       AU000224
AU000225 1 0083         SRL          R0  2          ;                                   ;       AU000225
AU000226 1 0084         JON          R0  MCPACH     ;   END                             ;       AU000226
AU000227 1 0085         MOVC  ESTACK            R7  ;   RESTORE STACK                   ;       AU000227
AU000228 1 0086         JMP   MCSETPEND             ;   GO TO END OF PARITY CHECK/SET   ;       AU000228
AU000229 1 0087 MCPER:                              ; ERROR:                            ;       AU000229
AU000230 1 0087         MOVC  CDSTA             R6  ;   BEGIN                           ;       AU000230
AU000231 1 0088         IEQP         X5  PAER       ;     IF PARITY ERROR THEN          ;       AU000231
AU000232 1 0089         MOV          X5         X6  ;       SAVE ERROR CODE             ;       AU000232
AU000233 1 008A         JMP          S4  MCSTO      ;       CLEAR LOCATION              ;       AU000233
AU000234 1 008B         INE          X5  TOER       ;     ELSE IF TIME OUT THEN         ;       AU000234
AU000235 1 008C         JMP   MCPACH1               ;     ADVANCE LOCATION TO NEXT 4K   ;       AU000235
AU000236 1 008D         MOVC  MCPAD             R6  ;   END                             ;       AU000236
AU000237 1 008E         MOV          X6         R0  ;                                   ;       AU000237
AU000238 1 008F         XTR          R0  12         ;                                   ;       AU000238
AU000239 1 0090         SUB          R0         X6  ;                                   ;       AU000239
AU000240 1 0091         MOVC  4096              R0  ;                                   ;       AU000240
AU000241 1 0093         ADD          R0         X6  ;                                   ;       AU000241
AU000242 1 0094         JON          X6  MCPACH1    ;                                   ;       AU000242
AU000243 1 0096         MOVC  MCPPG             R6  ;                                   ;       AU000243
AU000244 1 0097         MOV          X6         R3  ;                                   ;       AU000244
AU000245 1 0098         ADDC  1*4               R3  ;                                   ;       AU000245
AU000246 1 0099         MODC  3*4                   ;                                   ;       AU000246
AU000247 1 009A         PUT          R3         X6  ;                                   ;       AU000247
AU000248 1 009B         JMP   MCPACH1               ;                                   ;       AU000248
AU000249 1 009C                                                                         ;       AU000249
AU000250 1 009C MCSETPEND:                          ; END OF PARITY CHECK/SET:          ;       AU000250
AU000251 1 009C         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000251
AU000252 1 009D MCST2:  ST2L, <:MEMORY PARITY :>    ;   'MEMORY PARITY '                ;       AU000252
AU000253 1 00A5         ST2L=LOC-MCST2-1            ;   )                               ;       AU000253
AU000254 1 00A5         MOV   CDSTA             R0  ;   IF PARITY ERROR THEN            ;       AU000254
AU000255 1 00A6         JOZ          R0  MC0200     ;                                   ;       AU000255
AU000256 1 00A7         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000256
AU000257 1 00A8 MCST3:  ST3L, <:ERROR:>             ;   'ERROR'                         ;       AU000257
AU000258 1 00AC         ST3L=LOC-MCST3-1            ;   )                               ;       AU000258
AU000259 1 00AC         JMP   MC0210                ;   ELSE                            ;       AU000259
AU000260 1 00AD MC0200:                                                                 ;       AU000260
AU000261 1 00AD         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000261
AU000262 1 00AE MCST4:  ST4L, <:OK:>                ;   'OK'                            ;       AU000262
AU000263 1 00B0         ST4L=LOC-MCST4-1                                                ;       AU000263
AU000264 1 00B0 MC0210:                             ;   )                               ;       AU000264
AU000265 1 00B0         JMP          S5  MCNL       ;   WRITENL                         ;       AU000265
AU000266 1 00B1         MOVC  0                 R0  ;   DISK:=0                         ;       AU000266
00273900 1 00B2 ;-----------------------------------------------------------------------;       00273900
00274000 1 00B2 ;                                                                       ;       00274000
00274100 1 00B2 ; LOAD FROM DISKETTE:                                                   ;       00274100
00274200 1 00B2 ; LOAD BOOTSTRAP BLOCK AND CHECK IT.                                    ;       00274200
00274300 1 00B2 ; IF OK, THEN LOAD FILE DESCRIBED BY THE BOOTSTRAP BLOCK;               ;       00274300
00274400 1 00B2 ;                                                                       ;       00274400
         1 00B2 ;-----------------------------------------------------------------------;               
00274600 1 00B2 ;                                                                       ;       00274600
00274700 1 00B2 MCFDLD:                             ;  MCFDLD:                          ;       00274700
00274800 1 00B2         XTR          R0  1                                              ;       00274800
00274900 1 00B3         MOV          R0  MCLD                                           ;       00274900
AU000267 1 00B4         MOVC  -32               R7  ;   INITIALISE BENTRY FILE          ;       AU000267
AU000268 1 00B5         UNS   7                     ;                                   ;       AU000268
AU000269 1 00B6         STC   6                     ;                                   ;       AU000269
00275000 1 00B7         MOD   MCLD                  ;                                   ;       00275000
00275100 1 00B8         MOVC  FSEEK             R2  ;   SEEK TRACK 0 OF LOAD DEVICE;    ;       00275100
00275200 1 00BA         JMP          S6  CONTROL    ;                                   ;       00275200
00275300 1 00BB         MOVC  0                 R3  ;   0=>BLOCKNR;                     ;       00275300
00275400 1 00BC         MOV          R3  INITCTRL   ;   0=>0.INITCONTROL;               ;       00275400
00275500 1 00BD         MOV          R3  MCPPG      ;   0=>CURRENT PAGE SELECTOR        ;       00275500
00275600 1 00BE         MOVC  BLKBUF            R4  ;                                   ;       00275600
00275700 1 00BF         MOV          R4  MCPAD      ;   RE.BLKBUF=>0.WORDADDRESS;       ;       00275700
00275800 1 00C0         MOVC  BENTRY            R5  ;   BENTRY=>   RE.ENTRY;            ;       00275800
00275900 1 00C1         JMP          S6  BLOCKIO    ;   BLOCKIO;                        ;       00275900
00276000 1 00C2         JMP          S6  WAITTR     ;   WAITTRANSFER;                   ;       00276000
00276100 1 00C3         JMP          S6  RESTORE    ;   STORE DATA;                     ;       00276100
00276200 1 00C4         MOVC  0                 R6  ;                                   ;       00276200
00276300 1 00C5         MOV          R6  INITCTRL   ;   0=>0.INITCONTROL;               ;       00276300
00276400 1 00C6         MOVC  BLKBUF            R5  ;   RE.ENTRY;                       ;       00276400
00276500 1 00C7         MOVL  BEFIRT.X5         R01 ;   FIRST ADDRESS,PAGE=>            ;       00276500
00276600 1 00C8         MOVL         R01 MCPAD. X6  ;      PROGRAM ADDRESS,PAGE/CURRENT,;       00276600
00276700 1 00C9         MOVL         R01 MCPADI.X6  ;      PROGRAM ADDRESS,PAGE/INITIAL;;       00276700
00276800 1 00CA         MOVL  BEBASS.X5         R01 ;   BASEADDRESS,WORDCOUNT           ;       00276800
00276900 1 00CB         MOVL         R01 MCIBS. X6  ;      => INIATOR PROCESS,          ;       00276900
00277000 1 00CC                                     ;            PROGRAM LENGTH/INITIAL;;       00277000
00277100 1 00CC         MOV   BECHEK.X5         R0  ;   BECHECK.ENTRY=>                 ;       00277100
00277200 1 00CD         MOV          R0  MCCHECK    ;       0.MCCHECK;                  ;       00277200
00277300 1 00CE         MOVC  BENTRYLENGTH-1    R3  ;   BENTRYLENGTH-1=>COUNT;          ;       00277300
00277400 1 00CF         MOVC  0                 R4  ;   0=>CHECKSUM;                    ;       00277400
00277500 1 00D0 L20:                                ; CALCULATE:                        ;       00277500
00277600 1 00D0         ADD   0.     X5         R4  ;   0.ENTRY+CHECKSUM=>CHECKSUM;     ;       00277600
00277700 1 00D1         ADDC  1                 R5  ;   INCR(RE.ENTRY);                 ;       00277700
00277800 1 00D2         SOB          R3  L20        ;   IF DECR(COUNT)<>0 THEN          ;       00277800
00277900 1 00D3                                     ;      GOTO CALCULATE;              ;       00277900
00278000 1 00D3         MOV   0.     X5         R5  ;   0.ENTRY=>CHECKSUM;              ;       00278000
00278100 1 00D4         INE          R4         R5  ;   IF CHECKSUM<>SUM THEN           ;       00278100
00278200 1 00D5         JMP              ENTRYERROR ;      GOTO ENTRYERROR;             ;       00278200
00278300 1 00D6         MOVC  BLKBUF            R5  ;                                   ;       00278300
00278400 1 00D7 L21:                                ; NEXTBLOCK:                        ;       00278400
00278500 1 00D7         MOV          R3  BLOCKNR    ;   BLOCKNR=>BLOCKNR;               ;       00278500
00278600 1 00D8         JMP          S6  BLOCKIO    ;   BLOCKIO;                        ;       00278600
AU000270 1 00D9         MOV   BLOCKNR           R3  ;   0.BLOCKNR=>BLOCKNR              ;       AU000270
00278800 1 00DA         INEP         R3  BEHIBK.X5  ;   IF BLOCKNR=BEHIBLOCK.ENTRY THEN ;       00278800
00278900 1 00DC         ADDC  1                 R3  ;      INCR(BLOCKNR);               ;       00278900
00279000 1 00DD         JMP              L21        ;      GOTO NEXTBLOCK;              ;       00279000
00279100 1 00DE         JMP          S6  WAITTR     ;   WAITTRANSFER;                   ;       00279100
00279200 1 00DF         JMP          S6  RESTORE    ;   STORE LAST DATA;                ;       00279200
AU000271 1 00E0         JMP   BOOTOK                ;   GO TO BOOT OK                   ;       AU000271
AU000272 1 00E1 DISKERR:                            ; DISKERROR:                        ;       AU000272
AU000273 1 00E1         IBZ          R2  11         ;   IF DRIVE FAULT THEN             ;       AU000273
AU000274 1 00E2         JMP   DEVICEERR             ;     GO TO DEVICEERROR             ;       AU000274
AU000275 1 00E3         MODC  DRNRDY-DRFAULT        ;                                   ;       AU000275
AU000276 1 00E4 DEVICEERR:                          ; DEVICEERROR:                      ;       AU000276
AU000277 1 00E4         MODC  DRFAULT-DRNOBM        ;                                   ;       AU000277
AU000278 1 00E5 ENTRYERR:                           ; ENTRYERROR:                       ;       AU000278
AU000279 1 00E5         MODC  DRNOBM-DRVOK          ;                                   ;       AU000279
AU000280 1 00E6 BOOTOK:                             ; BOOT OK:                          ;       AU000280
AU000281 1 00E6         MOVC  DRVOK             R1  ;                                   ;       AU000281
AU000282 1 00E7         MOD   MCLD                  ;                                   ;       AU000282
AU000283 1 00E8         MOV   DRVSTA            R0  ;                                   ;       AU000283
AU000284 1 00E9         INE          R0         R1  ;   IF DRIVE STATUS CHANGE THEN     ;       AU000284
AU000285 1 00EA         JMP   PRINTSTA              ;     GO TO PRINT STATUS            ;       AU000285
AU000286 1 00EB         MOV   MCLD              R0  ;   ELSE                            ;       AU000286
AU000287 1 00EC         ADDC  1                 R0  ;     DRIVE:=DRIVE+1                ;       AU000287
AU000288 1 00ED         JMP   MCFDLD                ;     GO TO MCFDLD                  ;       AU000288
AU000289 1 00EE PRINTSTA:                           ; PRINT STATUS:                     ;       AU000289
AU000290 1 00EE         MOD   MCLD                  ;                                   ;       AU000290
AU000291 1 00EF         MOV          R1  DRVSTA     ;   SAVE NEW DRIVE STATUS           ;       AU000291
AU000292 1 00F0         MOVC  ESTACK            R7  ;   INITIALISE STACK                ;       AU000292
AU000293 1 00F1         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000293
AU000294 1 00F2 MCST5:  ST5L, <:DRIVE= :>           ;   'DRIVE= '                       ;       AU000294
AU000295 1 00F7         ST5L=LOC-MCST5-1            ;   )                               ;       AU000295
AU000296 1 00F7         MOV   MCLD              R0  ;                                   ;       AU000296
AU000297 1 00F8         JMP          S5  MCOTHXC    ;   WRITE(MCLD)                     ;       AU000297
AU000298 1 00F9                                                                         ;       AU000298
AU000299 1 00F9         IEQ          R1  DRNRDY     ;   GO TO CASE DRVSTA.MCLD OF (     ;       AU000299
AU000300 1 00FA         JMP   PRINT1                ;     DRNRDY: PRINT1                ;       AU000300
AU000301 1 00FB         IEQ          R1  DRFAULT    ;                                   ;       AU000301
AU000302 1 00FC         JMP   PRINT2                ;     DRFAULT: PRINT2               ;       AU000302
AU000303 1 00FD         IEQ          R1  DRNOBM     ;                                   ;       AU000303
AU000304 1 00FE         JMP   PRINT3                ;     DRNOBM: PRINT3                ;       AU000304
AU000305 1 00FF         JMP   MCPCHK                ;     DRVOK: MCPCHK                 ;       AU000305
AU000306 1 0100 PRINT1:                                                                 ;       AU000306
AU000307 1 0100         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000307
AU000308 1 0101 MCST6:  ST6L, <:, NOT READY:>        ;   ' NOT READY'                   ;       AU000308
AU000309 1 0108         ST6L=LOC-MCST6-1            ;   )                               ;       AU000309
AU000310 1 0108         JMP   MC0300                ;   GO TO MC0300                    ;       AU000310
AU000311 1 0109 PRINT2:                                                                 ;       AU000311
AU000312 1 0109         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000312
AU000313 1 010A MCST7:  ST7L, <:, FAULT:>            ;   ' FAULT'                       ;       AU000313
AU000314 1 010F         ST7L=LOC-MCST7-1            ;   )                               ;       AU000314
AU000315 1 010F         JMP   MC0300                ;   GO TO MC0300                    ;       AU000315
AU000316 1 0110 PRINT3:                                                                 ;       AU000316
AU000317 1 0110         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000317
AU000318 1 0111 MCST8:  ST8L, <:, NO BOOT MODULE:>   ;   ' NO BOOT MODULE'              ;       AU000318
AU000319 1 011A         ST8L=LOC-MCST8-1            ;   )                               ;       AU000319
AU000320 1 011A MC0300:                             ; MC0300:                           ;       AU000320
AU000321 1 011A         JMP          S5  MCNL       ;   WRITENL                         ;       AU000321
AU000322 1 011B         MOV   MCLD              R0  ;                                   ;       AU000322
AU000323 1 011C         ADDC  1                 R0  ;   DISK:=DISK+1                    ;       AU000323
AU000324 1 011D         JMP   MCFDLD                ;   GO TO MCFDLD                    ;       AU000324
00280400 1 011E                                                                         ;       00280400
00280500 1 011E ;-----------------------------------------------------------------------;       00280500
00280600 1 011E ; SUBROUTINE BLOCKIO:                                                   ;       00280600
00280700 1 011E ;            LOAD A DATABLOCK FROM DISKETTE, SPECIFIED BY               ;       00280700
00280800 1 011E ;            BLOCKNR AND ENTRY.                                         ;       00280800
00280900 1 011E ;                                                                       ;       00280900
00281000 1 011E ;       CALL          EXIT                                              ;       00281000
00281100 1 011E ;R0                   DESTROYED                                         ;       00281100
00281200 1 011E ;R1                   DESTROYED                                         ;       00281200
00281300 1 011E ;R2                   DESTROYED                                         ;       00281300
00281400 1 011E ;R3     BLOCKNR       DESTROYED                                         ;       00281400
00281500 1 011E ;R4                   DESTROYED                                         ;       00281500
00281600 1 011E ;R5     RE.ENTRY      RE.ENTRY                                          ;       00281600
00281700 1 011E ;R6     LINK          DESTROYED                                         ;       00281700
00281800 1 011E ;R7                   DESTROYED                                         ;       00281800
00281900 1 011E ;-----------------------------------------------------------------------;       00281900
00282000 1 011E                                                                         ;       00282000
00282100 1 011E BLOCKIO:                            ; BLOCKIO:                          ;       00282100
00282200 1 011E         MOV          R6  FDLINK     ;   LINK=>0.DKLINK                  ;       00282200
00282300 1 011F         MOV          R5         R6  ;   RE.ENTRY=>RE.ADDR;              ;       00282300
00282400 1 0120         MOV   BEBLOG.X5         R1  ;   EBLOCKING.ENTRY=>BLOCKING;      ;       00282400
00282500 1 0121         JOZ          R1  ENTRYERR   ;   IF BLOCKING=0 THEN              ;       00282500
00282600 1 0123                                     ;      GOTO ENTRYERR;               ;       00282600
00282700 1 0123         MOVC  EAREAS            R2  ;   EAREAS=>COUNT;                  ;       00282700
00282800 1 0124 L1:                                 ; AREA:                             ;       00282800
00282900 1 0124         ILT          R3         R1  ;   IF BLOCKNR<BLOCKING THEN        ;       00282900
00283000 1 0125         JMP              L2         ;       GOTO ADDRESS;               ;       00283000
00283100 1 0126         SUB          R1         R3  ;   BLOCKNR-BLOCKING=>BLOCKNR;      ;       00283100
00283200 1 0127         ADDC  1                 R6  ;   INCR(ADDR);                     ;       00283200
00283300 1 0128         SOB          R2  L1         ;   IF DECR(COUNT)<>0 THEN          ;       00283300
00283400 1 0129                                     ;      GOTO AREA;                   ;       00283400
00283500 1 0129         JMP              ENTRYERROR ;      GOTO ENTRYERR                ;       00283500
00283600 1 012A L2:                                 ; ADDRESS:                          ;       00283600
00283700 1 012A         MOV   BEAREA.X6         R0  ;   BEAREA.ADDR=>AREAADDRESS;       ;       00283700
00283800 1 012B         IEQ          R0 -1          ;   IF AREAADDRESS=-1 THEN          ;       00283800
00283900 1 012C         JMP              ENTRYERR   ;   GOTO ENTRYERR;                  ;       00283900
00284000 1 012D         MOVC  #FF00             R2  ;   AREAADRESS(15:8)                ;       00284000
00284100 1 012F         AND          R0         R2  ;             =>256*TRACK;          ;       00284100
00284200 1 0130         XTR          R0  8          ;   AREAADRESS(7:8)=>SECTOR;        ;       00284200
00284300 1 0131         JOZ          R3  L5         ;   IF BLOCKNR=0 THEN               ;       00284300
00284400 1 0132                                     ;      GOTO MAKEADDRESS;            ;       00284400
00284500 1 0132         MOV   BESEGS.X5         R7  ;   BESEGMENTS.ENTRY=>SEGMENTS;     ;       00284500
00284600 1 0133 L3:                                 ; BLKADDR:                          ;       00284600
00284700 1 0133         ADD          R7         R0  ;   SECTOR+SEGMENTS=>SECTOR;        ;       00284700
AU000325 1 0134         SOB          R3  L3         ;   IF DECR(BLOCKNR)<>0 THEN        ;       AU000325
AU000326 1 0135                                     ;       GOTO BLKADDR;               ;       AU000326
AU000327 1 0135 L4:                                 ; SEGTST:                           ;       AU000327
AU000328 1 0135         ILT          R0  27         ;   IF SECTOR<27 THEN               ;       AU000328
AU000329 1 0137         JMP              L5         ;       GOTO MAKEADDRESS;           ;       AU000329
AU000330 1 0138         ADDC -26                R0  ;   SECTOR-26=>SECTOR;              ;       AU000330
AU000331 1 0139         ADDC  256               R2  ;   TRACK+1=>TRACK;                 ;       AU000331
AU000332 1 013B         JMP              L4         ;   GOTO SEGTST;                    ;       AU000332
AU000333 1 013C L5:                                 ; MAKEADDRESS:                      ;       AU000333
AU000334 1 013C         ADD          R2         R0  ;   256*TRACK(15:8)+SECTOR=>ADDR;   ;       AU000334
AU000335 1 013D         MOV   BESEGS.X5         R1  ;   ESEGMENTS.ENTRY=>SEGCOUNT;      ;       AU000335
AU000336 1 013E SEEKTRK:                            ; SEEKTRK:                          ;       AU000336
AU000337 1 013E         MOV          R0         R2  ;                                   ;       AU000337
AU000338 1 013F         SRL          R2  7          ;   TRACK//128*3                    ;       AU000338
AU000339 1 0140         MOV          R2         R3  ;                                   ;       AU000339
AU000340 1 0141         ADD          R2         R3  ;                                   ;       AU000340
AU000341 1 0142         ADD          R2         R3  ;                   =>OFFSET;       ;       AU000341
AU000342 1 0143 L6:                                 ; DISPCALC:                         ;       AU000342
AU000343 1 0143         IGEP         R3  26         ;   IF OFFSET>=26 THEN              ;       AU000343
AU000344 1 0145         ADDC -26                R3  ;      OFFSET-26=>OFFSET;           ;       AU000344
AU000345 1 0146         JMP              L6         ;      GOTO DISPCALC;               ;       AU000345
AU000346 1 0147         MOV          R0         R2  ;   ADDR(15:8)=>                    ;       AU000346
AU000347 1 0148         SRL          R2  8          ;               TRACK;              ;       AU000347
AU000348 1 0149         MOV   TRACK             R6  ;   0.TRACK=>OLDTRACK;              ;       AU000348
AU000349 1 014A         IEQ          R2         R6  ;   IF TRACK=OLDTRACK THEN          ;       AU000349
AU000350 1 014B         JMP              BLOCKOP    ;      GOTO BLOCKOP;                ;       AU000350
AU000351 1 014C         MOV          R2  TRACK      ;   TRACK=>0.TRACK;                 ;       AU000351
AU000352 1 014D         JMP          S6  WAITTRFER  ;   WAITTRANSFER;                   ;       AU000352
AU000353 1 014E         MOV   TRACK             R2  ;   0.TRACK=>TRACK;                 ;       AU000353
AU000354 1 014F         ADDC  FSEEK             R2  ;   FSEEK+TRACK=>DATA;              ;       AU000354
AU000355 1 0151         JMP          S6  CONTROL    ;   SEEK TRACK;                     ;       AU000355
AU000356 1 0152                                                                         ;       AU000356
AU000357 1 0152 BLOCKOP:                            ; BLOCKOP:                          ;       AU000357
AU000358 1 0152         JMP          S6  WAITTRFER  ;   WAITTRANSFER;                   ;       AU000358
AU000359 1 0153         MOV          R0         R2  ;   SECTOR(7:8)=>                   ;       AU000359
AU000360 1 0154         XTR          R2  8          ;                SEGMENT;           ;       AU000360
AU000361 1 0155         ADD          R3         R2  ;   DISPL+SEGMENT=>SEGMENT;         ;       AU000361
AU000362 1 0156         IGE          R2  27         ;   IF SEGMENT>=27 THEN             ;       AU000362
AU000363 1 0158         ADDC -26                R2  ;      SEGMENT-26=>SEGMENT;         ;       AU000363
AU000364 1 0159         ADD          R2         R2  ;   SEGMENT+SEGMENT=>SEGMENT;       ;       AU000364
AU000365 1 015A         IGE          R2  27         ;   IF SEGMENT>=27 THEN             ;       AU000365
AU000366 1 015C         ADDC -27                R2  ;   SEGMENT-27=>SEGMENT;            ;       AU000366
AU000367 1 015D         ADDC  FREAD             R2  ;   FREAD+SEGMENT=>DATA;            ;       AU000367
AU000368 1 015F         JMP          S6  CONTROL    ;                                   ;       AU000368
AU000369 1 0160         MOV   INITCTRL          R4  ;                                   ;       AU000369
AU000370 1 0161         INE          R4  0          ;   IF 0.INITCTRL<>0 THEN           ;       AU000370
AU000371 1 0162         JMP          S6  RESTORE    ;      STORE DATA;                  ;       AU000371
AU000372 1 0163         MOV          R6  INITCTRL   ;   RE.INITCTRL=>0.INITCTRL;        ;       AU000372
AU000373 1 0164                                     ; NEXTSEGMENT:                      ;       AU000373
AU000374 1 0164         ADDC  -1                R1  ;   DECR(SEGCOUNT);                 ;       AU000374
AU000375 1 0165         IEQ          R1  0          ;   IF SEGCOUNT=0 THEN              ;       AU000375
AU000376 1 0166         JMPI             FDLINK     ;      RETURN;                      ;       AU000376
AU000377 1 0167         ADDC  256       -26     R0  ;   INCR(TRACK);                    ;       AU000377
AU000378 1 0168                                     ;          SEGMENT-26=>SEGMENT;     ;       AU000378
AU000379 1 0168         IBZP         R0  7          ;   IF SEGMENT=0 THEN               ;       AU000379
AU000380 1 0169         ADDC  1                 R0  ;       INCR(SEGMENT);              ;       AU000380
AU000381 1 016A         JMP              SEEKTRK    ;       GOTO SEEKTRK;               ;       AU000381
AU000382 1 016B         ADDC  -256      +27     R0  ;   DECR(TRACK);                    ;       AU000382
AU000383 1 016C                                     ;          SEGMENT+27=>SEGMENT;     ;       AU000383
AU000384 1 016C         JMP              BLOCKOP    ;   GOTO BLOCKOP;                   ;       AU000384
AU000385 1 016D                                                                         ;       AU000385
AU000386 1 016D ;---------------------------------------------------------------------- ;       AU000386
AU000387 1 016D ;                                                                       ;       AU000387
AU000388 1 016D ; SUBROUTINE CONTROL:                                                   ;       AU000388
AU000389 1 016D ;            INITIATE DISK TRANSFER.                                    ;       AU000389
AU000390 1 016D ;                                                                       ;       AU000390
         1 016D ;-----------------------------------------------------------------------;               
AU000391 1 016D                                                                         ;       AU000391
AU000392 1 016D CONTROL:                            ; CONTROL:                          ;       AU000392
AU000393 1 016D         MOV   MCLD              R7  ;   0.MCLD=>DRIVE;                  ;       AU000393
AU000394 1 016E         SLL          R7  8          ;                                   ;       AU000394
AU000395 1 016F         ADD          R7         R2  ;   DRIVE<8+DATA=>DATA;             ;       AU000395
AU000396 1 0170 CONTROL1:                           ; CONTROL1:                         ;       AU000396
AU000397 1 0170         MOVC  FD                R7  ;   FD=>DEVICE;                     ;       AU000397
AU000398 1 0171         CIO          R2         R7  ;   CONTROL(DATA,DEVICE);           ;       AU000398
AU000399 1 0172         JMP              0.     X6  ;   RETURN;                         ;       AU000399
AU000400 1 0173                                                                         ;       AU000400
         1 0173 ;-----------------------------------------------------------------------;               
AU000401 1 0173 ;                                                                       ;       AU000401
AU000402 1 0173 ; SUBROUTINE WAITTRANSFER.                                              ;       AU000402
AU000403 1 0173 ; WAIT FOR DISK GOING NOT BUSY, THEN READ DATA INTO                     ;       AU000403
AU000404 1 0173 ; MEMORY BUFFER.                                                        ;       AU000404
AU000405 1 0173 ; TEST AUTOSTATUS. IF AUTOSTATUS<>0 THEN GOTO TESTCHANGE.               ;       AU000405
AU000406 1 0173 ;                                                                       ;       AU000406
AU000407 1 0173 ;---------------------------------------------------------------------- ;       AU000407
AU000408 1 0173                                                                         ;       AU000408
AU000409 1 0173 WAITTRANSFER:                       ; WAITTRANSFER:                     ;       AU000409
AU000410 1 0173         MOVC  FD                R7  ;   FD=>DEVICE;                     ;       AU000410
AU000411 1 0174         MOVC  60                R4  ;   60=>COUNT;                      ;       AU000411
AU000412 1 0175         SOB          R4  LOC        ;   WAIT(LOC,COUNT);                ;       AU000412
AU000413 1 0176 C1:                                 ; TESTBUSY:                         ;       AU000413
AU000414 1 0176         MOD8  #80                   ;                                   ;       AU000414
AU000415 1 0177         SIO          X4         R7  ;   SENSE(XSTATUS,DEVICE);          ;       AU000415
AU000416 1 0178         IBN          X4  6          ;   IF XSTATUS(BUSY:1)<>0 THEN      ;       AU000416
AU000417 1 0179         JMP              C1         ;      GOTO TESTBUSY;               ;       AU000417
AU000418 1 017A         MOVC  64                R4  ;   64=>COUNT;                      ;       AU000418
AU000419 1 017B         MOVC  MEMBUF            R2  ;   RE.MEMBUF;                      ;       AU000419
AU000420 1 017C C2:                                 ; READDATA:                         ;       AU000420
AU000421 1 017C         RIO          X2         R7  ;   READ(0.BLKBUF,DEVICE);          ;       AU000421
AU000422 1 017D         ADDC  1                 R2  ;   INCR(RE.BLKBUF);                ;       AU000422
AU000423 1 017E         SOB          R4  C2         ;   IF DECR(COUNT)<>0 THEN          ;       AU000423
AU000424 1 017F                                     ;      GOTO READDATA;               ;       AU000424
AU000425 1 017F         SIO          R2         R7  ;   SENSE(STATUS,DEVICE);           ;       AU000425
AU000426 1 0180         IBN          R2  0          ;   IF STATUS(0:1)=1 THEN           ;       AU000426
AU000427 1 0181         ADDC -1                 R2  ;      0=>STATUS(0:1);              ;       AU000427
AU000428 1 0182         JON          R2  TESTCHANGE ;      IF STATUS<>0 THEN            ;       AU000428
AU000429 1 0183                                     ;         GOTO TESTCHANGE;          ;       AU000429
AU000430 1 0183         JMP              0.     X6  ;   RETURN;                         ;       AU000430
AU000431 1 0184                                                                         ;       AU000431
AU000432 1 0184 TESTCHANGE:                         ; TESTCHANGE:                       ;       AU000432
AU000433 1 0184         IBZ          R2  7          ;   IF STATUS(DISKCHANGE:1)=0 THEN  ;       AU000433
AU000434 1 0185         JMP              DISKERR    ;      GOTO DISKERR;                ;       AU000434
AU000435 1 0186         IBN          X4  1          ;   IF XSTATUS(1:1)=1 THEN          ;       AU000435
AU000436 1 0187         MODC  1<8                   ;      FREST+1<(=>DATA   ORELSE     ;       AU000436
AU000437 1 0188         MOVC  FREST             R2  ;   FREST=>DATA;                    ;       AU000437
AU000438 1 018A         JMP          S6  CONTROL1   ;                                   ;       AU000438
AU000439 1 018B         JMP          S6  WAITTRFER  ;   WAITTRANSFER;                   ;       AU000439
AU000440 1 018C         JMP              SEEKTRK    ;   GOTO SEEKTRACK;                 ;       AU000440
AU000441 1 018D                                                                         ;       AU000441
         1 018D ;-----------------------------------------------------------------------;               
AU000442 1 018D ; SUBROUTINE RESTORE.                                                   ;       AU000442
AU000443 1 018D ;                                                                       ;       AU000443
AU000444 1 018D ; STORE DATA FROM MEMORY BUFFER CORRECTLY.                              ;       AU000444
AU000445 1 018D ;                                                                       ;       AU000445
AU000446 1 018D ; REGISTERS:                                                            ;       AU000446
AU000447 1 018D ;        CALL        EXIT                                               ;       AU000447
AU000448 1 018D ; R6     LINK        LINK                                               ;       AU000448
AU000449 1 018D ; R7                 DESTROYED                                          ;       AU000449
AU000450 1 018D ;                                                                       ;       AU000450
         1 018D ;-----------------------------------------------------------------------;               
AU000451 1 018D                                                                         ;       AU000451
AU000452 1 018D RESTORE:                            ; RESTORE:                          ;       AU000452
AU000453 1 018D         MOVC  ESTACK            R7  ;                                   ;       AU000453
AU000454 1 018E         STC   6                     ;   SAVE R0-R6;                     ;       AU000454
AU000455 1 018F         MOVC  MEMBUF            R5  ;   RE.MEMBUF;                      ;       AU000455
AU000456 1 0190         MOVC  64                R7  ;   64=>COUNT;                      ;       AU000456
AU000457 1 0191 ST0:                                ; GETDATA:                          ;       AU000457
AU000458 1 0191         MOV   0.     X5         R0  ;   0.MEMBUF=>WORD;                 ;       AU000458
AU000459 1 0192         ADDC  1                 R5  ;   INCR(RE.MEMBUF);                ;       AU000459
AU000460 1 0193         JMP          S4  MCSTO      ;   STORE WORD                      ;       AU000460
AU000461 1 0195         SOB          R7  ST0        ;   IF DECR(COUNT)<>0 THEN          ;       AU000461
AU000462 1 0196                                     ;      GOTO GETDATA;                ;       AU000462
AU000463 1 0196         MOVC  ESTACK-7          R7  ;                                   ;       AU000463
AU000464 1 0197         UNS   6                     ;   UNSAVE R0-R6;                   ;       AU000464
AU000465 1 0198         JMP              0.     X6  ;   RETURN;                         ;       AU000465
00261300 1 0199 ;-----------------------------------------------------------------------;       00261300
00261500 1 0199 ; MCPCHK                                                                ;       00261500
00261600 1 0199 ; CHECK LOADED PROGRAM                                                  ;       00261600
002617   1 0199 ; MCPCHK IS ENTERED WHEN A BOOT TRANSFER IS COMPLETED.                  ;       002617  
00261800 1 0199 ; MCPCHK CALCULATES  A CHECK SUM BY ADDING THE CONTENTS OF ALL          ;       00261800
0026190  1 0199 ; THE PROGRAM LOCATIONS DEFINED BY MCPADI, MCPPGI AND MCCNTI.           ;       0026190 
0026200  1 0199 ; THE CHECK SUM IS COMPARED TO MCCHECK, AND THE RESULT INDICATED AS     ;       0026200 
002621 0 1 0199 ; A COMPLETION CODE IN CDSTA.                                           ;       002621 0
00262200 1 0199 ; MCPCHK EXITS TO MCSTOP.                                               ;       00262200
002624   1 0199 ; INPUT                                                                 ;       002624  
00262500 1 0199 ;  MCCNTI                                                               ;       00262500
00262600 1 0199 ;  MCPADI                                                               ;       00262600
00262700 1 0199 ;  MCPPGI                                                               ;       00262700
00262800 1 0199 ;  MCCHECK                                                              ;       00262800
0026290  1 0199 ; OUTPUT                                                                ;       0026290 
0026300  1 0199 ;  MCCNT                                                                ;       0026300 
00263100 1 0199 ;  MCPAD                                                                ;       00263100
002632   1 0199 ;  MCPPG                                                                ;       002632  
AU000466 1 0199 ;  CDSTA                                                                ;       AU000466
00264200 1 0199 ;-----------------------------------------------------------------------;       00264200
0026430  1 0199 MCPCHK:                                                                 ;       0026430 
0026440  1 0199         MOVC  0                 R5  ;  CLEAR CHECKSUM                   ;       0026440 
00264500 1 019A         MOV   MCCNTI            R7  ;  PRESET LOOP COUNT                ;       00264500
0026460  1 019B         MOVL  MCPADI.X5         R01 ;  PRESET PROGRAM START ADDRESS     ;       0026460 
0026470  1 019C         MOVL         R01 MCPAD. X5  ;  AND MEMORY SECTION               ;       0026470 
AU000467 1 019D         IEQ          R7  0          ;  IF PROGRAM LENGTH IS ZERO THEN   ;       AU000467
AU000468 1 019E         JMP   MCOK                  ;    GO TO PROGRAM OK               ;       AU000468
0026500  1 019F MCCHKL:                             ; CHECK LOOP:                       ;       0026500 
0026510  1 019F         JMP          S4  MCRDP      ;  GET PROGRAM WORD                 ;       0026510 
00265200 1 01A1         ADD          R0         R5  ;  UPDATE CHECK SUM                 ;       00265200
002653   1 01A2         SOB          R7  MCCHKL     ;  IF NOT DONE GO TO CHECK LOOP     ;       002653  
00       1 01A3         MOV   MCCHECK           R0  ;  IF CHECK SUM <>CHECK WORD THEN   ;       00      
AU000469 1 01A4         IEQ          R0         R5  ;                                   ;       AU000469
AU000470 1 01A5         JMP   MC0400                ;                                   ;       AU000470
AU000471 1 01A6         MOVC  ESTACK            R7  ;   INITIALISE STACK                ;       AU000471
AU000472 1 01A7         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000472
AU000473 1 01A9 MCST9:  ST9L, <: CHECKSUM ERROR:>   ;   ' CHECKSUM ERROR'               ;       AU000473
AU000474 1 01B2         ST9L=LOC-MCST9-1            ;   )                               ;       AU000474
AU000475 1 01B2                                                                         ;       AU000475
AU000476 1 01B2         JMP   MC0300                ;   GO TO MC0300                    ;       AU000476
AU000477 1 01B3                                     ;   ELSE                            ;       AU000477
AU000478 1 01B3 MCOK:                               ; PROGRAM OK:                       ;       AU000478
AU000479 1 01B3 MC0400:                                                                 ;       AU000479
AU000480 1 01B3         MOVC  ESTACK            R7  ;   INITIALISE STACK                ;       AU000480
AU000481 1 01B4         JMP          S5  MCWRST     ;   WRITE(                          ;       AU000481
AU000482 1 01B6 MCSTA:  STAL, <: OK, PROCESS= :>    ;   ' OK, PROCESS ='                ;       AU000482
AU000483 1 01BE         STAL=LOC-MCSTA-1            ;   )                               ;       AU000483
AU000484 1 01BE         MOV   MCIBS             R0  ;                                   ;       AU000484
AU000485 1 01BF         JMP          S5  MCOTHXW    ;   WRITE(MCIBS)                    ;       AU000485
AU000486 1 01C1         JMP          S5  MCNL       ;   WRITENL                         ;       AU000486
AU000487 1 01C3         MOV   MCIBS             R0  ;                                   ;       AU000487
AU000488 1 01C4         LDN          R0             ;   LOAD(MCIBS)                     ;       AU000488
AU000489 1 01C5 ;                                                                       ;       AU000489
         1 01C5 ;-----------------------------------------------------------------------;               
AU000490 1 01C5 ;                                                                       ;       AU000490
AU000491 1 01C5 ; MCEMERGENCY                                                           ;       AU000491
AU000492 1 01C5 ; EMERGENCY INTERRUPTS ARE RECEIVED HERE.                               ;       AU000492
AU000493 1 01C5 ; THE BASE OF THE CALLING PROCESS IS STORED IN ABS LOCATION 5 AND THE   ;       AU000493
AU000494 1 01C5 ; PROCESS #F000 IS LOADED.                                              ;       AU000494
AU000495 1 01C5 ;                                                                       ;       AU000495
         1 01C5 ;-----------------------------------------------------------------------;               
AU000496 1 01C5 MCEMERGENCY:                        ; BEGIN                             ;       AU000496
AU000497 1 01C5         MOVC  #E000             R0  ;                                   ;       AU000497
AU000498 1 01C7         MOV   MCBAS             R1  ;   GET OWN BASE                    ;       AU000498
AU000499 1 01C8         LDS          R0             ;   SWITCH TO SECTION 0             ;       AU000499
AU000500 1 01C9         MODN         R1             ;                                   ;       AU000500
AU000501 1 01CA         MOV          R1  5          ;   SAVE BASE IN LOC 5              ;       AU000501
AU000502 1 01CB         MOVC  #F000             R0  ;                                   ;       AU000502
AU000503 1 01CD         LDN          R0             ;   LOAD PROCESS(#F000)             ;       AU000503
AU000504 1 01CE                                     ; END                               ;       AU000504
AU000505 1 01CE                                                                         ;       AU000505
AU000506 1 01CE                                                                         ;       AU000506
AU000507 1 01CE                                                                         ;       AU000507
AU000508 1 01CE                                                                         ;       AU000508
AU000509 1 01CE                                                                         ;       AU000509
AU000510 1 01CE                                                                         ;       AU000510
AU000511 1 01CE ; FILL SPACE BETWEEN PROGRAM AND DATA WITH #FFFF                        ;       AU000511
AU000512 1 01CE AX=LOC                                                                  ;       AU000512
AU000513 1 01CE IF LOC LT 480+DISP                                                      ;       AU000513
AU000514 1 01CE   -1, REPEAT(479+DISP-AX)                                               ;       AU000514
AU000515 1 01E0 FI                                                                      ;       AU000515
AU000516 1 01E0 PR:= MCBLOC                                                             ;       AU000516
AU000517 1 01E0 PC=   PR+MCINI                                                          ;       AU000517
AU000518 1 01E0 PC1:=   PR + MCWAITCPUX                                                 ;       AU000518
AU000519 1 01E0 MCEM:= PR+MCEMERGENCY                                                   ;       AU000519
AU000520 1 01E0 ;                                                                       ;       AU000520
AU000521 1 01E0 ;                                                                       ;       AU000521
AU000522 1 01E0 END                                                                     ;       AU000522
Z0FE00 T00A5
P
FE00L 0148 0349 9896 0896 0BF0 0658 00BF 0148
FE08L F8D7 00BF EABE 0C5D 065D AABE 40BF EABE
FE10L 04EC 8A46 07A8 37C8 0B5E AABE 40BF EABE
FE18L 0449 84A2 0C5E 03C1 AABE 40BF EABE 4023
FE20L C51D 4120 195E 60BC 1B5E C516 07C3 AABE
FE28L 41BF EABE 0D5E 0004 0A0D 0000 0000 0000
FE30L AABE 40BF 01A4 014E 1F69 204A D3BC 3A8D
FE38L EABC E07C 18FB E17C 89BB E3BC 01C9 1F71
FE40L 94F0 2BFB 04CB 0CE4 BAE9 00BF 0777 E056
FE48L 004F E7BC 076F 00BF 2CBE 0F70 0048 1170
FE50L 1470 154F 164E 8FBB 4CE4 E006 7EE9 0458
FE58L 40BC C848 01C0 1448 0051 15D8 4B4F 375E
FE60L 435E 0009 4E49 5449 4149 494C 4953 474E
FE68L 4320 5550 203D D0BC 60BC 03EC 605E 475E
FE70L 184E 8027 03D8 1028 40BC 0158 004E 2076
FE78L 1F76 114D 0048 8DBB 4B5D D9F1 1F4E E6B1
FE80L 1F4E 2068 04EC 8224 8BB0 4B4F 15D8 184E
FE88L D23D DEFB 585D D37F 0F58 1F4E 68FB 0CEC
FE90L 0E8B 1056 0048 0E8A E1F3 185C 204E 6BFB
FE98L 04CB 0CE4 BEE9 1E58 7F5E 0007 454D 4F4D
FEA0L 5952 5020 5241 5449 2059 1868 86F2 8A5E
FEA8L 0003 5245 4F52 0052 03D8 905E 0001 4B4F
FEB0L 885E 0048 01EC 1570 202F A8BE E9BE 1594
FEB8L 2056 004A B2DF 004B 2B73 2073 4C4C 1F74
FEC0L 234D 5CDF B0DF C9DF 004E 2B76 4C4D 4E60
FEC8L 9FD0 99D0 5060 9BD0 5218 1D70 134B 004C
FED0L D48A 01CD 03C3 5DFB 45FA 0FD8 4C4D 2A73
FED8L 45DF 2A6B 02E4 3DBA 01CB 0758 94DF ADDF
FEE0L 05D8 2BF0 01D8 01A4 01A4 01A4 0449 1594
FEE8L 1668 01FA 03D8 1568 01C8 3C58 1594 1671
FEF0L 4B4F D45E 0004 5244 5649 3D45 0020 1568
FEF8L EA5E 917C 05D8 927C 0CD8 937C 11D8 99D8
FF00L E35E 0006 202C 4F4E 2054 4552 4441 0059
FF08L 11D8 EC5E 0004 202C 4146 4C55 0054 0AD8
FF10L F35E 0008 202C 4F4E 4220 4F4F 2054 4F4D
FF18L 5544 454C F25E 1568 01C8 6C58 2976 5EBB
FF20L 4319 91F0 3E5C 0A4A 31F6 04D8 138B 01CE
FF28L 05C2 4558 8418 017C 4858 FF56 004A 028C
FF30L 08EC BAF2 411F 708A 02C3 1BE4 8042 04D8
FF38L 1AA8 0156 00CA 0758 208A 4119 0ABB A724
FF40L 2BBB 238A 238A 1AE4 B000 1AAB 0458 0ABB
FF48L A824 286E 26F8 06D8 2872 25DF 286A 2056
FF50L 00CA 1BDF 20DF 0ABB 28EC 328A 1BE4 A040
FF58L 1AAA 228A 1BE4 A040 1BAA 1056 00CA 0DDF
FF60L 2B6C C07E 2ADF 2B76 01A9 907C 29E7 E6C8
FF68L 07B0 01C8 2D58 E5A8 1B58 156F F8A0 728A
FF70L 024F AF96 80BF 024F 3C4C 01C4 8056 4FD6
FF78L 46F3 0458 404C 604A 2FD7 01CA 03C4 2F96
FF80L 20F2 01AA A1F0 80BF 27F0 A558 41F3 10E5
FF88L 4056 004A 1B5F 195F 4F58 4B4F E9BE 604D
FF90L 404F 58FB 01CD FE56 9EDD 05C7 444F A9BE
FF98L 80BF 004D 1C6F 5960 5FD0 F07C 14D8 FE56
FFA0L 91DD 058A 04C7 1D68 05F8 0DD8 4B4F FE56
FFA8L 75DE 0008 4320 4548 4B43 5553 204D 5245
FFB0L 4F52 0052 9958 4B4F FE56 68DE 0007 4F20
FFB8L 2C4B 5020 4F52 4543 5353 203D 1B68 FE56
FFC0L 56DE FE56 66DE 1B68 40BC E056 0048 0869
FFC8L E0BC 31BD 0571 F056 0048 40BC FFFF FFFF
FFD0L FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
FFD8L FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
FFE0L 0046 0001 0001 0000 0001 0001 FFFF 0029
FFE8L 0000 0000 FE00 FE4C 0000 E000 0000 FFFF
FFF0L FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
FFF8L 0020 0020 FE00 FE75 0000 A000 FFC5 FFC5
0000L 0000 0000 0000 0000 0000 0000 0000 0000
0008L 0000 0000 0000 0000 0000 0000 0000 0000
0010L 0000 0000 0000 0001 0001 0000 0001 0001
0018L 0000 0000 0000 0000 0000 0000 0000 0000
0020L 0000 0000 0000 0000 0000 0000 0000 0000
0028L 0000 0000 0000 0000 0000 FFFF 0000 0000
0030L 0000 0000 0000 0000 0000 0000 0000 0000
0038L 0000 0000 0000 0000 0000 0000 0000 0000
0040L 0000 0000 0000 0000 0000 0000 0000 0000
0048L 0000 0000 0000 0000 0000 0000 0000 0000
0050L 0000 0000 0000 0000 0000 0000 0000 0000
0058L 0000 0000 0000 0000 0000 0000 0000 0000
0060L 0000 0000 0000 0000 0000 0000 0000 0000
0068L 0000 0000 0000 0000 0000 0000 0000 0000
0070L 0000 0000 0000 0000 0000 0000 0000 0000
0078L 0000 0000 0000 0000 0000 0000 0000 0000
0080L 0000 0000 0000 0000 0000 0000 0000 0000
0088L 0000 0000 0000 0000 0000 0000 0000 0000
0090L 0000 0000 0000 0000 0000 0000 0000 0000
0098L 0000 0000 0000 0000 0000 0000 0000 0000
00A0L 0000 0000 0000 0000 0000               
      S0
 
MEMORY MAP:
  AREA 1  FE00
  AREA 0  FFE0
  AREA 3  00A5
  AREA 2  00A5
  AREA 5  00A5
  AREA 4  00A5
  AREA 7  00A5
  AREA 6  00A5
  AREA 9  00A5
  AREA 8  00A5
  AREA B  00A5
  AREA A  00A5
  AREA D  00A5
  AREA C  00A5
  AREA F  00A5
  AREA E  00A5
 
     3 DIMENSION WARNINGS
     2 INSTRUCTIONS EXPANDED
    22 MODIFIES INSERTED
   677 WORDS OUTPUT
   677 WORDS ASSEMBLED
ASSEMBLY OK?   
5
  ARE