NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Open Sourcing DOS 4 (hanselman.com)
pavlov 7 days ago [-]
When I was nine years old, I liked poking around with a hex editor on my dad’s PC.

I didn’t speak English and MS-DOS wasn’t yet localized to Finnish in 1989, so I decided to try translating it myself with a dictionary by manually finding and replacing strings in the SYS/COM files. The result worked and my dad was suitably impressed, if probably a bit peeved that nothing worked anymore in the shell as expected (since I had replaced all the basic command names too — “dir” became “hak” and so on).

It’s pretty cool to see those strings again in src/MESSAGES.

At the same time, it feels a bit sad that today’s kids can’t get the same feeling that the computer is really theirs to modify. Modern operating systems don’t run binaries tampered with a hex editor. Most kids are on operating systems like iOS where they can’t even run a C compiler.

They can play with code in various sandboxes locally and on the web, but the computer fundamentally belongs to someone else today.

andsoitis 7 days ago [-]
> At the same time, it feels a bit sad that today’s kids can’t get the same feeling that the computer is really theirs to modify.

Kids with a hacker mentality (let's face it, even in the 80s those of us who hacked around with DOS etc. were the teeny tiny minority) have more options than ever before, including but not limited to FreeDOS, Linux, or a bunch of others https://en.wikipedia.org/wiki/Comparison_of_open-source_oper...

Finding it is also super easy if you have the curiosity (and of course a PC and an internet connection).

schandur 6 days ago [-]
You said the magic keyword: "curiosity", when it comes to computers and tech at least. Something that I find severely lacking among - for lack of a better term - Gen Z.
orthoxerox 6 days ago [-]
It's the difference between hackers and users. You probably don't rebuild your car's transmission and don't build your own long-distance radio, but there are people that do it for fun. However, there was a time when both drivers and operators consisted mainly of people that hacked on cars and radios. Some of the hackers were involuntary hackers and gladly became users when cars became appliances.

The same applies to PCs. Gen X and older Millennials had to become hackers just to get the sound working in their newest game, so if you saw a guy on IRC you knew he was a fellow hacker. Now everyone is online, including people who would simply not use a PC back in the 80's or 90's. They can afford to treat their personal computing devices the way I treat my personal commuting device: fuel goes into this hole, I need to consult the manual to open the boot to top up window washing fluid, the rest I happily delegate to a professional. But the hackers are still there: grease monkeys, DXers, hackers proper.

snickerer 6 days ago [-]
The youth of today simply don't have it in them! Unlike us back then, they're just not as cool, not as strong, not as smart...

This complaint is as old as mankind and has always been wrong. It seems to be a feature of human thinking that we glorify the memory of our own youth.

zooq_ai 7 days ago [-]
My favorite Hex Editor hack was when I cracked a Windows software simply by changing the instruction "Equal to" to "Not Equal to" where it matches for Software Key with user entered key.
Jerrrry 7 days ago [-]
branch if not equal.

and noops.

we were reverse engineers, make no mistake

shudza 6 days ago [-]
It was something like: find "74", change it to "75" lol
someplaceguy 6 days ago [-]
Yes, but the hard part is that were a lot of "74"s and you had to figure out which one had to be changed... :)
tomduncalf 5 days ago [-]
Ahaha wow this brings back memories :)
tambourine_man 6 days ago [-]
Many replies here argue that there are plenty of choices today for the hacker-inclined, many more than 40 years ago, which is true, of course.

But I think what your post implies is that regular computers back then invited you to hack them. It might have awoken a curiosity that could have otherwise remained latent in many of us.

A anecdote from the other side of the fence: Apple used to ship an app called ResEdit whose sole purpose was for you to hack with your Mac. Change strings, menu shortcuts, images, sounds. I had my own localized and rebranded version of Eudora and many tiny modifications to games. Can you imagine a first party hacking tool like that today from the fruit company?

m4rtink 6 days ago [-]
I think ots rose tinted glasses to a degree and survivorship bias - the learning curve was very steep, documentation lacking or absent + no one to ask for help. I was glad I could run some games on my C64 and never really got farther with it due to these limitations.
hnlmorg 6 days ago [-]
The old 8bit micros from the c64 era had plenty of documentation. Those computers even shipped the schematics of their hardware, let alone a manual for BASIC.

I literally learned to program by reading those manuals

kminehart 5 days ago [-]
But I think the missing ingredient they had back then was there was nothing better to do. Being "bored" isn't as much of a thing anymore for anyone, not just children.
tambourine_man 6 days ago [-]
I just remembered replacing the Netscape “N” comete with my own GIF. How cool was that?
tombert 7 days ago [-]
The DOS era was a bit before my time; I had a C64 as a kid but I managed to break it before I got to do too much fun [1].

That said, I got into web dev when I was a pretty young kid, about 9 years old, and I would have fun hacking together different websites. Eventually I noticed the “edit” button on top of the browser and learned you could mess with other people’s sites as well. I had lots of fun breaking stuff.

Computers are so cheap now, I think it’s relatively easy for most families to have a computer that can be programmed. For that matter, the Raspberry Pi is cheap and has hundreds of resources available to play with, many of which are kid friendly.

[1] before you ask, I am not 100% sure what I did, I was playing around with some code I found in a manual for it that my dad gave my when I was 7-8, and I must have done something bizarre cuz it stopped booting.

FLT8 6 days ago [-]
The C64 breaking was almost certainly not your fault.. they had a bunch of commonly occurring faults, and a number of the chips, especially those which commodore fabbed themselves were notorious for giving up eventually. The PLA failing was a particularly common occurrence, but RAM and other glue logic sometimes fails too. These days there's a vibrant hobbyist community and a lot of the chips have modern replacements available. I'm still grateful for having grown up with a C64, it was a fun way to learn the ropes.
criddell 7 days ago [-]
I wouldn't cry too long for the curious children of today. There are more frontiers and available resources for kids today than we ever had tinkering with an isolated TI-99/4A or VIC-20. We could share a cassette with a friend and if we were super lucky there was a local user group that met in a church basement right after the AA meeting.
lm2s 7 days ago [-]
I did that with GTA, translating it to Portuguese. It was then that I learned that I could overwrite the strings with the Hex Editor, but not insert anything because it would stop working. And thus began my dive into computers.

Great memories, thanks for making me remember it.

* Actually now that I really think about it, it wasn't with an Hex Editor, it was with Edit! Fun times.

smokel 7 days ago [-]
I remember trying to rename LILO (from "Loading Linux" fame) to PIPO [1] by simply editing the bytes with a hex editor.

Turned out that didn't work, because there was an additional sanity check that halted the boot process if the "LI" bytes were corrupted.

Of course I put through and was a happy user of PIPO for some years, until Grub came along.

[1] https://en.m.wikipedia.org/wiki/Pipo_de_Clown

thaumasiotes 7 days ago [-]
When I was running Gentoo, I wanted to replace the GNOME foot that appeared on the dropdown menu with a Gentoo-fish-in-a-wizard-hat icon.

I found documentation suggesting that the icon shown on the menu was set in a certain configuration file, and changed that file.

This meant that, when I was using the normal UI to customize the GNOME topbar, the icon associated with that menu, in the GUI, was the fish-wizard icon. But it did not change the icon displayed in the menu itself.

I always resented that. I still don't like the concept of hiding configuration lest the user change it.

bilekas 7 days ago [-]
> MS-DOS wasn’t yet localized to Finnish in 1989

That's genuinely something today I appreciate but when putting the 10th floppy in to update windows3.x. relative these days!

> it feels a bit sad that today’s kids can’t get the same feeling that the computer

Can't agree more. trying to get my cousins and nephews interested is in their term "Not important"

dhosek 7 days ago [-]
I really loved the rare cases of software publishers who put the serial number for the software on disk two instead of disk one so you didn’t have to eject the disk you were working from to do the install.
sumtechguy 6 days ago [-]
I still remember OS/2 2.0. Gawd what an awful first time experience with an OS.
squigz 7 days ago [-]
Don't be too sad that computers have matured: hackers gunna hack, no matter the generation ;)
fuzztester 6 days ago [-]
I remember editing command.com too, with debug.exe, to change some of the standard messages, or even command names, as you did.

Another cool DOS thing was that you could type Alt+255 (last 8-bit character code) as part of a filename. That appeared like a space character, so made it effectively "hidden" to those who did not know about the trick, because they could not type its name to list or edit it.

PodgieTar 6 days ago [-]
I used to do this on Windows XP to make my desktop look cleaner, all the files were ALT+255 repeated N times, or, more accurately, repeated a random number of times.
hnthrowaway0328 7 days ago [-]
We can still give DOS to kids though. I'm going to try it out when he reaches 6.
drewzero1 6 days ago [-]
Occasionally I allow my (toddler/preschool) kids to play 'Kindercomp' in DOSbox on my computer. It's got a mode that prints the letters you type across the screen in different colors, which seems to be the fan favorite because it rewards indiscriminate keyboard mashing.

When they get a little older I plan to introduce QBASIC programs that do the same kind of thing, then we can start looking at the code that makes it do that.

stepupmakeup 7 days ago [-]
>Modern operating systems don’t run binaries tampered with a hex editor.

do you mean non-system ones?

grishka 7 days ago [-]
MacOS is notorious for this. By default, it would only run binaries signed with an Apple-issued certificate. You can bypass this multiple different ways, of course, but that requires knowing that it can be bypassed in the first place.

Then there are mobile OSes where you don't get to see the binaries at all. Yes you can repack an apk but again, that's a more involved process requiring specific tools and knowledge (and very awkward to do on the device itself), and iOS is completely locked down.

andsoitis 7 days ago [-]
> MacOS is notorious for this. By default, it would only run binaries signed with an Apple-issued certificate. You can bypass this multiple different ways, of course, but that requires knowing that it can be bypassed in the first place.

What do you mean? When I compile something with a myriad of different language stacks or compiler toolchains, I'm not aware of an Apple-issued certificate ever being involved and those binaries run just fine.

grishka 7 days ago [-]
Probably because the environment you use to compile it, like the terminal or Xcode, is added to "developer tools" under security settings. Xcode in particular does that for itself automatically.
andsoitis 7 days ago [-]
So I don't even need to know how to bypass it because it happens automatically behind the scenes. Nice.
grishka 7 days ago [-]
But if you edit a binary with a hex editor, invalidating its signature, you would need to know how to bypass it.
einherjae 7 days ago [-]
Unlike your average user, if you have the knowledge to apply a hex editor, then you probably can Google how to work around the signature error.
GnarfGnarf 6 days ago [-]
It won’t run on another user’s computer unless it’s been Notarized.
eru 7 days ago [-]
Some OSs want their binaries to be signed and probably have checksums etc. It would be hard to keep those valid when mucking around with a hex editor.
ryandrake 6 days ago [-]
This is fine if the user was empowered to re-sign it after the mucking. The problem is that the user is rarely in charge of their own computer anymore.
eru 5 days ago [-]
Outside of mobile operating systems, eg on Linux, Windows and MacOS (and all the BSDs etc) it's fairly trivial to run binaries you built yourself.

But: re-signing is an extra step that someone who's just starting out and mucking around with a hexeditor might not know how to do nor even be aware of.

