• Please review our updated Terms and Rules here

8088 in minimum mode without 8259 interrupt controller

Ruud

Veteran Member
Joined
Nov 30, 2009
Messages
1,397
Location
Heerlen, NL
I have created my own little very minimal 8088 system, actually with a V20, and thus without a 8259 interrupt controller. I have to write my own BIOS for it and I'm used to write ones for PC/XTs, thus systems with a 8259. You program the 8259 and the combination of CPU and 8259 take care of executing the right code for the triggered interrupt. But what vector is used when no 8259 is present?
I checked the datasheets and they didn't provide me with a clear answer. I managed to lay my hands on the ROM of the MPF-I/88, also a minimal 8088 system (which triggered me to design this one). I disassembled it as good as possible and the only interrupt (except NMI) that is initialized is INT 0FFh. According the datasheet at a certain point the Interrupt Vector Type is read. I can imagine that because there is nothing triggered to output data at that point, the CPU reads an empty data bus, most probably 0FFh. "Most probably" and not for sure.
So who can shed some light on this point?

Thank you very much in advance!
 
Correct.

One the second /INTA pulse, an external byte value should be presented to the CPU which defines the interrupt type number from $00 to $FF. This is internally multiplied by 4 and used to access the CS:IP for the interrupt handler.

Either a simple octal buffer can be used to supply a fixed or variable vector (enabled by /INTA) or a set of pull-up resistors provided on the data bus to 'force' an interrupt type of $FF.

Leaving the data bus floating will cause random problems :-(!

Note that on the MPF-I/88 schematics there is RA2 (8 x 10k pull-up resistors) on the data bus (see the ROM/RAM schematic).

Dave
 
Last edited:
Your better off using a 80188 or 80186, if your not using a interrupt controller. They are much better for small projects that want to use 8088/8086 instruction sets. It comes in a CMOS version as well.
Dwight
 
If using NMI you may run into issues with critical sections of code accessing the same data from both the none and interrupt code. Just a point to watch out for. It is clearly application code dependent though.

With the maskable interrupt, you can protect against this by judicious use of the CLI and STI instructions within the none interrupt code.

Dave
 
Or initialize the entire IRQ vector table with the same vector so it doesn't matter what value is read from the data bus. Probably best to add the pull-ups, though.

Edit: I think this would make differentiating between hardware and software interrupts a little messy.
 
Last edited:
If using NMI you may run into issues with critical sections of code accessing the same data from both the none and interrupt code. Just a point to watch out for. It is clearly application code dependent though.

If you don't want to run into the NMI issue, it's going to take some logic either way. You can implement a gate and latch to inhibit NMI via an I/O or memory address. Otherwise, you need to note that INTR is a "level" signal and must be asserted during the entire time until INTA. (i.e. not edge-sensitive).
 
Yep, a maskable Non Maskable Interrupt :)!

We have one of those on a communications card I am remanufacturing for work. It handles such things as a MULTIBUS BUS TIMEOUT, a WATCHDOG failure and I am sure there is something else tied in as well. We use one bit of an octal latch to enable the NMI after the firmware has started up.

Dave
 
Hallo Dave,

Either a simple octal buffer can be used to supply a fixed or variable vector (enabled by /INTA) or a set of pull-up resistors....
Note that on the MPF-I/88 schematics there is RA2 (8 x 10k pull-up resistors) on the data bus (see the ROM/RAM schematic).
Bummer, overlooked that one. But shouldn't be that difficult to add one to the 245 handling the data. In the worst case I piggyback a 541 on top of the 245 and enable it with this /INTA signal. Pull its inputs High and the V20 will read 0FFH.

Many thanks for pointing this to me!
 
Last edited:
Your better off using a 80188 or 80186, if your not using a interrupt controller. They are much better for small projects that want to use 8088/8086 instruction sets. It comes in a CMOS version as well.
Nope, I want to be able to run 8080 code as well, therefore the V20.
 
