src/mess/devices/ti99cart.c
| r9486 | r9487 | |
| 6 | 6 | |
| 7 | 7 | Michael Zapf, 2009 |
| 8 | 8 | |
| 9 | Console cartridge port |
| 10 | |
| 11 | Vss 36||35 GND |
| 12 | ROMG* 34||33 Vss ROMG* is low if addr in >6000-7FFF |
| 13 | WE* 32||31 GR High = GROM ready |
| 14 | A4 30||29 -5V |
| 15 | A5 28||27 GRC GROMCLK (or CPUCLK) from the VDP 9918A |
| 16 | A6 26||25 DBIN |
| 17 | A3 24||23 A14 |
| 18 | A7 22||21 GS* Low if addr in >9800-9FFF |
| 19 | A8 20||19 +5V |
| 20 | A9 18||17 D0 |
| 21 | A10 16||15 D1 |
| 22 | A11 14||13 D2 |
| 23 | A12 12||11 D3 |
| 24 | A13 10||9 D4 |
| 25 | A15/OUT 8||7 D5 |
| 26 | CRUIN 6||5 D6 |
| 27 | CRUCLK* 4||3 D7 |
| 28 | GND 2||1 RESET (Active high) |
| 29 | |
| 30 | 1 RESET < Resets the system (active high) |
| 31 | D0 ... D7: Data bus (D0 = most significant bit) |
| 32 | A3 ... A15: Address bus (A15 shared with CRUOUT signal, A3 most significant) |
| 33 | 4 CRUCLK* > Inversion of TMS9900 CRUCLOCK pin |
| 34 | 6 CRUIN < CRU input to TMS9900 |
| 35 | 21 GS* > Grom select. Active low is addr in >9800-9FFF. Internal 2.2K pull-up to +5V. |
| 36 | 25 DBIN > Active high = read memory. Internal 3.3K pull-up to +5V |
| 37 | 27 GRC > GROM clock: 447.7 kHz signal from the VPD (or 3.5 MHz, jumper-selected). 1K pull-up to +5V. |
| 38 | 29 VDD -5 Volts power supply |
| 39 | 31 GR < Active high = GROM ready. 4.7K pull-up. Masked by GS* in the console before it reaches the CPU. |
| 40 | 32 WE* > Active low = write enable (derived from TMS9900 WE*) |
| 41 | 33 VSS Pseudo-ground (-0.72 V; purpose unclear) |
| 42 | 34 ROMG* > Active low if addr in >6000-7FFF |
| 43 | |
| 44 | Notes: |
| 45 | |
| 46 | * There is no RESET line from the console to the cartridges. The RESET line used |
| 47 | here is intended to reset the console when a cartridge is plugged in |
| 48 | * The cartridge port's data bus must be connected to the 16/8 databus multiplex |
| 49 | * GR is connected to the console's READY* line and is used by GROMs which are |
| 50 | comparably slow devices. During their processing time the main CPU is |
| 51 | suspended. (This is not yet implemented). |
| 52 | * A3-A15 offer a space for 8 KiB ROM. The ROMG* line gets active (low) when |
| 53 | A0-A2 is 011 (bin), so we get addresses 0x6000 - 0x7fff. |
| 54 | * Some cartridges use special circuitry which allows for more than 8 KiB by |
| 55 | switching banks. |
| 56 | * A15 is shared with the CRUOUT line. During CRUCLK* being active, the line is |
| 57 | CRUOUT, else A15. |
| 58 | * A15 is a constructed signal that is created by the 16/8 databus multiplexer. |
| 59 | The 9900 CPU only has a word-oriented addressing and does not offer an A15 |
| 60 | line. |
| 61 | |
| 9 | 62 | *********************************************************************/ |
| 10 | 63 | #include "emu.h" |
| 11 | 64 | #include "ti99cart.h" |
| 12 | 65 | #include "cartslot.h" |
| 13 | | #include "machine/ti99_4x.h" |
| 14 | 66 | #include "multcart.h" |
| 15 | 67 | |
| 16 | 68 | typedef int assmfct(running_device *); |
| r9486 | r9487 | |
| 3149 | 3201 | |
| 3150 | 3202 | /* |
| 3151 | 3203 | Writes to the GRAM space of the GRAM Kracker. |
| 3204 | FIXME: The real GK seems to not wrap at the GROM boundary (at least for |
| 3205 | writing). Also check for reading. |
| 3152 | 3206 | */ |
| 3153 | 3207 | static void cartridge_gram_kracker_writeg(running_device *cartsys, UINT8 data) |
| 3154 | 3208 | { |