josefx 7 days ago [-]
> Modern operating systems don’t run binaries tampered with a hex editor.

Luckily that isn't universally true. I had to do a decent amount of binary modifications on Linux to deal with bugs and glibc compatibility issues.

cmer 6 days ago [-]
I liked changing the copyright company name to my own name. Made me feel like such a boss.
userbinator 7 days ago [-]
You can still patch binaries on Windows.
airtonix 7 days ago [-]
[dead]
conkeisterdoor 7 days ago [-]
It looks like "brain damaged" was the developer's go-to insult when frustrated :D

2024-04-25 19:35 ~/sort/dl/MS-DOS % grep -nri 'brain[ -]damage' .

./v4.0/src/DOS/STRIN.ASM:70:; Brain-damaged TP ignored ^F in case his BIOS did not flush the

./v4.0/src/DOS/PATH.ASM:24:; MZ 19 Jan 1983 Brain damaged applications rely on success

./v4.0/src/DOS/FCBIO.ASM:28:; MZ 15 Dec 1983 Brain damaged programs close FCBs multiple

./v4.0/src/DOS/FCBIO2.ASM:28:; MZ 15 Dec 1983 Brain damaged programs close FCBs multiple

./v4.0/src/BIOS/MSBIO1.ASM:82:; REV 2.15 7/13/83 ARR BECAUSE IBM IS FUNDAMENTALY BRAIN DAMAGED, AND

./v4.0/src/CMD/PRINT/PRINT_R.ASM:1772: ; See if brain damaged user entered

ssklash 7 days ago [-]
Super cool to see MZ initials, which are for Mark Zbikowski. They are still to this day at the beginning of every Windows executable/PE file.
accrual 6 days ago [-]
> Super cool to see MZ initials, which are for Mark Zbikowski. They are still to this day at the beginning of every Windows executable/PE file.

Another is "PK" as found in the header of ordinary .zip files, after its creator Phil Katz (RIP).

https://en.wikipedia.org/wiki/Phil_Katz

agumonkey 6 days ago [-]
I can't recall where exactly but there's something similar in systemd, some files have LPKS... in them, which are most probably poettering, sievers and others early devs initials.
aquir 7 days ago [-]
What? Is this what MZ means? Fascinating!
stubborngoat 7 days ago [-]
"He was the designer of the MS-DOS executable file format, and the headers of that file format start with his initials: the ASCII characters 'MZ' (0x4D, 0x5A)" Ref: https://en.wikipedia.org/wiki/Mark_Zbikowski
thrdbndndn 7 days ago [-]
> In 2006, he was honored for 25 years of service with the company, the third employee to reach this milestone, after Bill Gates and Steve Ballmer. He retired the same year from Microsoft

Considering he "only" joined MS in 1981 (which was found in 1975?), I'm surprised no more people between him and Bill stayed at MS.

Also shouldn't Paul Allen still count (from Wikipedia, "Allen resigned from his position on the Microsoft board of directors on November 9, 2000, but he remained as a senior strategy advisor to the company's executives.")?

Edit: wow, never knew he worked at Valve, too.

hnthrowaway0328 7 days ago [-]
Early Microsoft seemed to be a pretty hardcore environment. I guess many employees came and got burned out in a few years.
knute 7 days ago [-]
And/or they cashed out $TEXAS in stock and rode off into the sunset.
hnthrowaway0328 6 days ago [-]
Yeah man. Meaningful work and loads of cash after IPO. I have always wished to work in such an environment.
cdchn 5 days ago [-]
I think a lot of people left Microsoft to start/join Valve, foremost of which Gabe Newell himself.
HeckFeck 7 days ago [-]
> ./v4.0/src/BIOS/MSBIO1.ASM:82:; REV 2.15 7/13/83 ARR BECAUSE IBM IS FUNDAMENTALY BRAIN DAMAGED, AND

Hardly surprising. If you grep the leaked NT3.5 sources for the f-word, you will find similar comments directed towards IBM.

sebtron 7 days ago [-]
Looks as if someone did an s/retarded/brain damaged/g before making the code public :)
Uvix 7 days ago [-]
That was my first thought, but that wouldn’t explain the hyphenated versions in there.
cdchn 5 days ago [-]
TP was apparently someones name before they force-pushed to change it too.
blobbers 7 days ago [-]
Let's bring back those DOS 4.0 period sayings.

Does this mean if you happen to be talking to BillG you could talk about brain damaged programs and he'd nod appreciatively?

mormegil 7 days ago [-]
Oh, you mean like it's some period saying? I'm using it normally. But then again, it's not like I'm keeping my finger on the pulse of the current trends...

See also http://catb.org/jargon/html/B/brain-damaged.html

helpmefindpurp 7 days ago [-]
[dead]
asveikau 7 days ago [-]
Somehow seeing the phrases "brain damaged" and "DOS 4.0 period" makes me think...

Bill Cosby's "Brain Damage" bit, from the album "Himself": 1982

DOS 4.0: 1988

Those comments also could have also sat in the tree for a few years.

glhaynes 7 days ago [-]
It was BillG who famously called the 286 "brain damaged" after all.

EDIT: Upon doing a web search, actually it looks like it was "brain dead".

wglb 7 days ago [-]
He went the only one. Most of us did.
dhosek 7 days ago [-]
I kept reading those as “Brian damaged” and thinking man, MZ really hated Brian.
sponaugle 7 days ago [-]
As Scott mentioned in the blog post, we were able to get this running on one of my original IBM XTs with an original IBM monochrome display adapter and display. It was very cool to be able to switch between a running version of a small game, Turbo Pascal, and a DOS prompt with a single key press.

It is always great to have period software on period hardware!

