We learned it at school, i will never forget it, how you address memory. Extended memory, or expanded memory, above 640 k, so you needed to address it yourself, to get access to it.
Tee-hee...I was getting tired* - learning at 15...(C64. Amiga 1200...then 486 DX2 66MHz...) *Got a bit spoiled by Workbench 3.0/3.1 vs DOS 6 and Windows 3.11
Remember hours of fun (not) running qemm to optimize memory management. One of my configs had 720 odd k of conventional memory. Accessed HMA and freed monochrome region as conventional memory. Dos and as many drivers loaded high ie above the conventional memory up to 1 meg, with some bits in HMA ie base 64k of extended memory.
This is the lecture that did not exist in 1994 when I needed it. How did we learn any of this before? This video will be referenced in my hobby from now on. Thank you for the very broken down steps showing everything before and after with every adjustment to the startup files. This video explains more than searching the web has provided me. It shows experience applied and examples. It's great!
THANK YOU! I have quite literally spent this morning trying to work out EMM386 on a 386 I’m installing Tie Fighter on after recently doing a full refurb! I’m new to dos gaming so was getting memory errors and this vid helps soooo much! Great explanation and help!
Definitely get his Ms dos starter pack if you haven't, helped me so much in the past when I first got reacquainted with Dos. Wish I had it in the 90s 😂
Thanks… yes, I have been all over the website now. So much useful stuff there! Even the ESS drivers for the sound card I picked up! And Tie Fighter (and Monkey Island and Wolfestein) is now running great thanks to freeing up some conventional memory and setting up the rest properly. Big help!!
This brings back memories. When I was a kid I was the king of configuring boot floppies for my friends to get those old Lucasfilm games to work. Especially getting the serial mouse and soundcard to work at the same time. Good times!
I created my own DOS boot menu in the 90s. I had about 6 menu entries. It looked something like this: 1. Only Conventional Memory 2. EMS without CD-ROM 3. EMS with CD-ROM 4. XMS without CD-ROM 5. XMS with CD-ROM 6. Windows 3.1 with CD-ROM With these entries I was able to cover 99% of all programs. I only needed a boot disk in one case, but I was too lazy to create a new entry for it and it was only necessary temporarily. Of course, you needed MS-DOS 6.0 or an alternative DOS that could do this. Boot menus were not possible with MS-DOS 5.0, so MS-DOS 5.0 users were the people who used boot disks.
I'm using your Bootmenu on several computers and it's super useful! Both in pure DOS and combined with WIN98 DOS Mode. Thanks for putting it together! :)
I rember back in mid 90s I was able to tweak the autoexec.bat and config.sys to fit all the drivers for mouse, CD-ROM and sound card and still had 610k of conventional memory left. I was able to run Falcon 3 no problem (it required a lot of memory IIRC).
I have spent the last 2 weeks testing my late 90's early 2000's hardware, and your videos have been invaluable to me getting things up and running again! Thanks Phil, your the man. I have my K6-2 @605mhz w/ Voodoo 5 5500 finally working, but still having fits with my old copy of 98! (Missing cab files error) I also have piles of ddr1 and other video cards I just tested on my Thunderbird 1400 system ready to go. Sorry no DOS comments, I was just so exited I had to share with you since you've been a big inspiration to me!
Thank you! It really is a great hobby, taking us back in time :D Also a great community to be part of with many awesome people and there is always something new to learn...
Memory management was an art. QEMM was quite good at it IIRC. You just scratched the surface with two TSRs. Things become more tricky with EMS page frame and more drivers for sound card and etc. in upper memory.
Gotta love when Phil uploads a video. I always appreciate your knowledge and dedication to the retro community. Looking forward to seeing more of your amazing content.
Back in the DOS days I was quite proficient with tweaking autoexec.bat and config.sys and it was such a monumental moment when boot menus became a thing. A while ago I built a late DOS and Windows 95 gaming PC with an AMD K-3 II 400 MHz and your resources where a godsend to get everything up and running. Keep up the good work Phil!
Great tutorial and perfect timing again :) Since yesterday I was trying to pass the magic barrier of 610kB but without success on my recent buy, 26 years old Optimus Prestige 98' (polish brand very popular back in the day) with Pentium II 233MHz and famous, noisy as hell Quantum Big Foot 5.25'. The problem I had was however a very little amount of UMB in general - only 22kB. Adding the parameter I=B000-B7FF to EMM386 solved the problem so I finally got around 54 kB of UMB and 613kB free conventional memory. Later after some testing I have still changed it to I=E000-EAFF to avoid potential collision with Monochrome Text memory. Maybe that hint will help anyone here as well 😅 Have a great Retro Weekend Fellows 😊
I remember when I learned about the monochrome text memory area and that is what I always used afterwards. I don't remember it ever causing issues with whatever software I used.
It's interesting to see an upsurgence of interest in pre-windows software and hardware that many consider to be just obsolete and useless. Perhaps as the industry moves toward ARM architecture and emulators of old software (Sorry for the use of "old") a new appreciation of of what was will help to preserve a lot of digital history being actively lost to "progress" This video really brings back memories of the driver gymnastics everyone had to preform just to have some fun.
This is so well explained Phil, thanks for clearing this up as it’s something I knew about but didn’t really ‘get’. Hasn’t been an issue for me anyway as I have been using your starter pack on my retro PCs ever since I found out about it. Super useful and means MS DOS ‘just works’.
Good explanation, made me realise my USB driver lines for DOS were running in conventional. Only thing this and the starter pack cant do is the opposite and limit your max memory for games like Aladdin which won't run with more than 32mb of ram. Memeater to the rescue. Though I did use your starter pack as a starter to cobble a new bat file to adjust my ram with memeater on 5mb increments to my needs. Love your stuff Phil ❤
I always wondered what was that DOS/4GW thing when running more modern DOS Games, like The Settlers II. Now I know, nice. 😊 Nice to see you explaining the RAM situation in DOS, since things without DOS/4GW were a bit confusing to me, didn't really understand it well and just gave it a rest. This video makes it easier!
The W stands for Watcom because DOS/4G was shipped with the Watcom C Compiler. This led to many game developers switching to the Watcom compiler and programming their games with it. As a result, many games that used DOS/4GW followed quickly. Of course there were other DOS extenders, but they mostly came later.
I came to the PC from the Amiga, in mid-1995. I only had a short while of messing about with memory configs until Windows 95 came along, though DOS games still ruled the roost for another year. Memmaker was sufficient for me most of the time, but the whole experience was shocking to an ex-Amiga man. I suppose I'd been spoiled! I think only because I was young and had the burning desire to play the likes of Doom and Little Big Adventure did I persevere. I'm not sure I'd have the energy or motivation if I had to do it now, nearly 30 years later.
I too came from the Amiga to PC gaming but I switched only in when Win98 SE was out. I didn't have any trouble playing older DOS games but this year I put together a cool little 486 build and I had my fair share of headaches configuring the memory just right, going back and forth between games to see what runs and what won't run now after I changed something. Luckily today we have all sorts of forums and articles that can help us so it's much easier to understand what is actually going on in the machine than back in those days.
@@Dukefazon PC vs Amiga; makes a change from Amiga vs ST, I suppose 😀 One of the shocks I had was finding that Desert Strike on the PC had an extra mission or level, but as well as being more tricky to set up, the sound was poor in comparison to the Amiga version. In fact, I think the Amiga was the only version where the men you're meant to rescue shout 'over here!'.
I got my first PC in 1996 and immediately ran into an issue where I only had sound effects in Windows and CD-Audio in real-mode DOS. There simply was no way to have both with my IBM mWave combination sound card + modem. It also caused an issue with MIDI playback on dial-up webpages since the modem was in use.
Disregarding the raw CPU power for Doom, my switch from the A500 to a DOS PC was quite a setback in many regards. At least until a good year later Win95 was released. Hadntt Commodore gone bankrupt shortly after Doom was released, I would probably have bought an A1200 instead.
Very helpful video to understand how memory management works on DOS. Thanks for fan drivers for mouse and cd rom i got plenty of conventional memory to run Aces of the Pacific. Aces of the Pacific and Aces over Europe for example needs 610K of conventional memory and 311K of Expanded memory.
They literally give you the option to create a boot disk - or make one yourself with just a mouse driver, himem.sys, and a BLASTER environment. Sometimes, on certain machines, I am able to run the game in EMM386 (somehow - but it's not stable)
I remember having to forego mouse or sound to free up enough memory to get DOS games working around this time, what a pain. So glad to have your resources for the past decade to get these games working flawlessly on retro machines.
Very nice video, bringing back the nearly forgotten lore of DOS tweaking :) On my systems back in the day (386DX-40, later 486DX4-120), I did an awful lot of manual memory tweaking, mainly for exactly this one purpose - making my games run :) I had quite a few TSRs loaded which I did not want to work without, so it sometimes took some trial and error to get it right, but I did succeed for each and every game I had :) Back then, I did not know about the boot menu possibility, but even if I did, I would probably do without it - my setup was as follows: I created (and pimped up to the absolute limit of what's possible within the constraints of the goal in mind) several different sets of CONFIG+AUTOEXEC files that covered all possible scenarios of memory requirements for various games. (continuing in the replies - my original post is simply disappearing, so I'm forced to split it)
Then, I created my own program called the autoexec manager that replaced (or kept) the current autoexec+config with one requested by the commandline. If it actually did any change, it automatically rebooted the computer afterwards for the new config to activate right away. Then, in every game's directory, I had a file called "!.bat" (so that it was always first in the list) which called the autoexec manager with the appropriate parameter for that particular game first thing, and then proceeded to load the game, possibly preceded by loading any sound TSRs (I had a GUS PnP, so my setup was even more complicated as I had to tinker with iwsbos/megaem much of the time - and this batch file always loaded the one that was working with that game).
That way, I did not have to remember any game requirements - neither memory, nor sound driver ones - if I wanted to play a game, I just ran the batch file in its directory, and if my system had a different autoexec+config currently active, the computer simply rebooted. Then I went to the game's directory again, ran the !.bat again and it loaded the proper sound TSR for me, if necessary, and ran the game - and it worked with no further effort or thinking ;) So I only had to find the right configuration for each game once, and forget about it :) So, in this sense, it was an even better setup than a boot menu, because with that, I'd have to remember what the requirements of the game I intend to run are, before the system even boots up :) Well, I have always liked creating kinda unconventional solutions to problems that I encounter, and this was one of them :)
When we had our 486, most of the times memmaker did a solid job. But then we got some games that required even more free memory and we could not play them. The solution came with getting the QEMM. That really further freed up the memory and afterwards we never saw memory too low messages again. Of course we also needed the dos boot menu, because some games just did not like QEMM. One I can think of that was complaining was Micro Machines II, but there were others, of course.
Interesting video about the begining of the 640k and more ram later. Back in the day, on my first pc, Apricot Qi 386SX 16 mhz, with 1 mb ram, I was juggling with emm386, himem.sys and loading the mouse only when needed for few games and win 3.11. Your ms-dos startup pack is legendary man. I think it ibecame a standard for retro systems up to 486.
the hardest game to run under DOS for me regarding memory was SEAL Team, which required 600k conventional memory, but I also had Gravis Ultrasound requiring Ultramid resident program for the sound, and a basic mouse controller... I was forced to create a completely dedicated setup for SEAL Team alone, stripped of all resident drivers or whatever, just EMS, mouse and Ultramid. Fortunately MSDOS 6.0 made it possible with a start-up menu
I remember the worst offender was Ultima 7, which needed lots of conventional memory (around 585-590K, if I remember correctly), but refused to work with any standard or popular expanded memory managers like EMM386 or QEMM. It had it's own built-in bespoke "Voodoo" memory manager, that just didn't play nicely with them. I remember I had to make "special" config for this game alone. It was a bit of a headache, also because you basically required to somehow cram smartdrv.exe into your "lean" config no matter what, because of Ultima7's constantly accessing HDD that slowed things down on an uncached HDD and made everything choppy. (Smartdrv is a standard MSDOS hard drive caching utility)
@@RetroGamingNook Yeah, I agree, there was some nerdy beauty in it for sure, learning how to solve things just to play your favorite games. I know I felt proud of myself when a game I had problems with finally loaded.
I used QEMM back in the day as well and then started creating a custom DOS boot selection according to the game I was trying to run, either Extended or Expanded memory configs or neither as the case maybe.
One other trick we used at the time was using program overlays to work. This would allow you to swap out portions of your code to disk, freeing up RAM. Microsoft invented the concept, but you had to manage which code you wanted to overlay very carefully. Then Borland came around with VROOM (which iirc stood for virtual read-only object oriented memory) and made it exponentially more flexible. These were the predecessors for DLLs, which can still be manually loaded or unloaded if someone wanted to go through the trouble (though more often than not people rely on the linker to automatically load or unload).
Superb video. I'm in the process of setting up my shiny new 200mhz MMX and am having to give myself a crash course in all the things I wasn't allowed to touch back in the day.
Very good introduction into the topic. When I was 19, ppl would invite me to do just that. To optimize their conventional memory so they could run their favorite games. Surprisingly, even till the end of DOS gaming, not every game used a 32 bit DOS extender. Even though they had been available for years. And MS itself clearly didn't invest any work into DOS itself anymore at this point, so ppl had to use 3rd party tools like QEMM and the likes to automate the process somewhat.
This is a very interesting and extremely important topic when it comes to actual DOS gaming and not just playing with DOS games on a more modern system. I wrote about my experiences prior here, I learned a lot about the good old DOS's memory management and how to run old games with weird memory requirements. Aladdin is notoriously finicky about the memory settings. Another interesting example was Elite 1-2-3. Elite 1 was small enought that it could fit in my not optimized memory map. Elite 2 didn't start because it required more conventional memory and Elite 3 ran without an issue because it handled the extended memory. Or something like that... But after using MEMMAKER it helped to clean up my autoexec.bat and everything, now Aladdin, Leisure Suit Larry 6, Day of the Tentacle and all the Elite games ran without an issue. Larry 6 froze occassionally but tweaking a config file manually helped with that, I had to lower some caching parameter that was not in the setup program and it worked after that.
Not only your DOS customized menu is great, all the stuff in your website is of great help. Every time I have to deal with Soundblaster drivers and configurations I just need to go to your web.
Wow, this brings back so many good/bad memories getting stuff to run. I actually used DOS 6.22's menu feature to run specific games with their own setup config.sys + autoexec.bat files when I should have done it like you did instead. It would have cut down on the quantity of menu items I had.
DOS's MEMMAKER was ok for systems with minimal TSRs loaded. QEMM's OPTIMIZE and Netroom's CUSTOMIZE (which MEMMAKER was based off of) could produce much better results.
The family computer used to have QEMM on it back in the day. However, it seems like, now, it isn't as useful. I rarely have any issues getting software to run with just some minimal DEVICEHIGH statements added to CONFIG SYS, even with sound, mouse, and even SCSI drivers loaded. But, when I loaded QEMM386 just for old time's sake, the default results from OPTIMIZE gave me tons of conventional memory (more than I had, but also more than I needed), and made the system much more prone to crashes for the privilege. At some point, I'll probably try again and see what's going on, but for now, I don't really have a reason to bother
@@nickwallette6201 yeah, QEMM's ROM Stealth technology certainly caused a lot of problems with software accessing ROM locations directly instead of accessing them through DOS functions. Netroom's Cloaking utility seems to fare better in the compatibility department. If you use "cloaked" utilities, they only needed to put at minimum a 1k stub in an upper memory block while the rest of the application could be run from XMS. Netroom included their own disk cache and ram disk, while Logitech's 6.4x mouse drivers also supported cloaking. This configuration leaves lots of free conventional memory as well as allowing more room in UMB for more TSRs.
Excellent video and very well explained. This is great for newcomers to DOS! The memory terminology can be really confusing. I have my own startup boot menus with my DOS / Windows 3.11 dual boot. I love to have ultimate control of which drivers get loaded where. I'm running videcdd, mouse, doskey, univbe, and a network packet driver for mTCP along with a few other TSRs. MemMaker does a fantastic job of optimizing and fitting the little drivers in the spaces between the larger ones. I only wish I didn't have to re-run it for every new system or anytime I make a hardware change lol. The flags that it adds to LH determine exactly where the TSR goes in upper memory and if it gets split up into noncontiguous parts. I wish I understood those arguments so that I didn't have to run MemMaker each time. The sad part is that they are apparently undocumented though...
The EMM386 puts the CPU in Virtual-86 mode instead of the normal real mode. There were third party drivers that could provide upper memory area in real mode. They used the memory manager on the mother board to do it. If you had say 4 MB memory the memory was form 0 to 4 MB but normally the area 640K to 1 MB was simply not used. The drivers could provide the RAM. There was also a trick that if you provided memory to 640 KB..736 KB (704 KB on monochrome display) you could get base memory up to 736 B or 704 KB but if you tried any EGA/VGA graphics mode the computer would crash.
Used to be a hardcore DOS user when I was very young and still know it like the back of my hand. Used DOS 5.0 on my Tandy 1000 RSX, but had experience even with DOS 2.11 on 8088 and 286 machines at the time. I believe you may have answered a question that's had me stifled for the longest time and that's when I would use EMM386 to enable expanded memory and notice that my 386-SX@25MHZ would run slower. Simply disabling EMM386 and rebooting the system (of course) leaving only XMS (HIMEM.SYS) would result in better performance. Obviously this wasn't an option for games and software that required EMS memory, but now that you mentioned that it puts the CPU in *Virtual-86* mode might be the explanation to the performance drop. On the other hand, this performance drop would not be felt on a high-end 486-DX4 machine or any Pentium computer due to them being significantly faster processors.
Nice video! Memmaker does decent job in optimizing the memory, but the UMB can be optimized even further by placing the drivers/programs manually in the UMB. That can be achieved with the LOADHIGH's /L:x switch , where x is the number/ID of the UMB. You can find the UMB numbers/IDs by issuing MEM /F command. HIMEM.SYS/EMM386.EXE or similar must be loaded, of course. On that topic, for those who use EMS memory: it's a good practice to manually set the beginning of the page frames, so there won't be two separate UMB blocks between those frames (the EMM386.EXE's FRAME=xxxx parameter). Also, some programs like MSCDEX support partial loading in the HMA (/E parameter). Using HIMEM.SYS/EMM386.EXE replacements, like JEMM/JEMMeX, can also squeeze some free conventional memory.
I remember coding my own games and demos using EMS memory and how much I hated that environment. I wanted to use DOS/4GW and linear memory but before Internet it was hard getting the information you needed.
Great nostalgia! Love the marketing @ 4:40 where they are trying to convince people the Conner drive may have slower response times but is more power efficient - saving 0.75W! Three quarters of a watt, that's just cute in today's world.
Oh the old Memory layout of DOS the normal 640K of the OS and the rest in high or extended memory area. I remember those times very fondly. I remember having a Tandy 1000 286 with 768K of RAM and that sucker could run KQ4 SCI. I had like one memory issue with using DOS and that was trying to play Duke Nukem 3D with only 8mb of RAM and it required 16mb. The only other issues under DOS that I had is with IRQs and getting the sound drivers to wok.
I remember pays my neighbour with a pack of cigarrete back in 98 for a copy of Prince of Persia to play in my junior high computer lab. We used to go there at night, playing games or just playing around with WordStar and lotus123 along with the teacher that responsible for the lab
As a assembly developer in the day, I hated the x86 because of its idiotic memory with management compared to the Atari ST (or Amiga). Writing a TSR program was always like playing with the nuclear launch codes 😂Bringing the 386 and up in protected mode was a chore to get protected memory enabled and have contiguous access (if you need it) like we already had with the 68k.
Yeah, segmented memory sucks. It's also pretty lame that, during that short window where you had more than 640k, but not just tons and tons of memory, you were effectively wasting that 384k. There was actual RAM there backing those addresses, but it was being given to ROMs instead. (Unless you shadowed the ROMs to RAM for speed.) What a waste.
I managed to get Turrican 2 to run perfectly fine just by removing Upper memory in the configuration section of ms-dos mode under windows 95. So satisfying to get a game that is known to be hard to get running working properly. :)
I used a bat file that would ask if I was playing particular games then run the extra commands and adjust autoexec and configsys to what I was intended on doing.
Kind of left out one option to keep your UMB memory with no EMS activated just need to change EMM386 to "DEVICE=C:\DOS\EMM386.EXE NOEMS" which give you upper memory without having Expanded memory active
I remember having a NOEMS command in some of my batch files. Haven’t heard/thought about in once in the 30-ish years. Then I read your post and it all came back to me.
Your videos are always jam packed with great information and are always very well polished. I think a great segway on this topic would be another video explaining what CONVENTION/EXPANDED/EXTENDED memory actually is and how the system uses it.
@@O.Shawabkeh I remember testing Wipeout from the PS1 on my DOS PC. Surprisingly I could access the disc and there was a WIPEOUT.EXE on it, but it always said "Not enough memory" no matter what I tried. 4 sure it was not meant for DOS either.
Level 1 upgrade - where using EMS, move the page frame down to C800 running on from where the VGA BIOS finishes - this avoids splitting the upper memory (All the MEMAKER shenanigans is about dealing with split upper memory, optimizing the block fit). Ninja level .... JEMMEX to provide both XMS and upper / EMS. Double ninja level, using UMBPCI to create upper memory in real mode, which MAY work with software that does not tolerate V86 mode. MGDX has some guides... 644,048 free conventional memory
I have kept all my old startup config/autoexecs from back in the day. They are fairly similar to yours, although the language used in the menu options is a lot closer to what you'd expect from a teenager.
So many memories with DOS and older windows. I had issues with Lotus III when I tried to run on DOS mode in windows 98, I had to use MemMaker and it ran without any issues.
some more things worth mentioning: before msdos 6.x, a very common thing to use was qemm. it did basically the same like msdos 6.x memmaker did, but way before msdos came out with it. i remember running qemm with msdos 3.31 and later with msdos 5.x, skipping the damn msdos 4.x completely, it just sucked. another dos game worth mentioning was ultima 7, that came out with its own memory manager. i think it was called voodoo memory manager
I remember having to choose what drivers I really needed for some games as when all drivers were loaded, the amount of base memory left after loading all the drivers into high mem, UMB and where possible extended memory, didn't leave enough base memory for soem games.
Ahh memories of the early 1990s trying to get privateer to work. I never did manage to get it to work, but if I had access to this information then I think I would have.
@@philscomputerlab I vaguely recall having EMM386 on my machine, but I didn't know the techniques you showed for loading the drivers in to alternate memory regions. Another complication I remember is that I had a CDROM drive that required a very specific driver as it came with a dedicated interface card. I think I was able to get the amount of memory free needed, but only by not loading the CDROM driver and since the game was on CD, that was no help.
I had a fancy DOS startup menu back on my first PC. It had options to load Windows 95 as well as Linux using loadlin. I didn't have a bunch of memory options, since most of the DOS games I had were from the DOS4GW days.
DOS Memory management gets even more complicated if you're trying to run a big TSR driver like SBEMU on a newer system. Then you also have to worry about DPMI in 16 or 32 bit, VCPI, using the right memory manager to allow redirecting the DMA controller writes, and some games that still won't work for anything because they demand to be run from real mode and not v8086.
The toughest games to run were the ones that stuck with 16-bit and conventional memory past 1993, the DOS4GW era. They tended to require over 600K, up to around 620K if memory serves. That would be okay if nothing else was loaded but having that much free plus mouse, sound, and CD drivers was a huge ask. Even with upper memory, not everything went up there and there wasn't as much usable space as you might think with the 384KB claim.
Ugh, don't get me started on dealing with base memory. The time I spend tweak the sh!t out of my config.sys and autoexec.bat to load high, change order (because that also matters) and making menu options to not load certain things... loadhigh helped for sure
The main problem I had back then that these DOS tricks were poorly documented or at least access to them was not easy. Experience (checking friends' files etc.) was very important and mostly I was shooting blindly around. Wish we had videos like yours. Lack of documentation had always been a very unfortunate policy at Microsoft, which allowed Linux to gain traction over time.
Yes! I also had to use a keyboard driver, that used another few KB that US users didn't need. PC magazines were my main resource for knowledge back in those days...
When I was 15 I could do all of this in my sleep, but I forgot all of it, this is a really nice walk down memory lane...
We learned it at school, i will never forget it, how you address memory.
Extended memory, or expanded memory, above 640 k, so you needed to address it yourself, to get access to it.
Tee-hee...I was getting tired* - learning at 15...(C64. Amiga 1200...then 486 DX2 66MHz...)
*Got a bit spoiled by Workbench 3.0/3.1 vs DOS 6 and Windows 3.11
Remember hours of fun (not) running qemm to optimize memory management. One of my configs had 720 odd k of conventional memory. Accessed HMA and freed monochrome region as conventional memory. Dos and as many drivers loaded high ie above the conventional memory up to 1 meg, with some bits in HMA ie base 64k of extended memory.
I'll never forget having my grandpa make me a boot disk for ultima 7 due to it being finicky about xms. He's still a chill dude at 94 years old
I remember getting hard drives recognized was difficult. you needed to enter the parameters in the bios
This is the lecture that did not exist in 1994 when I needed it. How did we learn any of this before? This video will be referenced in my hobby from now on. Thank you for the very broken down steps showing everything before and after with every adjustment to the startup files. This video explains more than searching the web has provided me. It shows experience applied and examples. It's great!
CompuServe
I was just wondering the same. I believe we were kids who just knew to RTFM and figured it out!
Yes readme files, help documents and computer magazines...
for myself the dos manual and trial and error
THANK YOU! I have quite literally spent this morning trying to work out EMM386 on a 386 I’m installing Tie Fighter on after recently doing a full refurb! I’m new to dos gaming so was getting memory errors and this vid helps soooo much! Great explanation and help!
Definitely get his Ms dos starter pack if you haven't, helped me so much in the past when I first got reacquainted with Dos. Wish I had it in the 90s 😂
Thanks… yes, I have been all over the website now. So much useful stuff there! Even the ESS drivers for the sound card I picked up! And Tie Fighter (and Monkey Island and Wolfestein) is now running great thanks to freeing up some conventional memory and setting up the rest properly. Big help!!
@@gavinc5255 I've played the Tie Fighter demo for countless hours, until I got the full game a few years later.
This brings back memories. When I was a kid I was the king of configuring boot floppies for my friends to get those old Lucasfilm games to work. Especially getting the serial mouse and soundcard to work at the same time. Good times!
There is a windows 9x version of Tie Fighter. It doesn't require EMM386 and offers textures. Good old games does have this version.
"DOS games are absolutely beautiful"
Instant thumbs up 😁
Ah if we only had Phil's legendary DOS boot menu back in the early 90's... Our lives would have been so much easier back then!
Boot disks - lots of boot disks ;)
Many existed. It was just harder to share because of the lack of internet.
@@myne00 BBS was good enough !
My boot menu in the 90-ties has 15 items... Win98+QEMM386+4DOS...
I created my own DOS boot menu in the 90s. I had about 6 menu entries.
It looked something like this:
1. Only Conventional Memory
2. EMS without CD-ROM
3. EMS with CD-ROM
4. XMS without CD-ROM
5. XMS with CD-ROM
6. Windows 3.1 with CD-ROM
With these entries I was able to cover 99% of all programs. I only needed a boot disk in one case, but I was too lazy to create a new entry for it and it was only necessary temporarily.
Of course, you needed MS-DOS 6.0 or an alternative DOS that could do this. Boot menus were not possible with MS-DOS 5.0, so MS-DOS 5.0 users were the people who used boot disks.
I'm using your Bootmenu on several computers and it's super useful! Both in pure DOS and combined with WIN98 DOS Mode. Thanks for putting it together! :)
Awesome :D
Ah.. the good old days. I recall emm386 and the more advanced qemm386, all do save a few tens of kbs of conventional memory.
Great video. You have explained the way MS-DOS uses system memory very well. Keep up the great work.
Thanks!! even I understood some of this stuff in the time, there were a lot of technical aspects that didn't fully understand until today
I rember back in mid 90s I was able to tweak the autoexec.bat and config.sys to fit all the drivers for mouse, CD-ROM and sound card and still had 610k of conventional memory left. I was able to run Falcon 3 no problem (it required a lot of memory IIRC).
I have spent the last 2 weeks testing my late 90's early 2000's hardware, and your videos have been invaluable to me getting things up and running again! Thanks Phil, your the man.
I have my K6-2 @605mhz w/ Voodoo 5 5500 finally working, but still having fits with my old copy of 98! (Missing cab files error) I also have piles of ddr1 and other video cards I just tested on my Thunderbird 1400 system ready to go. Sorry no DOS comments, I was just so exited I had to share with you since you've been a big inspiration to me!
Thank you! It really is a great hobby, taking us back in time :D Also a great community to be part of with many awesome people and there is always something new to learn...
Memory management was an art. QEMM was quite good at it IIRC.
You just scratched the surface with two TSRs. Things become more tricky with EMS page frame and more drivers for sound card and etc. in upper memory.
Gotta love when Phil uploads a video. I always appreciate your knowledge and dedication to the retro community. Looking forward to seeing more of your amazing content.
Thnx for this explanation! Learned a lot from all your videos! greetings from the Netherlands! 💪
Back in the DOS days I was quite proficient with tweaking autoexec.bat and config.sys and it was such a monumental moment when boot menus became a thing. A while ago I built a late DOS and Windows 95 gaming PC with an AMD K-3 II 400 MHz and your resources where a godsend to get everything up and running. Keep up the good work Phil!
Great tutorial and perfect timing again :) Since yesterday I was trying to pass the magic barrier of 610kB but without success on my recent buy, 26 years old Optimus Prestige 98' (polish brand very popular back in the day) with Pentium II 233MHz and famous, noisy as hell Quantum Big Foot 5.25'. The problem I had was however a very little amount of UMB in general - only 22kB. Adding the parameter I=B000-B7FF to EMM386 solved the problem so I finally got around 54 kB of UMB and 613kB free conventional memory. Later after some testing I have still changed it to I=E000-EAFF to avoid potential collision with Monochrome Text memory. Maybe that hint will help anyone here as well 😅 Have a great Retro Weekend Fellows 😊
That is deep dive stuff, once you specify own memory ranges. Well done!
I remember when I learned about the monochrome text memory area and that is what I always used afterwards. I don't remember it ever causing issues with whatever software I used.
It's interesting to see an upsurgence of interest in pre-windows software and hardware that many consider to be just obsolete and useless. Perhaps as the industry moves toward ARM architecture and emulators of old software (Sorry for the use of "old") a new appreciation of of what was will help to preserve a lot of digital history being actively lost to "progress"
This video really brings back memories of the driver gymnastics everyone had to preform just to have some fun.
This is so well explained Phil, thanks for clearing this up as it’s something I knew about but didn’t really ‘get’. Hasn’t been an issue for me anyway as I have been using your starter pack on my retro PCs ever since I found out about it. Super useful and means MS DOS ‘just works’.
Awesome 😊😊
Good explanation, made me realise my USB driver lines for DOS were running in conventional.
Only thing this and the starter pack cant do is the opposite and limit your max memory for games like Aladdin which won't run with more than 32mb of ram. Memeater to the rescue.
Though I did use your starter pack as a starter to cobble a new bat file to adjust my ram with memeater on 5mb increments to my needs.
Love your stuff Phil ❤
Need to try out memeater and Aladdin the next time I'm working with Socket 7 machine!
@@philscomputerlab 😀 enjoy your coffee
I've been using your startup pack for years now with my pure dos gaming builds. Thank you, saved me a lot of time.
I always wondered what was that DOS/4GW thing when running more modern DOS Games, like The Settlers II. Now I know, nice. 😊
Nice to see you explaining the RAM situation in DOS, since things without DOS/4GW were a bit confusing to me, didn't really understand it well and just gave it a rest. This video makes it easier!
The W stands for Watcom because DOS/4G was shipped with the Watcom C Compiler. This led to many game developers switching to the Watcom compiler and programming their games with it. As a result, many games that used DOS/4GW followed quickly. Of course there were other DOS extenders, but they mostly came later.
Phil, I want to say thank you. From the heart, Thank you. Please never stop doing what you do.
Great job Phil. Brings back memories of configuring WC and other games. BTW I found your boot disk very useful in my retro machine!
I came to the PC from the Amiga, in mid-1995. I only had a short while of messing about with memory configs until Windows 95 came along, though DOS games still ruled the roost for another year. Memmaker was sufficient for me most of the time, but the whole experience was shocking to an ex-Amiga man. I suppose I'd been spoiled! I think only because I was young and had the burning desire to play the likes of Doom and Little Big Adventure did I persevere. I'm not sure I'd have the energy or motivation if I had to do it now, nearly 30 years later.
I too came from the Amiga to PC gaming but I switched only in when Win98 SE was out. I didn't have any trouble playing older DOS games but this year I put together a cool little 486 build and I had my fair share of headaches configuring the memory just right, going back and forth between games to see what runs and what won't run now after I changed something. Luckily today we have all sorts of forums and articles that can help us so it's much easier to understand what is actually going on in the machine than back in those days.
@@Dukefazon PC vs Amiga; makes a change from Amiga vs ST, I suppose 😀 One of the shocks I had was finding that Desert Strike on the PC had an extra mission or level, but as well as being more tricky to set up, the sound was poor in comparison to the Amiga version. In fact, I think the Amiga was the only version where the men you're meant to rescue shout 'over here!'.
I got my first PC in 1996 and immediately ran into an issue where I only had sound effects in Windows and CD-Audio in real-mode DOS. There simply was no way to have both with my IBM mWave combination sound card + modem. It also caused an issue with MIDI playback on dial-up webpages since the modem was in use.
I had the same culture shock coming from Amiga to PC.
Disregarding the raw CPU power for Doom, my switch from the A500 to a DOS PC was quite a setback in many regards. At least until a good year later Win95 was released. Hadntt Commodore gone bankrupt shortly after Doom was released, I would probably have bought an A1200 instead.
Phil's Computer Lab explained:
Great channel.
❤️
Very helpful video to understand how memory management works on DOS. Thanks for fan drivers for mouse and cd rom i got plenty of conventional memory to run Aces of the Pacific. Aces of the Pacific and Aces over Europe for example needs 610K of conventional memory and 311K of Expanded memory.
Ultima 7 was the most difficult game for me to configure memory in DOS way back.
They literally give you the option to create a boot disk - or make one yourself with just a mouse driver, himem.sys, and a BLASTER environment. Sometimes, on certain machines, I am able to run the game in EMM386 (somehow - but it's not stable)
There was a 2D platform game that needed 613 or was it 618KB of RAM 😲
^was pretty close to run back to my now NOT supported Amiga 1200 in late 1994...
Once again a precious content for retrogaming lovers. Thank you for sharing this valuable tutorial❤
I remember having to forego mouse or sound to free up enough memory to get DOS games working around this time, what a pain. So glad to have your resources for the past decade to get these games working flawlessly on retro machines.
Very nice video, bringing back the nearly forgotten lore of DOS tweaking :)
On my systems back in the day (386DX-40, later 486DX4-120), I did an awful lot of manual memory tweaking, mainly for exactly this one purpose - making my games run :)
I had quite a few TSRs loaded which I did not want to work without, so it sometimes took some trial and error to get it right, but I did succeed for each and every game I had :)
Back then, I did not know about the boot menu possibility, but even if I did, I would probably do without it - my setup was as follows: I created (and pimped up to the absolute limit of what's possible within the constraints of the goal in mind) several different sets of CONFIG+AUTOEXEC files that covered all possible scenarios of memory requirements for various games.
(continuing in the replies - my original post is simply disappearing, so I'm forced to split it)
Then, I created my own program called the autoexec manager that replaced (or kept) the current autoexec+config with one requested by the commandline. If it actually did any change, it automatically rebooted the computer afterwards for the new config to activate right away. Then, in every game's directory, I had a file called "!.bat" (so that it was always first in the list) which called the autoexec manager with the appropriate parameter for that particular game first thing, and then proceeded to load the game, possibly preceded by loading any sound TSRs (I had a GUS PnP, so my setup was even more complicated as I had to tinker with iwsbos/megaem much of the time - and this batch file always loaded the one that was working with that game).
That way, I did not have to remember any game requirements - neither memory, nor sound driver ones - if I wanted to play a game, I just ran the batch file in its directory, and if my system had a different autoexec+config currently active, the computer simply rebooted. Then I went to the game's directory again, ran the !.bat again and it loaded the proper sound TSR for me, if necessary, and ran the game - and it worked with no further effort or thinking ;) So I only had to find the right configuration for each game once, and forget about it :)
So, in this sense, it was an even better setup than a boot menu, because with that, I'd have to remember what the requirements of the game I intend to run are, before the system even boots up :)
Well, I have always liked creating kinda unconventional solutions to problems that I encounter, and this was one of them :)
@@Beus38 Very clever!
When we had our 486, most of the times memmaker did a solid job. But then we got some games that required even more free memory and we could not play them. The solution came with getting the QEMM. That really further freed up the memory and afterwards we never saw memory too low messages again. Of course we also needed the dos boot menu, because some games just did not like QEMM. One I can think of that was complaining was Micro Machines II, but there were others, of course.
Interesting video about the begining of the 640k and more ram later. Back in the day, on my first pc, Apricot Qi 386SX 16 mhz, with 1 mb ram, I was juggling with emm386, himem.sys and loading the mouse only when needed for few games and win 3.11. Your ms-dos startup pack is legendary man. I think it ibecame a standard for retro systems up to 486.
the hardest game to run under DOS for me regarding memory was SEAL Team, which required 600k conventional memory, but I also had Gravis Ultrasound requiring Ultramid resident program for the sound, and a basic mouse controller... I was forced to create a completely dedicated setup for SEAL Team alone, stripped of all resident drivers or whatever, just EMS, mouse and Ultramid. Fortunately MSDOS 6.0 made it possible with a start-up menu
As a fellow GUS owner, I feel your pain.
Brought back some memories 👍
In hindsight, I think I enjoyed the memory optimizing/troubleshooting more than the actual games themselves!
PLEASE try it again....then tell US about it 😛
I remember the worst offender was Ultima 7, which needed lots of conventional memory (around 585-590K, if I remember correctly), but refused to work with any standard or popular expanded memory managers like EMM386 or QEMM. It had it's own built-in bespoke "Voodoo" memory manager, that just didn't play nicely with them. I remember I had to make "special" config for this game alone. It was a bit of a headache, also because you basically required to somehow cram smartdrv.exe into your "lean" config no matter what, because of Ultima7's constantly accessing HDD that slowed things down on an uncached HDD and made everything choppy. (Smartdrv is a standard MSDOS hard drive caching utility)
I think we commented this at the same time, but you have really dug into the issue. I consider the challenge part of the game. 😵💫
@@RetroGamingNook Yeah, I agree, there was some nerdy beauty in it for sure, learning how to solve things just to play your favorite games. I know I felt proud of myself when a game I had problems with finally loaded.
I remember having to make boot disks for games sometimes to get them to run
OMG Smartdrive, yes I remember using this a lot also. It also helped with caching CD. Now with modern flash based storage, I never use it.
I used QEMM back in the day as well and then started creating a custom DOS boot selection according to the game I was trying to run, either Extended or Expanded memory configs or neither as the case maybe.
Excellent video :-) Continuing the gold standard for tutorials and explanations behind retro tech challenges 🎉
Your MS-DOS super easy is a life saver for many of us noobs!
One other trick we used at the time was using program overlays to work. This would allow you to swap out portions of your code to disk, freeing up RAM. Microsoft invented the concept, but you had to manage which code you wanted to overlay very carefully. Then Borland came around with VROOM (which iirc stood for virtual read-only object oriented memory) and made it exponentially more flexible. These were the predecessors for DLLs, which can still be manually loaded or unloaded if someone wanted to go through the trouble (though more often than not people rely on the linker to automatically load or unload).
Superb video. I'm in the process of setting up my shiny new 200mhz MMX and am having to give myself a crash course in all the things I wasn't allowed to touch back in the day.
Very good introduction into the topic. When I was 19, ppl would invite me to do just that. To optimize their conventional memory so they could run their favorite games. Surprisingly, even till the end of DOS gaming, not every game used a 32 bit DOS extender. Even though they had been available for years. And MS itself clearly didn't invest any work into DOS itself anymore at this point, so ppl had to use 3rd party tools like QEMM and the likes to automate the process somewhat.
This is a very interesting and extremely important topic when it comes to actual DOS gaming and not just playing with DOS games on a more modern system. I wrote about my experiences prior here, I learned a lot about the good old DOS's memory management and how to run old games with weird memory requirements. Aladdin is notoriously finicky about the memory settings. Another interesting example was Elite 1-2-3. Elite 1 was small enought that it could fit in my not optimized memory map. Elite 2 didn't start because it required more conventional memory and Elite 3 ran without an issue because it handled the extended memory. Or something like that... But after using MEMMAKER it helped to clean up my autoexec.bat and everything, now Aladdin, Leisure Suit Larry 6, Day of the Tentacle and all the Elite games ran without an issue. Larry 6 froze occassionally but tweaking a config file manually helped with that, I had to lower some caching parameter that was not in the setup program and it worked after that.
Very thorough. Great video. I remember having to learn this via long distance telephone calls to game tech support hotlines when I was 14.
I had a Gravis Ultrasound. Amazing bit of hardware, but the drivers made it a serious challenge to free up memory.
awesome video. Wish I had it back in 1990! always appreciate the starter pack. Thanks Phil
There's the article "From 0 to 1 MB in DOS" from Julio Merino which explains this in detail. It is a must
Just read it. Very good one.
Not only your DOS customized menu is great, all the stuff in your website is of great help. Every time I have to deal with Soundblaster drivers and configurations I just need to go to your web.
Thanks for sharing. I used to love to play around with the memory management for games.
Wow, this brings back so many good/bad memories getting stuff to run. I actually used DOS 6.22's menu feature to run specific games with their own setup config.sys + autoexec.bat files when I should have done it like you did instead. It would have cut down on the quantity of menu items I had.
DOS's MEMMAKER was ok for systems with minimal TSRs loaded. QEMM's OPTIMIZE and Netroom's CUSTOMIZE (which MEMMAKER was based off of) could produce much better results.
The family computer used to have QEMM on it back in the day. However, it seems like, now, it isn't as useful. I rarely have any issues getting software to run with just some minimal DEVICEHIGH statements added to CONFIG SYS, even with sound, mouse, and even SCSI drivers loaded. But, when I loaded QEMM386 just for old time's sake, the default results from OPTIMIZE gave me tons of conventional memory (more than I had, but also more than I needed), and made the system much more prone to crashes for the privilege.
At some point, I'll probably try again and see what's going on, but for now, I don't really have a reason to bother
@@nickwallette6201 yeah, QEMM's ROM Stealth technology certainly caused a lot of problems with software accessing ROM locations directly instead of accessing them through DOS functions.
Netroom's Cloaking utility seems to fare better in the compatibility department. If you use "cloaked" utilities, they only needed to put at minimum a 1k stub in an upper memory block while the rest of the application could be run from XMS. Netroom included their own disk cache and ram disk, while Logitech's 6.4x mouse drivers also supported cloaking. This configuration leaves lots of free conventional memory as well as allowing more room in UMB for more TSRs.
Excellent video and very well explained. This is great for newcomers to DOS! The memory terminology can be really confusing. I have my own startup boot menus with my DOS / Windows 3.11 dual boot. I love to have ultimate control of which drivers get loaded where. I'm running videcdd, mouse, doskey, univbe, and a network packet driver for mTCP along with a few other TSRs. MemMaker does a fantastic job of optimizing and fitting the little drivers in the spaces between the larger ones. I only wish I didn't have to re-run it for every new system or anytime I make a hardware change lol. The flags that it adds to LH determine exactly where the TSR goes in upper memory and if it gets split up into noncontiguous parts. I wish I understood those arguments so that I didn't have to run MemMaker each time. The sad part is that they are apparently undocumented though...
Nice! mTCP is awesome, but recently I'm leaning towards just installing Windows 3.11 and using a nice FTP client there and running FTP server on NAS.
I remember setting up a dos boot menu that had a bunch of different memory config options you could select just like the one you showed. Fun times!
25 years later I finally understand this.
@@axa993 😍
The EMM386 puts the CPU in Virtual-86 mode instead of the normal real mode. There were third party drivers that could provide upper memory area in real mode. They used the memory manager on the mother board to do it. If you had say 4 MB memory the memory was form 0 to 4 MB but normally the area 640K to 1 MB was simply not used. The drivers could provide the RAM.
There was also a trick that if you provided memory to 640 KB..736 KB (704 KB on monochrome display) you could get base memory up to 736 B or 704 KB but if you tried any EGA/VGA graphics mode the computer would crash.
Used to be a hardcore DOS user when I was very young and still know it like the back of my hand. Used DOS 5.0 on my Tandy 1000 RSX, but had experience even with DOS 2.11 on 8088 and 286 machines at the time. I believe you may have answered a question that's had me stifled for the longest time and that's when I would use EMM386 to enable expanded memory and notice that my 386-SX@25MHZ would run slower. Simply disabling EMM386 and rebooting the system (of course) leaving only XMS (HIMEM.SYS) would result in better performance. Obviously this wasn't an option for games and software that required EMS memory, but now that you mentioned that it puts the CPU in *Virtual-86* mode might be the explanation to the performance drop. On the other hand, this performance drop would not be felt on a high-end 486-DX4 machine or any Pentium computer due to them being significantly faster processors.
Very useful and thank you for the starter pack.
Nice video!
Memmaker does decent job in optimizing the memory, but the UMB can be optimized even further by placing the drivers/programs manually in the UMB. That can be achieved with the LOADHIGH's /L:x switch , where x is the number/ID of the UMB. You can find the UMB numbers/IDs by issuing MEM /F command. HIMEM.SYS/EMM386.EXE or similar must be loaded, of course.
On that topic, for those who use EMS memory: it's a good practice to manually set the beginning of the page frames, so there won't be two separate UMB blocks between those frames (the EMM386.EXE's FRAME=xxxx parameter).
Also, some programs like MSCDEX support partial loading in the HMA (/E parameter).
Using HIMEM.SYS/EMM386.EXE replacements, like JEMM/JEMMeX, can also squeeze some free conventional memory.
I want to thank you for uploading in 4k!
I remember coding my own games and demos using EMS memory and how much I hated that environment. I wanted to use DOS/4GW and linear memory but before Internet it was hard getting the information you needed.
Great nostalgia! Love the marketing @ 4:40 where they are trying to convince people the Conner drive may have slower response times but is more power efficient - saving 0.75W! Three quarters of a watt, that's just cute in today's world.
Dynamix games... making boot disks was hell sometimes. Like 603k needed or something crazy
awesome video ! brings soooo many memories me tweaking my 286 with 1MB of RAM to get some games working haha ! thank you !
Oh the old Memory layout of DOS the normal 640K of the OS and the rest in high or extended memory area. I remember those times very fondly. I remember having a Tandy 1000 286 with 768K of RAM and that sucker could run KQ4 SCI. I had like one memory issue with using DOS and that was trying to play Duke Nukem 3D with only 8mb of RAM and it required 16mb. The only other issues under DOS that I had is with IRQs and getting the sound drivers to wok.
I actually enjoyed the tinkering with all such problems and trying to solve them more than I enjoyed the actual eventual gaming :)
You're not alone! A lot of us for example like playing with the hardware more than actually playing games!
I remember pays my neighbour with a pack of cigarrete back in 98 for a copy of Prince of Persia to play in my junior high computer lab. We used to go there at night, playing games or just playing around with WordStar and lotus123 along with the teacher that responsible for the lab
Danke Phil, excellent content as always, this helped me a lot
Thank you for this video. Great content.
As a assembly developer in the day, I hated the x86 because of its idiotic memory with management compared to the Atari ST (or Amiga). Writing a TSR program was always like playing with the nuclear launch codes 😂Bringing the 386 and up in protected mode was a chore to get protected memory enabled and have contiguous access (if you need it) like we already had with the 68k.
Yeah, segmented memory sucks. It's also pretty lame that, during that short window where you had more than 640k, but not just tons and tons of memory, you were effectively wasting that 384k. There was actual RAM there backing those addresses, but it was being given to ROMs instead. (Unless you shadowed the ROMs to RAM for speed.) What a waste.
I managed to get Turrican 2 to run perfectly fine just by removing Upper memory in the configuration section of ms-dos mode under windows 95. So satisfying to get a game that is known to be hard to get running working properly. :)
I used a bat file that would ask if I was playing particular games then run the extra commands and adjust autoexec and configsys to what I was intended on doing.
Kind of left out one option to keep your UMB memory with no EMS activated just need to change EMM386 to "DEVICE=C:\DOS\EMM386.EXE NOEMS" which give you upper memory without having Expanded memory active
Yes and no. It still switches CPU from real mode to Virtual 8086 mode, which freaks out some games
@@SergiuszRoszczykAnd apps
I remember having a NOEMS command in some of my batch files. Haven’t heard/thought about in once in the 30-ish years. Then I read your post and it all came back to me.
Your videos are always jam packed with great information and are always very well polished. I think a great segway on this topic would be another video explaining what CONVENTION/EXPANDED/EXTENDED memory actually is and how the system uses it.
he only needs it for games, load it in high memory is enough
@@lucasrem I was asking for definitions.
"Not enough memory", the mysterious message from my childhood.
@@O.Shawabkeh I remember testing Wipeout from the PS1 on my DOS PC. Surprisingly I could access the disc and there was a WIPEOUT.EXE on it, but it always said "Not enough memory" no matter what I tried. 4 sure it was not meant for DOS either.
Awesome guide for the retro community! 🎉
Level 1 upgrade - where using EMS, move the page frame down to C800 running on from where the VGA BIOS finishes - this avoids splitting the upper memory (All the MEMAKER shenanigans is about dealing with split upper memory, optimizing the block fit).
Ninja level .... JEMMEX to provide both XMS and upper / EMS.
Double ninja level, using UMBPCI to create upper memory in real mode, which MAY work with software that does not tolerate V86 mode. MGDX has some guides... 644,048 free conventional memory
I remember those days. It was a meta game on it's own figuring out the memory management to get a game working was its own puzzle.
I have kept all my old startup config/autoexecs from back in the day. They are fairly similar to yours, although the language used in the menu options is a lot closer to what you'd expect from a teenager.
So many memories with DOS and older windows. I had issues with Lotus III when I tried to run on DOS mode in windows 98, I had to use MemMaker and it ran without any issues.
Major nostalgia with my early early PC endeavors. 386 and much time spent tweaking
With the Olympics in two weeks, starting with the Accolade Summer Athletics is super appropriate. :P
your wonderfully informative and educational video makes me want to run the Mac OS port of everything.
Ah man, I miss those colani-machines..
Hey you have zoomed out! THANK YOU! Love the channel but the too zoomed in shots were really jarring!
some more things worth mentioning:
before msdos 6.x, a very common thing to use was qemm. it did basically the same like msdos 6.x memmaker did, but way before msdos came out with it. i remember running qemm with msdos 3.31 and later with msdos 5.x, skipping the damn msdos 4.x completely, it just sucked.
another dos game worth mentioning was ultima 7, that came out with its own memory manager. i think it was called voodoo memory manager
Of all the people I'd expect to have access to a 286, you're the first on the list. We have to find you a proper 286 to play with!
Something I clearly do not miss from that era :)
I remember having to choose what drivers I really needed for some games as when all drivers were loaded, the amount of base memory left after loading all the drivers into high mem, UMB and where possible extended memory, didn't leave enough base memory for soem games.
I used to know how to optimize dos memory, but I can't remember! 😂
Also try Major Stryker! Great sound track!
I had a very complicated batch file.
Great content as usual!
Ahh memories of the early 1990s trying to get privateer to work. I never did manage to get it to work, but if I had access to this information then I think I would have.
AFAIK that game uses EMS, so would need EMM386.
@@philscomputerlab I vaguely recall having EMM386 on my machine, but I didn't know the techniques you showed for loading the drivers in to alternate memory regions. Another complication I remember is that I had a CDROM drive that required a very specific driver as it came with a dedicated interface card. I think I was able to get the amount of memory free needed, but only by not loading the CDROM driver and since the game was on CD, that was no help.
Nice, now I am curious how much memory my retro computers use. I might use this video as a help guide to try and improve the use of memory.
I had a fancy DOS startup menu back on my first PC. It had options to load Windows 95 as well as Linux using loadlin. I didn't have a bunch of memory options, since most of the DOS games I had were from the DOS4GW days.
DOS Memory management gets even more complicated if you're trying to run a big TSR driver like SBEMU on a newer system. Then you also have to worry about DPMI in 16 or 32 bit, VCPI, using the right memory manager to allow redirecting the DMA controller writes, and some games that still won't work for anything because they demand to be run from real mode and not v8086.
The toughest games to run were the ones that stuck with 16-bit and conventional memory past 1993, the DOS4GW era. They tended to require over 600K, up to around 620K if memory serves. That would be okay if nothing else was loaded but having that much free plus mouse, sound, and CD drivers was a huge ask. Even with upper memory, not everything went up there and there wasn't as much usable space as you might think with the 384KB claim.
The biggest afford was running them in protected modes !
Ugh, don't get me started on dealing with base memory. The time I spend tweak the sh!t out of my config.sys and autoexec.bat to load high, change order (because that also matters) and making menu options to not load certain things...
loadhigh helped for sure
I still remember those commands but didnt know about LH command.
But I wonder now what would happen if you just use LH in front of game executable?
I played a lot of Summer Challenge in the 90s!
Ah, the glory of dos=high & emm386 just so i can play master of magic in my 4mb 386
The main problem I had back then that these DOS tricks were poorly documented or at least access to them was not easy. Experience (checking friends' files etc.) was very important and mostly I was shooting blindly around. Wish we had videos like yours. Lack of documentation had always been a very unfortunate policy at Microsoft, which allowed Linux to gain traction over time.
Yes! I also had to use a keyboard driver, that used another few KB that US users didn't need. PC magazines were my main resource for knowledge back in those days...
Fantastic video. I wish this was around when i was figuring this all out last year. Heh.
Very helpful. Thank you!