Installing Linux into a 286 laptop from the year 1989
befinitiv.wordpress.com
befinitiv.wordpress.com
I ended up doing enough of a restore of my dad's old (1989, I think?) 386 laptop and parallel Ethernet adapter. The details were something like:
1. The rechargeable battery was dead, but it was a 4.8-volt NiCad. It ran beautifully off three alkaline D batteries, strapped to the back. I just had to disconnect the batteries out whenever I had it plugged into the wall, to prevent them from charging.
2. The hard drive wouldn't spin up, so I ended up making a DOS boot disk with an SSH client (SSHDOS) and ODI drivers for the NIC, as well as the bog standard MS-DOS editor.
3. When I had Internet connectivity (read: wall proximity to Ethernet), I used SSHDOS to connect to a remote IRIX host, and used Lynx from there. Lynx was painfully slow on the 386, and SSL was right out. Not that much used it in 2007.
4. I used the MS-DOS editor as my daily-driver text editor. My workflows then, as now, are mostly text-based, so this was a pretty easy change.
Of course, I couldn't help but add a sticker to the lid: "up to 10x faster than your malware".
had to have a license for the C compiler.
peak proprietary unix.
I wonder if Al knows there are still people working on it.
[1] https://befinitiv.wordpress.com/2021/06/24/android-9-on-a-gs...
Check my comments at these HN threads.
- A gopher client. Delve or cgo should compile near straight. - Audio support. - AWK.
I really like the idea of using the Pi 0 as a "coprocessor" for vintage machines and/or using the legacy machine as a terminal for the Pi.
You could potentially run X11 or VNC on the 286 also.
The Pi of course can act as a Wi-Fi and SSL proxy, etc..
If the headline was "Installing Linux into a TV from 1989" you wouldn't expect it to actually just be the author shoving a linux-capable SBC in there.
The article has merit but when the headline is pure click bait it's difficult for me to look past that.
If the headline of this had been "Embedding rPi Zero into a 1989 Laptop Chasis" then I would have though oh cool and checked it out rather than being annoyed that clickbait made it onto the HN front page.
My parents bought a higher-end '89 Sony model back then. What it meant was a tuner up to 40 channels, a whopping 25" Trinitron tube curved only in one degree (i.e. cylindrical) and OSD for most functions. The pinnacle of TV technology was Picture-in-Picture, and that's about it.
Bit of a spoiler to post it in this context, but still worth it.
Games wouldn’t run right, so I got the big dos manual and read the entire thing and started messing with boot setting to free more memory
This seems to be close to what I used to do:
After about a month my mom convinced my father to get me a new PC, probably annoyed by the sound of the dot matrix printer at night. But honestly, I agree with you: it wasn't that bad.
286's were pretty ancient by 89 anyway. The first 486 was released that same year.
Like my rock-bottom "Workforce 486" that was $2000 back in 1993 or so: 486 dx2/66, 250MB HDD, 4MB RAM ordered from the back of Computer Shopper.
We used the segment mode for our real time OS in university as it was simpler than virtual addressing and provided granular enough protection faults for what we were doing.
One neat thing we did with it was use separate segments for different video buffers before they were blitted to the VESA frame buffer region. This gave us a 1980's version of video sandboxing along with vsync'ed double buffering and overlapping windows.
It only really worked because the Pentium 3 we were using could memcpy something like ten thousand times faster than a 286 but it was still cool.
It wasn't like today, where if you're going to buy a new computer, you might as well always get the latest and greatest.
https://minix1.woodhull.com/hints.html#small
If you can get lynx running, you could access gopher and thus, gopher://hngopher.com
Lynx for Minix 2.0.{2,3,4}
https://minix1.woodhull.com/pcontrib/lynx285p2b.txt
More software for Minix 2
char: 8 bits
short,int,long: 16 bits
Anyone have experience working with such a system?- minix 1.0 could run on XT with a floppy disk
- coherent version < 4 could run on AT 286
- Xenix had a 286 version as well
i remember it had one hell of a doorstop book that they referred to as "the lexicon."
Also sizeof(long) was 2 and sizeof(long long) was 4.
Wait what? Doesnt that mean a byte somehow has 16 bits?
Around 1993 or so, before Linux took off, I ran it on a 386SX laptop with 3 megs of RAM. Supposedly earlier versions ran on the 286 but I never tried.
Fun. Here's a link to the programmer's guide: http://www.nj7p.org/Manuals/PDFs/Intel/174391-001.pdf pages 2:17-2:22 cover the pointer and data type sizes. Amazing how little things have changed... and how different things are at the same time.
Edit: answered my own question. So this is the obsolete segmentation isolation I’ve always read about!
Yep. It was amazing what you could do with it. 286 was a chip that outside Xenix, Coherent and a few other multiuser OSes never really was fully utilized.
So full 386 software didn't run on that. Minix was super fast but there was little you could do with it, sadly.
Of course pretty much all Intel computers still run Minix today as part of Intel's management engine.
(This release and increase in word size revealed a lot of bugs in the 16 bit only Unix and C compiler -- I recommend reading the porting paper if this sort of thing interests anyone)
Edit: Paper is here https://www.bell-labs.com/usr/dmr/www/otherports/32v.html
To answer your question from the paper, it appears all the other data types were 2 bytes, except for char, which was one byte. And long/float, which were handled specially, I believe by the PDP-11's floating point co-processor "C code for the PDP-11 uses the FP-11 convention for storing long integers"
The PDP-11 has an MMU and supports what's essentially segmented memory (https://gunkies.org/wiki/PDP-11_Memory_Management), with different address spaces for a kernel and for a userspace. It also supports a 22-bit "real" address space, hence when 2BSD and other "older" PDP-11 unixes can use up to 4MB of real memory (and 2.10BSD's kernel actually used more memory than could fit in a 16 bit address space at once -- needing to be manually chunked and loaded in/out of memory. In the release notes (http://www.krsaborio.net/bsd/research/1987/0715.htm) the authors said "Yes, [this is the last release] at least by us; quite frankly, we'd rather sacrifice our chance at heaven than look at a 16-bit machine again.", so it's about as nightmarish as it sounds.
It doesn't support paging, though, so no real virtual memory. I'm not really sure how thorough the process isolation was -- I know in the early releases, there was basically none, and a bad user process would crash the whole machine. I believe by later models (the MMU did change over time) it was "good enough" to keep the userland from crashing the kernel, at least.
Wasn't until 3BSD from Berkeley that proper virtual memory was added -- hence why the kernel's name was changed from /unix to /vmunix. Which is where the "vm" in "vmlinux" comes from, in case anyone's curious.
Didn’t know that myself, thanks for sharing!
- Coherent
- XENIX 8086
- SINIX (technically on 80186, and derived from XENIX)
- PC/IX
- Minix86
One of the first things I usually do on an old but new to me system is run a small C program that just prints sizeof() of various types, including the ones you mentioned and pointers. Here it is on SINIX, which is the one I can currently run easiest (unit is multiples of sizeof(char) == 1, with normal 8 bit bytes):
char: 1, short: 2, int: 2, long: 4, long long: 4, pointer: 2
So it's almost like you say, but long (and long long) are actually 32 bits.
Standard pointers are 16 bit, which means they address within a segment. There is almost certainly also a way to specify 32 bit far pointers (seg:off), or maybe even 32 bit "huge" pointers (still seg:off, but normalized, so that comparisons work).
The rest of this article was clickbait, but that reference was awesome, and incredible to think that folks are still using it all this time later.
military vet who completed columbia's general studies program, then took a job with the university. maintains awesome webpages on:
* computing history at columbia: http://columbia.edu/cu/computinghistory/
* 1968 protests at columbia: http://www.columbia.edu/cu/computinghistory/1968/
among many other things... definitely worth a look!
I mainly used it with the external screen for reading text files and amateur ebooks, at the end of my bed.
Why? Now... most of the stuff that is not direct technical stuff i do is text based (writing reports, creating spreadsheets with calculations for projects etc.), and even not a small part of the technical side of the job is done in hooking up to the serial port of a production line. The transactions with our vendors at work is mostly via fax (yeah, it still exists and is used in germany... ESPACIALLY with our vendors and partners)...
The funny thing is, i am really confident, that i COULD do 99% of my work via a machine of the 80s without losing much comfort.
Well, yes, something's getting installed in the physical sense (so not quite entirely clickbait).
Wouldn't it be great to have a relatively routine way of repurposing old laptops, which often have very good traits, by using them as terminals for a replaceable on-board compute module (through VNC or what have you)? For instance, an enclosure that fits in the space occupied by the optical drive or Ultrabay, and uses the existing interface for its connection. What would be needed to be created and disseminated is a design for the enclosure (and maybe someone to make them) and software for the client.