• Please review our updated Terms and Rules here

Book 8088 discovery and modification thread

Main difference - i added floppy emulation (though very basic) via CH375 USB chip to my build of Sergey's BIOS, but at the cost of removing real FDC support.
Well, considering the Book8088 doesn't have a real floppy... I think that's an acceptable compromise :)
 
Well, considering the Book8088 doesn't have a real floppy... I think that's an acceptable compromise :)
And i really needed a bootable "floppy" there :) If i get Sergey's BIOS to work with MartyPC FDC, i will try to put back FDC support, as Sergey suggested.
--
Ok, back to keyboard:
As i figured out earlier, that kbd controller works fine with 3.3V supply. So i googled for a simple way to lower input voltage there - 3V3 Zener diode and 270Ohm resistor (dunno, even if that wrong - it works).
Worked, temp assembly is on photo.
Now it's safe to connect it's signal lines to Pico, and i immediately did that :)
Data (collected with Pico, connecting controller lines to GPIO pins):
Interrupt line is high on event for ~6130us.
First repeat delay ~620'000us
Next repeat delay ~61'550us
It keeps last pressed key state only, so if 1-2-3 pressed one after one, releasing 1,2 will result in setting third scancode after sending release, but if done backwards (release 3,2) - only releases are reported.
So idea now - put 8 keyboard lines to Pico, cut those together with IRQ line from "BK82C42", implement internal/external device control/switch in Pico and put 8 output lines + IRQ from Pico to "XT-IO" and 8259A.
Waveshare Zero is perfect for the task, it can be easily put inside and has just enough lines.
Coding is not the problem - problem is soldering to those tiny lines.
Can anyone suggest some working method or maybe a correct cable? Everything i tried is too thick.
--
Regarding Turbo - if line is high, turbo is off. So isolating pin 61 will put the Book in always turbo mode, but without any led indication.
 

Attachments

  • photo_2023-11-08_19-03-12.jpg
    photo_2023-11-08_19-03-12.jpg
    299.4 KB · Views: 40
  • photo_2023-11-08_19-03-08.jpg
    photo_2023-11-08_19-03-08.jpg
    189.7 KB · Views: 38
And i really needed a bootable "floppy" there :) If i get Sergey's BIOS to work with MartyPC FDC, i will try to put back FDC support, as Sergey suggested.
I have no idea what MartyPC is, that said, why not just have your change just as a configurable option as well? I myself like the idea of being able to use the CH375 storage as a 'floppy' (a gotek would be even better, but yeah, that's not even remotely possible), since I don't intend to add extraneous hw to this thing except for testing.
 
I actually use XTIDE BIOS and DiskOnChips in several machines. A few things to note. The DOC can be configured via the cmd line tools to be first or last. Obvs what address it lives at is configured by the card it lives on (or in the case of some of my boards, the rom socket its sitting in). The only machine I've had 0 success with getting a DOC to work on is my 5150 iirc. The 5160 and other 8088 boxes were fine. You have to make sure the 'order' is correct (for the ones that do work). I tend to have DOCs at 0xC800 (if there's no MFM controller) or if there is, 0xD000. The XTIDE sits at 0xD800 if my memory serves (from how i configured my ISA/DOC cards. The DOC has to initialize first or it won't work. When I try to use one on the 5150, it hangs during the DOC BIOS extensions initialization (but ONLY on the 5150)..
If the DOC is using port I/O it might be using an address within the motherboard reserved range. This is the reason why regular 16-bit IDE controllers can't be used on the IBM PC 5150 - port 1F0h is within that range. If you can change the address to something higher it might work.
 
If the DOC is using port I/O it might be using an address within the motherboard reserved range. This is the reason why regular 16-bit IDE controllers can't be used on the IBM PC 5150 - port 1F0h is within that range. If you can change the address to something higher it might work.
My understanding (which is not 100%) is that the DOC chip works like EMS memory. There are no IOW or IOR lines to it, just the mem lines. I am currently using it in the ISA ROM card from Texelec.

My understanding is that there are just two modes. Either forced first drive (C) or the mode where it checks for an existing drive in the system and then sets itself for the last drive. I have it configured for this second mode. What I suspect is happening in this particular case is that the DOC chip is not seeing that XTIDE is there and is installing itself as drive C. Then XT-IDE initializes and tries to set itself as drive C. My thought is that it is a combo of XT-IDE being in the BIOS range at F0000 and the delay in the XT-IDE bios.
I will give it another try. The other poster mentioned having his XT-IDE at a higher address than the DOC board, so it should work. Maybe I need to completely wipe out the IPL area first. As I understand it you only assertively set the force first mode. To set the other mode, you just format or update without the /FIRST switch.

From the Software manual:
Note: By default, DiskOnChip is shipped from the factory configured as the last drive in the system.
When other hard drives are installed, DiskOnChip will be installed as the last drive, However,
if no hard drives are installed then DiskOnChip is still installed as drive [C:]. When configured
as the first drive, (using the /FIRST option), DiskOnChip is always installed as drive [C:].
 
That kbd controller - i've cut BATIN line and that didn't disable it fully either, just led to constant keypress simulation :)
I guess if where was 35+ GPIO pins RP2040 device i would just replace that small controller chip. Working project for Pico with HID keyboard support, translating HID codes to XT scancodes is ready and tested.
That is an interesting effect. That is an input to one of the ADCs. It is used to measure the battery voltage. I am surprised it caused constant key presses.

