User:Johnwilson

From OSDev Wiki
Jump to navigation Jump to search

About me

I'm John Wilson. Programming in 80x86 assembly since 1983, first using MASM (V1.00) and later TASM (V2.01 - V5.0). I've been chipping away at my own OS projects most of that time. The one that's actually seen the light of day is a minicomputer emulator I've been working on since 1993, which ended up in a "Windows 3.1"-like situation of being 99% of an OS but depending on DOS just for file access and a few other things (and even there of course it set up a 32-bit PM environment and occasionally even enabled SMP, all behind DOS's back). So I wrote FAT and ISO9660 boot loaders, a FAT filesystem driver, date/time stuff, and a low-memory allocator, yielding an emulator which looks exactly like the DOS version but needs no DOS. The idea is that it's for users who think "DOS" is a dirty word -- and yes I've also ported the emulator to Windows, Linux, and, for some reason, OS/2, but the drivers for legacy bus adapters work best under DOS since the application can access the hardware directly w/o having everything dribble through an OS-supplied driver/event framework. And if UEFI really does kill DOS for good in 2020, well it's a good thing I'll have three years to update my code to be able to live entirely without the BIOS (which it uses for PCI device discovery when necessary, and for finding memory, and video mode changes, and INT 13h is still the default hard-drive access method until I really trust my newish ATA/SATA driver, and, um, figure out how to reliably correlate INT 13h drive numbers with ATA channels/units).

Also, years ago I wrote a stand-alone four-user FORTH-79 environment for the PDP-11, which boots from an RL01 or RL02 disk (or DECtape, but that's untested in ~20 years since my DECtape hardware is pining for the fjords) and does time-slicing so everyone gets along happily, as long as they stay out of each other's memory (there's no protection -- the MMU is never turned on since I originally wrote the system on a PDT-11/150 machine that doesn't have one). As part of that, I wrote a series of boot blocks (for various disk-controller types) which could be written onto a disk with an RT-11 directory structure and could load any one particular .SAV file as a stand-alone program, which was useful for the Fuzzball OS too.

Development environment

DR-DOS V8.0 (bought before it was withdrawn due to GPL violation), my own editor, Borland TASM V5.0 (bought when it was still available, after I was *very* disappointed with MASM V6 since it broke all my code), and Open Watcom WLINK V1.9. My own MAKE (I needed one which allows wildcards in rules -- Watcom WMAKE seems to but it's unusably slow and the behavior is not documented so I'm not sure it's doing what I mean), and my own MAKEISO and MAKETAR utilities so that I could do those on DOS w/o having to move things to Linux for part of every build. All my coding is done in assembly language, officially because it's faster, smaller, and more powerful (which is all true), but really because I think in assembly language anyway and HATE C SO MUCH. I mean it's not as bad as most of the other semicolon languages but it still gets in the way more than it helps.