
Compiling Word for Windows v1.1a - elvis70
https://richardlewis.org/blog/2020/7/31/opus-compiling-word-for-windows-1-1a
======
Chris_Newton
Thanks for the little trip down memory lane.

Despite the much greater scale that modern tech gives us in almost every way,
there is still something special about the early PC era, when an enthusiastic
geek really could know every command that DOS provided (because your PC came
with a manual that described them all and you could read it cover to cover in
a few hours) and understand how the OS worked all the way down and what all
the DOS and BIOS APIs (as we’d call them today) were for.

In those days, you could write your own toy programs by running your debugger,
manually entering assembly language into some memory, and then writing the
memory from that address verbatim to a .com file, which DOS would happily load
and run similarly verbatim (so make sure you remembered to exit at the end, or
you’d end up executing whatever was randomly in the memory just after your
program).

Given luxuries like a higher level programming language, a real compiler and
an interactive text editor, a single programmer could even write a useful
application like a compiler or word processor or game to a professional
standard within a reasonable amount of time. Though, as this article reminds
us, sometimes you had to jump through some hoops that seem quite eccentric by
modern standards to do it.

For the record, I have never been a fan of pink shirts on book covers, though
as defining moments in your life go, getting that book as a curious and very
nerdy teenager was probably one of mine. I guess today the equivalent would be
finding some tutorial videos on YT or copying and pasting lots of code from
SO, but somehow I doubt any of the kids learning to program like that ever
enjoys the same feeling of truly understanding your PC and how you can use it
that we had back then. Or maybe there are secretly clubs of 13-year-olds
making a ground-up Linux distribution that will take over the world running on
Raspberry Pi supercomputers and open hardware smartphones in 10 years and I’m
just too out of touch to know about it. ;-)

~~~
yetihehe
> I doubt any of the kids learning to program like that ever enjoys the same
> feeling of truly understanding your PC and how you can use it that we had
> back then.

I still have that feeling programming for small microcontrollers today.
Stepping through some disassembled code and comparing/changing registers on
the fly is just pure bliss.

------
twoodfin
This stirred my memory of another terrific HN post on the history of Word for
Windows 1.0:

[https://news.ycombinator.com/item?id=18764790](https://news.ycombinator.com/item?id=18764790)

------
thelazydogsback
I still have my green & white steel-balled mouse somewhere :) CGA/EGA gfx mode
was pretty bad though, so still used EGA text mode in WW until final editing.
(But it beat Electric Pencil in all upper case lol.)

I really miss the slow-burn green screen w/the Hercules text card though --
esp. as a 2nd screen for debugging.

~~~
core-questions
I've heard tell of the dual-screen DOS machine with a Hercules. How did this
actually work? Did special debuggers support it, or something?

~~~
limmeau
The reason why this works is that IBM CGA/EGA/VGA map their text-mode video-
RAM at segment 0xB800..0xBFFF, and in graphics-mode at 0xA000..0xAFFF. MDA and
Hercules, on the other hand, map the video memory at 0xB000..0xB7FF, for
reasons I never fully understood.

So, if you plug a Hercules card and a VGA card, you can have two screens. Some
debuggers supported it. I never got it to work back in the day with my ET4000
and an MDA scavenged from a PC-XT, but I was just a teenager with no access to
StackOverflow.

------
tom_
This is dredging up some long-unused memories but you should be able to get a
bit more memory by supplying the RAM parameter to emm386. Get yourself some
upper memory blocks (UMBs) - usable memory above the 640 K mark.

    
    
        DEVICE=C:\DOS\HIMEM.SYS RAM HIGHSCAN
    

(HIGHSCAN directs EMM386 to try harder to find upper memory blocks.)

Then use FILESHIGH to set the file count.

    
    
        FILESHIGH=30
    

MEM should show you now have some upper memory (some of it now used by the
files area), and slightly more conventional memory free.

~~~
yuhong
I believe that this only works on MS-DOS 7.0 and later versions, which had to
implement a workaround for SFT scanning code in Windows 3.1 KRNL386 (still
used in mini.cab in Windows 9x Setup) to support this.

~~~
tom_
Ah, thanks - i thought FILESHIGH was from the Windows 3 era.

------
mmphosis
_The first Microsoft Word was released in 1983. It featured graphics video
mode and mouse support in a WYSIWYG interface. It could run in text mode or
graphics mode but the visual difference between the two was minor. In graphics
mode, the document and interface were rendered in a fixed font size monospace
character grid with italic, bold and underline features that was not available
in text mode. It had support for style sheets in separate files (.STY).

The first version of Word was a 16 bits PC DOS/MS-DOS application. A Macintosh
68000 version named Word 1.0 was released in 1985 and a Microsoft Windows
version was released in 1989. The three products shared the same Microsoft
Word name, the same version numbers but were very different products built on
different code bases. Three product lines co-existed: Word 1.0 to Word 5.1a[6]
for Macintosh, Word 1.0 to Word 2.0 for Windows and Word 1.0 to Word 5.5 for
DOS. _

[https://en.wikipedia.org/wiki/History_of_Microsoft_Word#Word...](https://en.wikipedia.org/wiki/History_of_Microsoft_Word#Word_for_DOS)

------
ssh_wintermute
Read it as "Compiling World of Warcraft", reading first paragraph wondering
what the hell does Word has to do with it.

------
phendrenad2
I wonder how much work it would be to compile this in the latest Visual C++.
Probably all of the assembly stuff would need to be wrapped in something to
tell a modern x64 CPU to go into 16-bit mode temporarily? Other than that,
seems like a pretty standard win32 app. I smiled when I saw the familiar
"winmain" procedure...

------
Rochus
Interesting article, thanks for sharing.

> _Development on the word processor called Microsoft Word for DOS was started
> by Richard Brodie and others in 1982_

Wasn't it rather Charles Simonyi and others?

~~~
cardiffspaceman
Both? [https://www.core.co.uk/blog/blog/history-microsoft-
word](https://www.core.co.uk/blog/blog/history-microsoft-word)

------
oceanswave
I wonder how hard the is going to be when Apple Silicon forces us back to non-
apple laptops

------
Narishma
Lack of contrast makes this impossible to read without reader mode.

