• Please review our updated Terms and Rules here

Book 8088 discovery and modification thread

Actually VGA has nothing to do with the System BIOS. It has its own VGA BIOS extension.
I looked at the binary that you've sent me. It is still based on my code.
Interestingly enough, they've added some code and messages back, e.g., CPU type detection, or perhaps just went back in their edits...

Cirrus Logic CL-GD5429 is an interesting choice. It requires unlatched LA17-LA19 addresses to work properly. That's not a problem if you build your own motherboard, but it won't work in 8-bit ISA slot exactly because unlatched addresses are missing there.
Also, the original Cirrus Logic BIOS used 80186+ instructions, so the chances are that the system will not work with 8088/80C88 CPUs, only with NEC V20.

Of course. Not sure where my brain was going with that.

Still have not had any luck getting VGA in Windows. But I did find a tool from Cirrus that identifies the chip and it reports that it is a CL-GD5428. Possibly meaningless. I can install the drivers into Windows, but when I start windows, the screen just goes black. Hard drive keeps going, so I am sure Windows is loading happily and I am just not seeing anything. It could potentially be the LCD not being able to re-sync. I bodged together pieces into the System.ini manually and the VGA logo actually loaded but then dumped me back to DOS. Worst case, Windows does look great under EGA.

I think all of these units are probably coming with the V20 only now. There is probably a larger surplus of those than the 8088s out there. I have read others mention that it is not real VGA and is instead EGA. But I don't know where the source of that claim is coming from. Just seeing people making the claim.

Once I am finished playing with the stock config, I will try my hand and compiling your BIOS with some customized settings. Having Turbo mode enabled by default would be helpful. And then allowing me to turn it off manually instead of the opposite. Also, it would be interesting to me to experiment with the ROM boot and maybe have some sort of minimal boot available to setup a CF disk directly on the unit since there is no floppy.

Also, one of the intended uses for this was to be able to set up DiskOnChip devices using an ISA card I have. But for that to work, I have to load XT-IDE before the DOC bios extension. Otherwise the DOC sees no internal drive and tries to become C itself conflicting with XT-IDE. My assumption is that this is because XT-IDE is at F0000 so it gets loaded after anything mapped lower than that. Not sure yet how I will overcome that.
 
Having Turbo mode enabled by default would be helpful. And then allowing me to turn it off manually instead of the opposite.
At least in the first version, turbo wasn't software controllable. It was controlled directly by the keyboard microcontroller.
Also, one of the intended uses for this was to be able to set up DiskOnChip devices using an ISA card I have. But for that to work, I have to load XT-IDE before the DOC bios extension. Otherwise the DOC sees no internal drive and tries to become C itself conflicting with XT-IDE. My assumption is that this is because XT-IDE is at F0000 so it gets loaded after anything mapped lower than that. Not sure yet how I will overcome that.
Well, you can move XT-IDE BIOS higher up in the ROM. Actually, it might not be even needed. The XT-IDE BIOS extension delays its initialization until INT 19h is called, precisely so that other BIOS extensions have a chance to initialize.
 
I have read others mention that it is not real VGA and is instead EGA. But I don't know where the source of that claim is coming from. Just seeing people making the claim.

I would guess the sources of that claim are on crack.

Windows 3.0 seems like a bad choice to rely on to determine if VGA "works" or not. (Even the standard 16 color VGA driver in Windows 3.x doesn't work out of the box with 8088s; I know a V20 supposedly fixes it, but... this is a weird machine, it's probably not surprising it would find something else to trip over.) Why not use something less ambitious like PC Paintbrush or a VGA game? (Or QBASIC, for that matter.)
 
Being a new moderated user here, i so far cannot send DMs, but if that idea is of any use for other projects - feel free to use it, thank you for reviewing!
Yes, I can ask. It appears that you've also updated the Makefile to work on Linux / UN*X. Do you know if it still would work on Windows? Otherwise, I'd suggest creating another Makefile for Linux specifically, or adding some logic to switch between the OSes.
 
