trunk/src/mess/drivers/pencil2.c
| r19771 | r19772 | |
| 17 | 17 | J2 Cart slot |
| 18 | 18 | J3 Memory expansion slot |
| 19 | 19 | J4 Printer slot |
| 20 | J5,J6 Joystick ports |
| 20 | 21 | |
| 21 | 22 | XTAL 10.738 MHz |
| 22 | 23 | |
| 24 | Output is to a TV on Australian Channel 1 (no monitor output) |
| 25 | |
| 23 | 26 | U1 uPD780C-1 (Z80A) |
| 24 | 27 | U2 Video chip with heatsink stuck on top, possibly TMS9928 |
| 25 | 28 | U3 SN76489AN |
| r19771 | r19772 | |
| 55 | 58 | but is banked out of view of a BASIC program. |
| 56 | 59 | |
| 57 | 60 | |
| 61 | KNOWN CARTS |
| 62 | SD-BASIC V1.0 |
| 63 | SD-BASIC V2.0 |
| 64 | |
| 65 | |
| 66 | ToDo: |
| 67 | - Keyboard |
| 68 | - Printer (out 00) |
| 69 | - Cassette |
| 70 | - Joysticks |
| 71 | - Colours are different to the real system |
| 72 | - RAM banking |
| 73 | - Cart slot |
| 74 | - Size of vram |
| 75 | - When BASIC starts the intro is off the top of the screen |
| 76 | |
| 58 | 77 | ****************************************************************************/ |
| 59 | 78 | |
| 60 | 79 | #include "emu.h" |
| 61 | 80 | #include "cpu/z80/z80.h" |
| 62 | 81 | #include "video/tms9928a.h" |
| 82 | #include "sound/sn76496.h" |
| 63 | 83 | //#include "imagedev/cartslot.h" |
| 64 | 84 | //#include "imagedev/cassette.h" |
| 85 | //#include "sound/wave.h" |
| 65 | 86 | |
| 66 | 87 | |
| 67 | 88 | class pencil2_state : public driver_device |
| r19771 | r19772 | |
| 73 | 94 | { } |
| 74 | 95 | |
| 75 | 96 | required_device<cpu_device> m_maincpu; |
| 76 | | DECLARE_READ8_MEMBER(port00_r) { return 0x80; }; |
| 77 | | DECLARE_READ8_MEMBER(port0f_r) { return 0x05; }; |
| 97 | //DECLARE_READ8_MEMBER(port00_r) { return 0x80; }; |
| 98 | //DECLARE_READ8_MEMBER(port0f_r) { return 0x05; }; |
| 78 | 99 | virtual void machine_reset(); |
| 79 | 100 | }; |
| 80 | 101 | |
| r19771 | r19772 | |
| 88 | 109 | static ADDRESS_MAP_START(pencil2_io, AS_IO, 8, pencil2_state) |
| 89 | 110 | //ADDRESS_MAP_UNMAP_HIGH |
| 90 | 111 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 91 | | AM_RANGE(0x00, 0x00) AM_READ(port00_r) |
| 92 | | AM_RANGE(0x0f, 0x0f) AM_READ(port0f_r) |
| 93 | | AM_RANGE(0x20, 0x20) AM_WRITENOP |
| 112 | //AM_RANGE(0x00, 0x00) AM_READ(port00_r) |
| 113 | //AM_RANGE(0x0f, 0x0f) AM_READ(port0f_r) |
| 114 | //AM_RANGE(0x20, 0x20) AM_WRITENOP |
| 115 | AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) |
| 116 | AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) |
| 117 | AM_RANGE(0xe0, 0xff) AM_DEVWRITE("sn76489a", sn76489a_device, write) |
| 94 | 118 | ADDRESS_MAP_END |
| 95 | 119 | |
| 96 | 120 | |
| r19771 | r19772 | |
| 103 | 127 | { |
| 104 | 128 | } |
| 105 | 129 | |
| 106 | | static TMS9928A_INTERFACE(pencil2_tms9928a_interface) |
| 130 | static const sn76496_config psg_intf = |
| 107 | 131 | { |
| 108 | | "screen", |
| 109 | | 0x4000, |
| 110 | 132 | DEVCB_NULL |
| 111 | 133 | }; |
| 112 | 134 | |
| 135 | static TMS9928A_INTERFACE(pencil2_tms9928a_interface) |
| 136 | { |
| 137 | "screen", // screen tag |
| 138 | 0x4000, // vram size (guess) |
| 139 | DEVCB_NULL // write line if int changes |
| 140 | }; |
| 141 | |
| 113 | 142 | static MACHINE_CONFIG_START( pencil2, pencil2_state ) |
| 114 | 143 | /* basic machine hardware */ |
| 115 | | MCFG_CPU_ADD("maincpu", Z80, 10738000/3) |
| 144 | MCFG_CPU_ADD("maincpu", Z80, XTAL_10_738635MHz/3) |
| 116 | 145 | MCFG_CPU_PROGRAM_MAP(pencil2_mem) |
| 117 | 146 | MCFG_CPU_IO_MAP(pencil2_io) |
| 118 | 147 | |
| r19771 | r19772 | |
| 121 | 150 | MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) |
| 122 | 151 | MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) |
| 123 | 152 | |
| 153 | // sound hardware |
| 154 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 155 | MCFG_SOUND_ADD("sn76489a", SN76489A, XTAL_10_738635MHz/3) // guess |
| 156 | MCFG_SOUND_CONFIG(psg_intf) |
| 157 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 158 | // MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG) |
| 159 | // MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 160 | |
| 161 | /* cassette */ |
| 162 | // MCFG_CASSETTE_ADD( CASSETTE_TAG, pencil2_cassette_interface ) |
| 163 | |
| 164 | /* cartridge */ |
| 165 | // MCFG_CARTSLOT_ADD("cart") |
| 166 | // MCFG_CARTSLOT_EXTENSION_LIST("rom") |
| 167 | // MCFG_CARTSLOT_NOT_MANDATORY |
| 168 | // MCFG_CARTSLOT_LOAD(pencil2_cart) |
| 169 | // MCFG_CARTSLOT_INTERFACE("pencil2_cart") |
| 124 | 170 | MACHINE_CONFIG_END |
| 125 | 171 | |
| 126 | 172 | /* ROM definition */ |
| r19771 | r19772 | |
| 131 | 177 | ROM_RELOAD( 0xb000, 0x1000 ) |
| 132 | 178 | ROM_LOAD( "203", 0x8000, 0x2000, CRC(f502175c) SHA1(cb2190e633e98586758008577265a7a2bc088233) ) |
| 133 | 179 | ROM_LOAD( "202", 0xc000, 0x2000, CRC(5171097d) SHA1(171999bc04dc98c74c0722b2866310d193dc0f82) ) |
| 180 | // ROM_CART_LOAD("cart", 0x8000, 0x8000, ROM_OPTIONAL) |
| 134 | 181 | ROM_END |
| 135 | 182 | |
| 136 | 183 | /* Driver */ |