src/mess/drivers/osbexec.c
| r9908 | r9909 | |
| 47 | 47 | UINT8 *fontram; |
| 48 | 48 | UINT8 *vram; |
| 49 | 49 | UINT8 *ram_0000; |
| 50 | UINT8 *ram_c000; |
| 51 | UINT8 temp_attr; |
| 50 | 52 | emu_timer *video_timer; |
| 51 | 53 | |
| 52 | 54 | /* PIA 0 (UD12) */ |
| r9908 | r9909 | |
| 73 | 75 | memory_set_bankptr( machine, "0000", ram_0000 + 0x0000 ); |
| 74 | 76 | memory_set_bankptr( machine, "2000", ram_0000 + 0x2000 ); |
| 75 | 77 | memory_set_bankptr( machine, "4000", ram_0000 + 0x4000 ); |
| 76 | | memory_set_bankptr( machine, "c000", ram_0000 + 0xc000 ); |
| 78 | ram_c000 = ram_0000 + 0xc000; |
| 77 | 79 | memory_set_bankptr( machine, "e000", ram_0000 + 0xe000 ); |
| 78 | 80 | |
| 79 | 81 | if ( pia0_porta & 0x80 ) |
| r9908 | r9909 | |
| 84 | 86 | } |
| 85 | 87 | |
| 86 | 88 | if ( pia0_porta & 0x40 ) |
| 87 | | memory_set_bankptr(machine, "c000", vram_region->base() ); |
| 89 | ram_c000 = vram_region->base(); |
| 88 | 90 | } |
| 89 | 91 | |
| 90 | 92 | void update_irq_state(running_machine *machine) |
| r9908 | r9909 | |
| 114 | 116 | } |
| 115 | 117 | |
| 116 | 118 | |
| 119 | static READ8_HANDLER( osbexec_c000_r ) |
| 120 | { |
| 121 | osbexec_state *state = space->machine->driver_data<osbexec_state>(); |
| 122 | UINT8 data = state->ram_c000[offset]; |
| 123 | |
| 124 | if ( ( state->pia0_porta & 0x40 ) && offset < 0x1000 ) |
| 125 | { |
| 126 | state->temp_attr = state->ram_c000[ 0x1000 + offset ]; |
| 127 | } |
| 128 | |
| 129 | return data; |
| 130 | } |
| 131 | |
| 132 | |
| 133 | static WRITE8_HANDLER( osbexec_c000_w ) |
| 134 | { |
| 135 | osbexec_state *state = space->machine->driver_data<osbexec_state>(); |
| 136 | |
| 137 | state->ram_c000[offset] = data; |
| 138 | |
| 139 | if ( ( state->pia0_porta & 0x40 ) && offset < 0x1000 ) |
| 140 | { |
| 141 | state->ram_c000[ 0x1000 + offset ] = state->temp_attr; |
| 142 | } |
| 143 | } |
| 144 | |
| 145 | |
| 117 | 146 | static READ8_HANDLER( osbexec_kbd_r ) |
| 118 | 147 | { |
| 119 | 148 | UINT8 data = 0xFF; |
| r9908 | r9909 | |
| 158 | 187 | AM_RANGE( 0x0000, 0x1FFF ) AM_READ_BANK("0000") AM_WRITE( osbexec_0000_w ) /* ROM and maybe also banked ram */ |
| 159 | 188 | AM_RANGE( 0x2000, 0x3FFF ) AM_RAMBANK("2000") /* Banked RAM */ |
| 160 | 189 | AM_RANGE( 0x4000, 0xBFFF ) AM_RAMBANK("4000") /* Banked RAM */ |
| 161 | | AM_RANGE( 0xC000, 0xDFFF ) AM_RAMBANK("c000") /* Video ram / Banked RAM */ |
| 190 | AM_RANGE( 0xC000, 0xDFFF ) AM_READWRITE( osbexec_c000_r, osbexec_c000_w ) /* Video ram / Banked RAM */ |
| 162 | 191 | AM_RANGE( 0xE000, 0xEFFF ) AM_RAMBANK("e000") /* Banked RAM */ |
| 163 | 192 | AM_RANGE( 0xF000, 0xFFFF ) AM_RAM /* 4KB of non-banked RAM for system stack etc */ |
| 164 | 193 | ADDRESS_MAP_END |