RetroBrew Computers Forum
Discussion forum for the RetroBrew Computers community.

Home » RBC Forums » General Discussion » Barebones 68008 computer (68K)
Barebones 68008 computer [message #10617] Sat, 17 February 2024 07:02 Go to next message
plasmo is currently offline  plasmo
Messages: 916
Registered: March 2017
Location: New Mexico, USA
Senior Member
Barebones 68008, BB68008, is a simple computer consisted of 68008 CPU, 128K/512K RAM, and 22V10 as boot ROM and glue logic. It is similar to barebones Z80 and 6502 in concept and prototyped using a BB6580 board.

Like barebones 6502 and Z80, BB68008 is bootstrapped over serial port every power cycle. The serial port is bit-bang 57600 N82. There is also a page flipflop that switches out ROM when location $40 is accessed. Most of 22V10 is devoted to bootstrap ROM for 68008. The bootstrap code is 48 bytes so which is near the limit of 22V10 sum-of-product matrix.

This is the serial bootstrap algorithm:
At power up, 22V10-based ROM provides the program for 68008 until location $40 is access which will switch out the ROM and replaced with RAM. While ROM is enabled, the RAM is enabled and writable so the role of ROM bootstrap is to decode incoming serial data and write to itself starting from location $0. When location $40 is written, the ROM is replaced with RAM but the bootstrap program remained the same. When 512 bytes of serial data are received, the program starts at location $40.

Schematic, 22V10 equations and software can be found in BB68008 homepage which is currently under construction.

SerRx    equ $fffffff4
page     equ $fffffffe
         org $0
;serial bootstrap with 22V10
;serial receive is hooked up to D[7]
;CPU clock is 8MHz
         dc.l $8000
         dc.l start
         org $14
start:           
         lea $0,a0                 ;start serial load from $0  
         move.w #$200,d3            ;write 512 bytes into RAM
setup:         
         moveq #7,d1               ;8 bits in serial receive          
startBit:         
         move.b SerRx,d2   
         bmi startBit
         movem d0-d7/a0-a3,(a7)     ;wait 1.5 bit time     
getSer:         
         asl SerRx                  ; shift into extend bit
         roxr.b #1,d2                 ; D2 holds the received value       
         movem d0-d7,(a7)           ;wait 1 bit time
         dbra d1,getSer
         move.b d2,(a0)+
         dbra d3,setup  

         bra.s bootend               ;prefetch this instruction
         nop
bootend: 
;this is location $40        
;loaded program resume execution here.
         end  0           

/forum/index.php?t=getfile&id=2993&private=0

[Updated on: Sat, 17 February 2024 07:03]

Report message to a moderator

Re: Barebones 68008 computer [message #10618 is a reply to message #10617] Sat, 17 February 2024 08:13 Go to previous messageGo to next message
norwestrzh is currently offline  norwestrzh
Messages: 196
Registered: November 2015
Senior Member
Neat! I have a few 68008 CPUs, so I might like to give it a try. A big plus is that it uses a 22V10. I can program them (I think). Can't program CPLDs. Is the design specific to the Atmel part, or can any 22V10 be used?

Roger
Re: Barebones 68008 computer [message #10619 is a reply to message #10618] Sat, 17 February 2024 08:22 Go to previous messageGo to next message
plasmo is currently offline  plasmo
Messages: 916
Registered: March 2017
Location: New Mexico, USA
Senior Member
I've programmed both GAL and ATF22V10 on my TL866II programmer. GAL22V10 should also work on this design. Timing is not critical so any speed 22V10 should be fine.
Bill
Re: Barebones 68008 computer [message #10620 is a reply to message #10619] Sun, 18 February 2024 10:31 Go to previous message
plasmo is currently offline  plasmo
Messages: 916
Registered: March 2017
Location: New Mexico, USA
Senior Member
This screen capture shows two programs running in BB68008. The first is a S-record file loader loaded by the 22V10-based ROM into memory. The S-record file loader, in turn, loads the "Hello World" program into $400 and run it.

Lesson learned with this exercise is 57600 baud serial is a tad too fast for 8MHz 68008. Two stop bits are needed to give it time to process the incoming data. Even with 2 stop bits, I still need to optimize the loader so it won't miss incoming data. 38400 or even 19200 baud may be a more suitable serial baud.
Bill
/forum/index.php?t=getfile&id=2994&private=0
Previous Topic: introducing duodyne retrocomputer
Next Topic: Barebone Z80/6502, Two+ processors in one pc board


Current Time: Tue Jul 15 13:29:20 PDT 2025

Total time taken to generate the page: 0.00876 seconds