Previous 199869 Revisions Next

r32192 Friday 19th September, 2014 at 04:12:56 UTC by Jonathan Gevaryahu
(MESS) tsispch.c - Add v1.1 firmware to TSI/Speech Plus Prose 2000 driver [Lord Nightmare]
[src/mess]mess.lst
[src/mess/drivers]tsispch.c

trunk/src/mess/drivers/tsispch.c
r32191r32192
77*  Prose 2020
88*  Copyright (C) 2011-2013 Jonathan Gevaryahu AKA Lord Nightmare and Kevin 'kevtris' Horton
99*
10*  This source file is dual-licensed under the following licenses:
11*  1. The MAME license as of September 2013
12*  2. The GNU LGPLv2.1:
10*  The Prose 2000 card is an IEEE 796 Multibus card, with additional connectors to facilitate power and serial input other than via multibus.
11*  There are two hardware versions of the card:
12*  - The 1981 Telesensory Systems Inc copyrighted version
13*    (lacks U82, has some rework on the power input to add a bypass capacitor and an extra power line to the 8086)
14*  - The 1986 Speech Plus copyrighted version
15*    (adds U82 as an extra buffer for status (not sure)? integrates the greenwire fixes from the above board, minor reorganizations of passives)
16*  Both versions encountered have been in non-multibus enclosures:
17*  - The 1981 Version appeared on a 'Voice V4' Speech board scrapped from a "Kurzweil Reading Machine" Talking Scanner (predecessor to the TSI/Kurzweil/Xerox 'Reading Edge' scanner which is SPARC based) [I'm very sorry I didn't get the OCR computing guts of the scanner itself too :( ]
18*  - The 1986 Version appeared in a 'Prose 2020' under-monitor RS232 speech unit.
1319*
14*  This library is free software; you can redistribute it and/or
15*  modify it under the terms of the GNU Lesser General Public
16*  License as published by the Free Software Foundation; either
17*  version 2.1 of the License, or (at your option) any later version.
18*
19*  This library is distributed in the hope that it will be useful,
20*  but WITHOUT ANY WARRANTY; without even the implied warranty of
21*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22*  Lesser General Public License for more details.
23*
24*  You should have received a copy of the GNU Lesser General Public
25*  License along with this library; if not, write to the Free Software
26*  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
27*
28*  Please contact the author if you require other licensing.
29*
30*
31*
3220*  DONE:
3321*  Skeleton Written
3422*  Load cpu and dsp roms and mapper proms
r32191r32192
5745*  8259 PIC: figure out where IR4-7 come from, if anywhere.
5846*  UPD7720 and 8259: hook up p0 and p1 as outputs, and figure out how 8259 IR0 is masked from 7720 p0.
5947*  Add other dipswitches and jumpers (these may actually just control clock dividers for the two 8251s)
48*  Older v1.1 set gets stuck forever waiting for upd7720 status port to equal 0x20, which never happens.
6049*  Everything else
6150*
6251*  Notes:
r32191r32192
8069*    When the unit is idle, leds 5 and 3 are on and upd7720 reset is low (write of 0b?1?0101?.
8170*    On all character writes from i8251, bit 8 is unset, then set again, possibly to avoid interrupt clashes?
8271*
83*  Bootup notes:
72*  Bootup notes v3.4.1:
8473*    D3109: checks if 0x80 (S4-8) is set: if set, continue, else jump to D3123
8574*    D3123: write 0x1C (0 0 0 [1 1 1 0] 0) to 3401
8675*    then jump to D32B0
r32191r32192
311300     0   0   x   x    0   x   1   1    0   1  0  x   x  x  x  x   x  x  x  *  LEDS, dipswitches, and UPD77P20 control lines
312301     0   0   x   x    0   x   1   1    0   1  1  x   x  x  x  x   x  x  *  x  UPD77P20 data/status
313302     0   0   x   x    0   x   1   1    1   x  x                               Open bus, verified (returns 0x00EA)
314     0   0   x   x    1   x                                                   Open bus? (or maybe status?) (returns 0xFA,B,C,FFF)
303     0   0   x   x    1   x                                                   Open bus? (or maybe communication with multibus connector?) (returns 0xFA,B,C,FFF)
315304     0   1                                                                    Open bus, verified (returns 0x00EA)
316305     1   0                                                                    Open bus, verified (returns 0x00EA)
317306     1   1   0   *    *   *   *   *    *   *  *  *   *  *  *  *   *  *  *  s  ROMs 2 and 3
r32191r32192
433422   // mapping proms:
434423   // All are am27s19 32x8 TriState PROMs (equivalent to 82s123/6331)
435424   // L - always low; H - always high
436   // U77: unknown (what does this do?)
425   // U77: unknown (what does this do? likely as to do with multibus and possibly waitstates?)
437426   //      input is A19 for I4, A18 for I3, A15 for I2, A13 for I1, A12 for I0
438427   //      output bits 0bLLLLzyxH (TODO: recheck)
439428   //      bit - function
r32191r32192
445434   //
446435   // U79: SRAM and peripheral mapping:
447436   //      input is A19 for I4, A18 for I3, A15 for I2, A13 for I1, A12 for I0, same as U77
448   //      On the Prose 2000 board dumped, only bits 3 and 0 are used;
437   //      On the Prose 2000 later board dumped, only bits 3 and 0 are used;
449438   //      bits 7-4 are always low, bits 2 and 1 are always high.
450439   //      SRAMS are only populated in U61 and U64.
451   //      output bits 0bLLLLyHHx
440   //      On the Prose 2000 earlier board dumped, bits 3,2,1,0 are all used;
441   //      bits 7-4 are always low. sram is in 6 6116s, mapped the same as the 2 6264s on the later board.
442   //      output bits 0bLLLL3210
452443   //      7,6,5,4 - seem unconnected?
453444   //      3 - to /EN3 (pin 4) of 74S138N at U80
454445   //          AND to EN1 (pin 6) of 74S138N at U78
r32191r32192
475466   //      1 - to /CS1 on 6264 SRAMs at U62 and U65
476467   //      0 - to /CS1 on 6264 SRAMs at U61 and U64
477468   //
478   // U81: maps ROMS: input is A19-A15 for I4,3,2,1,0
469   // U81: (OPTIONAL) maps ROMS: input is A19-A15 for I4,3,2,1,0
479470   //      On the Prose 2000 board dumped, only bits 6 and 5 are used,
480471   //      the rest are always high; maps roms 0,1,2,3 to C0000-FFFFF.
481472   //      The Prose 2000 board has empty unpopulated sockets for roms 4-15;
r32191r32192
489480   //      2 - to /CE of ROMs 8(U25) and 9(U48)
490481   //      1 - to /CE of ROMs 10(U26) and 11(U49)
491482   //      0 - to /CE of ROMs 12(U27) and 13(U50)
483   //
484   // Note U81 is optional; it can be replaced by a 74s138 instead of a prom,
485   // with A19, A18, A17 as inputs, for decoding the roms as:     
486   //      7 - to /CE of ROMs 0(U21) and 1(U44)   (0xE0000-0xF1FFF)
487   //      6 - to /CE of ROMs 2(U22) and 3(U45)   (0xE4000-0xF3FFF)
488   //      5 - to /CE of ROMs 4(U23) and 5(U46)   (0xE8000-0xF5FFF)
489   //      4 - to /CE of ROMs 6(U24) and 7(U47)   (0xEC000-0xF7FFF)
490   //      3 - to /CE of ROMs 8(U25) and 9(U48)   (0xF0000-0xF9FFF)
491   //      2 - to /CE of ROMs 10(U26) and 11(U49) (0xF4000-0xFBFFF)
492   //      1 - to /CE of ROMs 12(U27) and 13(U50) (0xF8000-0xFDFFF)
493   //      0 - to /CE of ROMs 14(U28) and 15(U51) (0xFC000-0xFFFFF)                                               
494   
492495   ROM_REGION(0x1000, "proms", 0)
493496   ROM_LOAD( "am27s19.u77", 0x0000, 0x0020, CRC(A88757FC) SHA1(9066D6DBC009D7A126D75B8461CA464DDF134412))
494497   ROM_LOAD( "am27s19.u79", 0x0020, 0x0020, CRC(A165B090) SHA1(BFC413C79915C68906033741318C070AD5DD0F6B))
495498   ROM_LOAD( "am27s19.u81", 0x0040, 0x0020, CRC(62E1019B) SHA1(ACADE372EDB08FD0DCB1FA3AF806C22C47081880))
496499   ROM_END
497500
501ROM_START( prose2ko )
502   // 'Older' prose2k set
503   ROM_REGION(0x100000,"maincpu", 0)
504   // prose 2000 firmware version 1.1
505   ROMX_LOAD( "v1.1__6__speech__plus__(c)1983.am2764.6.u24",   0xec000, 0x2000, CRC(C881F92D) SHA1(2D4EB96360ADAC54D4F0110595BFAF682280C1CA),ROM_SKIP(1))
506   ROMX_LOAD( "v1.1__7__speech__plus__(c)1983.am2764.7.u47",   0xec001, 0x2000, CRC(4D5771CB) SHA1(55ED59AD1CAD154804DBEEEBED98F062783C33C3),ROM_SKIP(1))
507   ROMX_LOAD( "v1.1__8__speech__plus__(c)1983.am2764.8.u25",   0xf0000, 0x2000, CRC(ADF9BFB8) SHA1(0B73561B52B388B740FABF07ADA2D70A52F22037),ROM_SKIP(1))
508   ROMX_LOAD( "v1.1__9__speech__plus__(c)1983.am2764.9.u48",   0xf0001, 0x2000, CRC(355F97D2) SHA1(7655FC55B577821E0BD8BF81FB74B8A20B1DF098),ROM_SKIP(1))
509   ROMX_LOAD( "v1.1__10__speech__plus__(c)1983.am2764.10.u26", 0xf4000, 0x2000, CRC(949A0344) SHA1(8E33C69DFC413AEA95F166B08902AD97B1E3E980),ROM_SKIP(1))
510   ROMX_LOAD( "v1.1__11__speech__plus__(c)1983.am2764.11.u49", 0xf4001, 0x2000, CRC(AD9A0670) SHA1(769F2F8696C7B6907706466AA9AB7A897ED9F889),ROM_SKIP(1))
511   ROMX_LOAD( "v1.1__12__speech__plus__(c)1983.am2764.12.u27", 0xf8000, 0x2000, CRC(9EAF9378) SHA1(D296B1D347C03E6123C38C208EAD25B1F43B9859),ROM_SKIP(1))
512   ROMX_LOAD( "v1.1__13__speech__plus__(c)1983.am2764.13.u50", 0xf8001, 0x2000, CRC(5E173667) SHA1(93230C2FEDE5095F56E10D20EA36A5A45A1E7356),ROM_SKIP(1))
513   ROMX_LOAD( "v1.1__14__speech__plus__(c)1983.am2764.14.u28", 0xfc000, 0x2000, CRC(E616BD6E) SHA1(5DFAE2C5079D89F791C9D7166F9504231A464203),ROM_SKIP(1))
514   ROMX_LOAD( "v1.1__15__speech__plus__(c)1983.am2764.15.u51", 0xfc001, 0x2000, CRC(BEB1FA19) SHA1(72130FE45C3FD3DE7CF794936DC68ED2D4193DAF),ROM_SKIP(1))
498515
516   // TSI/Speech plus DSP firmware v?.? (no sticker, but S140025 printed on chip), unlabeled chip, but clearly a NEC UPD77P20C ceramic
517   // NOT DUMPED YET, using the 3.12 dsp firmware as a placeholder
518   ROM_REGION( 0x600, "dspprgload", 0) // packed 24 bit data
519   ROM_LOAD( "s140025__dsp_prog.u29", 0x0000, 0x0600, BAD_DUMP CRC(9E46425A) SHA1(80A915D731F5B6863AEEB448261149FF15E5B786))
520   ROM_REGION( 0x800, "dspprg", ROMREGION_ERASEFF) // for unpacking 24 bit data into 32 bit data which cpu core can understand
521   ROM_REGION( 0x400, "dspdata", 0)
522   ROM_LOAD( "s140025__dsp_data.u29", 0x0000, 0x0400, BAD_DUMP CRC(F4E4DD16) SHA1(6E184747DB2F26E45D0E02907105FF192E51BABA))
523
524   ROM_REGION(0x1000, "proms", 0)
525   ROM_LOAD( "dm74s288n.u77", 0x0000, 0x0020, CRC(A88757FC) SHA1(9066D6DBC009D7A126D75B8461CA464DDF134412)) // == am27s19.u77
526   ROM_LOAD( "dm74s288n.whitespot.u79", 0x0020, 0x0020, CRC(7FAEE6CB) SHA1(B6DD2A6909DAC9E89E7317C006A013FF0866382D))
527   // no third prom in this set, a 74S138 is used instead for e0000-fffff rom mapping
528   ROM_END
529
499530/******************************************************************************
500531 Drivers
501532******************************************************************************/
502533
503534/*    YEAR  NAME    PARENT  COMPAT  MACHINE     INPUT   INIT    COMPANY     FULLNAME            FLAGS */
504COMP( 1985, prose2k,    0,      0,      prose2k,        prose2k, tsispch_state, prose2k,    "Telesensory Systems Inc/Speech Plus",  "Prose 2000/2020",  GAME_NOT_WORKING | GAME_NO_SOUND )
535COMP( 1985, prose2k,    0,      0,      prose2k,        prose2k, tsispch_state, prose2k,    "Telesensory Systems Inc/Speech Plus",  "Prose 2000/2020 v3.4.1",  GAME_NOT_WORKING | GAME_NO_SOUND )
536COMP( 1985, prose2ko, prose2k,      0,      prose2k,        prose2k, tsispch_state, prose2k,    "Telesensory Systems Inc/Speech Plus",  "Prose 2000/2020 v1.1",  GAME_NOT_WORKING | GAME_NO_SOUND )
trunk/src/mess/mess.lst
r32191r32192
24162416ti630
24172417sacstate
24182418prose2k
2419prose2ko
24192420eacc
24202421argo
24212422applix

Previous 199869 Revisions Next


© 1997-2024 The MAME Team