Difference between revisions of "RetroComputers"
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
Line 605: | Line 605: | ||
Neal started from Grant Searle's work and fixed a number of issues with the VHDL code. | Neal started from Grant Searle's work and fixed a number of issues with the VHDL code. | ||
− | * [https://github.com/nealcrook/multicomp6809/wiki | + | * [https://github.com/nealcrook/multicomp6809/wiki Neil Crook's 6809 Wiki of Multicomp FPGA builds] - very helpful |
* [https://github.com/nealcrook/multicomp6809 Neal Crook's Multicomp GitHub (with docs)] | * [https://github.com/nealcrook/multicomp6809 Neal Crook's Multicomp GitHub (with docs)] | ||
* Neal did [https://github.com/nealcrook/multicomp6809/wiki/CPU-and-clocking-modifications work on the 6809 core] that Grant Searle was using | * Neal did [https://github.com/nealcrook/multicomp6809/wiki/CPU-and-clocking-modifications work on the 6809 core] that Grant Searle was using | ||
Line 617: | Line 617: | ||
* Neal got [https://github.com/nealcrook/multicomp6809/wiki/SD-Controller-modifications SDHC working] - the original was SD only | * Neal got [https://github.com/nealcrook/multicomp6809/wiki/SD-Controller-modifications SDHC working] - the original was SD only | ||
* [https://github.com/nealcrook/multicomp6809 Neil Crook's 6809 Multicomp FPGA builds] - very helpful | * [https://github.com/nealcrook/multicomp6809 Neil Crook's 6809 Multicomp FPGA builds] - very helpful | ||
− | |||
* [https://www.forth.com/starting-forth/ Starting FORTH] - First book of learning FORTH | * [https://www.forth.com/starting-forth/ Starting FORTH] - First book of learning FORTH | ||
* [https://github.com/EtchedPixels/FUZIX FUZIX] | * [https://github.com/EtchedPixels/FUZIX FUZIX] |
Revision as of 11:24, 12 March 2021
Contents
- 1 Our Retro-Computer Hardware
- 2 Purchased FPGA Cards
- 3 Our FPGA Support Cards
- 4 Grant Searle's FPGA MultiComputer Project(s)
- 5 6800 CPU
- 6 Z80 CPU
- 7 6502 CPU
- 8 6809 CPU
- 9 68000 CPU
- 10 RISC V CPU
- 11 BASIC
- 12 DEC (Digital Equipment Corp) Computers
- 13 Terminal
- 14 External Sites
Our Retro-Computer Hardware
MultiComp On EP2C5
- Land Boards EP2C5-DB FPGA Retro-Computer card
- Attaches to Cyclone_II_EP2C5_Mini_Dev_Board
- Duplicates Grant's design down to the same pin maps
MultiComp On RETRO-EP4CE15
- Land Boards RETRO-EP4CE15 design
- EP4CE15 Cyclone IV FPGA Card (tested)
- EP4CE55 Cyclone IV FPGA Card (untested)
- 5CEFA2F23 Cyclone V FPGA Card (tested)
- 5CEFA5F23 Cyclone V FPGA Card (untested)
- 1MB Fast SRAM
- FTDI FT230XS USB-to-Serial Interface with Hardware Handshake
- 6-bit (2:2:2) VGA
- PS/2 connector
- 5V Power Module
- 46 I/O connections on 50-pin header
MultiComp On RETRO-EP4
- Land Boards RETRO-EP4 design
- Attaches to Cyclone II EP2C5 Mini Dev Board
- 512K Fast SRAM
- FTDI USB-to-Serial Interface with Hardware Handshake
- 6-bit (3/3/3) VGA
- PS/2 connector
- 5V Power Module
- Lot of I/O connections
MultiComp On BASE-EP4CE6
- Land Boards BASE-EP4CE6 card is a breakout board
- Attaches to CoreEP4CE6 FPGA Card
- Can do up to 16K of Internal SRAM
Purchased FPGA Cards
MultiComp On A4-CE6 Card
Features for MultiComp Use
- Enough Internal SRAM to make small (16KB) BASIC computers
- Includes VGA, PS/2 and CH340 USB-Serial converter
- A lot of I/O (26 pins) which can be easily accessed using EP4 FPGA BREAKOUT
- LCD Display connector with additional I/O
Limitations on MultiComp compatibility
- No native SD Card storage but could be built using EP4 FPGA BREAKOUT and SD CARD X49
- 1:1:1 video does not support 2:2:2 (bold characters under ANSI terminal)
- Serial Hardware handshake with a small rework to the card (2 wires)
Additional Features
- 8 Digit 7 Segment Display
- 8 position DIP switch
- 3 User pushbuttons, 1 DEV-OE pushbutton, 1 nCONFIG pushbutton
- 12 "Ring" LEDs - 2 removed and used for hardware handshake rework
- 24C04 I2C EEPROM
MultiComp On A4-CE10 Card
- Wiki page for Cyclone IV FPGA EP4CE10E22C8N Development Board
Features for MultiComp Use
- Enough Internal SRAM to make small (32KB) BASIC computers
- Includes 5:6:5 VGA, PS/2 and CH340 USB-Serial converter
- A lot of I/O (26 pins) which can be easily accessed using EP4 FPGA BREAKOUT
- LCD Display connector with additional I/O
Limitations on MultiComp compatibility
- No native SD Card storage but could be built using EP4 FPGA BREAKOUT and SD CARD X49
- 1:1:1 video does not support 2:2:2 (bold characters under ANSI terminal)
- Serial Hardware handshake with a small rework to the card (2 wires)
Additional Features
- 8 Digit 7 Segment Display
- 8 position DIP switch
- 3 User pushbuttons, 1 DEV-OE pushbutton, 1 nCONFIG pushbutton
- 12 "Ring" LEDs - 2 removed and used for hardware handshake rework
- 24C04 I2C EEPROM
MultiComp On A_ESTF_V2_EP4CE22 Card
Features for MultiComp Use
- Includes VGA, PS/2 and USB-Serial converter
- A lot internal SRAM (up to 56KB)
- MicroSD card socket with card detect LED
Limitations on MultiComp compatibility
- No external SRAM but very large SDRAM
- A lot of I/O options
- Not widely available
- Has no USB-Serial Interface (has RS-232)
Additional Features
- A lot of I/O pins on the base board and on the FPGA board
- Eight 7 Segment Displays
- 3x3 matrix of pushbutton switches
- 3 user pushbutton switches on baseboard
- 3 user pushbutton switches on FPGA board
- Buzzer
- IR receiver
- Power switch
- 24C02 I2C EEPROM
- 8 position DIP Switch
MultiComp On ZrTech Cyclone IV FPGA Card
- EP4 FPGA card Wiki page
- Marked as zrTech V2.00
- We did a YouTube video series on this card.
Features for MultiComp Use
- Includes VGA, PS/2 and USB-Serial converter
- Enough Internal SRAM to make small (16KB) BASIC computers
Limitations on MultiComp compatibility
- Very limited I/O
- Most of the I/O pins are shared with the 16-bit Video
- Would require removing R-packs to gain I/O
- Driver for USB-Serial doesn't work under Windows 10 (painful workaround)
- No SD Card storage
- No external SRAM but very large SDRAM (not supported yet in our builds)
- Would require a mod for serial hardware handshake (there's a pin or two free on the I/O which could at least do RTS)
Additional Features
- On/Off switch - nicer than plugging/unplugging DC power cable
- 4 pushbuttons
- Four digit 7 Segment Display
- IR LED
- Buzzer
- A/D with SMA connector
Our FPGA Support Cards
These cards provide some of the missing functionality of the purchased FPGA card.
EP4 FPGA BREAKOUT
- Wiki page for EP4 FPGA BREAKOUT
- Daughtercard for
VGAX49
- VGAX49 Wiki page
- Digital VGA adapter
- 16-bit digital video
- 5:6:5 (R:G:B) mapping (maximum)
- 2:2:2 (R:G:B) mapping (option)
SD CARD X49
- SD CARD X49 Wiki page
- SD or SDHC card adapter
- 5V to 3.3V regulator
- 3.3V to 5V TXS0104E level shifter
- Activity LED
TinyPS2
- TinyPS2 Wiki page
- PS/2 keyboard or mouse to TTL Level Serial converter
- ATTiny85
- 115,200 baud
- 49x49mm ODAS form factor
- 4-40 mounting holes
FTDI-49MM
- FTDI-49MM Wiki page
- FTDI FT230X IC
- USB B connector (not micro or mini, but the beefy USB B connector)
- FTDI compatible pinout
- 3.3V or 5V selection jumper
- Header for 5V power distribution
- Rx and Tx LEDs
Grant Searle's FPGA MultiComputer Project(s)
Multicomp Pages
- Multicomp Github repo
- Grant Searle's Multicomp page
- Neal Crook's 6809 Multicomp Github
- Retrobrewing Multicomp
- mc-2g-1024 multi-boot capability
- System 09 - VHDL 6809 System On a Chip
Our MultiComp Retro-Computer Video Series
EP2 Video Series
EP4 Video Series
6800 CPU
S120 Bus Computer
My first attempt to build a computer was around an MC6800 CPU so it has a soft spot in my heart, Back in 1977 (before my Ohio Scientific SuperBoard II I had my own homebrew computer. I never took any pictures of it and the hardware is long gone now. These are the pieces of it I remember.
- Ran on Elco? 120 pin edge connector wire wrapped cards
- 6800 Processor board running at 1 MHz
- 2K of Static RAM board
- 2716 EEPROM board (may have had 4 sockets total, don't recall for sure)
- Front panel switches and LEDs to enter the address/data (Step/Insert) and blink lights
I remember getting it to run and I do remember blinking a light back and forth on it. Once I got the SuperBoard II, I stopped working on my own board.
It might be fun to reproduce that board!
Pieces to Reproduce my original S120 Bus Computer
- Michael Holley's SWTPC 6800/6809 documentation collection
- N8VEM RetroComputing Wikipedia page
- Retrobrew Computers
- Kim-1 board - Similar concept
Hardware
- M6800 VHDL code from OpenCores
Software
- AS68 Cross Assembler
- ASM68C Cross Assembler
- Collection of Assembly Language tools for the M6800
- 6800 Basics
- 6800 Assembly Language Programming (pdf) by Lance Leventhal
- 6800 Instruction Set Cheat Sheet
M6800_MIKBUG - Tested/Works
This is an FPGA build of something similar to that machine
- Fills a hole in Grant Searle's Multicomp (he hadn't finished a 6800 version)
- MC6800 CPU
- Running MIKBUG from back in the day (SmithBug ACIA version)
- 12.5 MHz
- 60K (external) RAM version
- MC6850 ACIA UART
- Video Display Unit (VDU)
- Color attributes
- XGA 80x25 ANSI character display
- Extended (256) character set
- PS/2 keyboard
Memory Map
- $0000-$EFFF - 60KB external sRAM
- $0000-$EEFF - User RAM area
- $EF00-$EFFF - scratchpad used by MIKBUG
- I/O Map
- $FC18-$FC19 - VDU
- $FC28-$FC29 - ACIA
- Pin_60 of the FPGA swaps addresses of VDU and ACIA port
- Installed (Pin_60 to Ground) uses Serial port
- Removed uses VDU
- $F000-$FFFF - MIKBUG ROM
- I/O "hole" opened up at 0xFC00-0xFCFF
Systems
- MITS Altair 680
- Altair 680b Mainframe
- SWTPC 6800
- SWTP 6800 system
- Sphere 1 computer History
- DREAM 6800 Archive Site
- Planet m68k - News around Motorola 68000 CPU computer systems
Software
- Muticomp M6800 MIKBUG
- Smithbug, MIKBUG 6800 ROM monitor
- Monitors for the 6800
- A68 6800 cross-assembler
- MC6800 Assembler
- TSC BASIC for SWTPc 6800
- 6800 Assembly language books
- SWTPC 6800 Resident Assembler MP-E - (YouTube)
- EXORsim - Motorola EXORciser Simulator
Z80 CPU
- Land Boards Z80 in 3 Chips
- Hackaday Z80 in 3 Chips
CP/M on FPGA - by Grant Searle
- Archive.org copy of Grant's site from 2012
- Archive.org copy of Grant's Multicomp from 2012
- Fit results
- Two UART Serial interface
- No Video Display
- External RAM
- Grant noted about the SD card interface:
... the SD controller is easy to control - in BASIC POKE the sector number, POKE the write command, POKE 512 bytes to the same location to write a sector, or POKE the sector number, POKE the read command, and PEEK 512 bytes to read a sector.
Retrobrew Computer Builds of the Multicomp Project(s)
- MultiComputerZ80 build - Lots of extras
- Some folks made a MultiComputer PCB, too - Retrobrewing
- Another board
- Yet another board
- Jeelabs Building a MultiComp-based Z80
- Patch WordStar 3.0 to use ANSI screen commands
- Homebrew Z80
- "The Thing": FPGA + STM32
- Z80 BASIC on a Cyclone IV FPGA
CP/M Notes
- CP/M is not case sensitive
- REN NEWNAME.EXT=OLDNAME.EXT - Rename a file from the old to the new name
- ERA FILE2ERA.EXT - Erase a file
- Asterisk is wildcard
- .COM are command files
- PIP - copy command
- PIP NEWCOPY.EXT=COPYFROM.EXT - Copy from COPYFROM.EXT to NEWCOPY.EXT
- Drive references A:
- Drives go from A-???
- LS is a better direction program
CP/M Resources on the Net
- CP/M Operating System Manual
- Digital Research CP/M Site
- A Short History of CP/M
- BBC BASIC (Z80)
- CP/M Console Command Processor Instructions
- OAK Repository - CP/M Archive - On the Wayback machine
- Intro to Z80 Retrocomputing - Scott Baker's series on the RC2014
- Digital Research Source Code
- CP/M Programming Languages and Tools retroarchive page
- Multicomp FPGA - CP/M Demo Disk
Z80 Software Development
AZTEC C Compiler
- Compile C code to CP/M executable
- Aztec C Compiler Manual
- C Vers. 1.06D 8080 (C) 1982 1983 1984 by Manx Software Systems
- Example Code - HELLO2.C
int main() { int i; for (i=0; i< 10; i++) printf("%d\n"); }
- Compile code to assembly file
- Creates a .ASM file
CC HELLO2.C
- Assemble Code to object file
- Creates a .O file
AS HELLO2.ASM
- Link Code with C library to .COM executable file
LN HELLO2.O C.LIB
ALGOL-M Compiler
- Fizzbuzz example
BEGIN INTEGER FUNCTION DIVBY(N, D); INTEGER N; INTEGER D; BEGIN DIVBY := 1 - (N - D * (N / D)); END; INTEGER I; FOR I := 1 STEP 1 UNTIL 100 DO BEGIN IF DIVBY(I, 15) = 1 THEN WRITE("FizzBuzz") ELSE IF DIVBY(I, 5) = 1 THEN WRITE("Buzz") ELSE IF DIVBY(I, 3) = 1 THEN WRITE("Fizz") ELSE WRITE(I); END; END
- To run compiler:
algolm fizzbuzz
- Result is:
ALGOL-M COMPILER VERS 1.1 0 ERROR(S) DETECTED
- To run ALGOL interpreter
runalg fizzbuzz
- Result is
ALGOL-M INTERPRETER-VERS 1.0 1 2 Fizz 4 Buzz Fizz 7 8
Microsoft BASIC Notes
- SAVE "MYPROG.BAS"
- LOAD "MYPROG.BAS"
- SYSTEM -- Return to CP/M
- NAME "OLDFILE.BAS" AS "NEWFILE.BAS"
- NEW - Delete program
- OUT 132,1 -- Output to I/O port 132
- PRINT MEM - Free memory (6809 Extended BASIC)
Notes
- Z80 Protocol Decoder
- Z80 = mc-2g-1024 - Best build
- Z80 Assembly Language books - archive.org
NASCOM BASIC
- OUT ADDR,DATA
- INP(128) - Reads I/O address 128 (0x80)
6502 CPU
Ohio Scientific SuperBoard II - My first commercial personal computer
- Manufacturer: Ohio Scientific
- Model 600 Rev B Board Manual
- Model: Superboard II ( Model 600 )
- Available: 1978
- Price: US $279 assembled
- CPU: 6502
- RAM: 4K static RAM, 8K max
- CEGMON - Monitor in 4K of EPROM
- Display: composite video, 30 X 30 text
- Built-in keyboard
- Single board design
- I eventually got a RAM expansion card with Floppy Disk Controller
- Ports: composite video, cassette
- Storage: cassette
- Microsoft BASIC
- 2K Monitor ROM (CEGMON)
- Compkit 101 - British clone of the SuperBoard II
Superboard II Documents
- Dave's OSI Repository - Lots of scanned documents up there - large file sizes
- Compukit UK101 Docs on Sourceforge]
- CEGMON – a blast from the past
- Code for the 6502 microprocessor, mostly for the Replica 1 computer
- Nice page on the C1P/Superboard II
- 6502 Instruction Set
Keyboard Layout
CC65 - C Compiler for the 6502 and OSI C1P
- Ohio Scientific-specific information for cc65
- cl65 Users Guide
- CC65 - C Compiler for the 6502
- CC65 Wiki
SuperBoard II Emulator
- OSI Challenger 1P (8Kb) with Debugger - JAVA web based emulator
- OSI Challenger 1P (32Kb) with Disk Support - JAVA web based emulator
- pill_6502: 8-bit 6502 CPU and 6850 ACIA emulation on the STM32 blue pill to run Microsoft BASIC from 1977
BASIC Programs
10 I=1 20 PRINT "HELLO DAVEY" 30 I=I+1 40 IF I < 5 GOTO 20
SuperBoard II/ Retro-Tech Refresh
I was looking around for a way to recreate my OSI Superboard and found Grant Searle's design.
- EP2C5-DB - Our creation of a daughtercard which implements Grant Searle's Multi-Computer
- Grant Searle's CompuKit UK101
- Based on Cyclone II EP2C5 Mini Dev Board
- Someone built one of the CompuKit clones as a CPM box
- Compukit 101 video
- Ohio Scientific publications
- Enhanced 6502 BASIC
- Experience porting Enhanced Basic to a 6502 Computer
- "EhBASIC is about 11 KB"
- Experience porting Enhanced Basic to a 6502 Computer
- 6502.org - the place for retro 6502 projects
- System68
- L-Star: Software-Defined 6502 Computer - Uses a Propeller chip
- Pick-and-mix to create your own custom computer on a low-cost FPGA board
- Daryl's Computer Page
- Daryl has designed multiple single board computers
- 6502 Assembly Language books - archive.org
- Micro 6502 Journal
6809 CPU
Neal started from Grant Searle's work and fixed a number of issues with the VHDL code.
- Neil Crook's 6809 Wiki of Multicomp FPGA builds - very helpful
- Neal Crook's Multicomp GitHub (with docs)
- Neal did work on the 6809 core that Grant Searle was using
- Changed reset to active-low, consistently asynchronous
- Changed clock to rising-edge
- Clocked the processor on the input (50MHz) clock rather than a divided clock
- Used the HOLD input to control the clock rate.
- Added MMU to control extended RAM
- Neal did some Video Display Unit (VDU) Modifications
- Neal's Memory Mapper
- Neal got SDHC working - the original was SD only
- Neil Crook's 6809 Multicomp FPGA builds - very helpful
- Starting FORTH - First book of learning FORTH
- FUZIX
68000 CPU
Various 68000 builds
TG68_AMR Design
- Features
- 68000 Core
- SDRAM support
- VGA Framebuffer
- Pixel dithering maps 24-bit video to six bits
- Various resolutions
- Stored in SDRAM
- PS/2 Keyboard and Mouse support
- SD Card support
- Runs on RETRO-EP4CE15 basecard
- VGA connector
- 6 bit video (2:2:2)
- PS/2 connector
- FTDI USB to serial converter
- Genuine FT230XS FTDI USC to Serial chip
- USB B
- Tx/Rx LEDs
- SD or SDHC Card
- Can do micro SDHC card using SD card adapter
- VGA connector
TG68_AMR Links
- AMR's TG68 Experiments - Original design
- My GitHub page
- Hackaday page
TS2 design with Multicomp parts
- 68000 CPU in VHDL running on FPGA card
- Running on RETRO-EP4CE15 card
- Runs TS2BUG monitor or TUTOR from ROM
- Built-on Video Display Unit (VDU)
- Color attributes
- XGA 80x25 ANSI character display
- Extended (256) character set
- PS/2 keyboard
- 32KB SRAM
- 16KB ROM
- Loads/run Tiny Basic
- Type LOAD on VDU port
- Copy/paste S1/S9 records from TBI68K.HEX into ACIA port
- JUMP 0900 to run
TS2 Links
- Jeff Tranter's build (BLOG) - TS2 build
- Educational Computer Board (MEX68KECB)
68000 Software
- Tiny68K
- t68kbug Debugger
- Linux toolchain for the MC68000 CPU - gcc (Linux - uClinux/MC68000)
- Building uClinux for a 68000 Target
- Installing binutils and GCC as cross-compiler for the Motorolla 68000
- EmuTOS - Free operating system for Atari computers, and more
- The LLVM Compiler Infrastructure - 68K backend
Other People's 68000 Builds
- comp.sys.m68k Frequently Asked Questions (FAQ) (1996)
- MiniMig TC64
- Hackaday 68000 pages
- 68000 brought to life!
- Kiwi - a 68k Homebrew Computer
RISC V CPU
- RISC-V Core
- biRISC-V - 32-bit dual issue RISC-V CPU
BASIC
- BASIC Programming Resources and Chipmunk Basic Archive
- Tiny BASIC
- Itty Bitty Computers & TinyBasic
- TINY BASIC User Manual
DEC (Digital Equipment Corp) Computers
PDP-11
My PDP-11 (pdp2011) FPGA builds
- PDP-11 ON RETRO-EP4CE15 - Works
- Based on Sytse van Slooten's original design pdp2011
- Dave Richards pdp2011
Other PDP-11 FPGA builds
PDP-11 Software
- System Disk Images
- Disk Images
- PDP-11 Processor Handbook 1981 - on BitSavers
- PDP-11 on BitSavers
- PiDP-11: Replica of the 1970s PDP-11/70 emulated on Raspberry Pi
PDP-8
- PDP-8 in VHDL
- A FGPA Implementation of the PDP-8
- PDP-8 Processor Core and System :: Overview
- The Digital Equipment Corporation PDP-8 - Memory Reference Instructions
Terminal
Grant Searle Terminal Design
- Uses two Arduino'ish processors to implement an entire terminal
- NTSC output
- PS/2 Keyboard input
- Grant Searle's Monitor Keyboard Design
- Older AtMEGA32 version of Monitor Keyboard Design
External Sites
PiGFX
- PiGFX is a bare metal kernel for the Raspberry Pi that implements a basic ANSI terminal emulator with the additional support of some primitive graphics functions.
- It can be driven by pushing characters to the raspi UART.
https://raw.githubusercontent.com/fbergama/pigfx/master/doc/scr1.jpg