Based on the datasheet for the part I think it is, pin 14 is the RST line, but it can also be configured for GPIO. It is connected to the Turbo key. Perhaps holding to ground on power up would keep the chip in reset before the code can set that pin to another function?

Pulling down pin 8, unused, would set the Slave Select pin of the SPI port used for programming. This might put it in programming mode and prevent it from starting code.
 
And i really needed a bootable "floppy" there :) If i get Sergey's BIOS to work with MartyPC FDC, i will try to put back FDC support, as Sergey suggested.
--
Ok, back to keyboard:
As i figured out earlier, that kbd controller works fine with 3.3V supply. So i googled for a simple way to lower input voltage there - 3V3 Zener diode and 270Ohm resistor (dunno, even if that wrong - it works).
Worked, temp assembly is on photo.
Now it's safe to connect it's signal lines to Pico, and i immediately did that :)
Data (collected with Pico, connecting controller lines to GPIO pins):
Interrupt line is high on event for ~6130us.
First repeat delay ~620'000us
Next repeat delay ~61'550us
It keeps last pressed key state only, so if 1-2-3 pressed one after one, releasing 1,2 will result in setting third scancode after sending release, but if done backwards (release 3,2) - only releases are reported.
So idea now - put 8 keyboard lines to Pico, cut those together with IRQ line from "BK82C42", implement internal/external device control/switch in Pico and put 8 output lines + IRQ from Pico to "XT-IO" and 8259A.
Waveshare Zero is perfect for the task, it can be easily put inside and has just enough lines.
Coding is not the problem - problem is soldering to those tiny lines.
Can anyone suggest some working method or maybe a correct cable? Everything i tried is too thick.
--
Regarding Turbo - if line is high, turbo is off. So isolating pin 61 will put the Book in always turbo mode, but without any led indication.
I really don't know how it would be implemented, but from a user perspective, if "boot from image" was a "hotkey" option added to the XTIDE ribbon, I think that would be a great solution - or vice versa "boot FDD" if that would cause a long pause if FDC not present. Also n0p you should highlight your big plus of it selecting V20 XTIDE BIOS if present.
 
I am patiently waiting on an SDLPT adapter, I don't know if its ever going to turn up.... made in UK but waiting 2 weeks now? I also wonder now if THAT could be made bootable, like the CH375. Its reliant on a very small driver similarly.
 
