• Please review our updated Terms and Rules here

System Halted No ROM BASIC *after* CONFIG.SYS Loads

aoresteen

Experienced Member
Joined
Jun 27, 2011
Messages
56
Location
Newnan, GA USA
Got my 386SX running and the CD-ROM drive issue sorted out. Now I'm trying to tweak the memory. Normally I'd use RAMBOOST but it hangs on launch. Doing it by hand. It has 16MB of RAM installed & the i387 NPU.

On boot *AFTER* the config.sys loads the computer crashes. The first line in the AUTOEXEC.BAT is PAUSE which I never see. I assume that the system crashes trying to load the AUTOEXEC.BAT or just before.


Here's my CONFIG.SYS:

REM CONFIG.SYS FOR 40 MHz 386SX Computer
REM A. ORESTEEN
REM 6 July 2013
REM For PC DOS 7 Rev 1

NUMLOCK=OFF
BREAK=ON
DOS=high,UMB
FILES=170
BUFFERS=30,0
FCBS=4,4
LASTDRIVE=Z
STACKS=9,256

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE

DEVICEHIGH=C:\dos\ANSI.SYS
DEVICEHIGH=C:\dos\SETVER.EXE
DEVICEHIGH=C:\mitsumi\mtmcdai.SYS /D:MTMIDE01
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:2048 /P
DEVICE=C:\UTIL\PAUSE.SYS

Everything loads fine from the CONFIG.SYS. PAUSE.SYS halts the CONFIG.SYS so I can see the screen and when I press enter I get the error:

SYSTEM HALTED NO ROM BASIC.

When I boot without using DOS HIGH & EMM386.exe all is well.

ISA cards that are installed are:

1. Floppy controller
2. IDE controller with LPT2 & COM ports 1 & 2
3. VGA card
4. MDA card with LPT1

My guess is that EMM386 is loading stuff into an area of memory that is not free.

Ideas?

Thanks!
 
Why are you even loading EMM386.EXE? I'll bet you don't have any need for it whatsoever. You should be able to do everything you want with Extended Memory. Expanded Memory is primarily for machines that can't access Extended Memory, e.g., PCs and XTs. Even some 286s can use Extended Memory and don't need to use Expanded Memory.
 
Stone: EMM386 is needed for devicehigh or other high loading utilities that place applications in unallocated spaces by using expanded memory.

aoresteen: Check for your make of 386sx motherboard in the switches for EMM386 and HIMEM. I don't have IBM DOS 7.1 but I remember with the MS (DOS 5 or 6) counterparts that some 386sx motherboards handle memory access in unusual ways and would fail. Also, is your system completely rated for 40MHz operation?
 
You can do a limited amount of LOADHIGH using only HIMEM.SYS. Try it.

If you've ever looked at the source code for EMM386 (or for that matter, HIMEM.SYS), there's an awful lot of spaghetti code handling various vendors' hardware quirks. My guess is that your system exhibits one of the un-handled quirks.

It wouldn't hurt to run a real memory diagnostic either.
 
Stone: EMM386 is needed for devicehigh or other high loading utilities that place applications in unallocated spaces by using expanded memory.
There are dos applications and games that can make use expanded memory.

Does the system do the same thing using another version of Dos?
 
Last edited:
When you understand what drove the development of EMS, it makes sense. LIM was developed for the 20-address-bit IBM PC bus as a way to get more memory space; basically a bankswitching scheme. I thought it odd that the 5150 had such a limited bus, particularly after Multibus and the S100 bus had been around for so many years before. No provision was made for more data or address bits beyond what the 8088 afforded. To me, this says that IBM never expected any follow-ons to the 5150 to materialize with more powerful hardware. (Realistically speaking, a 5160 is a 5150 with three more expansion connectors, a bigger power supply and a bit more memory on the planar--it represents no additional processing power).

Basically, the idea behind EMS was to provide more space for spreadsheets. It originally started out that you didn't buy an AboveBoard unless you were running 1-2-3. That LIM lasted as long as it did demonstrates something, although I'm not sure what exactly.

