OpenCores
URL https://opencores.org/ocsvn/z3/z3/trunk

Subversion Repositories z3

[/] [z3/] [trunk/] [instructions.txt] - Rev 2

Compare with Previous | Blame | View Log

BUILDING THE BIOS
-----------------

TO BUILD PATCHED INFORM 6

Clone the git repository of...
https://github.com/charcole/Inform6.git

git checkout inform6b
clang -O3 *.c -o inform6b.out


ASSEMBLE THE ROM

Obtain 4 Z machine V3 games that are less than 120Kb. Update the roms array in
combinedata.c to reference the games you are using. The first game in the
array must be around 90Kb (like Zork I) as the icons are stored in this space.
 
cd bios
clang makefont.c -o makefont.out && ./makefont.out
clang -O3 compressicon.c -o compressicon.out && ./compressicon.out 
clang -O3 combinedata.c -o combinedata.out && ./combinedata.out
inform6b.out -v3 -t -l -y bios.inf

To alter font, load zfont2.xcf in the GIMP. Alter the image as needed. Bottom
row is for specifying how wide each character should be. Save image as
zfont2.h. Recompile and run makefont.out.

To alter icons, create an image 100x480 in the GIMP. Make indexed using 128
colour palette. Save as icons.h. Recompile and run compressicon then
combinedata. The compression ratio achieved must be better than around 60% to
fit after Zork I.



SIMULATING
----------

I used: Icarus-0.8.1-2005Sep12

Make sure you'll built the BIOS and it's in the same directory you are going
to run the Verilog simulation in.

iverilog z3.vl && ./a.out

If you want to run passed first request for input then touch.txt can be
generated using TouchGenerator in the utilities. Using this a script can be
provided which can be typed automatically during the simulation.

To check screen output Screen (in utilties) can be run on the output from
a.out. You may have to remove this section from the z3.vl...

                if (b.operNum==`OP_VAR && b.op==`OPVAR_BLIT1 && b.phase==0 && b.state==`STATE_DO_OP) begin
                        b.operand[1]=1;
                end

Another way of checking output is to look at ram.dat. At the end it contains
the scroll back buffer from the BIOS decoded and can be viewed in a text
editor.



RUNNING ON HARDWARE
-------------------

THE HARDWARE

A "EP2C5 Cyclone II Mini Board" AKA "CycloneII EP2C5T144 Learning Board".
These contain an EP2C5T144 which is an Cyclone II FPGA with around 4600 LEs.
They are very reasonably priced on eBay (~$10).

'2.4" TFT LCD Shield' by http://mcufriend.com was used as a screen. Again very
cheap off eBay (~$3). It's a colour screen with resistive touch screen.

RS Part No. Part No.            Description                                                                     Price
7118029         A29L040-70F     Parallel FLASH 4MB, 512Kx8, 3V, DIP32       £1.24
7444542         AS6C1008-55PCN  SRAM,1M,128Kx8,55ns,3V,Low Power,DIP32      £1.65
6696064         MCP3008-I/P             A/D Converter 10Bit 8-ch 2.7V SPI PDIP16        £1.53


TO PROGRAM THE FPGA

Obtain Altera Quantus II 13.0sp1. I believe this was the last version to
support Cyclone II. Open project altera/ZMachine.qpf and hit compile.
Nb. ZMachine.v is identical to z3.vl.


TO PROGRAM THE ROM

Using a Minipro TL866CS

minipro -w rom.z3 -p "A29L040 @DIP32"



OPTIONAL EXTRAS
---------------

TO BUILD THE BENCHMARK

inform6.out -v3 -t -l -y benchmark.inf \$MAX_STATIC_DATA=20000

Nb. This is the unpatched version of Inform 6.

You can include this in as one of the games in combinedata.c.


TO BUILD UTILITIES

Z-Ops: High level emulator. Useful for working on the BIOS.
clang -framework SDL2 -F/Users/charlie/Library/Frameworks
-I/Users/charlie/Library/Frameworks/SDL2.framework/Headers -I../../lib -O3 -g zops.c ../../lib/cclib64.a -o zops.out

16BitColor: Takes hex colours and turns them into 16 bit needed by screen
eg. ./16bitcolor.out 0xffe1a2
clang 16bitcolor.c -o 16bitcolor.out

TouchGenerator: Takes script2.txt and generates a list of simulated touch data
to type out the script. Used to automatically test the simulation.
clang touchgenerator.c -o touchgenerator.out

MakeGradient: Makes gradient for Mandelbrot generator easter egg. Image is
from gradient.h saved from the GIMP as a header in indexed mode. Output needs
pasting into bios.inf.
clang -O3 makegradient.c -o makegradient.out && ./makegradient.out

Screen: Takes the output from the simulator and draws the resultant screen
output. Outdated now, use zops instead.
clang -framework SDL2 -F/Users/charlie/Library/Frameworks -I/Users/charlie/Library/Frameworks/SDL2.framework/Headers screen.c -o screen.out

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.