(added: Short video of it running - https://www.youtube.com/watch?v=YPPNbaQaumk)

mattl 7 days ago [-]
> It is always great to have period software on period hardware!

Really is. This is why I keep a load of old hardware around. Stuff like Mac OS 9 should be run on real hardware and same for old MS-DOS.

at_a_remove 7 days ago [-]
If not for space considerations, I would be right there with you.

I still have hardware and software to get me back to NT 4.0 or Windows 95 (OSR 2, please, it wasn't tolerable before that). I haven't needed to in a while, but in a previous job, we'd run across old disks in some author's archive and I'd go home to dig around, find a 5.25" drive and rig something up, reach back in time.

I could maybe do Windows for Workgroups 3.11.

If shipping weren't so brutal, I would love to send off my old stuff to someone who would use it. I still have working SCSI equipment! I bet somewhere there is someone stymied on trying to liberate some ancient works but for the necessary hardware/software setup.

metadat 7 days ago [-]
SCSI drives almost never go bad. Compared to IDE/SATA, they were significantly better built and had lower failure rates. I still have a few 15k RPM Cheetahs that still work, last I checked :).
sponaugle 7 days ago [-]
In general, it is surprising how many old hard drives still work. I have a good number of old SCSI drives (even Seagate!) that still work 40 years on. The ST225 in one of my XTs still works great as well. I actually have a ST238R still new in box, and I'll be curious to see if it can spin up some day. I suspect the bearings might be a stuck after all of these years!
h2odragon 6 days ago [-]
They can be baked to re-blend the lubricants and free up bearings. 200F for a couple hours, as i recall.
HeckFeck 7 days ago [-]
The SCSI drive in my Mac SE is older than me and it still works. Delightfully clicky, in fact louder than the floppy drive!
sponaugle 7 days ago [-]
Indeed - Space is a key for being able to collect and restore this kind of stuff. I have most of my working machine lined up along a wall in one of my garage/lab areas (https://youtu.be/XHvdqB6LSg0). My wife has pretty much no idea what those computers are for, and my daughter just wants to play Oregon Trail on them.

They are fun to collect and restore. It is also helpful to be good at replacing capacitors. ;). Those surface mount ones on the Mac mainboards are almost always bad!

stikit 6 days ago [-]
Amazing collection. Thanks for posting! Could you share a bit of your process for finding and restoring? The work involved must have been extensive.
moody__ 7 days ago [-]
I appreciate the work in getting this open sourced but I find it telling that this had to be done through an outside motivator. There seems to be no internal "ticking clock" to get some of these things out in to the open. That's fine no one is owed the source code for this stuff or anything, but it would be nice if there was more interest on the side of the companies to get some of their formative history out so people can learn from it.
shanselman 7 days ago [-]
That's valid feedback. There is no clock, but there maybe should be. In this case, yes, Jeff and I had to PUSH. And that's a hassle. I'll ask around.
macdice 7 days ago [-]
This is fantastic work, thanks. Hmm, what else... let's see... Xenix also really, really wants to be free! What a magnificent piece of forgotten computer history it is. https://en.wikipedia.org/wiki/Xenix
justin66 7 days ago [-]
That actually would be pretty wild.
dlachausse 7 days ago [-]
I appreciate your hard work on open sourcing this!

If you’re taking requests I’d love to see MS-DOS 5.0 or at least QBasic next.

shanselman 7 days ago [-]
Yep, I need to get 3.3 and then do 5, 6
justin66 7 days ago [-]
Ironically those words capture how those of us who bought a computer with DOS 4.00 felt about it. :D

But this is really great.

atlas_hugged 7 days ago [-]
Legend. Keep being the Bob Ross of IT. Love what you do. Thank you.
raverbashing 7 days ago [-]
True, I don't know when Qbasic (and Edit?) went into dos (according to Wikipedia they were on 5.0)
dlachausse 7 days ago [-]
DOS 5 was when I really got into computers. I spent hours pouring through the included manual learning all the shell commands and learning how to write .BAT files. Then I discovered QBasic and it changed everything.
davidferguson 7 days ago [-]
It's fantastic work you've done. As someone who works at a older software company (founded early 80s), I'm sad that there isn't a push internally for us to make our old software source available, or even just the binaries available!

What sort of tactics did you use to convince them? Maybe I can apply them to where I work too...

HeckFeck 7 days ago [-]
Windows 95 OSR5 - Open Source Release. Someday soon?
chucky 7 days ago [-]
It might not be a problem for DOS 4, but often the source code of software that was only ever meant to be published as closed source contains source code that was licensed from 3rd parties. This license may not allow publishing the source code.

Doing an investigation of what licensed software was used and possibly trying to get permission from the relevant rights holders (if you can even figure out who owns the rights so many years later) can be a big and expensive task, unfortunately. I understand why companies might not want to take that on (even though it sucks).

skissane 7 days ago [-]
For DOS, I believe the core was only ever Microsoft or IBM. Some DOS versions bundled add-ons by third parties, but they are hardly essential for operation - e.g. MS-DOS 6 included DEFRAG and MSBACKUP (both licensed from Symantec) and MSAV (licensed from Central Point Software)

Similarly, with Windows, the third-party components are generally inessentials such as certain device drivers, games, some optional system components like the ZIP file support in Windows Explorer-you would still have a usable OS with these bits ripped out. Parts of NTVDM are third-party licensed, although I believe that’s mainly the software CPU emulator used on RISC platforms, I think x86 was mostly Microsoft’s own code

lproven 7 days ago [-]
Agreed.

From MS-DOS 6, remove the defrag, backup and antivirus programs, and DoubleSpace/DriveSpace, and that should I think cover all external code.

If I remember correctly, it didn't include CD-ROM drivers, just MSCDEX to run on top of one... and the network stack was an optional extra. I'm not even 100% sure it includes a mouse driver as standard.

IBM PC DOS 6.3, 7.0 and 7.1 include some additional IBM code: Rexx in place of QBASIC, the IBM E editor, but not much else.

rezonant 7 days ago [-]
Isn't the zip support in explorer the stuff written by Dave Plummer? I would imagine MS has the rights to that already, and if they don't, I'd imagine Dave would, and I'm sure he'd be fine with it being released.

He has lots of YouTube videos about the zip stuff.

nar001 7 days ago [-]
It was but Dave sold it to MS, so they own it
chucky 7 days ago [-]
Yeah, but it's the "mostly" and "I think" that will cause lawyers to start sweating and force someone to do a bigger and more expensive investigation.
lproven 7 days ago [-]
DOS is relatively speaking tiny and actually pretty modular. You can delete a handful of files, mostly binaries and some help files, and that's it, code gone.

From the source it's a little different but there's little integration between the bits.

NewsaHackO 7 days ago [-]
For some insight, look how people are combing for curse words/ devs making jokes about people being brain damaged etc. There is no upside for the company, and all that has to happen is some unsavory politically incorrect joke to get missed from sanitization and the are on the cancelled chopping block.
userbinator 7 days ago [-]
The "cancel" stuff only comes from a tiny minority of vocal extremists. Everyone else is entirely unfazed.

Of all the things people here probably hate about the current "modern" Microsoft and its products, political incorrectness in decades-old code is far down the list or not even a consideration.

sumtechguy 7 days ago [-]
It is about 'risk'. These companies are deeply afraid of being outed that way. They do not want to end up in court over something silly. Just remember a bottle of windex has the words 'do not drink' on it. 99.99% of people out there would not have done it but there is that small cadre of people who will do it and sue. Either for the power of it or for money. Do not underestimate the depths that fools will goto.
tonyarkles 7 days ago [-]
Yeah… if folks are offended by some of the comments in the source code here they really aught to have a look at some of the other popular media from the era to contextualize what was considered acceptable at the time.
HeckFeck 7 days ago [-]
I think I lost it when they suggested we stop using the term 'sanity check' or 'sane defaults' because they might offend, well, brain damaged people.

I am close to writing a browser extension that does a find and replace to reverse change these imposed, humourless, coddled changes.

dmitrygr 6 days ago [-]
> I am close to writing a browser extension that does a find and replace to reverse change these imposed, humourless, coddled changes.

I will be your first paying customer

cdchn 5 days ago [-]
How dare people attempt to be more empathetic towards others.
HeckFeck 5 days ago [-]
It's certainly about a feeling, and I think superiority has more to do with it than 'empathy'. This much is clear with the aggression, bullying and moral grandstanding that's usually behind the language police.

I empathise with myself first, and will use what ever word feels right in the situation. I'd rather speak my mind than please everyone. That's sanity for me and for many others.

cdchn 5 days ago [-]
"I only care about myself and do what I want." Thats just being shitty, for you and many others.
HeckFeck 5 days ago [-]
Holy false dilemma, Batman! If that's your reading from what I said, you really can't be helped.
cdchn 3 days ago [-]
Your exact words are "I empathise with myself first, and will use what ever word feels right in the situation."
HeckFeck 3 days ago [-]
Empathising with others and yourself isn't mutually exclusive. What's hard to grasp with that?

> I empathise with myself first and will use what ever word feels right in the situation

And you're doing the same right now. Isn't your use of the word 'selfish' in the thread 'hurtful', and therefore not empathetic to me? By chiding me aren't you empathising with yourself more, and wishing that I would defer to your feelings instead of my own?

The difference between you and I is I don't claim that a virtue is supreme and then immediately enact its opposite, which is really what makes this drive for 'inclusive language' and 'empathy' so repugnant to me.

cdchn 3 days ago [-]
Empathy and calling out people's self-declared self-centered behavior are, as you say, not mutually exclusive.
HeckFeck 3 days ago [-]
After I've patiently explained it to you, you really think that you aren't exhibiting the same behaviour? In a much more worse way because it comes in seemly guise?
Someone 7 days ago [-]
Legal also may be concerned that having source makes it easier to detect patent infringement and code copying. Even if you deem the risk zero that that actually happened, why run the risk of somebody claiming you did?

For the company there are as good as zero downsides to not doing anything, and a few small upsides and a few low risk, but potentially very costly (in dollars or reputation) if they happen downsides.

That makes not doing anything the default choice for the company.

For (former) employees who worked on this, the upsides are higher; they’ll get some of their work published for the first time. That’s why we see individuals push for this every now and then.

saagarjha 7 days ago [-]
No upside for the company? Do you not see all the people who are delighted to be able to browse the code?
ssdspoimdsjvv 7 days ago [-]
No commercial upside for sure. Just some extra reputation points among a very niche group and maybe some happy employees.
smegger001 7 days ago [-]
Those niche people are the developers they want to use their software. When that niche is the target audience for whole product line of yours pleasing them is a good idea.
Sakos 6 days ago [-]
The historical value is invaluable for our species, especially in the far future. There is a moral imperative for this kind of thing to be made available for posterity that, in my opinion, completely overshadows any commercial, copyright or political correctness concerns.

Frankly, there should be regulations guaranteeing source code release after a few decades, and that all code, including third party code, is released from copyright protection. In return, companies should be granted legal protection from any potential legal consequences. It was over 30 years ago. The idea that somebody should be able to sue Microsoft for copying code or a third party can sue them for releasing it or that they should in any way be punished for unsavory language used THIRTY years ago is clearly utter insanity.

cdchn 5 days ago [-]
Part of me thinks that its not cancellation but more not wanting to personally insult people, by name, in a medium that you never thought anybody but a handful of people might see (and certainly never expected to be published verbatim for the entire world to see) from 35 years ago (maybe people who wrote those comments were a bit less mature)
nolongerthere 7 days ago [-]
It also sounds like the code didn't come from inside the house... I wonder how many versions of the raw code for these early OSes actually exist? Start ups are more concerned with survival and not archiving their code. Like how many people at their current company are putting in real effort to maintaining early versions of their existing code bases?
miki123211 6 days ago [-]
Most startups today probably preserve the vast majority of their code, due to how prolific git is. Companies that don't use monorepos may have a bit of a problem, if your stack is a mess of microservices, some of which you eventually retire, it's easy for that old code to get lost.

Before the popularization of source control, things were different. A lot of people would just edit code Villy-nilly, only keeping very recent backups and the source for major versions, if that. There were no commits and hence no tags, so reproducing the code used to build a specific, minor version might be completely impossible. There were no branches, so ports and patches were often made by copying the code tree, doing some changes, compiling and then forgetting about the whole thing. It was entirely possible for a game studio to give their code over to another team or company, have them do a port and never actually care much for the ported code themselves.

Then there's the problem of external components, most of which were licensed, third-party software, not open source libraries. Even now, they may technically still fall under copyright and be impossible to release.

jeffwilcox 6 days ago [-]
The binaries for the multi-tasking bits did come from an external source; however, the source code is from our corp source code archives team. Even that was a bit less formal back then...
shombaboor 7 days ago [-]
the workarounds because of technical constraints of the time make this stuff really interesting. When tech creativity shines
sponaugle 7 days ago [-]
Here is a small video of it running on original IBM XT: This was right after we got the floppies read successfully. Serious Kudos to Scott for getting these floppies and the permission to release them!

https://www.youtube.com/watch?v=YPPNbaQaumk

nullindividual 7 days ago [-]
> ; Check for presence of \dev\ (Dam multiplan!) [0]

I assume this refers to the spreadsheet application.

[0] https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/DOS/D...

EDT:

That one policy hadn't quite gone into effect yet ;-) [1]

[1] https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/CMD/C...

For posterity...

> RESEARCH:

> invoke path_search ; find the mother (result in execpath) > or AX, AX ; did we find anything?

> je badcomj45 ; null means no (sob)

> cmp AX, 04H ; 04H and 08H are .exe and .com

> jl rsrch_br1 ; fuckin' sixteen-bit machine ought

> jmp execute ; to be able to handle a SIXTEEN-BIT

qingcharles 7 days ago [-]
LOL. Nice find.

Company open-sources old product? Search for curse words...!

keyle 7 days ago [-]
I obliged

      DOSHIT:
        INC     [HIT_DOS]
orthoxerox 6 days ago [-]
You can't write a plotter driver and not giggle at

   if (penIsDown) {
zdimension 7 days ago [-]
https://github.com/microsoft/MS-DOS/blob/2d04cacc5322951f187...

> ; REV 2.15 7/13/83 ARR BECAUSE IBM IS FUNDAMENTALY BRAIN DAMAGED, AND

Someone was angry that day. Wonder if any IBM dev ever stumbled upon this when MS and IBM worked together.

freedomben 7 days ago [-]
This was the good 'ol days, back when you could put stuff in comments like that and not worry about legal
eesmith 7 days ago [-]
Oh, you had to worry about legal. But since lawyers are concerned with risk, if the source is all proprietary and internal, the risk was lower.

When Mozilla went open source back in the 1990s, Netscape's lawyers required the source first be bowdlerized. (Search for "censorzilla" for some examples.)

elwell 7 days ago [-]
Now you can't even say "sanity check", much less mention brain damage.
steelbrain 7 days ago [-]
Wait, I missed the bus on this one. What's wrong with "sanity check"?
arp242 7 days ago [-]
According to some it's ableist language, e.g.: https://developers.google.com/style/inclusive-documentation#...

Not really interested in discussing this and not saying I agree (or disagree!) with that. Just answering the question.

leeoniya 7 days ago [-]
since 1984 no one was offended by it, but in 2024 it became offensive to insane people

AFAIK "sanity check" doesnt even have a history like "retarded" (which actually became an offensive slur).

maybe some folks just feel left out if they cant rage about and feel offended by something these days.

::eyeroll::

smegger001 7 days ago [-]
Usually its offended on someone elses behalf.
leeoniya 7 days ago [-]
indeed
rnd0 7 days ago [-]
These days it would be considered a problematic allusion to people with cognitive or emotional issues.
Stratoscope 7 days ago [-]
As someone who recently asked our QA team to change the name of one of our test suites from "sanity test" to "quick test", maybe I can provide some perspective.

Many software developers like me have faced challenges to our mental health.

Indeed, there has been a time or two when I questioned my own sanity. And perhaps the sanity of some of my colleagues!

It's not so much that there is something inherently wrong with the term "sanity check". We all know what it means. It's just that there are more descriptive and neutral terms available to us, so why not use them?

bigstrat2003 7 days ago [-]
1. Other terms are neither more descriptive nor more neutral. 2. If someone has a problem with the term "sanity check", they are overly sensitive and they need to adjust to the realities of life. It is unreasonable to expect everyone to coddle them.
cdchn 5 days ago [-]
Or sometimes people voluntarily make these changes not because someone has a problem, but because they're considerate of other people.
elwell 7 days ago [-]
Can we please change PHP's die() function to unalive()?
eesmith 7 days ago [-]
But that's what you call to make your process be a zombie. ;)

https://en.wikipedia.org/wiki/Zombie_process

duskwuff 7 days ago [-]
It's been synonymous with exit() since at least PHP 4.
kyleee 7 days ago [-]
unalive() offends me, let’s do sunset() instead
latentsea 7 days ago [-]
sunset() triggers me due to all the times I've seen companies "sunset" APIs only to still have them in production 5 years later.

Let's change it to cancelled()

randomdata 7 days ago [-]
cancelled() makes it seem as if PHP is a sexual predator – which may be the case, but as a matter of course...

How about goodbye()?

mikestew 7 days ago [-]
We shouldn’t be using judgemental words like “good” and “bad”. Let’s use bye().
elwell 7 days ago [-]
goodbye() could offend someone whose father "went out to get a pack of smokes" and never came back
latentsea 6 days ago [-]
Ok, let's change it to fetchmilk()
randomdata 5 days ago [-]
Bound to offend someone who found out their father was the milkman.

Make it idontevenknowanymore()

latentsea 5 days ago [-]
Ok... null() it is then!
handojin 7 days ago [-]
seems lacking in gratitude. how about kthxbye()?
exe34 7 days ago [-]
This is double plus good.
layer8 7 days ago [-]
How about depart().
acuozzo 7 days ago [-]
> It's just that there are more descriptive and neutral terms available to us, so why not use them?

"quick test" does not convey what is usually intended with "sanity test". The intention of the latter is to verify that a base set of assumptions hold true whereas "quick test" can be just about anything.

ok123456 7 days ago [-]
"quick test" would mean QuickCheck, property-based testing, to me.

Let's keep "sanity test".

exe34 7 days ago [-]
I've struggled with mental illness all my life and have made several attempts to catch the bus. I'm diagnosed with several mental issues. Somehow I'm still not offended with the phrase "sanity check". What am I doing wrong? Is it possible to learn to get offended by this sort of thing? Will it make me happy?
com2kid 7 days ago [-]
Software engineering is a field full of neurodiverse people. Trying to police each other's language around mental health in a field where, at least historically, the majority of practitioners are going through some sort of mental health struggle, is borderline rude IMHO.
WalterBright 7 days ago [-]
> It's just that there are more descriptive and neutral terms available to us, so why not use them?

Because it's boring.

Stratoscope 7 days ago [-]
Walter, you and I have known each other for a long time. Not in person; we've never met. But through our interactions here on HN.

I have a lot of respect for you and for everything you have accomplished.

So I have to ask you directly: Is being "boring" or not the way we should decide how to express ourselves?

Regarding a "quick test" vs. a "sanity test". Instead of judging this on what is "boring", why can't we make a choice on which is more respectful to our peers and colleagues?

drey08 7 days ago [-]
Have you ever heard someone get called slow? That's an insult too.

So now you have quick tests. That's disrespectful towards me because I got called slow once.

This can go on forever.

justinclift 7 days ago [-]
"The test who is on a performance-improvement-plan" ;)
layer8 7 days ago [-]
I’m surprised Python hasn’t ditched pip yet.
exe34 7 days ago [-]
Can we get rid of the "failing" terminology? I think we should call it something more meaningful, such as "it shows there's scope for improvement", or "it highlights areas for more focus".
lelanthran 6 days ago [-]
> why can't we make a choice on which is more respectful to our peers and colleagues?

What makes "quick" more respectful? Use "quick" and you'll be triggering everyone in standups every day :-)

WalterBright 7 days ago [-]
I like to play with language. English has a million words in it. Why not use it? And why stop there, I insert words from other languages, play with the spelling, use bad puns, allusions to movie dialog, whatever crosses my mind.

I hope the readers/listeners would find it fun, too.

If they mine what I write for an insult, that's on them. I'm not interested in people looking for an insult, or people who get offended on behalf of others. I don't enjoy being around people where I have to walk on eggshells.

For example, I'm bald. I'm not a person experiencing hair loss. I'm bald. I've got a chrome dome. I have to wear a hat when I drive in order to not blind oncoming drivers with the glare from it.

Is changing the words going to change anything? Nope. I'm still just as bald, no matter what words are used.

I think it was Paul Graham that recently tweeted that people should not use the word "delve" into rather than "dig" into, because the former is pretentious and the latter is simpler. I'm a delver, spelunker, archaeologist, excavator, explorer, etc. Take that, Paul!

miki123211 6 days ago [-]
If you're writing for the pleasure of writing, that's fine. I think such an approach is great for fiction books and poetry in particular.

If you're writing in a professional context, expect your words to be read by non-native English speakers or just people that are extremely tired and want to get their work done quickly.

I think using uncommon and domain-specific words is fine when nothing else is precise enough, but there's no reason to say "touch base" when "get in contact" works.

People should also be aware of cultural context, if you're being overly sensitive and using flowery corpo-speak, people from other cultures may miss your point entirely. A sentence like "John is doing great work, but I can see some areas for future improvement" reads very differently depending on the culture. "John isn't up to standards and needs to improve if he wants to stay with the company" is much clearer. "John fucking sucks and needs to do better" is overdoing it and using the excuse of being direct to be a jerk.

redeeman 6 days ago [-]
unfortunately your ideals isnt compatible with the ongoing epidemic of oppression olympics.

add trigger warnings!!!! (im joking)

at_a_remove 7 days ago [-]
We should make choices based on communication, first and foremost. Words that do not communicate are not useful.

A "quick test" implies almost nothing, other than it is faster than some other, unnamed test out there. Is a quick test good or is it bad? No way to tell. This term, quick test, it does not inform.

On the other hand, a sanity test, well, it is more evocative. You definitely want to pass a sanity test.

If you reach back to your psychology classes, they talked about a four-part test that is useful for determine if a behavior is sane or not.

1) Is it abnormal? Unusual? Out of the ordinary? for the situation.