My understanding (which is not 100%) is that the DOC chip works like EMS memory. There are no IOW or IOR lines to it, just the mem lines. I am currently using it in the ISA ROM card from Texelec.

My understanding is that there are just two modes. Either forced first drive (C) or the mode where it checks for an existing drive in the system and then sets itself for the last drive. I have it configured for this second mode. What I suspect is happening in this particular case is that the DOC chip is not seeing that XTIDE is there and is installing itself as drive C. Then XT-IDE initializes and tries to set itself as drive C. My thought is that it is a combo of XT-IDE being in the BIOS range at F0000 and the delay in the XT-IDE bios.
I will give it another try. The other poster mentioned having his XT-IDE at a higher address than the DOC board, so it should work. Maybe I need to completely wipe out the IPL area first. As I understand it you only assertively set the force first mode. To set the other mode, you just format or update without the /FIRST switch.

From the Software manual:
The DOC is accessed like an eeprom/eprom (hence why it needs 'drivers' to see it that it loads from its "rom" first). Like I said, it works in literally every other 8088 machine I have except the 5150 (5160 works fine, tandy, generics, NuXT).. there's something specific about how the 5150 does things. I do have the XTIDE bios living in the 'extra' socket on my 5150 though via an adapter, saves from wasting one of my combo rom/DOC cards I made (or a doublerom card). Once I finish flashing my customized XTIDE bios w/ n0ps bios to my book8088, I can try testing one of my DOCs to see how it behaves with this. Also.. I never set /FIRST.. I use the XTIDE menu to control whether i boot from the DOC or my (usually) MFM drive first.. yes, i use the menu, i don't like the key shortcuts.

I am patiently waiting on an SDLPT adapter, I don't know if its ever going to turn up.... made in UK but waiting 2 weeks now? I also wonder now if THAT could be made bootable, like the CH375. Its reliant on a very small driver similarly.
I made one of those sort of things ages ago for my T1000SX.. it's slow as sin, but worked in a pinch. wasn't bootable though.

---

@n0p I pulled your code down and put my own xtide compiles in, but the makefile doesn't put both xtides at the beginning of the rom like the binaries you furnish... what's missing? Just concatenation? (also, stupid github, since your fork is a fork, i can't fork it myself for safe keeping.. lol)


Update: yeah.. guess i get to go back to the original bios... weird beep pattern, then the 'floppy seek' sound... no video signal.. (Version 2 w/ VGA)
 
Last edited:
@Retroplayer: There's 3.3V on pin 8 of that chip (multimeter reading). Should i use a resistor when connecting it to ground? Thanks for the docs!
Disabling the chip instead of cutting traces would enormously simplify the solution.
--
@sorphin: I could surely mess up in video card detection routine. You can use 1.0.3 release if you wish. Look at Makefile's section for bios-book8088-xtide.rom for bios assembly. Basically it's concat. For Book config look at the config.inc - all changes are optional, just comment unneeded (need to change to "%if" in code some day, for videocard - remove "jnz .nocga" from bios.asm)
--
@Betamax80: XT-IDE: Yes, i just wanted to simplify CPU change, so putting two XT-IDE BIOSes inside really helps. LPTSD: i think that SD2LPT device could work as bootable and supported from BIOS, but i don't see source for it's drivers.
As for Gotek-like USB floppy - as we discussed before, i still think, though it's doable, it won't be handy w/o some kind of hardware buttons for it. Also, it requres writing a tool for it, debugging, testing and QA :) Personally, i needed to "change" floppy only a couple of times and removing drive, writing new image and reinserting worked - as long as software expects it. All the source for CH375 is on github, it's commented, and if somebody would need to know something about it - i could help while the memory is fresh. Right now i'm feeling locked to connecting a keyboard, so it's either keyboard works, or my Book dies from my experiments :)
Making mouse to work via USB port on Book would be a much more interesting task for me, i just need to know how to correctly wire it's int pin (if that even possible) to IRQ3 or IRQ4.
 