Yes, I can ask. It appears that you've also updated the Makefile to work on Linux / UN*X. Do you know if it still would work on Windows? Otherwise, I'd suggest creating another Makefile for Linux specifically, or adding some logic to switch between the OSes.
Yes, i've made it more to my liking with less hardcoded values. I actually use WSL2/Debian for that on Win11 :). That change can be safely ignored or reverted back to hardcoded values.
 
At least in the first version, turbo wasn't software controllable. It was controlled directly by the keyboard microcontroller.

Well, you can move XT-IDE BIOS higher up in the ROM. Actually, it might not be even needed. The XT-IDE BIOS extension delays its initialization until INT 19h is called, precisely so that other BIOS extensions have a chance to initialize.
More reason to dump and reverse engineer the firmware in that keyboard micro.

Well, you can move XT-IDE BIOS higher up in the ROM. Actually, it might not be even needed. The XT-IDE BIOS extension delays its initialization until INT 19h is called, precisely so that other BIOS extensions have a chance to initialize.

Admittedly, I am not sure which way bios extensions are scanned, but I assumed that they were scanned from A0000 upward since VGA BIOS runs before the system BIOS. So putting the XT-IDE firmware up higher would do the opposite I think. The DiskOnChips have their own bios extension built in. If they do not detect another drive in the system, they will mount themselves as the first disk.

It appears when watching the boot sequence that the DOC BIOS runs first, doesn't see the XT-IDE drive yet and makes itself C. Then XT-IDE runs and also tries to make itself disk C and nothing boots at all. So it appears as if XT-IDE needs to run first.

I believe that the DOC bios can be disabled and then the DOC can be mounted manually with a special program. I just might need to do that.

I am using the Texelec ISA ROM board with the DOC chips. It works as expected on systems which have integrated IDE controllers. Not really an issue worth your time looking into as it is a pretty obscure use case and I will find a workaround.
 
I would guess the sources of that claim are on crack.

Windows 3.0 seems like a bad choice to rely on to determine if VGA "works" or not. (Even the standard 16 color VGA driver in Windows 3.x doesn't work out of the box with 8088s; I know a V20 supposedly fixes it, but... this is a weird machine, it's probably not surprising it would find something else to trip over.) Why not use something less ambitious like PC Paintbrush or a VGA game? (Or QBASIC, for that matter.)
100% agree. I am not sure where the source of the claim originated from. I have not stumbled on the origin.

Simon the Sorcerer requires a VGA card to run and it is running, so I do not have any doubts myself that VGA works correctly. The only drawback I have found is that when in VGA mode, a very tiny portion of the image is offscreen. I see this also if I switch DOS to 80x50 mode.
 
Simon the Sorcerer requires a VGA card to run and it is running, so I do not have any doubts myself that VGA works correctly. The only drawback I have found is that when in VGA mode, a very tiny portion of the image is offscreen. I see this also if I switch DOS to 80x50 mode.