2) Is it unjustifiable, unreasonable given the circumstances?

3) Is it counter-productive? Which is to say, does the behavior serve the individual, or does it in fact make things worse? Or simply do nothing?

4) (and this is where my memory is fuzzy) I think it involves personal distress. For the life of me I can't find it via Google and it annoys me.

Now, interestingly, a sanity test matches the first three! (The fourth, well, there is no "I" in the program to be distressed) In programming, a sanity test looks for something abnormal, not reasonable for the program, and represents a state that won't get us the desired output. In short, it's highly congruent to the other context for sanity.

This term, it communicates, and in a way "quick test" does not.

In general, one of the main critiques of political correctness which few really notice is that the new term is less specific and less useful, that it fails at communicating. Consider when "Oriental" fell off of the euphemism treadmill for "Asian." We all knew that the first term referred to a particular part of the world, from the Latin for "east." (Ex lux orient and so on) "Asian," however, could refer to people in Russia or people in India, but nobody in the US does (I note in the UK India does get the "Asian" pass). So here the new term is less specific and less useful, and is confusing to boot because we deliberately ignore parts of Asia when using the term "Asian."

If you want something to supplant "sanity test," you gotta work harder for it than "quick test."

eesmith 7 days ago [-]
We have literally no idea what the 'sanity test' involved actually did, and the common use in computing has little connection to any such use in psychology.

https://en.wikipedia.org/wiki/Sanity_check informs me:

"A sanity check or sanity test is a basic test to quickly evaluate whether a claim or the result of a calculation can possibly be true." ...

"In computer science, a sanity test is a very brief run-through of the functionality of a computer program, system, calculation, or other analysis, to assure that part of the system or methodology works roughly as expected. This is often prior to a more exhaustive round of testing. " ...

"In software development, a sanity test (a form of software testing which offers "quick, broad, and shallow testing"[1]) evaluates the result of a subset of application functionality to determine whether it is possible and reasonable to proceed with further testing of the entire application."

and further comments that "sanity test" for some people is interchangeable with "smoke test".

It also adds:

"The Association for Computing Machinery,[8] and software projects such as Android,[9] MediaWiki[10] and Twitter,[11] discourage use of the phrase sanity check in favour of other terms such as confidence test, coherence check, or simply test, as part of a wider attempt to avoid ableist language and increase inclusivity. "

I could not find a definition for "sanity test" in psychology. I know about the cognitive test that Trump made famous with ‘Person, woman, man, camera, TV‘.

at_a_remove 7 days ago [-]
I cannot cop to "smoke test" being interchangeable with "sanity test," in any way. Smoke tests are obvious crashes, often before any real input. I had a friend on the build team of Windows NT 5.0 (until it was called Windows 2000) and their version of smoke test was "can it boot up to the login screen," and that's similar to working in electronics, where powering up your machine or circuit is all you do and you hope it doesn't release the magic smoke, before you actually do anything with it.

On that alone, I am very doubtful on that article.

This is also distinguished from what I have taken to calling a "pre-flight checklist" at the start of large programs, making sure databases are connected, requisite tables are present with the correct columns and datatypes, that specific files or directories exist, that files may be of a certain "freshness," and so on.

I'll stand by it: sanity test is a lot more descriptive and useful than "quick test." Those footnotes are only kicking the can down the road of justifiability. But let's examine them according to the aforementioned The PC Replacement is Less Useful criterion.

Recommending just "test" is ... well, double-plus ungood, in the sense that we now have no idea of the qualities of this test and how it could be distinguished from some other test. Hard pass.

"Confidence test" only implies a statistical likeliness, like a confidence interval. It does not imply the This Ought Not to Happen of a sanity test.

"Coherence test" is interesting but ... coherent against what?

If someone wants to sell me on a replacement, they are free to try, but the replacement must be at least as good at communicating what it does as the term sanity test. If this fails, then it will be scoffed at, and should be.

cdchn 5 days ago [-]
>Recommending just "test" is ... well, double-plus ungood, in the sense that we now have no idea of the qualities of this test and how it could be distinguished from some other test. Hard pass.

Describe the difference between a test and a "sanity test?"

eesmith 7 days ago [-]
We do not know if what was described as a "sanity test" actually meets your definition of a sanity test, or was used for some other purpose like a smoke test.

A quick look using Google Scholar finds people using "sanity test" for smoke testing, like

"Typical behavior is to allocate any special resource requirements it needs, map the device into virtual address space, initialize the device and perform a brief “sanity test” to ensure that the device appears to be working correctly" at https://onlinelibrary.wiley.com/doi/pdf/10.1002/%28SICI%2910...

or

"The minimum essential test cases that need to be executed to evaluate the essential functionality are known as Sanity Test Cases" https://uksim.info/icaiet2014/CD/data/7910a048.pdf

or

"Sanity test is a brief run-through of the functionality of the software system to assure that the system works as expected." https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6006830

But it's also used for full testing, including human intervention, like

"There will always be a role for manual testing. For one, it is the only real way to sanity-test your automation itself." - https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&d...

and

"Sanity test cases which checks basic functionality and are run for pre-system acceptance and when product goes thru major change. These test cases deliver a very high project value to both engineering dept and to customers." https://ijaer.com/admin/upload/06%20Apr_2012_Sheo%20Kumar.pd...

as well this example which distinguishes between shallow-and-wide smoke tests with deep-and-narrow sanity tests.

"a smoke test generally consists of a collection of tests that can be applied to a newly created or repaired computer program. This is a “shallow and wide” approach to the application." while "Sanity testing will be performed whenever cursory testing is sufficient to prove that the system is functioning according to specifications. A sanity test is a narrow regression test that focuses on one or a few areas of functionality. Sanity testing is usually narrow and deep. It will normally include a set of core tests of basic GUI functionality to demonstrate connectivity to the database, application servers, printers, etc." - http://archives.christuniversity.in/disk0/00/00/48/68/01/the...

