Open Sourcing DOS 4
hanselman.com
hanselman.com
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.
do you mean non-system ones?
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.
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.
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.
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.
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.
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"
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.
and noops.
we were reverse engineers, make no mistake
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.
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).
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.
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.
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.
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 literally learned to program by reading those manuals
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.
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
Does this mean if you happen to be talking to BillG you could talk about brain damaged programs and he'd nod appreciatively?
EDIT: Upon doing a web search, actually it looks like it was "brain dead".
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.
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.
https://github.com/microsoft/MS-DOS/commit/2d04cacc5322951f1... https://github.com/mzbik
Another is "PK" as found in the header of ordinary .zip files, after its creator Phil Katz (RIP).
Hardly surprising. If you grep the leaked NT3.5 sources for the f-word, you will find similar comments directed towards IBM.
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.
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!
If you’re taking requests I’d love to see MS-DOS 5.0 or at least QBasic next.
But this is really great.
What sort of tactics did you use to convince them? Maybe I can apply them to where I work too...
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.
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.
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
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.
> 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.
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.
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
From the source it's a little different but there's little integration between the bits.
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.
He has lots of YouTube videos about the zip stuff.
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.
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...!
DOSHIT:
INC [HIT_DOS] if (penIsDown) {> ; 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.
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?
Because it's boring.
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?
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."
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‘.
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.
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.
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.
Describe the difference between a test and a "sanity test?"
So now you have quick tests. That's disrespectful towards me because I got called slow once.
This can go on forever.
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!
add trigger warnings!!!! (im joking)
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.
What makes "quick" more respectful? Use "quick" and you'll be triggering everyone in standups every day :-)
Let's change it to cancelled()
How about goodbye()?
Make it idontevenknowanymore()
"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.
Let's keep "sanity test".
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. (!) ;)
Not really interested in discussing this and not saying I agree (or disagree!) with that. Just answering the question.
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::
You don't want to step on the toes of a zombie do you? (It's probably gross.)
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.
It'd be interesting to see 5.x and 6.x released.
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.
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.
There was Windows 3.11 which ran on top of MS-DOS 5.0, the two numbers probably got mixed in their memory.
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.
That means Windows XP should be open sourced by ... 2038. Not as far away as it seems. I'll add it to my calendar.
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.
I generally ran 2-4x the amount of RAM as most did. Still do. Pretty sure this made a lot of the difference.
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.
Also NT4, NT3.51, NT3.5, NT3.1...
NT seems to have been far more studied, and of course there were the infamous leaks of those along the way.
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.
Initiatives like MinWin and OneCore, secure kernel, device guard,... caused lots of rewrites and moving code around.
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.
It's not like the NT kernel will be going away from current Microsoft products anytime soon.
I don't understand if this source can be usefully integrated into modern DOS preservation projects.
The problems came from limitations of the BIOS interface (especially size)
Only for drives, but still...
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".
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.
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.
The latter one is more capable and compatible with modern things. Open Word and see how it calls DOC "Word 97-2004"
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
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).
Microsofts' releases have the benefit of being unambiguous.
"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"
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!
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.
For the actual hardware or PCem, FreeDOS exists and is alive. DR-DOS has also been open sourced.
Bryan Sparks did open-source CP/M a little while back, but AFAIK he hasn't said anything about DR-DOS so far.
Fortunately for the commons, what's done is done.
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.
To the point I might have dreamed it. Odd.
I'm sure the source for 4 will make for some interesting bug hunting. Anyone remember the MUF list? "Microsofts Undocumented Features".
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...
I wonder if we will see MS-DOS 5 or 6 soon?
FreeDOS, an open source DOS clone, has been around for a while:
Not sure how much work it would take for Linux or even just wine. But might displace DOSbox.
; 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/...* "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+...
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.
Edit: really appreciate the effort being put into preserving this software history btw
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
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
https://devblogs.microsoft.com/oldnewthing/20071217-00/?p=24...
still waiting for this one
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?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.
CPY.BAT
MAKEFILE
RUNME.BAT
SETENV.BAT
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.
"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
https://en.wikipedia.org/wiki/Timeline_of_DOS_operating_syst...
...Oh, there's 100MiB of PDFs in there, which are high-resolution scans of the paper technical documentation. Fair enough.
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.
We've all been there. How else could you get anything interesting done back in the day?
Maybe they're embarrassed about DriveSpace/DoubleSpace.[0]
* 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
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.
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.
; 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...
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.
>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.
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.
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/