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