Going with PC Replacement question, since we don't know the actual goal of what was called "sanity test", we can't ourselves come up with a better name.

Which is why we should go with the OP's assessment that "quick" is an appropriate term for what they are doing. Since you don't know what that is, it doesn't matter if you buy a new term or not.

cdchn 5 days ago [-]
>as well this example which distinguishes between shallow-and-wide smoke tests with deep-and-narrow sanity tests.

I think this even is contradictory for what a lot of people think a "sanity test" means. A "test" may check that something is correct, where a sanity test would be a lower fidelity test that simply checks that something is not obviously wrong.

eesmith 4 days ago [-]
Oh, I agree. I included it as an example of an outlier. My overall point is that "sanity test" has a range of meanings, so without knowing what the original goal of the now-named "fast" tests, it's hard to really know if "fast" is indeed a poor substitute name.
justinclift 7 days ago [-]
> Many software developers like me have faced challenges to our mental health.

It's a stressful industry at times, probably almost everyone has had crap times at one point or another. And then there's Covid, which affected everyone.

Doesn't mean every mention of the word "sanity" needs to be expunged from our language though. :( :( :(

That way lies er... madness. (!) ;)

cdchn 5 days ago [-]
Or maybe you, having faced those challenges, next time your fingers hover over the keys to type "sanity" simply pick another, perhaps more descriptive word.
justinclift 3 days ago [-]
Nope. "Sanity" is a perfectly fine word for this particular type of test, and is widely used in industry.
layer8 7 days ago [-]
Words have multiple meanings. In that context, “sanity” means something like “reasonable and rational behavior” (look it up in a dictionary!). It’s counterproductive to forbid the use of words just because someone is somehow unable to differentiate between the multiple meanings words have. That would be insane — as in “highly unreasonable”, obviously.
7 days ago [-]
redeeman 6 days ago [-]
without knowing what the test did, quick test in no way conveys the same information. Honestly, did you really need to ask them to do that? please dont be that guy on the team (sorry, meant please dont be "that working set of hands on the team" (hope this illustrates the point somewhat))
JoachimS 7 days ago [-]
And please don't use 'brain dead', which is a mortuist expression. Using 'brain dead' in a negative way may be insensitive to zombies. Also avoid the expression 'zombie process' or the word 'expired'.

You don't want to step on the toes of a zombie do you? (It's probably gross.)

AshamedCaptain 7 days ago [-]
The google guidelines already prevent something like "hung process" because of the "unnecessary violence" rule.
HeatrayEnjoyer 7 days ago [-]
I've always thought it a strange and insensitive phrase.
justinclift 7 days ago [-]
Well they're not wrong, so maybe the comment was just prescient? :)
wormius 7 days ago [-]
It's what happens after Ballmer exceeds the peak.
garaetjjte 7 days ago [-]
1970-01-01 7 days ago [-]
This is important. If we're really trying to open source and preserve DOS, we need a better system. Someone at MS needs to create museuem.github.com and allow us to browse everything just as it was preserved on disk.
jeffwilcox 6 days ago [-]
I think it's a mix. We're learning a bit each time. I'm bummed in the rush to get this finally published we made a few errors. We first found what looked like the source back in September last year.

Having the source on GitHub feels like a nice way for some people to peek through it... but there's clear compromise between archival and sharing some source.

Too 6 days ago [-]
Git does not tamper with file encoding. Only way file content modification can happen is automatic CRLF conversion, but that’s a local setting, not affecting the public archive, unless .gitattributes is present, not the case here. It is common sense that one should never enable this setting globally on your system, precisely because it can tamper with content unexpectedly.
jmspring 7 days ago [-]
My brain is rusty, but I feel like MSDOS 5.11 was where things finally just worked. TSRs, memory managers, etc. Moving a lot and not being a packrat I've lost some of that history.

It'd be interesting to see 5.x and 6.x released.

jagged-chisel 7 days ago [-]
IIRC 6.22 was the pinnacle of MS-DOS, with all the comfort and niceties one could expect at the time. Then began the Windows era.
userbinator 7 days ago [-]
I think the pinnacle goes to MS-DOS 7.1, which while bundled with Windows was also usable as a DOS by itself and contained features like FAT32 support. MS-DOS 8 was the last version that came with the ill-fated Windows Me and significantly neutered.
jmspring 7 days ago [-]
6.22 would likely be what I was remembering.
Zardoz84 7 days ago [-]
I had good memories of DR-DOS 5
ListenLinda 7 days ago [-]
I think it was 3.3x where things started working. I don't recall 4.x being around much. I do remember 5 and 6. For some reason 4 never made a splash in my circle of friends.
lproven 7 days ago [-]
4 was, TBH, appalling for its time.

It took more base memory than ever. It had a complicated code page system that most people didn't want, and a clunky early version of IBM DOSShell that was scorned although it grew into something useful.

But it supported disk partitions over 32MB, and for that reason, it was reluctantly adopted. If you had a 286 or 386, then there were measures that you could take with a memory manager to make it not so bad, but on 8088/8086 class hardware, it didn't leave enough free memory for many big apps to run.

billforsternz 7 days ago [-]
I was kind of happy with MSDOS 2.11, I felt that they'd got the basics in place (in particular hard disk / subdirectory support) and that bloat hadn't started. From memory I used this for years and years although I was young so time didn't rush past so quickly so who really knows. I kept a version of MSDOS 2.11 debug.com around for decades (patched with itself so it wouldn't just do a version check then quit). From memory it was something like 12K bytes whereas debug.exe from MSDOS 6.x was more like 60K bytes.
lproven 7 days ago [-]
> My brain is rusty

It is. Because:

> but I feel like MSDOS 5.11 was where things finally just worked

There was no MS-DOS 5.11.

It went 4, 4.01, 5, 6, 6.2, 6.21, 6.22.

IBM had a few extra versions as the divorce was occurring at the time.

cesarb 7 days ago [-]
> There was no MS-DOS 5.11.

There was Windows 3.11 which ran on top of MS-DOS 5.0, the two numbers probably got mixed in their memory.

lproven 5 days ago [-]
There was indeed a Windows 3.11 and the much more common Windows for Workgroups 3.11 which was a profoundly different product (32-bit disk subsystem & 32-bit networking subsystem -- the first time these pillars of Win9x went out into the world.)

But neither of them ran on any particular version of DOS. They ran on PC DOS, MS-DOS and DR-DOS -- although Microsoft tried very hard to block the latter:

https://en.wikipedia.org/wiki/AARD_code

They ran on DOS 3.3, 4, 5, 6, and 7.

There's nothing at all that links them especially to MS-DOS 5.

Narishma 6 days ago [-]
There was also an MS-DOS 2.11.
pyb 7 days ago [-]
Perhaps you mean DOS 5.0. If I remember well, DOS 6 wasn't different from DOS 5 internally?
lchengify 7 days ago [-]
So if MS-DOS 4 was released in 1986, and it is now 2024, that's a 37 year gap between release and open source.

That means Windows XP should be open sourced by ... 2038. Not as far away as it seems. I'll add it to my calendar.

grishka 7 days ago [-]
I doubt Microsoft would ever open-source any NT Windows versions because the current ones are based on the same code, just with added touchscreen nonsense, adware, and overt contempt for the user.

We may see Windows 9x open-sourced. But then again, it's a stretch because Win32 API is still in wide use today. Releasing the sources for 32-bit Windows versions even this old may have an adverse effect on Microsoft's market domination.

But maybe ReactOS will reach beta by 2038. Does this count as an open-source version of Windows XP? :D

If you really wish to look at XP sources and don't care much about the legal aspect of it, you can do so right now. They were leaked.

redox99 7 days ago [-]
> Releasing the sources for 32-bit Windows versions even this old may have an adverse effect on Microsoft's market domination.

I disagree that releasing Windows 9x source code would have any impact on MS market domination.

> I doubt Microsoft would ever open-source any NT Windows versions because the current ones are based on the same code

Nowadays releasing something NT like XP may seem crazy. But in 15 years it will be so far away from future Windows, that it won't be that crazy.

grishka 7 days ago [-]
> But in 15 years it will be so far away from future Windows, that it won't be that crazy.

It's not like the NT kernel will be going away from current Microsoft products anytime soon.

rasz 7 days ago [-]
NT sources leaked, same for 2000. There is also leaked DOS 6 beta. The only thing releasing stuff this old brings is nerd goodwill.
grishka 7 days ago [-]
All open-source projects that deal with reimplementing parts of Windows, particularly Wine and ReactOS, consider those leaked sources radioactive and would not accept any patches if there's even a slightest suspicion that the patch author gleaned anything from those sources. Those same sources officially released under an open-source license would change that.
justin66 7 days ago [-]
I wouldn’t assume Microsoft execs view increased capabilities to run windows programs in Linux as a bad thing, when they think about the matter at all. They would certainly prefer that such a capability be developed by someone else, so they don’t have to support it.
pjmlp 7 days ago [-]
> I doubt Microsoft would ever open-source any NT Windows versions because the current ones are based on the same code, just with added touchscreen nonsense, adware, and overt contempt for the user.

Initiatives like MinWin and OneCore, secure kernel, device guard,... caused lots of rewrites and moving code around.

isp 7 days ago [-]
2038, you say? If your calendar is based on Unix epoch time, then ensure that you have upgraded to 64-bit timestamps before then.
hypercube33 7 days ago [-]
ReactOS will still be buggy AF by then I'm sure. I had hoped they'd at least have it to Windows 2000 alpha levels by now.
7 days ago [-]
GalaxyNova 7 days ago [-]
A lot of XP components are still in use in modern windows, whereas DOS was completely replaced around the time Windows XP came around.
chx 7 days ago [-]
Around the time Windows 2000 came around.

Up to Windows 3.11 it was a GUI on top of DOS. Windows 95, 98, Me used DOS to boot and it was still possible to stop the booting process at a DOS prompt (although in Me this was no longer official). Finally Windows 2000 had nothing to do with it as it is NT based.

optimalquiet 7 days ago [-]
Windows 2000 was part of the professional NT line, though, and was the companion of Me for the millennium releases. As far as I know, 2000 wasn't marketed to home users. I think what the comment you replied to is saying is the the transition away from DOS wasn't completed for both professional and home markets until XP, which unified everything under NT for all markets.
stevetron 7 days ago [-]
Around the year 2000, I was studying computer science at a university. Most of their PC's ran on Windows 3.1. I was using it at home. But one day, Microsoft sent me an offer: I could purchase the student release of Windows 2000 workstation for a mere $25.00. I went for it, and found it better than the Windows NT nap-sayers at school said. I don't know why I was contacted. Probbably because of other Microsoft programs I'd bought at the student bookstore.
tracker1 7 days ago [-]
Windows 2000 was a pretty great OS. Used to enjoy using a Litestep shell instead of explorer. While it wasn't great for a lot of games, many did run fine. I liked it a lot better than OS/2 that I ran previously.

I generally ran 2-4x the amount of RAM as most did. Still do. Pretty sure this made a lot of the difference.

