Readit News logoReadit News
pavlov · 2 years 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 · 2 years 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 · 2 years 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.
zooq_ai · 2 years 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 · 2 years ago
branch if not equal.

and noops.

we were reverse engineers, make no mistake

shudza · 2 years ago
It was something like: find "74", change it to "75" lol
tambourine_man · 2 years 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 · 2 years 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.
tambourine_man · 2 years ago
I just remembered replacing the Netscape “N” comete with my own GIF. How cool was that?
tombert · 2 years 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 · 2 years 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 · 2 years 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 · 2 years 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 · 2 years 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 · 2 years 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 · 2 years 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 · 2 years 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.
squigz · 2 years ago
Don't be too sad that computers have matured: hackers gunna hack, no matter the generation ;)
fuzztester · 2 years 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 · 2 years 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 · 2 years ago
We can still give DOS to kids though. I'm going to try it out when he reaches 6.
drewzero1 · 2 years 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 · 2 years ago
>Modern operating systems don’t run binaries tampered with a hex editor.

do you mean non-system ones?

grishka · 2 years 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.

eru · 2 years 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.
josefx · 2 years 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.

userbinator · 2 years ago
You can still patch binaries on Windows.
cmer · 2 years ago
I liked changing the copyright company name to my own name. Made me feel like such a boss.

Dead Comment

conkeisterdoor · 2 years 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 · 2 years 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 · 2 years 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 · 2 years 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 · 2 years ago
What? Is this what MZ means? Fascinating!
HeckFeck · 2 years 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 · 2 years ago
Looks as if someone did an s/retarded/brain damaged/g before making the code public :)
Uvix · 2 years ago
That was my first thought, but that wouldn’t explain the hyphenated versions in there.
cdchn · 2 years ago
TP was apparently someones name before they force-pushed to change it too.
blobbers · 2 years 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 · 2 years 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

asveikau · 2 years 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 · 2 years 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".

dhosek · 2 years ago
I kept reading those as “Brian damaged” and thinking man, MZ really hated Brian.
sponaugle · 2 years 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 · 2 years 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 · 2 years 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.

moody__ · 2 years 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 · 2 years 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 · 2 years 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
_mlbt · 2 years 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.

davidferguson · 2 years 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 · 2 years ago
Windows 95 OSR5 - Open Source Release. Someday soon?
chucky · 2 years 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 · 2 years 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

NewsaHackO · 2 years 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 · 2 years 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.

HeckFeck · 2 years 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.

Someone · 2 years 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 · 2 years ago
No upside for the company? Do you not see all the people who are delighted to be able to browse the code?
cdchn · 2 years 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 · 2 years 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 · 2 years 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 · 2 years 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 · 2 years ago
the workarounds because of technical constraints of the time make this stuff really interesting. When tech creativity shines
sponaugle · 2 years 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 · 2 years 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 · 2 years ago
LOL. Nice find.

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

keyle · 2 years ago
I obliged

      DOSHIT:
        INC     [HIT_DOS]

zdimension · 2 years 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 · 2 years ago
This was the good 'ol days, back when you could put stuff in comments like that and not worry about legal
eesmith · 2 years 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 · 2 years ago
Now you can't even say "sanity check", much less mention brain damage.
justinclift · 2 years ago
Well they're not wrong, so maybe the comment was just prescient? :)
wormius · 2 years ago
It's what happens after Ballmer exceeds the peak.
garaetjjte · 2 years ago
1970-01-01 · 2 years 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 · 2 years 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 · 2 years 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.