• Please review our updated Terms and Rules here

Tandy TL/2 and HIMEM.SYS

mojorific

Experienced Member
Joined
Nov 1, 2013
Messages
254
Location
Ontario, Canada
I think my TL/2 is unable to run himem.sys.

Is this a limitation of the TL/2 architecture? I've tried every flag for machine type with "himem.sys /cpuclock:eek:n /machine:#" with no luck.

I recently upgraded it to 768k of ram, but I believe that it just ends up getting used for video ram (freeing up more conventional ram below 640k).

Is the TL/2 incapable of using more than 640k of conventional ram? What is the use of the 2MB EMS card? Will Windows see it with the LTEMM.exe?

Here is a quote from the TVDog webpage:

II.A.4. How do I add additional expanded memory to my system?

On older 1000's (i.e., pre-SL) with standard slots, four EMS cards will work: the Micro Mainframe 5150T, the Intel Matched Memory Classic, the Intel Above Board ISA, and the InvisiSOFT Invisible EMS board. The latter three are hardware LIM 4 and can be used for upper memory blocks with DOS 5 or 6 (possibly requiring Qram or equivalent); the 5150T does not supply upper memory blocks. Upper memory blocks may not be available on systems with DOS in ROM, even if DOS is upgraded, because the memory segment (E0000h) that would be used as an upper memory block by the EMS card is already occupied by the ROM drive (whether the ROM drive is accessed or not).
A few multifunction cards were made for the original 1000, A, and HD that had expanded RAM as an option. The PBJ XRAM card was another EMS card that would work in those systems.

The EX and HX will need a special EMS card because of their nonstandard slots. (With those systems, conventional RAM and EMS may be added on the same card.)

Lloyd W. Kuhn writes:

Some years ago I put an Intel expanded memory board in my TL, but I had a heck of a hard time getting the Intel software to configure the board to the computer. I called Intel and although they they tried, they couldn't help me. Because the TL has an 80286 processor, the software tried to make the computer out as an AT clone. But when the software sensed the 8 bit expansion slots, it was sure the computer was an XT clone. Therefore I couldn't configure it as an AT nor as an XT. However out of frustration, I tried configuring the TL as an IBM model 30. That worked and the board has been working ever since.
The SL's, TL's, RL's, and RLX's can use any 8-bit expanded memory card that is 10" or less in length. The RSX's do not need expanded memory; use extended.
 
There is no point to himem.sys when your Tandy cannot have any memory mapped above 1MB. It is incapable of using more than 640KB of RAM except as provided by an expanded memory card. Expanded memory uses a window in the upper memory area to access additional memory.

The only benefit to expanded memory is by finding programs that can use it. Some EMS drivers may allow you to load other drivers in it. Windows 2.0-3.1 may.
 
Windows will see and use expanded memory though how depends on whether the cards supports EMS 4. With EMS 4 card, code segments will be shoved into EMS plus could swap whole applications and also have space that programs could store their own data. If the card only supports EMS 3.2, it will only have the segment to be used for data. Windows 3 means running in real mode. Program Manager and all the icons in color heavily eat into memory available. Few Windows 3 apps would use EMS when running in real mode. However, Windows 2 versions of applications like Pagemaker and Excel would use EMS for data. If you choose to try Windows 3, run Windows 2 versions of the applications if you can find them. Or for better performance, use Windows 2.

Other programs that use EMS include:
DesqView for faster task switching
GeoWorks
Lotus 1-2-3 (The L part of LIM EMS)
various disk caches (probably the best use)
there were a few games like Wing Commander that used EMS but most of those are beyond what a TL/2 can run
 
What is it you want to accomplish by running himem.sys? Does that machine have a 286 in it? There's more than one way to skin a cat. :)

The TL/2 does have a 286 in it but the memory addressing is restricted to the 1MB of the 8086. In many respects, the TL/2 works more like an oddball XT with an accelerator card than the more typical 286 systems.
 
Yeah, it appears that any EMS memory (such as the lo-tech 2mb EMS card) is limited to programs which support the extra ram. I tried Desqview, and it does see the extra memory, as well as Lotus 1-2-3.

