132 lines
3.9 KiB
Plaintext
132 lines
3.9 KiB
Plaintext
|
hexameter : Convert Intel hex files to a binary file
|
||
|
version 2.0.0
|
||
|
Copyright (c) 2003-2008, Takahide Matsutsuka.
|
||
|
|
||
|
1/ What is it?
|
||
|
|
||
|
It converts Intel hex files, which emitted by SDCC-Z80 compiler, to
|
||
|
a binary file. You can attach additional prefix and/or suffix file
|
||
|
to comply the file with arbitrary binary format.
|
||
|
It provides a development environment of C language on PC-6001 and
|
||
|
other old computers.
|
||
|
|
||
|
|
||
|
2/ Installation
|
||
|
|
||
|
Installation can be done in following steps.
|
||
|
|
||
|
a) Download and install SDCC from http://sdcc.sf.net/
|
||
|
Version 2.8.0 is tested.
|
||
|
SDCC is a cross-compiler for Z80 and other 8bit CPUs.
|
||
|
Extract an archive on your disk, say "c:/sdcc".
|
||
|
|
||
|
b) Copy hexameter.exe to any path-available directory. for exmaple
|
||
|
"c:/sdcc/bin".
|
||
|
|
||
|
|
||
|
3/ Use
|
||
|
|
||
|
a) Write your own C code.
|
||
|
|
||
|
b) Compile your code using SDCC.
|
||
|
While linking, you need to specify options for SDCC so that the
|
||
|
code can be worked on your machine.
|
||
|
See sample/Makefile for actual usage.
|
||
|
|
||
|
% sdcc -mz80 -c YOUR_CODE1.c
|
||
|
% sdcc -mz80 -c YOUR_CODE2.c
|
||
|
|
||
|
This step creates a file YOUR_CODE1.o and YOUR_CODE2.o respectively,
|
||
|
which run on Z80-based machine.
|
||
|
|
||
|
% for target in YOUR_CODE1.o YOUR_CODE2.o; do echo $@ >> YOUR_LIB.lib $@; done
|
||
|
|
||
|
This step makes a library file.
|
||
|
|
||
|
sdcc -mz80 --no-std-crt0 --code-loc 0x840f --data-loc 0 -o YOUR_APP.ihx crt0.o -lYOUR_LIB.lib
|
||
|
|
||
|
-mz80 specifies the Z80 mode.
|
||
|
--code-loc specifies the start address of your object code.
|
||
|
Basically, it depends on the machine and RAM size. As for PC-6001,
|
||
|
0x840f for 32kB, or 0xc40f for 16kB. As for PC-6001mkII, it would
|
||
|
be 0x800f.
|
||
|
If you are not sure what you are about to do, just leave it as
|
||
|
default 0x840f.
|
||
|
--data-loc 0 specifies the code is followed by data.
|
||
|
You can specify an arbitrary address instead.
|
||
|
--no-std-crt0 indicates that you use your own crt0 instead of sdcc's
|
||
|
default crt0 object. The customized crt0.o file is in lib directory
|
||
|
of this release.
|
||
|
|
||
|
c) Convert ihx file to cas file using hex2cas.
|
||
|
|
||
|
hexameter YOUR_CODE.ihx [YOUR_CODE2.ihx ...]
|
||
|
The ihx files are just attached in the specified order.
|
||
|
|
||
|
Here you can take some options:
|
||
|
-p <filename> specify prefix file name.
|
||
|
-s <filename> specify suffix file name.
|
||
|
-n <name> specify PC-6001 cassette file name,
|
||
|
must be 6 characters or less.
|
||
|
-v verbose output
|
||
|
-o <filename> specify output file name
|
||
|
-b <size> size of the output file in hexadecimal bytes.
|
||
|
only if the size of the output is less than the size
|
||
|
specified, the trailing bytes will filled by zeroes.
|
||
|
note that it doesn't mean the size of output is
|
||
|
restricted by the given size.
|
||
|
-h displays simple usage
|
||
|
|
||
|
Prefixes and suffixes are provided by files, which should be in the same
|
||
|
directory as hexameter.exe.
|
||
|
mode1
|
||
|
mode2
|
||
|
mode5
|
||
|
n88
|
||
|
rom60
|
||
|
rom62
|
||
|
suffix
|
||
|
|
||
|
d) Example
|
||
|
|
||
|
The following is a typical example to convert from ihx files to
|
||
|
PC-6001 loadable cassette format.
|
||
|
% hexameter -p mode2 -s suffix mycode1.ihx mycode2.ihx -o myapp.p6
|
||
|
|
||
|
e) Load your cas file into your 6001 emulator.
|
||
|
|
||
|
I've checked it working on the following emulators:
|
||
|
|
||
|
VirtualTrek
|
||
|
http://www.geocities.com/emucompboy/
|
||
|
iP6Win
|
||
|
http://www.retropc.net/mm/pc6001/
|
||
|
PC-6001VW
|
||
|
http://bernie.hp.infoseek.co.jp/develop/pc6001vw.html
|
||
|
|
||
|
|
||
|
4/ Note
|
||
|
|
||
|
- While I've tested the tool on Cigwin on Win32, I think it works
|
||
|
on other environments with a little work.
|
||
|
|
||
|
- SDCC has many isuues regarding compilation. Don't blame me about them! :)
|
||
|
|
||
|
|
||
|
5/ History
|
||
|
|
||
|
3/29/2003 1.0.0 First version
|
||
|
4/20/2003 1.0.1 Mode option has been added
|
||
|
9/01/2007 1.1.0 ROM-mode has been added
|
||
|
9/28/2007 1.2.0 Customized crt0 has been introduced to clear global data
|
||
|
3/15/2008 1.3.0 VRAM options introduced
|
||
|
4/28/2008 1.4.0 Header file option introduced
|
||
|
|
||
|
5/17/2008 2.0.0 Migrated to hexameter, to support more flexible configurations
|
||
|
|
||
|
|
||
|
Enjoy!
|
||
|
|
||
|
http://www.markn.org/
|
||
|
markn@markn.org
|