LIM on a 386 seems like lunacy to me. EMM386 is never a part of my boot setup unless there's an application that refuses to run without it.
 
Last edited:
LIM on a 386 seems like lunacy to me. EMM386 is never a part of my boot setup unless there's an application that refuses to run without it.
You took the words right outta' my mouth... or was that Meatloaf? :) And, since I don't run anything that refuses to run without it, EMM386 is nowhere to be found on any of my machines.
 
I never bother with EMS either BUT EMM386 on a 386 should be part of the start up where possible.
When used properly, the amount of available conventional memory goes up huge - especially if using lots of device drivers (like MS TCP/IP which eats over 100Kb).

I use memmaker (MS DOS 6.x) to configure it properly - so EMS gets disabled and it specifies the ranges it can use or can not use (depending) and it also sets the DEVICEHIGH etc statements perfectly to squeeze things in to nice sized slots in memory. I would not want to do it manually though, that tool is awesome. I'm not sure if any versions of PC DOS had a similar program or not or if there was a third party tool - maybe try QEMM to do the same thing?

Thinking there is a chance that it's loading COMMAND.COM in to a bad place - that's something which happens between CONFIG and AUTOEXEC.
 
since I don't run anything that refuses to run without it, EMM386 is nowhere to be found on any of my machines.

You must not run games, then. Many DOS games that required speed would favor EMS over XMS because EMS is a bankswitch whereas XMS is a block memory copy to access data. IE. XMS is slower to actually use in a program.

Wing Commander comes to mind.
 
The fact that DOS extenders existed running out of XMS doesn't actually contradict what I said...? I was talking about games that didn't use any extenders, where EMS and XMS were their only options during development.

I'm saying that many games made from 1990 to 1993, before things like WATCOM and DOS4GW extenders were popular, preferred EMS over XMS because of the speed advantage. Wing Commander is one such example; it stores audio in EMS so that it can be swapped in quickly to play via Sound Blaster as needed.
 
Jim, I was talking more about 286 PM, a la VCPI, and Phar Lap's 286 extender. But then, I've never had much interest in games.

Golly, if I were writing a 386-only game, I'd probably run it in flat 32-bit mode. But that's just me.
 
Things to try, one at a time.

Remove your MDA card - if this fixes things then EMM386 may have been using it's address space possibly
Try DOS=HIGH
Try DOS=UMB
Try changing your drivers one by one from DEVICEHIGH to DEVICE
Remove EMM386 but use DOS = HIGH

Knowing the results of those combinations will help with working out what's going on. Using CheckIt or similar to do a memory/system test is probably a good idea as well.

Alternatives would be QEMM as I mentioned, or another version of DOS to see if that helps.
 
Golly, if I were writing a 386-only game, I'd probably run it in flat 32-bit mode. But that's just me.

Lack of proper development tools until about 1993 preventing people from doing the same. After that, coupled with off-the-shelf audio libraries that could work with extenders, there was an explosion of DOS extender games.

As for troubleshooting, I would have thought it was obvious to start with every single line REM'd out, then enable each line until you find the line with the problem.

The problem is likely what Chuck already mentioned, which is that the clone board + EMM386 = bad. There are many ways to troubleshoot that, although my personal favorite is to just run QEMM since it was a much better EMM+UMB provider anyway. You can even run it in an analysis mode where it will reboot a few times and determine what is causing wacky issues like that and map around them.
 
I'd clean the floppy drive heads and rails and try a different diskette.

DOS is very sensitive to read errors while it is booting. If anything goes wrong, it gives up.

You can be through CONFIG.SYS and still fail to boot. Until COMMAND.COM is up and running you will not get the "Abort, Retry or Fail" type messages. The bootstrap process will fail and it will try the next option, which is the built-in BASIC. (Or your message if you have no BASIC in ROM.)
 
Have you tried bypassing the config.sys and autoexec? Just a regular load and making sure it works? Alternatively you can step through things too (can't quite remember the shortcut for dos anymore, F5 or something at the starting ms-dos prompt). To bypass I think you can just hold shift. If that works I'd think it's something either corrupt or incompatible running in the config.
 
Back
Top