Emulating the 8250 UART in software

Starting with build A775, the PC emulation software contains a fairly complete implementation of a virtual 8250 UART chip for RS-232 communication. It supports both the INT 14h interface and direct access to 0x3F8-0x3FF ports, which are translated, via the inter-processor call mechanism, to appropriate Commodore KERNAL calls and 6551 ACIA chip accesses. The implementation… Read More »

A peculiar case of IRQ1 and Microsoft QBASIC

Normally, newer DOS applications are actually easier to run on the board because they are compiled with standardized libraries that tend to do more things by the book instead of clever I/O trickery. But Microsoft QBASIC was different. It worked perfectly until I opened any of its menus, upon which it hung immediately. Debugging 8086… Read More »

That’s how it’s being done

This is how the PC compatibility library is being developed: If a PC application is found not to be working on the board, it needs a debugging session to find out what is happening. Normally I use the FreeDOS’s DEBUG command to find a place where the application hangs, and try to figure out what… Read More »

Delay calibration loops

When you try to make a computer PC compatible, you usually think about BIOS interrupts and hardware peripherals. Instead, you should be thinking about timer interrupts and delay calibration loops. Surprisingly many PC DOS applications run a small loop in the beginning of execution, trying to measure the amount of time it takes to execute… Read More »

No, it’s not a CGA video card

Commodore CBM-II computers have rather limited video capabilities – they can only output monochrome 80×25 text. The only PC video hardware that can be reasonably emulated with this is the text-only Monochrome Display Adapter. The MDA (and its descendant Hercules) is peculiar in that its video buffers are located in a different memory area than… Read More »

Emulating PC hardware in software

To achieve the goal of making the machine PC-compatible, it is necessary to pretend that it has a set of PC peripherals present, such as the 8253 PIT, 8250 UART, the 6845 CRTC from the MDA card, and so on. Unfortunately, the Commodore CBM-II has none of these. What is one supposed to do then?… Read More »