Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
GPL-3.0 licensed BIOS for Intel 8088 based computers (github.com/skiselev)
178 points by tambourine_man on Oct 15, 2023 | hide | past | favorite | 72 comments


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...


Someone could take this and try to make it ROM-able in order to "complete" the BIOS:

https://github.com/microsoft/GW-BASIC


MIT license... yep, you can totally use it.



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.


> 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.


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


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!


The DLF will be breaking ground on its massive corporate HQ campus any day now.


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?


This chap has also built a 8088 PC clone. I'm just wondering why not a 8086?


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)


> 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))


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.


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.


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)

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.


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.


Is the 8086 so different from the 8088 that it requires a different BIOS?


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.


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.


and what does that have to do with BIOS? The only way you can tell 88 from 86 apart in software is speed and executing self modifying code to measure processor 4 vs 6 byte prefetch queue depth buffer size difference.

https://www.minuszerodegrees.net/misc/Determining%20Processo...


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.


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.


Around the same time, there's things like the Amstrad PPC512 (NEC V30, which is roughly 8086 pin compatible).


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.


No :) Its Chinese open source, Bunnie calls it Gongkai https://www.bunniestudios.com/blog/?p=4297 You copy, rip out attribution, add some optional modifications and sell it as your own.


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.


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.


What would you do with 4.77 MHz nowadays?


Overclock it to ~7MHz using Doug Severson's 1985 PC-Sprint https://github.com/reeshub/pc-sprint :)

Epictronics: Overclocking IBM PCjr, 5150 PC, 5160 XT, 5155 Portable. Introducing the Skinny Sprint! + PCjr repair https://www.youtube.com/watch?v=v46DFLBlxzw


Finally, Richard Stallman can have a laptop that's GPL down to the CPU. Will an 8088 run emacs?


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)


Looks like those are from 2008?


I think you're right:

https://en.wikipedia.org/wiki/ThinkPad_X_series#X200_and_X20...

Wonder what he would think of: https://puri.sm

though honestly thinkpad keyboards are pretty nice.

EDIT: hmmm... none certified: https://ryf.fsf.org/products


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.


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...


It will run MicroEmacs :-)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: