mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
(MESS) cat.c: Canon Cat now has working sound [Lord Nightmare, R. Belmont]
(MESS) cat.c: Updated swyft related notes/comments from tracing [Lord Nightmare]
This commit is contained in:
parent
7cd03e1c0c
commit
12ca48c3c1
@ -88,7 +88,7 @@ In MESS, to activate it as above:
|
||||
* when the Cat boots, type (without quotes) "Enable Forth Language"
|
||||
* hold left-alt(leap left) and type E n a, release left-alt (the left cursor is now at the first character)
|
||||
* simultaneously press both alt keys for a moment and release both (the whole "Enable Forth Language" line will be selected)
|
||||
* press control(use front) and press backspace(ERASE) (If beeping actually worked the cat would beep here)
|
||||
* press control(use front) and press backspace(ERASE) (The cat will beep here)
|
||||
* press control(use front), shift, and space (the cursor should stop blinking)
|
||||
* press enter and the forth "ok" prompt should appear. you can type 'page' and enter to clear the screen
|
||||
Optional further steps:
|
||||
@ -178,7 +178,7 @@ Canon Cat:
|
||||
Crystals:
|
||||
X1: 19.968Mhz, used by GA2 (plus a PLL to multiply by 2?), and divide by 4 for
|
||||
cpuclk, divide by 8 for 2.5mhz and divide by 5.5 for 3.63mhz (is this
|
||||
suposed to be divide by 6? there may not be a pll if it is...)
|
||||
supposed to be divide by 6? there may not be a pll if it is...)
|
||||
X2: 3.579545Mhz, used by the DTMF generator chip AMI S2579 at IC40
|
||||
X3: 2.4576Mhz, used by the modem chip AMI S35213 at IC37
|
||||
|
||||
@ -215,9 +215,10 @@ J1: breakout of joystick, serial/rs232, hex-keypad, parallel port, and forth swi
|
||||
not all 60 pins are populated in the connector, only pins 1-6, 8, 13-15, 17-18, 23-30, 35-60 are present
|
||||
(traced partly by dwight)
|
||||
J2: unpopulated 8-pin sip header, serial/rs232-related?
|
||||
(vcc ? ? ? ? ? ? gnd)
|
||||
(vcc ? ? ? ? ? ? gnd) (random guess: txd, rxd, rts, cts, dsr, dtr, and one pin could be cd/ri though the modem circuit may do that separately?)
|
||||
J3: Floppy Connector
|
||||
(standard DIL 34 pin 2-row rectangular connector for mini-shugart/pc floppy cable; pin 2 IS connected somewhere)
|
||||
(standard DIL 34 pin 2-row rectangular connector for mini-shugart/pc floppy cable; pin 2 IS connected somewhere and ?probably? is used for /DISKCHANGE like on an Amiga, with pin 34 being /TRUEREADY?)
|
||||
(as opposed to normal ibm pc 3.5" drives where pin 2 is unconnected or is /DENSITY *input to drive*, and pin 34 is /DISKCHANGE)
|
||||
J4: 18-pin sip header for keyboard ribbon cable
|
||||
(needs tracing to see the VIA hookup order)
|
||||
J5: locking-tab-type "CONN HEADER VERT 4POS .100 TIN" connector for supplying power
|
||||
@ -237,7 +238,7 @@ J9: unpopulated DIL 40-pin straight connector for a ROM debug/expansion/RAM-shad
|
||||
(GND ? ? ? gnd ? vcc a12 a7 a6 a5 a4 a3 a2 a1 a0 d0 d1 d2 gnd)
|
||||
Jx: 4 pin on top side, 6 pin on bottom side edge ?debug? connector (doesn't have a Jx number)
|
||||
(trace me!)
|
||||
B1: a cut-able trace on the pcb. Not cut, affects one of the pins on the unpopulated J9 connector only.
|
||||
B1: a cuttable trace on the pcb. Not cut, affects one of the pins on the unpopulated J9 connector only.
|
||||
E1: jumper, unknown purpose, not set
|
||||
E2: jumper, unknown purpose, not set
|
||||
D13: LED
|
||||
@ -365,6 +366,7 @@ ToDo:
|
||||
#include "machine/6850acia.h"
|
||||
#include "machine/6522via.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "sound/speaker.h"
|
||||
|
||||
class cat_state : public driver_device
|
||||
{
|
||||
@ -383,7 +385,7 @@ public:
|
||||
m_acia6850(*this, "acia6850"),
|
||||
m_via0(*this, "via6522_0"),
|
||||
m_via1(*this, "via6522_1"),
|
||||
//m_speaker(*this, "speaker"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_svram(*this, "svram"), // nvram
|
||||
m_p_cat_videoram(*this, "p_cat_vram"),
|
||||
m_p_swyft_videoram(*this, "p_swyft_vram"),
|
||||
@ -407,7 +409,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(cat_duart_irq_handler);
|
||||
DECLARE_WRITE_LINE_MEMBER(cat_duart_txa);
|
||||
DECLARE_WRITE8_MEMBER(cat_duart_output);
|
||||
//required_device<speaker_sound_device> m_speaker;
|
||||
optional_device<speaker_sound_device> m_speaker;
|
||||
optional_shared_ptr<UINT16> m_svram;
|
||||
optional_shared_ptr<UINT16> m_p_cat_videoram;
|
||||
optional_shared_ptr<UINT8> m_p_swyft_videoram;
|
||||
@ -1056,7 +1058,7 @@ UINT32 cat_state::screen_update_cat(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* TODO: the duart is the only thing actually connected to the cpu IRQ pin
|
||||
/* The duart is the only thing actually connected to the cpu IRQ pin
|
||||
* The KTOBF output of the gate array 2 (itself the terminal count output
|
||||
* of a 16-bit counter clocked at ~10mhz, hence 6.5536ms period) goes to a
|
||||
* d-latch and inputs on ip2 of the duart, causing the duart to fire an irq;
|
||||
@ -1081,16 +1083,16 @@ WRITE_LINE_MEMBER(cat_state::cat_duart_txa)
|
||||
}
|
||||
|
||||
/* mc68681 DUART Input pins:
|
||||
* IP0: CTS [using the duart builtin hardware-CTS feature?]
|
||||
* IP0: CTS [using the DUART builtin hardware-CTS feature?]
|
||||
* IP1: Centronics ACK (IP1 changes state 0->1 or 1->0 on the falling edge of /ACK using a d-latch)
|
||||
* IP2: KTOBF (IP2 changes state 0->1 or 1->0 on the rising edge of KTOBF using a d-latch; KTOBF is a 6.5536ms-period squarewave generated by one of the gate arrays, i need to check with a scope to see whether it is a single spike/pulse every 6.5536ms or if from the gate array it inverts every 6.5536ms, documentation isn't 100% clear but I suspect the former) [uses the Delta IP2 state change detection feature to generate an interrupt; I'm not sure if IP2 is used as a counter clock source but given the beep frequency of the real unit i very much doubt it, 6.5536ms is too slow]
|
||||
* IP2: KTOBF (IP2 changes state 0->1 or 1->0 on the rising edge of KTOBF using a d-latch; KTOBF is a 6.5536ms-period squarewave generated by one of the gate arrays, I need to check with a scope to see whether it is a single spike/pulse every 6.5536ms or if from the gate array it inverts every 6.5536ms, documentation isn't 100% clear but I suspect the former) [uses the Delta IP2 state change detection feature to generate an interrupt; I'm not sure if IP2 is used as a counter clock source but given the beep frequency of the real unit I very much doubt it, 6.5536ms is too slow]
|
||||
* IP3: RG ("ring" input)
|
||||
* IP4: Centronics BUSY
|
||||
* IP5: DSR
|
||||
*/
|
||||
|
||||
/* mc68681 DUART Output pins:
|
||||
* OP0: RTS [using the duart builtin hardware-RTS feature?]
|
||||
* OP0: RTS [using the DUART builtin hardware-RTS feature?]
|
||||
* OP1: DTR
|
||||
* OP2: /TDCS (select/enable the S2579 DTMF tone generator chip)
|
||||
* OP3: speaker out [using the 'channel b 1X tx or rx clock output' or more likely the 'timer output' feature to generate a squarewave]
|
||||
@ -1104,6 +1106,7 @@ WRITE8_MEMBER(cat_state::cat_duart_output)
|
||||
#ifdef DEBUG_DUART_OUTPUT_LINES
|
||||
fprintf(stderr,"Duart output io lines changed to: %02X\n", data);
|
||||
#endif
|
||||
m_speaker->level_w((data >> 3) & 1);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( cat, cat_state )
|
||||
@ -1133,6 +1136,10 @@ static MACHINE_CONFIG_START( cat, cat_state )
|
||||
MCFG_DUARTN68681_A_TX_CALLBACK(WRITELINE(cat_state, cat_duart_txa))
|
||||
MCFG_DUARTN68681_OUTPORT_CALLBACK(WRITE8(cat_state, cat_duart_output))
|
||||
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -1498,6 +1505,39 @@ ROM_START( swyft )
|
||||
ROMX_LOAD( "infoapp.lo.u30", 0x0000, 0x8000, CRC(52c1bd66) SHA1(b3266d72970f9d64d94d405965b694f5dcb23bca), ROM_BIOS(2))
|
||||
ROMX_LOAD( "infoapp.hi.u31", 0x8000, 0x8000, CRC(83505015) SHA1(693c914819dd171114a8c408f399b56b470f6be0), ROM_BIOS(2))
|
||||
ROM_REGION( 0x4000, "pals", ROMREGION_ERASEFF )
|
||||
/* Swyft PALs:
|
||||
* The Swyft has four PALs, whose rough function can be derived from their names:
|
||||
* TIMING - state machine for DRAM refresh/access; handles ras/cas and choosing whether the video out shifter or the 68k is accessing ram. also divides clock
|
||||
* DECODE - address decoder for the 68008
|
||||
* VIDEO - state machine for the video shifter (and vblank/hblank?)
|
||||
* DISK 3.5 - state machine for the floppy drive interface
|
||||
*/
|
||||
/* U9: Timing AMPAL16R4
|
||||
*
|
||||
* input
|
||||
* 76543210
|
||||
* |||||||\-- ?
|
||||
* ||||||\--- ?
|
||||
* |||||\---- ?
|
||||
* ||||\----- ?
|
||||
* |||\------ ?
|
||||
* ||\------- ?
|
||||
* |\-------- ?
|
||||
* \--------- ?
|
||||
* /CK ------ 15.8976mhz crystal and transistor oscillator
|
||||
* /OE ------ ?
|
||||
*
|
||||
* output
|
||||
* 76543210
|
||||
* |||||||\-- ?
|
||||
* ||||||\--- ?
|
||||
* |||||\-R-- ?
|
||||
* ||||\--R-- ?
|
||||
* |||\---R-- ?
|
||||
* ||\----R-- ?
|
||||
* |\-------- ?
|
||||
* \--------- ?
|
||||
*/
|
||||
ROM_LOAD( "timing_b.ampal16r4a.u9.jed", 0x0000, 0xb08, CRC(643e6e83) SHA1(7db167883f9d6cf385ce496d08976dc16fc3e2c3))
|
||||
ROM_LOAD( "decode_e.ampal16l8.u20.jed", 0x1000, 0xb08, CRC(0b1dbd76) SHA1(08c144ad7a7bbdd53eefd271b2f6813f8b3b1594))
|
||||
ROM_LOAD( "video_2b.ampal16r4.u25.jed", 0x2000, 0xb08, CRC(caf91148) SHA1(3f8ddcb512a1c05395c74ad9a6ba7b87027ce4ec))
|
||||
@ -1587,4 +1627,4 @@ ROM_END
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1985, swyft,0, 0, swyft, swyft, driver_device, 0, "Information Applicance Inc", "Swyft", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
COMP( 1987, cat, swyft, 0, cat, cat, driver_device, 0, "Canon", "Cat", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
COMP( 1987, cat, swyft, 0, cat, cat, driver_device, 0, "Canon", "Cat", GAME_NOT_WORKING)
|
||||
|
Loading…
Reference in New Issue
Block a user