<< BACK | NEXT >>

Acorn BBC Micro model B (a fixer upper...)

The second one BBC is, sadly, faulty (I did buy it as non-working so not great surprise :)). It has the same basic statistics for CPU, RAM, ROM, I/O as my first BBC B, but this one has an earlier issue 3 motherboard.
It doesn't currently have any paged ROMs in it (I've removed Basic), but does still have the OS ROM chip. Unlike the later B+ and Master series machines, the Model B's do not have the OS and Basic in the same ROM.

Fault-wise, the unit turns on but gives a single, continual tone instead of the short two beeps that you'd normally expect. I've done a little research and obtained a service manual from RetroComputers. So far I've done the following:
- Checked all three +5V lines and the -5V line from the PSU. All are fine.
- Reseated all ICs (chips), lightly cleaning the legs on each one with sandpaper, also checked for physical damage/burn marks
- Tested the keyboard on my working model B (including the ribbon cable). Works fine. Also tried known good keyboard.
- Replaced both 6522 VIAs with known working ones and also tested the originals in my working model B (they work).
- Interestingly, moving the CPU to my working Beeb causes that machine to exhibit the single tone issue. So... faulty CPU? Weeeell I then moved the working CPU to this machine and it still failed to complete startup (in the same way). This indicates possible multiple faults. Bugger.

My next move is to start looking at the back of the board for bad joints and also the rather larger task of checking the various clocks and signals on the board using an oscilloscope.

I'll update this section as things progress.

Update [27th April 2014]

Have tried a known-good OS ROM and a known-good BASIC ROM

Have tried a known-good IC14

Tried a Synertek SY6502 which is pin compatible with the Rockwell 6502 and it also gives the same problem in this machine.

So: probable fault with the R6502 processor. However, there's still a problem as when fitted with a working CPU the system still gives the original fault

On the SY6502:
R/W line (pin 34) wave form looks ok
/RESET (pin 40) is HIGH (ok)
CLK OUT 1 & 2 (pins 3 & 39) wave forms look fine
/IRQ (pin 4) is HIGH (ok)
/NMI is continuously held LOW (not ok!)
The address lines seem ok, although A0 & 1 seem to be jittery with non-TTL levels and data lines are all over the place: again, random levels. I was under the impression that the only thing which uses the NMI is the disc system (DFS/ADFS)? This isn't fitted with one... IC 27 which takes inputs from IC78 (missing as it's part of the DFS chipset) and outputs to the NMI is fitted. Will look at that next.

TBC!

 

Update [3rd March 2014] - What is NMI and what does it do?

NMI stands for Non-Maskable Interrupt and is a hardware type of interruption system used by computers to 'interrupt' what the computer is doing. An interrupt is a signal to the processor that it (the processor) needs to immediately pause it's work and service either a small bit of code for a program or an attached device. Interrupt checking can be disabled by software temporarily, generally by the MOS (machine operating system) when it's doing something important..

A Non-Mastakable Interrupt is a type of hardware interrupt which cannot (and should not) be disabled by software (even the MOS). Such interrupts are only generally used by devices that absolutely must have the processors attention and should not be ignored. Most devices use standard (non-NMI) interrupts (such as the keyboard, printers, etc) on the BBC Micro and the only devices which make use of NMI are the DFS (disc filing system) and Econet (an early form of token ring networking).

The way devices tell the processor that they need its attention is to use the /INT pin or the /NMI pin (depending on the type of interrupt) on the processor and set it to logic 0 (effectively 0 volts) instead of the logic 1 (+5 volts) that it normally is. When it's done, the device then releases the /NMI pin back to logic 1 (+5 volts) and the processor carries on doing it's normal tasks (such as running user programs).

So... you see the problem? The /NMI pin was constantly being held low to logic 0 (0 volts). This made the processor forever think that an attached device needed it's attention and to do nothing else but service that device and as it never went to logic 1 (+5 volts) then normal operation never resumed.

Given that we know that only the DFS and the Econet use NMI and that this BBC Micro doesn't have Econet fitted, we're left with just the DFS. The DFS paged-rom and chipset are not fitted on this computer and the only device which is present is the NMI circuitry which comprises of IC27 (a NAND gate chip) and jump S9. And sure enough jumper S9 is has been cut. The good folks at the stardot forums advise that it needs to be fitted if the DFS is not present and you can see why going by the circuit diagram:

ModelB_NMIdiagram

IC27 is responsible for driving /NMI pin on the processor either high (+5 volts, logic 1) or low (0 volts, logic 0). It depends on two inputs and changes if they change combination. Here's the truth table:

Input 1 Input 2 Output
0
0
1
1
0
1
0
1
1
1
1
0

As you can see the only time the /NMI line will go low (logic 0) is if both inputs are high (logic 1).

One input (Input 1) is connected to the +5 volt rail and so will always be logic 1. The other (Input 2) is connected to both IC78 and jumper S9 and one of them controls the input. The reason for this is the inputs to IC27 *must* be connected to something and if DFS is not fitted IC78 is also not present and so the input would be left floating and give random results, sometimes being logic 1 and sometimes logic 0. Jumper S9 is used to short the input to the 0 volt rail and thus force logic 0 if IC78/DFS is missing.

The cause of NMI being low all the time was the jumper S9 was not fitted, but nor was IC78 fitted... so input 2 was left floating. To resolve the problem all I needed to do is either solder on a link or add a jumper block (two pins and a jumper to link them).
Here's a picture of S9 not fitted and the one after I fitted a jumper block:

ModelB_closed ModelB_closed

The upside: This has worked and now /NMI is held high (logic 1) meaning the processor can get on with normal tasks.
The downside: I still have the original symptoms of a single continuous beep and no display.

I've tested the CPU and found that D0-7 and A0 & 1 give none TTL rubbish (A2-15 seem to have valid TTL signals).
This points seems to point to a faulty IC on the board, which is not great news and as I've already removed all non-essential socketed ICs. This leaves the soldered in ones and unfortunately I don't have a de-solder gun/station to remove them. I've tried one by and using a solder sicker & solder braid, but I cannot completely get rid of the solder (even by adding extra and removing it). Argh.

TBC...

 

<< BACK | NEXT >>



Site Map | CSS Hover Menus by Css3Menu.com