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 - 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