Difference between revisions of "RetroComputers"

From Land Boards Wiki
Jump to navigation Jump to search
(41 intermediate revisions by the same user not shown)
Line 93: Line 93:
 
=== CP/M Resources on the Net ===
 
=== CP/M Resources on the Net ===
  
 +
* [http://www.cpm.z80.de/manuals/cpm22-m.pdf CP/M Operating System Manual]
 
* [http://www.digitalresearch.biz/CPM.HTM Digital Research CP/M Site]
 
* [http://www.digitalresearch.biz/CPM.HTM Digital Research CP/M Site]
 
* [http://landley.net/history/mirror/cpm/history.html A Short History of CP/M]
 
* [http://landley.net/history/mirror/cpm/history.html A Short History of CP/M]
Line 120: Line 121:
 
=== AZTEC C Compiler ===
 
=== AZTEC C Compiler ===
  
 +
* Compile C code to CP/M executable
 
* [https://archive.org/details/bitsavers_manxAztecC_11703326 Aztec C Compiler Manual]
 
* [https://archive.org/details/bitsavers_manxAztecC_11703326 Aztec C Compiler Manual]
* C Vers. 1.06D 8080  (C) 1982 1983 1984 by Manx Software Systems
+
** C Vers. 1.06D 8080  (C) 1982 1983 1984 by Manx Software Systems
 
* Example Code - HELLO2.C
 
* Example Code - HELLO2.C
 
<pre>
 
<pre>
Line 132: Line 134:
 
</pre>
 
</pre>
  
* Compile code
+
* Compile code to assembly file
 +
** Creates a .ASM file
 
<pre>
 
<pre>
CC HELLO2
+
CC HELLO2.C
 
</pre>
 
</pre>
  
* Assemble Code
+
* Assemble Code to object file
 +
** Creates a .O file
 
<pre>
 
<pre>
AS HELLO2
+
AS HELLO2.ASM
 
</pre>
 
</pre>
  
* Link Code
+
* Link Code with C library to .COM executable file
 
<pre>
 
<pre>
 
LN HELLO2.O C.LIB
 
LN HELLO2.O C.LIB
 +
</pre>
 +
 +
<video type="youtube">wQY2VUV8MDQ</video>
 +
 +
=== ALGOL-M Compiler ===
 +
 +
* Fizzbuzz example
 +
 +
<pre>
 +
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
 +
</pre>
 +
* To run compiler:
 +
<pre>
 +
algolm fizzbuzz
 +
 +
</pre>
 +
* Result is:
 +
<pre>
 +
ALGOL-M COMPILER VERS 1.1
 +
  0 ERROR(S) DETECTED
 +
</pre>
 +
* To run ALGOL interpreter
 +
<pre>
 +
runalg fizzbuzz
 +
</pre>
 +
* Result is
 +
<pre>
 +
ALGOL-M INTERPRETER-VERS 1.0
 +
 +
 +
    1
 +
    2
 +
Fizz
 +
    4
 +
Buzz
 +
Fizz
 +
    7
 +
    8
 
</pre>
 
</pre>
  
Line 176: Line 240:
 
* [[mc-2g-102|Z80 = mc-2g-1024]] - Best build
 
* [[mc-2g-102|Z80 = mc-2g-1024]] - Best build
 
* [https://archive.org/search.php?query=z80%20assembly%20language Z80 Assembly Language books] - archive.org
 
* [https://archive.org/search.php?query=z80%20assembly%20language Z80 Assembly Language books] - archive.org
 +
 +
== NASCOM BASIC ===
 +
 +
* OUT ADDR,DATA
 +
* INP(128) - Reads I/O address 128 (0x80)
  
 
== Our Retro-Computer Video Series ==
 
== Our Retro-Computer Video Series ==
Line 253: Line 322:
 
* [http://www.technology.niagarac.on.ca/people/mcsele/hobby/ohio-scientific-computers-series-600-challenger-1p-superboard/ Nice page on the C1P/Superboard II]
 
* [http://www.technology.niagarac.on.ca/people/mcsele/hobby/ohio-scientific-computers-series-600-challenger-1p-superboard/ Nice page on the C1P/Superboard II]
 
* [https://www.masswerk.at/6502/6502_instruction_set.html 6502 Instruction Set]
 
* [https://www.masswerk.at/6502/6502_instruction_set.html 6502 Instruction Set]
 +
 +
=== Keyboard Layout ===
 +
 +
[[File:opkbd.jpg]]
  
 
=== CC65 - C Compiler for the 6502 and OSI C1P ===
 
=== CC65 - C Compiler for the 6502 and OSI C1P ===
Line 279: Line 352:
  
 
* [[EP2C5-DB]] - Our creation of a daughtercard which implements Grant Searle's Multi-Computer
 
* [[EP2C5-DB]] - Our creation of a daughtercard which implements Grant Searle's Multi-Computer
* [http://searle.hostei.com/grant/uk101FPGA/index.html CompuKit UK101]
+
* [http://searle.x10host.com/uk101FPGA/index.html Grant Searle's CompuKit UK101]
 
** Based on Cyclone II EP2C5 Mini Dev Board
 
** Based on Cyclone II EP2C5 Mini Dev Board
 
** Someone built one of the CompuKit clones as a CPM box
 
** Someone built one of the CompuKit clones as a CPM box
Line 302: Line 375:
  
 
* My first attempt to build a computer was around an MC6800 CPU so it has a soft spot in my heart
 
* My first attempt to build a computer was around an MC6800 CPU so it has a soft spot in my heart
 +
 +
=== M6800_MIKBUG - Tested/Works ===
 +
 +
[https://github.com/douggilliland/MultiComp/tree/master/MultiComp_On_EP2C5/M6800_MIKBUG_ExtSRAM_MIKBUG_at_F000 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)
 +
** Runs Tom Pittman's Tiny BASIC
 +
* 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 [https://web.archive.org/web/20180221064620/http://searle.hostei.com/grant/Multicomp/index.html#ANSICodes 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 ===
 
=== Systems ===
Line 321: Line 425:
 
* [http://www.vintagecomputer.net/browse_thread.cfm?id=416 TSC BASIC for SWTPc 6800]
 
* [http://www.vintagecomputer.net/browse_thread.cfm?id=416 TSC BASIC for SWTPc 6800]
 
* [https://archive.org/search.php?query=6800%20assembly%20language 6800 Assembly language books]
 
* [https://archive.org/search.php?query=6800%20assembly%20language 6800 Assembly language books]
 +
 +
== 68000 CPU ==
 +
 +
* [https://github.com/douggilliland/MultiComp/blob/master/MultiComp_On_RETRO-EP4CE15/TS2_68000/README.mediawiki 68000 CPU in VHDL running on FPGA card]
 +
** Running on [[RETRO-EP4CE15]] card
 +
** Runs [https://github.com/douggilliland/Retro-Computers/tree/master/68000/TS2/monitor/TSBUG2 TS2BUG monitor] or [https://github.com/douggilliland/Retro-Computers/tree/master/68000/TS2/tutor TUTOR] from ROM
 +
** Built-on Video Display Unit (VDU)
 +
*** Color attributes
 +
*** XGA 80x25 [https://web.archive.org/web/20180221064620/http://searle.hostei.com/grant/Multicomp/index.html#ANSICodes ANSI character display]
 +
*** Extended (256) character set
 +
** PS/2 keyboard
 +
** 32KB SRAM
 +
** 16KB ROM
 +
** Loads/run [https://github.com/douggilliland/Retro-Computers/tree/master/68000/MECB/tbi68k12 Tiny Basic]
 +
*** Type LOAD on VDU port
 +
*** Copy/paste S1/S9 records from [https://github.com/douggilliland/Retro-Computers/blob/master/68000/MECB/tbi68k12/TBI68K.HEX TBI68K.HEX] into ACIA port
 +
*** JUMP 0900 to run
 +
 +
=== Other People's 68000 Builds ===
 +
 +
* [https://jefftranter.blogspot.com/2016/12/building-68000-single-board-computer.html Jeff Tranter's build] (BLOG) - TS2 build
 +
** [https://github.com/jefftranter/68000/tree/master/testprog Test Programs]
 +
** [https://github.com/jefftranter/68000/tree/master/monitor Monitor code]
 +
* [http://easy68k.com/paulrsm/mecb/mecbbyte.htm Educational Computer Board (MEX68KECB)]
 +
** [http://www.easy68k.com/paulrsm/mecb/mecb.htm Motorola MC68000 Software]
 +
** [http://www.easy68k.com/paulrsm/index.html Motorola 680x0 Resources]
 +
* [http://www.faqs.org/faqs/motorola/68k-chips-faq/ comp.sys.m68k Frequently Asked Questions (FAQ)] (1996)
 +
* [https://github.com/TobiFlex/minimig_tc64 MiniMig TC64]
 +
* [https://hackaday.io/search?term=68000 Hackaday 68000 pages]
 +
* [https://github.com/EtchedPixels/FUZIX FUZIX]
 +
* [https://retrobrewcomputers.org/doku.php?id=boards:sbc:tiny68k Tiny68K]
 +
** [https://retrobrewcomputers.org/lib/exe/fetch.php?media=boards:sbc:tiny68k:t68kbug.zip t68kbug Debugger]
 +
* [http://mc68k.blogspot.com 68000 brought to life!]
 +
** [https://code.google.com/archive/p/m68k/downloads Linux toolchain for the MC68000 CPU - gcc] (Linux - uClinux/MC68000)
 +
** [https://www.youtube.com/watch?v=hgWZDSXkC58&feature=emb_logo 68000 booting uClinux 2.4.x (with 4Gb sdhc card)] - YouTube video
 +
** [https://www.embeddedrelated.com/showthread/comp.arch.embedded/34824-1.php Minimal hardware requirement for uClinux]
 +
* [https://www.bigmessowires.com/2014/11/06/building-uclinux-for-a-68000-target/ Building uClinux for a 68000 Target]
 +
* [https://sourceforge.net/projects/uclinux/ uClinux Sourceforge]
 +
* [https://darkdust.net/writings/megadrive/crosscompiler Installing binutils and GCC as cross-compiler for the Motorolla 68000]
  
 
== BASIC ==
 
== BASIC ==
Line 331: Line 474:
 
== DEC (Digital Equipment Corp) Computers ==
 
== DEC (Digital Equipment Corp) Computers ==
  
 +
* [[PDP-11 on A-ESTF FPGA]]
 
* [https://groups.google.com/forum/#!msg/alt.sys.pdp8/lqMCn6dlA-U/_3p9SJDTfaYJ PDP-8 in VHDL]
 
* [https://groups.google.com/forum/#!msg/alt.sys.pdp8/lqMCn6dlA-U/_3p9SJDTfaYJ PDP-8 in VHDL]
 
* [http://www.jaywalk.co.uk/pdp8/ A FGPA Implementation of the PDP-8]
 
* [http://www.jaywalk.co.uk/pdp8/ A FGPA Implementation of the PDP-8]

Revision as of 20:10, 12 July 2020

Our Retro-Computer Projects

RETRO-EP4 FPGA

RETRO-EP4 TOP BOTTOM-720px.jpg

RETRO-EP4CE15 FPGA

P981-720px.jpg

EP2C5-DB FPGA

  • Land Boards EP2C5-DB FPGA Retro-Computer card

P971-cropped-720px.jpg

BASE-EP4CE6

  • Land Boards BASE-EP4CE6 card is a breakout board that connects via cables to the Land Boards EP2C5-DB card

BASE-EP4CE6-720px-197.jpg

Purchased FPGA Card

C4 Dev 687-720px.jpg

Multicomp

Grant Searle's FPGA MultiComputer Project(s)

Retro-Computer Map EP2 to EP4 card

  • Map EP2 to EP4 card

My Build of the Z80 Version

CPM-2UARTs-NoVideo.PNG

Retrobrew Computer Builds of the Multicomp Project(s)

Neil Crook Builds of the Multicomp Project - 6809 Version

Neil started from Grant Searle's work and fixed a number of issue with the VHDL code.

CP/M Resources on the Net

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

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

  • 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.

Z80

Z80 P865-cropped-720px.jpg

NASCOM BASIC =

  • OUT ADDR,DATA
  • INP(128) - Reads I/O address 128 (0x80)

Our Retro-Computer Video Series

EP2 Video Series

Video Series

EP4 Video Series

S120 Bus Computer

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 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

Ohio Scientific SuperBoard II - My first commercial personal computer

Osi-600.jpg

SuperBoard II

  • 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

Keyboard Layout

Opkbd.jpg

CC65 - C Compiler for the 6502 and OSI C1P

SuperBoard II Emulator

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.

6502 Computer Projects

6800

  • My first attempt to build a computer was around an MC6800 CPU so it has a soft spot in my heart

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)
    • Runs Tom Pittman's Tiny BASIC
  • 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)
  • 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

Software

68000 CPU

Other People's 68000 Builds

BASIC

DEC (Digital Equipment Corp) Computers

External Sites

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

ATMega328Video 2.2.gif

  • Older AtMEGA32 version of Monitor Keyboard Design

SerialTerminal-P1010506-720px.jpg

RetroBrew Computers Site