Or you can simply use NMI if your interrupts aren't nested.
First: NMI has been connected to the IOCHK pin of the ISA slot, just like with the PC. And unfortunately the interrupts will be nested: all IRQ inputs of the ISA slot are ORred with each other and the result ends up in the INTR input of the V20.
 
>>> Many thanks for pointing this to me!

No problem - thanks for your excellent website and all of the excellent projects/information you provide.

ORing the signals together is not the same as nesting the interrupts (as far as the 8259 PIC is concerned). However, the point is probably largely irrelevant at this stage (as you don't have an 8259 PIC).

Dave
 
Nope, I want to be able to run 8080 code as well, therefore the V20.
How about the NEC V40?

https://www.cpu-world.com/CPUs/V40/index.html

CPU-World said:
NEC V40 is a 16-bit embedded microprocessor with 8-bit external data bus. The processor is compatible with NEC V20 CPU, and includes all of the V20's features: 8080 emulation, new instructions, low-power consumption, standby mode, and others. In addition to that it integrates many peripherals on the chip - clock generator, timers/counters, bus interface and bus arbitration units, asynchronous serial I/O channel, wait-state generator, DRAM refresh control and 8-input interrupt control unit. Although the V40 has the same new instructions that are present in Intel 80188 microprocessor, and has similar set of integrated peripherals, it is not pin-compatible with the 80188 processor.
 
How about the NEC V40?

Digging around the usual sources a V40 actually looks like a heck of a deal. Looks like it's pretty easy to get them for $4 or so and you're essentially getting a V-20 CPU, clock generator, DMA controller, PIC, PIT, and a few other goodies all bundled into a 68 pin PLCC for that price. Still needs external data/address latches but that's pretty much it.
 
The V40 is a great CPU; the internal peripherals pretty closely track standard Intel support ICs--and it does do 8080 emulation like a V20. It is, however, a 68 pin PLCC, which may or may not be of concern. It found its way into a lot of embedded applications. I have a FAX "capture" board here that records incoming FAXes to a 3.5" HD. It's got 256KB of ROM and 256KB of DRAM, clock, FDC, parallel interface and a serial port for debugging. It's about the footprint of a 5.25" floppy drive. I've run CP/M-86 on it; if I wanted to code up a BIOS, I'm sure that it would boot MS-DOS.
 
The V40 is a great CPU; the internal peripherals pretty closely track standard Intel support ICs--and it does do 8080 emulation like a V20. It is, however, a 68 pin PLCC, which may or may not be of concern. It found its way into a lot of embedded applications. I have a FAX "capture" board here that records incoming FAXes to a 3.5" HD. It's got 256KB of ROM and 256KB of DRAM, clock, FDC, parallel interface and a serial port for debugging. It's about the footprint of a 5.25" floppy drive. I've run CP/M-86 on it; if I wanted to code up a BIOS, I'm sure that it would boot MS-DOS.

Nothing to do with this thread but I have to ask: Where do you keep all of your stuff in your house and how do you find anything?
 
It is, however, a 68 pin PLCC, which may or may not be of concern.

Unless you need something that works on a breadboard I personally wouldn't consider that much of a problem. ;)

(I used a 44 pin PLCC on my last project and while it was kind of entertaining to route the connectors for the socket it was mostly a consequence of my stuffing it onto a board that was highly space-constrained and left little room around the chip for maneuvering the traces to come in at optimal angles. I did all kinds of atrocious routing on that board to make too much through-hole stuff fit into a postcard, it's amazing it works.)
 
Space is not a problem; but as I age, I have trouble remembering where I left my glasses... ;)

I more or solved that problem as I have a pair of 'readers' everywhere that I sit in the house. The good ones are on top of a pile of keys, wallet, ball cap, etc., in a old nut bowl.
 
I've got a bowl of specs sitting on top of my PC, just to my left. It usually turns out that it doesn't have the exact ones that I'm looking for. Ever since cataract surgery, close work has been a challenge, even with OptiVisors and various other aids. But I manage. Lately, the issue has been putting something down and then not remembering where I put it only minutes later.

Isn't old age fun?
 
Back
Top