Difference between revisions of "SIMPLE-6802"

From Land Boards Wiki
Jump to navigation Jump to search
 
(93 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[FILE:SIMPLE-6802_REV1_FRONT_(BLK).png]]
+
[[File:tindie-mediums.png|link=https://www.tindie.com/products/34962/]]
 +
 
 +
[[FILE:SIMPLE-6802_P1090264-720pxV.jpg]]
  
 
== Features ==
 
== Features ==
  
* Build of [http://searle.x10host.com/6809/Simple6809.html Grant Searles's Simple 6809 CPU]
+
* [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/PARTS/MB6802_datasheet.pdf 68B02 CPU]
** Runs MIKBUG
+
** 1.8432 MHz clock
* 68B02 CPU
+
** MC6802 is fully compatible with MC6800 but without messy two-phase clocking
* 32KB SRAM
+
* [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/PARTS/AS6C62256_23_March_2016_rev1_2-1288423.pdf 32KB SRAM]
* 16KB EPROM/EEPROM
+
* [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/PARTS/SST27SF256_datasheet.pdf 16KB EPROM/EEPROM]
* 68B50 Serial Port (ACIA)
+
** 16KB reserved
 +
** 8KB (28C64 parts can be used)
 +
* [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/PARTS/MC68B50_43633.pdf 68B50 Serial Port (ACIA)]
 
** RS-232 port
 
** RS-232 port
 
** Header for FTDI
 
** Header for FTDI
 +
** 115,200 baud
 
* Reset switch with optional Power Supervisor
 
* Reset switch with optional Power Supervisor
 
* 95x95mm card
 
* 95x95mm card
Line 18: Line 23:
  
 
* 0x0000-0x7FFF 32KB SRAM
 
* 0x0000-0x7FFF 32KB SRAM
* 0x8000-0x9FFF Free Space (8KB)
+
* 0x8000-0xBFFF Serial (68B50 ACIA)
* 0xA000-0xBFFF Serial (ACIA)
+
* 0xC000-0xFFFF 16KB EPROM
* 0xC000-0xCFFF 16KB EPROM
+
 
 +
=== Chipset ===
 +
 
 +
* [https://www.ebay.com/itm/363569754452?var=632793819541 68B02P]
 +
* [https://www.ebay.com/itm/363470308952?var=632689151269 MC68B50CP]
 +
* [https://www.ebay.com/itm/363496217061 HM62256BLP-7 32KB SRAM]
 +
* [https://www.ebay.com/itm/363908920517?var=633150790824 SST27SF256-70-3C-PGE EPROM]
 +
 
 +
== Design ==
 +
 
 +
=== CPU ===
 +
 
 +
[[file:SIMPLE-6802_U3_CPU.PNG]]
 +
 
 +
==== Bus Timing ====
 +
 
 +
[[file:Timing_68B02.PNG]]
 +
 
 +
=== EPROM ===
 +
 
 +
* [[TL866ii Plus Programmer]]
 +
 
 +
[[file:SIMPLE-6802_U4_EPROM.PNG]]
 +
 
 +
=== SRAM ===
 +
 
 +
[[file:SIMPLE-6802_U2_SRAM.PNG]]
 +
 
 +
=== ACIA ===
 +
 
 +
[[file:SIMPLE-6802_U3_ACIA.PNG]]
 +
 
 +
== Headers / Connectors ==
 +
 
 +
[[file:SIMPLE-6802_REV1_CAD.PNG]]
 +
 
 +
=== J1 - RS-232 Serial ===
 +
 
 +
* DB-9 Male
 +
* Can only use RS-232 or FTDI - one at a time
 +
** Put MAX232 in a socket if you want flexibility
 +
** Remove MAX232 if you want to use FTDI
 +
* Pinout
 +
 
 +
# N/C
 +
# Receive
 +
# Transmit
 +
# Loop to pin 6
 +
# GND
 +
# Loop to pin 4
 +
# RTS
 +
# N/C
 +
# N/C
 +
 
 +
=== J2 / J5 - EPROM/EEPROM Select Jumpers ===
  
== Headers ==
+
[[FILE:SIMPLE-6802_J2_J5.PNG]]
  
=== EPROM/EEPROM Select Jumpers ===
+
* J2 - EPROM Pin 1 jumper
 +
** 1-2 for 28C64, 28C256 (Pull WE to VCC)
 +
** 2-3 for 27256, 27SF256, 27512 (Pull A14 to GND)
 +
* J5 - EPROM Pin 27 jumper
 +
** GND (2-3)
 +
 
 +
==== EEPROM Pin Table ====
  
 
{| class="wikitable"
 
{| class="wikitable"
! PART
+
! 27512
! J2 PIN 1
+
! 27256
! J5 PIN 27
+
! 27SF256
 +
! 28C256
 +
! 27128
 +
! 2764
 +
! 28C64
 +
! PIN
 +
!  
 +
! PIN
 +
! 2764
 +
! 28C64
 +
! 27128
 +
! 28C256
 +
! 27SF256
 +
! 27256
 +
! 27512
 +
|-
 +
| A15
 +
| VPP
 +
| VPP
 +
| A14
 +
| VPP
 +
| VPP
 +
| N/C
 +
| 1
 +
|
 +
| 28
 +
| VCC
 +
| VCC
 +
| VCC
 +
| VCC
 +
| VCC
 +
| VCC
 +
| VCC
 +
|-
 +
| A12
 +
| A12
 +
| A12
 +
| A12
 +
| A12
 +
| A12
 +
| A12
 +
| 2
 +
|
 +
| 27
 +
| PGM
 +
| WE*
 +
| PGM
 +
| WE*
 +
| A14
 +
| A14
 +
| A14
 +
|-
 +
| A7
 +
| A7
 +
| A7
 +
| A7
 +
| A7
 +
| A7
 +
| A7
 +
| 3
 +
|
 +
| 26
 +
| A13
 +
| N/C
 +
| A13
 +
| A13
 +
| A13
 +
| A13
 +
| A13
 +
|-
 +
| A6
 +
| A6
 +
| A6
 +
| A6
 +
| A6
 +
| A6
 +
| A6
 +
| 4
 +
|
 +
| 25
 +
| A8
 +
| A8
 +
| A8
 +
| A8
 +
| A8
 +
| A8
 +
| A8
 +
|-
 +
| A5
 +
| A5
 +
| A5
 +
| A5
 +
| A5
 +
| A5
 +
| A5
 +
| 5
 +
|
 +
| 24
 +
| A9
 +
| A9
 +
| A9
 +
| A9
 +
| A9
 +
| A9
 +
| A9
 +
|-
 +
| A4
 +
| A4
 +
| A4
 +
| A4
 +
| A4
 +
| A4
 +
| A4
 +
| 6
 +
|
 +
| 23
 +
| A11
 +
| A11
 +
| A11
 +
| A11
 +
| A11
 +
| A11
 +
| A11
 
|-
 
|-
| 27128 EPROM
+
| A3
| VPP (5V)
+
| A3
| PGM (5V)
+
| A3
 +
| A3
 +
| A3
 +
| A3
 +
| A3
 +
| 7
 +
|
 +
| 22
 +
| OE*
 +
| OE*
 +
| OE*
 +
| OE*
 +
| OE*
 +
| OE*
 +
| OE*
 
|-
 
|-
| 27C256 EPROM
+
| A2
| VPP (5V)
+
| A2
| A14 (GND)
+
| A2
 +
| A2
 +
| A2
 +
| A2
 +
| A2
 +
| 8
 +
|
 +
| 21
 +
| A10
 +
| A10
 +
| A10
 +
| A10
 +
| A10
 +
| A10
 +
| A10
 
|-
 
|-
| 27C512 EPROM
+
| A1
| A15 (GND)
+
| A1
| A14 (GND)
+
| A1
 +
| A1
 +
| A1
 +
| A1
 +
| A1
 +
| 9
 +
|
 +
| 20
 +
| CE*
 +
| CE*
 +
| CE*
 +
| CE*
 +
| CE*
 +
| CE*
 +
| CE*
 
|-
 
|-
| SST27SF256 EEPROM
+
| A0
| VPP (5V)
+
| A0
| A14 (GND)
+
| A0
 +
| A0
 +
| A0
 +
| A0
 +
| A0
 +
| 10
 +
|
 +
| 19
 +
| D7
 +
| D7
 +
| D7
 +
| D7
 +
| D7
 +
| D7
 +
| D7
 
|-
 
|-
| SST27SF512 EEPROM
+
| D0
| A15 (GND)
+
| D0
| A14 (GND)
+
| D0
 +
| D0
 +
| D0
 +
| D0
 +
| D0
 +
| 11
 +
|
 +
| 18
 +
| D6
 +
| D6
 +
| D6
 +
| D6
 +
| D6
 +
| D6
 +
| D6
 +
|-
 +
| D1
 +
| D1
 +
| D1
 +
| D1
 +
| D1
 +
| D1
 +
| D1
 +
| 12
 +
|
 +
| 17
 +
| D5
 +
| D5
 +
| D5
 +
| D5
 +
| D5
 +
| D5
 +
| D5
 +
|-
 +
| D2
 +
| D2
 +
| D2
 +
| D2
 +
| D2
 +
| D2
 +
| D2
 +
| 13
 +
|
 +
| 16
 +
| D4
 +
| D4
 +
| D4
 +
| D4
 +
| D4
 +
| D4
 +
| D4
 +
|-
 +
| GND
 +
| GND
 +
| GND
 +
| GND
 +
| GND
 +
| GND
 +
| GND
 +
| 14
 +
|
 +
| 15
 +
| D3
 +
| D3
 +
| D3
 +
| D3
 +
| D3
 +
| D3
 +
| D3
 
|-
 
|-
 
|}
 
|}
  
== Connectors ==
+
=== J3 - FTDI / TTL Serial ===
 +
 
 +
* Requires a FTDI cross-over cable
 +
* Can only use RS-232 or FTDI - one at a time
 +
** Put MAX232 in a socket if you want flexibility
 +
** Remove MAX232 if you want to use FTDI
  
=== J1 - RS-232 Serial ===
+
[[file:SIMPLE-6802_J3_FTDI.PNG]]
  
# N/C
+
* Pinout
# Receive
 
# Transmit
 
# Loop to pin 6
 
 
# GND
 
# GND
# Loop to pin 4
+
# RTS* (out)
# RTS
+
# +5V
# N/C
+
# Receive (in)
 +
# Transmit (out)
 
# N/C
 
# N/C
 +
 +
=== J4 - 5V Power ===
 +
 +
* 2x4 header
 +
 +
[[FILE:SIMPLE-6802_J4_5V-PWR.PNG]]
 +
 +
== First Unit Checkout ==
 +
 +
=== Install Sockets ===
 +
 +
* Machined pin sockets
 +
 +
=== Install Passives ===
 +
 +
[[file:SIMPLE-6802_P1090258-720pxV.jpg]]
 +
 +
=== Power ===
 +
 +
* Install 2x4 at J4
 +
* Power card via J4 with 5V
 +
* Check power pins on parts
 +
 +
[[FILE:SIMPLE-6802_P1090261-720PXV.JPG]]
 +
 +
=== Reset ===
 +
 +
* Install U7 Power Monitor
 +
* Install pushbutton switch SW1
 +
* Reset button gets stretched by Power Monitor U9
 +
* Measure reset at 68B02 U5 pin 40
 +
 +
=== EPROM ===
 +
 +
* SST27C256 EEPROM
 +
** 32 KB part
 +
** Using first 16KB of EEPROM
 +
** J2 EEPROM pin 1 = VPP = VCC or GND
 +
*** Jumper J2:2-3
 +
** J5 EEPROM pin 27 = A14 = GND
 +
*** Jumper J5:2-3
 +
* U1 - Do not install MAX232 yet
 +
** Use FTDI connector with [[FTDI-49MM]] card
 +
 +
==== EEPROM Programming ====
 +
 +
* Program using [[TL866ii_Plus_Programmer|TL-866ii plus programmer]]
 +
* File = [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/SOFTWARE/SMITHBUG_FORTH/SMITHBUG_FORTH_SIMPLE-FC.hex SMITHBUG_FORTH_SIMPLE-FC.hex]
 +
* Part is 32 KB
 +
* hex files is 16 KB
 +
 +
* Memory Buffer should look like
 +
 +
[[file:SIMPLE-68B02_Programmer_BufferContents.PNG]]
 +
 +
* Got Device ID error
 +
* Turn off ID check
 +
 +
[[file:SIMPLE-6502_TL866Plus_Program.png]]
 +
 +
* Device programmed/verified
 +
 +
=== Test FTDI Serial ===
 +
 +
* Wiring is '''not''' 1:1 to [[FTDI-49MM]]
 +
* Wire FTDI J3 to [[FTDI-49MM]] card
 +
** [[FTDI-49MM]] GND pin 1 to J3-1 RX on card
 +
** [[FTDI-49MM]] VCC pin 3 to J3-3 RX on card
 +
** [[FTDI-49MM]] TX pin 4 on to J3-5 RX on card
 +
** [[FTDI-49MM]] RX pin 5 on to J3-4 TX on card
 +
** [[FTDI-49MM]] CTS(in) pin 2 to J3-6 CTS on card
 +
 +
<pre>
 +
>J TO ADDR D000
 +
Forth-68
 +
1 2 + . 3  OK
 +
  OK
 +
</pre>
 +
 +
=== Test RS-232 Serial ===
 +
 +
* With MAX232
 +
* Install DB-9 Male
 +
* Holes don't line up well, but 4-40 screws can fit
 +
* Connected to [[FTDI-49MM]] and [[DCE]] cards
 +
** [[FTDI-49MM]] and [[DCE]] cards wired together
 +
** [[DCE]] has female DB-9
 +
** Separate power cable J2 on [[FTDI-49MM]] to J3 on card
 +
 +
[[FILE:FTDI_DCE_P1090192-720PXV.jpg]]
 +
 +
* Built
 +
 +
[[FILE:SIMPLE-6802_P1090264-720pxV.jpg]]
 +
 +
* Works
 +
 +
== Software ==
 +
 +
* [http://www.retrotechnology.com/restore/smithbug.html SMITHBUG] is a debugger similar to MIKBUG
 +
** Examine/Edit memory
 +
** Disassembly code
 +
** Download S record (V2)
 +
** Run code
 +
* FIG-Forth - Forth language
 +
* Combined SMITHBUG and FIG-Forth build
 +
 +
=== SmithBUG Builds for SIMPLE-MC6802 CPU Card ===
 +
 +
* Pre-built software
 +
** [https://github.com/land-boards/lb-boards/tree/master/RetroCPUs/SIMPLE-6802/SOFTWARE/SMITHBUG/SMITHBUG_4K SMITHBUG 4KB build]
 +
** [https://github.com/land-boards/lb-boards/tree/master/RetroCPUs/SIMPLE-6802/SOFTWARE/SMITHBUG/SMITHBUG_8K SMITHBUG 8KB build]
 +
** [https://github.com/land-boards/lb-boards/tree/master/RetroCPUs/SIMPLE-6802/SOFTWARE/SMITHBUG SMITHBUG 16KB build]
 +
 +
==== Building Code ====
 +
 +
* Uses a68 assembler
 +
** Command line makes S-Record output
 +
* Use srec_cat to shift from EPROM absolute addresses to 0x0000 as HEX file
 +
 +
==== 4KB Build ====
 +
 +
<pre>
 +
A68 SMITHBUG_SIMPLE-6802_F000.ASM -l SMITHBUG_SIMPLE-6802_F000.LST -s SMITHBUG_SIMPLE-6802_F000.S
 +
srec_cat SMITHBUG_SIMPLE-6802_F000.s -offset - -minimum-addr SMITHBUG_SIMPLE-6802_F000.s -o smithbug_F000.hex -Intel
 +
</pre>
 +
 +
==== 8KB Build ====
 +
 +
<pre>
 +
A68 SMITHBUG_SIMPLE-6802_E000.ASM -l SMITHBUG_SIMPLE-6802_E000.LST -s SMITHBUG_SIMPLE-6802_E000.S
 +
srec_cat SMITHBUG_SIMPLE-6802_E000.s -offset - -minimum-addr SMITHBUG_SIMPLE-6802_E000.s -o smithbug_E000.hex -Intel
 +
</pre>
 +
 +
==== 16KB Build ====
 +
 +
* Used with 27SF256 parts
 +
** 2nd half of EPROM unused
 +
 +
<pre>
 +
A68 SMITHBUG_SIMPLE-6802_C000.ASM -l SMITHBUG_SIMPLE-6802_C000.LST -s SMITHBUG_SIMPLE-6802_C000.S
 +
srec_cat SMITHBUG_SIMPLE-6802_C000.s -offset - -minimum-addr SMITHBUG_SIMPLE-6802_C000.s -o smithbug_C000.hex -Intel
 +
</pre>
 +
 +
==== SmithBUG Commands ====
 +
 +
<pre>
 +
; V VIEW MEMORY
 +
; E CHANGE MEMORY
 +
; I FILL MEMORY
 +
; M MOVE MEMORY
 +
; D DISASSEMBLE CODE
 +
; G GO TO PROGRAM
 +
; R PRINT
 +
; @ ASCII CONVERSION
 +
; H PRINTER ON
 +
; J JUMP TO TARGET PROGRAM
 +
; F FIND
 +
; Q HARDWARE LOCATION
 +
; T TRACE PROGRAM
 +
; 1 BREAKPOINT ONE
 +
; 2 BREAKPOINT TWO
 +
; K CONTINUE AFTER BREAK
 +
; & S1 LOAD PROGRAM
 +
; * HARDWARE LOCATION (TBA)
 +
; O ECHO ON
 +
; N ECHO OFF
 +
</pre>
 +
 +
=== FIGFORTH in RAM ===
 +
 +
* [https://www.corshamtech.com/tech-tips/fig-forth-for-6800/ Corsham Tech FIG-Forth 68 page]
 +
* [https://github.com/douggilliland/Retro-Computers/tree/master/6800/fig-FORTH/figForth_SmithBUG FIGFORTH GitHub]
 +
** Enter command to srecord loader
 +
<pre>
 +
&
 +
</pre>
 +
* Using TermTerm, File, Send File
 +
* Send [https://github.com/douggilliland/Retro-Computers/blob/master/6800/fig-FORTH/figForth_SmithBUG/fig-FORTH_6800.s19 fig-FORTH_6800.s19]
 +
* Type S9 to exit srecord loader
 +
* Type J 1000 to jump to address 0x1000
 +
* Responds with
 +
 +
<pre>
 +
Forth-68
 +
1 1 + . 2  OK
 +
</pre>
 +
 +
* [https://github.com/douggilliland/Retro-Computers/tree/master/6800/fig-FORTH#readme FIG-Forth-68 Commands]
 +
** Type VLIST to get list og built-ins
 +
 +
<pre>
 +
TASK  FORTH  NOOP  VLIST  TRIAD  INDEX  LIST  ?  .  D.  D.R  .R  #S  #  SIGN  #>  <#
 +
SPACES  WHILE  ELSE  IF  REPEAT  AGAIN  END  UNTIL  +LOOP  LOOP  DO  THEN  ENDIF  BEGIN
 +
BACK  FORGET  '  R/W  HI  LO  BLOCK_READ  BLOCK_WRITE  ?DISC  -->  LOAD  MESSAGE  .LINE
 +
(LINE)  BLOCK  BUFFER  DR1  DR0  EMPTY-BUFFERS  UPDATE  +BUF  PREV  USE  DABS  ABS  M/MOD
 +
*/  */MOD  MOD  /  /MOD  *  S->D  COLD  ABORT  QUIT  (  DEFINITIONS  VOCABULARY  IMMEDIATE
 +
INTERPRET  DLITERAL  LITERAL  [COMPILE]  CREATE  ID.  ERROR  (ABORT)  -FIND  NUMBER  (NUMBER)
 +
WORD  PAD  HOLD  BLANKS  ERASE  FILL      QUERY  EXPECT  ?STACK  ."  (.")  -TRAILING  TYPE
 +
COUNT  DOES>  <BUILDS  ;CODE  (:CODE)  DECIMAL  HEX  SMUDGE  ]  [  COMPILE  ?LOADING  ?CSP
 +
?PAIRS  ?EXEC  ?COMP  ?ERROR  !CSP  PFA  NFA  CFA  LFA  LATEST  TRAVERSE  -DUP  MAX  MIN
 +
SPACE  ROT  >  <  =  -  C,  ,  ALLOT  HERE  2+  1+  COLUMNS  HLD  R#  CSP  FLD  DPL
 +
BASE  STATE  CURRENT  CONTEXT  OFFSET  SCR  OUT  IN  BLK  VOC-LINK  DP  FENCE  WARNING
 +
WIDTH  TIB  R0  S0  +ORIGIN  B/SCR  B/BUF  LIMIT  FIRST  BL  3  2  1  0  USER  VARIABLE
 +
CONSTANT  ;  :  C!  !  C@  @  TOGGLE  +!  DUP  SWAP  DROP  OVER  DMINUS  MINUS  D+  +
 +
0<  0=  R  R>  >R  LEAVE  ;S  RP!  SP!  SP@  XOR  OR  AND  U/  U*  CMOVE  CR  ?TERMINAL
 +
KEY  EMIT  ENCLOSE  (FIND)  DIGIT  I  (DO)  (+LOOP)  (LOOP)  0BRANCH  BRANCH  EXECUTE  LIT    OK
 +
</pre>
 +
 +
=== SMITHBUG and FIGFORTH in ROM ===
 +
 +
* Combines SMITHBUG and FIGFORTH in ROM
 +
** [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/SOFTWARE/SMITHBUG_FORTH/SMITHBUG_FORTH_SIMPLE-FC.hex Hex file]
 +
* [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/SOFTWARE/SMITHBUG_FORTH/SMITHBUG_FORTH_SIMPLE-6802_C000.ASM Combined Source code]
 +
** SMITHBUG in ROM from 0xC000-0xCFFF
 +
** FIGFORTH in ROM from 0xD000-0xEFFF
 +
** Vectors are at top of ROM from 0xFFF8-0xFFFF
 +
* Fixes in FIG-Forth to get it to run from ROM
 +
** The comments in the file indicated it could be run from ROM but the stack pointed to ORIG which is in ROM
 +
** Fixed addresses of stack and I/O pointer to get it to work from ROM
 +
* [https://github.com/land-boards/lb-boards/tree/master/RetroCPUs/SIMPLE-6802/SOFTWARE/SMITHBUG_FORTH SMITHBUG and FIGFORTH in ROM GitHub]
 +
* Assemble
 +
<PRE>
 +
A68 SMITHBUG_FORTH_SIMPLE-6802_C000.ASM -l SMITHBUG_FORTH_SIMPLE-6802_C000.LST -s SMITHBUG_FORTH_SIMPLE-6802_C000.S
 +
6800/6801 Cross-Assembler (Portable) Ver 3.5!
 +
Copyright (c) 1985 William C. Colley, III
 +
fixes for LCC/Windows and improvement by HRJ Aug 26 2019
 +
A68 source_file | -l list_file | | -o/-s object_file |
 +
 +
No Errors
 +
</PRE>
 +
 +
* Edit out RAM at top
 +
* Make hex file
 +
 +
<PRE>
 +
srec_cat SMITHBUG_FORTH_SIMPLE-6802_C000.s -offset - -minimum-addr SMITHBUG_FORTH_SIMPLE-6802_C000.s -o SMITHBUG_FORTH_SIMPLE-FC.hex -Intel
 +
srec_cat: SMITHBUG_FORTH_SIMPLE-6802_C000.s: 1: warning: no header record
 +
srec_cat: SMITHBUG_FORTH_SIMPLE-6802_C000.s: 1: warning: no header record
 +
</PRE>
 +
 +
* Boots to SMITHBUG
 +
* Type J D000 to run Fig-Forth '''or'''
 +
* Type 4 to run Forth
 +
 +
=== TinyBASIC ===
 +
 +
* [https://github.com/land-boards/lb-boards/tree/master/RetroCPUs/SIMPLE-6802/SOFTWARE/TinyBASIC TinyBASIC GitHub]
 +
* [https://github.com/douggilliland/Retro-Computers/blob/master/6800/TinyBASIC/Pittman-TinyBASIC/README.mediawiki TINY BASIC User Manual]
 +
** [https://github.com/douggilliland/Retro-Computers/blob/master/6800/TinyBASIC/Pittman-TinyBASIC/TINY%20BASIC%20User%20Manual.pdf TINY BASIC User Manual PDF]
 +
* Load using &
 +
** Character/line delays 1 mSec
 +
* Send [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6802/SOFTWARE/TinyBASIC/TB_6800.s TB_6800.s file]
 +
* Run using J 0100
 +
 +
== References ==
 +
 +
* [https://deramp.com/swtpc.com/ Deramp's STWPC page]
  
 
== Mechanicals ==
 
== Mechanicals ==
Line 73: Line 645:
 
== Assembly Sheet ==
 
== Assembly Sheet ==
  
[[SIMPLE-6802 Rev 1 Assembly Sheet]]
+
=== Rev 1 ===
 +
 
 +
* [[SIMPLE-6802 Rev 1 Assembly Sheet]]
 +
* [http://land-boards.com/SIMPLE-6802/SIMPLE-6802_Rev1_ibom.html SIMPLE-6802 Rev 1 Interactive BOM]

Latest revision as of 18:51, 28 August 2024

Tindie-mediums.png

SIMPLE-6802 P1090264-720pxV.jpg

Features

  • 68B02 CPU
    • 1.8432 MHz clock
    • MC6802 is fully compatible with MC6800 but without messy two-phase clocking
  • 32KB SRAM
  • 16KB EPROM/EEPROM
    • 16KB reserved
    • 8KB (28C64 parts can be used)
  • 68B50 Serial Port (ACIA)
    • RS-232 port
    • Header for FTDI
    • 115,200 baud
  • Reset switch with optional Power Supervisor
  • 95x95mm card
  • (4) 6-32 mounting holes

Memory Map

  • 0x0000-0x7FFF 32KB SRAM
  • 0x8000-0xBFFF Serial (68B50 ACIA)
  • 0xC000-0xFFFF 16KB EPROM

Chipset

Design

CPU

SIMPLE-6802 U3 CPU.PNG

Bus Timing

Timing 68B02.PNG

EPROM

SIMPLE-6802 U4 EPROM.PNG

SRAM

SIMPLE-6802 U2 SRAM.PNG

ACIA

SIMPLE-6802 U3 ACIA.PNG

Headers / Connectors

SIMPLE-6802 REV1 CAD.PNG

J1 - RS-232 Serial

  • DB-9 Male
  • Can only use RS-232 or FTDI - one at a time
    • Put MAX232 in a socket if you want flexibility
    • Remove MAX232 if you want to use FTDI
  • Pinout
  1. N/C
  2. Receive
  3. Transmit
  4. Loop to pin 6
  5. GND
  6. Loop to pin 4
  7. RTS
  8. N/C
  9. N/C

J2 / J5 - EPROM/EEPROM Select Jumpers

SIMPLE-6802 J2 J5.PNG

  • J2 - EPROM Pin 1 jumper
    • 1-2 for 28C64, 28C256 (Pull WE to VCC)
    • 2-3 for 27256, 27SF256, 27512 (Pull A14 to GND)
  • J5 - EPROM Pin 27 jumper
    • GND (2-3)

EEPROM Pin Table

27512 27256 27SF256 28C256 27128 2764 28C64 PIN PIN 2764 28C64 27128 28C256 27SF256 27256 27512
A15 VPP VPP A14 VPP VPP N/C 1 28 VCC VCC VCC VCC VCC VCC VCC
A12 A12 A12 A12 A12 A12 A12 2 27 PGM WE* PGM WE* A14 A14 A14
A7 A7 A7 A7 A7 A7 A7 3 26 A13 N/C A13 A13 A13 A13 A13
A6 A6 A6 A6 A6 A6 A6 4 25 A8 A8 A8 A8 A8 A8 A8
A5 A5 A5 A5 A5 A5 A5 5 24 A9 A9 A9 A9 A9 A9 A9
A4 A4 A4 A4 A4 A4 A4 6 23 A11 A11 A11 A11 A11 A11 A11
A3 A3 A3 A3 A3 A3 A3 7 22 OE* OE* OE* OE* OE* OE* OE*
A2 A2 A2 A2 A2 A2 A2 8 21 A10 A10 A10 A10 A10 A10 A10
A1 A1 A1 A1 A1 A1 A1 9 20 CE* CE* CE* CE* CE* CE* CE*
A0 A0 A0 A0 A0 A0 A0 10 19 D7 D7 D7 D7 D7 D7 D7
D0 D0 D0 D0 D0 D0 D0 11 18 D6 D6 D6 D6 D6 D6 D6
D1 D1 D1 D1 D1 D1 D1 12 17 D5 D5 D5 D5 D5 D5 D5
D2 D2 D2 D2 D2 D2 D2 13 16 D4 D4 D4 D4 D4 D4 D4
GND GND GND GND GND GND GND 14 15 D3 D3 D3 D3 D3 D3 D3

J3 - FTDI / TTL Serial

  • Requires a FTDI cross-over cable
  • Can only use RS-232 or FTDI - one at a time
    • Put MAX232 in a socket if you want flexibility
    • Remove MAX232 if you want to use FTDI

SIMPLE-6802 J3 FTDI.PNG

  • Pinout
  1. GND
  2. RTS* (out)
  3. +5V
  4. Receive (in)
  5. Transmit (out)
  6. N/C

J4 - 5V Power

  • 2x4 header

SIMPLE-6802 J4 5V-PWR.PNG

First Unit Checkout

Install Sockets

  • Machined pin sockets

Install Passives

SIMPLE-6802 P1090258-720pxV.jpg

Power

  • Install 2x4 at J4
  • Power card via J4 with 5V
  • Check power pins on parts

SIMPLE-6802 P1090261-720PXV.JPG

Reset

  • Install U7 Power Monitor
  • Install pushbutton switch SW1
  • Reset button gets stretched by Power Monitor U9
  • Measure reset at 68B02 U5 pin 40

EPROM

  • SST27C256 EEPROM
    • 32 KB part
    • Using first 16KB of EEPROM
    • J2 EEPROM pin 1 = VPP = VCC or GND
      • Jumper J2:2-3
    • J5 EEPROM pin 27 = A14 = GND
      • Jumper J5:2-3
  • U1 - Do not install MAX232 yet

EEPROM Programming

  • Memory Buffer should look like

SIMPLE-68B02 Programmer BufferContents.PNG

  • Got Device ID error
  • Turn off ID check

SIMPLE-6502 TL866Plus Program.png

  • Device programmed/verified

Test FTDI Serial

>J TO ADDR D000
Forth-68
1 2 + . 3  OK
  OK

Test RS-232 Serial

  • With MAX232
  • Install DB-9 Male
  • Holes don't line up well, but 4-40 screws can fit
  • Connected to FTDI-49MM and DCE cards

FTDI DCE P1090192-720PXV.jpg

  • Built

SIMPLE-6802 P1090264-720pxV.jpg

  • Works

Software

  • SMITHBUG is a debugger similar to MIKBUG
    • Examine/Edit memory
    • Disassembly code
    • Download S record (V2)
    • Run code
  • FIG-Forth - Forth language
  • Combined SMITHBUG and FIG-Forth build

SmithBUG Builds for SIMPLE-MC6802 CPU Card

Building Code

  • Uses a68 assembler
    • Command line makes S-Record output
  • Use srec_cat to shift from EPROM absolute addresses to 0x0000 as HEX file

4KB Build

A68 SMITHBUG_SIMPLE-6802_F000.ASM -l SMITHBUG_SIMPLE-6802_F000.LST -s SMITHBUG_SIMPLE-6802_F000.S
srec_cat SMITHBUG_SIMPLE-6802_F000.s -offset - -minimum-addr SMITHBUG_SIMPLE-6802_F000.s -o smithbug_F000.hex -Intel

8KB Build

A68 SMITHBUG_SIMPLE-6802_E000.ASM -l SMITHBUG_SIMPLE-6802_E000.LST -s SMITHBUG_SIMPLE-6802_E000.S
srec_cat SMITHBUG_SIMPLE-6802_E000.s -offset - -minimum-addr SMITHBUG_SIMPLE-6802_E000.s -o smithbug_E000.hex -Intel

16KB Build

  • Used with 27SF256 parts
    • 2nd half of EPROM unused
A68 SMITHBUG_SIMPLE-6802_C000.ASM -l SMITHBUG_SIMPLE-6802_C000.LST -s SMITHBUG_SIMPLE-6802_C000.S
srec_cat SMITHBUG_SIMPLE-6802_C000.s -offset - -minimum-addr SMITHBUG_SIMPLE-6802_C000.s -o smithbug_C000.hex -Intel

SmithBUG Commands

;	V	VIEW MEMORY
;	E	CHANGE MEMORY
;	I	FILL MEMORY
;	M	MOVE MEMORY
;	D	DISASSEMBLE CODE
;	G	GO TO PROGRAM
;	R	PRINT
;	@	ASCII CONVERSION
;	H	PRINTER ON
;	J	JUMP TO TARGET PROGRAM
;	F	FIND 
;	Q	HARDWARE LOCATION
;	T	TRACE PROGRAM
;	1	BREAKPOINT ONE
;	2	BREAKPOINT TWO
;	K	CONTINUE AFTER BREAK
;	&	S1 LOAD PROGRAM
;	*	HARDWARE LOCATION (TBA)
;	O	ECHO ON
;	N	ECHO OFF

FIGFORTH in RAM

&
  • Using TermTerm, File, Send File
  • Send fig-FORTH_6800.s19
  • Type S9 to exit srecord loader
  • Type J 1000 to jump to address 0x1000
  • Responds with
Forth-68
1 1 + . 2  OK
TASK   FORTH   NOOP   VLIST   TRIAD   INDEX   LIST   ?   .   D.   D.R   .R   #S   #   SIGN   #>   <#
SPACES   WHILE   ELSE   IF   REPEAT   AGAIN   END   UNTIL   +LOOP   LOOP   DO   THEN   ENDIF   BEGIN
BACK   FORGET   '   R/W   HI   LO   BLOCK_READ   BLOCK_WRITE   ?DISC   -->   LOAD   MESSAGE   .LINE
(LINE)   BLOCK   BUFFER   DR1   DR0   EMPTY-BUFFERS   UPDATE   +BUF   PREV   USE   DABS   ABS   M/MOD
*/   */MOD   MOD   /   /MOD   *   S->D   COLD   ABORT   QUIT   (   DEFINITIONS   VOCABULARY   IMMEDIATE
INTERPRET   DLITERAL   LITERAL   [COMPILE]   CREATE   ID.   ERROR   (ABORT)   -FIND   NUMBER   (NUMBER)
WORD   PAD   HOLD   BLANKS   ERASE   FILL      QUERY   EXPECT   ?STACK   ."   (.")   -TRAILING   TYPE
COUNT   DOES>   <BUILDS   ;CODE   (:CODE)   DECIMAL   HEX   SMUDGE   ]   [   COMPILE   ?LOADING   ?CSP
?PAIRS   ?EXEC   ?COMP   ?ERROR   !CSP   PFA   NFA   CFA   LFA   LATEST   TRAVERSE   -DUP   MAX   MIN
SPACE   ROT   >   <   =   -   C,   ,   ALLOT   HERE   2+   1+   COLUMNS   HLD   R#   CSP   FLD   DPL
BASE   STATE   CURRENT   CONTEXT   OFFSET   SCR   OUT   IN   BLK   VOC-LINK   DP   FENCE   WARNING
WIDTH   TIB   R0   S0   +ORIGIN   B/SCR   B/BUF   LIMIT   FIRST   BL   3   2   1   0   USER   VARIABLE
CONSTANT   ;   :   C!   !   C@   @   TOGGLE   +!   DUP   SWAP   DROP   OVER   DMINUS   MINUS   D+   +
0<   0=   R   R>   >R   LEAVE   ;S   RP!   SP!   SP@   XOR   OR   AND   U/   U*   CMOVE   CR   ?TERMINAL
KEY   EMIT   ENCLOSE   (FIND)   DIGIT   I   (DO)   (+LOOP)   (LOOP)   0BRANCH   BRANCH   EXECUTE   LIT    OK

SMITHBUG and FIGFORTH in ROM

  • Combines SMITHBUG and FIGFORTH in ROM
  • Combined Source code
    • SMITHBUG in ROM from 0xC000-0xCFFF
    • FIGFORTH in ROM from 0xD000-0xEFFF
    • Vectors are at top of ROM from 0xFFF8-0xFFFF
  • Fixes in FIG-Forth to get it to run from ROM
    • The comments in the file indicated it could be run from ROM but the stack pointed to ORIG which is in ROM
    • Fixed addresses of stack and I/O pointer to get it to work from ROM
  • SMITHBUG and FIGFORTH in ROM GitHub
  • Assemble
A68 SMITHBUG_FORTH_SIMPLE-6802_C000.ASM -l SMITHBUG_FORTH_SIMPLE-6802_C000.LST -s SMITHBUG_FORTH_SIMPLE-6802_C000.S
6800/6801 Cross-Assembler (Portable) Ver 3.5!
Copyright (c) 1985 William C. Colley, III
fixes for LCC/Windows and improvement by HRJ Aug 26 2019
A68 source_file | -l list_file | | -o/-s object_file |

No Errors
  • Edit out RAM at top
  • Make hex file
srec_cat SMITHBUG_FORTH_SIMPLE-6802_C000.s -offset - -minimum-addr SMITHBUG_FORTH_SIMPLE-6802_C000.s -o SMITHBUG_FORTH_SIMPLE-FC.hex -Intel
srec_cat: SMITHBUG_FORTH_SIMPLE-6802_C000.s: 1: warning: no header record
srec_cat: SMITHBUG_FORTH_SIMPLE-6802_C000.s: 1: warning: no header record
  • Boots to SMITHBUG
  • Type J D000 to run Fig-Forth or
  • Type 4 to run Forth

TinyBASIC

References

Mechanicals

SIMPLE-6802 REV1 MECHS.PNG

Assembly Sheet

Rev 1