Tandy 1000 port for MiSTer by @spark2k06.
Discussion and evolution of the core in the following misterfpga forum section:
https://misterfpga.org/viewforum.php?f=40
The purpose of this core is to implement a Tandy 1000 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.
JT89 by Jose Tejada (@jotego) was integrated for Tandy sound.
- 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 Tandy 1000
- Tandy graphics with 128Kb of shared RAM + CGA graphics
- Main memory 640Kb + A000 UMB (enabled by default)
- EMS memory up to 2Mb (enabled by default)
- Optional Hercules/MDA video (configurable)
- Simulated Composite Video, F11 -> Swap Video Output with RGB
- XTIDE support
- Audio: Tandy, AdLib (OPL2), CMS, 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
The default configuration enables a feature-rich Tandy 1000 profile:
- System/ROM set to Tandy
- Tandy video, audio, and keyboard enabled
- CGA enabled as the baseline video path
- OPL2, CMS, EMS, and A000 UMB enabled by default
- HGC/MDA disabled by default (enable it if you need Hercules/MDA)
This default favors optional expansions even if they are not stock on a Tandy 1000, so they are ready for users without a rebuild. You can edit config.tcl to enable or disable any macro and rebuild for a different profile.
Video options dominate resource usage. With CGA+TandyVideo enabled the core already uses 394/553 RAM blocks; enabling all features (including HGC/MDA) reaches 553/553. The current default enables most expansions, so expect usage closer to the upper range. 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), and All (everything enabled, including HGC/MDA). 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/Tandy1000.fit.summary) resource usage, shown as percent of the Max column above:
| Resource | Used | % of Max |
|---|---|---|
| ALMs | 16,210 | 14.7% |
| Registers | 22,091 | 10.0% |
| Block memory bits | 3,049,251 | 53.8% |
| RAM blocks (M10K) | 403 | 72.9% |
| DSP blocks | 40 | 35.7% |
- Copy the contents of
games/Tandy1000to your MiSTer SD Card and uncompresshd_image.zip. It contains a FreeDOS image ( http://www.freedos.org/ ) - Select the core from Computers/Tandy1000.
- Press WinKey + F12 on your keyboard.
- CPU Speed: PC/AT 3.5MHz (Max speed)
- FDD & HDD -> HDD Image: FreeDOS_HD.img
- BIOS -> Tandy BIOS: tandy.rom
- Choose Reset & apply settings.
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_tandy.py: A valid ROM is created for the Tandy core (tandy.rom) based on the original Tandy 1000 ROM, requires the XTIDE BIOS at address EC00h to work with HD images.
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:
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)
The floppy disk image size must be compatible with the BIOS, for example:
- On Tandy 1000 only 360Kb images work well.
- 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.
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!