I've heard the original has that same problem with screen centering. It looks like from the teardowns I've seen that it uses a common RTL LCD scaler chip to drive the panel (the same chip you'll find in those cheap little miniature VGA monitors, like the 8" one I could wang with my elbow if I really tried right now), it's a shame they didn't expose any control panel buttons for autoconfig or manual positioning. (Or contrast/brightness/etc.)
 
I've heard the original has that same problem with screen centering. It looks like from the teardowns I've seen that it uses a common RTL LCD scaler chip to drive the panel (the same chip you'll find in those cheap little miniature VGA monitors, like the 8" one I could wang with my elbow if I really tried right now), it's a shame they didn't expose any control panel buttons for autoconfig or manual positioning. (Or contrast/brightness/etc.)
It does, but I have not experienced that particular issue with the version 2. This is more like either the bezel is cutting off some of the LCD or somehow the image is scaled overall just a few pixels too much. The overscan happens on all sides of the image. With the old version, it would only be on the left hand side like a phase issue. The first full row of characters of a dos text screen would be outside of the viewing area.

In this case, it is so few pixels that it is noticeable, but not really affecting much.

Yeah, the LCD appears to be based on an RTD2662 controller.
 
Actually VGA has nothing to do with the System BIOS. It has its own VGA BIOS extension.
I looked at the binary that you've sent me. It is still based on my code.
Interestingly enough, they've added some code and messages back, e.g., CPU type detection, or perhaps just went back in their edits...

Cirrus Logic CL-GD5429 is an interesting choice. It requires unlatched LA17-LA19 addresses to work properly. That's not a problem if you build your own motherboard, but it won't work in 8-bit ISA slot exactly because unlatched addresses are missing there.
Also, the original Cirrus Logic BIOS used 80186+ instructions, so the chances are that the system will not work with 8088/80C88 CPUs, only with NEC V20.
Hello @sergey (and @n0p!) - I have the combo of a Book8088 V2 and the Cirrus "module".
What can I tell you.... the major chips on the module come straight from an ISA card - the VGA BIOS is clearly from a card and it has 1mb of VRAM(!)
What you mention about the latch mismatch makes sense according to the behaviour I am experiencing - I put it down to the LCD driver but hmm, did seem an odd choice.
So mine did some with a V20 (and when I asked for an 8087, I got sent an original 5mhz version - grumble). I got the CGA module initially and the VGA module as a swap-out. Mine is a GD5428 (rather than a 9 - probably nothing in it).
I've managed to obtain 16-colour EGA mode using the standard driver in Windows 3.0, and for PESCII Robots I've got 320x200 256-colour, but when I try to set VGA mode in Windows (or install the CL drivers) what I get is a blank screen - the LCD literally shuts off and requires a soft reset of the machine, not even an "unsupported" message on mine, no OSD. That being said the screen is brighter now, so either the resistor has been changed or is a different screen.
However I have the same problems in some DOS graphical resolutions, including trying to run PC Painbrush or the graphical mode in Lotus Symphony.... it's hardly flawless.
I also have a dead pixel now, and the seller has promised me a new screen so hopefully I can give some insight as to what is being used.
With the VGA card (more than with the CGA) I'm finding that the screen is "bumping" characters back into frame after a 1/2 second delay. Noticable while BIOS is initialising.
I should add I'm using nOp (Sehii's) fork of the BIOS v1.0.3
 
Last edited:
Wolf3D CGA dosen't know what to do with the graphics - the original version wont run, but the VGA version can't address the display properly - I get graphical corruption, and upon quitting I get garbage on the screen.
It's like the code for CGA would be great with EGA or VGA support added back in.
 
Admittedly, I am not sure which way bios extensions are scanned, but I assumed that they were scanned from A0000 upward since VGA BIOS runs before the system BIOS. So putting the XT-IDE firmware up higher would do the opposite I think. The DiskOnChips have their own bios extension built in. If they do not detect another drive in the system, they will mount themselves as the first disk.

It appears when watching the boot sequence that the DOC BIOS runs first, doesn't see the XT-IDE drive yet and makes itself C. Then XT-IDE runs and also tries to make itself disk C and nothing boots at all. So it appears as if XT-IDE needs to run first.

I believe that the DOC bios can be disabled and then the DOC can be mounted manually with a special program. I just might need to do that.

I am using the Texelec ISA ROM board with the DOC chips. It works as expected on systems which have integrated IDE controllers. Not really an issue worth your time looking into as it is a pretty obscure use case and I will find a workaround.
I am not familiar with Disk-on-Chip, perhaps it interacts somehow with XT-IDE BIOS, and breaks things...

As far as BIOS scan goes. 8088 BIOS scans 0xC0000 first, to see if there is VGA BIOS in there. If so, it will initialize it, so that display will work during the POST (e.g. memory test and diagnostic messages).
Later in the boot process it scans 0xC8000 to 0xF8000 and initializes the BIOS extensions in the order they were found.
 
@sergey:
I've implemented your hack to board, described here:
https://forum.vcfed.org/index.php?t...erial-cards-working-9600.1244414/post-1334871
and it works :)

