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.
> 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).
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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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!
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.
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.
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
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...
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).
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
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.
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.
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.
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)
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?
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.
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...
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!
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.)
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.
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.
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.
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.
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).
and noops.
we were reverse engineers, make no mistake
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?
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.
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.
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
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.
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"
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.
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.
do you mean non-system ones?
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.
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.
Dead Comment
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
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
https://github.com/microsoft/MS-DOS/commit/2d04cacc5322951f1...https://github.com/mzbik
Hardly surprising. If you grep the leaked NT3.5 sources for the f-word, you will find similar comments directed towards IBM.
Does this mean if you happen to be talking to BillG you could talk about brain damaged programs and he'd nod appreciatively?
See also http://catb.org/jargon/html/B/brain-damaged.html
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.
EDIT: Upon doing a web search, actually it looks like it was "brain dead".
It is always great to have period software on period hardware!
(added: Short video of it running - https://www.youtube.com/watch?v=YPPNbaQaumk)
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.
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.
If you’re taking requests I’d love to see MS-DOS 5.0 or at least QBasic next.
What sort of tactics did you use to convince them? Maybe I can apply them to where I work too...
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).
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
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.
I am close to writing a browser extension that does a find and replace to reverse change these imposed, humourless, coddled changes.
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.
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.
https://www.youtube.com/watch?v=YPPNbaQaumk
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
Company open-sources old product? Search for curse words...!
> ; 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.
When Mozilla went open source back in the 1990s, Netscape's lawyers required the source first be bowdlerized. (Search for "censorzilla" for some examples.)
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.