@sorphin: I could surely mess up in video card detection routine. You can use 1.0.3 release if you wish. Look at Makefile's section for bios-book8088-xtide.rom for bios assembly. Basically it's concat. For Book config look at the config.inc - all changes are optional, just comment unneeded (need to change to "%if" in code some day, for videocard - remove "jnz .nocga" from bios.asm)
@n0p Ah, in one of the nested makefiles.. that'd be why... except you don't combine the 2 xtide files into the 1 bios in it, but i got it figured out. i compile my own xtide (i use the menu and various other settings, so the release wouldn't have let me use it). Anyway, removed (commented out) the
Code:
jnz .nocga
and we have video. Whew.
 
Last edited:
@n0p I tried the 'virtual floppy' as it were.. I took and used a real floppy image (that also works/boots on my goteks), simple DOS 6.22 image.. 1.44Meg... BIOS sees the usb stick, xtide sees it, gives me the option, Select.. noboot.. and jumps to C which of course boots, then the driver loads the image as D, and i can peruse it.. so something is apparently amiss.
 
@Retroplayer: There's 3.3V on pin 8 of that chip (multimeter reading). Should i use a resistor when connecting it to ground? Thanks for the docs!
Disabling the chip instead of cutting traces would enormously simplify the solution.
Definitely use a resistor if you are going to try it. Reading a bit further into the datasheet, it states this is only an output, so it may do nothing. I am not seeing an easy way to hold the chip in reset without the reset pin being enabled in the fuses.

It is based on an 8051, so this means that there is a serial bootloader built in. You may be able to re-enable the reset pin with the programming tools and then lift up pin 14 and pull to ground. If you go through that trouble, I would also try to download the existing firmware if possible.

Honestly, it might be easier to simply desolder the chip if you have the tools to remove it and re-install it. I could not find any direct way to halt the processor in the datasheet. Keep in mind also that I am assuming this is the right microcontroller. The pins seem to match up perfectly and it is a common Chinese brand micro.
 
Turns out (according to Pengain on X) that originally VGA option was tested with a TVGA9000i. I think there is some retro-modern solution out there using that as the graphics core, so the GD5428 is being used on all VGA modules now to avoid copyright.... I dont think that it was tested for compatibility before that decision was made though :(
 
Turns out (according to Pengain on X) that originally VGA option was tested with a TVGA9000i. I think there is some retro-modern solution out there using that as the graphics core, so the GD5428 is being used on all VGA modules now to avoid copyright.... I dont think that it was tested for compatibility before that decision was made though :(

Out of curiosity, can anyone who has Book8088 with VGA, dump the VGA BIOS extension, normally located at 0xC0000-0xC8000?
I personally doubt that they wrote their own VGA BIOS, so they use either / or:
- Open source VGA BIOS, e.g., one from QEMU... AFAIK this is for "emulator" only, and might not be usable on a real hardware. Also it is written in C language, so it might be slower than assembly-only implementation
- The original Cirrus Logic VGA BIOS. In contrast with Trident VGA that shows a splash screen with a copyright at the initialization for a relatively long period of time, Cirrus Logic prints it pretty quickly, and if the screen is cleared right away, the copyright notice would be difficult to see

Actually, more likely reason for using CL-GD542x might be availability of the ICs. My ISA SVGA card project and NuXT PC basically killed the supply of TVGA9000i ICs, or at least made the prices for it go up significantly. Sorry guys... ;)
 
Out of curiosity, can anyone who has Book8088 with VGA, dump the VGA BIOS extension, normally located at 0xC0000-0xC8000?
I personally doubt that they wrote their own VGA BIOS, so they use either / or:
- Open source VGA BIOS, e.g., one from QEMU... AFAIK this is for "emulator" only, and might not be usable on a real hardware. Also it is written in C language, so it might be slower than assembly-only implementation
- The original Cirrus Logic VGA BIOS. In contrast with Trident VGA that shows a splash screen with a copyright at the initialization for a relatively long period of time, Cirrus Logic prints it pretty quickly, and if the screen is cleared right away, the copyright notice would be difficult to see

Actually, more likely reason for using CL-GD542x might be availability of the ICs. My ISA SVGA card project and NuXT PC basically killed the supply of TVGA9000i ICs, or at least made the prices for it go up significantly. Sorry guys... ;)
Honestly Sergey it looks as though he / they are taking all of the chips straight from an ISA card (core, memory memory, BIOS ROM) and soldering them onto a module. It has the Quadtel / Cirrus copyrights on the BIOS chip.
I am not seeing a "flag" banner on screen (I suspect its out of range of the LCD!) but I hope thats helpful. PC Check detects 1024kb of video memory which is just insane for this application.
Also I've read elsewhere that these LCD panels are TTL type designed for industrial equipment - does that help explain the odd resolution challenges?
I'll check but don't think my VGA BIOS is socketed. Would I be able to use a rom dump utility to get this for you?
 
Actually, more likely reason for using CL-GD542x might be availability of the ICs. My ISA SVGA card project and NuXT PC basically killed the supply of TVGA9000i ICs, or at least made the prices for it go up significantly. Sorry guys... ;)
I did have a hard time getting the TVGA chip for my 2 NuXT boards I built. Thanks a lot Sergey. lol..

