To this day I still laugh at the fact that Unix, macOS and dos all treat end of line differently. It has become a universal pain in the butt for developers.
It's of note, though, that MacOS has used Unix line endings since 2001 (when they released X). It's only the classic Mac releases that use carriage return for line endings.
Good to hear that you can laugh about it. I cry about it on a weekly basis. Having said that, there are even worse things out there, like case sensitivity and the infamous special syntax regarding NULL in SQL.
We all want to see MS-DOS 7.1. Released as part of Windows 98. With long filename support and Fat32. That was the Ultimate DOS. (You do have to Hexedit the Win98 logo's out of it.)
I doubt Bill Gates will still be alive 6 years from now. Who's going to hold the keys to the castle after he's gone? Sooner or later it gets passed on to someone willing to sell it off or give it away because they have no interest in "grandpa's old junk" in a shoebox in a closet somewhere.
"my code is immortalised in the last major release" Dave, you've already immortalised your code and yourself through this channel. In 1000 years historians will turn to these videos to see what was really happening in the world of computer OS development during the era. and so the legend lives on.
It's kinda crazy that I've been experimenting with DOS since I was 14, know the installation like the back of my hand, and now I'm watching the dude who made that possible. I wasn't even born in the DOS era, I just like older OSs... (Shoutout to WinWorld for keeping ISOs/Floppy images of DOS for free...)
'So, depending on who you believe - you cannot do this. But, I assure you that it works fine.' As I was listening to this while getting started with my day, it gave me a little chuckle. Can 100% appreciate the very gentle way of translating "hold my beer." Kudos sir.
As a graduate of Waterloo in 79, I first saw a hierarchical file system on the Honeywell system operated by the Math faculty in my first year - 1974. The OS was GECOS -- and it had implemented the file system from Multics. I had heard of a system used by the grad students call Unix, but it was considered a toy compared to the Honeywell system. I believe this aspect of Multics, the file system, was it's greatest gift to the history of computer development.
Honeywell was implementing ML into industrial food processing units at a huge scale before anyone even knew what ML was. I saw it with my own eyes 😳😳 and this is a pattern with them. Take an emerging tech or innovate such tech, implement it in its simplest form on a massive scale.
The obscure Centurion minis of that timeframe had a "Library" system. A library was a collection of files, rather like a directory, but I believe they weren't nestable. The Centurions are being restored and explored by @UsagiElectric - a wonderful retro tech channel.
just curious. do you still view Unix based architecture a toy nowadays? is there an evolution of Honeywell or equivalency? i'm a dummy and i'm being genuine.
That takes me back to my old DOS (yes MS-DOS, but also PC-DOS as well, so I'm calling it just DOS LOL) programming days. I started doing network related programming, and was very dependant on the functions defined in "Share", which I'm sure you already know, wasn't added to DOS till version 3.10. The old INT 21 calls in DOS calls still seems as fresh as when I did assemble programming using MASM and later, Borland's Turbo Assembler back on the early to mid 80s. I was very dependant on the DOS technical reference manual (actually IBM's PC-DOS manual, since I worked in a mostly IBM facility), and other programming books, especially a book called "Undocumented DOS". I later became an IBM employee, mostly working their midrange systems, but that's another story for another day. In any case, thanks for the trip down memory lane. Love your content.
Yes, i was disappointed when the more "technical manuals" in the 5.25 binders were not provided after IBM DOS 2.0 i relied heavily on the information there - Just as i did the OS Data Structures and Systems Manuals for the 360 / system 3 / system 7 / System 34 & 36
I think I still have a copy of Undocumented DOS on my bookshelf! Turbo Assembler and Turbo C were *so* much better than their Microsoft equivalents. They were faster and generated smaller and more efficient executables. Turbo Debugger was also an excellent tool.
I mentored a recent college graduate back in the DOS days who, when he was a poor college student, had a computer, but only enough of DOS to boot the machine. None of the utility programs that come with DOS were included. He did, however, have Turbo Pascal, so he wrote his own utilities. He had what I came to call a "strangely shaped" knowledge of DOS. He knew nothing about the collection of utility programs that came with DOS, that the typical beginner *would* know, but he was very familiar with DOS internals, which he had to learn in order to write his own programs.
@@BenEColeman That's interesting. I worked for a company called DNA (Device Network Architecture) Networks, Inc. At the time (early 80s), they developed a PC networking system before such a thing existed around the early days of PCs and DOS. This is long before Ethernet. They started this before companies like Novell and Lantastic were even a thought in anyone's mind yet. They had their own hardware and cabling, and developed their own software around this, which had file and record locking done their own way. They wrote their own BIOS chips for the 1st PCs, and their network code lived in them. All of this had to work on PCs with as little at 128k of memory. It all started out as a way to share expensive printers on more that one PC. Honestly, what they did was quite an achievement in its day. What was particularly interesting to me while I worked there doing tech support was, none of the devolvement tools they used were from the outside world. They created their own in house Assembler and Linker, several BASIC compilers, a C compiler, an in-house Debuger that was network aware. All of these tools were wrote using the Assembler they wrote. I used to joke around with them as to how they wrote the Assembler before anything else, and they would talk about the "chicken and egg" thing. LOL I am not sure I ever got an answer to that for them. In any case, working there was a fantastic learning environment, and I learned to use all their tools, which unfortunately was pretty much useless in the outside world where they folded and I need to secure another job. In my opinion, the things they did were better than what the competition (Novell and Lantastic) was doing, that eventually put them out of business. But that's the way it goes. Just because you created something better, doesn't mean you get to become the standard. Anyone remember Wordstar? Those awful commands are still in every modern piece of word processing software today.
@@BenEColeman That's interesting because I worked for a company, DNA (Device Network Architecture) Networks, Inc., that created a PC networking product, before there was such a thing. They networked PCs together mostly, at the time, to share expensive printers and scanners, to reduce the cost of needing one attached to each PC in an office. They did it their own way, long before Ethernet and other types of networks (Novell, Lantastic, Ect) were even a thought in anyone's mind. It was back in the early days of the IBM PC and PC-XT, when the first versions of MS-DOS and PC-DOS were just getting started. The developers use their own in-house developed Assembler and Linker, their own versions of BASIC and C compilers, and an in-house developed Debuger that was network aware. They used nothing from the outside world. I remember once asking how they created their first Assembler before they has anything else, and was told a story about the "chicken and egg". LOL I'm not sure I ever got any sort of real answer. In the early days, all this needed to work on PCs that had 128k of RAM, and they wrote their own BIOSs with all the network code in them. As a side note, supposably they were sued by IBM for copying their BIOS code, and the developer printed out the source on a stack of green bar paper, and handed it to the judge and said "if anything is too close to their code let me know and I'll rewrite it". Take that with a grain of salt. That is the way it was told to me. They developed hardware and cabling as well. Remember, no Ethernet yet, so again, they did it their own way. While working there, I was around some really smart people, and learned a lot. I was a tech support person that did troubleshooting and minor code fixes and wrote utilities. As I learned to program using their tools, I came to realize, when the company ultimately folded due to competition from other companies that started developing networks (Novell and Lantastic), that my skills learnd there were unusable any place else unfortunately. It was an interesting time in my life, that I learn to appreciate later, and started to learn just how ahead of their time they really were. It is unfortunate that just because you have something that is better than the rest, it doesn't mean it will become the standard. Remember WordStar? Those awful commands are still in almost every modern word processor. I'm glad I got to tell there story again.
Sweet! I will have to build this. I had to learn MS-DOS, CP/M and DR-DOS as a teenager while working at a computer shop on the weekends. It was an odd time in the 80s as there was an equal demand for all three. Now in 2024 I see allot of interest in MS-DOS again with people wanting to build DOS only retro machines. Exciting times ahead, anxious to see what the community does with the code. Thanks for the video!
MSDOS 2.11 was what I cut my teeth on. Making an empty boot disk with the 4.0 boot sector wasn't cheating IMO. Here's your commendation for original thinking.
This kind of tinkering, before google, was a huge part of my youth. And when getting things to actually work (or fix what I’d broken) was the greatest feeling.
I think fdisk was able to write the required boot sector (which I think is hardcoded 512 bytes) so you could have checked how it was implemented if you didn't want to use the shortcut to use official boot disk to capture the image. Of course, without MS-DOS counterpart of POSIX "dd" command, writing the 512 byte image the boot sector might be a bit complex.
Hopefully Microsoft releases 6.2 source code for preservation purposes. While this days DOSbox and FreeDOS are easier to work with from a user perspective this is still important for preserving history.
the fact that they chose to relese 4 is utterly sick. It's decades old and they still won't give us full freedom over our own systems, even massively outdated ones.
@@Altitudes11 nothing likely makes sense to you. My comment about LethalBubbles very simply being ungrateful for freely available code is understandably beyond your comprehension if you just can't make sense of simple things. It isn't hard to understand for average people. I know this comment will fly over your head too so it is more for anyone else reading this. This is for people with brains that work.
@@IARRCSim excellent comment, you must be SO smart that I just can't make any sense of your incredibly intelligent verbiage because my brain doesn't work. What also doesn't make sense is how you got "They wouldn't be happy with anything" out of them hoping they also release something else too, with a perfectly good reason for wanting that. But I guess only someone with a brain that works would understand your completely baseless accusation.
I'm still not fully through the video but I saw Mark Zbikowski mentioned and haven't heard Dave mention that basically every .exe file there is, even today, starts with the magic number "MZ", Mark's initials. What a legacy, to be remembered in every piece of software for DOS and Windows to ever exist!
At least all the older files did. (COFF format if memory serves me right.) The newer ones use the Portable Executable format instead, where you find "PE" in the first few bytes of the file instead of "MZ".
@@benhetland576 We both were partially incorrect. A PE format file actually includes everything we've mentioned. PE is based on the Unix standard COFF format, contains a 4-byte magic "PE\x00\x00" but also contains a stub DOS program (the one that just prints "This program cannot run in DOS mode") and that stub is right at the start, and still contains the "MZ" magic. So effectively PEs still contain "MZ" at the very start, with the "PE" magic coming later in the file.
@@YdenPL tnx for checking. Yes, and the MSDOS stub also imbeds another feature inherited from the pre-DOS era: the Ctrl-Z end of (text) file marker. So if you TYPE file.exe only this text, which is at the beginning, will print and not the rest of the binary "garbage".
I thoroughly enjoy your videos. I was a Systems Engineer at Compaq Computer from 1992 to 2001 and can relate to everything you talk about!! Thanks for all the trips down memory lane. Cheers!
Love the stories. Takes me back to my early tinkering days. I started when everything was still DOS. I had an IBM PCjr. It was just enough different than an original PC that it forced me to learn a lot. I still have the original CPU that I swapped out for a V20 chip to double the CPU speed. Those were the days!
I'm from the same era! You learned a lot about computers at that time from tinkering around, and you had to tinker a bit to get software, games, or new hardware working! It was an exciting time to be in.
@@lophilip Remember trying fix all the IRQ conflicts so your mouse, modem, sound card, and CD-ROM could all work at the same time? Ahhh yeah, those were the days. Had to get the modem going so you could log into the local BBS's! I still remember how much I loved my first modem (Supra 2400 baud). And don't ever forget the wonderful Telix terminal program! Yeah baby!
My PCjr with V20 CPU and 22NICE ran CP/M faster than my Xerox 820-II that had a Zilog Z-80. 22NICE was a Z-80 system emulator that could run on X86 CPUs *and* was able to activate the Z-80 hardware emulation in NEC's V20 and V30 CPUs so CP/M could run natively. 22NICE also set up the RAM and the rest of the system environment on a PC compatible for CP/M. I could use the same boot floppy on the Xerox, my PCjr and my 286.
My first modem was 300 baud. In 1 hour online downloading from a local BBS I could almost fill a 360k floppy drive before my hour was up! The good ole days!
I used MS DOS 4.01 with the Do's shell and was just amazed at how visual it was. Upgraded my 286/16 to a 386/25 and got DOS 4.01 as part of the upgrade. Fantastic work Dave we appreciate all the DEV's work to bring computers to the masses. Oh and NASA for their thirst for CPUs that made them more affordable.
Thanks Dave. You talking about the floppy drive alignment gave me a little PTSD from my days as a service tech back in the late 70's through the late 80's. Aligning and timing disk drives is a task I don't miss at all but I could probably remember how even after 40 or so years.
On the 1541, I'd just connect the test point and look for the most amplitude off a track, and that worked. But on the 4040 and 8250, you have to look for a phase waveform of some kind... I don't know if I've ever done it right yet!
Dave mentioning that shocked back my memory too. Worked for a company that sold dedicated word-processing systems in the early 80's - before PCs killed off that tech. Had to do this on the Shugart 8" floppy drives they used. Qume daisey wheel printers were fun too.
@@alanrussell6678 You've just mem-shocked me! I started out at Philips Data Systems, P7000s with Qume printers were state of art especially in Hotels. I used to issue repaired qume boards to the onsite engineers, imagine that, printers you could repair! One engineer kept going on about this new fangled 'packet networking' that he was learning up on; we all just smiled... the rest is history!
XOR BX,BX was one clock cycle faster and one byte shorter than MOV BX,0 in the 8080 days. Great to see you MSFT guys knew this. I was using MASM pretty much the same time you were. I just didn’t work for Microsoft. Great job and thanks for posting this.
Optimisation 101 The power of working directly from registers, and XORing a value with itself produces zero. No need for any more bus cycles to load an immediate value.
@@TomStorey96 Amen brother. I’d only use the c compiler if I knew ahead of time with the code it generated and agreed. My tattered and torn 8080 software reference guide (the one that told the number of clock cycles to execute) is still on my shelf and i know all these years later about half the 8080 instructions and the clock cycles the took. I still loved the 6502 better than 8080 instruction set.
I've found Turbo C to generate assembly that isn't too far off what I would write by hand. You can probably still do better by hand but I'll take the tiny performance hit for more easily readable code. :) I like assembly but I'm way more productive in C and will use it when I can.
IBM PC-DOS 3.11 was the gold standard when I was in college and also working at our local DuPont plant. They hesitated on 4.0 due to bad press and didn't advance until DOS 5.0 was released. We started using Windows 3.1 at the same time.
The 360K floppy in a 1.2M drive was a thing. While it generally worked, the problem arose if you used the 1.2 to overwrite a track already written by a 360 drive, then read it back on a 360 drive. The narrower 1.2 track would not completely erase the 360 track, and that "leftover" signal would appear as noise to the 360 drive. I never ran into the problem, but then I had both drives in my computer. BTW, formatting and writing a bulk erased disk on a 1.2 drive would read just fine on a 360 drive.
Uh, I'm young, I don't remember this. Always had 1.2M 5.25" drive and 720k 3.5" at least. If I don't count floppy attached to Sharp MZ-800. Brings back some memories when best PC games were F-15 Strike Eagle, Grand Prix, Lotus and the rest were few kilobytes games such as AlleyCat or Sopwith inferior to games on ZX Spectrum.
@@pavelperina7629 There was a corresponding problem the other direction with 1.2M diskettes: you could read 720k diskettes on a 1.2M drive, but if you took a 1.2M diskette that had been formatted and used before, reformatting it for 720k would not produce floppies that could be read on a 720k drive, for the same track width reasons.
This brings back so many memories!! MS-DOS 4.01 was my first operating system on my first PC back in 1991! I had a Samsung 386sx/16MHz at the time, with 2MB RAM, 40MB Seagate ST-157A IDE HDD, and a Tseng Labs ET3000 SVGA with half the video RAM installed, (I think it was 256Kb), along with a colour VGA monitor (just up to 640x480) which would be the bare minimum system to run Windows 3.0 in 386 enhanced mode! I don’t remember if the boot menus were introduced in later versions of MS-DOS, but I remember using them a lot to customise the memory configuration and drivers for each reboot, just to make enough space in RAM to run certain memory hungry programs or games of that era.
@@starfrost6816 I think that I was also using 4DOS a bit earlier than MS-DOS 6, and I first intruduced selective loading of programs in autoexec.bat back then, but I can’t remember for sure. It could just as well be on plain old MS-DOS 6 the first time I used boot menus… I definitely had multiple configurations much earlier with diferent boot diskettes for some games, or by copying config.sys and autoexec.bat pairs from a stash directory for the same purpose before the menus.
Not only is "MZ" on DOS executables and earlier Windows executables, it is on modern PE Windows executables too _and_ all-platforms UEFI payloads (I was rather surprised and amazed, when working to help make the firmwares for a modern _ARM_ computer system - a Rockchip RK3588-based board called the Firefly ITX-3588J - that the UEFI payloads for the Linux[!] kernel had good ole "MZ" at the beginning!). The reason for this is not just legacy cruft; it's so that it can be abortively loaded by an old DOS/Windows system to spit out an error that it is not compatible with it :D
Thank you Dave, I remember using MSDOS and liked it, those were the days, editing autoexec.bat and config.sys to load drivers into small amounts of ram. Now computing is so complex!
Remember TSR (terminate and stay resident) programs? DOS wasn't multitasking, but this was a bit of a hack to get something running behind the scenes to provide background services. I don't remember what I was running, but I do remember fussing around with HIMEM.SYS and disk caching to try to clear up enough of that 640k because TSR's couldn't run in the high memory area or extended memory, as I recall.
@8:29 oops, looks like you forgot to remove the "Title Text" from your onscreen animation. Love the video! Super interesting looking back at how MSDOS operated!
listening to you is like listening to that tech savvy uncle that is "boy, I will tell you a story about the old days of tech" and I can't get tired of listening
I was already a Digital Research user with CP/M on my prior 8-bit system, so stayed with them and went to DR-DOS when I eventually bought my first PC (a 286, which had a 40-MB HDD). That, at the time, was the only way to run the 40-meg HDD as a single partition, which made me pretty happy. The largest MS-DOS partition at the time was 32meg, and I saw no good reason to slice it up. I made some slightly strange OS decisions along the way, not using Windows personally until I could get NT, although I used a pile of variants of Windows at work, and CP/M-86 into the bargain. But for my own use, I kept up with the NT route, which proved to be the winning track to be on. I still run legacy versions on air-gapped machines locally, to get use out of a few programs that stopped being maintained by the writers, and which I was never able to get running on more recent versions of Windows. You are more likely to find me on an open-source OS these days.
I really like that CP/M came with not only a big old hefty manual but also the full assembly language source code, all printed in there for you to follow.
@frumbert - I've never tried CP/M but I have great respect for Gary Kildall who wrote it - he was a genius! Definitely deserves to be more widely remembered than he is.
We used these model 95 bad boys around 1993 or so for OS/2 & SQL Server backends, when IBM was also peddling their God awful SCSI RAID solutions. They had this feature where multiple drives would fail to start on cold boot, rendering the RAID invalid. The IBM engineer was called, he used the hammer in his toolkit to tap the drives to unstick the parked heads. The RAID config was stored in battery backed RAM on the HBA rather than across (or as well as) the drives... which was great until the HBA failed. OF course, there was no means to backup the config. That was the start of the death of IBM, we switched to Compaq. When your RAID solution is less reliable than a random bunch of disks, it's time to throw in the towel.
I started with DOS 2, later when 5 came out I could not put it on my machine because of the low density of my floppy drive. So, I took my machine to work and used Procomm to download it straight from the sever over a serial port. After win98 I used DR Dos. I realy enjoyed this one Dave.
Half the time I have no idea what you are talking about, but I love this channel! I remember booting up MS-DOS and playing my first games off floppy disks. Awesome to see how it works in the back-end.
I've really enjoyed your videos taking us all back in time of how the dev life was back at Microsoft. I live in the UK and I remember growing up with Windows 95/98, 2000, etc. Now I'm a senior software engineer working with .NET C#, it's always peaked my interest how Windows was built! Cheers Dave for that!
@@greenrocket23 CP/M was pretty primative compared to DOS (especially later DOS with Unix like features), but at the time we took in stride. Never used CP/M+.
@@greenrocket23 Like Larry said. Primitive, simple. Source of "Int 21" and many of the command options. "DOS" copied "int 21" for "compatibility". It was the 80s, now I'm 66. There has been a lot of O/S and programming since. If I was a RETRO enthusiast, CP/M, CM/M+ with better directory structures, yeah, I'd play with that.
CP/M came first, in the 70's and worked on more primitive 8 bit CPU's. QDOS which turned into MS-DOS was based on CP/M in usage thanks to familiarity but took advantage of the more capable 16 bit 8086 and storage media at the time. Fat12 and on was a QDOS creation, CP/M used a more primitive method to keep track of used blocks on the drive, using a bit field, which scales poorly to larger drives.@@greenrocket23
Would love to see some longer deeper dives into the code of DOS. Perhaps explaining some of the clever tricks you had time use to get around limitations, or things that just needed unorthodox solutions. I'm sure you going over even the most mundane details would be fascinating.
In school we had a CP/M server with an array of Z80 powered terminals. It had a big Winchester drive that stored our accounts. Later my first computer was a 286 with a Hercules graphics card running MS_DOS. I'm not certain of the version but on the bookshelf beside me I have a copy of "DOS 6: A Developer's Guide", so it must have been that. That was the first computer book I ever purchased. I see now it still has a price sticker on it - $17.99 "Special" which makes me recall that I bought it at a computer book fair, and it was after I had already figured out a lot of stuff without such a reference. That book was my pride and joy and my capability to code in DOS really took off from there. I certainly remember the INT 21 with the command in the AH register was the key to it all.
I used to install IBM XTs in the government with all their software. I was EXTREMELY popular. It changed how everyone did business. The snotty mainframe and PDP-11 people got left in the dust. Good times.
I have a computer that used to run Windows 95 and MS-DOS 6.22. It is an IBM Sureone POS 4614 from 1996. Thank you for your work on those OS's! That computer is sitting next to my modern Windows 10 computer right now! It is currently running MS-DOS 3.31.
I seem to remember MSDOS4.0 being somewhat plagued with issues, with folks rolling back to 3.3. I am already subscribed to the channel. You're welcome!
@@stargazer7644 I remember that as well but considering there wasn't the internet it must have come from a review in some monthly computer magazine that I spent a fortune back in the day.
I was the test lead MS-DOS team since MS-DOS 3.3 to Windows 98. The story about DOS 4, it was designed and wrote totally by IBM not Microsoft. We had a tiny team, IBM had an army. We had the job to ported PC-DOS over for all the other compatible PC venders. When we got the PC-DOS drop I reported problems with their slow & fat setup program, requiring swapping disks. We totally replaced setup. I reported slow response of their new shell program and resource requirements. We replaced the shell so it would work better on slower OEM systems. I also reported to the development team the new disk buffering system added had no end user performance advantage and recommend using Microsoft smart drive used by windows to improve performance showing real world benefits without heavy use of conventional memory. We removed their new disk buffering code, the main benefit was this action alone avoided 2 disk corruption bugs that PC-DOS 4.0 had that MS-DOS 4.0 did not have. I only had one tester working for me, it was impossible to catch every bug IBM added, MS-DOS 4.0 did ship with one disk corruption bug, sorry. After that IBM gave Microsoft design control over DOS, the IBM developers loss their jobs on DOS. Same thing happen again when I was moved to Windows 95, but the OS/2 team was replaced. I fought hard for end user benefit and against uneaded features.
That wasn't just your dog snoring! Seriously, this is great stuff, Dave. I loved MS-DOS 4.x when it was the latest and greatest sliced bread. I continued to use MS-DOS through version 6.22 for which I still have an unopened, shrink-wrapped box with the 5.25-in floppies. One of these days I'll pick up a vintage PC clone at a garage sale and give that old horse another ride.
My journey with MS-DOS began in 1988 at version 3.1. It was infuriatingly obtuse. The best book you could buy on it was the equivalent of learning how to speak English by reading Websters dictionary. Had it not been for a salesman named Chauncey, I suspect I would have given up after a month or so. However Chauncey asked if I'd like a modem with my new computer (a laptop that featured a lead-acid battery). The modem allowed me to connect to Compuserve and actually do something interesting with my new PC. Six months later I had figured out MS-DOS and shortly thereafter joined the IT business.
On the Atari we called Atari DOS "DOS" because that was the BASIC command used to access the Atari DOS menu. DOS was just too generic a term back in the day to expect someone to just know which DOS you were talking about. The handheld Atari Portfolio used a version of MSDOS 2 because MSDOS 3 needed to be able to write back to itself and Atari needed the DOS to be in ROM. I've always thought of MSDOS 3.3 as the standard and everything that came later as just adding more bells and whistles.
For a while in the late 1970's into the second half of the 1980's practically every personal computer with floppy drives had a DOS. The popular TRS-80 computers had TR-DOS. Heathkit computers had HDOS and so on.
@@JCCyC second that, 3.3 was quite "functional". However, I found that 2.11 was the last version not to mess with things behind the scenes, and instead do what you told it to. If you copied a disk, that's what you got, an exact copy. In ver 3 it started trying to be "smart", and for instance changed the disk label (identifier) on the copy.
I use GreaseWeazle for all kinds of disk formats and (other than operator headspace issues) have not had any issues using a 1.2mb drive to do it. Great vid btw!
The requirement for "MS-DOS" specificity may have been a holdover from the 80's when we had multiple DOS's that were not necessarily related. For example, we had Atari DOS, Apple DOS, Commodore DOS etc. None of these things were related in any way. At the time DOS was just generic for "Disk Operating System" and did not have any specific meaning beyond that. DOS only became synonymous with MS-DOS as IBM "clone" PC's took over the market in the mid-to-late 80's, with almost full takeover by about 1990.
No, I'm sure this was 100% a company-wide mandate to reinforce the mentality that "the only DOS is MS-DOS." Microsoft was _fiercely_ competitive at this time, and not above sabotaging compatibility with "Not-MS-DOSes". The FUD, along with OEM strong-arming, was successful, though. I had _heard_ of alternative DOSes, like PC-DOS (which wasn't really an alternative, at least until version 5 or 6), DR-DOS, etc. ... but I had never seen them. The closest I got was an AST machine that, while it shipped with MS-DOS, used PC-DOS naming convention of ibmbio sys and ibmdos sys instead of io sys and msdos sys. I'm not sure why the discrepancy, and the disks were definitely labeled MS-DOS and had an MS-DOS setup program. Still, it was drilled into your head that MS-DOS was the only way to fly. That was NOT an accident.
@@fcassia I don't doubt it. I reckon that was the reason for wanting everyone to say "MS-DOS". Anyone can say they're DOS, but only Microsoft can say they're MS-DOS.
Hey Dave - really glad I found your channel - we can wait to read your book. I have Asperger and have always considered a different way of processing as a blessing more than a curse
Things were different. Instead of spending hours on the internet going into endless rabbit holes looking for solutions, you spent hours with jumpers, editing config.sys & autoexec.bat, and rebooting, on the impossible task of getting everything to work together.
For a long time it's been an eventual goal of mine to have 5.25 and 3.5" floppy drives in my modern system, and I'm glad that the hardest part will be finding or building the case now that I know such adapter boards exist.
Physical Box art for Applications back in the day were real art. I fell in love with the MS-DOS 6.x Box Art. Even Microsoft C++ 6+, The CD-ROM for C++ 6 was nice looking with the 3D Blocks Typography. Miss these days
I believe the key with the 40/80 track drive thing is not to go back and forth. Clean the disk with an external magnet to get rid of any left over data, write it on the 80 track drive if that's what you have, use it on the 40 track drive. I think you mainly get into problems when you take a disk written on a 40 track drive, overwrite it with an 80 track drive and then read it back on the 40 track drive. The 80 track drive doesn't completely overwrite the data written by the 40 track drive and that can lead to interference when reading back on a 40 track drive which can see the part of the track that's been overwritten and the part of the track that hasn't.
Bingo. The assertion that "writing 360K disks on a 1.2MB drive works fine" is true if, and only if, the disk is _completely_ empty when you start, and you never ever mix writing to the disk on the different drives. Write once, read many -- fine. Write once, update on the 40-track drive -- probably fine. Write on the 40-track drive, then write on the 80-track drive -- discover the "lore" first-hand.
I bet seeing this code brought back a lot of memories. I've been experimenting with DOS 6.22 since I was about 13 or 14 years old. As someone born in 2003, that's pretty odd, but I didn't care. I've been a computer/IT nerd since I was 10, and now, a decade later, I finally get to see who made my favorite version of DOS possible!
im glad to see your birth year did not dissuade you from learning the older OS, as i was born 20 years earlier than you, and i never felt like i could get into the stuff that was even a little bit older than myself. i have always wished i was born about 15 years earlier so that i could be around when software was starting to be made from scratch. to this day i still have no idea how it all works on the hardware level. i tried taking some computer courses but ultimately it felt too much for me to pick up. i can use and build computers just fine, but i will always have this missing chunk of information....
I wrote my TSR program to display a clock on the corner of the screen, which is a step-up version of my assembly class homework, which impressed everyone. It was tricky since I cannot call any int 21H or int 10H given most of the interrupt handlers are not re-entry friendly. I ended up with writing into the display buffer @ 0xb800 directly. Painful, but decades later I would still smile when I recall those old days.
This takes me back to the days when I made a local book shop order me a copy of "Dissecting DOS". They where far outside their depth, but manged to get it thanks to me having the ISBN... that was in the mid-90s
My recollection from back in the days when my family had an original 8088 PC and a then-modern 386sx is that the 1.2MB drive would read and write 360k disks just fine, however a 360k disk written by the 1.2MB drive would usually no longer work in a 360k drive. The problem being that the tracks of a 40 track drive end up right down the middle between two tracks of an 80 track drive, the 80 track drive would need to be able to half-step in order to write a 40 track disk with the same alignment. I don't know if this was the case for all drives, but I do specifically remember having problems going back and forth between the original full height 360k drives in the IBM PC and the Teac 1.2MB drive in the 386.
Dave you didn't mention its clone competitor "DR DOS" which may have been part of the motivation for specifying MS-DOS, DR DOS is significant because it drove some innovations in MS-DOS and it was the basis for Novel Netware and was open sourced much earlier as "OpenDOS" by Caldera in 1997 under the GPL license.
You obviously have never used Netware. DR DOS was in no way the basis for Netware. Novell Netware was first released in 1983. Digital Research released the first version of DR DOS 5 years later. Novell bought Digital Research in 1991 and sold DR DOS under the Novell brand after that.
I started using MS-DOS around 1982 and used it a lot after that. I also wrote a lot of ASM code, entire programs. I had all forgotten how tedious it was and what a bear to maintain and develop further.
I still have our 486 "tower-and-a-half." We built it using a case that was at least 30-inches (0.76-m) tall. I'll have to dig it out one day to see if it will still run. I *think* that I still have every computer (except one 386 system) that I ever had, starting with a TRS-80 Model III. All of my following machines ran either MS-DOS or different versions of Windows (3.11, NT, and up until Windows 7). Then came my PDP-8s (which take a *lot* of space, being rack-mounted), and I was given a C-64 by a coworker whose wife decided that he didn't need to keep it anymore. My original 8086 machine (a clone) "works," except that the ~10MB HDD finally died and decided to no longer turn (I suppose the heads stuck to the platter).
a) 1.2MB vs 360KB floppies, IME you got lucky there fella. b) "Memory test takes about a minute to run and then the system will finally boot": oh, and what amazing progress we've made on that in 40 years 😜
One would think that writing 360k floppies should work if one were to write 2 adjacent tracks using an 80 track drive with the same data, but issues with sync timing accuracy and track length differences would probably make an even bigger mess than just writing every other track (on a virgin floppy).
It really isn't a problem at all, if you either start with unformatted diskettes or degauss them before formatting. The problems only happen when there is anything at all written on the odd-numbered tracks.
Just be glad the memory test prints progress. The early ones don't, so the computer doesn't print _anything_ on the screen (not even a flashing cursor) until the memory test has completed.
This was awesome. I was really young back then (maybe 8 in 1986) but my dad was programming software as a hobby unlike the other kids my age reading novels, I read all the computer manuals cover to cover. And all the programming books. I understood how to write a program to amortize things in BASIC before I knew what a mortgage was.
Thanks Dave This is a throwback to the 80s for me. I might have questions about this in a few months depending upon how well I move through the code. Thanks Again
I dimly remember that as a student, I wrote TSR (terminate and stay resident) programs with MASM, hooking into INT 8 to get called and executed periodically. There was a full-screen text mode editor simply called M (M.EXE), which was pretty advanced at the time; it supported column-based marking and copy/pasting.
I wrote a TSR that hooked the open file int21 function and printed the file name on the last line of the screen so that I could see what files were being loaded as programs started.
The 40 vs 80 track issues usually are only an issue with weird formats, damaged disks, or misaligned formatting, Adrian's Digital Basement has a lot of information on how to best work with different formats. One other common issue is if you take a 40 track disk and reformat with an 80 track drive it can leave bits of the previous tracks behind that can interfere.
Not at all true. Take a genuine IBM PC XT and a PC AT, format the disk on the XT, copy some files to it on the AT, and then try to read that disk on the XT. The mechanism for what happened there is well understood and entirely predictable. It's exactly what Dave says is not happening -- the 40-track drive lays a thicker track in the middle of the 1/40th divisions. The 80-track drive lays down thinner tracks on either side of it. If you don't erase the _entire_ track (by using the larger 40-track head), then reading the track back will result in a combined image of the old 40-track flux and the new 80-track flux that overwrote _half_ of it.
MS DOS 3.3 was, in my experience, the most stable and useful DOS. I used it for 6 years, trying later versions when released, but always going back to MS DOS 3.3. Somewhere along the way, a friend shared a hack where I could re-label it with my name. :)
Personally started on Windows 98 SE, some of the games I had ran in the MS-DOS Prompt window, and of course some underlying functionality might have relied on MS-DOS. Like when installing Windows 9x from scratch, you usually had to use a bootable floppy in order to create a DOS partition and format the disk. Other than that, didn't really learn DOS commands until the late 2000s when I was interested in learning this stuff 😊 By the way: The fact that you had to partition (fdisk) and then format (using command format) the disk in DOS/9x made me think that that's the order it goes. But in reality, you really first format a disk with a MBR or GPT, then partition it! Fdisk automagically writes and MBR (format) and partitions the hard drive. The format command then formats the partition to a filesystem FAT/FAT16/FAT32. Never really needed to know about this until I started messing with Linux.
I get why MS might not want to release versions of Dos past 6.2, the ones that are essentially part of Windows 95. But why do you suspect they haven't open soured 6.2?
I've always wanted an EXE file that loads a message saying "For my fan OrcisGrunt on {date}! - Mark Z" digitally signed by Mark Z. It would be cool to have a compiled application featuring the MZ header and Mark's Digital Signature. Why can't software rock stars compile and sign stuff like pop rock stars?
Here is a question for you. What makes an .exe vs a .com?? And no, I don't mean an internet domain name here. It's an MSDOS question and a very easy one.
@@RCShadow The com is basically just a small exe with the header omitted, replaced with default values, so its basically a raw binary program with defaults like shared code/data/stack segment, no entrypoint & no relocations to name a few
I had an xt that ran dos 3.11. Me and a buddy upgraded to 6.22. The 360k floppy was just big enough to get the 6.2 sys command on it. Copied the rest of the files via telex and zmodem over 2400 baud between our houses. Took a few overnight copy sessions before it was complete.
I haven’t seen content about ReactOS on this channel but I’m curious on Dave’s opinion. It’s basically a GPL “rewrite” of Windows Server 2003 currently. I tried it in a VM recently, actually it was better than expected, could use total commander and firefox 53 and it didn’t crash 😂 All the source is public and said to be using genuine non-MS code. PS: Task manager is implemented already :)
@goodmanke - I've played around with ReactOS - it's great! Huge respect to the devs there, they've done great work! I also have great respect for the Haiku devs - they're doing awesome work too!
@@overbored1337 The timer interrupt hook could be used with any version of DOS by any program, including Desqview to simulate multitasking. If MSDOS 4.00 was called "multitasking" out of the box, it should support simultaneous programs running or have a formal multitasking API.
@@jazzerbyte I always used the timer interrupt because of backwards compability, because even 386 instructions were discouraged in real mode dos programs long into the pentium era.
So much fun to see operations that relied on the original BIOS/OS calls accessed by software interrupts. Did a ton of assembly language programming on the 8086/8087 processors for embedded control products, but also hacking out util programs. As we fled the mainframe and minicomputer crosscompilers to PCs, it was a wild ride. Peter Norton and Kim Watt were legendary.
To this day I still laugh at the fact that Unix, macOS and dos all treat end of line differently. It has become a universal pain in the butt for developers.
I'd love git to just stop messing with these, you can set it up so but defaults are just destructive
Came from mainframe environment where file system had records. Took a while to get used to the idea that special character(s) determined records.
It's of note, though, that MacOS has used Unix line endings since 2001 (when they released X). It's only the classic Mac releases that use carriage return for line endings.
Good to hear that you can laugh about it. I cry about it on a weekly basis. Having said that, there are even worse things out there, like case sensitivity and the infamous special syntax regarding NULL in SQL.
@@nkronert I feel your pain. It's 2024 and we still can't have simple select statement to display national characters correctly.
only 6 years left until we'll be watching Dave compiling the ultimate MSDOS 6.22
We all want to see MS-DOS 7.1. Released as part of Windows 98. With long filename support and Fat32. That was the Ultimate DOS. (You do have to Hexedit the Win98 logo's out of it.)
@@retinaquester you didn't want to go all the way to the rather embarrassing Windows ME MS-DOS 8?
@@koopa2k I thought they took peaces out of that version of DOS. Until 7.1 it keeps getting better.
@@retinaquester I think you can just use the Logo=0 parameter in MSDOS.sys in Win98's DOS
I doubt Bill Gates will still be alive 6 years from now. Who's going to hold the keys to the castle after he's gone?
Sooner or later it gets passed on to someone willing to sell it off or give it away because they have no interest in "grandpa's old junk" in a shoebox in a closet somewhere.
"my code is immortalised in the last major release"
Dave, you've already immortalised your code and yourself through this channel. In 1000 years historians will turn to these videos to see what was really happening in the world of computer OS development during the era.
and so the legend lives on.
It's kinda crazy that I've been experimenting with DOS since I was 14, know the installation like the back of my hand, and now I'm watching the dude who made that possible. I wasn't even born in the DOS era, I just like older OSs...
(Shoutout to WinWorld for keeping ISOs/Floppy images of DOS for free...)
he is like the Archimedes of computers
Nah, that's ARM and used RISC OS 🤪
@@TonyWhitley I wanted to call him Plato but that existed too as a computer and Einstein too
Thanks for the kind words! I do hope they preserve the first program I wrote:
10 PRINT "DAVE"
20 GOTO 10
'So, depending on who you believe - you cannot do this. But, I assure you that it works fine.'
As I was listening to this while getting started with my day, it gave me a little chuckle. Can 100% appreciate the very gentle way of translating "hold my beer." Kudos sir.
As a graduate of Waterloo in 79, I first saw a hierarchical file system on the Honeywell system operated by the Math faculty in my first year - 1974. The OS was GECOS -- and it had implemented the file system from Multics. I had heard of a system used by the grad students call Unix, but it was considered a toy compared to the Honeywell system. I believe this aspect of Multics, the file system, was it's greatest gift to the history of computer development.
Haha, I used WATFOR and WATFIV Fortran in South Africa way back when...
Honeywell was implementing ML into industrial food processing units at a huge scale before anyone even knew what ML was. I saw it with my own eyes 😳😳 and this is a pattern with them. Take an emerging tech or innovate such tech, implement it in its simplest form on a massive scale.
The obscure Centurion minis of that timeframe had a "Library" system. A library was a collection of files, rather like a directory, but I believe they weren't nestable.
The Centurions are being restored and explored by @UsagiElectric - a wonderful retro tech channel.
just curious. do you still view Unix based architecture a toy nowadays? is there an evolution of Honeywell or equivalency? i'm a dummy and i'm being genuine.
Sometimes it is weird as a developer to imagine people having roughly twice the experience of your age.
That takes me back to my old DOS (yes MS-DOS, but also PC-DOS as well, so I'm calling it just DOS LOL) programming days. I started doing network related programming, and was very dependant on the functions defined in "Share", which I'm sure you already know, wasn't added to DOS till version 3.10. The old INT 21 calls in DOS calls still seems as fresh as when I did assemble programming using MASM and later, Borland's Turbo Assembler back on the early to mid 80s. I was very dependant on the DOS technical reference manual (actually IBM's PC-DOS manual, since I worked in a mostly IBM facility), and other programming books, especially a book called "Undocumented DOS". I later became an IBM employee, mostly working their midrange systems, but that's another story for another day. In any case, thanks for the trip down memory lane. Love your content.
Yes, i was disappointed when the more "technical manuals" in the 5.25 binders were not provided after IBM DOS 2.0 i relied heavily on the information there - Just as i did the OS Data Structures and Systems Manuals for the 360 / system 3 / system 7 / System 34 & 36
I think I still have a copy of Undocumented DOS on my bookshelf! Turbo Assembler and Turbo C were *so* much better than their Microsoft equivalents. They were faster and generated smaller and more efficient executables. Turbo Debugger was also an excellent tool.
I mentored a recent college graduate back in the DOS days who, when he was a poor college student, had a computer, but only enough of DOS to boot the machine. None of the utility programs that come with DOS were included. He did, however, have Turbo Pascal, so he wrote his own utilities. He had what I came to call a "strangely shaped" knowledge of DOS. He knew nothing about the collection of utility programs that came with DOS, that the typical beginner *would* know, but he was very familiar with DOS internals, which he had to learn in order to write his own programs.
@@BenEColeman That's interesting. I worked for a company called DNA (Device Network Architecture) Networks, Inc. At the time (early 80s), they developed a PC networking system before such a thing existed around the early days of PCs and DOS. This is long before Ethernet. They started this before companies like Novell and Lantastic were even a thought in anyone's mind yet. They had their own hardware and cabling, and developed their own software around this, which had file and record locking done their own way. They wrote their own BIOS chips for the 1st PCs, and their network code lived in them. All of this had to work on PCs with as little at 128k of memory. It all started out as a way to share expensive printers on more that one PC. Honestly, what they did was quite an achievement in its day. What was particularly interesting to me while I worked there doing tech support was, none of the devolvement tools they used were from the outside world. They created their own in house Assembler and Linker, several BASIC compilers, a C compiler, an in-house Debuger that was network aware. All of these tools were wrote using the Assembler they wrote. I used to joke around with them as to how they wrote the Assembler before anything else, and they would talk about the "chicken and egg" thing. LOL I am not sure I ever got an answer to that for them. In any case, working there was a fantastic learning environment, and I learned to use all their tools, which unfortunately was pretty much useless in the outside world where they folded and I need to secure another job. In my opinion, the things they did were better than what the competition (Novell and Lantastic) was doing, that eventually put them out of business. But that's the way it goes. Just because you created something better, doesn't mean you get to become the standard. Anyone remember Wordstar? Those awful commands are still in every modern piece of word processing software today.
@@BenEColeman That's interesting because I worked for a company, DNA (Device Network Architecture) Networks, Inc., that created a PC networking product, before there was such a thing. They networked PCs together mostly, at the time, to share expensive printers and scanners, to reduce the cost of needing one attached to each PC in an office. They did it their own way, long before Ethernet and other types of networks (Novell, Lantastic, Ect) were even a thought in anyone's mind. It was back in the early days of the IBM PC and PC-XT, when the first versions of MS-DOS and PC-DOS were just getting started. The developers use their own in-house developed Assembler and Linker, their own versions of BASIC and C compilers, and an in-house developed Debuger that was network aware. They used nothing from the outside world. I remember once asking how they created their first Assembler before they has anything else, and was told a story about the "chicken and egg". LOL I'm not sure I ever got any sort of real answer. In the early days, all this needed to work on PCs that had 128k of RAM, and they wrote their own BIOSs with all the network code in them. As a side note, supposably they were sued by IBM for copying their BIOS code, and the developer printed out the source on a stack of green bar paper, and handed it to the judge and said "if anything is too close to their code let me know and I'll rewrite it". Take that with a grain of salt. That is the way it was told to me. They developed hardware and cabling as well. Remember, no Ethernet yet, so again, they did it their own way. While working there, I was around some really smart people, and learned a lot. I was a tech support person that did troubleshooting and minor code fixes and wrote utilities. As I learned to program using their tools, I came to realize, when the company ultimately folded due to competition from other companies that started developing networks (Novell and Lantastic), that my skills learnd there were unusable any place else unfortunately. It was an interesting time in my life, that I learn to appreciate later, and started to learn just how ahead of their time they really were. It is unfortunate that just because you have something that is better than the rest, it doesn't mean it will become the standard. Remember WordStar? Those awful commands are still in almost every modern word processor. I'm glad I got to tell there story again.
Marty! Fire up the DeLorean. We've got a date with history!
You mean skynet and the rise of the machines.
" there is good money in killing people" - Bob Dylan - masked and anonymous
DeLorean just came out with an electric. Awesome looking ride.
One point twentyone Jiggawatts!?!?!?!
QDOS quick and dirty os. DOS. Dirty OS
@@aaronposey7003 Dirty Old Sock.
Sweet! I will have to build this. I had to learn MS-DOS, CP/M and DR-DOS as a teenager while working at a computer shop on the weekends. It was an odd time in the 80s as there was an equal demand for all three. Now in 2024 I see allot of interest in MS-DOS again with people wanting to build DOS only retro machines. Exciting times ahead, anxious to see what the community does with the code. Thanks for the video!
wow, DR-DOS, now there's a name I haven't heard in a long time...
MSDOS 2.11 was what I cut my teeth on. Making an empty boot disk with the 4.0 boot sector wasn't cheating IMO. Here's your commendation for original thinking.
Same.
It was a common old school methodology
This kind of tinkering, before google, was a huge part of my youth. And when getting things to actually work (or fix what I’d broken) was the greatest feeling.
I think fdisk was able to write the required boot sector (which I think is hardcoded 512 bytes) so you could have checked how it was implemented if you didn't want to use the shortcut to use official boot disk to capture the image.
Of course, without MS-DOS counterpart of POSIX "dd" command, writing the 512 byte image the boot sector might be a bit complex.
@@MikkoRantalainen now that it's open source, you can certainly make MS-DOS POSIX-compliant ;)
Hopefully Microsoft releases 6.2 source code for preservation purposes. While this days DOSbox and FreeDOS are easier to work with from a user perspective this is still important for preserving history.
the fact that they chose to relese 4 is utterly sick. It's decades old and they still won't give us full freedom over our own systems, even massively outdated ones.
@@LethalBubbles I have a feeling you wouldn't be happy with Microsoft releasing any source code.
@@IARRCSim how does your comment even make sense? they gave a perfectly good explanation
@@Altitudes11 nothing likely makes sense to you. My comment about LethalBubbles very simply being ungrateful for freely available code is understandably beyond your comprehension if you just can't make sense of simple things. It isn't hard to understand for average people. I know this comment will fly over your head too so it is more for anyone else reading this. This is for people with brains that work.
@@IARRCSim excellent comment, you must be SO smart that I just can't make any sense of your incredibly intelligent verbiage because my brain doesn't work. What also doesn't make sense is how you got "They wouldn't be happy with anything" out of them hoping they also release something else too, with a perfectly good reason for wanting that. But I guess only someone with a brain that works would understand your completely baseless accusation.
I'm still not fully through the video but I saw Mark Zbikowski mentioned and haven't heard Dave mention that basically every .exe file there is, even today, starts with the magic number "MZ", Mark's initials. What a legacy, to be remembered in every piece of software for DOS and Windows to ever exist!
I had no idea, that's really cool. Thanks for sharing.
At least all the older files did. (COFF format if memory serves me right.) The newer ones use the Portable Executable format instead, where you find "PE" in the first few bytes of the file instead of "MZ".
"Every man dies two deaths. The one with his last breath, and the one with the breath of the last time someone says his name."
Or something like that.
@@benhetland576 We both were partially incorrect. A PE format file actually includes everything we've mentioned.
PE is based on the Unix standard COFF format, contains a 4-byte magic "PE\x00\x00" but also contains a stub DOS program (the one that just prints "This program cannot run in DOS mode") and that stub is right at the start, and still contains the "MZ" magic. So effectively PEs still contain "MZ" at the very start, with the "PE" magic coming later in the file.
@@YdenPL tnx for checking. Yes, and the MSDOS stub also imbeds another feature inherited from the pre-DOS era: the Ctrl-Z end of (text) file marker. So if you TYPE file.exe only this text, which is at the beginning, will print and not the rest of the binary "garbage".
I thoroughly enjoy your videos. I was a Systems Engineer at Compaq Computer from 1992 to 2001 and can relate to everything you talk about!! Thanks for all the trips down memory lane. Cheers!
Love the stories. Takes me back to my early tinkering days. I started when everything was still DOS. I had an IBM PCjr. It was just enough different than an original PC that it forced me to learn a lot. I still have the original CPU that I swapped out for a V20 chip to double the CPU speed. Those were the days!
I'm from the same era! You learned a lot about computers at that time from tinkering around, and you had to tinker a bit to get software, games, or new hardware working! It was an exciting time to be in.
@@lophilip -- For some, it was aggravating as all get out.
@@lophilip Remember trying fix all the IRQ conflicts so your mouse, modem, sound card, and CD-ROM could all work at the same time? Ahhh yeah, those were the days. Had to get the modem going so you could log into the local BBS's! I still remember how much I loved my first modem (Supra 2400 baud). And don't ever forget the wonderful Telix terminal program! Yeah baby!
My PCjr with V20 CPU and 22NICE ran CP/M faster than my Xerox 820-II that had a Zilog Z-80. 22NICE was a Z-80 system emulator that could run on X86 CPUs *and* was able to activate the Z-80 hardware emulation in NEC's V20 and V30 CPUs so CP/M could run natively. 22NICE also set up the RAM and the rest of the system environment on a PC compatible for CP/M. I could use the same boot floppy on the Xerox, my PCjr and my 286.
My first modem was 300 baud. In 1 hour online downloading from a local BBS I could almost fill a 360k floppy drive before my hour was up! The good ole days!
I used MS DOS 4.01 with the Do's shell and was just amazed at how visual it was. Upgraded my 286/16 to a 386/25 and got DOS 4.01 as part of the upgrade. Fantastic work Dave we appreciate all the DEV's work to bring computers to the masses. Oh and NASA for their thirst for CPUs that made them more affordable.
Thanks Dave. You talking about the floppy drive alignment gave me a little PTSD from my days as a service tech back in the late 70's through the late 80's. Aligning and timing disk drives is a task I don't miss at all but I could probably remember how even after 40 or so years.
On the 1541, I'd just connect the test point and look for the most amplitude off a track, and that worked. But on the 4040 and 8250, you have to look for a phase waveform of some kind... I don't know if I've ever done it right yet!
Dave mentioning that shocked back my memory too. Worked for a company that sold dedicated word-processing systems in the early 80's - before PCs killed off that tech. Had to do this on the Shugart 8" floppy drives they used. Qume daisey wheel printers were fun too.
@@alanrussell6678 You've just mem-shocked me! I started out at Philips Data Systems, P7000s with Qume printers were state of art especially in Hotels. I used to issue repaired qume boards to the onsite engineers, imagine that, printers you could repair! One engineer kept going on about this new fangled 'packet networking' that he was learning up on; we all just smiled... the rest is history!
XOR BX,BX was one clock cycle faster and one byte shorter than MOV BX,0 in the 8080 days. Great to see you MSFT guys knew this. I was using MASM pretty much the same time you were. I just didn’t work for Microsoft. Great job and thanks for posting this.
Optimisation 101
The power of working directly from registers, and XORing a value with itself produces zero. No need for any more bus cycles to load an immediate value.
@@TomStorey96 Amen brother. I’d only use the c compiler if I knew ahead of time with the code it generated and agreed. My tattered and torn 8080 software reference guide (the one that told the number of clock cycles to execute) is still on my shelf and i know all these years later about half the 8080 instructions and the clock cycles the took. I still loved the 6502 better than 8080 instruction set.
I've found Turbo C to generate assembly that isn't too far off what I would write by hand. You can probably still do better by hand but I'll take the tiny performance hit for more easily readable code. :)
I like assembly but I'm way more productive in C and will use it when I can.
IBM PC-DOS 3.11 was the gold standard when I was in college and also working at our local DuPont plant. They hesitated on 4.0 due to bad press and didn't advance until DOS 5.0 was released. We started using Windows 3.1 at the same time.
Similarly I recall going from MS-DOS 3.1 to 5 without ever seeing 4.
@@MrVaskor seems to be a meme, they did the same with Leisure Suit Larry games
The 360K floppy in a 1.2M drive was a thing. While it generally worked, the problem arose if you used the 1.2 to overwrite a track already written by a 360 drive, then read it back on a 360 drive. The narrower 1.2 track would not completely erase the 360 track, and that "leftover" signal would appear as noise to the 360 drive. I never ran into the problem, but then I had both drives in my computer.
BTW, formatting and writing a bulk erased disk on a 1.2 drive would read just fine on a 360 drive.
I always ran into trouble trying to read a 360K disk that had been overwritten with a 1.2M drive.
Uh, I'm young, I don't remember this. Always had 1.2M 5.25" drive and 720k 3.5" at least. If I don't count floppy attached to Sharp MZ-800. Brings back some memories when best PC games were F-15 Strike Eagle, Grand Prix, Lotus and the rest were few kilobytes games such as AlleyCat or Sopwith inferior to games on ZX Spectrum.
Came here to write this exact thing.
This is why I used one of those cassette bulk erasers when doing that.
@@pavelperina7629 There was a corresponding problem the other direction with 1.2M diskettes: you could read 720k diskettes on a 1.2M drive, but if you took a 1.2M diskette that had been formatted and used before, reformatting it for 720k would not produce floppies that could be read on a 720k drive, for the same track width reasons.
This brings back so many memories!! MS-DOS 4.01 was my first operating system on my first PC back in 1991! I had a Samsung 386sx/16MHz at the time, with 2MB RAM, 40MB Seagate ST-157A IDE HDD, and a Tseng Labs ET3000 SVGA with half the video RAM installed, (I think it was 256Kb), along with a colour VGA monitor (just up to 640x480) which would be the bare minimum system to run Windows 3.0 in 386 enhanced mode!
I don’t remember if the boot menus were introduced in later versions of MS-DOS, but I remember using them a lot to customise the memory configuration and drivers for each reboot, just to make enough space in RAM to run certain memory hungry programs or games of that era.
Boot menu was MS-DOS 6 fwiw
@@starfrost6816 I think that I was also using 4DOS a bit earlier than MS-DOS 6, and I first intruduced selective loading of programs in autoexec.bat back then, but I can’t remember for sure. It could just as well be on plain old MS-DOS 6 the first time I used boot menus… I definitely had multiple configurations much earlier with diferent boot diskettes for some games, or by copying config.sys and autoexec.bat pairs from a stash directory for the same purpose before the menus.
The MZ magic code that you see in the beginning of every MS-DOS executable (when opening them in a hex editor) is the initials of Mark Zbikowski.
Not only is "MZ" on DOS executables and earlier Windows executables, it is on modern PE Windows executables too _and_ all-platforms UEFI payloads (I was rather surprised and amazed, when working to help make the firmwares for a modern _ARM_ computer system - a Rockchip RK3588-based board called the Firefly ITX-3588J - that the UEFI payloads for the Linux[!] kernel had good ole "MZ" at the beginning!). The reason for this is not just legacy cruft; it's so that it can be abortively loaded by an old DOS/Windows system to spit out an error that it is not compatible with it :D
So Mark Zbikowski is the apex level digital tagger of all time then. He got his tag on the entire world. 😂 genius move
@@shimrrashai-rc8fqmmm, if you open any modern .exe in a hex editor you can see a string of that exact error message. Its wild.
And Zip files start with PK for Phil Katz, Zip creator
Thank you Dave, I remember using MSDOS and liked it, those were the days, editing autoexec.bat and config.sys to load drivers into small amounts of ram. Now computing is so complex!
Remember TSR (terminate and stay resident) programs? DOS wasn't multitasking, but this was a bit of a hack to get something running behind the scenes to provide background services. I don't remember what I was running, but I do remember fussing around with HIMEM.SYS and disk caching to try to clear up enough of that 640k because TSR's couldn't run in the high memory area or extended memory, as I recall.
@8:29 oops, looks like you forgot to remove the "Title Text" from your onscreen animation. Love the video! Super interesting looking back at how MSDOS operated!
I love these imperfections. It shows Dave is human, and it's like Easter eggs for us watchers.
It's free engagement and quite clever
Super cool man. Glad you're around to keep this knowledge alive.
listening to you is like listening to that tech savvy uncle that is "boy, I will tell you a story about the old days of tech" and I can't get tired of listening
I was already a Digital Research user with CP/M on my prior 8-bit system, so stayed with them and went to DR-DOS when I eventually bought my first PC (a 286, which had a 40-MB HDD). That, at the time, was the only way to run the 40-meg HDD as a single partition, which made me pretty happy. The largest MS-DOS partition at the time was 32meg, and I saw no good reason to slice it up.
I made some slightly strange OS decisions along the way, not using Windows personally until I could get NT, although I used a pile of variants of Windows at work, and CP/M-86 into the bargain. But for my own use, I kept up with the NT route, which proved to be the winning track to be on. I still run legacy versions on air-gapped machines locally, to get use out of a few programs that stopped being maintained by the writers, and which I was never able to get running on more recent versions of Windows.
You are more likely to find me on an open-source OS these days.
I really like that CP/M came with not only a big old hefty manual but also the full assembly language source code, all printed in there for you to follow.
@frumbert - I've never tried CP/M but I have great respect for Gary Kildall who wrote it - he was a genius!
Definitely deserves to be more widely remembered than he is.
That PS2 looks like it just came out of the box from IBM. thanks for sharing your unique history perspective! Really cool!
We used these model 95 bad boys around 1993 or so for OS/2 & SQL Server backends, when IBM was also peddling their God awful SCSI RAID solutions.
They had this feature where multiple drives would fail to start on cold boot, rendering the RAID invalid. The IBM engineer was called, he used the hammer in his toolkit to tap the drives to unstick the parked heads.
The RAID config was stored in battery backed RAM on the HBA rather than across (or as well as) the drives... which was great until the HBA failed. OF course, there was no means to backup the config.
That was the start of the death of IBM, we switched to Compaq. When your RAID solution is less reliable than a random bunch of disks, it's time to throw in the towel.
The finest digital archeology on the interwebs. Keep up the great work, Dave.
Shocked to learn that Dave’s garage is an actual garage with cars in
Lawn mowers, the whole deal!
I started with DOS 2, later when 5 came out I could not put it on my machine because of the low density of my floppy drive. So, I took my machine to work and used Procomm to download it straight from the sever over a serial port. After win98 I used DR Dos. I realy enjoyed this one Dave.
Been waiting for this! Looking forward to hearing your takes!
the way you present your ideas always blows me away! ️
I tested support for multiple harddisks in DOS 4.0 fdisk on PS/2 machines for IBM. Fun to finally be able to see the code I tested at the time.
The fact that you can simply explain what is happening in assembly Dave.
I kindly ask you for MORE !!!
Please and thank you.
This was awesome, I had heard how uploading the files to Github messed up the formatting as it was upgraded to UTF-8.
Half the time I have no idea what you are talking about, but I love this channel! I remember booting up MS-DOS and playing my first games off floppy disks. Awesome to see how it works in the back-end.
MS-DOS is so important in computer history! So this step is fantastic
ever heard of unix? (leave me alone please i was just saying not trying to attack anyone like that one guy below did")
@@QohistUnix served a very different demographic
@@Qohist It was ok, but VAX/VMS was better.
@@Juanguar i know ms dos was meant to be a desktop os unix was for servers but im just saying
@@Qohist exactly
Unix changed server computing history and DOS changed consumer computing history
So there’s not much relation between the 2
I've really enjoyed your videos taking us all back in time of how the dev life was back at Microsoft. I live in the UK and I remember growing up with Windows 95/98, 2000, etc. Now I'm a senior software engineer working with .NET C#, it's always peaked my interest how Windows was built! Cheers Dave for that!
“Piqued”?
I lived this. So, cool to see acurate history.
Had CP/M systems as well.
Had it mainly in college.
If I may ask, what was your experience with CP/M like? Was it better, worse or about the same as DOS?
Thank you for your time
@@greenrocket23 CP/M was pretty primative compared to DOS (especially later DOS with Unix like features), but at the time we took in stride. Never used CP/M+.
@@greenrocket23 Like Larry said. Primitive, simple. Source of "Int 21" and many of the command options. "DOS" copied "int 21" for "compatibility".
It was the 80s, now I'm 66. There has been a lot of O/S and programming since.
If I was a RETRO enthusiast, CP/M, CM/M+ with better directory structures, yeah, I'd play with that.
CP/M came first, in the 70's and worked on more primitive 8 bit CPU's. QDOS which turned into MS-DOS was based on CP/M in usage thanks to familiarity but took advantage of the more capable 16 bit 8086 and storage media at the time. Fat12 and on was a QDOS creation, CP/M used a more primitive method to keep track of used blocks on the drive, using a bit field, which scales poorly to larger drives.@@greenrocket23
Thanks again Dave. It feels like I have an insider to Microsoft every time I watch your videos
Would love to see some longer deeper dives into the code of DOS. Perhaps explaining some of the clever tricks you had time use to get around limitations, or things that just needed unorthodox solutions. I'm sure you going over even the most mundane details would be fascinating.
In school we had a CP/M server with an array of Z80 powered terminals. It had a big Winchester drive that stored our accounts. Later my first computer was a 286 with a Hercules graphics card running MS_DOS. I'm not certain of the version but on the bookshelf beside me I have a copy of "DOS 6: A Developer's Guide", so it must have been that. That was the first computer book I ever purchased. I see now it still has a price sticker on it - $17.99 "Special" which makes me recall that I bought it at a computer book fair, and it was after I had already figured out a lot of stuff without such a reference. That book was my pride and joy and my capability to code in DOS really took off from there. I certainly remember the INT 21 with the command in the AH register was the key to it all.
I used to install IBM XTs in the government with all their software. I was EXTREMELY popular. It changed how everyone did business. The snotty mainframe and PDP-11 people got left in the dust. Good times.
That’s out of date software. At least from what I can tell.
I have a computer that used to run Windows 95 and MS-DOS 6.22. It is an IBM Sureone POS 4614 from 1996. Thank you for your work on those OS's! That computer is sitting next to my modern Windows 10 computer right now! It is currently running MS-DOS 3.31.
I seem to remember MSDOS4.0 being somewhat plagued with issues, with folks rolling back to 3.3.
I am already subscribed to the channel. You're welcome!
Yeah we refused to use 4.0. We stayed on 3.3 until 5.0 came out.
It was a bloated and slow.
@@stargazer7644 I remember that as well but considering there wasn't the internet it must have come from a review in some monthly computer magazine that I spent a fortune back in the day.
I was the test lead MS-DOS team since MS-DOS 3.3 to Windows 98. The story about DOS 4, it was designed and wrote totally by IBM not Microsoft. We had a tiny team, IBM had an army. We had the job to ported PC-DOS over for all the other compatible PC venders. When we got the PC-DOS drop I reported problems with their slow & fat setup program, requiring swapping disks. We totally replaced setup. I reported slow response of their new shell program and resource requirements. We replaced the shell so it would work better on slower OEM systems. I also reported to the development team the new disk buffering system added had no end user performance advantage and recommend using Microsoft smart drive used by windows to improve performance showing real world benefits without heavy use of conventional memory. We removed their new disk buffering code, the main benefit was this action alone avoided 2 disk corruption bugs that PC-DOS 4.0 had that MS-DOS 4.0 did not have. I only had one tester working for me, it was impossible to catch every bug IBM added, MS-DOS 4.0 did ship with one disk corruption bug, sorry. After that IBM gave Microsoft design control over DOS, the IBM developers loss their jobs on DOS. Same thing happen again when I was moved to Windows 95, but the OS/2 team was replaced. I fought hard for end user benefit and against uneaded features.
That wasn't just your dog snoring! Seriously, this is great stuff, Dave. I loved MS-DOS 4.x when it was the latest and greatest sliced bread. I continued to use MS-DOS through version 6.22 for which I still have an unopened, shrink-wrapped box with the 5.25-in floppies. One of these days I'll pick up a vintage PC clone at a garage sale and give that old horse another ride.
My journey with MS-DOS began in 1988 at version 3.1. It was infuriatingly obtuse. The best book you could buy on it was the equivalent of learning how to speak English by reading Websters dictionary. Had it not been for a salesman named Chauncey, I suspect I would have given up after a month or so. However Chauncey asked if I'd like a modem with my new computer (a laptop that featured a lead-acid battery). The modem allowed me to connect to Compuserve and actually do something interesting with my new PC. Six months later I had figured out MS-DOS and shortly thereafter joined the IT business.
Oh, the memories. Thankyou for the blast from the past.
I can’t wait until Dos6.2 is open sourced. freeDOS will love it.
It's all way over my head, but im hooked none the less. ❤ your channel Dave.
On the Atari we called Atari DOS "DOS" because that was the BASIC command used to access the Atari DOS menu. DOS was just too generic a term back in the day to expect someone to just know which DOS you were talking about.
The handheld Atari Portfolio used a version of MSDOS 2 because MSDOS 3 needed to be able to write back to itself and Atari needed the DOS to be in ROM.
I've always thought of MSDOS 3.3 as the standard and everything that came later as just adding more bells and whistles.
3.3 was the sweetest spot. 5 was a close second. Edit: I'll be really really happy when MS releases either of these's source.
For a while in the late 1970's into the second half of the 1980's practically every personal computer with floppy drives had a DOS. The popular TRS-80 computers had TR-DOS. Heathkit computers had HDOS and so on.
I remember the Atari ST had TOS.
I always wondered why my portfolio had DOS2. Thanks!
@@JCCyC second that, 3.3 was quite "functional". However, I found that 2.11 was the last version not to mess with things behind the scenes, and instead do what you told it to. If you copied a disk, that's what you got, an exact copy. In ver 3 it started trying to be "smart", and for instance changed the disk label (identifier) on the copy.
I use GreaseWeazle for all kinds of disk formats and (other than operator headspace issues) have not had any issues using a 1.2mb drive to do it. Great vid btw!
The requirement for "MS-DOS" specificity may have been a holdover from the 80's when we had multiple DOS's that were not necessarily related. For example, we had Atari DOS, Apple DOS, Commodore DOS etc. None of these things were related in any way. At the time DOS was just generic for "Disk Operating System" and did not have any specific meaning beyond that. DOS only became synonymous with MS-DOS as IBM "clone" PC's took over the market in the mid-to-late 80's, with almost full takeover by about 1990.
In the 70s there was also IBM DOS for the System\360 mainframe :)
No, I'm sure this was 100% a company-wide mandate to reinforce the mentality that "the only DOS is MS-DOS." Microsoft was _fiercely_ competitive at this time, and not above sabotaging compatibility with "Not-MS-DOSes". The FUD, along with OEM strong-arming, was successful, though. I had _heard_ of alternative DOSes, like PC-DOS (which wasn't really an alternative, at least until version 5 or 6), DR-DOS, etc. ... but I had never seen them. The closest I got was an AST machine that, while it shipped with MS-DOS, used PC-DOS naming convention of ibmbio sys and ibmdos sys instead of io sys and msdos sys. I'm not sure why the discrepancy, and the disks were definitely labeled MS-DOS and had an MS-DOS setup program. Still, it was drilled into your head that MS-DOS was the only way to fly. That was NOT an accident.
Not to mention DR-DOS.
Microsoft really really hated digital research getting into their turf with DRDOS
@@fcassia I don't doubt it. I reckon that was the reason for wanting everyone to say "MS-DOS". Anyone can say they're DOS, but only Microsoft can say they're MS-DOS.
Hey Dave - really glad I found your channel - we can wait to read your book. I have Asperger and have always considered a different way of processing as a blessing more than a curse
Man ms dos was something every body loved and hated at the same time
Just like Windows.
Things were different. Instead of spending hours on the internet going into endless rabbit holes looking for solutions, you spent hours with jumpers, editing config.sys & autoexec.bat, and rebooting, on the impossible task of getting everything to work together.
@@samuelhulme8347 one must be getting a really fat check from Microsoft to dare claim they love Windows in this day and age
I never hated it. I don't hate Windows either... I do hate what it's become, though.
@@jovetj ..said somebody, at every new release.
For a long time it's been an eventual goal of mine to have 5.25 and 3.5" floppy drives in my modern system, and I'm glad that the hardest part will be finding or building the case now that I know such adapter boards exist.
Physical Box art for Applications back in the day were real art. I fell in love with the MS-DOS 6.x Box Art. Even Microsoft C++ 6+, The CD-ROM for C++ 6 was nice looking with the 3D Blocks Typography. Miss these days
I believe the key with the 40/80 track drive thing is not to go back and forth. Clean the disk with an external magnet to get rid of any left over data, write it on the 80 track drive if that's what you have, use it on the 40 track drive. I think you mainly get into problems when you take a disk written on a 40 track drive, overwrite it with an 80 track drive and then read it back on the 40 track drive. The 80 track drive doesn't completely overwrite the data written by the 40 track drive and that can lead to interference when reading back on a 40 track drive which can see the part of the track that's been overwritten and the part of the track that hasn't.
Bingo.
The assertion that "writing 360K disks on a 1.2MB drive works fine" is true if, and only if, the disk is _completely_ empty when you start, and you never ever mix writing to the disk on the different drives. Write once, read many -- fine. Write once, update on the 40-track drive -- probably fine. Write on the 40-track drive, then write on the 80-track drive -- discover the "lore" first-hand.
I bet seeing this code brought back a lot of memories.
I've been experimenting with DOS 6.22 since I was about 13 or 14 years old. As someone born in 2003, that's pretty odd, but I didn't care.
I've been a computer/IT nerd since I was 10, and now, a decade later, I finally get to see who made my favorite version of DOS possible!
im glad to see your birth year did not dissuade you from learning the older OS, as i was born 20 years earlier than you, and i never felt like i could get into the stuff that was even a little bit older than myself. i have always wished i was born about 15 years earlier so that i could be around when software was starting to be made from scratch. to this day i still have no idea how it all works on the hardware level. i tried taking some computer courses but ultimately it felt too much for me to pick up. i can use and build computers just fine, but i will always have this missing chunk of information....
I wrote my TSR program to display a clock on the corner of the screen, which is a step-up version of my assembly class homework, which impressed everyone. It was tricky since I cannot call any int 21H or int 10H given most of the interrupt handlers are not re-entry friendly. I ended up with writing into the display buffer @ 0xb800 directly. Painful, but decades later I would still smile when I recall those old days.
I remember a guy that made the interrupt.lst file (Ralf Brown's Interrupt List) for MS-DOS describing all INTXX calls, parameters and returns.
There is a html version online with a table of interrupt numbers. But the original is inside some zip files.
I bet that was ... fun ... to figure out. At least, the portions not well-documented and released to civilians.
This takes me back to the days when I made a local book shop order me a copy of "Dissecting DOS". They where far outside their depth, but manged to get it thanks to me having the ISBN... that was in the mid-90s
Your dog isn't the only one snoring. 🛌 Just kidding, this is fun stuff. I can't wait to rewrite MS-DOS 4.0 using Borland C++.
My recollection from back in the days when my family had an original 8088 PC and a then-modern 386sx is that the 1.2MB drive would read and write 360k disks just fine, however a 360k disk written by the 1.2MB drive would usually no longer work in a 360k drive. The problem being that the tracks of a 40 track drive end up right down the middle between two tracks of an 80 track drive, the 80 track drive would need to be able to half-step in order to write a 40 track disk with the same alignment. I don't know if this was the case for all drives, but I do specifically remember having problems going back and forth between the original full height 360k drives in the IBM PC and the Teac 1.2MB drive in the 386.
Stainless steel mouseball? Me likes.
Love how your first impression of the code was "that is not how you keep the formating".
That ball alone, unless it's hollow, weighs more than a Finalmouse UltralightX.
Dear Dave. You were on fire in this one. Loved it. Thanks
Dave you didn't mention its clone competitor "DR DOS" which may have been part of the motivation for specifying MS-DOS, DR DOS is significant because it drove some innovations in MS-DOS and it was the basis for Novel Netware and was open sourced much earlier as "OpenDOS" by Caldera in 1997 under the GPL license.
Also 4DOS (which Norton licenced as NDOS and included with Norton Utilities v5 through v8)
You obviously have never used Netware. DR DOS was in no way the basis for Netware. Novell Netware was first released in 1983. Digital Research released the first version of DR DOS 5 years later. Novell bought Digital Research in 1991 and sold DR DOS under the Novell brand after that.
This has been one of the most interesting things I listened to, this week, without understanding most of it.
I hope this makes dosbox even better somehow.
I mean, FreeDOS has been a thing for over a decade.
It probably won't. At this point, the free software investment in reverse-engineering DOS is pretty much complete.
I started using MS-DOS around 1982 and used it a lot after that. I also wrote a lot of ASM code, entire programs. I had all forgotten how tedious it was and what a bear to maintain and develop further.
Awesome 👍
Haha the effort in that opener.... LOVE IT!!!
I always love your "retro" Microsoft content!
8:44 lovely full tower ps2!
I dream of finding a full tower 486 some day.
I still have our 486 "tower-and-a-half." We built it using a case that was at least 30-inches (0.76-m) tall. I'll have to dig it out one day to see if it will still run. I *think* that I still have every computer (except one 386 system) that I ever had, starting with a TRS-80 Model III. All of my following machines ran either MS-DOS or different versions of Windows (3.11, NT, and up until Windows 7). Then came my PDP-8s (which take a *lot* of space, being rack-mounted), and I was given a C-64 by a coworker whose wife decided that he didn't need to keep it anymore. My original 8086 machine (a clone) "works," except that the ~10MB HDD finally died and decided to no longer turn (I suppose the heads stuck to the platter).
Thanks for the walkthrough. DOS 4.01 was the version that taught me about fdisk version differences. Ohhh the bad old days!
a) 1.2MB vs 360KB floppies, IME you got lucky there fella.
b) "Memory test takes about a minute to run and then the system will finally boot": oh, and what amazing progress we've made on that in 40 years 😜
One would think that writing 360k floppies should work if one were to write 2 adjacent tracks using an 80 track drive with the same data, but issues with sync timing accuracy and track length differences would probably make an even bigger mess than just writing every other track (on a virgin floppy).
It really isn't a problem at all, if you either start with unformatted diskettes or degauss them before formatting. The problems only happen when there is anything at all written on the odd-numbered tracks.
Just be glad the memory test prints progress. The early ones don't, so the computer doesn't print _anything_ on the screen (not even a flashing cursor) until the memory test has completed.
Nowadays it's Windows updates that slows down your boot and they won't be done in just a minute! 😂
(Not an issue on Linux though ^^)
Having to wait 1 minute with nothing on screen sounds oddly familiar to me as an AM5 user 😅
This was awesome. I was really young back then (maybe 8 in 1986) but my dad was programming software as a hobby unlike the other kids my age reading novels, I read all the computer manuals cover to cover. And all the programming books. I understood how to write a program to amortize things in BASIC before I knew what a mortgage was.
The first release of MS-DOS 4.0 was extremely memory hungry, IIRC.
i hope you fed your hungry DOS
Memmaker
Yeah, it's been too long to remember the details, but I do remember 4.0 was a turd and we didn't use it. We stayed on 3.3 until 5.0 came out.
@@stargazer7644 Funny how they keep releasing source code for the versions nobody liked.
@@mlegos When MS-DOS 4.0 was first released, MemMaker wasn't available yet.
Thanks Dave
This is a throwback to the 80s for me.
I might have questions about this in a few months depending upon how well I move through the code.
Thanks Again
I dimly remember that as a student, I wrote TSR (terminate and stay resident) programs with MASM, hooking into INT 8 to get called and executed periodically. There was a full-screen text mode editor simply called M (M.EXE), which was pretty advanced at the time; it supported column-based marking and copy/pasting.
I wrote a TSR that hooked the open file int21 function and printed the file name on the last line of the screen so that I could see what files were being loaded as programs started.
Your book changed my life. ❤
Mark Zbikowski is why the DOS header starts the way it does... "MZ"
The 40 vs 80 track issues usually are only an issue with weird formats, damaged disks, or misaligned formatting, Adrian's Digital Basement has a lot of information on how to best work with different formats. One other common issue is if you take a 40 track disk and reformat with an 80 track drive it can leave bits of the previous tracks behind that can interfere.
Not at all true. Take a genuine IBM PC XT and a PC AT, format the disk on the XT, copy some files to it on the AT, and then try to read that disk on the XT.
The mechanism for what happened there is well understood and entirely predictable. It's exactly what Dave says is not happening -- the 40-track drive lays a thicker track in the middle of the 1/40th divisions. The 80-track drive lays down thinner tracks on either side of it. If you don't erase the _entire_ track (by using the larger 40-track head), then reading the track back will result in a combined image of the old 40-track flux and the new 80-track flux that overwrote _half_ of it.
Been waiting for this one...
MS DOS 3.3 was, in my experience, the most stable and useful DOS. I used it for 6 years, trying later versions when released, but always going back to MS DOS 3.3.
Somewhere along the way, a friend shared a hack where I could re-label it with my name. :)
love the kobayashi maru reference
Personally started on Windows 98 SE, some of the games I had ran in the MS-DOS Prompt window, and of course some underlying functionality might have relied on MS-DOS. Like when installing Windows 9x from scratch, you usually had to use a bootable floppy in order to create a DOS partition and format the disk. Other than that, didn't really learn DOS commands until the late 2000s when I was interested in learning this stuff 😊
By the way: The fact that you had to partition (fdisk) and then format (using command format) the disk in DOS/9x made me think that that's the order it goes. But in reality, you really first format a disk with a MBR or GPT, then partition it! Fdisk automagically writes and MBR (format) and partitions the hard drive. The format command then formats the partition to a filesystem FAT/FAT16/FAT32. Never really needed to know about this until I started messing with Linux.
I remember typing in a program on his very early PC for a guy "way back when" since he didn't type very well.
Then saving it... to.. cassette. :O
At the age of 7, my sister and I would sit down at the Vic 20. I would read and she would type.
Only time we weren't fighting 😂
@@kstriclThat’s nice to hear. I hope you have more good memories.
So glad I'm old enough to have lived in the MSDOS days. I did all my programming in debug back in the day. Saved it as a .com file.
I get why MS might not want to release versions of Dos past 6.2, the ones that are essentially part of Windows 95. But why do you suspect they haven't open soured 6.2?
Your "old" hardware looks so pristine in the video - cool!
Now i can see MS-DOS. Literally.
No. Actually.
THE episode I was waiting for! :) Thank you!
I've always wanted an EXE file that loads a message saying "For my fan OrcisGrunt on {date}! - Mark Z" digitally signed by Mark Z. It would be cool to have a compiled application featuring the MZ header and Mark's Digital Signature.
Why can't software rock stars compile and sign stuff like pop rock stars?
Here is a question for you. What makes an .exe vs a .com?? And no, I don't mean an internet domain name here. It's an MSDOS question and a very easy one.
@@RCShadow the format itself
@@RCShadow The com is basically just a small exe with the header omitted, replaced with default values, so its basically a raw binary program with defaults like shared code/data/stack segment, no entrypoint & no relocations to name a few
@@RCShadow .exe format starts w/ MZ. Com is older and was inherited from CP/M. IIRC the MZ format / exe's start with MS/PC DOS 2.0
@@RCShadow The ".com" files are up to 64K in size, ".exe" files are anything larger than that, if memory serves.
I had an xt that ran dos 3.11. Me and a buddy upgraded to 6.22. The 360k floppy was just big enough to get the 6.2 sys command on it. Copied the rest of the files via telex and zmodem over 2400 baud between our houses. Took a few overnight copy sessions before it was complete.
I haven’t seen content about ReactOS on this channel but I’m curious on Dave’s opinion. It’s basically a GPL “rewrite” of Windows Server 2003 currently. I tried it in a VM recently, actually it was better than expected, could use total commander and firefox 53 and it didn’t crash 😂
All the source is public and said to be using genuine non-MS code.
PS: Task manager is implemented already :)
@goodmanke - I've played around with ReactOS - it's great! Huge respect to the devs there, they've done great work!
I also have great respect for the Haiku devs - they're doing awesome work too!
ugh... I never thought I'd see this of my living. Insane video. Thank you Dave.
Could you please push your fixed version back to a fork on GitHub with the fixes you did?
What a wonderful journey. Thanks!
Would be interesting to explore some small multitasking demo
As far as I know, it was done by hooking the timer interrupt
@@overbored1337 The timer interrupt hook could be used with any version of DOS by any program, including Desqview to simulate multitasking. If MSDOS 4.00 was called "multitasking" out of the box, it should support simultaneous programs running or have a formal multitasking API.
@@jazzerbyte I always used the timer interrupt because of backwards compability, because even 386 instructions were discouraged in real mode dos programs long into the pentium era.
So much fun to see operations that relied on the original BIOS/OS calls accessed by software interrupts. Did a ton of assembly language programming on the 8086/8087 processors for embedded control products, but also hacking out util programs. As we fled the mainframe and minicomputer crosscompilers to PCs, it was a wild ride. Peter Norton and Kim Watt were legendary.