trunk/src/mess/drivers/cd2650.c
| r22588 | r22589 | |
| 78 | 78 | READ8_MEMBER( cd2650_state::keyin_r ) |
| 79 | 79 | { |
| 80 | 80 | UINT8 ret = m_term_data; |
| 81 | | m_term_data = 0x80; |
| 82 | | if ((ret > 0x60) && (ret < 0x7b)) |
| 81 | if ((ret > 0x5f) && (ret < 0x80)) |
| 83 | 82 | ret -= 0x20; // upper case only |
| 83 | m_term_data = ret | 0x80; |
| 84 | 84 | return ret; |
| 85 | 85 | } |
| 86 | 86 | |
| r22588 | r22589 | |
| 94 | 94 | |
| 95 | 95 | static ADDRESS_MAP_START( cd2650_io, AS_IO, 8, cd2650_state) |
| 96 | 96 | ADDRESS_MAP_UNMAP_HIGH |
| 97 | //AM_RANGE(0x80, 0x84) disk i/o |
| 97 | 98 | AM_RANGE(S2650_DATA_PORT,S2650_DATA_PORT) AM_READWRITE(keyin_r, beep_w) |
| 98 | 99 | AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(cass_r, cass_w) |
| 99 | 100 | ADDRESS_MAP_END |
| r22588 | r22589 | |
| 135 | 136 | for (x = 0; x < 80; x++) |
| 136 | 137 | { |
| 137 | 138 | gfx = 0; |
| 138 | | if (ra < 9) |
| 139 | if ((ra) && (ra < 9)) |
| 139 | 140 | { |
| 140 | 141 | mem = offset + y + (x<<4); |
| 141 | 142 | |
| 142 | 143 | if (mem > 0x4ff) |
| 143 | 144 | mem -= 0x500; |
| 144 | 145 | |
| 145 | | chr = m_p_videoram[mem]; |
| 146 | chr = m_p_videoram[mem] & 0x3f; |
| 146 | 147 | |
| 147 | | if (chr < 0x20) |
| 148 | | chr |= 0x40; |
| 149 | | |
| 150 | | gfx = m_p_chargen[(chr<<4) | ra ]; |
| 148 | gfx = m_p_chargen[(BITSWAP8(chr,7,6,2,1,0,3,4,5)<<3) | (ra-1) ]; |
| 151 | 149 | } |
| 152 | 150 | |
| 153 | 151 | /* Display a scanline of a character */ |
| r22588 | r22589 | |
| 165 | 163 | return 0; |
| 166 | 164 | } |
| 167 | 165 | |
| 166 | /* F4 Character Displayer */ |
| 167 | static const gfx_layout cd2650_charlayout = |
| 168 | { |
| 169 | 8, 8, /* 8 x 12 characters */ |
| 170 | 64, /* 256 characters */ |
| 171 | 1, /* 1 bits per pixel */ |
| 172 | { 0 }, /* no bitplanes */ |
| 173 | /* x offsets */ |
| 174 | { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 175 | /* y offsets */ |
| 176 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 177 | 8*8 /* every char takes 16 bytes */ |
| 178 | }; |
| 179 | |
| 180 | static GFXDECODE_START( cd2650 ) |
| 181 | GFXDECODE_ENTRY( "chargen", 0x0000, cd2650_charlayout, 0, 1 ) |
| 182 | GFXDECODE_END |
| 183 | |
| 168 | 184 | WRITE8_MEMBER( cd2650_state::kbd_put ) |
| 169 | 185 | { |
| 170 | 186 | if (data) |
| r22588 | r22589 | |
| 279 | 295 | MCFG_SCREEN_UPDATE_DRIVER(cd2650_state, screen_update) |
| 280 | 296 | MCFG_SCREEN_SIZE(640, 160) |
| 281 | 297 | MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 159) |
| 298 | MCFG_GFXDECODE(cd2650) |
| 282 | 299 | MCFG_PALETTE_LENGTH(2) |
| 283 | 300 | MCFG_PALETTE_INIT(black_and_white) |
| 284 | 301 | |
| r22588 | r22589 | |
| 303 | 320 | ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF ) |
| 304 | 321 | ROM_LOAD( "cd2650.rom", 0x0000, 0x0400, CRC(5397328e) SHA1(7106fdb60e1ad2bc5e8e45527f348c23296e8d6a)) |
| 305 | 322 | |
| 306 | | /* character generator not dumped, using the one from 'c10' for now */ |
| 307 | | ROM_REGION( 0x2000, "chargen", 0 ) |
| 308 | | ROM_LOAD( "c10_char.bin", 0x0000, 0x2000, BAD_DUMP CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf)) |
| 323 | ROM_REGION( 0x0200, "chargen", 0 ) |
| 324 | ROM_LOAD( "char.rom", 0x0000, 0x0200, CRC(9b75db2a) SHA1(4367c01afa503d7cba0c38078fde0b95392c6c2c)) |
| 325 | |
| 326 | // various unused roms found on Amigan site |
| 327 | ROM_REGION( 0xea00, "user1", 0 ) |
| 328 | ROM_LOAD( "char2.rom", 0x0000, 0x0400, CRC(b450eea8) SHA1(c1bdba52c2dc5698cad03b6b884b942a083465ed)) |
| 329 | ROM_LOAD( "supervisor.bin", 0x0400, 0x03ff, CRC(2bcbced4) SHA1(cec7582ba0a908d4ef39f9bd6bfa33a282b88c71)) |
| 330 | ROM_LOAD( "01a_cd_boots.bin", 0x6c00, 0x0200, CRC(5336c62f) SHA1(e94cf7be01ea806ff7c7b90aee1a4e88f4f1ba9f)) |
| 331 | ROM_LOAD( "01a_cd_dos.bin", 0x1000, 0x2000, CRC(3f177cdd) SHA1(01afd77ad2f065158cbe032aa26682cb20afe7d8)) |
| 332 | ROM_LOAD( "01a_cd_pop.bin", 0x3000, 0x1000, CRC(d8f44f11) SHA1(605ab5a045290fa5b99ff4fc8fbfa2a3f202578f)) |
| 333 | ROM_LOAD( "01b_cd_alp.bin", 0x4000, 0x2a00, CRC(b05568bb) SHA1(29e74633c0cd731c0be25313288cfffdae374236)) |
| 334 | ROM_LOAD( "01b_cd_basic.bin", 0x7000, 0x3b00, CRC(0cf1e3d8) SHA1(3421e679c238aeea49cd170b34a6f344da4770a6)) |
| 335 | ROM_LOAD( "01b_cd_mon_m.bin", 0x0800, 0x0400, CRC(f6f19c08) SHA1(1984d85d57fc2a6c5a3bd51fbc58540d7129a0ae)) |
| 336 | ROM_LOAD( "01b_cd_mon_o.bin", 0x0c00, 0x0400, CRC(9d40b4dc) SHA1(35cffcbd983b7b37c878a15af44100568d0659d1)) |
| 337 | ROM_LOAD( "02b_cd_alp.bin", 0xc000, 0x2a00, CRC(a66b7f32) SHA1(2588f9244b0ec6b861dcebe666d37d3fa88dd043)) |
| 309 | 338 | ROM_END |
| 310 | 339 | |
| 311 | 340 | /* Driver */ |