I could dump mine too if it's doable without desoldering (well, I _could_ desolder it, but that's a last resort..) I'm sure we could do it with 'debug' iirc.

(for those who haven't looked at/seen the VGA card in the V2.. here's straight from the horses mouth) (and this is the card that is in my V2 inplace of the CGA card)
 

Attachments

  • Book8088VGACard.png
    Book8088VGACard.png
    265.5 KB · Views: 20
Honestly Sergey it looks as though he / they are taking all of the chips straight from an ISA card (core, memory memory, BIOS ROM) and soldering them onto a module. It has the Quadtel / Cirrus copyrights on the BIOS chip.
I am not seeing a "flag" banner on screen (I suspect its out of range of the LCD!) but I hope thats helpful. PC Check detects 1024kb of video memory which is just insane for this application.
Also I've read elsewhere that these LCD panels are TTL type designed for industrial equipment - does that help explain the odd resolution challenges?
I'll check but don't think my VGA BIOS is socketed. Would I be able to use a rom dump utility to get this for you?
If it says "Quadtel", they are using Quadtel BIOS. If they have a stock of original Quadtel BIOS ROMs, that's probably OK from legal perspective, as someone already paid for the code to be flashed in these ICs, unless the licensing model was something like X dollars for each unit sold.

You can use simple DOS DEBUG command to dump the VGA BIOS. Something like that (skip comments in the parenthesis):

-M C000:0 8000 0100 (copy 32 KiB from VGA BIOS ROM to current CS segment)
-N VGA.BIN (set the output file name)
-R BX (BX:CX is the number of bytes to write, set BX - higher 16-bit to 0)
BX 0000
:0000
-R CX (set CX - lower 16-bit to 32 KiB)
CX 0000
:8000
-W (write to the file)
-Q (exit to DOS)

Copy VGA.BIN to your computer with an Internet connection... might be the most difficult part
 
Ah Sergey, I have managed to get a USB > RS232 cable working with FastLynx 3.3 - I don't know how, the program is magic!
The trick is to get a short cable length (mine is 1.0m) and make sure its a genuine Prolific 2303 chip.
Well worth paying for the licensed version download from https://sewelldirect.com/products/fastlynx-3-3-software-only-electronic-download
I honestly thought it was unicorn talk that FastLynx would work where Laplink wont... but it works!
I really need to stump up for WinImage too.
 
Back
Top