[Coco] Are MC68B09E's and HM63C09E's as well as various support chips still available?

John Kent jekent at optusnet.com.au
Sun May 27 02:52:27 EDT 2012


Hi Kip,

VHDL or verilog (as Gary Becker uses) is not all that different from 
conventional programming languages in many ways. Rather than being 
restricted to 8 bit, 16 bit or 32 bit characters or integers, you can 
specify the exact length of the variables or registers in terms of bits. 
Rather than being held in memory the registers are implemented in Flip 
Flops. i.e. they are implemented in discrete logic, and as such they can 
be loaded in parallel with other logic. A case/when statement is similar 
to a switch/case statement in C but you generate hardware such as a 
decoder chip in the simplest case, or a multiplexer on a register input.

Most of the work in my FPGA 6809 is in the state machine sequencer that 
controls the instruction cycle sequence. The instruction cycles executed 
will depend on the decoding of the instruction opcodes and post bytes. 
It does not require much in the way of complicated maths, just control 
of the data paths between the registers and memory. Once you understand 
the underlying principles it's more a matter of tedium working through 
it all. Most of the operations say for calculating indexing modes, are 
just simple additions of the registers.

I was wanting to keep the operation of the CPU as fast as possible, 
however some software relies on the specific instruction cycle time to 
operate correctly. It might be generating an audio tone using a software 
timing loop. Other software might have a software timing loop to measure 
the horizontal sync position or active display period so the software 
can refresh the display during the synch and retrace time windows.

I can output the address and data bus of the CPU to I/O pins. It is 
possible to implement a programmable wait state generator for a specific 
window in memory. I could even design programmable address decoding like 
is done in the 68HC11. The issue was more with the old Motorola 8 bit 
peripherals that needed a 1 or 2MHz E clock, in which case you have to 
maintain a symmetric duty cycle of the clock, and you have to 
synchronize the CPU to that slow E clock to access the peripherals 
correctly. i.e. you have to wait for the start of the cycle to perform 
the access, then insert wait states in the CPU to perform the access 
during say the high E clock, then release it and continue on at the full 
speed.  It's not impossible to do ... it just requires a bit of work to 
work out how to do it cleanly.

OK on using the PDP-8e. I do actually have an FPGA PDP-8 design that 
uses a computer display and numeric keypad section of a PS/2 keyboard 
for the console. It also has a serial port I think, so you could 
possibly hook it up to an ASR33 teleprinter. I remember using an ASR33 
teleprinter back in my undergraduate days at university when I first 
learned programming on a Cyber 72.  The FPGA PDP-8 could run Focal out 
of memory as I recall. I haven't played with it in quite a while. It was 
originally written for a Spartan 2 FPGA board which Xilinx no longer 
supports. I did port it to a XESS XSA-3S1000 FPGA board, and it could 
probably be ported to other board too without much difficulty.

John.

On 27/05/2012 11:58 AM, Computer Doc wrote:
> John, Your skills and talents are quite impressive! I really like what 
> you are saying about coding the 6309 instruction set. Implementing a 
> microprocessor instruction set is very fascinating to me. I wish I 
> knew how to learn it all, but since I don't know beans about FPGAs and 
> VHDL coding or simulating 8-bit microprocessors - yet, I was wondering 
> is it important to add idle cycles to slow down the implementation of 
> the 6809 mode and why make the cycle timing accurate when you can make 
> it better and faster? I'm not criticizing, just curious. Since the 
> more recent technology runs so much faster, I've been trying to figure 
> out how to get a faster CPU with the 6809 and 6309 instruction set so 
> I can utilize the faster memories, serial port chips, etc. I'd like to 
> somehow wire up a 25MHZ COCO3 with added features in hardware as 
> opposed to software as many of you have done all in one FPGA which is 
> really cool by the way. It's all as fascinating now as it was in the 
> beginning learning computers in the first place 35 years ago. My first 
> experience was programming in BASIC in high school on an ASR-33 
> Teletype with paper tape reader and punch communicating over a 300 
> baud acoustically coupled modem over a phone line to Clemson 
> University's PDP-8e Minicomputer! Those were the days when you could 
> watch your program print out letter-by-letter. Whew, that took a 
> loooong time! (intentionally misspelled) I thought I'd share a little 
> of my very beginnings in high school. Thank you for taking time out of 
> your busy schedule to share your computer engineering prowess. I love 
> all your posts. They are always informative. It's a real treat to be 
> able to communicate directly with people whose articles I've read over 
> the years and appreciated. Kip
http://www.johnkent.com.au
http://members.optusnet.com.au/jekent



More information about the Coco mailing list