In the fall of 1986, I installed my first Novell NetWare 86 non-dedicated server hosted on an HP Vectra. This was an early version of Novell Netware that was targeted at the PC XT level machines. It did not support extended memory of the 80286 nor the recently released expanded memory specification (EMS). The non-dedicated nature of NetWare 86 allowed the server code to run in background so the computer could also be used as a workstation. We had sold this as a 4 node ArcNet network to run Microsoft Word, which at this time was a DOS only program.The problem was the server didn’t have quite enough memory to run Word after NetWare 86 was running. I was able to get an 8-bit memory board that had selectable addressing placing and additional 64K at 0xA000. I know that the 8-bit memory would slow down the 16-bit machine, but we were desperate in those pre-Internet days. Since MS DOS 3.2 wouldn’t use the extra RAM automatically, I wrote a short program that was run in the AUTOEXEC.BAT that did the following: - If the ROM BIOS reported > 640K do nothing and exit. The amount of installed RAM was stored by the BIOS in memory location 0040:0013. - Test to see if and how much RAM existed in the 64K block at 0xA000. - If no extra memory was installed then do nothing and exit. - Otherwise update the total memory value in BIOS location 0040:0013 and do a warm reset. A warm reset was done by storing 0x1234 in location 0040:72 and calling the reset vector. The 0x1234 would tell the BIOS not to test the memory during the reboot leaving the altered total in place. -MS DOS would use the new memory value showing 704K of total RAM. This was not the most robust code, but it worked extremely well in this installation and ran for several years until they upgraded the network to NetWare 286 a few years later and relegated the old sever to a regular workstation. Fortunately we didn’t notice any speed issues using the 8-bit RAM.
Thanks for the memories! This is actually the first attempt I made (I only touch on it briefly in the video when I talk about "warm reboot") but for some reason it hung on reboot (I tried 3 versions of DOS). I was thinking about how to debug that when I realized I could just patch the boot sector and not worry about either warm or cold boots.
As a matter of fact, DOSBox-X has options to allow more than 640KB in this way, if you use machine=cgaonly, machine=mda, machine=hercules, though without emulating EMS in this way.
@@TheOldskoolPC Well, it was a 80286 with 16MHz. Run, slowly but did. If you play it nowadays in the emulator i think you have to throttle it down to a 80386 processer otherwise it runs way to fast to be playable
The production values in this video are insane. In a good way. I appreciate the attention to detail as much as I appreciate the perfectly symmetrical alignment of all your gear in the background. And not many other people can casually include incidental footage of their own rare memory expansion cards. Very interesting video.
Sure could have used this video 30 years ago! All jokes aside this is an interesting fact I did not know was a possibility without some extreme measures. Thanks for the video. Cheers.
I am extremely late to the Party, but I do recall reading all what was needed right out of the BIOS. What graphic Card etc. Write directly into the Video Memory. I used to be a rather good C Programmer, but kinda gave up on that many years ago. Recently returned to Linux.
As a kid I would lose it when my 640k was all gobbled up with drivers. Sometimes I couldn’t play a game because of 4kb 😢. Ahhh well at least I know the answer some 30 odd years later
Zenith's 8088 PC systems (Z148, Z158, etc.) advertised supporting up to 768K of RAM in what they called "non-compatible mode". Do you know anything about that? I suspect it has something to do with their older non-PC-compatible Z100 systems, but the brochures and listed specs don't mention anything about Z100 compatibility. I'll have to try making a Z100 MS-DOS boot disk and seeing if my Z148 will attempt to load it.
Unfortunately, I don't! I have a Z-160 series system and it looks like a regular clone to me (other than the *amazing* built-in ROM debugger). If you ever find out more, I'd be curious to learn about it.
Memory above 640K up to 1 Mb was called "Extended" memory and would run with a driver. Memory above 1 Mb was called "Expanded" Memory and would need yet another driver installed at boot up time by the Autoexec.bat file or the SYS file.
Ahhh, takes me back to the days when I worked on customer support, making Boot Disks for Wing Commander and Ultima 7..... The good old days of computers..
Great Video! I started with the TRS-80 in 1977 and went from BASIC to APL, Z-80 and 8080 Assembly, and a few other languages. Also, in my 20s, I worked at a Radio Shack Computer Center in Atlanta, where we started with models 2, 3, 4, 12, and 16, and went on to the PC Compatibles, Tandy 1000, 1200, and 2000. This is very informative and interesting, and your presentation is excellent. I subscribed immediately.
A very long time ago, I did similar to this. 486 DX2 66. I was not smart, but just used qemm. In one or 2 configurations. I do remember that I had 710k of free base memory for Doom with a mouse driver, cd access, DOS high, and HMA opened. After I went pentium (AMD) and did not look back.
I think did this with a High Mem Floppy I purchased at a software convention - but I remember getting 720k out of these at college. Thanks for the upload.
Very informative video and well made. Although most of this is goes beyond the available memory in my head, I'm sure it will be very helpful for many others
Love the screensaver in the background. Great info. Tandy 1000 TL /2 here, did the +128k dram. Keep hearing there are some compatibility issues with their setup
When I was a kid, at school there was Apricot computers, and these computers were very interesting for me, because at home I'd an IBM PC with 640KB of RAM and a 8088 but these machines had some unusual specs for the time, 768KB RAM, 8086, and 3.5 disk drive (vs 5.25 on IBM) + 2 OSes (DOS and CP/M) and were quite faster than my dad's actual (not clone) IBM PC 8088. I don't know other machines with those specs but I still remember them 40 years later. It was also, aesthetically, very similar to Edgar in Electric Dreams movie.
A rare experience! Apricot produced technically superior computers, but they were not strictly IBM PC compatible, which is why they eventually had to switch to being more compatible starting in 1986.
I never needed such sophisticated workarounds to get more free RAM in the conventional memory area. I just needed DOS 6.2 , EMS, XMS and my 486 to get enough RAM in conventional memory. I created the boot menu by myself without that automatic tool that was shipped with MS-DOS 6.x. As far as i can remember F-15 Strike Eagle 3 was the most demanding game i owned when we're talking bout conventional memory and this was released in 1992. The games that were released later, did use DOS Extenders and they solved the problem altogether. For my DOS boot menu i neded 5 options. These were: 1. DOS with EMS 2. DOS without EMS 3. DOS with EMS + CD-ROM drivers 4. DOS without EMS + CD-ROM drivers 5. Windows 3.1 These 5 dos boot options were enough to get every game and software working. I no more needed to create a boot disk just to run a game.
I remember when a local Microsoft representative came to talk to us about this wonderful new thing called OS/2. He was adamant that the 640K limit was somehow inherent to MS-DOS, when it was purely an issue with IBM PC (and compatible) hardware. The proof was, we had a DEC Rainbow in a room upstairs at the Comp Sci department, which had had its RAM upgraded to 896K. It sported dual Z-80 and 8088 processors, so it could run 3 operating systems: CP/M-80, CP/M-86, or MS-DOS.
The DEC Rainbow was a special machine; it was not IBM PC compatible, so its internal layout was different. I would love to own a DEC Rainbow someday; it had some really great high-res color graphics for the time, long before VGA.
Ah, what a good times... i'm a coder, nowadays we use C++/Java/C# or worse pseudo interpreted garbage languages, but this brings to me the era when i did those stuffs with MS-DOS machines... Seeing this video (UMB, Dos High Area, XMS, EMS A20 cpu line.... an assembly listing, wow ;-) ) remembered me all those times with a great deal of nostalgia.
There's a FOSS XT ROM BIOS called GLaBIOS that can be configured to look for conventional memory up to any segment. It also has an optional feature where the size of the tested RAM is based on the video type DIP switch selection - if MDA, it will look up to 704k, CGA to 736k. With this you can get that extra memory in DOS with no additional software. Most DOSes (I personally haven't found one that doesn't work this way) will happily use as much *contiguous* memory as conventional memory that is available as reported by the BIOS in the BDA. As long as your BIOS is willing to check for and report the RAM size you can (in theory) have 1016K of conventional memory if you were to run the PC without a video adapter and boot to DOS with `CTTY COM1` or something such to run it headless. Of course, that would break any software that didn't use DOS INT 21H for video I/O... but it'd be fun!
Good to know about GLaBIOS having those options. It also has configurable snow removal (you can trade speed for snow if you want) and other cool features.
fairly common knowledge in the 80's and 90's.... but most computers had EGA by the late 80's and VGA by the 90's, so this particular memory-extending method was largely useless. far more common was to map out the MDA and CGA memory areas and use them as "high" or "upper" memory. lots of TSR's and network driver stacks could be loaded high. there were other regions of upper memory that could be used as well. I actually had to dust off my dos memory management braincells about 5-6 years ago and install QEMM386 to make an old dos-based CNC mill work with a ISA-16 network card and MS network stack, and still have enough lower RAM to run the control software. fun stuff. (Having watched the full video now, I see you did cover some of these other methods)
I tend to concentrate on the first decade of PCs, and most 8088/8086 systems that I cover don't run EGA or VGA for hopefully obvious reasons (if not, I can elucidate). Once you hit 286s and higher with EGA or better, other methods are more appropriate.
@@TheOldskoolPC yes, after watching the entire video I regretted my initial comment a bit (it wasn't really meant to be as critical as it sounded, though there probably aren't any ways to dress up "largely useless" after the fact). I did do a good bit of work with 8088 systems with hercules mono graphics (a few green-screens, but more amber by then) way back then, but much more with 286's and 386's. During most of the 80's I primarily used Atari computers personally, though like anyone else I encountered Apple II's and PC's at school. My first computer was a VT102 terminal with a 300 baud manually dialed modem with which I connected to a DEC-10 mainframe. Good old days. This was actually the first of your videos I watched, I will watch more and try to reserve my comments until I've taken in the whole thing.
Hello Jim, Great work, I miss DOS to some extent, especially batch files and Semware's QEdit. QEdit used to be sooo handy for manipulating text files, and its ability to block text irregardless of line, and then delete or move those chunks of text was so bloody useful, though I do not remember specifically what I was using it for, I remember that I was making use of it a whole F of a lot, and that no other editor at the time (that I knew of anyway) could do this. I remembered later having run into Aurora, and this is how I found your channel. I thought that there might be an updated, current version of Aurora, but alas! I may be barking up the wrong tree here, you might not be programming macros enough to know the answer to this, but perhaps you might have suggestions as to which tree(s) I could go on to bark at. I save a lot of files by naming them as tags, e.g., I have a file called "GovernmentTakeoverOfBusinesses.jpg", this is how I've been naming my files, by capitalizing words and the words are a description of the contents, or tags. I have started to use a program called Obsidian to map my saved files (well the ones in certain directories anyway), and a big part of connecting files in Obsidian is by use of linked keywords, and so I was hoping to create such keywords out of my filenames, and by breaking down the filenames into the individualized capitalized words. So I thought I could make a listing of all the .jpgs I have in that folder, throw that list into Aurora, create a macro that would recognize a capitalized letter, take that letter and every letter up until the next capital, and at the end of the line put that string of letters in between square brackets, then the next, until it reached the period. At the end of every line of text I'd have keywords automatically created. For the example above, the line "Y:\GovernmentTakeoverOfBusinesses.jpg" would change to "Y:\GovernmentTakeoverOfBusinesses.jpg [[Government]] [[Takeover]] [[Business]]". I could subsequently run a macro that would look for "Y" at the beginning of the line, highlight that Y and every character up to three characters past ".", and then delete the highlight, which would leave only the bracketed words on that line. Two-letter words are ignored when creating the bracketed words, and as for 3-letter words, I could have a list of ignored words such as "and", "for", etc. The problem is that I could find no function within the Aurora functions and macros that would/could recognize a capitalized letter, or a case change. I might be able to convert every single character on the line to its equivalent ASCII decimal value, and then have a if/then check see if the value of the character falls within a certain range to detect when a character is going into the capitalized letters range, but before I go too crazy, I thought I'd check to see if you might know of another text editor that might have extended functionalities/capabilities such as I'm trying to get, or if you might know of someone who might know. Thanking you in advance for your time.
This is great! Do you think it can work in a ps/2 Model 25? It can hold 768kb with 4 NEC chips and 2 SIMM sockets, but can only normally address 640kb. It has an MCGA video adapter, so the EGA/VGA part should be free.
I know its two years later... but from my memory of the early 90s, I am fairly certain that you also have the option to disable the 64K EMS page frame on the AST EEMS cards which it usually placed at E000 which gets you another 64K available for UMBs to load network drivers or other big TSRs. The downside is that EMS supporting software (like Lotus 123) will no longer be able to access any of the other megabytes of memory on the card.
You're correct, although disabling EMS completely is, IMO, not worth the trade-off. I would rather have 640K + EMS than 704K without EMS... UNLESS you are 100% sure you will never ever need to run EMS programs on that system.
We had a computer shop in the early 90's and this was my specialty as a teenager, maxing out DOS memory for gamers. But I remember something like 612k or maybe 620k on SVGA was about the max I ever remember getting without using QEMM, just using Memmaker and built in stuff. Remember DoubleSpace and the other disk compression programs? LOL
The true solution is a better camera, which is planned. I was unable to avoid moire because my sensor is 16mp and tuned for photos; a GH5s has a 10mp sensor and less moire. It's worst in the QRAM OPTIMIZE section. That's why most of the screens are against a black background :-) Also, the shutter was 1/60 for all sections. 24p, 30p, 60p, doesn't matter as long as the shutter speed is 1/60 (or 1/59.9227 if possible, of course)
@@TheOldskoolPC Moire is the spawn of satan. Someone should come up with an anti-moire filter using one of those newfangled deep-learning neural network techniques... I've only seen various FFT-denoise algorithms that mitigate it (like FFmpeg's) but they introduce their own artifacts.
This is an awesome video for the 286, but I wonder if I have an XT with a 286 acceleration board such as breakthru 286 -12 MHz would the Lo tech 2M board be a good option for me?
The Lo-tech 2M board is an EMS board, so it's compatible with the XT no matter what. The Breakthru 286 does not appear to have any extended memory on it -- if it did, I would have recommended populating that first, but since it doesn't have any, there shouldn't be any conflicts. That said, EMS is not used by many programs, so you'd have to have a need to run a program that uses EMS before justifying the expansion.
Wonderful video! Not sure how I managed to miss this, Jim! I (unfortunately) have an Intel AboveBoard, so I'll see if I can get it to work, I used Monotechs card in my XT which was great but my new xt/286 with the lim card has no UMB so that's what I'd like to fix st least as it is more useful in some cases thatn having the 1.5MB of EMS!
For the majority of 808x and 286 software, freeing up as much of the lower DOS memory is always the better choice. That said, don't disable all 1.5 MB EMS just to get an extra 64K!
@@TheOldskoolPC since you have an AboveBoard yourself, do you know how to convert any of the lim memory to be conventional >640k? I couldn't find anything in the docs that could do that. I am using a 5162 w/640k ram already. I have a microram from monotech that I could pull if I really wanted to use it just for a few k in the UMB. Also, is there a reliable way to tell what areas of upper memory are allocated? I used to use check it but I haven't found it reliable
I hav had manupulated the MCB-Table from MSdos and pointed into the EGA/VGA area and it worked fine ( 701k free ) , it wrote it in turbopascal. First find the last MCB entry, second remove the endadress of that MCB and replace it with the endadress of the EGA/VGA memory.
I did try to do that for this video, actually, but for some reason I kept corrupting the MCB chain and couldn't figure out what I was doing. When I realized it wouldn't have helped anyway for boot processes, that's when I decided to explore the boot sector method.
Never knew that you could get more than 640k. I remember the frustration trying to free 627KB of conventional memory just so I could play 1942 the pacific air war on my 386.
Or 612K free for Falcon 3.0. On 386s with VGA, you have some options taken away, but you have others opened up (like, the 64K HMA on 286s and higher). It's a balancing act.
8-bit computers: Let's tack on bank-switching schemes! 16-bit computers: Let's develop 32-bit CPUs that are backwards compatible with the current ones.
What is that software I see in 1:44? While I do know of a memory map viewer (view_umb, originally for a german Upper Memory Board that has dissapeared from the internet but useable without it), but your memory map viewer looks completely different.
Bill gate did say that. I saw a video that I could not find again while in University in the late 80's where he actually say that "640 K ought to be enough for everybody".
There is a mountain of evidence that says otherwise, but if you can provide a link to the video you think you saw, you'll be a bonefide hero (seriously).
Qemm brings back old memories. :) My 1st PC i486dx2 66. Used Qemm to maximise space for dos games. Several different configs do I need cd or lan? Etc. Many happy hours on doom1/2 or simcity 2000. Never got to 740 base, needed VGA, but got to 640+ free, at dos prompt somewhat more if either no cd or network needed. Before my jump to pentium switched to a i486dx4dx 100 and managed to overclocked system clock to mostly stable 50Mhz so 150 clock. Was I think Intels penultimate 486 stepping.
Nice work! This is probably a dumb question, but why does the memory map appear to have 16-bit addresses? Shouldn't they be 20-bit addresses? Also on the memory map, it looks like the 640K area goes from 1000h to 9FFFh, but it must be from 0000h to 9FFFh to be 640K, right?
When making the video, I had to choose between using linear addressing, and segment:offset addressing. I found that most software messages use seg:ofs addressing (see the output of qram and dosmax in the video), and it also made it easier to explain, both visually and audibly, where things were. The memory map is introduced with the text "visualize this memory space divided into 64K segment boundaries" which does indeed describe the chart. Put another way, most x86 real-mode DOS programmers know that VGA memory starts at A000:0000. If I had tried to represent it using the 20-bit linear address A0000h, that would have confused people. Using seg:ofs notation is helpful in other ways; for example, it reminds you that DMA can't cross a 64K segment boundary, and what's displayed in the chart are those boundaries. As for the 640K going from 1000: to 9FFF:, the 640K label in that box is showing the total, not the available. Sorry if that wasn't clear. Hope that helps!
Still its confusing, specially because you actually didn’t explain it only talking about segments. And if you display a memory map, you expect real address space.
I needed something like 610kb of free low memory to get a pirated version of Strike Commander working. I spent days learning about loadhi to finally achieve it. I'd like to say it was good times but it was not. One of the reasons why my retro PCs start at W2K.
Instead of patching the boot sector, you could write your own. Or better yet write a new MBR to do what you want and then chain too a saved copy of the old MBR (which can be stored in the partition gap). With a couple of interrupt hooks you'll be able to manipulate a lot of the boot sequence including what MSDOS does.
I wonder if there's a way to up the RAM in an 8088 machine? I have a Compaq Portable 1 that has 640KB RAM (256KB on-board, 384KB on an AST SixPakPlus RAM RTC Serial card) and Lemmings runs slow and freezes up. It has an XT-CF card installed, CT1350B + CMS, Compaq VDU, Compaq Floppy and Parallel Card, and the AST SixPakPlus RAM RTC Serial card with an NEC D8088D CPU.
If you watch the video, you can see I used a Lo-Tech 1MB board to add 64K of RAM at segment A000, and then used a boot sector trick to have DOS recognize the extra RAM. But that's not why Lemmings is slow on your system -- Lemmings is slow on your system because a 4.77 MHz 8088 is just a bit too slow to run Lemmings. I know they list "PC/XT/Amstrad" etc. on the box, but that's wishful thinking. If you want to try a quick 20% speedup, replace the 8088 CPU with an NEC V20 CPU, which is about 20% faster on average. That might be enough of a boost for Lemmings to work better.
@@TheOldskoolPC I heard the V20 is far more superior than the Intel 8088 and that the CPU is a lot better. I'll order one and swap the D8088D and the V20 around.
What about machines that have 512kb? I had a Hyundai 286 that split the 1mb into 512k conventional mem (i think) and was frustrated that I couldn't get to run some games. Would the solutions worked for my case, although now I can't try it coz the machine was long gone.
I could never understand those early 286 machines that only offered the 512+512kb conventional-XMS split. Maybe they were being hopeful that new software would use XMS memory? IBM eventually settled on doing 640k+384k XMS on the PS/2 with BIOS shadowing taking part of the UMBs.
I wrote a small software doing it, i mean use the A000 segment with the lo tech card: simply increase the last MCB size. We can also extend more, we can place a dos reserved MCB at the B000 segment and continue the MCB chain after. I am surprized that extending the memory with a boot sector patch is possible. It means DOS don t do any check....
It's not mentioned in the video, but I did the same thing, rewrote the last MCB and placed a new final MCB at AFFF:0, but found it destroyed the upper memory block chain. I found virus code (of all things) that claimed to do everything properly, but when I was looking at it, I realized if I just patched the boot sector I could get DOS to just do everything properly. Plain vanilla MS-DOS doesn't do any check because EGA/VGA could be at A000, so it would have to be smart enough to realize if that's video memory or regular memory. Another commenter said there are DOS versions that check, I'd love to know which ones...
@@TheOldskoolPC Strange. It worked for me. Increasing the last mcb not adding another. I checked in the DOS code. The memory functions are really basic.
It worked for me when I didn't have UMBs. When I did, it still worked but the UMB chain got corrupted. I probably could have fixed it, but patching the boot sector was much simpler.
I did the MCB modification thing and there were issues with other applications. The most notorious way Netware driver as it modified the chain too but could do so incorrectly if an RPL had to be dealt with.
I remember I was using highmem.sys and I was set device high or dos = high commands in my autoexec.bat and I had 768kb memory. Also I used a program with name emm386.exe 🙂
Intel should have preserved the 8086 real-mode segment register addressing mode for the entire 16MB address space of the 80286; that way real mode DOS programs could have trivially accessed all the installed memory beyond the first 1 MB address space and there wouldn't have been all the perverse industry energy focused on squeezing out every drop of memory from the reserved io/system address area. If I were implementing an Intel 80286 in FPGA today, I'd add such a real mode addressing capability just to highlight how brain dead the 80286 implementation was for not doing that. Imagine if could write a Turbo Pascal or Turbo C program that runs as a real mode MS-DOS EXE program but is able to just keep using the same far addressing to access memory (both code and data) above 1 MB address range.
@@TheOldskoolPC Well, the 80386 delivered that - the segment registers get set and then ignored, all the addressing being via 32-bit registers. The 8088/8086 was designed in late 70s when 8-bit bus was the thing - and hence why the 8088 was the primary CPU at first to accommodate an 8-bit bus industry state of the art and economics. As a CPU it was internally an iteration beyond the 8080 and 8085. In a world where Z80 and 6502 chaps were all doing bank switching MMUs to access memory above 64K, the 8088/8086 was a breath of fresh air greater ease of programming when accessing more memory. Looking at the 65816, a next gen, mid 80s attempt of bringing the 6502 forward (used in the Apple IIgs), it was kind of similar in its approach - but not even as well executed as the 8086 design of 1977.
@@TheSulross Apple already had bank switching on the 8-bit Apple II platform, the IIgs just extended it to support more banks. Things get complicated with the "slow" RAM shadowing though.
The trick of course, is that the 8088 and 8086 actually have a whole 1mb of address space. DOS just corrals some of it to operate in. Change the behavior of DOS and you can reclaim some of it.
Do you think the LoTech 1MB board + your MBR patch method would work on an IBM AT 5170? I ask because I tried playing with a 1MB LoTech board in my AT once before but I vaguely recall that it may have locked up on POST if I enabled the switch for memory at A000. I remember there was one scenario where the machine wouldn't POST w/ the LoTech but I'm not 100% certain if this was it. MSD shows SOMETHING possibly already located at A000, just two dots right at A000 indicating "possibly available," then everything's free up to B000. It's a lot of work to get the machine torn down the way I have it set up now so I'm curious what you think before I consider trying this.
That depends on whether your AT already has RAM there. If your 5170 only counts up to 512K RAM, then your system probably doesn't have a memory board already in it, and you should be able to add the lotech board if you don't have EGA or VGA. But, I wouldn't necessarily recommend that because your AT can take 16-bit extended memory boards which will provide true XMS as well as a 64K high memory area (not covered in the video), and those can be more useful in the long run with an AT-class system.
@@TheOldskoolPC My AT has 512KB on the mobo plus a 16-bit BocaRAM board with another 6MB, configured as 128KB conventional (640KB total conventional) with remainder as extended memory. Yes I know this isn't practical but I have a reason for wanting to try the more-than-640k-conventional experiment. I do have a VGA card but MSD shows the memory space from 640K-704K as entirely unused with the tiny exception of those two (and sometimes only one) dots "possibly available" right at the 640K mark; still not sure what that's about.
Thanks for the infomation it's good to know what those ram expansion boards can be used for, but I have not seen them for sale on ebay, allso some 80386 motherboards can take special ram expansion boards but I have not seen those for sale so they must be rare and not wery common
All vintage hardware is getting hard to come by, but stock EMS boards can still be found on ebay and other places. The specific card in the video, the AT&T EMS board, is extremely rare, though.
They are, in fact, the same system :-) Just sold in the USA as the AT&T 6300. I've had 6300s for decades, I got a Xerox 6060 just last year, and an M24 finally this year. One of my favorite systems.
@@TheOldskoolPC Wow, that's the full M24 collection. Nice! I had mine since my dad brought it home in the early 90s. It didn't quite hold up to my friend's 386. ;) But I finally had a computer! It broke down at some point, but I restored and upgraded it two years ago. I still need to fix some keyboard membranes with some conductive paint and find a HDD that works with Xenix. :)
If you're on an 8086/8088 system, it's likely that you're using CGA, which starts at B800, which is what makes the trick work. If VGA, can't do this (although QRAM can extend RAM into VGA space if you are willing to limit yourself to VGA text mode).
A solid state hard drive was the usual way to get useful ramlike storage. The software would need hacks to make files look like RAM, but accessing real memory over 640k in DOS required hacks anyway.
Solid-state drives for 80s ISA hardware were quite prohibitively expensive, though. I've been collecting 8086-class systems for decades and I've never run across one. (on 286s and higher with 16-bit memory access, one can just make a RAM disk)
I Have a Tandy 1000 TL with a LoTech EMS Board, and 768K Ram as the RAM Has been added to move the 128K of Video Ram out of DOS's space. I also have a VGA Card. How can I optimize this?
You can't! That's as optimal as I can think to make it. You have 640K free DOS RAM, 128K of dedicated VRAM, and you also have EMS for programs that support it. The only way you could improve it is to get an EMS board that can map pages to other free spots above c000 to give you some UMBs, and then you could load drivers and TSRs up there. But you're already most of the way there already, there's not much more to improve.
It's not local to me, it was just the only thing I could find on somewhat short notice (I have my own VHS tapes I could have pulled from, but didn't have 10 hours to scan through them finding a decent back-from-break station ID) :-)
I'm wondering if you could have just removed/skiped the checks in vidram for a real VGA card with a bit of assembly hacking? Maybe, call the hacked version novidram or boardram
I spent 2 minutes forcing VGA detection on, but then it hung on additional VGA register writes and I decided to try something slightly less hacky :-) I agree that it could be hacked up completely to avoid all video hardware manipulation as well as trapping int 13h calls, but it would be much more of an undertaking than the boot sector patch turned out to be.
Awesome video. A minor point - Quarterdeck's QRAM is pronounced "cram". I thought it was pronounce Q-RAM like you did, but I ran across this just a few weeks ago. th-cam.com/video/aqmBIoNEd7g/w-d-xo.html
That's amazing!! I'd never heard a quarterdeck marketing person pronounce it until you forwarded that Computer Chronicles link! Thank you so much! Now I have 30 years of pronunciation to un-learn...
Correct! In fact, QRAM supports some of the 286 chipsets on those boards, which means it handles everything and you don't need my boot sector patch hack.
Some options definitely were, as you can see that in the advertising. Not all modes, though. The best way to use desqview on an 8086 is to use a hardware EEMS 3.2 or EMS 4.0 board and set it to backfill main memory from 128-640k. That way, Desqview can swap 512k chunks out instantly using the EMS board registers. It's slick.
Who knows, maybe you had an extra 64K on the motherboard and the BIOS was programmed to keep counting. I've seen a lot of interesting and strange clones.
It should be possible to get more free memory than that. In OS/2, DOS programs could use 730KB of conventional memory. I guess OS/2 used some tricks a stand alone DOS could not? Not sure which ones, though. I thought it all came down to loading drivers into high memory.
If the program didn't use graphics, that's the same trick as in the video (736K if a text-mode only monochrome program, no CGA or VGA graphics). And I loved OS/2 for that. I ran OS/2 as my primary environment for most of 1994.
Yep, EMM286 was a 1993 freeware program developed by Jjex Software, but all it did was emulate EMS out of existing extended memory. It didn't provide upper memory blocks, for example.
0:09 He may not have said that, but here’s one thing Microsoft definitely seems to believe, even today: “26 drive letters ought to be enough for anybody”.
Yes, they theoretically exist, but nobody it seems can figure them out. Also they are specific to NTFS, rather than being implemented at the filesystem-independent VFS layer as in Linux.
@@lawrencedoliveiro9104 can't AAA game or run office (I mean Excel not some free clone with 30% of the functionality) , I want to love Linux but other than stability improvements and changes so you don't have to open a shell to get it configured, what has changed over the past 5 years? Great dev platform, for grandma and grandpa or a millennial nope.
@@msromike123 I don’t know why you are bringing that up here. But how about something with, say, 1000% the functionality of Excel? th-cam.com/video/i40d8-Hu4vM/w-d-xo.html
So I have a Marrow Pivot 8088 laptop.. I want to do a retro video or a few on it but I have no software or anything else with a 5.25 drive.. Tried some YTers before but no one wanted to help :( wanna help?
Sure, if you're in the USA shoot me an email and I can mail a few disks to get you started. You should also see if you can use the methods described at www.minuszerodegrees.net/transfer/transfer.htm to make your own disks.
@@TheOldskoolPC where can I find your email? Mostly having an issue with finding disks and a drive than anything else.. was thinking I could steal the 2nd drive from the laptop lol
Yes and No. Even i you followed all the rules. Some programs would just crash. I remember memory mapping via a dos bible or encyclopedia book (you know before the internet.) doing those tricks. Plus extra memory board with software. Then finally dos 6 and dos=high,umb. I also remember the terrible memmaker program. I can't tell you how many people ran that and it started freezing comptuers. Thank goodness it was like f5? to not load any config.sys or autoexec.bat on boot. Keeping this in mind. With CD-Rom drivers and such. I got between 618-620 free all the time. Unless you have a program that needed like Buffers=60 instead of the buffers=40. I tried to re-create the same configs from years ago in a virtual box machine. But couldn't get it that high. It took me a while to remember most if it.
@@TheOldskoolPC I was in particular thinking about the Tiki-Data Tiki-100 with the 8088 expansion card, as well as the 186-based TeleNova Compis. Both are Scandinavian computers marketed towards schools in the early-mid 80s. Both machines fit in just where 256kbit RAM was getting cheaper, at the same time as the PC was not yet the de-facto standard in Europe.
Thanks for the clarification. Those aren't actually fully IBM PC compatible, which explains why their upper memory areas are arranged differently (but they do run MS-DOS, and I believe you're right, they recognize up to 768K)
@@TheOldskoolPC Yeah, that's what I meant with "non-PC releases". Not neccissarely "non-IBM", but rather non-PC-compatble. I wonder how difficult it could be to redesign a VGA card chipset to have its memory window higher in Memory. I know some who make new ISA VGA cards using old recovered or NOS chipsets from the 90s. All you have to do is to flip some address lines in particular memory access cycles, something that could easily be implemented on a simple PAL-chip. Reconfiguring the ROM extension wouldn't be too hard either, given we have really efficient dissassembly tools around these days.
@@TheMovieCreator How do you make the video memory available to those who want to draw and make regular memory available to those who want storage? Essentially this all boils down to recreating a memory management unit where you can divorce physical memory addresses from mapped addresses--exactly what you get in 386 protected mode with paging.
I restored a XT compatible machine that has only 128k on board I use a combo card XT-IDE / 1 mb memory extension board and it use USE!UMBS freeware as a driver for high memory management, running DR DOS 6 I have over 700k free *video is CGA) and DR DOS memory manager put a few drivers in high dos no patching of any kind reqyured
fascinating stuff. i never knew you could go beyond 640k. excellent video Jim !
Coming from you, that means a lot to me. Thanks!
Qemm was a godsend.
In the fall of 1986, I installed my first Novell NetWare 86 non-dedicated server hosted on an HP Vectra. This was an early version of Novell Netware that was targeted at the PC XT level machines. It did not support extended memory of the 80286 nor the recently released expanded memory specification (EMS).
The non-dedicated nature of NetWare 86 allowed the server code to run in background so the computer could also be used as a workstation. We had sold this as a 4 node ArcNet network to run Microsoft Word, which at this time was a DOS only program.The problem was the server didn’t have quite enough memory to run Word after NetWare 86 was running.
I was able to get an 8-bit memory board that had selectable addressing placing and additional 64K at 0xA000. I know that the 8-bit memory would slow down the 16-bit machine, but we were desperate in those pre-Internet days.
Since MS DOS 3.2 wouldn’t use the extra RAM automatically, I wrote a short program that was run in the AUTOEXEC.BAT that did the following:
- If the ROM BIOS reported > 640K do nothing and exit. The amount of installed RAM was stored by the BIOS in memory location 0040:0013.
- Test to see if and how much RAM existed in the 64K block at 0xA000.
- If no extra memory was installed then do nothing and exit.
- Otherwise update the total memory value in BIOS location 0040:0013 and do a warm reset. A warm reset was done by storing 0x1234 in location 0040:72 and calling the reset vector. The 0x1234 would tell the BIOS not to test the memory during the reboot leaving the altered total in place.
-MS DOS would use the new memory value showing 704K of total RAM.
This was not the most robust code, but it worked extremely well in this installation and ran for several years until they upgraded the network to NetWare 286 a few years later and relegated the old sever to a regular workstation. Fortunately we didn’t notice any speed issues using the 8-bit RAM.
Thanks for the memories! This is actually the first attempt I made (I only touch on it briefly in the video when I talk about "warm reboot") but for some reason it hung on reboot (I tried 3 versions of DOS). I was thinking about how to debug that when I realized I could just patch the boot sector and not worry about either warm or cold boots.
As a matter of fact, DOSBox-X has options to allow more than 640KB in this way, if you use machine=cgaonly, machine=mda, machine=hercules, though without emulating EMS in this way.
Good to know, although knowing you and DOSBOX-X, I'm not surprised :-)
Yes, fiddeling with Autoexec.bat and Config.sys. Those were the days. Was so happy getting WIng Commander running on my 80286
That must have been a very slow experience! I always wondered why they didn't state the minimum speed was 16MHz or something.
@@TheOldskoolPC Well, it was a 80286 with 16MHz. Run, slowly but did. If you play it nowadays in the emulator i think you have to throttle it down to a 80386 processer otherwise it runs way to fast to be playable
The production values in this video are insane. In a good way. I appreciate the attention to detail as much as I appreciate the perfectly symmetrical alignment of all your gear in the background. And not many other people can casually include incidental footage of their own rare memory expansion cards. Very interesting video.
I try to hide goodies for the connoisseur in my videos from time to time :-)
Sure could have used this video 30 years ago!
All jokes aside this is an interesting fact I did not know was a possibility without some extreme measures. Thanks for the video. Cheers.
yes i have used it bevore 29 years :-)
I am extremely late to the Party, but I do recall reading all what was needed right out of the BIOS. What graphic Card etc. Write directly into the Video Memory. I used to be a rather good C Programmer, but kinda gave up on that many years ago. Recently returned to Linux.
As a kid I would lose it when my 640k was all gobbled up with drivers. Sometimes I couldn’t play a game because of 4kb 😢. Ahhh well at least I know the answer some 30 odd years later
Zenith's 8088 PC systems (Z148, Z158, etc.) advertised supporting up to 768K of RAM in what they called "non-compatible mode". Do you know anything about that? I suspect it has something to do with their older non-PC-compatible Z100 systems, but the brochures and listed specs don't mention anything about Z100 compatibility. I'll have to try making a Z100 MS-DOS boot disk and seeing if my Z148 will attempt to load it.
Unfortunately, I don't! I have a Z-160 series system and it looks like a regular clone to me (other than the *amazing* built-in ROM debugger). If you ever find out more, I'd be curious to learn about it.
I have a marrow pivot 8088 which zenith eventually cloned..but its a lunchbox portable
I've got a Z-159 and am looking forward to trying this out.
Memory above 640K up to 1 Mb was called "Extended" memory and would run with a driver. Memory above 1 Mb was called "Expanded" Memory and would need yet another driver installed at boot up time by the Autoexec.bat file or the SYS file.
I don't even remember subbing to this chan, but I'm glad I did. Good vid!
I'll take it!
Very informative. I've used QEMM 8 on my Packard Bell and having more free conventional RAM was the best feeling.
Ahhh, takes me back to the days when I worked on customer support, making Boot Disks for Wing Commander and Ultima 7..... The good old days of computers..
Wow. I wish I knew about this back in the 90s!
Really interesting stuff. First video of yours I've found, thanks to DOScember! Instant sub. :)
same here :-)
Great Video! I started with the TRS-80 in 1977 and went from BASIC to APL, Z-80 and 8080 Assembly, and a few other languages. Also, in my 20s, I worked at a Radio Shack Computer Center in Atlanta, where we started with models 2, 3, 4, 12, and 16, and went on to the PC Compatibles, Tandy 1000, 1200, and 2000. This is very informative and interesting, and your presentation is excellent. I subscribed immediately.
A very long time ago, I did similar to this. 486 DX2 66. I was not smart, but just used qemm. In one or 2 configurations. I do remember that I had 710k of free base memory for Doom with a mouse driver, cd access, DOS high, and HMA opened.
After I went pentium (AMD) and did not look back.
Qwmm rocked. Though AMD k6 you probably had is compatible with Intel Pentium it shows how effective tv commercials are makings you think Pentium.
amazing content! still remember the days when we struggled to load a mouse driver and run the software!
Thanks to the vintage computer hobby, I still have those days :-)
Excellent Video Jim! I've been playing around with moving my Leading Edge Model D back to MDA, so this is timely.
I think did this with a High Mem Floppy I purchased at a software convention - but I remember getting 720k out of these at college. Thanks for the upload.
you should be proud of everything you do. it's great stuff!
Bill Gates said that in interview when introduced new 8086
This is some hardcore memory management! Thats one of the messiest parts of DOS.
Very informative video and well made. Although most of this is goes beyond the available memory in my head, I'm sure it will be very helpful for many others
Was worth the time to learn AE :-)
Wow, you managed to unfuck my brain about DOS memory. Thanks for that!
Love the screensaver in the background. Great info. Tandy 1000 TL /2 here, did the +128k dram. Keep hearing there are some compatibility issues with their setup
There will be less compatibility issues now that you added the 128K dram :-)
I find it odd that I didn’t find your channel earlier.
Consider me subscribed!
I remember using QRAM/QEMM in the old days to get more base memory. QEMM optimisation worked quite well on 386's
When I was a kid, at school there was Apricot computers, and these computers were very interesting for me, because at home I'd an IBM PC with 640KB of RAM and a 8088 but these machines had some unusual specs for the time, 768KB RAM, 8086, and 3.5 disk drive (vs 5.25 on IBM) + 2 OSes (DOS and CP/M) and were quite faster than my dad's actual (not clone) IBM PC 8088. I don't know other machines with those specs but I still remember them 40 years later.
It was also, aesthetically, very similar to Edgar in Electric Dreams movie.
A rare experience! Apricot produced technically superior computers, but they were not strictly IBM PC compatible, which is why they eventually had to switch to being more compatible starting in 1986.
How have I not found your channel before now? :O
Good stuff, bro.
I never needed such sophisticated workarounds to get more free RAM in the conventional memory area. I just needed DOS 6.2 , EMS, XMS and my 486 to get enough RAM in conventional memory. I created the boot menu by myself without that automatic tool that was shipped with MS-DOS 6.x. As far as i can remember F-15 Strike Eagle 3 was the most demanding game i owned when we're talking bout conventional memory and this was released in 1992.
The games that were released later, did use DOS Extenders and they solved the problem altogether.
For my DOS boot menu i neded 5 options.
These were:
1. DOS with EMS
2. DOS without EMS
3. DOS with EMS + CD-ROM drivers
4. DOS without EMS + CD-ROM drivers
5. Windows 3.1
These 5 dos boot options were enough to get every game and software working. I no more needed to create a boot disk just to run a game.
This was made possible thanks to your 486 :) For those with 286s and earlier, more hoops (illustrated in the video) were necessary to jump through.
@@TheOldskoolPC With a 286 you could load around 64K of software in the high memory area above the UMA.
I had an Intel Above Board with 3MB, which I used as a disk cache.
Such a polished and we'll explained video. Thank you
Years ago, I used to do this on EPSON computers - thanks for the memories!
I remember when a local Microsoft representative came to talk to us about this wonderful new thing called OS/2. He was adamant that the 640K limit was somehow inherent to MS-DOS, when it was purely an issue with IBM PC (and compatible) hardware. The proof was, we had a DEC Rainbow in a room upstairs at the Comp Sci department, which had had its RAM upgraded to 896K. It sported dual Z-80 and 8088 processors, so it could run 3 operating systems: CP/M-80, CP/M-86, or MS-DOS.
The DEC Rainbow was a special machine; it was not IBM PC compatible, so its internal layout was different. I would love to own a DEC Rainbow someday; it had some really great high-res color graphics for the time, long before VGA.
Ah, what a good times... i'm a coder, nowadays we use C++/Java/C# or worse pseudo interpreted garbage languages, but this brings to me the era when i did those stuffs with MS-DOS machines... Seeing this video (UMB, Dos High Area, XMS, EMS A20 cpu line.... an assembly listing, wow ;-) ) remembered me all those times with a great deal of nostalgia.
Your video qualifies for the DOScember series!
That's good, since I'm in the official playlist ;-)
736K finally ought to be enough for everybody. :)
One would hope!
There's a FOSS XT ROM BIOS called GLaBIOS that can be configured to look for conventional memory up to any segment. It also has an optional feature where the size of the tested RAM is based on the video type DIP switch selection - if MDA, it will look up to 704k, CGA to 736k. With this you can get that extra memory in DOS with no additional software.
Most DOSes (I personally haven't found one that doesn't work this way) will happily use as much *contiguous* memory as conventional memory that is available as reported by the BIOS in the BDA. As long as your BIOS is willing to check for and report the RAM size you can (in theory) have 1016K of conventional memory if you were to run the PC without a video adapter and boot to DOS with `CTTY COM1` or something such to run it headless. Of course, that would break any software that didn't use DOS INT 21H for video I/O... but it'd be fun!
Good to know about GLaBIOS having those options. It also has configurable snow removal (you can trade speed for snow if you want) and other cool features.
fairly common knowledge in the 80's and 90's.... but most computers had EGA by the late 80's and VGA by the 90's, so this particular memory-extending method was largely useless.
far more common was to map out the MDA and CGA memory areas and use them as "high" or "upper" memory. lots of TSR's and network driver stacks could be loaded high. there were other regions of upper memory that could be used as well. I actually had to dust off my dos memory management braincells about 5-6 years ago and install QEMM386 to make an old dos-based CNC mill work with a ISA-16 network card and MS network stack, and still have enough lower RAM to run the control software. fun stuff.
(Having watched the full video now, I see you did cover some of these other methods)
I tend to concentrate on the first decade of PCs, and most 8088/8086 systems that I cover don't run EGA or VGA for hopefully obvious reasons (if not, I can elucidate). Once you hit 286s and higher with EGA or better, other methods are more appropriate.
@@TheOldskoolPC yes, after watching the entire video I regretted my initial comment a bit (it wasn't really meant to be as critical as it sounded, though there probably aren't any ways to dress up "largely useless" after the fact). I did do a good bit of work with 8088 systems with hercules mono graphics (a few green-screens, but more amber by then) way back then, but much more with 286's and 386's. During most of the 80's I primarily used Atari computers personally, though like anyone else I encountered Apple II's and PC's at school. My first computer was a VT102 terminal with a 300 baud manually dialed modem with which I connected to a DEC-10 mainframe. Good old days. This was actually the first of your videos I watched, I will watch more and try to reserve my comments until I've taken in the whole thing.
Hello Jim,
Great work, I miss DOS to some extent, especially batch files and Semware's QEdit. QEdit used to be sooo handy for manipulating text files, and its ability to block text irregardless of line, and then delete or move those chunks of text was so bloody useful, though I do not remember specifically what I was using it for, I remember that I was making use of it a whole F of a lot, and that no other editor at the time (that I knew of anyway) could do this.
I remembered later having run into Aurora, and this is how I found your channel. I thought that there might be an updated, current version of Aurora, but alas!
I may be barking up the wrong tree here, you might not be programming macros enough to know the answer to this, but perhaps you might have suggestions as to which tree(s) I could go on to bark at.
I save a lot of files by naming them as tags, e.g., I have a file called "GovernmentTakeoverOfBusinesses.jpg", this is how I've been naming my files, by capitalizing words and the words are a description of the contents, or tags.
I have started to use a program called Obsidian to map my saved files (well the ones in certain directories anyway), and a big part of connecting files in Obsidian is by use of linked keywords, and so I was hoping to create such keywords out of my filenames, and by breaking down the filenames into the individualized capitalized words.
So I thought I could make a listing of all the .jpgs I have in that folder, throw that list into Aurora, create a macro that would recognize a capitalized letter, take that letter and every letter up until the next capital, and at the end of the line put that string of letters in between square brackets, then the next, until it reached the period. At the end of every line of text I'd have keywords automatically created. For the example above, the line "Y:\GovernmentTakeoverOfBusinesses.jpg" would change to "Y:\GovernmentTakeoverOfBusinesses.jpg [[Government]] [[Takeover]] [[Business]]". I could subsequently run a macro that would look for "Y" at the beginning of the line, highlight that Y and every character up to three characters past ".", and then delete the highlight, which would leave only the bracketed words on that line. Two-letter words are ignored when creating the bracketed words, and as for 3-letter words, I could have a list of ignored words such as "and", "for", etc.
The problem is that I could find no function within the Aurora functions and macros that would/could recognize a capitalized letter, or a case change. I might be able to convert every single character on the line to its equivalent ASCII decimal value, and then have a if/then check see if the value of the character falls within a certain range to detect when a character is going into the capitalized letters range, but before I go too crazy, I thought I'd check to see if you might know of another text editor that might have extended functionalities/capabilities such as I'm trying to get, or if you might know of someone who might know.
Thanking you in advance for your time.
I'm afraid I can't help with that; for such a task, I would likely try to do it with a combination of sed and regular expressions.
This is great!
Do you think it can work in a ps/2 Model 25?
It can hold 768kb with 4 NEC chips and 2 SIMM sockets, but can only normally address 640kb. It has an MCGA video adapter, so the EGA/VGA part should be free.
Unfortunately, MCGA occupies A000, so you can't. Sorry!
@@TheOldskoolPC Ohhh well, it was worth asking :)
I know its two years later... but from my memory of the early 90s, I am fairly certain that you also have the option to disable the 64K EMS page frame on the AST EEMS cards which it usually placed at E000 which gets you another 64K available for UMBs to load network drivers or other big TSRs. The downside is that EMS supporting software (like Lotus 123) will no longer be able to access any of the other megabytes of memory on the card.
You're correct, although disabling EMS completely is, IMO, not worth the trade-off. I would rather have 640K + EMS than 704K without EMS... UNLESS you are 100% sure you will never ever need to run EMS programs on that system.
We had a computer shop in the early 90's and this was my specialty as a teenager, maxing out DOS memory for gamers. But I remember something like 612k or maybe 620k on SVGA was about the max I ever remember getting without using QEMM, just using Memmaker and built in stuff. Remember DoubleSpace and the other disk compression programs? LOL
Hope to do a video on the disk compression software and hardware someday :-)
TFW you can figure out the boot sector patching details, but not the elite CRT-filming skillz. :) Well done!
The true solution is a better camera, which is planned. I was unable to avoid moire because my sensor is 16mp and tuned for photos; a GH5s has a 10mp sensor and less moire. It's worst in the QRAM OPTIMIZE section. That's why most of the screens are against a black background :-)
Also, the shutter was 1/60 for all sections. 24p, 30p, 60p, doesn't matter as long as the shutter speed is 1/60 (or 1/59.9227 if possible, of course)
@@TheOldskoolPC Moire is the spawn of satan. Someone should come up with an anti-moire filter using one of those newfangled deep-learning neural network techniques... I've only seen various FFT-denoise algorithms that mitigate it (like FFmpeg's) but they introduce their own artifacts.
Great dos work and demonstration
This is an awesome video for the 286, but I wonder if I have an XT with a 286 acceleration board such as breakthru 286 -12 MHz would the Lo tech 2M board be a good option for me?
The Lo-tech 2M board is an EMS board, so it's compatible with the XT no matter what. The Breakthru 286 does not appear to have any extended memory on it -- if it did, I would have recommended populating that first, but since it doesn't have any, there shouldn't be any conflicts. That said, EMS is not used by many programs, so you'd have to have a need to run a program that uses EMS before justifying the expansion.
Wonderful video! Not sure how I managed to miss this, Jim! I (unfortunately) have an Intel AboveBoard, so I'll see if I can get it to work, I used Monotechs card in my XT which was great but my new xt/286 with the lim card has no UMB so that's what I'd like to fix st least as it is more useful in some cases thatn having the 1.5MB of EMS!
For the majority of 808x and 286 software, freeing up as much of the lower DOS memory is always the better choice. That said, don't disable all 1.5 MB EMS just to get an extra 64K!
@@TheOldskoolPC since you have an AboveBoard yourself, do you know how to convert any of the lim memory to be conventional >640k? I couldn't find anything in the docs that could do that.
I am using a 5162 w/640k ram already. I have a microram from monotech that I could pull if I really wanted to use it just for a few k in the UMB.
Also, is there a reliable way to tell what areas of upper memory are allocated? I used to use check it but I haven't found it reliable
I hav had manupulated the MCB-Table from MSdos and pointed into the EGA/VGA area and it worked fine ( 701k free ) , it wrote it in turbopascal.
First find the last MCB entry, second remove the endadress of that MCB and replace it with the endadress of the EGA/VGA memory.
I did try to do that for this video, actually, but for some reason I kept corrupting the MCB chain and couldn't figure out what I was doing. When I realized it wouldn't have helped anyway for boot processes, that's when I decided to explore the boot sector method.
Never knew that you could get more than 640k. I remember the frustration trying to free 627KB of conventional memory just so I could play 1942 the pacific air war on my 386.
Or 612K free for Falcon 3.0. On 386s with VGA, you have some options taken away, but you have others opened up (like, the 64K HMA on 286s and higher). It's a balancing act.
@@TheOldskoolPC himem.sys is your friend
8-bit computers: Let's tack on bank-switching schemes!
16-bit computers: Let's develop 32-bit CPUs that are backwards compatible with the current ones.
What is that software I see in 1:44? While I do know of a memory map viewer (view_umb, originally for a german Upper Memory Board that has dissapeared from the internet but useable without it), but your memory map viewer looks completely different.
That is one of the views of Quarterdeck Manifest, which came with both QRAM and QEMM.
Bill gate did say that. I saw a video that I could not find again while in University in the late 80's where he actually say that "640 K ought to be enough for everybody".
There is a mountain of evidence that says otherwise, but if you can provide a link to the video you think you saw, you'll be a bonefide hero (seriously).
I love those good old days :))) Good Video.
Qemm brings back old memories. :)
My 1st PC i486dx2 66. Used Qemm to maximise space for dos games. Several different configs do I need cd or lan? Etc. Many happy hours on doom1/2 or simcity 2000. Never got to 740 base, needed VGA, but got to 640+ free, at dos prompt somewhat more if either no cd or network needed.
Before my jump to pentium switched to a i486dx4dx 100 and managed to overclocked system clock to mostly stable 50Mhz so 150 clock. Was I think Intels penultimate 486 stepping.
Nice work! This is probably a dumb question, but why does the memory map appear to have 16-bit addresses? Shouldn't they be 20-bit addresses? Also on the memory map, it looks like the 640K area goes from 1000h to 9FFFh, but it must be from 0000h to 9FFFh to be 640K, right?
When making the video, I had to choose between using linear addressing, and segment:offset addressing. I found that most software messages use seg:ofs addressing (see the output of qram and dosmax in the video), and it also made it easier to explain, both visually and audibly, where things were. The memory map is introduced with the text "visualize this memory space divided into 64K segment boundaries" which does indeed describe the chart.
Put another way, most x86 real-mode DOS programmers know that VGA memory starts at A000:0000. If I had tried to represent it using the 20-bit linear address A0000h, that would have confused people.
Using seg:ofs notation is helpful in other ways; for example, it reminds you that DMA can't cross a 64K segment boundary, and what's displayed in the chart are those boundaries.
As for the 640K going from 1000: to 9FFF:, the 640K label in that box is showing the total, not the available. Sorry if that wasn't clear.
Hope that helps!
@@TheOldskoolPC Thanks for the answers! My inexperience with x86 is showing :)
You've forgotten more about x86 than I will ever learn about 6502! :-) It's all good
Still its confusing, specially because you actually didn’t explain it only talking about segments. And if you display a memory map, you expect real address space.
I needed something like 610kb of free low memory to get a pirated version of Strike Commander working. I spent days learning about loadhi to finally achieve it. I'd like to say it was good times but it was not. One of the reasons why my retro PCs start at W2K.
Instead of patching the boot sector, you could write your own. Or better yet write a new MBR to do what you want and then chain too a saved copy of the old MBR (which can be stored in the partition gap). With a couple of interrupt hooks you'll be able to manipulate a lot of the boot sequence including what MSDOS does.
Very true -- but a bit out of scope for this specific topic.
I wonder if there's a way to up the RAM in an 8088 machine? I have a Compaq Portable 1 that has 640KB RAM (256KB on-board, 384KB on an AST SixPakPlus RAM RTC Serial card) and Lemmings runs slow and freezes up.
It has an XT-CF card installed, CT1350B + CMS, Compaq VDU, Compaq Floppy and Parallel Card, and the AST SixPakPlus RAM RTC Serial card with an NEC D8088D CPU.
If you watch the video, you can see I used a Lo-Tech 1MB board to add 64K of RAM at segment A000, and then used a boot sector trick to have DOS recognize the extra RAM. But that's not why Lemmings is slow on your system -- Lemmings is slow on your system because a 4.77 MHz 8088 is just a bit too slow to run Lemmings. I know they list "PC/XT/Amstrad" etc. on the box, but that's wishful thinking. If you want to try a quick 20% speedup, replace the 8088 CPU with an NEC V20 CPU, which is about 20% faster on average. That might be enough of a boost for Lemmings to work better.
@@TheOldskoolPC I heard the V20 is far more superior than the Intel 8088 and that the CPU is a lot better. I'll order one and swap the D8088D and the V20 around.
What about machines that have 512kb? I had a Hyundai 286 that split the 1mb into 512k conventional mem (i think) and was frustrated that I couldn't get to run some games. Would the solutions worked for my case, although now I can't try it coz the machine was long gone.
The lo-tech card mentioned in the video and the description can map RAM to 8000 and 9000 too, so it could solve both issues for you.
I could never understand those early 286 machines that only offered the 512+512kb conventional-XMS split. Maybe they were being hopeful that new software would use XMS memory? IBM eventually settled on doing 640k+384k XMS on the PS/2 with BIOS shadowing taking part of the UMBs.
I wrote a small software doing it, i mean use the A000 segment with the lo tech card: simply increase the last MCB size.
We can also extend more, we can place a dos reserved MCB at the B000 segment and continue the MCB chain after.
I am surprized that extending the memory with a boot sector patch is possible. It means DOS don t do any check....
It's not mentioned in the video, but I did the same thing, rewrote the last MCB and placed a new final MCB at AFFF:0, but found it destroyed the upper memory block chain. I found virus code (of all things) that claimed to do everything properly, but when I was looking at it, I realized if I just patched the boot sector I could get DOS to just do everything properly.
Plain vanilla MS-DOS doesn't do any check because EGA/VGA could be at A000, so it would have to be smart enough to realize if that's video memory or regular memory. Another commenter said there are DOS versions that check, I'd love to know which ones...
@@TheOldskoolPC Strange. It worked for me. Increasing the last mcb not adding another. I checked in the DOS code. The memory functions are really basic.
We probably can t have 2 free mcb block one after the other. The memory free function re assemble the blocks and may be disturbed by this.
It worked for me when I didn't have UMBs. When I did, it still worked but the UMB chain got corrupted. I probably could have fixed it, but patching the boot sector was much simpler.
I did the MCB modification thing and there were issues with other applications. The most notorious way Netware driver as it modified the chain too but could do so incorrectly if an RPL had to be dealt with.
I remember I was using highmem.sys and I was set device high or dos = high commands in my autoexec.bat and I had 768kb memory. Also I used a program with name emm386.exe 🙂
Intel should have preserved the 8086 real-mode segment register addressing mode for the entire 16MB address space of the 80286; that way real mode DOS programs could have trivially accessed all the installed memory beyond the first 1 MB address space and there wouldn't have been all the perverse industry energy focused on squeezing out every drop of memory from the reserved io/system address area. If I were implementing an Intel 80286 in FPGA today, I'd add such a real mode addressing capability just to highlight how brain dead the 80286 implementation was for not doing that. Imagine if could write a Turbo Pascal or Turbo C program that runs as a real mode MS-DOS EXE program but is able to just keep using the same far addressing to access memory (both code and data) above 1 MB address range.
I've always wished that the 8086 seg:ofs register combo would simply be a 32-bit linear address. That would have simplified SO many things...
@@TheOldskoolPC Well, the 80386 delivered that - the segment registers get set and then ignored, all the addressing being via 32-bit registers.
The 8088/8086 was designed in late 70s when 8-bit bus was the thing - and hence why the 8088 was the primary CPU at first to accommodate an 8-bit bus industry state of the art and economics. As a CPU it was internally an iteration beyond the 8080 and 8085. In a world where Z80 and 6502 chaps were all doing bank switching MMUs to access memory above 64K, the 8088/8086 was a breath of fresh air greater ease of programming when accessing more memory.
Looking at the 65816, a next gen, mid 80s attempt of bringing the 6502 forward (used in the Apple IIgs), it was kind of similar in its approach - but not even as well executed as the 8086 design of 1977.
@@TheSulross Apple already had bank switching on the 8-bit Apple II platform, the IIgs just extended it to support more banks. Things get complicated with the "slow" RAM shadowing though.
Wow, wish I knew all this in the 80s and early 90s.
The trick of course, is that the 8088 and 8086 actually have a whole 1mb of address space. DOS just corrals some of it to operate in. Change the behavior of DOS and you can reclaim some of it.
Do you think the LoTech 1MB board + your MBR patch method would work on an IBM AT 5170? I ask because I tried playing with a 1MB LoTech board in my AT once before but I vaguely recall that it may have locked up on POST if I enabled the switch for memory at A000. I remember there was one scenario where the machine wouldn't POST w/ the LoTech but I'm not 100% certain if this was it. MSD shows SOMETHING possibly already located at A000, just two dots right at A000 indicating "possibly available," then everything's free up to B000. It's a lot of work to get the machine torn down the way I have it set up now so I'm curious what you think before I consider trying this.
That depends on whether your AT already has RAM there. If your 5170 only counts up to 512K RAM, then your system probably doesn't have a memory board already in it, and you should be able to add the lotech board if you don't have EGA or VGA. But, I wouldn't necessarily recommend that because your AT can take 16-bit extended memory boards which will provide true XMS as well as a 64K high memory area (not covered in the video), and those can be more useful in the long run with an AT-class system.
@@TheOldskoolPC My AT has 512KB on the mobo plus a 16-bit BocaRAM board with another 6MB, configured as 128KB conventional (640KB total conventional) with remainder as extended memory. Yes I know this isn't practical but I have a reason for wanting to try the more-than-640k-conventional experiment. I do have a VGA card but MSD shows the memory space from 640K-704K as entirely unused with the tiny exception of those two (and sometimes only one) dots "possibly available" right at the 640K mark; still not sure what that's about.
@@angieandretti probably, that's EBIOS Data area.
Thanks for the infomation it's good to know what those ram expansion boards can be used for, but I have not seen them for sale on ebay, allso some 80386 motherboards can take special ram expansion boards but I have not seen those for sale so they must be rare and not wery common
All vintage hardware is getting hard to come by, but stock EMS boards can still be found on ebay and other places. The specific card in the video, the AT&T EMS board, is extremely rare, though.
Great explanation! My Olivetti M24 greets what looks like its AT&T PC 6300 brother.
They are, in fact, the same system :-) Just sold in the USA as the AT&T 6300. I've had 6300s for decades, I got a Xerox 6060 just last year, and an M24 finally this year. One of my favorite systems.
@@TheOldskoolPC Wow, that's the full M24 collection. Nice!
I had mine since my dad brought it home in the early 90s. It didn't quite hold up to my friend's 386. ;) But I finally had a computer!
It broke down at some point, but I restored and upgraded it two years ago. I still need to fix some keyboard membranes with some conductive paint and find a HDD that works with Xenix. :)
Wouldn't mapping the video card to a different area break programs? I assume most will assume the video buffer is at A0000.
If you're on an 8086/8088 system, it's likely that you're using CGA, which starts at B800, which is what makes the trick work. If VGA, can't do this (although QRAM can extend RAM into VGA space if you are willing to limit yourself to VGA text mode).
Nice video Jim, I just discovered your channel :D
A solid state hard drive was the usual way to get useful ramlike storage. The software would need hacks to make files look like RAM, but accessing real memory over 640k in DOS required hacks anyway.
Solid-state drives for 80s ISA hardware were quite prohibitively expensive, though. I've been collecting 8086-class systems for decades and I've never run across one. (on 286s and higher with 16-bit memory access, one can just make a RAM disk)
But if you have a 386, run applications in a dos extender, or install a protected mode OS.
Wow that was very informative. Thanks for the video. Greta job and epic t-shirt! -- AmigaBill on Discord
Thanks! But how was my camera work?
@@TheOldskoolPC Good!
Can use 4md of video ram on a XT? I found a old video vga card that did come with only 160k but it had been upgraded to 4md.
Any ISA VGA card that works on an XT should work regardless of how much video ram it has installed.
nice :) I hate those old games that only rely on base memory :(
Nice shirt, sir. 🎄
I Have a Tandy 1000 TL with a LoTech EMS Board, and 768K Ram as the RAM Has been added to move the 128K of Video Ram out of DOS's space. I also have a VGA Card. How can I optimize this?
You can't! That's as optimal as I can think to make it. You have 640K free DOS RAM, 128K of dedicated VRAM, and you also have EMS for programs that support it. The only way you could improve it is to get an EMS board that can map pages to other free spots above c000 to give you some UMBs, and then you could load drivers and TSRs up there. But you're already most of the way there already, there's not much more to improve.
@@TheOldskoolPC Certain Applications like BioMenace won't run, and Pine 3.96 locks up when LTEMM is loaded to give access to the EMS RAM.
@@TheOldskoolPC Can I ask you a Question that is related to this, but more adeptly addresses my actual concern?
LOL, a WUTV bumper? That station is local to me.
It's not local to me, it was just the only thing I could find on somewhat short notice (I have my own VHS tapes I could have pulled from, but didn't have 10 hours to scan through them finding a decent back-from-break station ID) :-)
This should help with running games on my amstrad, some games just barely use too much.
Great video, very informative!
I'm wondering if you could have just removed/skiped the checks in vidram for a real VGA card with a bit of assembly hacking? Maybe, call the hacked version novidram or boardram
I spent 2 minutes forcing VGA detection on, but then it hung on additional VGA register writes and I decided to try something slightly less hacky :-) I agree that it could be hacked up completely to avoid all video hardware manipulation as well as trapping int 13h calls, but it would be much more of an undertaking than the boot sector patch turned out to be.
Awesome video. A minor point - Quarterdeck's QRAM is pronounced "cram". I thought it was pronounce Q-RAM like you did, but I ran across this just a few weeks ago. th-cam.com/video/aqmBIoNEd7g/w-d-xo.html
That's amazing!! I'd never heard a quarterdeck marketing person pronounce it until you forwarded that Computer Chronicles link! Thank you so much! Now I have 30 years of pronunciation to un-learn...
Most 286/386-Machines of that time have the full 1MB populated on the motherboard so you don't need a EMS- or RAM-card.
Correct! In fact, QRAM supports some of the 286 chipsets on those boards, which means it handles everything and you don't need my boot sector patch hack.
Why would anyone give this a thumbs-down? Let me guess, they own an Atari ST.
Atari 1040STFM, right? STFM stands for STupid F*cking Memory, right?
I'm curious if Memory Commander is compatible with Desqview..
Some options definitely were, as you can see that in the advertising. Not all modes, though. The best way to use desqview on an 8086 is to use a hardware EEMS 3.2 or EMS 4.0 board and set it to backfill main memory from 128-640k. That way, Desqview can swap 512k chunks out instantly using the EMS board registers. It's slick.
Super video.
I remember using Quarterdeck Expanded Memory Manager (QEMM) on my first 486 DX2 66 to free up enough memory to run The 7th Guest 😊 this was 1993 lol
QEMM is hands down my favorite memory product.
Always found it very strange that my XT clone would count to 704K when booting (well, my memory might be faulty. It's been 25 years)
Who knows, maybe you had an extra 64K on the motherboard and the BIOS was programmed to keep counting. I've seen a lot of interesting and strange clones.
This totally earned you a subscribe! thanks! Will have to look into this if i want to do some more hacking on these vintage pc's!
It should be possible to get more free memory than that. In OS/2, DOS programs could use 730KB of conventional memory.
I guess OS/2 used some tricks a stand alone DOS could not? Not sure which ones, though. I thought it all came down to loading drivers into high memory.
If the program didn't use graphics, that's the same trick as in the video (736K if a text-mode only monochrome program, no CGA or VGA graphics). And I loved OS/2 for that. I ran OS/2 as my primary environment for most of 1994.
@@TheOldskoolPC Thanks for the clarification. :) I always wondered about that.
Well now I know why every game wanted you to DOS=HIGH, UMB
It certainly helps to be high when gaming.
there was also an EMM286 for 80286
Yep, EMM286 was a 1993 freeware program developed by Jjex Software, but all it did was emulate EMS out of existing extended memory. It didn't provide upper memory blocks, for example.
0:09 He may not have said that, but here’s one thing Microsoft definitely seems to believe, even today: “26 drive letters ought to be enough for anybody”.
That's when you start resorting to NTFS mount points. :)
Yes, they theoretically exist, but nobody it seems can figure them out. Also they are specific to NTFS, rather than being implemented at the filesystem-independent VFS layer as in Linux.
@@lawrencedoliveiro9104 can't AAA game or run office (I mean Excel not some free clone with 30% of the functionality) , I want to love Linux but other than stability improvements and changes so you don't have to open a shell to get it configured, what has changed over the past 5 years?
Great dev platform, for grandma and grandpa or a millennial nope.
@@msromike123 I don’t know why you are bringing that up here. But how about something with, say, 1000% the functionality of Excel? th-cam.com/video/i40d8-Hu4vM/w-d-xo.html
Why loved Logitechs mouse drivers.. you could load them in highmem.
So I have a Marrow Pivot 8088 laptop.. I want to do a retro video or a few on it but I have no software or anything else with a 5.25 drive.. Tried some YTers before but no one wanted to help :( wanna help?
Sure, if you're in the USA shoot me an email and I can mail a few disks to get you started. You should also see if you can use the methods described at www.minuszerodegrees.net/transfer/transfer.htm to make your own disks.
@@TheOldskoolPC where can I find your email? Mostly having an issue with finding disks and a drive than anything else.. was thinking I could steal the 2nd drive from the laptop lol
@@TheOldskoolPC ..?
the download link provided in the description is bad, the ftp oldschool site fails to connect
This was made before browsers dropped support for FTP. I've changed the link to one that will work, thanks for letting me know.
A good benefit for this is windows 3.0 real mode too :-)
I could really have used this video 30 years ago
I was thinking the same thing as I made it :-)
i might be blind and this is a bit off topic bt does anyone know where i cold get reeplacement 64k RAM chips for the original ibm 5150
Lots of places, although I favor an online shop called "unicorn electronics"
@@TheOldskoolPC thanks
Yes and No. Even i you followed all the rules. Some programs would just crash. I remember memory mapping via a dos bible or encyclopedia book (you know before the internet.) doing those tricks. Plus extra memory board with software. Then finally dos 6 and dos=high,umb. I also remember the terrible memmaker program. I can't tell you how many people ran that and it started freezing comptuers. Thank goodness it was like f5? to not load any config.sys or autoexec.bat on boot. Keeping this in mind. With CD-Rom drivers and such. I got between 618-620 free all the time. Unless you have a program that needed like Buffers=60 instead of the buffers=40. I tried to re-create the same configs from years ago in a virtual box machine. But couldn't get it that high. It took me a while to remember most if it.
Several non-PC releases of DOS happily detects as much as 768K of conventional RAM.
I'd love to learn which ones and play with them; do you recall which ones they are?
@@TheOldskoolPC I was in particular thinking about the Tiki-Data Tiki-100 with the 8088 expansion card, as well as the 186-based TeleNova Compis. Both are Scandinavian computers marketed towards schools in the early-mid 80s.
Both machines fit in just where 256kbit RAM was getting cheaper, at the same time as the PC was not yet the de-facto standard in Europe.
Thanks for the clarification. Those aren't actually fully IBM PC compatible, which explains why their upper memory areas are arranged differently (but they do run MS-DOS, and I believe you're right, they recognize up to 768K)
@@TheOldskoolPC Yeah, that's what I meant with "non-PC releases". Not neccissarely "non-IBM", but rather non-PC-compatble.
I wonder how difficult it could be to redesign a VGA card chipset to have its memory window higher in Memory. I know some who make new ISA VGA cards using old recovered or NOS chipsets from the 90s. All you have to do is to flip some address lines in particular memory access cycles, something that could easily be implemented on a simple PAL-chip. Reconfiguring the ROM extension wouldn't be too hard either, given we have really efficient dissassembly tools around these days.
@@TheMovieCreator How do you make the video memory available to those who want to draw and make regular memory available to those who want storage? Essentially this all boils down to recreating a memory management unit where you can divorce physical memory addresses from mapped addresses--exactly what you get in 386 protected mode with paging.
Where was your video 30+ years ago?
In my head!
4:12 Nazare meme
I restored a XT compatible machine that has only 128k on board I use a combo card XT-IDE / 1 mb memory extension board and it use USE!UMBS freeware as a driver for high memory management, running DR DOS 6 I have over 700k free *video is CGA) and DR DOS memory manager put a few drivers in high dos no patching of any kind reqyured
Nice!