Does anyone know if there is a special version of Lotus 1-2-3 for the Tandy? Graphing doesn't appear to work with the Tandy 16 color format.
 
Yeah, it appears that any EMS memory (such as the lo-tech 2mb EMS card) is limited to programs which support the extra ram. I tried Desqview, and it does see the extra memory, as well as Lotus 1-2-3.

Does anyone know if there is a special version of Lotus 1-2-3 for the Tandy? Graphing doesn't appear to work with the Tandy 16 color format.

My version of 1-2-3 and dBase III both run okay on my 1000SX. However, its always been in mono. The version of Lotus that I have was intended to be run on a machine with two floppies. With a little tinkering it runs off the HD with no problems.
 
There was Lotus 1-2-3 for Deskmate - I might even have a copy :)

Also bear in mind that the TL has 8-bit slots only, so EMS will run very slowly compared to 16-bit 8MHz system RAM. Unfortunately the machine doesn't even provide the ZWS line (probably because Tandy had already purposed ISA B8 for analogue audio feed) so those slots run at 700ns (about 5MHz).
 
I wasn't entirely sure that I'd find EMS all that useful in my TL/2, but, slowness aside, I consider it pretty-much essential now.

One immediate use is freeing-up conventional memory - With all drivers loaded, including those for the CD-ROM support, I have 572K available for applications.

To paraphrase a statement I made a few years ago, and as far as non-productivity application support goes, a large number of real-mode games, from 1990 onward, make use of (and in quite a few cases, require) EMS for graphics/sound caching and support. Sierra's SCI1+ games, MicroProse's adventures, and quite a few Lucasarts titles fall into this category. Because of the limited CPU, EMS can be particularly useful on a 286, where a number of these games might be unplayable otherwise.
 
The only member of the Tandy 1000 family that is a true AT-class machine (with an AT keyboard port, IDE-AT hard drive interface, support for extended memory, a 16-bit ISA bus, cascaded IRQ, and high DMA) is the 386SX-based 1000RSX.

The 1000TX, 1000TL, 1000TL/2, 1000TL/3, and 1000RLX all have a 286 processor, but are XT-class machines, with an XT keyboard port (or a proprietary Tandy keyboard interface, in the case of the 1000TX), no extended memory, 8-bit ISA bus, only low IRQs, only low DMAs, and an IDE-XT "SmartDrive" interface in the TL/2, TL/3 and RLX.
 
I wasn't entirely sure that I'd find EMS all that useful in my TL/2, but, slowness aside, I consider it pretty-much essential now.

One immediate use is freeing-up conventional memory - With all drivers loaded, including those for the CD-ROM support, I have 572K available for applications.

To paraphrase a statement I made a few years ago, and as far as non-productivity application support goes, a large number of real-mode games, from 1990 onward, make use of (and in quite a few cases, require) EMS for graphics/sound caching and support. Sierra's SCI1+ games, MicroProse's adventures, and quite a few Lucasarts titles fall into this category. Because of the limited CPU, EMS can be particularly useful on a 286, where a number of these games might be unplayable otherwise.

How did you free up conventional?
I was trying to do this with my TL/2 and an EMS board but never got anywhere.
 
How did you free up conventional?
I was trying to do this with my TL/2 and an EMS board but never got anywhere.

You can only free up conventional memory for applications that support EMS (they can load stuff to EMS instead of conventional memory). Interrupt handlers (drivers, TSRs) cannot reside in EMS since the handler might not be there when the interrupt is triggered.
 
How did you free up conventional?
I was trying to do this with my TL/2 and an EMS board but never got anywhere.
I'm using the combination of Quarterdeck's, "QRAM," which is leveraging EMS memory to provide UMBs, and PC DOS 2000, which allows for loading drivers and "DOS data" (buffers, etc.) into said UMBs. Because some smart person has yet to devise a way to reclaim use of the E000-EFFF range in a DOS-ROM-based Tandy, I only have 48K to work with, but, it's enough...

And, my apologies, it's 577K free conventional memory. :)

