75 comments

[ 4.4 ms ] story [ 141 ms ] thread
Finally, Richard Stallman can have a laptop that's GPL down to the CPU. Will an 8088 run emacs?
(comment deleted)
This is just the BIOS, not the CPU nor the rest of the hardware.

For a GPL BIOS, Coreboot/Libreboot has already existed for a while.

Eh kind of? Coreboot effectively provides the hardware initialisation layer - if you want runtime firmware you're going to need a payload like SeaBIOS (which is GPLed, but which isn't really intended to bring up real hardware from scratch)
I won't say what it was intended for per se, but IIRC coreboot+seabios boots a lot of chromebooks just fine.
Yes, Coreboot does the hardware bringup and then hands off to SeaBIOS. SeaBIOS can't do that on its own.
For a GPL BIOS, Coreboot/Libreboot has already existed for a while.

For, what, a handful of old laptops? It's not a general solution for libre booting.

Every single modern x86 chromebook has coreboot support.

That said: most if not all of them require some proprietary bits to initialize ram timings and to run the security coprocessors (Amd PSP, Intel ME).

Older intel based systems (like the Lenovo x200) have coreboot support that can work without the ME firmware (but still requiring the EC firmware).

A list of many of the google devices with coreboot support (note: they're all codenames, not marketing names): https://doc.coreboot.org/security/vboot/list_vboot.html#goog...

So that means, what, 0.1% of machines, not 0.001% of machines have coreboot support? Well that makes all the difference in the world...
I don't know what the percent of existing machines are chromebooks.

But that wasn't the question posed, it was:

> For, what, a handful of old laptops?

And the answer there is "no".

The point (that is, the thing that matters, which admittedly you would have to actually read the thread for understanding) is that libreboot isn't available on enough platforms to be a free alternative to proprietary boot methods for most people. And that's even including all the chromebooks in the world. But Someone Is Wrong On The Internet, so I guess you can claim to have fixed that.
I thought he already had a laptop.

EDIT: https://www.stallman.org/stallman-computing.html

"As of 2022 I use a Thinkpad x200 computer..." (followed by detailed explanation)

MicroEmacs runs on DOS (and CP/M-86, I think). Not the whole GNU environment, but at least you get the keybindings.
MicroEmacs doesn't include a Lisp interpreter.
I didn't feel the need to enumerate everything a DOS emacs doesn't have that GNU emacs does.
I'm sure there's an Emacs that does but the canonical emacs? I doubt that would even run on a 286, much less an 8088...
Does this rom fix the book8088 being randomly off by a column in text mode?
The stock book8088 BIOS is a ripoff (GPL violation) of this. IDK about that bug though.
Didn't they notify buyers of the open source bios and share the code if a buyer wanted it? That may be enough to satisfy the GPL.
IDK what notices they provide, but:

The copyright statement that prints on boot and indicates that it is licensed under the GPL has been stripped, violating section 4 and 5.d (now claims to be "Copyright (C) 2022 CYCLE Logic" with no mention of "Copyright (C) 2010 - 2020 Sergey Kiselev", and with no mention of the GPL).

If you do request the source code from them, to their credit they do give it to you, but they code the give you has all (edit: most) of the copyright header-comments removed (violation of section 5.b).

And generally, in neither the binary nor the source code indicate that it's based on book8088 (violation of section 5.a).

That's so silly.

They'd definitely sell more, not less, of these book8088s if they credited the bios and used upstream's source.

Particularly now that upstream directly supports the device.

When you buy it they send you an archive that has the schematics for the machine, and a zip file that contains the source code to the rom with whatever modifications they made.
Could you explain that in a little more detail? That sounds like it could be a hardware bug.
I believe it's from the LCD panel auto-syncing improperly / choosing the wrong horizontal porch.

I'm not sure the BIOS can help much.

In that case I think any firmware fix would need to be in the VBIOS.
There's no real vbios. There's a CGA chip (6845), with pretty limited registers to adjust timings (and a lot of software out there that expects to set these directly or for line timings and frame timings to be precisely known values). The clock rate is fixed.

The scan converter in panels often guesses "wrong" about modes. If one could change the firmware for it, that would help.

This chap has also built a 8088 PC clone. I'm just wondering why not a 8086?
The original IBM 5150 used the 8088, as did all the clones. So, assuming the author got ideas from old schematics, they would probably use the same chip.
There wasn't really an important 8086 box. The first IBM PC (1981) used the 8088. The first 8086 PCs were the discount models in the PS/2 line (April 1987), 3 years after the 80286 in the PC/AT (1984); so the 8086 was already obsolete by the time it was in a PC. And later that year (August 1987) it would be even more obsolete when an 80386DX PS/2 came out.
The one truly important 8086-based machine I can think of is the Japanese NEC PC-9801, so it would make some sense for someone to clone a machine like that. Though I'm not sure if I'd clone the original 9801 that kicked off the entire line or rather go for the much improved NEC V30 chip instead. (Which also powered Irem's M72 Arcade Board, which ran R-Type, and the latter M82/M84 boards that gave us R-Type II - though arguably, arcade boards aren't in the same category as home computers)
If you think the only 'important' thing in computing at that time was the IBM PC, then maybe you think there were no 'important' 8086 boxes. There was a lot more going on at the time if you were actually there working at the time.
> The first 8086 PCs were the discount models in the PS/2 line (April 1987)

You missed two earlier ones. The Olivetti M24 (also sold as the AT&T 6300 in the US) was released in 1983 and used the 8086 CPU.

https://en.wikipedia.org/wiki/Olivetti_M24

Was about to say that. The M24 was the one I much preferred using during that period, before AT (286) PCs started arriving (or made affordable). There were other 8086 PCs around as well - I had a low-cost British one at home (IIRC it was called Advance 86 (EditUpd: That one was released near the end of 1983, way before any PS/2 line in 1987))
> The first 8086 PCs were the discount models in the PS/2 line (April 1987)

That doesn't sound right to me. I recall growing up with friends who had 8086 PCs, bought prior to 1987.

There were two variants of Model 30 in 1987. One with 8086 and another with the 80286. They were rehashed obsolete hardware with the ill-fated MCA which was supposed to be the future, but PCI won this particular battle.
As mentioned by a number of others in the comments, there definitely did exist 8086 based PC compatibles prior to 1987. No one is disputing the existence of this particular model.
I can think of one that was significant in the UK - the Amstrad PC1512, running off a NEC V30 processor, with 512KB RAM, easily upgradeable to 640K, with options for one or two floppies. I had one myself, along with a 32MB hard card fitted into the rear expansion slots.
I had a Compaq Deskpro with an 8086. Noticeably faster than that XT. I bought it used, durt cheap when everyone else was upgrading to 286s. It worked quite well for quite some time. And the AT&T 6300 used an 8086 and the Toshiba T1200 had an 80C86. 8088's were definitely more popular among the cost-conscious, but it seemed after a couple years the clone manufacturers were making 8086 based systems for about the same price as IBM XTs.
Is the 8086 so different from the 8088 that it requires a different BIOS?
Yes. The external bus on the 8088 is 8-bit while the 8086 is 16-bit (which is why the 8086 wouldn't appear in a PC until the mostly-80286 PS/2 line, since the 8086 and the 80286 could use the same 16-bit PS/2 bus).
There were numerous 8086 PC compatibles before the PS/2 or the 80286 became popular. The most famous was of course the original Compaq Deskpro, but At&t, Wang, Eagle and others did too. Yeah, the BIOS had to be aware of the difference between the 8088 and 8086 for some setup stuff, but the 8086 is at the hardware level perfectly happy to talk to an 8-bit bus and the software mostly never knew the difference.

edit: And how could I forget (as mentioned by another poster in the thread) the numerous NEC PC98 machines with an 8086 which created their own industry. Sorry for slight, Japan.

Around the same time, there's things like the Amstrad PPC512 (NEC V30, which is roughly 8086 pin compatible).
That's a hardware, not a software difference.

With the exception of bus speeds / timings and the differently sized prefetch queue, the 8088 and 8086 are 100% software-compatible so there wouldn't need to be any difference in the BIOS.

The bios is much more hardware bound than it is software bound. It very much needs to talk to other hardware on the board.
(comment deleted)
Yes, I'm aware of the hardware differences, but were they significant enough to require software adjustments? I used both 8088 and 8086-based PCs in the second half of the eighties, and from a software perspective, they seemed identical. I assumed the same applied to BIOS code since, to the best of my recollection, software couldn't detect whether it was running on an 8088 or an 8086, even if it tried.

By the way, while the PS/2 series marked IBM's first use of the 8086 in a PC (specifically the PS/2 Model 25), clones had been using the 8086 for some time already. The 8086 worked seamlessly with the standard ISA bus, and as far as I know, no 8086-based systems used the PS/2-specific Microchannel bus.

No, CPU is irrelevant, even the early chipsets didnt try to invent anything and mostly implemented XT peripherals leading to universal exchangeable clone bioses. OP didnt suggest otherwise, he simply mentioned author also publishes a couple open source 8088 motherboard projects:

http://www.malinov.com/Home/sergeys-projects/sergey-s-xt

http://www.malinov.com/Home/sergeys-projects/xi-8088

https://github.com/skiselev/micro_8088

http://www.malinov.com/Home/sergeys-projects/wildcard-88-mot...

There's another project that's an interesting read at https://www.homebrew8088.com/.

It uses almost all commodity 74xx parts, except for a 486-era keyboard controller. If you use the NEC V40, a 186-style semi-integrated CPU, you don't even need a seperate interrupt controller or timer component.

Yet, it will run an off-the-shelf XT BIOS (or this BIOS) as long as you run about 10 instructions to configure the V40's onboard peripherals to live at the right ports.

You can add a DMA controller, but you don't need it unless you want a floppy drive or Sound Blaster.

Kind of. The 8088 can use an 8-bit wide ROM chip, while the 8086 would require two such ROM chips, one for the even addresses, one for the odd addresses, given that the 8086 has a 16-bit data path. The software on the ROM chips can be the same.
I guess it isn't so simple [0]

    msg_no_basic    db      'No ROM BASIC', 0Dh, 0Ah, 0
    
    ;=========================================================================
    ; int_18 - execute ROM BASIC
    ; Note:
    ; Prints an error message since we don't have ROM BASIC
    ;-------------------------------------------------------------------------
    int_18:
     mov si,msg_no_basic
     call print
    .1:
     hlt
     jmp .1
[0] https://github.com/skiselev/8088_bios/blob/dfff4fddc8ea73c8a...
It was common for later BIOSes to not include the BASIC ROM:

https://en.m.wikipedia.org/wiki/BIOS_interrupt_call

Not ideal, but not a deal breaker. And it might go against Microsoft's IP (not sure, personally).

It's not that hard to write a BASIC interpreter.
You're welcome to do it.
I've actually thought of doing it. But I'm pretty committed as CEO of the DLF.
i love people that shitpost here can be C level execs in massive corps
The DLF will be breaking ground on its massive corporate HQ campus any day now.
I suspect he's referring to the "D Language Foundation[1]"

Mr. Bright, thank you for Empire. Some of my earliest tinkering memories are of upgrading my 5150 to have a V20 CPU and being somewhat pleased that map generation took somewhat less time.

[1] https://dlang.org/foundation/

You're welcome! I enjoy hearing from people who enjoy the game!
> It's not that hard to write a BASIC interpreter.

If you are Walter Bright and write C++ compilers for fun.

If you only knew how trivial Basic looks after implementing a C++ compiler :-)

The challenges would be:

1. fitting it into 32K of ROM

2. figuring out the interface to the cassette player and the interface to other software that relies on the Basic interpeter

3. testing it

I have no idea where it was implied in that comment that it was difficult. I said that it wasn't required to be considered a valid BIOS, as commercial/alternatives did the same.
I don't remember anybody other than IBM having ROM BASIC in their PC clones.
If one called INT-18 today, would we hit a similar stub in a modern PC BIOS?
Reminds me of ERSO BIOS.

NASA still uses IBM PC and XT systems for some of their work as they haven't converted the programs to newer hardware.