As Book8088 refused to boot with disabled card and i wanted to make sure jumper relly works, i've added a simple CGA (and above) detection routine to BIOS
http://www.pennelynn.com/Documents/CUJ/HTML/90HTML/199001B5.HTM
for it to give "one long three short" beep code if video card not present.

Beeps if with jumper set to disconnected, so that hack definitely works :)
 
i've added a simple CGA (and above) detection routine to BIOS
http://www.pennelynn.com/Documents/CUJ/HTML/90HTML/199001B5.HTM
for it to give "one long three short" beep code if video card not present.

Beeps if with jumper set to disconnected, so that hack definitely works :)
Might be a good addition to the BIOS...
Generally I have a plan to improve diagnostic during the POST, as currently the BIOS pretty much assumes that things are working...
 
I though it might be a nice idea to put together a thread to collect information about the Book 8088.

I just received mine (Version 1) and I have a version 2 on the way with the parallel and serial port.

Here is a list of Fn+ commands (that I know about)
1 mute
2 sound on
3 sound on?
4 play +enter
5 dn +enter
6 turbo mode switch (no indication of mode?)
7 mode 80
8
9 HOME
10 END
11 PGUP
12 PGDN

The Fn+4 and Fn+5 are interesting because you can make play.bat or dn.bat files to launch applications. These must be stored in the CPLD as I am not finding references to it in the BIOS.

Sergey Kiselev compiled a bios that has the updated XT-IDE and proper attribution. This works so much better. You will need an eeprom programmer and W27C512 in order to update this. Well worth it.
https://github.com/skiselev/8088_bios

GloriousCow has found a hack to add DRAM refresh cycles back to the hardware which makes it far more accurate.
https://martypc.blogspot.com/2023/09/hacking-book8088-for-better-accuracy.html

Freddy V created an improved driver for the CH375 used for the USB port. https://www.vogonsdrivers.com/getfile.php?fileid=1991&menustate=0

Joshua Shaffer did some work on getting a USB mouse to work. https://github.com/joshuashaffer/book8088-ch375mouse-poc
I would love to see a driver for a USB to serial adapter for this. I will look into this. A USB gamepad would be a very lofty goal!

A 3.5 ohm resistor can be replaced on the LCD board with a 7 ohm to increase the brightness of the display. I have no details on this and have not done it myself yet.

I ran a keyboard scancode tool on the unit to see if the unused keys will actually generate codes and they all do. This means that we should be able to utilize the keys in our own apps.

On the board is a 10 pin header that could be connected to an external CGA monitor. The schematics show the pinout. I assume zero ohm 0603 resistors need to be installed. I do not own a CGA monitor, so I cannot experiment with this yet.

A useful tip: check out Adhesive bookmark tabs on Amazon. I am using them to attach to my CF card to make it easier to remove. Another option would be adhesive hang tags which would be a stronger adhesive and sturdier material.

Some ideas I have had:
Small ISA board that plugs directly into the expansion port and provides serial and parallel ports.
Adding EMS memory
Swapping the 128KB SRAM for a 256KB for 768KB to enable loading DOS high.

If you know of other information, mods, hacks, or ideas please reply and add it here.
If you have a list of must-have software to install on these, that would also be appreciated.
I've only just joined so apologies for my late reply.

I have a Book8088 v2, and can confirm there is an LED for 'turbo on' mode next to the battery indicators (finally these are labelled on the v2). I had no idea about Fn keys launching batch files - how interesting.

I can also confirm that I have FastLynx 3.3 (build 336 a cheeky 2012 update) working from a Windows 11 client. I installed the Prolific PL2303 drivers and manually set to COM1 in device manager, followed the instruction on the 'Book, and managed to upload the 'server stub'! The cable was really inexpensive USB-RS232, and is short, 0.5m long, by Dtech - apparently cable length affects things. You can also set COM speed in FastLynx, I am finding 58,400 baud to be ok (I think the chip does a bit of error correcting). Serwell still sell FastLynx as a download, I had read on other forums that it works where LapLink wont.... But it was still a nice surprise!
 