MEM output
Code:
Modules using memory below 1Mb:

  Name           Total       =   Conventional   +   Upper Memory
  --------  ----------------   ----------------   ----------------
  SYSTEM      56,144   (55K)     46,000   (45K)     10,144   (10K)
  REVTO486     1,520    (1K)      1,520    (1K)          0    (0K)
  MM          17,008   (17K)     17,008   (17K)          0    (0K)
  RTASPI10     7,168    (7K)          0    (0K)      7,168    (7K)
  KMECD       10,576   (10K)          0    (0K)     10,576   (10K)
  SETVER          80    (0K)          0    (0K)         80    (0K)
  COMMAND      4,800    (5K)          0    (0K)      4,800    (5K)
  SHCDX33E     6,336    (6K)          0    (0K)      6,336    (6K)
  CTMOUSE      3,328    (3K)          0    (0K)      3,328    (3K)
  FREE       596,016  (582K)    590,816  (577K)      5,200    (5K)

Memory summary:

  Type of Memory       Total    =     Used    +     Free
  ----------------  -----------   -----------   -----------
  Conventional          655,360        64,544       590,816
  Upper                  47,632        42,432         5,200
  Reserved              345,584       345,584             0
  Extended (XMS)              0             0             0
Press any key to continue...
  ----------------  -----------   -----------   -----------
  Total memory        1,048,576       452,560       596,016

  Total under 1Mb       702,992       106,976       596,016

  Total Expanded (EMS)                 16,777,216  (16,384K)
  Free Expanded (EMS)                  16,728,064  (16,336K)

  Largest executable program size         590,800     (577K)
  Largest free upper memory block           4,976       (5K)

CONFIG.SYS
Code:
DEVICE=C:\ET_DRVRS\REVTO486.SYS /CN /2
DOS=UMB
DOSDATA=UMB
BUFFERS=15
FILES=30
FCBS=1
LASTDRIVE=E

[menu]
menuitem=atpcd, AudioTrix w/EMS + CD-ROM
menuitem=tandy, Tandy DAC
menudefault=atpcd,5

[atpcd]
DEVICE=C:\RAMUTIL\MM.SYS /S=D000 /L=B000-B7FF /M=16384 /IO=218 /W=8 /X=C000-C5FF /X=CC00-CD7F /X=E000-EFFF /H=32 /Z
DEVICE=C:\QRAM\QRAM.SYS
SHELL=C:\DOS\COMMAND.COM C:\DOS /P /H
DEVICEHIGH=C:\RT1000\RTASPI10.SYS /ADD=CC00
DEVICEHIGH=C:\TSCSI\KMECD.SYS /D:SCSICD

[tandy]

[common]
DEVICEHIGH=C:\DOS\SETVER.EXE

AUTOEXEC.BAT
Code:
@ECHO OFF
PATH=C:\DOS;C:\QRAM;C:\TANDY;C:\TRXPRO
SET TEMP=C:\DOS

goto %config%

:atpcd
SET BLASTER=A220 I5 D1 T3
SET MEDIATRIX=C:\TRXPRO\
C:\DOS\SHCDX33E.COM /D:scsicd /Q+
C:\TANDY\MOSLO.COM /50 C:\TRXPRO\SETUPPRO -I
C:\TRXPRO\SETMPU /M2
C:\CTMOUSE\CTMOUSE.EXE
CALL C:\TANDY\SPEED.COM
goto end

:tandy
C:\TANDY\VSRES.COM
goto end

:end
 
Last edited:
I see that my configuration has stunned everyone to silence (or something)... ;)

Has anyone other than "sorphin" tested to see whether QRAM will work with James' board or not?
 
I was intending to come back with questions!

I'm guessing yours is a MightyMainframe card too? (MM.SYS?)
My 2Mb MightyMainframe EMS board shipped with LIM EMS 3.2 drivers, so I figured it wouldn't have the capability of doing shadowing/UMB type stuff even with the 4.0 driver (which QRAMs docs said it required).

Does the 4.0 driver allow for UMBs? or are you running 3.2? or do you have a newer version of the card?
Really curious. I'll be opening it up to fit the 41464 RAM upgrade this weekend, would be great if I could get some UMBs at the same time with the MM EMS board.
 
