• Please review our updated Terms and Rules here

XTMax - 8-bit ISA memory card using a Teensy 4.1

By request on the VOGONS forum, I've been looking with @MicroCoreLabs at adding support for 0-wait-state Upper Memory Blocks. I didn't know much about it, but I think we have it working.

Here's an example reserving 156KB of no-wait-state UMBs on my PS/2:

1740966896717.png

This is all configured via CONFIG.SYS:

Code:
DEVICE=A:\XTUMBS.SYS A000-B800 C000-CE00 CF00-D000

This creates 3 UMB regions, totaling 156KB of UMBs. Explaining the layout:
- A0000-B7FFF is UMB (96KB)
- (B8000-BFFFF is VRAM)
- C0000-CDFFF is UMB (56KB)
- (CE000-CEFFF is XTMax BIOS ROM)
- CF000-CFFFF is UMB (4KB)
- (D0000-DFFFF is the page frames for EMS)
- (E0000-FFFFF is PS/2 BIOS (yes, it's a large BIOS))


The XTMax has a total capable UMB capacity of 320KB, all at 0-wait state. If you don't have BIOS at E0000 like me, you could add another 64KB there. If you don't use VGA, you can also add another 32KB. If you don't want to use XTMax' SD Card for booting, you can disable (or relocate) the BIOS ROM. If you don't want EMS, you can reclaim another 64KB...

We use a customized version of the USE!UMBS driver that was posted on this forum, and that dynamically toggles RAM on the XTMax to achieve the desired configuration.

This code isn't merged yet and is undergoing more testing.
 
I can confirm that the XTMax support for UMB works great on an IBM XT. I have a VGA card installed and I was able to configure two UMB blocks in the 8088's remaining free address space.

So, using the XTMax, my XT is "Maxed" out at:

- 640 KB of zero wait-state conventional RAM. (which supports DMA and can coexist with a physical floppy and spinning hard drive)
- 16 MB of Expanded RAM
- 80 KB of zero wait-state UMB RAM bringing total RAM to 720 KB. (XTMax supports up to 320 KB of UMB)
- And, of course, a bootable MicroSD


Here is the memory map as reported by CheckIt:

1740973879313.png
 
Last edited:
I was able to configure two UMB blocks in the 8088's remaining free address space.

If the disk ROM at CE00 is provided by your card would it not make more sense to drop that to CA000, punt the EMS page frame to E000, and make your upper memory contiguous? Tends to make life easier when loading stuff high.
 
If the disk ROM at CE00 is provided by your card would it not make more sense to drop that to CA000, punt the EMS page frame to E000, and make your upper memory contiguous? Tends to make life easier when loading stuff high.

I noted that when trying to max out :)

Our ROM is super easy to relocate (1 value on the Teensy sketch). Also, the EMS is easily relocated as well (command line arguments in CONFIG.SYS, then the Teensy can automatically adapt). I defaulted it to D0000 because E0000 conflicts on my PS/2.

But I don't know what the common peripherals are on XT. We already got lucky that we didn't collide with @MicroCoreLabs's HDC at C8000 :)
Not even sure about VGA BIOS either...

So we optimized to make it really easy to change the BootROM and EMS, but risks of collisions are still real!

Lmk if you have recommendations on a "database". I found this for IO ports for example: https://github.com/Nils-TUD/Escape/blob/master/doc/x86.ioports.txt
That covers a lot of expansion cards. Need something like this for ROMs!!
 
Nice! I was just thinking that we need to start recording what systems have been tested somewhere.
 
It worked on the first boot. Thanks to Ted and team for this neat board.
@mbucchia deserves the credit on most of this. I just wired up a Teensy 4.1 to the ISA bus. He is the one who adapted/improved the drivers for MicroSD, EMS, and UMB memory.
 
Last edited:
This is very easy to make. If you place an order with JLCPCB, they’ll deliver it to your door in a form where all you have to do is assemble the Teensy 4.1 board.
 
Im interestee in the product. I have a couple queations as the github doesnt seem to have documentation.

1.) Can the xtmax utilize the full 16mb of ram if the teensy 4.1 has both 8mb ram chips installed?
2.) Does the xtmax utilize the ethernet or usb headers available.as optiona for the teensy 4.1?
3.)What is the purpose of the header pins at the bottom of the card?
 
Im interestee in the product. I have a couple queations as the github doesnt seem to have documentation.

1.) Can the xtmax utilize the full 16mb of ram if the teensy 4.1 has both 8mb ram chips installed?
2.) Does the xtmax utilize the ethernet or usb headers available.as optiona for the teensy 4.1?
3.)What is the purpose of the header pins at the bottom of the card?
Yes, the full 16MB is available as EMS. I have demo’ed this.

The XTMax could support Ethernet by using the Teensy resources and headers.

The headers probe the ISA bus and don’t need to be populated for normal use.
 
Yes, the full 16MB is available as EMS. I have demo’ed this.

The XTMax could support Ethernet by using the Teensy resources and headers.

The headers probe the ISA bus and don’t need to be populated for normal use.
Thank you. Are you the only one working on this project right now or has there been recent collaboration with other people? Just curious.
 
I’m left scratching my head here about what’s being proposed. Are you suggesting using some novel system to magically insert a mass storage driver hook directly into memory without using the ROM BIOS extension mechanism? (I mean, I could certainly imagine ways to do that, although it would be a *lot* easier to pull off if you were replacing the very bottom of memory where the software interrupt table lives, which you can’t do without cutting pins or traces in a 5150, which seems more disruptive than swapping the ROM chips.) Or are you just talking about adding mass storage to a 5150 that you have to boot a floppy to use? Because, well, that latter thing already existed. There were multiple third party hard disks for the 5150 before the 5160 came out, there’s nothing novel about the idea.

(Granted, hard disks weren’t super useful with MS-DOS 1.x because of that pesky lack subdirectories thing, but that didn’t stop hard drives from ending up on CP/M machines either.)
I went back and read this entire posting because it really sparked my interest. It seems there was a lot of talk about how it could work in an early 5150 with the original bios rom which doesnt allow things like XTIDE to work. Was this all just conjecture or did the conversation fall by the wayside? It seems to have been forgotten altogether in later posts for this topic.
 
Yes, the XTMax was used in an early 5150 to increase the RAM to 640 KB and to provide MicroSD card access. (Not bootable but accessible via the driver). I thought I uploaded some pictures of this working in my early 5150 along the way.
 
Yes, the XTMax was used in an early 5150 to increase the RAM to 640 KB and to provide MicroSD card access. (Not bootable but accessible via the driver). I thought I uploaded some pictures of this working in my early 5150 along the way.
Maybe I misread the conversation. I thought the talk was to get the code on the XTMax to boot the SD card hard drive on very early 5150's which had bios' not capable of booting option roms.
 
Back
Top