src/mess/drivers/llc.c
| r15696 | r15697 | |
| 1 | | /*************************************************************************** |
| 1 | /****************************************************************************** |
| 2 | 2 | |
| 3 | 3 | LLC driver by Miodrag Milanovic |
| 4 | 4 | |
| 5 | 5 | 17/04/2009 Preliminary driver. |
| 6 | 6 | |
| 7 | | ****************************************************************************/ |
| 7 | July 2012, updates by Robbbert |
| 8 | 8 | |
| 9 | Very little info available on these computers. |
| 9 | 10 | |
| 11 | LLC1: |
| 12 | To start BASIC, G0800 (cold start) G0803 (warm start) |
| 13 | To see a monitor logo, G13BE |
| 14 | This machine has an 8-digit LED display with hex keyboard, |
| 15 | and also a 64x16 monochrome screen with full keyboard. |
| 16 | The monitor uses the hex keyboard, while Basic uses the full keyboard. |
| 17 | Monitor output is on the digits, but the single-step command displays |
| 18 | a running register dump on the main screen. |
| 19 | There are no storage facilities, and no sound. |
| 20 | The user instructions (in German) are here: |
| 21 | http://www.jens-mueller.org/jkcemu/llc1.html |
| 22 | |
| 23 | ToDo: |
| 24 | - LLC1: Get good dump of monitor rom, has a number of bad bytes |
| 25 | - LLC1: In Basic, pressing enter several times causes the start |
| 26 | of the line to be shifted 1 or 2 characters to the right. |
| 27 | - LLC1: Go command crashes |
| 28 | - LLC1: Keyboard is horrible |
| 29 | - All keyboards are incomplete |
| 30 | - Lots of other things |
| 31 | |
| 32 | *******************************************************************************/ |
| 33 | |
| 34 | |
| 10 | 35 | #include "emu.h" |
| 11 | 36 | #include "cpu/z80/z80.h" |
| 12 | 37 | #include "cpu/z80/z80daisy.h" |
| r15696 | r15697 | |
| 65 | 90 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) |
| 66 | 91 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6")PORT_CODE(KEYCODE_6) |
| 67 | 92 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) |
| 68 | | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("REG") PORT_CODE(KEYCODE_G) |
| 69 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("START") PORT_CODE(KEYCODE_H) |
| 70 | | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("i")PORT_CODE(KEYCODE_I) |
| 71 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("j") PORT_CODE(KEYCODE_J) |
| 93 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("REG") PORT_CODE(KEYCODE_R) |
| 94 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("M (Mem)") PORT_CODE(KEYCODE_M) |
| 95 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ST (Start)")PORT_CODE(KEYCODE_ENTER) |
| 96 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED) // resets |
| 72 | 97 | PORT_START("X6") // out F4,EF |
| 73 | 98 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) |
| 74 | 99 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) |
| 75 | 100 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A")PORT_CODE(KEYCODE_A) |
| 76 | 101 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) |
| 77 | | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("k") PORT_CODE(KEYCODE_K) |
| 78 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ES") PORT_CODE(KEYCODE_L) |
| 79 | | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("HP")PORT_CODE(KEYCODE_M) |
| 80 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("n") PORT_CODE(KEYCODE_N) |
| 102 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ES (Step)") PORT_CODE(KEYCODE_S) |
| 103 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DL (Go)") PORT_CODE(KEYCODE_X) |
| 104 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("HP (BP)")PORT_CODE(KEYCODE_P) |
| 105 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED) // does nothing |
| 81 | 106 | PORT_START("LINE0") |
| 82 | 107 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED) |
| 83 | 108 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED) |
| r15696 | r15697 | |
| 412 | 437 | |
| 413 | 438 | ROM_START( llc1 ) |
| 414 | 439 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 415 | | // bad dump ROM_LOAD( "llc1-monitor.rom", 0x0000, 0x0800, CRC(0e81378d) SHA1(0fbb6eca016d0f439ea1c9aa0cb0affb5f49ea69) ) |
| 416 | | ROM_LOAD( "llc1mon.bin", 0x0000, 0x0800, CRC(e291dd63) SHA1(31a71bef84f7c164a270d0895cb645e078e9c6f2) ) |
| 440 | //ROM_LOAD( "llc1-monitor.rom", 0x0000, 0x0800, BAD_DUMP CRC(0e81378d) SHA1(0fbb6eca016d0f439ea1c9aa0cb0affb5f49ea69) ) |
| 441 | ROM_LOAD( "llc1mon.bin", 0x0000, 0x0800, BAD_DUMP CRC(e291dd63) SHA1(31a71bef84f7c164a270d0895cb645e078e9c6f2) ) |
| 417 | 442 | ROM_LOAD( "llc1_tb1.bin", 0x0800, 0x0400, CRC(0d9d4039) SHA1(b515e385af57f4faf3a9f7b4a1edd59a1c1ea260) ) |
| 418 | 443 | ROM_LOAD( "llc1_tb2.bin", 0x0c00, 0x0400, CRC(28bfea2a) SHA1(a68a8b87bfc931627ddd8d124b153e511477fbaf) ) |
| 419 | 444 | ROM_LOAD( "llc1_tb3.bin", 0x1000, 0x0400, CRC(fe5e3132) SHA1(cc3b191e41f5772a4b86b8eb0ebe6fce67872df6) ) |
| 445 | ROM_FILL(0x23b, 1, 0x00) // don't reboot when typing in the monitor |
| 446 | ROM_FILL(0x2dc, 1, 0x0f) // fix display of AF in the reg command |
| 420 | 447 | ROM_REGION(0x0400, "chargen",0) |
| 421 | 448 | ROM_LOAD ("llc1_zg.bin", 0x0000, 0x0400, CRC(fa2cd659) SHA1(1fa5f9992f35929f656c4ce55ed6980c5da1772b) ) |
| 422 | 449 | ROM_END |