mirror of
https://github.com/holub/mame
synced 2025-04-26 02:07:14 +03:00
cat.c: (Canon Cat) Fixed a mistake in the memory map mirroring due to an error during testing; added proper readback of the floppy control register, and corrected the floppy status readback so it thinks that no floppy is inserted. [Lord Nightmare]
This commit is contained in:
parent
91e732a2c8
commit
8216e009b4
@ -76,6 +76,13 @@ Optional further steps:
|
|||||||
|
|
||||||
If ever in forth mode you can return to the editor with the forth word (without quotes) "re"
|
If ever in forth mode you can return to the editor with the forth word (without quotes) "re"
|
||||||
|
|
||||||
|
Canon cat gate array ASIC markings:
|
||||||
|
GA1 (prototype): D65013CW276 [same as final]
|
||||||
|
GA1 (final): NH4-5001 276 [schematic: upD65013CW-276]
|
||||||
|
GA2 (prototype): D65013CW208 [DIFFERENT FROM FINAL! larger asic used here, shrank for final?]
|
||||||
|
GA2 (final): NH4-5002 191 [schematic: upD65012CW-191]
|
||||||
|
GA3 (prototype): D65013CW141 [same as final? typo 65013 vs 65012?]
|
||||||
|
GA3 (final): NH4-5003 141 [schematic: upD65012CW-141]
|
||||||
|
|
||||||
Canon cat credits easter egg:
|
Canon cat credits easter egg:
|
||||||
* 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
|
* 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
|
||||||
@ -83,14 +90,31 @@ Canon cat credits easter egg:
|
|||||||
|
|
||||||
Canon Cat credits details: (WIP)
|
Canon Cat credits details: (WIP)
|
||||||
Scott Kim - responsible for fonts on swyft and cat
|
Scott Kim - responsible for fonts on swyft and cat
|
||||||
|
Ralph Voorhees - Model construction and mockups (swyft 'flat cat')
|
||||||
|
|
||||||
|
Cat HLSL stuff:
|
||||||
|
*scanlines:
|
||||||
|
the cat has somewhat visible and fairly close scanlines with very little fuzziness
|
||||||
|
try hlsl options:
|
||||||
|
hlsl_prescale_x 4
|
||||||
|
hlsl_prescale_y 4
|
||||||
|
scanline_alpha 0.3
|
||||||
|
scanline_size 1.0
|
||||||
|
scanline_height 0.7
|
||||||
|
scanline_bright_scale 1.0
|
||||||
|
scanline_bright_offset 0.6
|
||||||
|
*phosphor persistence of the original cat CRT is VERY LONG and fades to a greenish-yellow color, though the main color itself is white
|
||||||
|
try hlsl option:
|
||||||
|
phosphor_life 0.93,0.95,0.87
|
||||||
|
which is fairly close but may actually be too SHORT compared to the real thing.
|
||||||
|
|
||||||
|
|
||||||
Swyft versions:
|
Swyft versions:
|
||||||
There are at least 4 variants of machines called 'swyft':
|
There are at least 4 variants of machines called 'swyft':
|
||||||
* The earliest desktop units which use plexi or rubber-tooled case and an
|
* The earliest desktop units which use plexi or rubber-tooled case and an
|
||||||
angled monitor; about a dozen were made and at least two of clear plexi.
|
angled monitor; about a dozen were made and at least two of clear plexi.
|
||||||
These are sometimes called "wrinkled" swyfts. 5.25" drive, may be able to
|
These are sometimes called "wrinkled" swyfts. 5.25" drive, they may be able
|
||||||
read Apple2 Swyftware and Swyftcard-created disks.
|
to read Apple2 Swyftware/Swyftdisk and Swyftcard-created disks.
|
||||||
It is possible no prototypes of this type got beyond the 'runs forth console only' stage.
|
It is possible no prototypes of this type got beyond the 'runs forth console only' stage.
|
||||||
http://archive.computerhistory.org/resources/access/physical-object/2011/09/102746929.01.01.lg.JPG
|
http://archive.computerhistory.org/resources/access/physical-object/2011/09/102746929.01.01.lg.JPG
|
||||||
http://www.digibarn.com/collections/systems/swyft/Swyft-No2-05-1271.jpg
|
http://www.digibarn.com/collections/systems/swyft/Swyft-No2-05-1271.jpg
|
||||||
@ -99,11 +123,13 @@ There are at least 4 variants of machines called 'swyft':
|
|||||||
case and just a keyboard. Model SP0001
|
case and just a keyboard. Model SP0001
|
||||||
http://www.digibarn.com/collections/systems/swyft/Image82.jpg
|
http://www.digibarn.com/collections/systems/swyft/Image82.jpg
|
||||||
* The later "ur-cat" desktop units which use a machine tooled case and look
|
* The later "ur-cat" desktop units which use a machine tooled case and look
|
||||||
more or less like the canon cat. about 100-200 were made. 3.5" drive.
|
more or less like the canon cat. Around 100-200 were made. 3.5" drive.
|
||||||
These have a fully functional EDDE editor as the cat does, and can even compile forth programs.
|
These have a fully functional EDDE editor as the cat does, and can even compile
|
||||||
|
forth programs.
|
||||||
(the 'swyft' driver is based on one of these)
|
(the 'swyft' driver is based on one of these)
|
||||||
* The very late portable LCD units with a dark grey case and a row of hotkey
|
* The very late portable LCD units with a dark grey case and a row of hotkey
|
||||||
buttons below the screen.
|
buttons below the screen. Not dumped yet. At least one functional prototype exists.
|
||||||
|
At least one plastic mockup exists with no innards.
|
||||||
http://www.digibarn.com/collections/systems/swyft/swyft.jpg
|
http://www.digibarn.com/collections/systems/swyft/swyft.jpg
|
||||||
|
|
||||||
Canon Cat versions:
|
Canon Cat versions:
|
||||||
@ -115,6 +141,8 @@ There is really only one version of the cat which saw wide release, the US versi
|
|||||||
As for prototypes/dev cat machines, a few minor variants exist:
|
As for prototypes/dev cat machines, a few minor variants exist:
|
||||||
* Prototype cat motherboards used 16k*4bit drams instead of 64k*4bit as the
|
* Prototype cat motherboards used 16k*4bit drams instead of 64k*4bit as the
|
||||||
final system did and hence max out at 128k of dram instead of 512k.
|
final system did and hence max out at 128k of dram instead of 512k.
|
||||||
|
One of the gate arrays is also different, and the motherboard is arranged
|
||||||
|
differently. The IC9 "buserr" PAL is not used, even on the prototype.
|
||||||
The final system included 256k of dram and can be upgraded to 512k.
|
The final system included 256k of dram and can be upgraded to 512k.
|
||||||
* At least some developer units were modified to have an external BNC
|
* At least some developer units were modified to have an external BNC
|
||||||
connector, ostensibly to display the internal screen's video externally.
|
connector, ostensibly to display the internal screen's video externally.
|
||||||
@ -302,6 +330,7 @@ public:
|
|||||||
UINT8 m_video_invert;
|
UINT8 m_video_invert;
|
||||||
UINT16 m_pr_cont;
|
UINT16 m_pr_cont;
|
||||||
UINT8 m_keyboard_line;
|
UINT8 m_keyboard_line;
|
||||||
|
UINT8 m_floppy_control;
|
||||||
|
|
||||||
TIMER_CALLBACK_MEMBER(keyboard_callback);
|
TIMER_CALLBACK_MEMBER(keyboard_callback);
|
||||||
TIMER_CALLBACK_MEMBER(counter_6ms_callback);
|
TIMER_CALLBACK_MEMBER(counter_6ms_callback);
|
||||||
@ -371,15 +400,20 @@ WRITE16_MEMBER( cat_state::cat_video_control_w )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Floppy control register (called fd.cont in the cat source code)
|
// Floppy control register (called fd.cont in the cat source code)
|
||||||
/* FEDCBA98 (76543210 is ignored)
|
/* FEDCBA98 (76543210 is open bus)
|
||||||
* |||||||\-- ?always low? (may be some sort of 'reset' or debug bit? the cat code explicitly clears this bit but never sets it)
|
* |||||||\-- unknown[1] (may be some sort of 'reset' or debug bit? the cat code explicitly clears this bit but never sets it)
|
||||||
* ||||||\--- WRITE GATE: 0 = write head disabled, 1 = write head enabled (verified from cat source code)
|
* ||||||\--- WRITE GATE: 0 = write head disabled, 1 = write head enabled (verified from cat source code)
|
||||||
* |||||\---- ?always high? (leftover debug bit? unused by cat code)
|
* |||||\---- unknown[2] (leftover debug bit? unused by cat code)
|
||||||
* ||||\----- /DIRECTION: 1 = in, 0 = out (verified from forth cmd)
|
* ||||\----- /DIRECTION: 1 = in, 0 = out (verified from forth cmd)
|
||||||
* |||\------ /SIDESEL: 1 = side1, 0 = side0 (verified from forth cmd)
|
* |||\------ /SIDESEL: 1 = side1, 0 = side0 (verified from forth cmd)
|
||||||
* ||\------- STEP: 1 = STEP active, 0 = STEP inactive (verified from cat source code)
|
* ||\------- STEP: 1 = STEP active, 0 = STEP inactive (verified from cat source code)
|
||||||
* |\-------- MOTOR ON: 1 = on, 0 = off (verified)
|
* |\-------- MOTOR ON: 1 = on, 0 = off (verified)
|
||||||
* \--------- /DRIVESELECT: 1 = drive 0, 0 = drive 1 (verified from forth cmd)
|
* \--------- /DRIVESELECT: 1 = drive 0, 0 = drive 1 (verified from forth cmd)
|
||||||
|
* all 8 bits 'stick' on write and are readable at this register as well
|
||||||
|
* [1] writing this bit as high seems to 'freeze' floppy acquisition so
|
||||||
|
* the value at the floppy_data_r register is held rather than updated
|
||||||
|
* with new data from the shifter/mfm clock/data separator
|
||||||
|
* [2] this bit's function is unknown. it could possibly be an FM vs MFM selector bit, where high = MFM, low = FM ? or MFM vs GCR?
|
||||||
*/
|
*/
|
||||||
// 0x800000-0x800001 read
|
// 0x800000-0x800001 read
|
||||||
READ16_MEMBER( cat_state::cat_floppy_control_r )
|
READ16_MEMBER( cat_state::cat_floppy_control_r )
|
||||||
@ -387,7 +421,7 @@ READ16_MEMBER( cat_state::cat_floppy_control_r )
|
|||||||
#ifdef DEBUG_FLOPPY_CONTROL_R
|
#ifdef DEBUG_FLOPPY_CONTROL_R
|
||||||
fprintf(stderr,"Read from Floppy Status address %06X\n", 0x800000+(offset<<1));
|
fprintf(stderr,"Read from Floppy Status address %06X\n", 0x800000+(offset<<1));
|
||||||
#endif
|
#endif
|
||||||
return 0x0480;
|
return (m_floppy_control << 8)|0x80; // LOW 8 BITS ARE OPEN BUS
|
||||||
}
|
}
|
||||||
// 0x800000-0x800001 write
|
// 0x800000-0x800001 write
|
||||||
WRITE16_MEMBER( cat_state::cat_floppy_control_w )
|
WRITE16_MEMBER( cat_state::cat_floppy_control_w )
|
||||||
@ -395,6 +429,7 @@ WRITE16_MEMBER( cat_state::cat_floppy_control_w )
|
|||||||
#ifdef DEBUG_FLOPPY_CONTROL_W
|
#ifdef DEBUG_FLOPPY_CONTROL_W
|
||||||
fprintf(stderr,"Write to Floppy Control address %06X, data %04X\n", 0x800000+(offset<<1), data);
|
fprintf(stderr,"Write to Floppy Control address %06X, data %04X\n", 0x800000+(offset<<1), data);
|
||||||
#endif
|
#endif
|
||||||
|
m_floppy_control = (data >> 8)&0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x800002-0x800003 read = 0x0080, see open bus
|
// 0x800002-0x800003 read = 0x0080, see open bus
|
||||||
@ -427,7 +462,7 @@ WRITE16_MEMBER( cat_state::cat_floppy_data_w )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 0x800008-0x800009: Floppy status register (called fd.status in the cat source code)
|
// 0x800008-0x800009: Floppy status register (called fd.status in the cat source code)
|
||||||
/* FEDCBA98 (76543210 is ignored)
|
/* FEDCBA98 (76543210 is open bus)
|
||||||
* |||||||\-- ? always low
|
* |||||||\-- ? always low
|
||||||
* ||||||\--- ? always low
|
* ||||||\--- ? always low
|
||||||
* |||||\---- READY: 1 = ready, 0 = not ready (verified from cat source code)
|
* |||||\---- READY: 1 = ready, 0 = not ready (verified from cat source code)
|
||||||
@ -443,7 +478,7 @@ READ16_MEMBER( cat_state::cat_floppy_status_r )
|
|||||||
#ifdef DEBUG_FLOPPY_STATUS_R
|
#ifdef DEBUG_FLOPPY_STATUS_R
|
||||||
fprintf(stderr,"Read from Floppy Status address %06X\n", 0x800008+(offset<<1));
|
fprintf(stderr,"Read from Floppy Status address %06X\n", 0x800008+(offset<<1));
|
||||||
#endif
|
#endif
|
||||||
return 0x0080;
|
return 0x2480;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x80000a-0x80000b
|
// 0x80000a-0x80000b
|
||||||
@ -488,9 +523,9 @@ WRITE16_MEMBER( cat_state::cat_printer_control_w )
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* FEDCBA98 (76543210 is ignored)
|
* FEDCBA98 (76543210 is ignored)
|
||||||
* |||||||\-- CC line enable (verified from cat source code)
|
* |||||||\-- CC line enable (pin 34) (verified from cat source code)
|
||||||
* ||||||\--- LEDE line enable (verified from cat source code)
|
* ||||||\--- LEDE line enable (pin 33) (verified from cat source code)
|
||||||
* |||||\---- ?
|
* |||||\---- ? May control pin 32?
|
||||||
* ||||\----- ? always seems to be written as high?
|
* ||||\----- ? always seems to be written as high?
|
||||||
* |||\------ ?
|
* |||\------ ?
|
||||||
* ||\------- ?
|
* ||\------- ?
|
||||||
@ -585,12 +620,11 @@ READ16_MEMBER( cat_state::cat_0080_r )
|
|||||||
68k address map:
|
68k address map:
|
||||||
a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 (a0 via UDS/LDS)
|
a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 (a0 via UDS/LDS)
|
||||||
*i *i * x x * * * x x x x x x x x x x x x x x x x *GATE ARRAY 2 DECODES THESE LINES TO ENABLE THIS AREA* (a23 and a22 are indirectly decoded via the /RAMROMCS and /IOCS lines from gate array 1)
|
*i *i * x x * * * x x x x x x x x x x x x x x x x *GATE ARRAY 2 DECODES THESE LINES TO ENABLE THIS AREA* (a23 and a22 are indirectly decoded via the /RAMROMCS and /IOCS lines from gate array 1)
|
||||||
0 0 0 0 x 0 a * * * * * * * * * * * * * * * * b R ROM (ab: 00=ic4 01=ic2 10=ic5 11=ic3) (EPROM 27C512 x 4) [controlled via GA2 /ROMCS]
|
0 0 0 x x 0 a * * * * * * * * * * * * * * * * b R ROM (ab: 00=ic4 01=ic2 10=ic5 11=ic3) (EPROM 27C512 x 4) [controlled via GA2 /ROMCS]
|
||||||
0 0 0 0 x 1 0 0 x x * * * * * * * * * * * * * 0 RW SVRAM ic11 d4364 (battery backed) [controlled via GA2 /RAMCS]
|
0 0 0 x x 1 0 0 x x * * * * * * * * * * * * * 0 RW SVRAM ic11 d4364 (battery backed) [controlled via GA2 /RAMCS]
|
||||||
0 0 0 0 x 1 x 1 x x x x x x x x x x x x x x x 0 O OPEN BUS (reads as 0x2e) [may be controlled via GA2 /RAMCS?]
|
0 0 0 x x 1 x 1 x x x x x x x x x x x x x x x 0 O OPEN BUS (reads as 0x2e) [may be controlled via GA2 /RAMCS?]
|
||||||
0 0 0 0 x 1 1 0 x x x x x x x x x x x x x x x 0 O OPEN BUS (reads as 0x2e) [may be controlled via GA2 /RAMCS?]
|
0 0 0 x x 1 1 0 x x x x x x x x x x x x x x x 0 O OPEN BUS (reads as 0x2e) [may be controlled via GA2 /RAMCS?]
|
||||||
0 0 0 0 x 1 x x x x x x x x x x x x x x x x x 1 O OPEN BUS (reads as 0x80) [may be controlled via GA2 /RAMCS?]
|
0 0 0 x x 1 x x x x x x x x x x x x x x x x x 1 O OPEN BUS (reads as 0x80) [may be controlled via GA2 /RAMCS?]
|
||||||
0 0 0 1 x x x x x x x x x x x x x x x x x x x x O BUS CONFLICT (reads as random garbage, corrupted copy based on when a20 is 0, some sort of bus collision? note GA2 can't see a20 so /ROMCS and /RAMCS lines are probably active here as above)
|
|
||||||
0 0 1 x x 0 * * * * * * * * * * * * * * * * * 0 R SVROM 2 ic7 (not present on cat as sold, open bus reads as 0x2e) [controlled via GA2 /SVCS0]
|
0 0 1 x x 0 * * * * * * * * * * * * * * * * * 0 R SVROM 2 ic7 (not present on cat as sold, open bus reads as 0x2e) [controlled via GA2 /SVCS0]
|
||||||
0 0 1 x x 0 * * * * * * * * * * * * * * * * * 1 R SVROM 0 ic6 (MASK ROM tc531000) [controlled via GA2 /SVCS0]
|
0 0 1 x x 0 * * * * * * * * * * * * * * * * * 1 R SVROM 0 ic6 (MASK ROM tc531000) [controlled via GA2 /SVCS0]
|
||||||
0 0 1 x x 1 * * * * * * * * * * * * * * * * * 0 O OPEN BUS (reads as 0x2e) [controlled via GA2 /SVCS1] *SEE BELOW*
|
0 0 1 x x 1 * * * * * * * * * * * * * * * * * 0 O OPEN BUS (reads as 0x2e) [controlled via GA2 /SVCS1] *SEE BELOW*
|
||||||
@ -627,8 +661,8 @@ a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4
|
|||||||
|
|
||||||
static ADDRESS_MAP_START(cat_mem, AS_PROGRAM, 16, cat_state)
|
static ADDRESS_MAP_START(cat_mem, AS_PROGRAM, 16, cat_state)
|
||||||
ADDRESS_MAP_UNMAP_HIGH
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_MIRROR(0x080000) // 256 KB ROM
|
AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_MIRROR(0x180000) // 256 KB ROM
|
||||||
AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("svram") AM_MIRROR(0x08C000)// SRAM powered by battery
|
AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("svram") AM_MIRROR(0x18C000)// SRAM powered by battery
|
||||||
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("svrom",0x0000) AM_MIRROR(0x180000) // SV ROM
|
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("svrom",0x0000) AM_MIRROR(0x180000) // SV ROM
|
||||||
AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_SHARE("p_videoram") AM_MIRROR(0x180000) // 512 KB RAM
|
AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_SHARE("p_videoram") AM_MIRROR(0x180000) // 512 KB RAM
|
||||||
AM_RANGE(0x600000, 0x67ffff) AM_READWRITE(cat_2e80_r,cat_video_control_w) AM_MIRROR(0x180000) // Gate Array #1: Video
|
AM_RANGE(0x600000, 0x67ffff) AM_READWRITE(cat_2e80_r,cat_video_control_w) AM_MIRROR(0x180000) // Gate Array #1: Video
|
||||||
@ -805,7 +839,9 @@ MACHINE_START_MEMBER(cat_state,cat)
|
|||||||
MACHINE_RESET_MEMBER(cat_state,cat)
|
MACHINE_RESET_MEMBER(cat_state,cat)
|
||||||
{
|
{
|
||||||
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(cat_state::cat_int_ack),this));
|
machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(cat_state::cat_int_ack),this));
|
||||||
|
m_duart_inp = 0;
|
||||||
m_6ms_counter = 0;
|
m_6ms_counter = 0;
|
||||||
|
m_floppy_control = 0;
|
||||||
m_keyboard_timer->adjust(attotime::zero, 0, attotime::from_hz(120));
|
m_keyboard_timer->adjust(attotime::zero, 0, attotime::from_hz(120));
|
||||||
m_6ms_timer->adjust(attotime::zero, 0, attotime::from_hz((XTAL_19_968MHz/2)/65536));
|
m_6ms_timer->adjust(attotime::zero, 0, attotime::from_hz((XTAL_19_968MHz/2)/65536));
|
||||||
}
|
}
|
||||||
@ -1043,9 +1079,9 @@ ROM_START( cat )
|
|||||||
/* Romspace here is a little strange: there are 3 rom sockets on the board:
|
/* Romspace here is a little strange: there are 3 rom sockets on the board:
|
||||||
* svrom-0 maps to 200000-21ffff every ODD byte (d8-d0)
|
* svrom-0 maps to 200000-21ffff every ODD byte (d8-d0)
|
||||||
* svrom-1 maps to 200000-21ffff every EVEN byte (d15-d7)
|
* svrom-1 maps to 200000-21ffff every EVEN byte (d15-d7)
|
||||||
* (since no rom is in the socket; it reads as open bus 0x2E)
|
* (since no rom is in the socket; it reads as open bus, sometimes 0x2E)
|
||||||
* svrom-2 maps to 240000-25ffff every ODD byte (d8-d0)
|
* svrom-2 maps to 240000-25ffff every ODD byte (d8-d0)
|
||||||
* (since no rom is in the socket; it reads as open bus 0x80)
|
* (since no rom is in the socket; it reads as open bus, sometimes 0x80)
|
||||||
* there is no svrom-3; 240000-25ffff EVEN always reads as 0x2E
|
* there is no svrom-3; 240000-25ffff EVEN always reads as 0x2E
|
||||||
* since ROM_FILL16BE(0x0, 0x80000, 0x2e80) doesn't exist, the
|
* since ROM_FILL16BE(0x0, 0x80000, 0x2e80) doesn't exist, the
|
||||||
* even bytes and latter chunk of the svrom space need to be filled in
|
* even bytes and latter chunk of the svrom space need to be filled in
|
||||||
@ -1060,6 +1096,19 @@ ROM_START( cat )
|
|||||||
*/
|
*/
|
||||||
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
|
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
|
||||||
|
|
||||||
|
/* There is an unpopulated PAL16L8 at IC9 whose original purpose (based
|
||||||
|
* on the schematics) was probably to cause a 68k bus error when
|
||||||
|
* memory in certain ranges when accessed (likely so 'forth gone insane'
|
||||||
|
* won't destroy the contents of ram and svram).
|
||||||
|
* Its connections are (where Ix = inp on pin x, Ox = out on pin x):
|
||||||
|
* I1 = A23, I2 = A22, I3 = A2, I4 = R/W, I5 = A5, I6 = FC2, I7 = gnd,
|
||||||
|
* I8 = A1, I9 = gnd, I11 = gnd, O16 = /BERR,
|
||||||
|
* I14 = REMAP (connects to emulator 'shadow rom' board or to gnd when unused)
|
||||||
|
* Based on the inputs and outputs of this pal, almost if not the entire
|
||||||
|
* open bus and mirrored areas of the cat address space could be made
|
||||||
|
* to cause bus errors. REMAP was probably used to 'open up' the A00000-A7ffff
|
||||||
|
* shadow rom/ram area and make it writable without erroring.
|
||||||
|
*/
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
/* Driver */
|
/* Driver */
|
||||||
|
Loading…
Reference in New Issue
Block a user