blkhawk 7 days ago [-]
Hey, Listestep what a blast from the past :)

I rain it until it wouln't run sensible anymore in Windoes 10. I then ditched Windows for Linux soon after - I can recommend KDE Plasma if you want to have something thats sorta configureable enough like Litestep was.

cout 7 days ago [-]
I remember running both litestep and windowblinds. I can't remember which one I liked better.
blkhawk 6 days ago [-]
windowblinds is a window decoration customizer - LiteStep does nothing of the sort :) LiteStep completely replaces explorer.exe as the shell host and you can then customize what functions you want to have in your UI. The windows themself would stay looking the same.
autoexec 7 days ago [-]
Windows 2000 Pro was what I used at home for a long time and it was great. NT 3 and 4 were absolutely terrible which might explain your NT naysayers at school. I never once had to reapply a service pack in Win2k
ZiiS 7 days ago [-]
Still remember the first time I touched Windows NT 4. Half an hour into work experience: Opened up a printer dialogue set a setting that hard crashed the PC; then slowly every other PC in the building as soon as they tried to print (i.e. just as they had _finished_ whatever they were working on; but often just before they _saved_ it).
cout 7 days ago [-]
I liked NT4. The only reason I upgraded to 2000 was for a newer version of directx (6.0 I think?).
skeeter2020 7 days ago [-]
this is accurate; the 2000 line targeted business, and if you remember having a consumer computer with 2000 pro it didn't support a lot of hardware.
freedomben 7 days ago [-]
Can confirm. I upgraded my 98 box to 2000 and never did get some of my hardware working. When I told people I was using 2000 everybody assumed I had stolen it from work. I didn't. My friend stole it from work and shared it with me ;-)
lproven 7 days ago [-]
A license key of 11111-1111111 worked, if I remember correctly. :-)
486sx33 7 days ago [-]
Nice part of that pain came when XP was released. Win 2000 drivers mostly all happily loaded into Win XP !
voidfunc 7 days ago [-]
Drivers were kinda a mess from what I remember in 2000 especially on the graphics card side of things. The HW vendors needed more time to switch over.
fuzztester 7 days ago [-]
Tangent, but Windows NT had a POSIX subsystem for a while.
temac 7 days ago [-]
Kind of for a very long while. You then had a descendant SFU from some SP of NT4 to XP / Server 2003, then a further one SUA until Windows 8 / Server 2012. With some code flowing between various companies. I think SFU still used the Posix NT subsystem core. Probably also SUA, although I'm less sure. Not really the case WSL1, though (although probably the core NT kernel was more ready to support it, thanks to its history).
fuzztester 6 days ago [-]
I knew about SFU, Services For Unix. What was SUA?
voidfunc 6 days ago [-]
Subsystem for Unix-based Applications also known as "Interix"
chungy 7 days ago [-]
From NT 3.1 until Windows 8.0. Windows 8.1 removed it, and Windows 10 offered WSL1 as its replacement.
Zardoz84 7 days ago [-]
Windows 9x and ME, yet used bits Iog DOS beyond bootstrapping. They were using config.sys to load drivers
Dwedit 7 days ago [-]
Windows 2000.

Also NT4, NT3.51, NT3.5, NT3.1...

nullindividual 7 days ago [-]
Even ancient Windows includes many 3rd party libraries. I would not expect any Win 9x or NT 3.51+ version of Windows to be open sourced in it's entirety. I hope I'm wrong.
philistine 7 days ago [-]
Yeah, just the font stuff was such a mess. I’m hopeful someone will power through those problems.
userbinator 7 days ago [-]
I'm more interested in them open-sourcing something from the 3.x/9x line.

NT seems to have been far more studied, and of course there were the infamous leaks of those along the way.

1970-01-01 7 days ago [-]
We need to wait for the NSA backdoors to expire first ;)
dlachausse 7 days ago [-]
Holy cow, this is huge! DOS 1.x and 2.x are too old to run a lot of vintage DOS software, but 4.x would run just about everything.
chx 7 days ago [-]
No, you are thinking of 4.01 this is 4.0.

Those are very different operating systems, this is DOS 3.2 + later abandoned very crude multitasking features. Roughly.

And this matters because DOS 3.3 was a milestone.

4.01 comes from 4.00 which has nothing to do with 4.0 (yay for versions).

ComputerGuru 6 days ago [-]
This 4.0 code contains references to 4.00, though: https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/BOOT/...
happycube 7 days ago [-]
The source released is for the IBM-started version of DOS 4.0, but most of the talk here is about the Multitasking DOS 4 files (a binary copy of the first beta)
rnd0 7 days ago [-]
>And this matters because DOS 3.3 was a milestone

DOS 3.3 couldn't understand large partitions -except for Compaq dos 3.31. But regular dos 3.3 couldn't. I don't think dos 3.2 could even understand extended partitions/logical drives -much less large disks.

Still -pretty neat!

tssva 7 days ago [-]
“DOS 3.3 couldn't understand large partitions -except for Compaq dos 3.31.”

This is not accurate. Several OEMs added proprietary variations of FAT which supported larger partitions. For instance I run Zenith MS-DOS 3.30+ which has this ability on a Zenith Z-161 XT compatible luggable.

Compaq’s 3.31 added FAT16B support which allowed larger partitions and was the standard for larger partition support going forward in standard MS-DOS.

geoelectric 7 days ago [-]
It’s stuff like this that sent me over to DR-DOS back in the day.
snvzz 7 days ago [-]
DR-DOS also open source now.
roytam87 7 days ago [-]
But only OpenDOS 7.01, not older(DR DOS 3.30-7.00) or newer(7.02-8.0/8.1) versions.
davidgnz 7 days ago [-]
OpenDOS isn't open-source, its source-available. The license reads more like trial software:

"Caldera grants you a non-exclusive license to use the Software in source or binary form free of charge if your use of the Software is for the purpose of evaluating whether to purchase an ongoing license to the Software. The evaluation period for use by or on behalf of a commercial entity is limited to 90 days; evaluation use by others is not subject to this 90 day limit but is still limited to a reasonable period"

rnd0 7 days ago [-]
The whole opendos thing is pretty questionable, too. CPM is open source as is its' derivatives. Cool so far. But is DR-DOS a derivative of it? Or is it bound by the 'non commercial' license of the 90's which a) was revoked b)isn't exactly open source (limits distribution) in the first place.

Microsofts' releases have the benefit of being unambiguous.

Lightkey 6 days ago [-]
Like ComputerGuru said, even the README of the repository mentions both 4.0 and 4.00 as if they are the same.
cout 7 days ago [-]
Thanks for pointing that out. I was wondering why I couldn't find the source for dosshell!
asveikau 7 days ago [-]
I feel like FreeDOS could already run just about everything for 20 years or longer. If your goal is to run DOS software your use case was probably already adequately covered with free software.

An interesting thing about DOS is the OS wasn't very involved. Programs did a lot of things we now think of as the realm of an OS, like talking directly to I/O addresses or installing interrupt handlers. I feel like a DOS implementation doesn't even need to do a lot of things, maybe part of why DOS4 is "good enough".

LeoPanthera 7 days ago [-]
Although 5.0 was the first version to include HIMEM.SYS
bombcar 7 days ago [-]
DOS 5.0 was peak perfection. 6.22 or whatever was just stupid double stack and other worthless garbage.
lproven 7 days ago [-]
> stupid double stack

DoubleSpace/DriveSpace?

Mostly, you are absolutely right, yes. MS-DOS 5.0 was the peak, and then it started to acquire bloat as MS bundled stuff to compete with DR-DOS 6 and DR-DOS 7.

But the thing is that by modern standards, the bloat is tiny. :-)

I gave MS Office 97 a bad review at the time because it was several times bigger than Office 95, had virtually no new functionality, but introduced a pointless new file format just to get people to upgrade so they could read the files sent to them by companies with the newer version.

But for a decade now, Word 97 is my go-to version. With all the service releases installed, it works great, it's tiny by modern standards -- I think a full install of Word with all the optional filters and things totals 14MB -- and it's lightning fast on 21st century hardware.

Word 95 is even smaller and quicker, but it can't read or write the file format that everyone else, from Pages to Wordpad, uses. So it's crippled: everything has to go through LibreOffice first, to convert it to a .DOC format anything else can view, import, edit, or print.

Time changes the meaning of bloat somewhat.

bombcar 7 days ago [-]
Bloat is partially the eye of the beholder, and 6.22 wasn't terribly large by any means, but the things it added were not incredibly stable and it showed.

It's also amazing how long things like DOC to DOCX took to really "take hold" in the industry at large. I still get DOC files now and then.

garaetjjte 7 days ago [-]
What format was used by Word 95? RTF?
bombcar 7 days ago [-]
It could use RTF but it used DOC as the default format. Word 97 introduced DOC, but different.

The latter one is more capable and compatible with modern things. Open Word and see how it calls DOC "Word 97-2004"

lproven 6 days ago [-]
No, still files called `.DOC` but with a different internal format.

There have been at least 3 successive MS Word file formats:

Word for DOS, WinWord 1/2/6/95: old .DOC format

(I think this also applies to Classic MacOS Word 1-5.)

Word 97, 2000, XP, 2003: new .DOC format

(Classic MacOS Word 98, X and 2001 were based on a port of the Windows codebase. Mac OS X Word 2004 and later are OS X-only, but are still based on the Windows codebase and use the same file formats.)

Word 2007-365: new Zipped XML format, .DOCX

int_19h 6 days ago [-]
DOS 5 didn't have CHOICE.EXE
hi-v-rocknroll 7 days ago [-]
3.31 and 6.22 were the lands of stability for pre-Chicago MS-DOS for older and newer applications respectively.
Scaevolus 7 days ago [-]
Are there specific parts of the DOS API that existing emulators like DOSBOX don't handle accurately enough?

I don't understand if this source can be usefully integrated into modern DOS preservation projects.

actionfromafar 7 days ago [-]
It was a long time since I messed with things, but "net drives" something didn't work in FreeDOS a long time ago. This was useful, because it meant you could from within a PC emulator access your host file system. It's entirely possible that works on FreeDOS now.
somat 7 days ago [-]
This is almost completely unrelated to your comment, but it sparked a fun memory. At one point I had a system set up that would boot dos via ipxe with iscsi drives. I thought it was almost magical how dos had no clue it was using a network drive. I still don't know exactly how it worked. but I suspect ipxe was patching the bios.
bombcar 7 days ago [-]
DOS was pretty reliable about using BIOS interfaces for drives; if you imitate the BIOS interface it’ll just work.

The problems came from limitations of the BIOS interface (especially size)

lproven 7 days ago [-]
Yup. Boot DOS off a USB key and it suddenly speaks USB. :-)

Only for drives, but still...

snvzz 7 days ago [-]
IF running software is what matters, there's dosemu2 and dosbox-x.

For the actual hardware or PCem, FreeDOS exists and is alive. DR-DOS has also been open sourced.

davidgnz 7 days ago [-]
DR-DOS hasn't been open sourced. Caldera did release the source for the kernel and a few other bits, but the license only allowed free use for evaluation purposes. After 90 days (for a company) or "a reasonable period" for non-commercial entities you were required to buy a license.

