Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 1 | /*************************************************************************
|
| 2 | * *
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 3 | * $Id: s100_scp300f.c 1940 2008-06-13 05:28:57Z hharte $ *
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 4 | * *
|
| 5 | * Copyright (c) 2007-2008 Howard M. Harte. *
|
| 6 | * http://www.hartetec.com *
|
| 7 | * *
|
| 8 | * Permission is hereby granted, free of charge, to any person obtaining *
|
| 9 | * a copy of this software and associated documentation files (the *
|
| 10 | * "Software"), to deal in the Software without restriction, including *
|
| 11 | * without limitation the rights to use, copy, modify, merge, publish, *
|
| 12 | * distribute, sublicense, and/or sell copies of the Software, and to *
|
| 13 | * permit persons to whom the Software is furnished to do so, subject to *
|
| 14 | * the following conditions: *
|
| 15 | * *
|
| 16 | * The above copyright notice and this permission notice shall be *
|
| 17 | * included in all copies or substantial portions of the Software. *
|
| 18 | * *
|
| 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
|
| 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
| 21 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
|
| 22 | * NONINFRINGEMENT. IN NO EVENT SHALL HOWARD M. HARTE BE LIABLE FOR ANY *
|
| 23 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, *
|
| 24 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE *
|
| 25 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
| 26 | * *
|
| 27 | * Except as contained in this notice, the name of Howard M. Harte shall *
|
| 28 | * not be used in advertising or otherwise to promote the sale, use or *
|
| 29 | * other dealings in this Software without prior written authorization *
|
| 30 | * Howard M. Harte. *
|
| 31 | * *
|
| 32 | * SIMH Interface based on altairz80_hdsk.c, by Peter Schorn. *
|
| 33 | * *
|
| 34 | * Module Description: *
|
| 35 | * Seattle Computer Products SCP300F Support Board module for SIMH. *
|
| 36 | * *
|
| 37 | * Environment: *
|
| 38 | * User mode only *
|
| 39 | * *
|
| 40 | *************************************************************************/
|
| 41 |
|
| 42 | /* #define DBG_MSG */
|
| 43 |
|
| 44 | #include "altairz80_defs.h"
|
| 45 |
|
| 46 | #if defined (_WIN32)
|
| 47 | #include <windows.h>
|
| 48 | #endif
|
| 49 |
|
| 50 | #ifdef DBG_MSG
|
Peter Schorn | ebf53c9 | 2014-10-24 23:10:54 +0200 | [diff] [blame] | 51 | #define DBG_PRINT(args) sim_printf args
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 52 | #else
|
| 53 | #define DBG_PRINT(args)
|
| 54 | #endif
|
| 55 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 56 | /* Debug flags */
|
Peter Schorn | 589aca1 | 2014-05-27 20:01:30 +0200 | [diff] [blame] | 57 | #define UART_MSG (1 << 0)
|
| 58 | #define ROM_MSG (1 << 1)
|
| 59 | #define VERBOSE_MSG (1 << 2)
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 60 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 61 | #define SCP300F_MAX_DRIVES 1
|
| 62 | #define SCP300F_ROM_SIZE (2048)
|
| 63 | #define SCP300F_ADDR_MASK (SCP300F_ROM_SIZE - 1)
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 64 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 65 | #define SCP300F_IO_SIZE (16)
|
| 66 | #define SCP300F_IO_MASK (SCP300F_IO_SIZE - 1)
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 67 |
|
| 68 | typedef struct {
|
| 69 | PNP_INFO pnp; /* Plug and Play */
|
| 70 | uint8 *ram;
|
| 71 | uint8 *rom;
|
| 72 | uint8 rom_enabled;
|
| 73 | } SCP300F_INFO;
|
| 74 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 75 | static SCP300F_INFO scp300f_info_data = { { 0xFF800, SCP300F_ROM_SIZE, 0xF0, SCP300F_IO_SIZE } };
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 76 | static SCP300F_INFO *scp300f_info = &scp300f_info_data;
|
| 77 |
|
| 78 | extern t_stat set_membase(UNIT *uptr, int32 val, char *cptr, void *desc);
|
| 79 | extern t_stat show_membase(FILE *st, UNIT *uptr, int32 val, void *desc);
|
| 80 | extern t_stat set_iobase(UNIT *uptr, int32 val, char *cptr, void *desc);
|
| 81 | extern t_stat show_iobase(FILE *st, UNIT *uptr, int32 val, void *desc);
|
| 82 | extern uint32 sim_map_resource(uint32 baseaddr, uint32 size, uint32 resource_type,
|
| 83 | int32 (*routine)(const int32, const int32, const int32), uint8 unmap);
|
| 84 | extern uint32 PCX;
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 85 | extern int32 find_unit_index (UNIT *uptr);
|
| 86 |
|
| 87 | static t_stat scp300f_reset(DEVICE *scp300f_dev);
|
| 88 |
|
| 89 | static uint8 SCP300F_Read(const uint32 Addr);
|
| 90 | static uint8 SCP300F_Write(const uint32 Addr, uint8 cData);
|
| 91 |
|
| 92 | static int32 scp300fdev(const int32 port, const int32 io, const int32 data);
|
| 93 | static int32 scp300f_mem(const int32 port, const int32 io, const int32 data);
|
| 94 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 95 | static int32 scp300f_sr = 0x00; /* Sense Switch Register, 0=Monitor prompt, 1=disk boot */
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 96 |
|
| 97 | static UNIT scp300f_unit[] = {
|
| 98 | { UDATA (NULL, UNIT_FIX + UNIT_DISABLE, 0) }
|
| 99 | };
|
| 100 |
|
| 101 | static REG scp300f_reg[] = {
|
Peter Schorn | 589aca1 | 2014-05-27 20:01:30 +0200 | [diff] [blame] | 102 | { HRDATAD (SR, scp300f_sr, 8, "Sense switch register, 0=monitor prompt, 1=disk boot"), },
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 103 | { NULL }
|
| 104 | };
|
| 105 |
|
| 106 | static MTAB scp300f_mod[] = {
|
Peter Schorn | 589aca1 | 2014-05-27 20:01:30 +0200 | [diff] [blame] | 107 | { MTAB_XTD|MTAB_VDV, 0, "MEMBASE", "MEMBASE",
|
| 108 | &set_membase, &show_membase, NULL, "Sets support module memory base address" },
|
| 109 | { MTAB_XTD|MTAB_VDV, 0, "IOBASE", "IOBASE",
|
| 110 | &set_iobase, &show_iobase, NULL, "Sets support module I/O base address" },
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 111 | { 0 }
|
| 112 | };
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 113 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 114 | /* Debug Flags */
|
| 115 | static DEBTAB scp300f_dt[] = {
|
Peter Schorn | 589aca1 | 2014-05-27 20:01:30 +0200 | [diff] [blame] | 116 | { "UART", UART_MSG, "UART messages" },
|
| 117 | { "ROM", ROM_MSG, "ROM messages" },
|
| 118 | { "VERBOSE", VERBOSE_MSG, "Verbose messages" },
|
| 119 | { NULL, 0 }
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 120 | };
|
| 121 |
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 122 |
|
| 123 | DEVICE scp300f_dev = {
|
| 124 | "SCP300F", scp300f_unit, scp300f_reg, scp300f_mod,
|
| 125 | SCP300F_MAX_DRIVES, 10, 31, 1, SCP300F_MAX_DRIVES, SCP300F_MAX_DRIVES,
|
| 126 | NULL, NULL, &scp300f_reset,
|
| 127 | NULL, NULL, NULL,
|
Peter Schorn | 589aca1 | 2014-05-27 20:01:30 +0200 | [diff] [blame] | 128 | &scp300f_info_data, (DEV_DISABLE | DEV_DIS | DEV_DEBUG), 0,
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 129 | scp300f_dt, NULL, "SCP Support Board SCP300F"
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 130 | };
|
| 131 |
|
| 132 | /* Reset routine */
|
| 133 | static t_stat scp300f_reset(DEVICE *dptr)
|
| 134 | {
|
| 135 | PNP_INFO *pnp = (PNP_INFO *)dptr->ctxt;
|
| 136 |
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 137 | sim_debug(VERBOSE_MSG, &scp300f_dev, "SCP300F: Reset.\n");
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 138 |
|
| 139 | if(dptr->flags & DEV_DIS) { /* Disconnect I/O Ports */
|
| 140 | sim_map_resource(pnp->io_base, pnp->io_size, RESOURCE_TYPE_IO, &scp300fdev, TRUE);
|
| 141 | sim_map_resource(pnp->mem_base, pnp->mem_size, RESOURCE_TYPE_MEMORY, &scp300f_mem, TRUE);
|
| 142 | } else {
|
| 143 | /* Connect SCP300F at base address */
|
| 144 | if(sim_map_resource(pnp->io_base, pnp->io_size, RESOURCE_TYPE_IO, &scp300fdev, FALSE) != 0) {
|
Peter Schorn | ebf53c9 | 2014-10-24 23:10:54 +0200 | [diff] [blame] | 145 | sim_printf("%s: error mapping I/O resource at 0x%04x\n", __FUNCTION__, pnp->io_base);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 146 | return SCPE_ARG;
|
| 147 | }
|
| 148 | /* Connect SCP300F Memory (512K RAM, 1MB FLASH) */
|
| 149 | if(sim_map_resource(pnp->mem_base, pnp->mem_size, RESOURCE_TYPE_MEMORY, &scp300f_mem, FALSE) != 0) {
|
Peter Schorn | ebf53c9 | 2014-10-24 23:10:54 +0200 | [diff] [blame] | 150 | sim_printf("%s: error mapping MEM resource at 0x%04x\n", __FUNCTION__, pnp->mem_base);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 151 | return SCPE_ARG;
|
| 152 | }
|
| 153 |
|
| 154 | /* Re-enable ROM */
|
| 155 | scp300f_info->rom_enabled = 1;
|
| 156 | }
|
| 157 | return SCPE_OK;
|
| 158 | }
|
| 159 |
|
| 160 |
|
| 161 | static uint8 scp300f_ram[SCP300F_ROM_SIZE];
|
| 162 |
|
| 163 | /* ; Seattle Computer Products 8086 Monitor version 1.5 3-19-82.
|
| 164 | * ; by Tim Paterson
|
| 165 | * ; This software is not copyrighted.
|
| 166 | *
|
| 167 | * This was assembled from source (MON.ASM) using 86DOS ASM.COM running under Windows XP.
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 168 | * It is configured for a Cromemco 16FDC disk controller.
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 169 | */
|
| 170 | static uint8 scp300f_rom[SCP300F_ROM_SIZE] = {
|
| 171 | 0xFC, 0x33, 0xC0, 0x8E, 0xD0, 0x8E, 0xD8, 0x8E, 0xC0, 0xBF, 0x9C, 0x01, 0xB9, 0x0E, 0x00, 0xF3,
|
| 172 | 0xAB, 0x80, 0x0E, 0xB7, 0x01, 0x02, 0xB1, 0x04, 0xB0, 0x40, 0xBF, 0xAC, 0x01, 0xF3, 0xAB, 0xC6,
|
| 173 | 0x06, 0xA5, 0x01, 0x0C, 0xBC, 0x9C, 0x01, 0xB0, 0x17, 0xE6, 0xF5, 0xB0, 0xF3, 0xE6, 0xF4, 0xB8,
|
| 174 | 0x84, 0x05, 0xE7, 0xF4, 0xBE, 0x33, 0x07, 0xBA, 0xF0, 0x00, 0x2E, 0xAC, 0x8A, 0xC8, 0xE3, 0x05,
|
| 175 | 0x2E, 0xAC, 0xEE, 0xE2, 0xFB, 0x42, 0x80, 0xFA, 0xF8, 0x75, 0xEF, 0xE8, 0x19, 0x00, 0xBE, 0xF5,
|
| 176 | 0x07, 0xB8, 0x23, 0xE8, 0xE7, 0xF4, 0xB0, 0x0D, 0xE6, 0xF5, 0x2E, 0xAD, 0xE6, 0xF4, 0x8A, 0xC4,
|
| 177 | 0xE6, 0xF4, 0xE8, 0x02, 0x00, 0xEB, 0xF3, 0xE8, 0x98, 0x00, 0xE8, 0x95, 0x00, 0x3C, 0x0D, 0x74,
|
| 178 | 0x01, 0xC3, 0xBF, 0x18, 0x01, 0xC6, 0x05, 0x0D, 0xE4, 0xFF, 0xA8, 0x01, 0x74, 0x03, 0xE9, 0xF5,
|
| 179 | 0x06, 0xBE, 0x51, 0x07, 0xE8, 0x8B, 0x00, 0xFC, 0x33, 0xC0, 0x8E, 0xD8, 0x8E, 0xC0, 0xBC, 0x9C,
|
| 180 | 0x01, 0xC7, 0x06, 0x64, 0x00, 0xBB, 0x06, 0x8C, 0x0E, 0x66, 0x00, 0xB0, 0x3E, 0xE8, 0xC8, 0x00,
|
| 181 | 0xE8, 0x1E, 0x00, 0xE8, 0x7F, 0x00, 0x74, 0xDF, 0x8A, 0x05, 0x2C, 0x42, 0x72, 0x10, 0x3C, 0x13,
|
| 182 | 0x73, 0x0C, 0x47, 0xD0, 0xE0, 0x98, 0x93, 0x2E, 0xFF, 0x97, 0x7D, 0x01, 0xEB, 0xC9, 0xE9, 0xA8,
|
| 183 | 0x02, 0xBF, 0x18, 0x01, 0x33, 0xC9, 0xE8, 0x39, 0x00, 0x3C, 0x20, 0x72, 0x1B, 0x3C, 0x7F, 0x74,
|
| 184 | 0x0E, 0xE8, 0x94, 0x00, 0x3C, 0x40, 0x74, 0x25, 0xAA, 0x41, 0x83, 0xF9, 0x50, 0x76, 0xE7, 0xE3,
|
| 185 | 0xE5, 0x4F, 0x49, 0xE8, 0x29, 0x00, 0xEB, 0xDE, 0x3C, 0x08, 0x74, 0xF3, 0x3C, 0x0D, 0x75, 0xD6,
|
| 186 | 0xAA, 0xBF, 0x18, 0x01, 0xB0, 0x0D, 0xE8, 0x6F, 0x00, 0xB0, 0x0A, 0xEB, 0x6B, 0xE8, 0xF4, 0xFF,
|
| 187 | 0xEB, 0x85, 0xFA, 0xE4, 0xF7, 0xA8, 0x02, 0x74, 0xF9, 0xE4, 0xF6, 0x24, 0x7F, 0xFB, 0xC3, 0xBE,
|
| 188 | 0x73, 0x07, 0x2E, 0xAC, 0xE8, 0x51, 0x00, 0xD0, 0xE0, 0x73, 0xF7, 0xC3, 0xE8, 0x06, 0x00, 0x82,
|
| 189 | 0x3D, 0x2C, 0x75, 0x0A, 0x47, 0xB0, 0x20, 0x51, 0xB1, 0xFF, 0xF3, 0xAE, 0x4F, 0x59, 0x82, 0x3D,
|
| 190 | 0x0D, 0xC3, 0x8C, 0xDA, 0xB4, 0x00, 0xE8, 0x78, 0x00, 0x03, 0xD6, 0xEB, 0x09, 0x8C, 0xC2, 0xB4,
|
| 191 | 0x00, 0xE8, 0x6D, 0x00, 0x03, 0xD7, 0x82, 0xD4, 0x00, 0xE8, 0x12, 0x00, 0x8A, 0xC6, 0xE8, 0x02,
|
| 192 | 0x00, 0x8A, 0xC2, 0x8A, 0xE0, 0x51, 0xB1, 0x04, 0xD2, 0xE8, 0x59, 0xE8, 0x02, 0x00, 0x8A, 0xC4,
|
| 193 | 0x24, 0x0F, 0x04, 0x90, 0x27, 0x14, 0x40, 0x27, 0x50, 0xE4, 0xF7, 0x24, 0x01, 0x74, 0xFA, 0x58,
|
| 194 | 0xE6, 0xF6, 0xC3, 0xB0, 0x20, 0xEB, 0xF1, 0xE8, 0xF9, 0xFF, 0xE2, 0xFB, 0xC3, 0x76, 0x07, 0x68,
|
| 195 | 0x03, 0x0D, 0x02, 0x88, 0x03, 0x97, 0x02, 0x6A, 0x06, 0x68, 0x03, 0x4C, 0x06, 0x68, 0x03, 0x68,
|
| 196 | 0x03, 0x68, 0x03, 0x6A, 0x02, 0x68, 0x03, 0x59, 0x06, 0x68, 0x03, 0x68, 0x03, 0x2F, 0x04, 0xBA,
|
| 197 | 0x02, 0x6A, 0x05, 0x8A, 0xC2, 0x24, 0x0F, 0xE8, 0x07, 0x00, 0x8A, 0xD0, 0x8A, 0xC6, 0x32, 0xF6,
|
| 198 | 0xC3, 0xD1, 0xE2, 0xD0, 0xD4, 0xD1, 0xE2, 0xD0, 0xD4, 0xD1, 0xE2, 0xD0, 0xD4, 0xD1, 0xE2, 0xD0,
|
| 199 | 0xD4, 0xC3, 0xB9, 0x05, 0x00, 0xE8, 0x22, 0x01, 0x50, 0x52, 0xE8, 0x4F, 0xFF, 0x82, 0x3D, 0x4C,
|
| 200 | 0x74, 0x1C, 0xBA, 0x80, 0x00, 0xE8, 0x30, 0x01, 0x72, 0x1B, 0xB9, 0x05, 0x00, 0xE8, 0x0A, 0x01,
|
| 201 | 0x8B, 0xCA, 0x5A, 0x5B, 0x2B, 0xCA, 0x1A, 0xE7, 0x75, 0x1D, 0x93, 0x41, 0xEB, 0x0B, 0x47, 0xB9,
|
| 202 | 0x04, 0x00, 0xE8, 0xF5, 0x00, 0x8B, 0xCA, 0x5A, 0x58, 0x8B, 0xDA, 0x81, 0xE3, 0x0F, 0x00, 0xE3,
|
| 203 | 0x04, 0x03, 0xD9, 0x73, 0x9E, 0x74, 0x9C, 0xB8, 0x52, 0x47, 0xE9, 0x1F, 0x03, 0xE8, 0xB2, 0xFF,
|
| 204 | 0x50, 0xE8, 0x4E, 0x01, 0x1F, 0x8B, 0xF2, 0xE8, 0x18, 0xFF, 0x56, 0xE8, 0x55, 0xFF, 0xAC, 0xE8,
|
| 205 | 0x31, 0xFF, 0x5A, 0x49, 0x74, 0x17, 0x8B, 0xC6, 0xA8, 0x0F, 0x74, 0x0C, 0x52, 0xA8, 0x07, 0x75,
|
| 206 | 0xEA, 0xB0, 0x2D, 0xE8, 0x32, 0xFF, 0xEB, 0xE6, 0xE8, 0x02, 0x00, 0xEB, 0xDA, 0x51, 0x8B, 0xC6,
|
| 207 | 0x8B, 0xF2, 0x2B, 0xC2, 0x8B, 0xD8, 0xD1, 0xE0, 0x03, 0xC3, 0xB9, 0x33, 0x00, 0x2B, 0xC8, 0xE8,
|
| 208 | 0x25, 0xFF, 0x8B, 0xCB, 0xAC, 0x24, 0x7F, 0x3C, 0x7F, 0x74, 0x04, 0x3C, 0x20, 0x73, 0x02, 0xB0,
|
| 209 | 0x2E, 0xE8, 0x04, 0xFF, 0xE2, 0xEE, 0x59, 0xE9, 0x8A, 0xFE, 0xE8, 0x55, 0xFF, 0x51, 0x50, 0x8B,
|
| 210 | 0xF2, 0xB9, 0x05, 0x00, 0xE8, 0x73, 0x00, 0xE8, 0xE8, 0x00, 0xE8, 0x26, 0xFF, 0x8B, 0xFA, 0x5B,
|
| 211 | 0x8E, 0xDB, 0x8E, 0xC0, 0x59, 0x3B, 0xFE, 0x1B, 0xC3, 0x72, 0x07, 0x49, 0x03, 0xF1, 0x03, 0xF9,
|
| 212 | 0xFD, 0x41, 0xA4, 0x49, 0xF3, 0xA4, 0xC3, 0xE8, 0x28, 0xFF, 0x51, 0x50, 0x52, 0xE8, 0xB4, 0x00,
|
| 213 | 0x5F, 0x07, 0x59, 0x3B, 0xD9, 0xBE, 0x18, 0x01, 0xE3, 0x02, 0x73, 0xE6, 0x2B, 0xCB, 0x87, 0xD9,
|
| 214 | 0x57, 0xF3, 0xA4, 0x5E, 0x8B, 0xCB, 0x06, 0x1F, 0xEB, 0xD8, 0xE8, 0x05, 0xFF, 0x51, 0x50, 0x52,
|
| 215 | 0xE8, 0x91, 0x00, 0x4B, 0x5F, 0x07, 0x59, 0x2B, 0xCB, 0xBE, 0x18, 0x01, 0xAC, 0xAE, 0xE0, 0xFD,
|
| 216 | 0x75, 0xC4, 0x53, 0x87, 0xCB, 0x57, 0xF3, 0xA6, 0x8B, 0xCB, 0x5F, 0x5B, 0x75, 0x08, 0x4F, 0xE8,
|
| 217 | 0x5B, 0xFE, 0x47, 0xE8, 0x0E, 0xFE, 0xE3, 0xAE, 0xEB, 0xDF, 0xE8, 0x2F, 0xFE, 0x33, 0xD2, 0x8A,
|
| 218 | 0xE6, 0xE8, 0x14, 0x00, 0x72, 0x73, 0x8A, 0xD0, 0x47, 0x49, 0xE8, 0x0B, 0x00, 0x72, 0x97, 0xE3,
|
| 219 | 0x68, 0xE8, 0xAD, 0xFE, 0x0A, 0xD0, 0xEB, 0xF0, 0x8A, 0x05, 0x2C, 0x30, 0x72, 0x88, 0x3C, 0x0A,
|
| 220 | 0xF5, 0x73, 0x83, 0x2C, 0x07, 0x3C, 0x0A, 0x72, 0x03, 0x3C, 0x10, 0xF5, 0xC3, 0xE8, 0xFC, 0xFD,
|
| 221 | 0xE8, 0xE5, 0xFF, 0x72, 0x0B, 0xB9, 0x02, 0x00, 0xE8, 0xBF, 0xFF, 0x88, 0x17, 0x43, 0xF8, 0xC3,
|
| 222 | 0x8A, 0x05, 0x3C, 0x27, 0x74, 0x06, 0x3C, 0x22, 0x74, 0x02, 0xF9, 0xC3, 0x8A, 0xE0, 0x47, 0x8A,
|
| 223 | 0x05, 0x47, 0x3C, 0x0D, 0x74, 0x23, 0x3A, 0xC4, 0x75, 0x05, 0x3A, 0x25, 0x75, 0xE0, 0x47, 0x88,
|
| 224 | 0x07, 0x43, 0xEB, 0xEB, 0xBB, 0x18, 0x01, 0xE8, 0xC3, 0xFF, 0x73, 0xFB, 0x81, 0xEB, 0x18, 0x01,
|
| 225 | 0x74, 0x07, 0xE8, 0xC0, 0xFD, 0x75, 0x02, 0xC3, 0x4F, 0x81, 0xEF, 0x17, 0x01, 0x8B, 0xCF, 0xE8,
|
| 226 | 0x05, 0xFE, 0xBE, 0x6A, 0x07, 0xE8, 0x9A, 0xFD, 0xE9, 0x0C, 0xFD, 0xE8, 0xD6, 0xFF, 0x5F, 0x07,
|
| 227 | 0xBE, 0x18, 0x01, 0x8B, 0xCB, 0xF3, 0xA4, 0xC3, 0xB9, 0x05, 0x00, 0xE8, 0x5C, 0xFF, 0xE8, 0x12,
|
| 228 | 0xFE, 0x82, 0xEC, 0x08, 0x80, 0xC6, 0x80, 0x50, 0x52, 0xE8, 0x89, 0xFD, 0x75, 0xDD, 0x5F, 0x07,
|
| 229 | 0xE8, 0x9A, 0xFD, 0xE8, 0xCD, 0xFD, 0x26, 0x8A, 0x05, 0xE8, 0xA7, 0xFD, 0xB0, 0x2E, 0xE8, 0xB7,
|
| 230 | 0xFD, 0xB9, 0x02, 0x00, 0xBA, 0x00, 0x00, 0xE8, 0x48, 0xFD, 0x8A, 0xE0, 0xE8, 0x4B, 0xFF, 0x86,
|
| 231 | 0xE0, 0x72, 0x0C, 0xE8, 0xA2, 0xFD, 0x8A, 0xF2, 0x8A, 0xD4, 0xE2, 0xEB, 0xE8, 0x33, 0xFD, 0x3C,
|
| 232 | 0x08, 0x74, 0x19, 0x3C, 0x7F, 0x74, 0x15, 0x3C, 0x2D, 0x74, 0x4D, 0x3C, 0x0D, 0x74, 0x2F, 0x3C,
|
| 233 | 0x20, 0x74, 0x31, 0xB0, 0x07, 0xE8, 0x80, 0xFD, 0xE3, 0xE2, 0xEB, 0xCB, 0x82, 0xF9, 0x02, 0x74,
|
| 234 | 0xC6, 0xFE, 0xC1, 0x8A, 0xD6, 0x8A, 0xF5, 0xE8, 0x15, 0xFD, 0xEB, 0xBB, 0x82, 0xF9, 0x02, 0x74,
|
| 235 | 0x0B, 0x51, 0xB1, 0x04, 0xD2, 0xE6, 0x59, 0x0A, 0xD6, 0x26, 0x88, 0x15, 0x47, 0xC3, 0xE8, 0xEB,
|
| 236 | 0xFF, 0xE9, 0xE0, 0xFC, 0xE8, 0xE5, 0xFF, 0x41, 0x41, 0xE8, 0x5B, 0xFD, 0x8B, 0xC7, 0x24, 0x07,
|
| 237 | 0x75, 0x84, 0xE8, 0xCF, 0xFC, 0xE9, 0x78, 0xFF, 0xE8, 0xD1, 0xFF, 0x4F, 0x4F, 0xEB, 0xF3, 0xE8,
|
| 238 | 0xEA, 0xFC, 0x74, 0x62, 0x8A, 0x15, 0x47, 0x8A, 0x35, 0x82, 0xFE, 0x0D, 0x74, 0x76, 0x47, 0xE8,
|
| 239 | 0x20, 0xFF, 0x82, 0xFE, 0x20, 0x74, 0x6D, 0xBF, 0xD7, 0x06, 0x92, 0x0E, 0x07, 0xB9, 0x0E, 0x00,
|
| 240 | 0xF2, 0xAF, 0x75, 0x3C, 0x0B, 0xC9, 0x75, 0x06, 0x4F, 0x4F, 0x2E, 0x8B, 0x45, 0xFE, 0xE8, 0x07,
|
| 241 | 0xFD, 0x8A, 0xC4, 0xE8, 0x02, 0xFD, 0xE8, 0x0A, 0xFD, 0x1E, 0x07, 0x8D, 0x9D, 0xC3, 0xFA, 0x8B,
|
| 242 | 0x17, 0xE8, 0xD8, 0xFC, 0xE8, 0x7D, 0xFC, 0xB0, 0x3A, 0xE8, 0xEC, 0xFC, 0xE8, 0x42, 0xFC, 0xE8,
|
| 243 | 0xA3, 0xFC, 0x74, 0x0B, 0xB9, 0x04, 0x00, 0xE8, 0x63, 0xFE, 0xE8, 0xD5, 0xFE, 0x89, 0x17, 0xC3,
|
| 244 | 0xB8, 0x42, 0x52, 0xE9, 0x96, 0x00, 0xBE, 0xD7, 0x06, 0xBB, 0x9C, 0x01, 0xB9, 0x08, 0x00, 0xE8,
|
| 245 | 0x65, 0x00, 0xE8, 0x4F, 0xFC, 0xB9, 0x05, 0x00, 0xE8, 0x5C, 0x00, 0xE8, 0xC5, 0xFC, 0xE8, 0x93,
|
| 246 | 0x00, 0xE9, 0x40, 0xFC, 0x82, 0xFA, 0x46, 0x75, 0xD7, 0xE8, 0x88, 0x00, 0xB0, 0x2D, 0xE8, 0xA7,
|
| 247 | 0xFC, 0xE8, 0xFD, 0xFB, 0xE8, 0x5E, 0xFC, 0x33, 0xDB, 0x8B, 0x16, 0xB6, 0x01, 0x8B, 0xF7, 0xAD,
|
| 248 | 0x3C, 0x0D, 0x74, 0x66, 0x82, 0xFC, 0x0D, 0x74, 0x66, 0xBF, 0xF3, 0x06, 0xB9, 0x20, 0x00, 0x0E,
|
| 249 | 0x07, 0xF2, 0xAF, 0x75, 0x5A, 0x8A, 0xE9, 0x80, 0xE1, 0x0F, 0xB8, 0x01, 0x00, 0xD3, 0xC0, 0x85,
|
| 250 | 0xC3, 0x75, 0x33, 0x0B, 0xD8, 0x0B, 0xD0, 0xF6, 0xC5, 0x10, 0x75, 0x02, 0x33, 0xD0, 0x8B, 0xFE,
|
| 251 | 0x1E, 0x07, 0xE8, 0x17, 0xFC, 0xEB, 0xC6, 0x2E, 0xAD, 0xE8, 0x5C, 0xFC, 0x8A, 0xC4, 0xE8, 0x57,
|
| 252 | 0xFC, 0xB0, 0x3D, 0xE8, 0x52, 0xFC, 0x8B, 0x17, 0x43, 0x43, 0xE8, 0x2F, 0xFC, 0xE8, 0x53, 0xFC,
|
| 253 | 0xE8, 0x50, 0xFC, 0xE2, 0xE2, 0xC3, 0xB8, 0x44, 0x46, 0xE8, 0x0E, 0x00, 0xE8, 0x39, 0xFC, 0x8A,
|
| 254 | 0xC4, 0xE8, 0x34, 0xFC, 0xBE, 0x6B, 0x07, 0xE9, 0x3B, 0xFE, 0x89, 0x16, 0xB6, 0x01, 0xC3, 0xB8,
|
| 255 | 0x42, 0x46, 0xEB, 0xE5, 0xBE, 0xF3, 0x06, 0xB9, 0x10, 0x00, 0x8B, 0x16, 0xB6, 0x01, 0x2E, 0xAD,
|
| 256 | 0xD1, 0xE2, 0x72, 0x04, 0x2E, 0x8B, 0x44, 0x1E, 0x0B, 0xC0, 0x74, 0x0B, 0xE8, 0x09, 0xFC, 0x8A,
|
| 257 | 0xC4, 0xE8, 0x04, 0xFC, 0xE8, 0x0C, 0xFC, 0xE2, 0xE5, 0xC3, 0xE8, 0xAF, 0xFB, 0xE8, 0x98, 0xFD,
|
| 258 | 0xBA, 0x01, 0x00, 0x72, 0x06, 0xB9, 0x04, 0x00, 0xE8, 0x6F, 0xFD, 0x89, 0x16, 0x02, 0x01, 0xE8,
|
| 259 | 0xE0, 0xFD, 0xC7, 0x06, 0x00, 0x01, 0x00, 0x00, 0x80, 0x0E, 0xB7, 0x01, 0x01, 0xC7, 0x06, 0x0C,
|
| 260 | 0x00, 0xD1, 0x05, 0x8C, 0x0E, 0x0E, 0x00, 0xC7, 0x06, 0x04, 0x00, 0xD8, 0x05, 0x8C, 0x0E, 0x06,
|
| 261 | 0x00, 0xFA, 0xC7, 0x06, 0x64, 0x00, 0xD8, 0x05, 0x8C, 0x0E, 0x66, 0x00, 0xBC, 0x9C, 0x01, 0x58,
|
| 262 | 0x5B, 0x59, 0x5A, 0x5D, 0x5D, 0x5E, 0x5F, 0x07, 0x07, 0x17, 0x8B, 0x26, 0xA4, 0x01, 0xFF, 0x36,
|
| 263 | 0xB6, 0x01, 0xFF, 0x36, 0xB2, 0x01, 0xFF, 0x36, 0xB4, 0x01, 0x8E, 0x1E, 0xAC, 0x01, 0xCF, 0xEB,
|
| 264 | 0xB1, 0x87, 0xEC, 0xFF, 0x4E, 0x00, 0x87, 0xEC, 0x2E, 0x89, 0x26, 0xA4, 0x09, 0x2E, 0x8C, 0x16,
|
| 265 | 0xB0, 0x09, 0x33, 0xE4, 0x8E, 0xD4, 0xBC, 0xB0, 0x01, 0x06, 0x1E, 0x57, 0x56, 0x55, 0x4C, 0x4C,
|
| 266 | 0x52, 0x51, 0x53, 0x50, 0x16, 0x1F, 0x8B, 0x26, 0xA4, 0x01, 0x8E, 0x16, 0xB0, 0x01, 0x8F, 0x06,
|
| 267 | 0xB4, 0x01, 0x8F, 0x06, 0xB2, 0x01, 0x58, 0x80, 0xE4, 0xFE, 0xA3, 0xB6, 0x01, 0x89, 0x26, 0xA4,
|
| 268 | 0x01, 0x1E, 0x07, 0x1E, 0x17, 0xBC, 0x9C, 0x01, 0xC7, 0x06, 0x64, 0x00, 0xBB, 0x06, 0xB0, 0x20,
|
| 269 | 0xE6, 0xF2, 0xFB, 0xFC, 0xE8, 0xCD, 0xFA, 0xE8, 0x6C, 0xFE, 0xFF, 0x0E, 0x02, 0x01, 0x75, 0x9F,
|
| 270 | 0xBE, 0x04, 0x01, 0x8B, 0x0E, 0x00, 0x01, 0xE3, 0x10, 0x8B, 0x54, 0x14, 0xAD, 0x50, 0xE8, 0x62,
|
| 271 | 0xFB, 0x8E, 0xC0, 0x8B, 0xFA, 0x58, 0xAA, 0xE2, 0xF0, 0xE9, 0x3B, 0xFA, 0xB9, 0x04, 0x00, 0xE8,
|
| 272 | 0x98, 0xFC, 0xEC, 0xE8, 0xFD, 0xFA, 0xE9, 0x9B, 0xFA, 0xB9, 0x04, 0x00, 0xE8, 0x8B, 0xFC, 0x52,
|
| 273 | 0xB9, 0x02, 0x00, 0xE8, 0x84, 0xFC, 0x92, 0x5A, 0xEE, 0xC3, 0xBB, 0x18, 0x01, 0x33, 0xF6, 0xE8,
|
| 274 | 0xAA, 0xFA, 0x74, 0x19, 0xB9, 0x05, 0x00, 0xE8, 0x70, 0xFC, 0x89, 0x17, 0x88, 0x67, 0xED, 0x43,
|
| 275 | 0x43, 0x46, 0x83, 0xFE, 0x0B, 0x75, 0xE8, 0xB8, 0x42, 0x50, 0xE9, 0x9F, 0xFE, 0x89, 0x36, 0x00,
|
| 276 | 0x01, 0xE8, 0xCE, 0xFC, 0x8B, 0xCE, 0xE3, 0x1A, 0xBE, 0x04, 0x01, 0x8B, 0x54, 0x14, 0xAD, 0xE8,
|
| 277 | 0x01, 0xFB, 0x8E, 0xD8, 0x8B, 0xFA, 0x8A, 0x05, 0xC6, 0x05, 0xCC, 0x06, 0x1F, 0x88, 0x44, 0xFE,
|
| 278 | 0xE2, 0xE9, 0xC7, 0x06, 0x02, 0x01, 0x01, 0x00, 0xE9, 0xD2, 0xFE, 0x50, 0xB0, 0x20, 0xE6, 0xF2,
|
| 279 | 0xE4, 0xF6, 0x24, 0x7F, 0x3C, 0x13, 0x75, 0x03, 0xE8, 0x37, 0xFA, 0x3C, 0x03, 0x74, 0x02, 0x58,
|
| 280 | 0xCF, 0xE8, 0x20, 0xFA, 0xE9, 0xB0, 0xF9, 0x41, 0x58, 0x42, 0x58, 0x43, 0x58, 0x44, 0x58, 0x53,
|
| 281 | 0x50, 0x42, 0x50, 0x53, 0x49, 0x44, 0x49, 0x44, 0x53, 0x45, 0x53, 0x53, 0x53, 0x43, 0x53, 0x49,
|
| 282 | 0x50, 0x50, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x56, 0x44, 0x4E, 0x45,
|
| 283 | 0x49, 0x00, 0x00, 0x4E, 0x47, 0x5A, 0x52, 0x00, 0x00, 0x41, 0x43, 0x00, 0x00, 0x50, 0x45, 0x00,
|
| 284 | 0x00, 0x43, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x56, 0x55, 0x50, 0x44,
|
| 285 | 0x49, 0x00, 0x00, 0x50, 0x4C, 0x4E, 0x5A, 0x00, 0x00, 0x4E, 0x41, 0x00, 0x00, 0x50, 0x4F, 0x00,
|
| 286 | 0x00, 0x4E, 0x43, 0x01, 0x19, 0x04, 0x10, 0x02, 0x0F, 0xFD, 0x01, 0x19, 0x04, 0x18, 0x01, 0x0B,
|
| 287 | 0xFD, 0x06, 0x63, 0x0B, 0x07, 0x00, 0x06, 0x00, 0x02, 0x70, 0x05, 0x00, 0x04, 0xB7, 0x77, 0xCE,
|
| 288 | 0x37, 0x0D, 0x0A, 0x0A, 0x53, 0x43, 0x50, 0x20, 0x38, 0x30, 0x38, 0x36, 0x20, 0x4D, 0x6F, 0x6E,
|
| 289 | 0x69, 0x74, 0x6F, 0x72, 0x20, 0x31, 0x2E, 0x35, 0x0D, 0x8A, 0x5E, 0x20, 0x45, 0x72, 0x72, 0x6F,
|
| 290 | 0x72, 0x0D, 0x8A, 0x08, 0x20, 0x88, 0x57, 0xB0, 0x01, 0xE6, 0x02, 0xB0, 0x84, 0xE6, 0x00, 0xB0,
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 291 | 0x7F, 0xE6, 0x04, 0xB6, 0x21, 0xB0, 0x30, 0xE6, 0x34, 0xB9, 0xC4, 0xAA, 0xD4, 0x0A, 0xD4, 0x0A,
|
| 292 | 0xE2, 0xFA, 0xB0, 0xD0, 0xE6, 0x30, 0xD4, 0x0A, 0xD4, 0x0A, 0xD4, 0x0A, 0xD4, 0x0A, 0x80, 0xF6,
|
| 293 | 0x10, 0x8A, 0xC6, 0xE6, 0x34, 0xBF, 0x00, 0x02, 0xB0, 0x0F, 0xE6, 0x30, 0xE4, 0x34, 0xD0, 0xC8,
|
| 294 | 0x73, 0xFA, 0xE4, 0x30, 0x24, 0x98, 0x75, 0xDA, 0xB0, 0x01, 0xE6, 0x32, 0x8A, 0xC6, 0x0C, 0x80,
|
| 295 | 0xE6, 0x34, 0xB2, 0x33, 0xB0, 0x8C, 0xE6, 0x30, 0xEB, 0x02, 0xEC, 0xAA, 0xE4, 0x34, 0xD0, 0xC8,
|
| 296 | 0x73, 0xF8, 0xE4, 0x30, 0x24, 0x9C, 0x75, 0xBA, 0xC7, 0x06, 0xB2, 0x01, 0x00, 0x00, 0xC7, 0x06,
|
| 297 | 0xB4, 0x01, 0x00, 0x02, 0x5F, 0xE9, 0x82, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
| 298 | 0xEA, 0x00, 0x00, 0x80, 0xFF, 0x0D, 0x00, 0x68, 0x00, 0xA0, 0x01, 0x40, 0x03, 0x78, 0x04, 0xFF
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 299 | };
|
| 300 |
|
| 301 | static int32 scp300f_mem(const int32 Addr, const int32 write, const int32 data)
|
| 302 | {
|
| 303 | /* DBG_PRINT(("SCP300F: ROM %s, Addr %04x" NLP, write ? "WR" : "RD", Addr)); */
|
| 304 | if(write) {
|
| 305 | if(scp300f_info->rom_enabled)
|
| 306 | {
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 307 | sim_debug(ROM_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " WR ROM[0x%05x]: Cannot write to ROM.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 308 | } else {
|
| 309 | }
|
| 310 | return 0;
|
| 311 | } else {
|
| 312 | if(scp300f_info->rom_enabled)
|
| 313 | {
|
| 314 | return scp300f_rom[Addr & SCP300F_ADDR_MASK];
|
| 315 | } else {
|
| 316 | return scp300f_ram[Addr & SCP300F_ADDR_MASK];
|
| 317 | }
|
| 318 | }
|
| 319 | }
|
| 320 |
|
| 321 | static int32 scp300fdev(const int32 port, const int32 io, const int32 data)
|
| 322 | {
|
| 323 | /* DBG_PRINT(("SCP300F: IO %s, Port %02x\n", io ? "WR" : "RD", port)); */
|
| 324 | if(io) {
|
| 325 | SCP300F_Write(port, data);
|
| 326 | return 0;
|
| 327 | } else {
|
| 328 | return(SCP300F_Read(port));
|
| 329 | }
|
| 330 | }
|
| 331 |
|
| 332 | #define SCP300F_MPIC_0 0x00 /* Master PIC */
|
| 333 | #define SCP300F_MPIC_1 0x01 /* Master PIC */
|
| 334 | #define SCP300F_SPIC_0 0x02 /* Slave PIC */
|
| 335 | #define SCP300F_SPIC_1 0x03 /* Slave PIC */
|
| 336 | #define SCP300F_9513_DATA 0x04 /* 9513 counter/timer Data Port */
|
| 337 | #define SCP300F_9513_STATUS 0x05 /* 9513 counter/timer Status/Control Port */
|
| 338 | #define SCP300F_UART_DATA 0x06 /* UART Data Register */
|
| 339 | #define SCP300F_UART_STATUS 0x07 /* UART Status */
|
| 340 |
|
| 341 | #define SCP300F_PIO_DATA 0x0C /* PIO Data */
|
| 342 | #define SCP300F_PIO_STATUS 0x0D /* PIO Status */
|
| 343 | #define SCP300F_EPROM_DIS 0x0E /* EPROM Disable */
|
| 344 | #define SCP300F_SENSE_SW 0x0F /* Sense Switch */
|
| 345 |
|
| 346 | extern int32 sio0d(const int32 port, const int32 io, const int32 data);
|
| 347 | extern int32 sio0s(const int32 port, const int32 io, const int32 data);
|
| 348 |
|
| 349 | static uint8 SCP300F_Read(const uint32 Addr)
|
| 350 | {
|
| 351 | uint8 cData = 0xFF;
|
| 352 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 353 | switch(Addr & SCP300F_IO_MASK) {
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 354 | case SCP300F_MPIC_0:
|
| 355 | case SCP300F_MPIC_1:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 356 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " Master 8259 DATA RD[%02x]: not implemented.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 357 | break;
|
| 358 | case SCP300F_SPIC_0:
|
| 359 | case SCP300F_SPIC_1:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 360 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " Slave 8259 DATA RD[%02x]: not implemented.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 361 | break;
|
| 362 | case SCP300F_9513_DATA:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 363 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " 9513 DATA RD[%02x]: not implemented.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 364 | break;
|
| 365 | case SCP300F_9513_STATUS:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 366 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " 9513 STAT RD[%02x]: not implemented.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 367 | break;
|
| 368 | case SCP300F_UART_DATA: /* UART is handled by the 2SIO, if this gets called, then the 2SIO was not */
|
| 369 | case SCP300F_UART_STATUS: /* configured properly. */
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 370 | sim_debug(VERBOSE_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " RD[%02x]: UART not configured properly.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 371 | break;
|
| 372 | case SCP300F_PIO_DATA:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 373 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " PIO DATA RD[%02x]: not implemented.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 374 | break;
|
| 375 | case SCP300F_PIO_STATUS:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 376 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " PIO STATUS RD[%02x]: not implemented.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 377 | break;
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 378 | case SCP300F_EPROM_DIS:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 379 | sim_debug(ROM_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " EPROM DIS RD: EPROM Disabled.\n", PCX);
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 380 | scp300f_info->rom_enabled = 0;
|
| 381 | break;
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 382 | case SCP300F_SENSE_SW: /* Sense Switch */
|
| 383 | cData = scp300f_sr;
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 384 | sim_debug(VERBOSE_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " RD: Sense Switch=0x%02x\n", PCX, cData);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 385 | break;
|
| 386 | default:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 387 | sim_debug(VERBOSE_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " RD[%02x]: not Implemented.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 388 | break;
|
| 389 | }
|
| 390 |
|
| 391 | return (cData);
|
| 392 |
|
| 393 | }
|
| 394 |
|
| 395 | static uint8 SCP300F_Write(const uint32 Addr, uint8 cData)
|
| 396 | {
|
| 397 |
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 398 | switch(Addr & SCP300F_IO_MASK) {
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 399 | case SCP300F_MPIC_0:
|
| 400 | case SCP300F_MPIC_1:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 401 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " Master 8259 DATA WR[%02x]=%02x: not implemented.\n", PCX, Addr, cData);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 402 | break;
|
| 403 | case SCP300F_SPIC_0:
|
| 404 | case SCP300F_SPIC_1:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 405 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " Slave 8259 DATA WR[%02x]=%02x: not implemented.\n", PCX, Addr, cData);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 406 | break;
|
| 407 | case SCP300F_9513_DATA:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 408 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " 9513 DATA WR[%02x]=%02x: not implemented.\n", PCX, Addr, cData);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 409 | break;
|
| 410 | case SCP300F_9513_STATUS:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 411 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " 9513 STAT WR[%02x]=%02x: not implemented.\n", PCX, Addr, cData);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 412 | break;
|
| 413 | case SCP300F_UART_DATA: /* UART is handled by the 2SIO, if this gets called, then the 2SIO was not */
|
| 414 | case SCP300F_UART_STATUS: /* configured properly. */
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 415 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " WR[%02x]: UART not configured properly.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 416 | break;
|
| 417 | case SCP300F_PIO_DATA:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 418 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " PIO DATA WR[%02x]=%02x: not implemented.\n", PCX, Addr, cData);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 419 | break;
|
| 420 | case SCP300F_PIO_STATUS:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 421 | sim_debug(UART_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " WR[%02x]: Cannot write to PIO STATUS.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 422 | break;
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 423 | case SCP300F_EPROM_DIS:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 424 | sim_debug(ROM_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " EPROM DIS WR: EPROM Disabled.\n", PCX);
|
Bob Supnik | 9c4779c | 2009-02-08 09:06:00 -0800 | [diff] [blame] | 425 | scp300f_info->rom_enabled = 0;
|
| 426 | break;
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 427 | case SCP300F_SENSE_SW:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 428 | sim_debug(VERBOSE_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " WR[%02x]: Cannot write to SR.\n", PCX, Addr);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 429 | break;
|
| 430 | default:
|
Mark Pizzolato | fffad7c | 2012-03-19 16:05:24 -0700 | [diff] [blame] | 431 | sim_debug(VERBOSE_MSG, &scp300f_dev, "SCP300F: " ADDRESS_FORMAT " WR[0x%02x]=0x%02x: not Implemented.\n", PCX, Addr, cData);
|
Bob Supnik | 59aa4a7 | 2008-06-24 14:21:00 -0700 | [diff] [blame] | 432 | break;
|
| 433 | }
|
| 434 |
|
| 435 | return(0);
|
| 436 | }
|
| 437 |
|