====== SST-6809 Single Board Computer ====== ^ SST-6809 SBC V2.0 ^ SST-6809 SBC V2.1 ^ | {{sst-6809-2.0.png?512|SST-6809 SBC V2.0}} | {{sst-6809-2.1.png?512|SST-6809 SBC V2.1}} | [[https://github.com/KenWillmott/SST-6809]] ^ V2.0 Part ^ Integrated Circuit ^ | U1 | Motorola MC68B09 or Hitachi HD63C09 MPU | | U2 | Texas Instruments SN74HCT273N Octal Flip-Flop with Reset | | U3 | Alliance AS6C4008-55PCN 4Mbit / 512KB SRAM | | U4 | Motorola MC68B50 or Hitachi HD63B50 ACIA | | U5 | Dallas Semiconductor DS1813 EconoReset | | U6 | Phillips 74HCT02N Quad 2-Input NOR | | U7 | Dallas Semiconductor DS1210 Nonvolatile Controller | | U8 | Shenzhen Honglifa HLF SN74HCT139N Dual 2-to-4 Line Decoder / Demultiplexer | | U9 | Atmel At28C256 256Kbit / 32KB Parallel EEPROM | | U10 | Motorola MC74HCT138AN 3-to-8 Line Decoder / Demultiplexer | | U11 | Dallas Semiconductor DS1233 EconoReset | | U12 | - not present - | | U13 | Phillips 74HCT20N Dual 4-input NAND | The [[Memory Map]] and Bank Switching. ===== Jumpers ===== ==== JP2 ==== JP2 connects to on-board 3.0V coin cell to the backup circuit. The purpose is to provide an easy way to clear the NVRAM contents on the V2.1 SBC. ==== JP3 ==== ^ JP3 ^ Selects ^ | 1-2 | External 5V from screw terminals | | 2-3 | 5V Comes from USB serial adapter | Some boards like the [[#M8 Game Board]] use too much power for the USB port to supply. In that case, external regulated 5V should be connect to the screw terminals, and the jumper on JP3 should be moved to pins 1-2. Otherwise, it should join pins 2-3 for USB power. This is done to prevent 5V board power from backfeeding into the USB port. ==== JP5 ==== ^ JP5 ^ SBC V2.1 Boot ROM Select ((SBC V2.0 has two jumpers for ROM select.)) ^ | 1-2 | normal | | 2-3 | ROM A14 inverted | In the normal position, the system boots from the top of the 32K EEPROM In the inverted position, it boots from code at the top of the lower 16K of the same EEPROM. This control bit originates from the latch, so it can be changed by writing the latch, regardless of position. ==== J4 ==== ^ J4 ^ Main Serial Connector ^ | 1 | Ground | | 2 | VCC (5V) | | 3 | Transmit Data (TXD) | | 4 | Receive Data (RXD) | | 5 | Data Terminal Ready (DTR) - Not Connected | | 6 | 3V3 - Not Connected | ==== J5 ==== J5 exposes some 6x09 signals that do not appear on [[#The M8 Bus]] ^ J5 Pin ^ Signal ^ | 1 | 6x09 Bus Status (BS) | | 2 | NVBAT | | 3 | 6x09 /FIRQ "Fast" Interrupt Request | | 4 | 6x09 /RESET Reset Interrupt Request | | 5 | M8 Bus Select 1 (BSEL1) | | 6 | Ground | The NVBAT pin on J5 has two possible uses. It is connected directly to the on board battery. So it can either be used to replace the on board with an external battery, or can convey backup power to additional circuits such as, for example, an RTC. ==== J6 ==== J6 Access to the secondary battery connection and additional serial signals. The DS1210 NVRAM controller supports two backup batteries. J6 provides access to the secondary battery. This should have a jumper between pin 1 and 2 to ground BAT2 if it's not in use. It makes it possible to use an external battery. One important purpose of the BAT2 connection, is that the on board battery may be removed for replacement without incurring memory loss, provided that a second battery is temporarily connected to GND and BAT2 on J6. ^ J6 Pin ^ Purpose ^ | 1 | Ground | | 2 | Battery 2 | | 3 | Serial Ready To Send (RTS) | | 4 | Serial Data Terminal Ready (DTR) | ===== SBC Reset Circuit ===== There are three footprints for a reset circuit on the board. Only one should be populated for use. The basic RC does work but some future devices may not tolerate the slow rise time. There is a footprint for a DS1813 or for a DS1233 - these are obsolete parts but better than the RC reset solution if they are available. ===== The M8 Bus ===== The M8 bus design allows using the most advanced ICs that were available at the time, without regard to brand and fully supports DMA with the 6809 as well. Note: The board decodes two bus select signals BSEL0 and BSEL1, only BSEL0 is routed to the M8 bus. The additional decode could be routed to circuits on peripheral cards, using fly wire jumpers, for development purposes. ===== M8 Game Board ===== The M8 Game Board combines a TMS9918A Video Display Processor (VDP), dual Phillips SAA1099 sound synthesizers, and dual joystick inputs. [[https://github.com/KenWillmott/M8-Game-Board]] M8 Game Board Wiki:\\ [[https://github.com/KenWillmott/M8-Game-Board/wiki]] ^ I/O Memory Map ^ R/W ^ IC ^ | 00-07 | R/W | TMS9918A | | 08-0F | R | HCT541 | | ::: | W | SAA1099P A | | 18-1F | R | HCT541 | | ::: | W | SAA1099P B | Bit 0 of each HCT541 is a read of the corresponding synth's DTACK pin for polling when using slower commands. ===== M8 6809 Mezzanine Board ===== M8-bus 6809 Mezzanine adds a timer IC, parallel I/O IC, two UARTs for serial communication to the SST-6809 SBC. One UART is dedicated to an ESP32 module for wifi and bluetooth communications. [[https://github.com/KenWillmott/M8-6809-Mezzanine]] ===== M8 6522 Proto ===== M8-bus compatible card which combines a 6522 VIA multi-IO chip with a prototyping area and some I/O connector footprints. [[https://github.com/KenWillmott/6522-proto]] ===== M8 Blinkenlights ===== :!: Coming soon ===== Software ===== {{sst-6809-green.png?512|The SST-6809 running ASSIST09 over USB serial via Cool Retro Term}} * [[ASSIST09]] ==== Getting Started ==== Plug in USB-C power from a serial port on a Debian GNU/Linux machine. Install minicom if you haven't already: sudo aptitude install minicom Hunt down your USB device pathlist: ls /dev/tty* Start minicom with the path to your USB device (-D pathlist): minicom -D /dev/ttyUSB0 Configure minicom terminal timings for 1ms per character and line ending delays: [CTRL]+[A] [T] [D] [1] [ENTER] [F] [1] [ENTER] Press RESET on the SST-6809 and you should see: ASSIST09 > ==== Hexadecimal Loader ==== You can use ASSIST09 to load data and code as a hexadecimal loader with these three starting commands: Dump out a memory range >D 0000 0100 Display/Edit memory >M 0000 00- Simply pick a memory address and start typing in hex codes as 2 digits, and then hit space to go to the next byte "Go To" an address to start running code: >G 1000 ==== Load Motorola S-Records ==== You can also load assembled code as S-record files: >L You can load S19 records using copy and paste into the terminal emulator window, or use minicom's cut-and-paste feature: [CTRL]+[A] [Y] Choose a file name Be patient, larger loads may take some time. If the load succeeds, you will see: >00 If the load fails, you will see: ? > Once loaded, use the "Call subroutine" C or "Go" G command to start the loaded program executing on the MPU. ===== TinyBASIC ===== TinyBASIC from [[https://github.com/jefftranter/6809/tree/master/sbc/tinybasic|Jeff Tranter's 6809 SBC repo]] loads and runs with the S19 steps above. Then, start TinyBASIC with: >G 020D : ===== TSC BASIC ===== TSC BASIC from [[https://github.com/jefftranter/6809/tree/master/sbc/tscbasic|Jeff Tranter's 6809 SBC repo]] loads and runs with the S19 steps above. Then, start TSC BASIC with: >G 1000 ! ===== Additional Software ===== The [[http://www.lwtools.ca/|Lost Wizard Assembler (lwasm)]] can output assembled code as S-records, usually saved as .s19 files. With it, I have also adapted the following to execute: * [[PSYMON]] 1.20B by Percom Data Systems * [[BUGGY]] 1.01 by Lennart Benschop ===== Future ... ===== With the addition of DriveWire or other access to storage, loading full 6809 operating systems may become possible: * Flex 6809? * CP/M? * NitrOS-9 Level 1? * NitrOS-9 Level 2? * Fuzix? ===== Additional Resources ===== * [[https://archive.org/details/6809_Assembly_Language_Programming_by_Lance_Leventhal|6809 Assembly Language Programming]] by Lance Leventhal * [[https://archive.org/details/assembly-language-subroutines-for-the-6809_Leventhal|Assembly Language Subroutines for the 6809]] by Lance Leventhal * [[http://searle.x10host.com/6809/Simple6809.html|Grant Searle's Simple 6809]] * [[http://jefftranter.blogspot.com/2019/01/a-6809-single-board-computer.html|Jeff Tranter's 6809 Single Board Computer]] ===== RTS ===== Return to [[:top]]