6.8 KiB
IBM PC/XT for MiSTer FPGA
PCXT port for MiSTer by @spark2k06.
Discussion and evolution of the core in the following misterfpga forum section:
https://misterfpga.org/viewforum.php?f=40
Description
The purpose of this core is to implement a PCXT as reliable as possible. For this purpose, the MCL86 core from @MicroCoreLabs and KFPC-XT from @kitune-san are used.
The Graphics Gremlin project from TubeTimeUS (@schlae) has also been integrated in this first stage.
JTOPL by Jose Tejada (@jotego) was integrated for AdLib sound.
Key features
- 8088 CPU with these speed settings: 4.77 MHz, 7.16 MHz, 9.54 MHz cycle accurate, and PC/AT 286 at 3.5MHz equivalent (max. speed)
- Support for IBM PCXT 5160 and clones (CGA graphics)
- Main memory 640Kb + 384Kb UMB memory
- Simulated Composite Video (CGA)
- Simultaneous video Hercules Graphics Card, F11 -> Swap Video Output with CGA
- Enable/Disable of CGA and Hercules I/O ports
- 1st Graphics Card selection from System & BIOS
- EMS memory up to 2Mb
- XTIDE support
- Audio: Adlib, C/MS & speaker
- Joystick support
- Mouse support into COM1 serial port, this works like any Microsoft mouse... you just need a driver to configure it, like CTMOUSE 1.9 (available into hdd folder)
- 2nd SD card support
Build configuration (config.tcl)
The default configuration focuses on broad PC/XT compatibility:
- System/ROM set to PCXT
- CGA + HGC enabled for widest video support
- OPL2 enabled for common DOS FM audio
- CMS enabled
- EMS + A000 UMB enabled for expanded memory
- Tandy-specific video/audio/keyboard by default
This default maximizes software compatibility while keeping the feature set coherent for a PC/XT target. You can edit config.tcl to enable or disable any macro and rebuild for a different profile.
Resource profile
Video options dominate resource usage. CGA uses 282/553 RAM blocks and HGC/MDA uses 270/553, so the default PCXT profile (CGA+HGC) is heavier than either single video build. Enabling all features reaches 553/553. The device budget is 553 RAM blocks and 5,662,720 block memory bits.
Columns are separate builds: Base (all features off), single-feature builds, CGA+TandyVideo (CGA + Tandy video, included for comparison), and All (everything enabled). Values are from recent synthesis runs and can be regenerated by rebuilding with different config.tcl settings.
| Resource | Max | Base | CGA | CGA+TandyVideo | HGC/MDA | TandyAudio | TandyKBD | OPL2 | CMS | EMS | A000_UMB | All |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ALMs | 110,000 | 12,551 | 14,229 | 14,442 | 13,546 | 12,802 | 12,549 | 13,266 | 13,505 | 12,599 | 12,648 | 17,605 |
| Registers | ~220,000 | 17,861 | 19,755 | 20,081 | 19,680 | 17,974 | 17,883 | 18,509 | 18,815 | 17,776 | 17,739 | 24,311 |
| Block memory bits | 5,662,720 | 945,035 | 2,124,705 | 3,042,209 | 2,026,404 | 945,035 | 945,035 | 952,077 | 945,035 | 945,035 | 945,035 | 4,313,183 |
| RAM blocks (M10K) | 553 | 138 | 282 | 394 | 270 | 138 | 138 | 147 | 138 | 138 | 138 | 553 |
| DSP blocks | 112 | 33 | 35 | 35 | 33 | 33 | 33 | 34 | 37 | 33 | 33 | 40 |
Default configuration (current config.tcl and output_files/PCXT.fit.summary) resource usage, shown as percent of the Max column above:
| Resource | Used | % of Max |
|---|---|---|
| ALMs | 17,111 | 15.6% |
| Registers | 23,913 | 10.9% |
| Block memory bits | 3,397,414 | 60.0% |
| RAM blocks (M10K) | 449 | 81.2% |
| DSP blocks | 40 | 35.7% |
Quick Start
- Copy the contents of
games/PCXTto your MiSTer SD Card and uncompresshd_image.zip. It contains a FreeDOS image ( http://www.freedos.org/ ) - Select the core from Computers/PCXT.
- Press WinKey + F12 on your keyboard.
- Model: IBM PCXT.
- CPU Speed: PC/AT 3.5MHz (Max speed)
- FDD & HDD -> HDD Image: FreeDOS_HD.img
- BIOS -> PCXT BIOS: pcxt_micro8088.rom
- Choose Reset & apply settings.
ROM Instructions
ROMs should be provided initially from the BIOS section of the OSD menu. The core has a single BIOS slot; on subsequent boots it is not necessary to provide them unless you want to use others. Original and copyrighted ROMs can be generated on the fly using the python scripts available in the SW folder of this repository:
make_rom_with_ibm5160.py: A valid ROM is created for the PCXT core (pcxt.rom) based on the original IBM 5160 ROM, requires the XTIDE BIOS at address EC00h to work with HD images.make_rom_with_jukost.py: A valid ROM is created for the PCXT core (pcxt.rom) based on the original Juko ST ROM, and with the XTIDE BIOS embedded at address F000h.
From the same BIOS section of the OSD it is possible to specify an XTIDE ROM of up to 16Kb to work at address EC00h. It is also provided in this repository.
Other Open Source ROMs are available in the same folder:
pcxt_pcxt31.rom: This ROM already has the XTIDE BIOS embedded at address F000h. (Source Code)pcxt_micro8088.rom: This ROM already has the XTIDE BIOS embedded at address F000h. (Source Code)ide_xtl.rom: This ROM corresponds to the XTIDE BIOS, it must be maintained for some scripts to work, it can also be upgraded to a newer version. (Source Code)
Note: Not all ROMs work with MDA video: (IBM5160, Yuko ST and pcxt31 works)
Other BIOSes
Mounting the FDD image
The floppy disk image size must be compatible with the BIOS, for example:
- On IBM 5160 only 360Kb images work well.
- On Micro8088 only 720Kb and 1.44Mb images work properly.
- Other BIOS may not be compatible, such as OpenXT by Ja'akov Miles and Jon Petroski.
It is possible to use images smaller than the size supported by the BIOS, but only pre-formatted images, as it will not be possible to format them from MS-Dos.
Developers
Any contribution and pull request, please carry it out on the prerelease branch. Periodically they will be reviewed, moved and merged into the main branch, together with the corresponding release.
Thank you!
