|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 49280 (0xc080)
Types: TextFile
Names: »MCBASM«
└─⟦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«
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