Bryan Sparks did open-source CP/M a little while back, but AFAIK he hasn't said anything about DR-DOS so far.

snvzz 7 days ago [-]
There was an actual open source version, which was retracted[0].

Fortunately for the commons, what's done is done.

0. https://archiveos.org/drdos/

davidgnz 6 days ago [-]
Thats the DR-DOS/OpenDOS Enhancement Project. Its a set of patches for the Caldera OpenDOS 7.01 kernel.

The license file inside the original Caldera OpenDOS 7.01 source archive says:

"Caldera grants you a non-exclusive license to use the Software in source or binary form free of charge if (a) you are a student, faculty member or staff member of an educational institution (K-12, junior college, college or library), a staff member of a religious organization, or an employee of an organization which meets Caldera's criteria for a charitable non-profit organization; or (b) your use of the Software is for the purpose of evaluating whether to purchase an ongoing license to the Software. The evaluation period for use by or on behalf of a commercial entity is limited to 90 days; evaluation use by others is not subject to this 90 day limit but is still limited to a reasonable period."

So that website is incorrect when it says OpenDOS was released under an open-source license. Not surprising though - most websites discussing OpenDOS make this error. Possibly because at the time I believe Caldera did actually talk about open-sourcing DR-DOS, they just failed to to actually follow through.

If he still has the source code, whats needed is for Bryan Sparks to release it under some regular open-source license like Microsoft have done here.

snvzz 6 days ago [-]
I heard there was some resolution re: copyright mess in the last few years, but I currently cannot find anything about it.

To the point I might have dreamed it. Odd.

dosman33 7 days ago [-]
MSDOS 4 was reportedly an overall bad release and was not in wide circulation, in all my days I think I only came across it once. This is why DOS 3.3 and 5.0 were much more common to find in circulation together.

I'm sure the source for 4 will make for some interesting bug hunting. Anyone remember the MUF list? "Microsofts Undocumented Features".

rnd0 7 days ago [-]
This is "multitasking dos 4" though, which isn't the same as the much-reviled ms-dos 4. As I understand it, it's a lot closer to dos 3 than it is to dos 4 in terms of functionality.

I wouldn't expect this to understand extended partitions, much less large partitions (that dos 4 uses)

rep_lodsb 7 days ago [-]
>I wouldn't expect this to understand extended partitions, much less large partitions (that dos 4 uses)

Most of the source code (everything outside of -ozzie) is for regular DOS 4.0 and supports 32-bit sector numbers. They planned to add it in the multitasking version as well [1], but from reading IBMDSK.ASM it isn't there yet.

Also that driver talks directly to the hard disk controller instead of going through the ROM BIOS, and will only support XT drives, not IDE/ATA. Apparently the goal was to be able to do background I/O on an XT, where there is no BIOS support for that.

[1] see driver docs at https://raw.githubusercontent.com/microsoft/MS-DOS/main/v4.0...

thesuperbigfrog 7 days ago [-]
Interesting MS-DOS history to be uncovered with the source code of MS-DOS 4.

I wonder if we will see MS-DOS 5 or 6 soon?

FreeDOS, an open source DOS clone, has been around for a while:

https://freedos.org/

https://github.com/FDOS

tracker1 7 days ago [-]
I'd like to see NTVDM open sourced... It's been leaked and there are unofficial builds to get support into 64-bit Windows through the emulation code. Could be a huge boost for general support.

Not sure how much work it would take for Linux or even just wine. But might displace DOSbox.

anthk 6 days ago [-]
Get ReactOS' NTVDM. Mount the ISO, find the bigges CAB file on it (easy), extract it, and then use that DLL dropped into any DOS game folder.
MaxLeiter 7 days ago [-]

  ; At this time, for DOS 4.00, we only have maximum 11 bytes left
  ; for translation.!!!!!!!!!!!!!!!!!!!!!
https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/BOOT/...
tiernano 7 days ago [-]
Direct GitHub link to the repo. https://github.com/Microsoft/MS-DOS
anticensor 6 days ago [-]
hudo 7 days ago [-]
Ah, good ol' days of configuring AUTOEXEC.BAT and CONFIG.SYS to squeeze few more kb of RAM:) And setting IRQs for some weird sound card that just doesn't work!
jmclnx 7 days ago [-]
What about DOS 3.3 ? to me that was better than 4.0, but maybe people who know DOS 4 src and fix the issues :)
msoad 7 days ago [-]
Some fun things I found in the source code

* "TWIDDLE" [1]

    ; DO THE 2 SECOND TWIDDLE. IF TIME >= 2 SECONDS, DO A VOLID CHECK.
* "This is my employee serial!" [2]

    db '21',0,0                ;J.K. 11/8/86 This is my employee serial # !!!
* Lots os "brain damaged comments [3]

[1][https://github.com/microsoft/MS-DOS/blob/2d04cacc5322951f187...]

[2]https://github.com/microsoft/MS-DOS/blob/2d04cacc5322951f187...

[3]https://github.com/search?q=repo%3Amicrosoft%2FMS-DOS+BRAIN+...

lynx23 7 days ago [-]
Whenever I think about the good old DOS days, QEMM and DESQview come to mind. Esp. DESQview which was a rather essential part of my DOS experience... Sources for these would be fun to look at.
lproven 7 days ago [-]
Many asked over the years. Sadly I think Symantec lost them after it acquired Quarterdeck.

DESQview/X was amazing. FreeDOS with DV/X would be something else: a multitasking DOS with a standard GUI, that spoke TCP/IP and could serve remote Linux/BSD apps over X11.

WalterBright 7 days ago [-]
Ah, all the utterly useless knowledge about DOS that's taking up space in my brain.
tuzemec 7 days ago [-]
I was having a chat with one of the young guys in the office yesterday. He was complaining that his first PC had windows 7 and was slow, because he only had 2GB of RAM. And I was thinking: Gosh, probably he never typed "dir" or "c:" in his life... I feel sooo old :/
dailykoder 7 days ago [-]
Next year is 10th Windows 10 aniversary :-)
pradn 7 days ago [-]
It's worthwhile to note the big impact a small set of driven volunteers can have in archival and preservation work! This was not inevitable!
anothername12 7 days ago [-]
Curious if DOS 3.30 will follow soon. It felt like I was on that version for ages growing up, messing with assembler on the families Amstrad 2086.. good times.

Edit: really appreciate the effort being put into preserving this software history btw

xvilka 7 days ago [-]
Is there anything useful that isn't already implemented in FreeDOS?
accrual 6 days ago [-]
It's more useful from a historical context. For the retro community who plays games and creates/uses tools for the hardware of this era, many appreciate having real period correct DOS over FreeDOS, even though the latter is more featureful. IMO FreeDOS is better for a DOS-like OS for modern systems and less useful for retro hardware.
galkk 7 days ago [-]
Interesting, I expected it to have more C, but it's mostly assembler with rare exceptions of C code.
jesuslop 7 days ago [-]
Our lab pcs run about that, with password protected BIOS. DOS has some filenames wired to devices (con, aux, prn)... as in linux /dev. Don't recall why but one time I summoned "echo kk > clock$" and not only did the real time clock lose sense of time, but upon reboot the bios was struck with bios checksum failed, bad crc, password protect forgotten and bios open to any mischief.
ircicq 7 days ago [-]
Unfortunately this is only consumer's part of DOS. For us developers, it is very desirable to have access to SDK sources: MASM, C compiler, LINK.
billpg 7 days ago [-]
I'm seeing FreeDOS mentioned here, but I do wonder what practical use it is being put to. I only ever see it as something computer makers write into the hard disk because they have to put something there, which gets promptly wiped and replaced with a variety of Linux. (Why they couldn't ship an empty HD, I have no idea.)
suprjami 7 days ago [-]
It was a workaround from the time the Microsoft OEM agreement required them to ship an operating system, but the contract didn't specify which system.

Anyway, FreeDOS is useful for updating BIOS images, it also seems to run a lot of legacy industrial equipment, you can play retro games with it, and Jim Hall has a wonderful YouTube channel where he regularly shows using FreeDOS as an educational tool: https://youtube.com/@freedosproject

1970-01-01 7 days ago [-]
I never thought I would be able to build DOS from scratch, but here we are!
captaincrunch 7 days ago [-]
The input handling for file names is shit -- the GETWORD and MUSTGETWORD routines, doesn't check if the file name (or) extension exceeds the length (8 characters for the filename and 3 for the extension).

GETWORD: CALL GETLET JBE NONAM ;Exit if termination character DEC SI MUSTGETWORD: CALL GETLET JBE FILLNAM JCXZ MUSTGETWORD DEC CX CMP AL,"*" ;Check for ambiguous file specifier JNZ NOSTAR MOV AL,"?" REP STOSB NOSTAR: STOSB CMP AL,"?" JNZ MUSTGETWORD OR DL,1 ;Flag ambiguous file name JMP MUSTGETWORD FILLNAM: MOV AL," " REP STOSB DEC SI

rep_lodsb 6 days ago [-]
If it's longer than 8.3, the name is shortened, or runs into the extension field. It's a design decision, not a bug:

https://devblogs.microsoft.com/oldnewthing/20071217-00/?p=24...

alexandrukis16 7 days ago [-]
dale_glass 7 days ago [-]
There's a thing I've been curious about for a while, might as well try and ask here.

What does "DEVICE=" in config.sys actually do? As in, why is this in config.sys:

    device=c:\dos\emm386.exe
and not just:

    c:\dos\emm386.exe
in autoexec.bat?
lproven 7 days ago [-]
The DEVICE line loads device drivers.

EMM386 is a device driver which needs to be started very early in the DOS boot process for it to work -- because most of the rest of DOS is then loaded into memory blocks that EMM386 provides.

It's an .EXE file because the command invocation gives some useful data -- but it can't load that way, and if it could it would be useless because then it was too late to load drivers into the memory regions it created.

hernandipietro 7 days ago [-]
I remember looking at MSDOS binaries with hex editors and seeing "MS Runtime Library", like many tools were written in C -- may be my memory is completely failing ... but probably MSDOS 5.0 included many utilities written in C? I used 5.0 with a 386, circa '93.
glonq 7 days ago [-]
4.0 was a buggy release. Where's the DOS 4.01 source?
aap_ 7 days ago [-]
I would assume that with some disassembling 4.01 could be reconstructed from 4.0 without too much trouble.
hi-v-rocknroll 7 days ago [-]
No. The comments aren't there and 4.01 was also a major rewrite after Microsoft took the project back from IBM.
aap_ 7 days ago [-]
Crazy that they would only increase the version number by this little then. version numbers truly mean nothing...
yuhong 7 days ago [-]
[dead]
freedomben 7 days ago [-]
Even just seeing some of these filenames is a major blast from the past! Love it

CPY.BAT

MAKEFILE

RUNME.BAT

SETENV.BAT

dewey 7 days ago [-]
Makefiles are still going strong!
ForOldHack 5 days ago [-]
Wow.MIT liscense: you can sell it.

"Unlike the GPL, the MIT license is more permissive. It allows users to do almost anything they want with the code, including modify, distribute, and use it for commercial purposes, as long as they include the original copyright and license notices. "

Feb 29, 2024