I'm using Acculogic's, "RAMpAT!-Plus" card, which advertises hardware compatibility with the LIM EMS 4.0 spec. The MM.SYS driver provided with the card is really just an Acculogic-customized version of a driver written by Quadtel. It seems that quite a few EMS cards use modified versions of this same driver.

I'm afraid I can't answer the question about whether a 4.0 compatibility driver will allow for using UMBs. I do have a Micro Mainframe EMS-5150 that, similar to your card, is only hardware compatible with LIM EMS 3.2, and for which a 4.0 driver is also readily available. You'll probably discover the answer before I do, but if not, and when I have time, I can check to see if QRAM is able to provide UMBs with this combination. If it does, I imagine other software-extension solutions ought to work similarly.
 
Thank you for sharing your config and autoexec Cloudschatze.

I'll have to look up the quarterdeck software for that, and also PC DOS 2000.

You wouldn't happen to have a link would you?
 
Update on my progress with the 2MB EMS board from lo-tech.

1) I downloaded PC DOS 7 from the vetusware site. Installing it was a pain, because my TL/2 only has 720kb drive support. I got around this by using a compact flash card on my 3000NL which has high density drives. Installed it, and then moved the compact flash over to my TL/2.

2) Downloaded Quarterdeck QRAM software. It requires a disk to install, which does not have to be high density. Copied to a disk, and then installed.
-----

I found that I can run the Lo-tec 2mb EMS card in one of two configurations using PC DOS 7. On the one side you can run the 2MB EMS board as your Upper Memory Area (with the QRAM flag FL=0 command). Just running QRAM causes it to error out and quit. The other option is to not use QRAM and just run the card as 2mb of EMS ram.

Here is my config/autoexec that worked well for my needs (you may need to modify settings if your EMS board is configured on a different address):

CONFIG.SYS
DEVICE=C:\UTILS\LTEMM\LTEMM.EXE /p:C000 /i:260 /n
BUFFERS=15
FILES=30
FCBS=1
LASTDRIVE=C

[menu]
menuitem=EMS, 2MB EMS
menuitem=UMA, EMS as Upper Memory Area

[EMS]
DEVICE=C:\PCDOS\SETVER.EXE
SHELL=C:\PCDOS\COMMAND.COM C:\PCDOS /P /H

[UMA]
DEVICE=C:\UTILS\QRAM\QRAM.SYS FL=0
DOS=UMB
DOSDATA=UMB
SHELL=C:\PCDOS\COMMAND.COM C:\PCDOS /P /H
DEVICEHIGH=C:\PCDOS\SETVER.EXE

AUTOEXEC
@echo off
path=c:\utils\qram;C:\PCDOS;C:\;C:\DOS;C:\MOUSE;C:\UTILS\NC;
SET TEMP=C:\PCDOS

goto %config%

:EMS
c:\mouse\ctmouse.exe /Y
c:\pcdos\doskey.com
goto end

:UMA
loadhigh c:\mouse\ctmouse.exe /Y
loadhigh c:\pcdos\doskey.com

:end
prompt $p$g
@echo on
set blaster=A220 I7 D1 T1

Results for EMS as Upper Memory Area:
Memory Type Total = Used + Free
---------------- -------- -------- --------
Conventional 640K 51K 589K
Upper 63K 22K 40K
Reserved 321K 321K 0K
Extended (XMS) 0K 0K 0K
---------------- -------- -------- --------
Total memory 1,024K 395K 629K

Total under 1Mb 703K 73K 629K

Largest executable program size 589K (603,024 bytes)
Largest free upper memory block 40K (41,088 bytes)


Results for 2MB EMS:
Memory Type Total = Used + Free
---------------- -------- -------- --------
Conventional 640K 73K 567K
Upper 0K 0K 0K
Reserved 0K 0K 0K
Extended (XMS) 0K 0K 0K
---------------- -------- -------- --------
Total memory 640K 73K 567K

Total under 1Mb 640K 73K 567K

Total Expanded (EMS) 2,048K (2,097,152 bytes)
Free Expanded (EMS) 2,048K (2,097,152 bytes)

Largest executable program size 566K (579,936 bytes)
Largest free upper memory block 0K (0 bytes)
 
Back
Top