I would guess the sources of that claim are on crack.

Windows 3.0 seems like a bad choice to rely on to determine if VGA "works" or not. (Even the standard 16 color VGA driver in Windows 3.x doesn't work out of the box with 8088s; I know a V20 supposedly fixes it, but... this is a weird machine, it's probably not surprising it would find something else to trip over.) Why not use something less ambitious like PC Paintbrush or a VGA game? (Or QBASIC, for that matter.)
Works in PETSCII Robots (only instance of 256 colour mode I have found). PC Paintbrush 5 is complaining of 'Frieze' not initialising, and Lotus Symphony cant start graphics mode. Test Drive 3 works in whatever mode it uses.
 
That would be great!

I'm a bit confused - is using "beep" proc in bios.asm a good idea? I don't see it's used there.
Used this code for testing today, works as expected, will extend to EGA (don't have Monochrome or VGA adapters) and plan to test PEGA2A card (got it cheap, didn't test so far as RGBtoHDMI adapter still on the way)

Code:
%ifdef MACHINE_BOOK8088
    mov    bh,66h    ;test value
    mov    dx,3D4h
    mov    al,0Fh
    out    dx,al
    inc     dx    ;3D5h
    in    al,dx    ;get cursor pos
    mov    bl,al    ;save

    mov    al,bh    ;set cursor pos
    out    dx,al

    push    cx    ;wait a bit
    mov    cx,3
.wait:
    loop    .wait
    pop    cx

    in    al,dx    ;get cursor pos
    mov    ah,al   

    mov    al,bl   ;restore cursor pos
    out    dx,al

    cmp    ah,bh    ;compare test value to cursor pos
    jnz    .nope

    or    byte [equipment_list],equip_color_80 ; built-in CGA
    jmp    .exit_det
    
.nope:

;One long three short
    mov    bl,5
    call    beep
    mov    cx,6666            ; 0.1 second delay
    call    delay_15us
    mov    bl,2
    call    beep
    mov    cx,6666            ; 0.1 second delay
    call    delay_15us
    mov    bl,2
    call    beep
    mov    cx,6666            ; 0.1 second delay
    call    delay_15us
    mov    bl,2
    call    beep   

.exit_det:
%endif ; MACHINE_BOOK8088
;
;-------------------------------------------------------------------------
; look for video BIOS, initialize it if present
 
Works in PETSCII Robots (only instance of 256 colour mode I have found). PC Paintbrush 5 is complaining of 'Frieze' not initialising, and Lotus Symphony cant start graphics mode. Test Drive 3 works in whatever mode it uses.

Do you have the QBASIC interpreter that came with DOS 5 handy? Can you try just setting the standard graphics modes with that?

Here’s a list of all the standard IBM compatible graphics modes supported by QBasic:


a VGA card should support graphics modes 1, 2, 7, 8, 9, 11, 12, and 13. If any of these don’t work there’s something goofy going on.
 
@sergey
Added refactored (to llok like rest of code) CGA detection together with setting dummy int handler for headless mode.
Boots now at least to autoexec.bat command execution.
BIOS with unaltered version of INT 10h was stuck in headless mode (CGA disconnected) before boot if video bits in equipment list was 0, and at some point before autoexec.bat if set to equip_color_80 or equip_mono

A question - after adding jumper to disconnect CGA i sometimes receive error on boot when testing second 128K memory chip. Could that be long lines to jumper that cause the issue?
 
Last edited:
Do you have the QBASIC interpreter that came with DOS 5 handy? Can you try just setting the standard graphics modes with that?

Here’s a list of all the standard IBM compatible graphics modes supported by QBasic:


a VGA card should support graphics modes 1, 2, 7, 8, 9, 11, 12, and 13. If any of these don’t work there’s something goofy going on.
I'll try the QBasic route, but I'm quite sure there is something goofy going on - many have put it down to the small Realtek firmware in the LCD display.... with the book8088, I think we all expect things to be a bit goofed up (its hard to say that as a buyer).
 
Back
Top