userbinator 7 days ago [-]
I believe MS has now officially released the sources to MS-DOS 1.x, 2.x, and 4; but most of 3.x and 6.x were leaked many years ago, so I wonder if that's the reason they skipped 3.
smolsky 7 days ago [-]
OMG, I remember copying official 5.25 disks back in the 90s...
hi-v-rocknroll 7 days ago [-]
Clunk, clunk, clunk, bzt-urg, clunk, clunk, clunk, clunk... :)

While hole punchers and opaque tape worked for notching and denotching, there were also floppy notchers. It turns out these bits of accessories are rarely found on secondary markets or go for something like $80 USD. There are still quite a few 5.25" drive cleaning kits still for sale.

I don't miss floppies because they were slow, fragile, and prone to developing unrecoverable errors. I did discover through experimentation that 3.5" floppies were fairly resistant to crude direct magenetic attack. I had to open the window and touch the media surface to a small speaker's magnet to induce errors. Praise be to the greaseweazle and the Copy II PC Deluxe Option Board 2.0 (the 1.0 doesn't support 3.5" 1.44 MB).

2.88 MB drives are worth a small fortune because they are still used for industrial purposes. Also, SCSI floppy drives exist.

sevensor 7 days ago [-]
Fond memories of DOS 4.0. We had an IBM PS/2 286 with a princely 30 MB hard drive. As a bored youth, I worked my way through the paper manual that came with it, running each command (in alphabetical order) up until I hit RESTORE (or was it RECOVER? Something like that.) It overwrote the hard drive with garbage, and that's how I learned about reinstalling the OS.
awwwithy 6 days ago [-]
Things were a simpler time, but information was MUCH less accessible. In the 90s it was magazines, BBSs, and user groups. The information access we have today is orders upon orders of magnitudes more. Kids today have a limitless and open door to information to hack. Yes, Apple and MS might be more closed, but there are many other OSs.
blobbers 7 days ago [-]
Does this have a how to on hacking AUTOEXEC.BAT to avoid TSRs and get enough of that sweet sweet 640KB to run whatever program you needed?
7 days ago [-]
jayde2767 7 days ago [-]
What version of DOS was the latest when Win 3.1 was released? 4.1 or something, wasn't it? Just curious.
Maximus9000 7 days ago [-]
win 3.1 was released in early 1992. It looks like it was Dos 5.0 and 6.0 by then.

https://en.wikipedia.org/wiki/Timeline_of_DOS_operating_syst...

atlas_hugged 7 days ago [-]
Scott is such a treasure. Love that guy.
jwnin 7 days ago [-]
Agreed. He does this work repeatedly, no budget, and it's hard to get people to spend time working on efforts like these, whether it be technical or legal.
therealmarv 7 days ago [-]
I started with MS-DOS 3.3 but interesting to see that this version is not in the GitHub repo.
bfors 7 days ago [-]
Looking at this code is a nice reminder that I have virtually no real understanding of how computers work, and every part I work with is a nice polished abstraction that hides 99% of the complexity involved in actually creating value with a computer.
_whiteCaps_ 7 days ago [-]
leandrod 7 days ago [-]
‘in the spirit of open innovation, we’re releasing the source code to MS-DOS 4’ — I should not be surprised. M$ long ago eviscerated ‘innovate’ out of any meaning whatsoever.
Animats 6 days ago [-]
When will Windows NT 3.51 be open sourced? Windows 7?
jasomill 6 days ago [-]
It appears to be missing the code for DOSSHELL — the only references I see to SHELLB or SHELLC are in the SELECT (installer) source code.
qwerty456127 6 days ago [-]
I'm not sure but I feel like I can remember DOS 6.22, 6.0 or 3.0 (I'm not sure) source code leaked some year near 2000.
7 days ago [-]
Karellen 7 days ago [-]
Wait, why is `git pull` for an OS that ran on computers with memory and floppy-disk sizes measured in 100s of KiB taking more than a couple of seconds to download?

...Oh, there's 100MiB of PDFs in there, which are high-resolution scans of the paper technical documentation. Fair enough.

pjmlp 7 days ago [-]
I guess now we can finally try to understand what went wrong with the multitasking attempt.
h2odragon 7 days ago [-]
Graphics. Managers wanted "windowing systems" as well as multitasking.

People who just wanted mutitasking DOS had DesqView and ... "concurrent"? was it? i forget.

I wrote TSR's that snatched cycles off the timer interrupt and rode 21h for opportunity to flush buffers to/from disk.

cout 7 days ago [-]
There was a Concurrent DOS, and there were quite a few others: topview, taskview, doubledos, vm/386, to name a few. I remember reading this article (p. 22) sparking my imagination as a kid: http://bitsavers.trailing-edge.com/magazines/Microsystems_Jo...
brightsize 7 days ago [-]
> I wrote TSR's that snatched cycles off the timer interrupt

We've all been there. How else could you get anything interesting done back in the day?

cout 7 days ago [-]
For a long time I figured that was just the right way to do multitasking. Hook the interrupt and pass control to the next task when you are done. I also figured most of what I wanted was popup TSRs anyway - how can a human possibly pay attention to more than one program at a time? Makes me wonder how much my brain has changed over the years by being exposed to a multitasking and multiple windows on a large screen.
dev1ycan 7 days ago [-]
The day they open source XP is the day the world will collectively become better
ngcc_hk 6 days ago [-]
Very happy hacking mvs and vm. Still not able to run apl 360 …
SuperHeavy256 7 days ago [-]
Does this benefit FreeDOS btw?
theanonymousone 6 days ago [-]
Is it only another 10 years until we get an MIT-licensed Windows 95 source code?
ofrzeta 7 days ago [-]
What the ..? Wake me up when they open source DOS 6.22. What's holding them back?
voxadam 7 days ago [-]
> What's holding them back?

Maybe they're embarrassed about DriveSpace/DoubleSpace.[0]

[0] https://en.wikipedia.org/wiki/DriveSpace

rwl4 7 days ago [-]
Weird that for a couple minutes, these paths existed:

* https://github.com/microsoft/MS-DOS/tree/main/v4.0/bin

* https://github.com/microsoft/MS-DOS/tree/main/v4.0/bin/DISK1

* https://github.com/microsoft/MS-DOS/tree/main/v4.0/pdf

But they disappeared as I browsed the repo. I guess they didn't want that part public?

Edit: I knew I wasn't seeing things! Somebody forked it along with those files: https://github.com/OwnedByWuigi/DOS/tree/main/v4.0

farmerbb 7 days ago [-]
They force-pushed the repo to remove an insult towards Tim Patterson in one of the source files.
skissane 7 days ago [-]
They changed line 70 of v4.0/src/DOS/STRIN.ASM from [0]:

; Brain-damaged Tim Patterson ignored ^F in case his BIOS did not flush the

to [1]:

; Brain-damaged TP ignored ^F in case his BIOS did not flush the

[0] https://github.com/OwnedByWuigi/DOS/blob/ffd70f8b4fb77e2e6af...

[1] https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/DOS/S...

bombcar 7 days ago [-]
If Tim is still around he should PR a change back; I'd not want my name shortened to "TP".
EvanAnderson 7 days ago [-]
He should make a PR to change it back to the correct spelling of his name.
hi-v-rocknroll 7 days ago [-]
Agreed. My initialisms are almost as bad. (Thanks clueless parents!)
gigel82 7 days ago [-]
https://en.wikipedia.org/wiki/Tim_Paterson

From Wikipedia, the free encyclopedia

Tim Paterson (born 1 June 1956) is an American computer programmer, best known for creating 86-DOS, an operating system for the Intel 8086. This system emulated the application programming interface (API) of CP/M, which was created by Gary Kildall. 86-DOS later formed the basis of MS-DOS, the most widely used personal computer operating system in the 1980s.

Dalewyn 7 days ago [-]
If this release is for historical research purposes, the release should be pristine including the unsavory bits. Whitewashing of history should never be accepted.
tom_ 7 days ago [-]
Perhaps this release is not for historical research purposes.
Dalewyn 7 days ago [-]
It is for historial research purposes:

>The MS-DOS v1.25 and v2.0 files were originally shared at the Computer History Museum on March 25th, 2014 and are being (re)published in this repo to make them easier to find, reference-to in external writing and works, and to allow exploration and experimentation for those interested in early PC Operating Systems.

>For historical reference

>The source files in this repo are for historical reference and will be kept static, so please don’t send Pull Requests suggesting any modifications to the source files, but feel free to fork this repo and experiment.

senorrib 7 days ago [-]
100%!
esafak 7 days ago [-]
Don't leave us hanging!!
farmerbb 7 days ago [-]
At https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/DOS/S... it used to have Tim Patterson's full name whereas after the force push they abbreviated it to his initials "TP".

I had the repo cloned before the force push and when I went to pull it, this file was the only one that contained a conflict.

esafak 7 days ago [-]
Looks like the handiwork of Mark Zbikowski, whose initials adorn every EXE file. https://en.wikipedia.org/wiki/Mark_Zbikowski
farmerbb 7 days ago [-]
Mark is the one that committed today's source release, going off of the "MZ is back" commit message from GitHub user "mzbik".
7 days ago [-]
shanselman 7 days ago [-]
Ya sorry we're moving stuff around
rozzie 7 days ago [-]
Thx for clearing the rights and for releasing, Scott. And of course thanks to Microsoft and IBM.

It would be fun at some point down the road to get some of the older code building and running again - particularly '84/'85-vintage Windows & Notes builds. Quite a lot of work, though, not just because of hardware but also likely because of toolchain gaps.

rwl4 7 days ago [-]
Well, thanks for putting this up! It's really a treasure for those of us who used it as our daily driver so many years ago.
Karellen 7 days ago [-]
Why is that, no matter how much you check and proofread your work before you push/publish, you'll always find something obvious you missed 5 minutes after it's gone up?

To change a public branch, or not to change a public branch, that is the question.

Edit: Muphry's law strikes again - s/or to not/or not to/

electroly 7 days ago [-]
They just changed the folder. All of those files are now in https://github.com/microsoft/MS-DOS/tree/main/v4.0-ozzie
willxinc 7 days ago [-]
Looks like they were moved to the Ozzie subfolder: https://github.com/microsoft/MS-DOS/tree/main/v4.0-ozzie
rnd0 7 days ago [-]
That was literally just added; I have a tab open that doesn't have that folder. This is wild and strangely exciting to see released in real time.
shanselman 7 days ago [-]
Ya we wanted to separate the MS-DOS and MT-DOS stuff, it was confusing as it was
rnd0 7 days ago [-]
I'm not complaining, that's for sure! Thanks for all you're doing.
nullindividual 7 days ago [-]
It is all the MT-DOS content; binaries and docs.
qingcharles 7 days ago [-]
Multi-Tasking MS-DOS

Beta Test Release 1.00

Release Notes

Enclosed you will find Microsoft's first beta release of Multi-tasking MS-DOS. This version is based upon MS-DOS Version 2 sources, we will be reimplementing the multi-tasking enhancements on top of Version 3 sources shortly.

7 days ago [-]
7 days ago [-]
wesbarts 7 days ago [-]
[dead]
frank_bb 7 days ago [-]
[dead]
ingend88 7 days ago [-]
[flagged]
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 06:54:07 GMT+0000 (Coordinated Universal Time) with Vercel.