• Please review our updated Terms and Rules here

Tandy 1000A - lo-tech 1MB board dip switch settings

alank2

Veteran Member
Joined
Aug 3, 2016
Messages
2,264
Location
USA
I'm going to build one of these and give it a try.

Does anyone have experience with setting the dip switch settings for a Tandy 1000A?

Right now I have 128K and the video takes the top 16K leaving 112K. I read in another thread that Tandy video uses the end of memory so if you expand it, it will use it from the end. If I expand it to 640K, then it would use the 16K at 624K-640K.

Q#1 - How does it deal with needing 32K video memory for the modes that need it?

Q#2 - Is DOS smart enough to recognize its need for this video at the end, or does the BIOS handle that?

Q#3 - Can the banks at 0xA000, 0xC000, 0xD000, or 0xE000 be enabled on the lo-tech? What happens if they are? Will it then use memory above 0xA000 for the video ram?
 
Right now I have 128K and the video takes the top 16K leaving 112K. I read in another thread that Tandy video uses the end of memory so if you expand it, it will use it from the end. If I expand it to 640K, then it would use the 16K at 624K-640K.

So a minor correction/clarification: The Tandy 1000 can only use the RAM on the motherboard for video memory. (It's basically "owned" by the video system and shares it with the CPU, not vice-versa.) How memory expansion works is there are registers in the video system that lets the 1000 *move* the built-in RAM; at power-on it maps a minimal amount into the Bxxxx page and starts fishing to see if there's expansion RAM installed starting at 0000h. It looks for RAM in 128k pages, up to four of them, and then drops the onboard memory at the end. So for a lo-tech RAM board you will want switches 1.1-1.8 all on to map RAM from 0-512k.

Q#1 - How does it deal with needing 32K video memory for the modes that need it?

When using a mode with 32k of VRAM it updates the BDOS data area in low RAM to change the soft top-of-memory mark.

Q#2 - Is DOS smart enough to recognize its need for this video at the end, or does the BIOS handle that?

DOS itself, at least contemporary pre-DOS-5 DOS, is fine, (DOS resides at the bottom of available memory, as do most drivers, and programs are loaded from the bottom starting at the first free location) but if you're running software that does stuff with the end of memory then there are incompatibilities you can trip over when the top of memory gets moved around or the stuff left there gets clobbered. A couple examples:

1: If you use DOS 5+ and something like USE!UMBS+DOSMAX to enable loading drivers high using a Tandy video mode will "break" the connection to the upper memory blocks. (This happens because DOS puts this "linked list" kind of structure at the end of conventional RAM that points to the upper memory area; it's weird. And that gets clobbered when you use Tandy graphics because DOS isn't smart enough to move it when the BIOS updates the top of conventional memory pointer) It doesn't (usually) cause a crash, the drivers loaded up there keep working, but DOS can't track that memory anymore or load anything else into it until you reboot.

2: Some disk controllers or other add-on BIOSes steal 1k of memory from the top to use for their purposes. This includes the XTIDE BIOS if you set it to use "Full Operating Mode". This breaks on a Tandy 1000.

Q#3 - Can the banks at 0xA000, 0xC000, 0xD000, or 0xE000 be enabled on the lo-tech? What happens if they are? Will it then use memory above 0xA000 for the video ram?

Based on my experiments with the Tandy 1000EX and HX, which are basically the same, the answer re: A000h is you can go ahead and put something there (It's an option to use it as the EMS window on my combo card for those machines) but you can't do the "704k" trick you can with a CGA PC to get it to show up as main memory because the memory for video will *always* be stolen from the 128k on the motherboard and in a plain 1000/A/EX/HX you are stuck using that RAM as part of main memory. That means you'll have at minimum, always, a 16k "hole" between the top of to contiguous conventional DOS memory and that page you put in the A region. So all it will be good for is loading drivers/whatever high with the apropros software.

0C-E000h are wide open to be used as upper memory blocks, so if you want to use DOS5 or higher go nuts. Because the Lo-Tech card is limited to 64k page granularity you'll probably need to leave one of those pages open for the option ROM if you intend to use a hard drive controller.

Other note is, obviously, if you use the Lo-Tech card you'll be missing a DMA controller. My opinion re: not having one is "could hardly care less", but it does mean you can't use some cards and a few programs that hit the floppy drive on a bare-metal level might not work. (Imagedisk)
 
Last edited:
Coming back to this, the lower 512K on the lo-tech ends up being the first 512K. Then the 128K motherboard memory fills it to 640K. The upper 512K SRAM on the lo-tech could have certain banks enabled as long as they do not conflict with any ROM in the area, but here is my question - what good does that do? I'm assuming there is no hi memory area that dos can use because it is an 8088, but DOS 6.22 which I typically use needs both himem/emm386 to manager upper memory blocks neither of which I think will run. Are there drivers for 8088's that allow any of them to be used as UMB?
 
There are several pieces of software out there that let you enable upper memory on an 8088; some of these even allow you to load the same bits of DOS that would go into the High Memory Area on a 286 or better into a UMB. The most common setup that works well on a "dumb" memory card like the Lotech card is a combination of "USE!UMBS.SYS" and "DOSMAX.EXE"; there are many threads on using this on the forums, here's one I started a couple years ago:

http://www.vcfed.org/forum/showthre...S-into-upper-memory-on-an-XT-class-Tandy-1000

And if you're interested here's my current PC-DOS 7/2000 config.sys on Github. (I have posted several helper drivers I came up with to facilitate some of the weirder things I've done with my Tandy 1000 EX/HXes.)

https://github.com/Astrowallaby/PaleozoicPC-stuff/blob/master/ems2umb/config.sys.example

It's pretty easy to get the DOS footprint down to a little over 9k, which means almost 615k free on a standard Tandy 1000. (With that proviso I mentioned that you might want to reboot after using software that uses Tandy video modes.)
 
Coming back to this, the lower 512K on the lo-tech ends up being the first 512K. Then the 128K motherboard memory fills it to 640K. The upper 512K SRAM on the lo-tech could have certain banks enabled as long as they do not conflict with any ROM in the area, but here is my question - what good does that do? I'm assuming there is no hi memory area that dos can use because it is an 8088, but DOS 6.22 which I typically use needs both himem/emm386 to manager upper memory blocks neither of which I think will run. Are there drivers for 8088's that allow any of them to be used as UMB?

Alan,

Eudi has pretty much laid it all out. Here's a link that can be very useful when comparing or outfitting the 1000, specifically your jumper settings. The real drawback with the 1000 is that you're locked in at 4.7MHz. Maybe somewhere along the line you might be able to find an SX motherboard that should drop right in.

http://www.thealmightyguru.com/Wiki/images/3/38/Tandy_1000_-_Manual_-_Notes_&_Jumpers_-_Volume_1.pdf

Tom
 
1: If you use DOS 5+ and something like USE!UMBS+DOSMAX to enable loading drivers high using a Tandy video mode will "break" the connection to the upper memory blocks. (This happens because DOS puts this "linked list" kind of structure at the end of conventional RAM that points to the upper memory area; it's weird. And that gets clobbered when you use Tandy graphics because DOS isn't smart enough to move it when the BIOS updates the top of conventional memory pointer) It doesn't (usually) cause a crash, the drivers loaded up there keep working, but DOS can't track that memory anymore or load anything else into it until you reboot.
Here's an idea. A TSR that hooks interrupt 10h and checks for calls to change the video mode to a Tandy-only mode, and if such a call is made, updates the DOS memory control block chain accordingly. Probably won't be worth the effort or the memory used by the TSR but it could be a fun project. :D

2: Some disk controllers or other add-on BIOSes steal 1k of memory from the top to use for their purposes. This includes the XTIDE BIOS if you set it to use "Full Operating Mode". This breaks on a Tandy 1000.
But it works if you change the "kiB to steal from RAM" menu option, right?
 
Here's an idea. A TSR that hooks interrupt 10h and checks for calls to change the video mode to a Tandy-only mode, and if such a call is made, updates the DOS memory control block chain accordingly. Probably won't be worth the effort or the memory used by the TSR but it could be a fun project. :D

There was a thread a while back where the subject of moving that magic linked structure around, and the takeaway from someone a lot smarter than I am when it comes to DOS programming was that the fix involves some seriously undocumented parts of DOS. But it almost certainly would be *possible*, yes, if someone can find the requisite documentation.

(There are some programs that manage to do something similar; for instance Quarterdeck's utility to use VGA memory as additional conventional memory seems to know how to move the structures appropriately when they bump the BIOS top of memory up to the 736k mark, and move it back when the utility is disabled.)

But it works if you change the "kiB to steal from RAM" menu option, right?

I assume it does (I've never tried it because I have no use for "full operating mode", it sounds like conflicts are pretty rare on non-IBM machines that don't have BASIC in ROM), but to really be 100% safe you'd need to throw away potentially up to 128k of RAM, which sounds excessive to me.

(The Tandy 1000 can use *all* 128k of its built-in RAM for multiple video pages. I don't know if there's any software that actually uses that much, but apparently there is at least some software that uses 64k. In theory the EX/HX can even use their full *256k* onboard RAM for up to 8 "tandy mode" pages.)
 
My parts from Mouser arrived finally so I soldered up the lo-tech 1mb empty pcb I got from texelec.

My Tandy 1000 finally says MEMORY SIZE = 640K!

I also enabled A000, C000, D000, and E000 on the lo-tech to add 256K into upper memory.

The use!umbs.sys I had did not say anything about parameters, but instead had a method to edit debug to indicate the included sections. Is it older perhaps?

I installed dosmax 2.1 and shellmax and it has 614K free (628592 bytes). Considering that it started at 624K because of the Tandy video that is pretty impressive!
 
I found the 2.2 USE!UMBS.SYS with parameters.

Also, I created a 255 cylinder, 2 head, 9 sector per track Gotek format that does not require biosptch.sys. MS-DOS 3.30 and 6.22 recognize it just fine. I tried 10 and 11 sectors per track, but that seems to break it (probably needs biosptch.sys)
 
Eudimorphodon - you mentioned the full operating mode issue with end of memory. I read something about a workaround where you can set a way for it to lower the spot to make room for the video memory. Or is it worth disabling full operating mode. Are there other HDD solutions that use CF/IDE DOM that don't have the 1K need?
 
Eudimorphodon - you mentioned the full operating mode issue with end of memory. I read something about a workaround where you can set a way for it to lower the spot to make room for the video memory. Or is it worth disabling full operating mode. Are there other HDD solutions that use CF/IDE DOM that don't have the 1K need?

If you actually need "full operating mode" then the fix is to change the "kb to steal from RAM" option in the configurator from "1" to (amount of memory you want to reserve for video memory pages + 1). As I mentioned to be *absolutely safe* you would need to set this to "129", leaving you with 511k of memory. Most commercial software will *probably* be okay if you set it to "65", which is still pretty expensive.

The question, of course, is do you actually need it? You do if you want to have more than two IDE controllers or you have an IBM machine that has BASIC in ROM and you want to be able to use IBM's native BASICA, but outside of that you'll probably be fine without it. The only non-IBM-BASIC software I've ever seen named as having a conflict with the XTIDE's use of the ROM BASIC data area is Borland Turbo Basic 1.1.

(For laughs I just tried a copy of it on my HX and, yep, seems to die when you try to load something, as detailed here. I actually have a VGA card in my HX so I suppose I could try flashing my BIOS to full operating mode without needing to reserve extra memory, but unless I'm dying to run Turbo BASIC I think I'll pass. Its successor, PowerBASIC 2.x, seems fine.)
 
Back
Top