How the OB8 Free-run mode works

Clive Jones CJones at sni.co.uk
Wed Feb 7 20:36:00 CET 1996


Morning Chaps

Juergen and myself were chatting in private mail about the OB8 and I   
thought this may be of interest to other AH'ers and DIY'ers (this is   
actually my first post to DIY although I've been subscribed for   
sometime).....

Juergen -I should elaborate on this a bit more for you so you get a full   
understanding. Don't remove the header plug with the power turned *on* -   
it will crash the bus (it won't do any harm - just make the OB8 make some   
strange noises (I'm guessing here)), you need to remove the plug *then*   
power up because the CPU needs to go through the "bootstrapping" process.   
Let me explain ;

Shortly after power is applied to the CPU is issues a "fixed" hardwired   
address onto the address bus, it's built into the CPU and *cannot* be   
changed. The hardware design engineer needs to ensure the address is   
decoded into the necessary signals to turn on the chip with the program   
in - usually the EPROM. I can't remember what this actual address is for   
the Z80 but for most 8 bit CPU's it's FFFE-FFFFh. These two locations   
most contain the *address* of the first location of the *main program*,   
the *data bus* is only 8 bits wide (1 byte) so it must perform this   
operation twice to get both the lower and upper address bytes  - these   
are then combined to form the actual address. e.g;

location FFFE = 80h(lo byte) and FFFF = C0h(hi byte), therefore main   
program address = C080h.

So the "bootstrap" process is actually two "fetch" instructions to obtain   
the program start address, when the CPU has these - it loads them into   
it's internal "program counter" and automatically begins to run the   
program from that address.
Now then, how does this fit it with the OB8 "free run" mode? Well, you   
remove the header plug and this isolates the *data bus* from the   
processor and brings into play a hardwired address (via pull-down   
resistors) of "zero" or 00h. Soooooo, when the bootstrap process happens   
with the plug removed the CPU gets two 00h's (returned via the data bus)   
and says "okay - I've got the start address of the main program it's   
0000h lets get the first *program instruction* from there" (of course   
processors can't really talk - it's just thinking this!). Now then kids -   
whats the first *instruction* the processor gets back - yes your right -   
it's 00h !! - the CPU is now interpreting this as an "intruction"   
(mnemonic) and the Z80 instruction for 00h is "NOP" (No OPeration). This   
instruction does nothing (hence name) except make the CPU *wait* for two   
clock cycles (it a time wasting operation commonly used in routines as   
time delays), the program counter then increments the address+1 and the   
whole thing then goes arround in a loop - receive a NOP then output the   
next highest address etc. until the address reaches max - 65536 or FFFFh   
(A0-A15 all active). I haven't looked at the schematics - but, this   
should only happen once *unless* the Oberheim engineers have hardwired a   
*reset* circuit back into the CPU (via the reset line) when the address   
is at max (maybe someone can check this?). Lesson over kids......

Have a nice day

Clive

//////////////////////
/<c.jones at sni.co.uk> / ...and on the 8th day
/01344 850213 Work   / God made Synthesizers
/01344 850209/291 Fax/ ...and God was called
/01628 602106 Home   / ' Tom Oberheim '
//////////////////////




More information about the Synth-diy mailing list