trunk/src/mess/drivers/cat.c
| r20723 | r20724 | |
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | | Canon Cat driver by Miodrag Milanovic and Lord Nightmare |
| 3 | Canon Cat, Model V777 |
| 4 | IAI Swyft Model P0001 |
| 5 | driver by Miodrag Milanovic and Lord Nightmare |
| 6 | With information and help from John "Sandy" Bumgarner, Dwight Elvey, |
| 7 | Charles Springer, Terry Holmes, Jonathan Sand, Aza Raskin and others. |
| 4 | 8 | |
| 9 | This driver is dedicated in memory of Jef Raskin and Dave Boulton |
| 10 | |
| 5 | 11 | 12/06/2009 Skeleton driver. |
| 6 | 12 | 15/06/2009 Working driver |
| 7 | 13 | |
| 8 | 14 | Pictures: http://www.regnirps.com/Apple6502stuff/apple_iie_cat.htm |
| 9 | 15 | |
| 16 | Canon cat blue "Use Front Labels": |
| 17 | ` (really degree, +-, paragraph-mark and section-mark): LEFT MARGIN |
| 18 | -_: INDENT |
| 19 | +=: RIGHT MARGIN |
| 20 | UNDO: SPELL CHECK LEAP (this is actually a red LEAP label) |
| 21 | PERM SPACE/TAB: SET/CLEAR TAB |
| 22 | Q: UNDER LINE |
| 23 | W: BOLD |
| 24 | E: CAPS |
| 25 | T: Paragraph STYLE |
| 26 | U: LINE SPACE |
| 27 | O: ADD SPELLING |
| 28 | [ (really 1/4, 1/2, double-underline and |): SETUP |
| 29 | Backspace (really ERASE): ANSWER |
| 30 | LOCK: DOCUMENT LOCK |
| 31 | A: COPY |
| 32 | D: SEND CONTROL |
| 33 | G: CALC |
| 34 | J: PRINT |
| 35 | L: DISK |
| 36 | Colon: FORMAT/WIPE DISK (only when wheel! mode is enabled, see below) |
| 37 | "': PHONE |
| 38 | Enter (really RETURN): SEND |
| 39 | X: LOCAL LEAP |
| 40 | V: LEARN |
| 41 | N: EXPLAIN |
| 42 | ,: SORT |
| 43 | ?/: KBI/II |
| 44 | Pgup (really DOCUMENT/PAGE): TITLES |
| 45 | Leap Left: LEAP AGAIN (left) |
| 46 | Leap Right: LEAP AGAIN (right) |
| 47 | |
| 48 | |
| 10 | 49 | How to enable the FORTH interpreter (http://canoncat.org/canoncat/enableforth.html) |
| 11 | 50 | |
| 12 | 51 | The definitive instructions of going Forth on a Cat, tested on a living Cat. |
| r20723 | r20724 | |
| 25 | 64 | * when the Cat boots, type (without quotes) "Enable Forth Language" |
| 26 | 65 | * hold left-alt(leap left) and type E n a, release left-alt (the left cursor is now at the first character) |
| 27 | 66 | * simultaneously press both alt keys for a moment and release both (the whole "Enable Forth Language" line will be selected) |
| 28 | | * press control(use front) and press backspace(Erase) (If beeping actually worked the cat would beep here) |
| 67 | * press control(use front) and press backspace(ERASE) (If beeping actually worked the cat would beep here) |
| 29 | 68 | * press control(use front), shift, and space (the cursor should stop blinking) |
| 30 | 69 | * press enter and the forth "ok" prompt should appear. you can type 'page' and enter to clear the screen |
| 70 | Optional further steps: |
| 71 | * type without quotes "-1 wheel! savesetup re" at the forth prompt to permanently |
| 72 | enable shift + use front + space to dump to forth mode easily |
| 73 | * change the keyboard setting in the setup menu (use front + [ ) to ASCII so you can type < and > |
| 74 | * after doing the -1 wheel! thing, you can compile a selected forth program in the editor |
| 75 | by selecting it and hitting ANSWER (use front + ERASE) |
| 31 | 76 | |
| 77 | If ever in forth mode you can return to the editor with the forth word (without quotes) "re" |
| 78 | |
| 79 | |
| 80 | Canon cat credits easter egg: |
| 81 | * hold either leap key, then simultaneously hold shift, then type Q W E R A S D F Z X C V and release all the keys |
| 82 | * hit EXPLAIN (use front + N) and the credits screen will be displayed |
| 83 | |
| 84 | Canon Cat credits details: (WIP) |
| 85 | Scott Kim - responsible for fonts on swyft and cat |
| 86 | |
| 87 | |
| 88 | Swyft versions: |
| 89 | There are at least 4 variants of machines called 'swyft': |
| 90 | * The earliest desktop units which use plexi or rubber-tooled case and an |
| 91 | angled monitor; about a dozen were made and at least two of clear plexi. |
| 92 | These are sometimes called "wrinkled" swyfts. 5.25" drive, may be able to |
| 93 | read Apple2 Swyftware and Swyftcard-created disks. |
| 94 | It is possible no prototypes of this type got beyond the 'runs forth console only' stage. |
| 95 | http://archive.computerhistory.org/resources/access/physical-object/2011/09/102746929.01.01.lg.JPG |
| 96 | http://www.digibarn.com/collections/systems/swyft/Swyft-No2-05-1271.jpg |
| 97 | http://www.digibarn.com/friends/jef-raskin/slides/iai/A%20-687%20SWYFTPRO.JPG |
| 98 | * The early "flat cat" or "roadkill" portable LCD screen units with a white |
| 99 | case and just a keyboard. Model SP0001 |
| 100 | http://www.digibarn.com/collections/systems/swyft/Image82.jpg |
| 101 | * The later "ur-cat" desktop units which use a machine tooled case and look |
| 102 | more or less like the canon cat. about 100-200 were made. 3.5" drive. |
| 103 | These have a fully functional EDDE editor as the cat does, and can even compile forth programs. |
| 104 | (the 'swyft' driver is based on one of these) |
| 105 | * The very late portable LCD units with a dark grey case and a row of hotkey |
| 106 | buttons below the screen. |
| 107 | http://www.digibarn.com/collections/systems/swyft/swyft.jpg |
| 108 | |
| 109 | Canon Cat versions: |
| 110 | There is really only one version of the cat which saw wide release, the US version. |
| 111 | * It is possible a very small number of UK/European units were released as a test. |
| 112 | If so, these will have slightly different keyboard key caps and different |
| 113 | system and spellcheck roms. |
| 114 | |
| 115 | As for prototypes/dev cat machines, a few minor variants exist: |
| 116 | * Prototype cat motherboards used 16k*4bit drams instead of 64k*4bit as the |
| 117 | final system did and hence max out at 128k of dram instead of 512k. |
| 118 | The final system included 256k of dram and can be upgraded to 512k. |
| 119 | * At least some developer units were modified to have an external BNC |
| 120 | connector, ostensibly to display the internal screen's video externally. |
| 121 | http://www.digibarn.com/collections/systems/canon-cat/Image55.jpg |
| 122 | |
| 123 | |
| 32 | 124 | Canon Cat: |
| 33 | 125 | <insert guru-diagram here once drawn> |
| 34 | 126 | Crystals: |
| r20723 | r20724 | |
| 36 | 128 | X2: 3.579545Mhz, used by the DTMF generator chip AMI S2579 at IC40 |
| 37 | 129 | X3: 2.4576Mhz, used by the modem chip AMI S35213 at IC37 |
| 38 | 130 | |
| 131 | IAI Swyft: |
| 132 | <insert guru-diagram here once drawn> |
| 39 | 133 | |
| 40 | 134 | |
| 41 | 135 | ToDo: |
| 42 | 136 | * Canon Cat |
| 43 | 137 | - Find the mirrors for the write-only video control register and figure out |
| 44 | 138 | what the writes actually do; hook these up properly to screen timing etc |
| 45 | | - The 2.40 (bios 0) firmware gets annoyed and thinks it has a phone call at |
| 139 | - The 2.40 firmwares both get annoyed and think they have a phone call at |
| 46 | 140 | random. |
| 47 | | (hit ctrl a few times to make it shut up for a bit or go into forth mode); |
| 48 | | The 1.74 (bios 1) firmware doesn't have this issue. |
| 141 | (hit shift or usefront a few times to make it shut up for a bit or go into |
| 142 | forth mode); The 1.74 firmware doesn't have this issue. |
| 49 | 143 | Figure out what causes it and make it stop. May be OFFHOOK or more likely |
| 50 | | the DUART thinks the phone is ringing constantly. |
| 144 | the DUART thinks the phone is ringing constantly due to incomplete duart or |
| 145 | an ip bit hooked up wrong. |
| 146 | You can alsp make it stop by going to SETUP and change the serial port from |
| 147 | 'alternate printer' to SEND. |
| 51 | 148 | - Floppy drive (3.5", Single Sided Double Density MFM, ~400kb) |
| 52 | 149 | * Cat has very low level control of data being read or written, much like |
| 53 | 150 | the Amiga does |
| r20723 | r20724 | |
| 71 | 168 | - Hook duart IP2 up to the 6ms timer |
| 72 | 169 | - Correctly hook the duart interrupt to the 68k, including autovector using the vector register on the duart |
| 73 | 170 | - Watchdog timer/powerfail at 0x85xxxx |
| 74 | | - Canon Cat released versions known: 1.74 (dumped), 2.40 (dumped), 2.42 (NEED DUMP) |
| 171 | - Canon Cat released versions known: 1.74 US (dumped), 2.40 US (dumped; is this actually original, or compiled from the released source code?), 2.42 (NEED DUMP) |
| 172 | It is possible a few prototype UK 1.74 or 2.40 units were produced; the code roms of these will differ (they contain different spellcheck "core" code) as well as the spellcheck roms, the keyboard id and the keycaps. |
| 75 | 173 | - Known Spellcheck roms: NH7-0684 (US, dumped); NH7-0724 (UK, NEED DUMP); |
| 76 | 174 | NH7-0813/0814 (Quebec/France, NEED DUMP); NH7-1019/1020/1021 (Germany, NEED DUMP) |
| 77 | 175 | It is possible the non-US roms were never officially released. |
| 78 | 176 | Wordlist sources: American Heritage (US and UK), Librarie Larousse (FR), Langenscheidt (DE) |
| 177 | - (would-be-really-nice-but-totally-unnecessary feature): due to open bus, the |
| 178 | svrom1 and svrom2 checksums in diagnostics read as 01A80000 and 01020000 |
| 179 | respectively on a real machine (and hence appear inverted/'fail'-state). |
| 180 | This requires sub-cycle accurate 68k open bus emulation to pull off, as well |
| 181 | as emulating the fact that UDS/LDS are ?not connected? (unclear because this |
| 182 | happens inside an asic) for the SVROMS (or the svram or the code roms, for |
| 183 | that matter!) |
| 184 | - Hook Battery Low input to a dipswitch. |
| 185 | - Document what every IPx and OPx bit on the DUART connects to. |
| 186 | |
| 79 | 187 | |
| 80 | 188 | * Swyft |
| 81 | 189 | - Figure out the keyboard (interrupts are involved? or maybe an NMI on a |
| 82 | 190 | timer/vblank?) |
| 83 | | - Communications ports (Duart? or some other plain UART?) |
| 191 | - Beeper |
| 192 | - Communications port (Duart? or some other plain UART?) |
| 84 | 193 | - Floppy (probably similar to the Cat) |
| 85 | 194 | - Centronics port (probably similar to the Cat) |
| 195 | - Joystick port |
| 196 | - Forth button (keep in mind shift-usefront-space ALWAYS enables forth on a swyft) |
| 86 | 197 | - Multple undumped firmware revisions exist |
| 87 | 198 | |
| 88 | 199 | ****************************************************************************/ |
| r20723 | r20724 | |
| 428 | 539 | } |
| 429 | 540 | |
| 430 | 541 | /* 0x840001: 'opr' Output Port Register |
| 431 | | * writing 0x1c (or possibly anything) here resets the watchdog |
| 542 | * writing 0x1c (or probably anything with bit 3 set) here resets the watchdog |
| 432 | 543 | * if the watchdog expires an NMI is sent to the cpu |
| 433 | 544 | */ |
| 434 | 545 | WRITE16_MEMBER( cat_state::cat_opr_w ) |
| r20723 | r20724 | |
| 445 | 556 | * \--------- ? |
| 446 | 557 | */ |
| 447 | 558 | #ifdef DEBUG_VIDEO_ENABLE_W |
| 448 | | //if ((data&0xef)!= 0x0c) |
| 449 | 559 | fprintf(stderr, "Video enable reg write: offset %06X, data %04X\n", 0x840000+(offset<<1), data); |
| 450 | 560 | #endif |
| 451 | 561 | m_video_enable = BIT( data, 2 ); |
| 452 | 562 | m_video_invert = 1-BIT( data, 4 ); |
| 453 | 563 | } |
| 454 | 564 | |
| 455 | | // 0x850000: watchdog timer/video status |
| 565 | // 0x850000: 'wdt' watchdog timer/video status |
| 456 | 566 | // implement me! |
| 457 | 567 | |
| 458 | | // 0x860000: test regitser |
| 568 | // 0x860000: 'tcb' test regitser |
| 459 | 569 | // the power fail status reset bit also lives here somewhere? |
| 460 | 570 | WRITE16_MEMBER( cat_state::cat_tcb_w ) |
| 461 | 571 | { |
| r20723 | r20724 | |
| 495 | 605 | 0 0 1 x x 0 * * * * * * * * * * * * * * * * * 1 R SVROM 0 ic6 (MASK ROM tc531000) [controlled via GA2 /SVCS0] |
| 496 | 606 | 0 0 1 x x 1 * * * * * * * * * * * * * * * * * 0 O OPEN BUS (reads as 0x2e) [controlled via GA2 /SVCS1] *SEE BELOW* |
| 497 | 607 | 0 0 1 x x 1 * * * * * * * * * * * * * * * * * 1 R SVROM 1 ic8 (not present on cat as sold, open bus reads as 0x80) [controlled via GA2 /SVCS1] *SEE BELOW* |
| 498 | | *NOTE: on developer units, two 128K SRAMS are mapped in place of the two entries immediately above!* (this involves some creative wiring+sockets or an official IAI 'shadow ram board') |
| 608 | *NOTE: on Dwight E's user-made developer unit, two 128K SRAMS are mapped in place of the two entries immediately above!* (this involves some creative wiring+sockets); the official IAI 'shadow ram board' maps the ram to the A00000-A3FFFF area instead) |
| 499 | 609 | 0 1 * * * * * * * * * * * * * * * * * * * * * * *BOTH GATE ARRAYS 1 and 2 DECODE THIS AREA; 2 DEALS WITH ADDR AND 1 WITH DATA/CAS/RAS* |
| 500 | 610 | 0 1 0 x x a b * * * * * * * * * * * * * * * * * RW VIDEO/SYSTEM DRAM (ab: 00=row 0, ic26-29; 01=row 1, ic22-25; 10=row 2; ic18-21; 11=row 3; ic14-17) |
| 501 | 611 | *NOTE: DRAM rows 2 and 3 above are only usually populated in cat developer units!* |
| r20723 | r20724 | |
| 520 | 630 | 1 0 0 x x 1 1 0 x x x x x x x x x x x x x x x * R?W {'tcb'} test control bits: powerfail status in bit <?> (reads as 0x0000) |
| 521 | 631 | 1 0 0 x x 1 1 1 x x x x x x x x x x x x x x x * ? Unknown (reads as 0x2e80) |
| 522 | 632 | |
| 523 | | 1 0 1 x x x x x x x x x x x x x x x x x x x x x O OPEN BUS (reads as 0x2e80) |
| 524 | | 1 1 x x x x x x x x x x x x x x x x x x x x x x O OPEN BUS (reads as 0x2e80) |
| 633 | 1 0 1 x x x x x x x x x x x x x x x x x x x x x O OPEN BUS (reads as 0x2e80) [68k DTACK is asserted by gate array 1 when accessing this area, for testing?] On real IAI shadow rom board, at least 0x40000 of ram lives here. |
| 634 | 1 1 x x x x x x x x x x x x x x x x x x x x x x O OPEN BUS (reads as 0x2e80) [68k VPA is asserted by gate array 1 when accessing this area, for testing?] |
| 525 | 635 | */ |
| 526 | 636 | |
| 527 | 637 | |
| r20723 | r20724 | |
| 548 | 658 | //AM_RANGE(0x850000, 0x850001) AM_READ(cat_video_status) AM_MIRROR(0x18FFFE) // video status and watchdog read: hblank, vblank or draw? |
| 549 | 659 | AM_RANGE(0x860000, 0x860001) AM_READWRITE(cat_0000_r, cat_tcb_w) AM_MIRROR(0x18FFFE) // Test mode |
| 550 | 660 | AM_RANGE(0x870000, 0x870001) AM_READ(cat_2e80_r) AM_MIRROR(0x18FFFE) // Open bus? |
| 551 | | AM_RANGE(0xA00000, 0xA00001) AM_READ(cat_2e80_r) AM_MIRROR(0x1FFFFE) // Open bus? |
| 552 | | AM_RANGE(0xC00000, 0xC00001) AM_READ(cat_2e80_r) AM_MIRROR(0x3FFFFE) // Open bus? |
| 661 | AM_RANGE(0xA00000, 0xA00001) AM_READ(cat_2e80_r) AM_MIRROR(0x1FFFFE) // Open bus/dtack? The 0xA00000-0xA3ffff area is ram used for shadow rom storage on cat developer machines, which is either banked over top of, or jumped to instead of the normal rom |
| 662 | AM_RANGE(0xC00000, 0xC00001) AM_READ(cat_2e80_r) AM_MIRROR(0x3FFFFE) // Open bus/vme? |
| 553 | 663 | ADDRESS_MAP_END |
| 554 | 664 | |
| 555 | 665 | static ADDRESS_MAP_START(swyft_mem, AS_PROGRAM, 16, cat_state) |
| r20723 | r20724 | |
| 891 | 1001 | ROM_START( cat ) |
| 892 | 1002 | ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF ) |
| 893 | 1003 | // SYS ROM |
| 894 | | ROM_SYSTEM_BIOS( 0, "r240", "Canon Cat V2.40 Firmware") |
| 895 | | ROMX_LOAD( "r240l0.ic2", 0x00001, 0x10000, CRC(1b89bdc4) SHA1(39c639587dc30f9d6636b46d0465f06272838432), ROM_SKIP(1) | ROM_BIOS(1)) |
| 896 | | ROMX_LOAD( "r240h0.ic4", 0x00000, 0x10000, CRC(94f89b8c) SHA1(6c336bc30636a02c625d31f3057ec86bf4d155fc), ROM_SKIP(1) | ROM_BIOS(1)) |
| 897 | | ROMX_LOAD( "r240l1.ic3", 0x20001, 0x10000, CRC(1a73be4f) SHA1(e2de2cb485f78963368fb8ceba8fb66ca56dba34), ROM_SKIP(1) | ROM_BIOS(1)) |
| 898 | | ROMX_LOAD( "r240h1.ic5", 0x20000, 0x10000, CRC(898dd9f6) SHA1(93e791dd4ed7e4afa47a04df6fdde359e41c2075), ROM_SKIP(1) | ROM_BIOS(1)) |
| 899 | | ROM_SYSTEM_BIOS( 1, "r174", "Canon Cat V1.74 Firmware") |
| 900 | | // Canon cat v1.74 roms are labeled as r74; they only added the major number to the rom label after 2.0 |
| 901 | | ROMX_LOAD( "r74__0l__c18c.blue.ic2", 0x00001, 0x10000, CRC(b19aa0c8) SHA1(85b3e549cfb91bd3dd32335e02eaaf9350e80900), ROM_SKIP(1) | ROM_BIOS(2)) |
| 902 | | ROMX_LOAD( "r74__0h__75a6.yellow.ic4", 0x00000, 0x10000, CRC(75281f77) SHA1(ed8b5e37713892ee83413d23c839d09e2fd2c1a9), ROM_SKIP(1) | ROM_BIOS(2)) |
| 903 | | ROMX_LOAD( "r74__1l__c8a3.green.ic3", 0x20001, 0x10000, CRC(93275558) SHA1(f690077a87076fd51ae385ac5a455804cbc43c8f), ROM_SKIP(1) | ROM_BIOS(2)) |
| 904 | | ROMX_LOAD( "r74__1h__3c37.white.ic5", 0x20000, 0x10000, CRC(5d7c3962) SHA1(8335993583fdd30b894c01c1a7a6aca61cd81bb4), ROM_SKIP(1) | ROM_BIOS(2)) |
| 1004 | /* This 2.40 code came from two development cat machines owned or formerly |
| 1005 | * owned by former IAI employees Sandy Bumgarner and Dave Boulton. |
| 1006 | * Dave Boulton's machine is interesting in that it has a prototype cat |
| 1007 | * motherboard in it, which it has less space for dram than a 'released' |
| 1008 | * cat does: it uses 16k*4 dram chips instead of 64k*4 as in the final |
| 1009 | * cat, and hence can only support 128k of ram with all 4 rows of drams |
| 1010 | * populated, as opposed to 256k-standard (2 rows) and 512k-max with all |
| 1011 | * 4 rows populated on a "released" cat. |
| 1012 | */ |
| 1013 | ROM_SYSTEM_BIOS( 0, "r240", "Canon Cat V2.40 US Firmware") |
| 1014 | ROMX_LOAD( "boultl0.ic2", 0x00001, 0x10000, CRC(77b66208) SHA1(9D718C0A521FEFE4F86EF328805B7921BADE9D89), ROM_SKIP(1) | ROM_BIOS(1)) |
| 1015 | ROMX_LOAD( "boulth0.ic4", 0x00000, 0x10000, CRC(f1e1361a) SHA1(0A85385527E2CC55790DE9F9919EB44AC32D7F62), ROM_SKIP(1) | ROM_BIOS(1)) |
| 1016 | ROMX_LOAD( "boultl1.ic3", 0x20001, 0x10000, CRC(c61dafb0) SHA1(93216c26c2d5fc71412acc548c96046a996ea668), ROM_SKIP(1) | ROM_BIOS(1)) |
| 1017 | ROMX_LOAD( "boulth1.ic5", 0x20000, 0x10000, CRC(bed1f761) SHA1(D177E1D3A39B005DD94A6BDA186221D597129AF4), ROM_SKIP(1) | ROM_BIOS(1)) |
| 1018 | /* This 2.40 code was compiled by Dwight Elvey based on the v2.40 source |
| 1019 | * code disks recovered around 2004. It does NOT exactly match the above |
| 1020 | * set exactly but has a few small differences. |
| 1021 | * It is as of yet unknown whether it is earlier or later code than the |
| 1022 | * set above. |
| 1023 | */ |
| 1024 | ROM_SYSTEM_BIOS( 1, "r240r", "Canon Cat V2.40 US Firmware compiled from recovered source code") |
| 1025 | ROMX_LOAD( "r240l0.ic2", 0x00001, 0x10000, CRC(1b89bdc4) SHA1(39c639587dc30f9d6636b46d0465f06272838432), ROM_SKIP(1) | ROM_BIOS(2)) |
| 1026 | ROMX_LOAD( "r240h0.ic4", 0x00000, 0x10000, CRC(94f89b8c) SHA1(6c336bc30636a02c625d31f3057ec86bf4d155fc), ROM_SKIP(1) | ROM_BIOS(2)) |
| 1027 | ROMX_LOAD( "r240l1.ic3", 0x20001, 0x10000, CRC(1a73be4f) SHA1(e2de2cb485f78963368fb8ceba8fb66ca56dba34), ROM_SKIP(1) | ROM_BIOS(2)) |
| 1028 | ROMX_LOAD( "r240h1.ic5", 0x20000, 0x10000, CRC(898dd9f6) SHA1(93e791dd4ed7e4afa47a04df6fdde359e41c2075), ROM_SKIP(1) | ROM_BIOS(2)) |
| 1029 | /* This v1.74 code comes from (probably) the 'main us release' of first-run |
| 1030 | * Canon cats, and was dumped from machine serial number R12014979 |
| 1031 | * Canon cat v1.74 roms are labeled as r74; they only added the major number |
| 1032 | * to the rom label after v2.0? |
| 1033 | */ |
| 1034 | ROM_SYSTEM_BIOS( 2, "r174", "Canon Cat V1.74 US Firmware") |
| 1035 | ROMX_LOAD( "r74__0l__c18c.blue.ic2", 0x00001, 0x10000, CRC(b19aa0c8) SHA1(85b3e549cfb91bd3dd32335e02eaaf9350e80900), ROM_SKIP(1) | ROM_BIOS(3)) |
| 1036 | ROMX_LOAD( "r74__0h__75a6.yellow.ic4", 0x00000, 0x10000, CRC(75281f77) SHA1(ed8b5e37713892ee83413d23c839d09e2fd2c1a9), ROM_SKIP(1) | ROM_BIOS(3)) |
| 1037 | ROMX_LOAD( "r74__1l__c8a3.green.ic3", 0x20001, 0x10000, CRC(93275558) SHA1(f690077a87076fd51ae385ac5a455804cbc43c8f), ROM_SKIP(1) | ROM_BIOS(3)) |
| 1038 | ROMX_LOAD( "r74__1h__3c37.white.ic5", 0x20000, 0x10000, CRC(5d7c3962) SHA1(8335993583fdd30b894c01c1a7a6aca61cd81bb4), ROM_SKIP(1) | ROM_BIOS(3)) |
| 905 | 1039 | |
| 906 | 1040 | ROM_REGION( 0x80000, "svrom", ROMREGION_ERASE00 ) |
| 907 | 1041 | // SPELLING VERIFICATION ROM (SVROM) |
| 908 | | // since ROM_FILL16BE(0x0, 0x80000, 0x2e80) doesn't exist, the even bytes and latter chunk of the svrom space are filled in in DRIVER_INIT |
| 909 | | // Romspace here is a little strange: there are 3 rom sockets on the board: |
| 910 | | // svrom-0 maps to 200000-21ffff every ODD byte (d8-d0) |
| 911 | | ROMX_LOAD( "uv1__nh7-0684__hn62301apc11__7h1.ic6", 0x00000, 0x20000, CRC(229ca210) SHA1(564b57647a34acdd82159993a3990a412233da14), ROM_SKIP(1)) // this is a 28pin tc531000 mask rom, 128KB long |
| 912 | | // svrom-1 maps to 200000-21ffff every EVEN byte (d15-d7) |
| 913 | | // no rom is in the socket; it reads as open bus 0x2E |
| 914 | | // svrom-2 maps to 240000-25ffff every ODD byte (d8-d0) |
| 915 | | // no rom is in the socket; it reads as open bus 0x80 |
| 916 | | // there is no svrom-3; 240000-25ffff EVEN always reads as 0x2E |
| 1042 | /* Romspace here is a little strange: there are 3 rom sockets on the board: |
| 1043 | * svrom-0 maps to 200000-21ffff every ODD byte (d8-d0) |
| 1044 | * svrom-1 maps to 200000-21ffff every EVEN byte (d15-d7) |
| 1045 | * (since no rom is in the socket; it reads as open bus 0x2E) |
| 1046 | * svrom-2 maps to 240000-25ffff every ODD byte (d8-d0) |
| 1047 | * (since no rom is in the socket; it reads as open bus 0x80) |
| 1048 | * there is no svrom-3; 240000-25ffff EVEN always reads as 0x2E |
| 1049 | * since ROM_FILL16BE(0x0, 0x80000, 0x2e80) doesn't exist, the |
| 1050 | * even bytes and latter chunk of the svrom space need to be filled in |
| 1051 | * DRIVER_INIT or some other means needs to be found to declare them as |
| 1052 | * 'open bus' once the mame/mess core supports that. |
| 1053 | * NOTE: there are at least 6 more SVROMS which existed (possibly in |
| 1054 | * limited form), and are not dumped: |
| 1055 | * UK (1 rom) |
| 1056 | * French (2 roms) |
| 1057 | * German (3 roms) |
| 1058 | * Each of these will also have its own code romset as well. |
| 1059 | */ |
| 1060 | ROMX_LOAD( "uv1__nh7-0684__hn62301apc11__7h1.ic6", 0x00000, 0x20000, CRC(229ca210) SHA1(564b57647a34acdd82159993a3990a412233da14), ROM_SKIP(1)) // this is a 28pin tc531000 mask rom, 128KB long; "US" SVROM |
| 1061 | |
| 917 | 1062 | ROM_END |
| 918 | 1063 | |
| 919 | 1064 | /* Driver */ |