diff --git a/recipes/z80mbc2/Makefile b/recipes/z80mbc2/Makefile new file mode 100644 index 0000000..c9e602e --- /dev/null +++ b/recipes/z80mbc2/Makefile @@ -0,0 +1,13 @@ +TARGET = os.bin +BASEDIR = ../.. +EDIR = $(BASEDIR)/emul +STAGE = $(EDIR)/stage + +.PHONY: all +all: $(TARGET) +$(TARGET): xcomp.fs $(STAGE) + cat xcomp.fs | $(STAGE) > $@ + +$(STAGE): + $(MAKE) -C $(EDIR) stage + diff --git a/recipes/z80mbc2/README.md b/recipes/z80mbc2/README.md new file mode 100644 index 0000000..ed0fe64 --- /dev/null +++ b/recipes/z80mbc2/README.md @@ -0,0 +1,41 @@ +# Z80-MBC2 + +The [Z80-MBC2][link] combines a Z80 and an ATMEGA32A to provide a CP/m capable +computing environment. It features a SD card bootloader which makes running +Collapse OS on it rather simple. + +## Recipe + +In this recipe, we're going to run Collapse OS on the Z80-MBC2, interfacing +through its serial port. We're going to use the MBC's API to implement BLK on +the SD card. (the BLK part isn't done yet. TODO) + +### Gathering parts + +* A Z80-MBC2 computer with its SD card module and a properly flashed "IOS" on + the ATMega32A. +* A FTDI-to-TTL cable to connect to the serial port. + +### Building the binary + +Running `make` will yield `os.bin` which is what we want. + +### Running on the Z80-MBC2 + +Mount the SD card on your modern computer and copy `os.bin` as `autoboot.bin`, +overwriting the binary that was previously there. + +Put back the SD card in the Z80-MBC2 and power it up by connecting the FTDI +adapter to it (red: VCC, black: GND, green: TX, white: RX). + +The FTDI adapter will show up as something like `ttyUSB0` (or `ttyU0` on +OpenBSD). Connect to it with `screen` or `cu` or whatever you like. Baud rate of +the Z80-MBC2 appears to be hardcoded to 115200. + +Then, enable IOS program selection by holding RESET and USER at the same time, +wait 2 seconds, releasing RESET, wait 2 seconds, releasing USER. You should then +be given a 1-8 choice, with 4 being "Autoboot". Type 4. + +You are now in Collapse OS. + +[link]: https://hackaday.io/project/159973-z80-mbc2-a-4-ics-homebrew-z80-computer diff --git a/recipes/z80mbc2/xcomp.fs b/recipes/z80mbc2/xcomp.fs new file mode 100644 index 0000000..db504f2 --- /dev/null +++ b/recipes/z80mbc2/xcomp.fs @@ -0,0 +1,19 @@ +0xff00 CONSTANT RS_ADDR 0xfffa CONSTANT PS_ADDR +RS_ADDR 0x80 - CONSTANT RAMSTART +212 LOAD ( z80 assembler ) +262 LOAD ( xcomp ) 270 LOAD ( xcomp overrides ) +282 LOAD ( boot.z80 ) 353 LOAD ( xcomp core low ) +CODE (emit) + A 1 LDrn, 1 OUTnA, HL POPqq, A L LDrr, 0 OUTnA, +;CODE +CODE (key) + BEGIN, 1 INAn, A INCr, JRZ, AGAIN, + A DECr, PUSHA, +;CODE +380 LOAD ( xcomp core high ) +(entry) _ +( Update LATEST ) +PC ORG @ 8 + ! +," CURRENT @ HERE ! " EOT, +ORG @ 256 /MOD 2 PC! 2 PC! +H@ 256 /MOD 2 PC! 2 PC!