diff options
Diffstat (limited to 'src/mame/drivers/amstr_pc.cpp')
-rw-r--r-- | src/mame/drivers/amstr_pc.cpp | 181 |
1 files changed, 173 insertions, 8 deletions
diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp index ab656d0a514..5052f8428c8 100644 --- a/src/mame/drivers/amstr_pc.cpp +++ b/src/mame/drivers/amstr_pc.cpp @@ -2,7 +2,7 @@ // copyright-holders:Wilbert Pol /*************************************************************************** - drivers/amstr_pc.c + drivers/amstr_pc.cpp Driver file for Amstrad PC1512 and related machines. @@ -24,6 +24,165 @@ Amstrad PC1640 More information can be found at http://www.seasip.info/AmstradXT/1640tech/index.html +*************************************************************************** + +Amstrad PPC512/PPC640, Amstrad 1987 +Hardware info by Guru +----------------------------------- + +The Amstrad PPC512/PPC640 is an XT-class portable PC with a built in +mono 9" LCD screen supporting CGA and MDA. + +The specification includes: +- NEC V30 (8086-compatible) 16-bit CPU at 8MHz (Sony CXQ70116P-8) +- For PPC640, 640k RAM & 64k video memory + For PPC512, 512k RAM & 64k video memory. Main RAM can be expanded to 640k + by inserting the correct type of DRAMs into the 6 unpopulated locations on the motherboard +- Integrated display adapter compatible with CGA and MDA +- Built in mono 640 x 200 pixel 9" LCD screen, tiltable with contrast adjustment +- 25 pin parallel printer port +- 25 pin serial port +- Internal 2400bps modem (PPC640 only, via optional plug-in PCB) +- Enhanced AT-type keyboard with 101 or 102 keys +- Single or twin 720k 3 1/2" floppy drive +- MSDOS 3.3 (bundled with the unit) +- Speaker with volume control +- Battery-backed real time clock +- Socket for 8087 Math Co-processor +- Socket for external expansion box to accept IBM-compatible expansion cards and hard disk +- Compartment for 10x alkaline 'C' cells for up to 8 hours of use + + +CPU PCB +------- + +MC0051D +Z70850 +|-------------------------------------------------------------------| +| VIDEO PARALLEL SERIAL EXP-B EXP-A | +| LK2 1489 | +|DIPSW(6) LK3 28.63636MHz 24MHz | +| LK1 6845R |------| CX112 | +| 1.8432MHz | 40104| CX902| +| INS82C50 |------| |-------| | +| |40039 | | +| 1489 1488 | | | +| LC3664 |------| | | | +| 6MHz LC3664 |T4750 | |-------| CX901| +| 40112 LCD-CONN |------| | +|KEYB1 KEYB2 40109.IC159 | +| KEYB3 LA4140 LK6 LK7 8087 | +| LED CONT SPEAKER VOLUME CY903 V30 | +|-------------------------------------------------------------------| +Notes: + VIDEO - 9 pin D-sub video port + PARALLEL - 25 pin D-sub parallel port + SERIAL - 25 pin D-sub serial port + EXP-B - Expansion port B + EXP-A - Expansion port A + DIPSW - 6 position DIP switch (up is off, down is on. * = Default) + SW1: Display Use + ON - Internal LCD * + OFF - External monitor + SW2: Video Emulation Mode + ON - CGA * + OFF - MDA + SW3: Video Adapter Enable + ON - Use internal video adapter * + OFF - Use external video adapter in external expansion box + SW4,5: Initial Video Mode + OFF, OFF - External video card + OFF, ON - CGA 40 column + ON , OFF - CGA 80 column * + ON , ON - MDA 80 column + SW6 - Not Used + 1488 - MC1488 Quad Line EIA232 Driver + 1489 - MC1489 Quad Line EIA232 Receiver + INS82C50 - 82C50 UART marked as Amstrad 40049 custom chip. Clock input 1.8432MHz + CX112 - Jumper to configure 40039 gate array to address either 512k or 640k RAM (sometimes marked LK5) + 6845R - UMC UM6845R CRT Controller. Clock input on pin 21 unknown (comes from the 40104 custom chip) + 40104 - VDU/LCD custom gate array LCD controller + 40039 - Bus controller custom gate array marked as Amstrad 40039 custom chip. Clock input 24.000MHz. This chip generates the 8MHz for the CPU. + T4750 - DMA/Programmable Interrupt Controller/Programmable Timer custom chip + 40112 - Keyboard controller (likely i8049/i8051) marked as Amstrad 40012 custom chip. Clock input 6.000MHz + LCD-CONN - Multi pin connector for LCD screen + KEYB1 - 5 pin connector for keyboard caps lock, scroll lock and num lock keys, plus VCC and GND + KEYB2 - Multi pin connector for keyboard matrix + KEYB3 - Multi pin connector for keyboard matrix + CX901/902 - Connectors joining to optional modem PCB + LED - Connector for power-on LEDs + CONT - Connector for LCD screen contrast adjustment + LA4140 - Sanyo LA4140 0.5W audio power amplifier IC + SPEAKER - Connector for PC speaker + VOLUME - Connector for audio volume knob + LC3664 - Sanyo LC3664 8kx8-bit Static RAM + 40109.IC159 - 8kx8-bit character ROM. Compatible with 2764 EPROM + Font selection is set with LK6 & LK7 + CY903 - Multi pin connector for connection to memory/power PCB + 8087 - Socket for i8087-2 Numeric Data Processor (math coprocessor). Clock input 8.000MHz + V30 - NEC V30 CPU (Sony CXQ70116P-8). Clock input 8.000MHz + LK1/LK2/LK3 - Jumpers to set language selection (off = open, on = short) + LK1 LK2 LK3 + OFF OFF OFF English + OFF OFF ON German + OFF ON OFF French + OFF ON ON Spanish + ON OFF OFF Danish + ON OFF ON Swedish + ON ON OFF Italian + ON ON ON Diagnostic Mode + LK6/LK7 - Jumpers to set font selection in ROM (off = open, on = short) + LK6 LK7 + OFF OFF Normal : Codepage 437 + OFF ON Norwegian : Codepage 865 + ON OFF Portugese : Codepage 860 + ON ON Greek : Codepage unknown but will be 869 or 851 or 737 + + +MEMORY / POWER PCB +------------------ + +MC0052D +Z70851 +|----------------------------------------------------------------| +| NE556 KBSW BATSW POWER | +| 41256 41256 X 41256 41256 | +| | +| 41256 41256 X 41256 41256 | +| | +|FD UM8272A 41256 41256 X 41256 41256 | +| | +| 16MHz 41256 41256 X 41256 41256 | +| SED9420 | +| LK4 41256Y | +|---------------| |-------| | + | |40040 | 40108.IC129 Y | + | | | | + | | | 40107.IC132 41256Y | + | 32.768kHz |-------| | + | MC146818 Y | + | FDDLED CX903 | + |------------------------------------------------| +Notes: + FD - 34 pin floppy drive cable + FDDLED - Connector for floppy drive activity LED for drives A: and B: + POWER - Connector for mains power input + SED9420 - EPSON SED9420 data separator for FDD. Clock input 16.000MHz + UM8272A - UMC UM8272A floppy drive controller (pin compatible with uPD765) + 41256 - Samsung KM41256AP-15 256kx1-bit DRAM + 41256Y - Samsung KM41256AP-15 256kx1-bit DRAM used as parity RAM + X - Unpopulated location for 64kx4-bit DRAM (additional 128k expansion to give 640kb main RAM for PPC512) + Y - Unpopulated location for 256kx1-bit DRAM (additional parity RAM to support the additional 128k RAM) + LK4 - Jumper to set physical main RAM present on the PCB to either 512k or 640k + 40108.IC129 - BIOS ROM. Compatible with 2764 EPROM + 40107.IC132 - BIOS ROM. Compatible with 2764 EPROM + CX903 - Multi pin connector for connection to CPU PCB. The connector is located on the solder side of this PCB. + 40040 - Memory controller gate array marked as Amstrad 40040 custom chip + NE556 - NE556 Dual Timer + MC146818 - Motorola MC146818 Real Time Clock + KBSW - Connector for keyboard open/close detect switch + BATSW - Connector for battery/mains power detect switch + ***************************************************************************/ #include "emu.h" @@ -41,6 +200,9 @@ More information can be found at http://www.seasip.info/AmstradXT/1640tech/index #include "machine/pc_lpt.h" #include "machine/ram.h" + +namespace { + class amstrad_pc_state : public driver_device { public: @@ -79,10 +241,10 @@ private: uint8_t pc200_port378_r(offs_t offset); uint8_t pc200_port278_r(offs_t offset); - uint8_t pc1640_port378_r(offs_t offset); - uint8_t pc1640_port3d0_r(offs_t offset); - uint8_t pc1640_port4278_r(offs_t offset); - uint8_t pc1640_port278_r(offs_t offset); + [[maybe_unused]] uint8_t pc1640_port378_r(offs_t offset); + [[maybe_unused]] uint8_t pc1640_port3d0_r(offs_t offset); + [[maybe_unused]] uint8_t pc1640_port4278_r(offs_t offset); + [[maybe_unused]] uint8_t pc1640_port278_r(offs_t offset); struct { uint8_t x,y; //byte clipping needed @@ -404,7 +566,7 @@ void amstrad_pc_state::pc1640_mouse_y_w(uint8_t data) m_mouse.y = data + ioport("pc_mouse_y")->read(); } -static INPUT_PORTS_START( pc200 ) +static INPUT_PORTS_START( pc200 ) // TODO: PPC512/PPC640 DSW differ, see readme at the top of the file PORT_START("DSW0") /* IN1 */ PORT_DIPNAME( 0x07, 0x07, "Name/Language") PORT_DIPSETTING( 0x00, "English/less checks" ) @@ -619,8 +781,8 @@ ROM_START( ppc512 ) // ROM_REGION(0x100000,"bios", 0) ROM_REGION16_LE(0x10000,"bios", 0) // special bios at 0xe0000 !? - ROM_LOAD16_BYTE("40107.v1", 0xc000, 0x2000, CRC(4e37e769) SHA1(88be3d3375ec3b0a7041dbcea225b197e50d4bfe)) // v1.9 - ROM_LOAD16_BYTE("40108.v1", 0xc001, 0x2000, CRC(4f0302d9) SHA1(e4d69ca98c3b98f3705a2902b16746360043f039)) // v1.9 + ROM_LOAD16_BYTE("40107_v1.ic132", 0xc000, 0x2000, CRC(4e37e769) SHA1(88be3d3375ec3b0a7041dbcea225b197e50d4bfe)) // v1.9 + ROM_LOAD16_BYTE("40108_v1.ic129", 0xc001, 0x2000, CRC(4f0302d9) SHA1(e4d69ca98c3b98f3705a2902b16746360043f039)) // v1.9 // also mapped to f0000, f4000, f8000 ROM_REGION( 0x800, "keyboard", 0 ) // PPC512 / PPC640 / PC200 102-key keyboard ROM_LOAD( "40112.ic801", 0x000, 0x800, CRC(842a954c) SHA1(93ca6badf20e0215025fe109959eddead8c52f38) ) @@ -663,6 +825,9 @@ ROM_START( pc3086 ) ROM_LOAD( "40178.ic801", 0x000, 0x800, CRC(f72f1c2e) SHA1(34897e78b3d10f96b36d81778e97c4a9a1b8618b) ) ROM_END +} // Anonymous namespace + + /*************************************************************************** Game driver(s) |