mirror of https://github.com/wwarthen/RomWBW.git
2 changed files with 547 additions and 547 deletions
@ -1,341 +1,341 @@ |
|||
diskdef ibm-3740 |
|||
seclen 128 |
|||
tracks 77 |
|||
sectrk 26 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 6 |
|||
boottrk 2 |
|||
os p2dos |
|||
end |
|||
|
|||
diskdef 4mb-hd |
|||
seclen 128 |
|||
tracks 1024 |
|||
sectrk 32 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os p2dos |
|||
end |
|||
|
|||
diskdef pcw |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 9 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef pc1.2m |
|||
seclen 512 |
|||
tracks 80 |
|||
# this format uses 15 sectors per track, but 30 per cylinder |
|||
sectrk 30 |
|||
blocksize 4096 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 3 |
|||
end |
|||
|
|||
# CP/M 86 on 1.44MB floppies |
|||
diskdef cpm86-144feat |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 18 |
|||
blocksize 4096 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef cf2dd |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 9 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
#amstrad: values are read from super block (special name hardcoded) |
|||
|
|||
# Royal alphatronic |
|||
# setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2 |
|||
diskdef alpha |
|||
seclen 256 |
|||
tracks 40 |
|||
sectrk 32 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
# Apple II CP/M skew o Apple II DOS 3.3 skew |
|||
diskdef apple-do |
|||
seclen 256 |
|||
tracks 35 |
|||
sectrk 16 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 3 |
|||
os 2.2 |
|||
end |
|||
|
|||
# Apple II CP/M skew o Apple II PRODOS skew |
|||
diskdef apple-po |
|||
seclen 256 |
|||
tracks 35 |
|||
sectrk 16 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 3 |
|||
os 2.2 |
|||
end |
|||
|
|||
# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header) |
|||
diskdef myz80 |
|||
seclen 1024 |
|||
tracks 64 |
|||
sectrk 128 |
|||
blocksize 4096 |
|||
maxdir 1024 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 3 |
|||
end |
|||
|
|||
# Despite being Amstrad formats, CPC System and CPC Data don't have an Amstrad |
|||
# superblock. You'll need to use libdsk to access them because the Linux |
|||
# and Windows kernel drivers won't touch them. |
|||
diskdef cpcsys |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 9 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 3 |
|||
end |
|||
diskdef cpcdata |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 9 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 3 |
|||
end |
|||
|
|||
# after being read in with no sector skew. |
|||
diskdef nigdos |
|||
seclen 512 |
|||
# NigDos double sided disk format, 42 tracks * 2 sides |
|||
tracks 84 |
|||
sectrk 10 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 1 |
|||
boottrk 0 |
|||
# this format wastes half of the directory entry |
|||
logicalextents 1 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef epsqx10 |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 20 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 0 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef ibm-8ss |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 8 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef ibm-8ds |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 8 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef electroglas |
|||
seclen 512 |
|||
tracks 80 |
|||
sectrk 10 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
# IBM CP/M-86 |
|||
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 head=1 |
|||
diskdef ibmpc-514ss |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 8 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
# IBM CP/M-86 |
|||
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 |
|||
diskdef ibmpc-514ds |
|||
seclen 512 |
|||
tracks 80 |
|||
sectrk 8 |
|||
blocksize 2048 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef p112 |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 18 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef p112-old |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 18 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef kpii |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 10 |
|||
blocksize 1024 |
|||
maxdir 32 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
# setfdprm /dev/fd0 dd sect=10 |
|||
diskdef interak |
|||
seclen 512 |
|||
tracks 80 |
|||
sectrk 20 |
|||
blocksize 4096 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
# For 512KB ROM, less 32K for system image |
|||
diskdef rom512KB |
|||
seclen 128 |
|||
tracks 14 |
|||
sectrk 256 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 2.2 |
|||
end |
|||
|
|||
# For 1024KB ROM, less 32K for system image |
|||
diskdef rom1024KB |
|||
seclen 128 |
|||
tracks 30 |
|||
sectrk 256 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 2.2 |
|||
end |
|||
|
|||
# For N8VEM mass storage (4 raw partitions) |
|||
diskdef hd0 |
|||
seclen 512 |
|||
tracks 65 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef hd1 |
|||
seclen 512 |
|||
tracks 130 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 66 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef hd2 |
|||
seclen 512 |
|||
tracks 195 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 131 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef hd3 |
|||
seclen 512 |
|||
tracks 260 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 196 |
|||
os 2.2 |
|||
end |
|||
diskdef ibm-3740 |
|||
seclen 128 |
|||
tracks 77 |
|||
sectrk 26 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 6 |
|||
boottrk 2 |
|||
os p2dos |
|||
end |
|||
|
|||
diskdef 4mb-hd |
|||
seclen 128 |
|||
tracks 1024 |
|||
sectrk 32 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os p2dos |
|||
end |
|||
|
|||
diskdef pcw |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 9 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef pc1.2m |
|||
seclen 512 |
|||
tracks 80 |
|||
# this format uses 15 sectors per track, but 30 per cylinder |
|||
sectrk 30 |
|||
blocksize 4096 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 3 |
|||
end |
|||
|
|||
# CP/M 86 on 1.44MB floppies |
|||
diskdef cpm86-144feat |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 18 |
|||
blocksize 4096 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef cf2dd |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 9 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
#amstrad: values are read from super block (special name hardcoded) |
|||
|
|||
# Royal alphatronic |
|||
# setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2 |
|||
diskdef alpha |
|||
seclen 256 |
|||
tracks 40 |
|||
sectrk 32 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
# Apple II CP/M skew o Apple II DOS 3.3 skew |
|||
diskdef apple-do |
|||
seclen 256 |
|||
tracks 35 |
|||
sectrk 16 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 3 |
|||
os 2.2 |
|||
end |
|||
|
|||
# Apple II CP/M skew o Apple II PRODOS skew |
|||
diskdef apple-po |
|||
seclen 256 |
|||
tracks 35 |
|||
sectrk 16 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 3 |
|||
os 2.2 |
|||
end |
|||
|
|||
# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header) |
|||
diskdef myz80 |
|||
seclen 1024 |
|||
tracks 64 |
|||
sectrk 128 |
|||
blocksize 4096 |
|||
maxdir 1024 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 3 |
|||
end |
|||
|
|||
# Despite being Amstrad formats, CPC System and CPC Data don't have an Amstrad |
|||
# superblock. You'll need to use libdsk to access them because the Linux |
|||
# and Windows kernel drivers won't touch them. |
|||
diskdef cpcsys |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 9 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 3 |
|||
end |
|||
diskdef cpcdata |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 9 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 3 |
|||
end |
|||
|
|||
# after being read in with no sector skew. |
|||
diskdef nigdos |
|||
seclen 512 |
|||
# NigDos double sided disk format, 42 tracks * 2 sides |
|||
tracks 84 |
|||
sectrk 10 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 1 |
|||
boottrk 0 |
|||
# this format wastes half of the directory entry |
|||
logicalextents 1 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef epsqx10 |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 20 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 0 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef ibm-8ss |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 8 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef ibm-8ds |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 8 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef electroglas |
|||
seclen 512 |
|||
tracks 80 |
|||
sectrk 10 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
# IBM CP/M-86 |
|||
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 head=1 |
|||
diskdef ibmpc-514ss |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 8 |
|||
blocksize 1024 |
|||
maxdir 64 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
# IBM CP/M-86 |
|||
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 |
|||
diskdef ibmpc-514ds |
|||
seclen 512 |
|||
tracks 80 |
|||
sectrk 8 |
|||
blocksize 2048 |
|||
maxdir 64 |
|||
skew 0 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef p112 |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 18 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef p112-old |
|||
seclen 512 |
|||
tracks 160 |
|||
sectrk 18 |
|||
blocksize 2048 |
|||
maxdir 128 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 3 |
|||
end |
|||
|
|||
diskdef kpii |
|||
seclen 512 |
|||
tracks 40 |
|||
sectrk 10 |
|||
blocksize 1024 |
|||
maxdir 32 |
|||
skew 0 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
# setfdprm /dev/fd0 dd sect=10 |
|||
diskdef interak |
|||
seclen 512 |
|||
tracks 80 |
|||
sectrk 20 |
|||
blocksize 4096 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 2 |
|||
os 2.2 |
|||
end |
|||
|
|||
# For 512KB ROM, less 32K for system image |
|||
diskdef rom512KB |
|||
seclen 128 |
|||
tracks 14 |
|||
sectrk 256 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 2.2 |
|||
end |
|||
|
|||
# For 1024KB ROM, less 32K for system image |
|||
diskdef rom1024KB |
|||
seclen 128 |
|||
tracks 30 |
|||
sectrk 256 |
|||
blocksize 2048 |
|||
maxdir 256 |
|||
skew 1 |
|||
boottrk 0 |
|||
os 2.2 |
|||
end |
|||
|
|||
# For N8VEM mass storage (4 raw partitions) |
|||
diskdef hd0 |
|||
seclen 512 |
|||
tracks 65 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 1 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef hd1 |
|||
seclen 512 |
|||
tracks 130 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 66 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef hd2 |
|||
seclen 512 |
|||
tracks 195 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 131 |
|||
os 2.2 |
|||
end |
|||
|
|||
diskdef hd3 |
|||
seclen 512 |
|||
tracks 260 |
|||
sectrk 256 |
|||
blocksize 4096 |
|||
maxdir 512 |
|||
skew 1 |
|||
boottrk 196 |
|||
os 2.2 |
|||
end |
|||
|
|||
@ -1,206 +1,206 @@ |
|||
# |
|||
# GCC based makefile |
|||
# |
|||
# 06/18/2012 2.0 dgg - updated for v2.0 |
|||
# |
|||
# 02/22/2012 1.5 dgg - modified for assembly under Linux |
|||
# |
|||
# 01/11/2011 1.4 wbw - added support for ZSDOS/ZDDOS/ZCPR |
|||
# |
|||
# 12/22/2011 1.3 wbw - removed all built-in config stuff, operation is now entirely |
|||
# dependent on variables CONFIG, ROMSIZE, and CPU |
|||
# |
|||
# 12/02/2011 1.3 wbw - replaced makever functionality with built-in makefile stuff |
|||
# |
|||
# 11/29/2011 1.3 dwg - uses makever to generate stdincl.inc from the version.hpp file |
|||
# |
|||
# 11/19/2011 1.3 dwg - added n8vem_vdu to "usage" and "all" rules |
|||
# enhanced clean to get files in $(OUTDIR) |
|||
# added custom to "all" rule |
|||
|
|||
# |
|||
# The operation of this makefile is entirely dependent on the setting |
|||
# of three variables: CONFIG, ROMSIZE, and CPU: |
|||
# |
|||
# CONFIG determines which configuration to build which means that |
|||
# it will determine the config_xxx.asm config settings file to |
|||
# include as well as the output file names. So, for example, |
|||
# if CONFIG is "n8vem", the config_n8vem.asm file will be used |
|||
# for BIOS configuration settings and the output files will be |
|||
# n8vem.rom, n8vem.sys, and n8vem.com. |
|||
# |
|||
# ROMSIZE specifies the size of the ROM image to be produced and |
|||
# currently must be either "1024" for a 1MB ROM or "512" for a |
|||
# 512KB ROM. |
|||
# |
|||
# CPU specifies the instruction set to be used in assembly and |
|||
# must be either "80" for Z80 or "180" for Z180. Currently, |
|||
# you should use 180 for N8 ROMs and 80 for everything else. |
|||
# |
|||
# SYS specifies the system variant to build in. CPM will |
|||
# build traditional CP/M. ZSYS will build ZSystem which |
|||
# currently means ZSDOS 1.2 & ZCPR 1.0 |
|||
# |
|||
# ROMNAME names the output file. It defaults to |
|||
# CONFIG. The output of the build will be: |
|||
# <ROMNAME>.rom, <ROMNAME>.sys, and <ROMNAME>.com. |
|||
# |
|||
# These variables can be passed into the makefile by the command |
|||
# line, hardcoded in this file, or set as environment variables |
|||
# in the OS. To use a command line, use the following format: |
|||
# |
|||
# make CONFIG=<config> ROMSIZE=<romsize> CPU=<cpu> SYS=<sys> ROMNAME=<romname> |
|||
# |
|||
# An example of this is: |
|||
# |
|||
# make CONFIG=n8vem ROMSIZE=512 CPU=80 SYS=CPM ROMNAME=n8vem |
|||
# |
|||
# Alternatively, you can specify the variables by hardcoding them |
|||
# in this file. To do so, uncomment the five lines after these |
|||
# comments and change the values as desired. |
|||
# If the variables are specified this way, you would then invoke |
|||
# the make by simply using "make" |
|||
# |
|||
# If you want to set them as environment variables, you can |
|||
# do this with commands like the following at an OS command |
|||
# prompt or in a batch file: |
|||
# |
|||
# SET CONFIG=n8vem |
|||
# SET ROMSIZE=512 |
|||
# SET CPU=80 |
|||
# SET SYS=CPM |
|||
# SET ROMNAME=n8vem |
|||
# |
|||
# Note: use "make clean" to delete temporary and output files |
|||
# |
|||
# A good idea is to do a clean with every build and this can be |
|||
# accomplished on one command line doing something like this: |
|||
# |
|||
# make clean all CONFIG=n8vem ROMSIZE=512 CPU=80 SYS=CPM ROMNAME=n8vem |
|||
# |
|||
# or, if you are using hard coded variables above: |
|||
# |
|||
# make clean all |
|||
# |
|||
# Uncomment and update values below to hardcode settings: |
|||
# |
|||
#CONFIG := n8vem |
|||
#ROMSIZE := 512 |
|||
#CPU := 80 |
|||
#SYS := CPM |
|||
#ROMNAME := n8vem |
|||
|
|||
ifndef ROMNAME |
|||
ROMNAME := $(CONFIG) |
|||
endif |
|||
|
|||
CPMCP := /usr/bin/cpmcp |
|||
|
|||
ROMDSKFILES := ../RomDsk/$(SYS)_$(ROMSIZE)KB/*.* ../RomDsk/cfg_$(CONFIG)/*.* ../Apps/core/*.* |
|||
|
|||
ifeq "$(SYS)" "CPM" |
|||
DOSBIN := bdosb01.bin |
|||
CPBIN := ccpb03.bin |
|||
else |
|||
DOSBIN := zsdos.bin |
|||
CPBIN := zcprw.bin |
|||
endif |
|||
|
|||
OUTDIR := ../Output |
|||
|
|||
TASM := /usr/local/bin/tasm |
|||
TASMTABS := /usr/local/lib |
|||
export TASMTABS |
|||
|
|||
ASMOPT80 := -t$(CPU) -g3 |
|||
ASMOPT85 := -t85 -g3 |
|||
|
|||
ASM80 := $(TASM) $(ASMOPT80) |
|||
ASM85 := $(TASM) $(ASMOPT85) |
|||
ASMIMG := $(TASM) $(ASMOPT80) -b -fE5 |
|||
|
|||
NULL := |
|||
SPACE := ${NULL} ${NULL} |
|||
|
|||
%.bin: %.asm |
|||
$(ASM80) $< $@ |
|||
|
|||
%.com: %.asm |
|||
$(ASM80) $< $@ |
|||
|
|||
%.img: %.asm |
|||
$(ASMIMG) $< $@ |
|||
|
|||
%.exe: %.cpp |
|||
$(CC) $< -o $@ |
|||
|
|||
ifneq ($(MAKECMDGOALS),clean) |
|||
ifeq "$(and $(CONFIG), $(ROMSIZE), $(CPU), $(SYS), $(ROMNAME))" "" |
|||
$(error Usage: make CONFIG=<config> ROMSIZE=[512|1024] CPU=[80|180] SYS=[CPM|ZSYS] ROMNAME=<romname>) |
|||
endif |
|||
endif |
|||
|
|||
all: $(OUTDIR)/$(ROMNAME).rom $(OUTDIR)/$(ROMNAME).sys $(OUTDIR)/$(ROMNAME).com |
|||
|
|||
build.inc: |
|||
echo ';' >$@ |
|||
echo -n '; RomWBW Configured for '$(CONFIG)' ' >>$@ |
|||
date >> $@ |
|||
echo ; >>$@ |
|||
echo -n '#DEFINE TIMESTAMP "' >>$@ |
|||
date '+%Y %m %d %H%M"' >>$@ |
|||
echo ; >>$@ |
|||
echo '#DEFINE VARIANT "WBW-$(USERNAME)"' >>$@ |
|||
echo ; >>$@ |
|||
echo ROMSIZE .EQU $(ROMSIZE) >>$@ |
|||
echo ; >>$@ |
|||
echo '#INCLUDE "config_'$(CONFIG)'.asm"' >>$@ |
|||
echo ; >>$@ |
|||
|
|||
bootrom.bin : bootrom.asm std.asm build.inc ver.inc |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
bootapp.bin : bootapp.asm std.asm build.inc ver.inc |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
pgzero.bin : pgzero.asm std.asm build.inc ver.inc |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
zcprw.bin : zcprw.asm zcpr.asm |
|||
$(TASM) $(ASMOPT85) $< $@ |
|||
|
|||
zsdos.bin : zsdos.asm zsdos.lib zsdos-gp.z80 |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
cbios.bin: cbios.asm fd_data.asm ide_data.asm ppide_data.asm sd_data.asm prp_data.asm ppp_data.asm uart.asm vdu.asm std.asm ver.inc build.inc |
|||
$(TASM) $(ASMOPT80) -dBLD_SYS=SYS_$(SYS) $< $@ |
|||
|
|||
dbgmon.bin: dbgmon.asm std.asm ver.inc build.inc |
|||
|
|||
syscfg.bin: syscfg.asm std.asm build.inc ver.inc |
|||
|
|||
os.bin: $(CPBIN) $(DOSBIN) cbios.bin |
|||
cat $(CPBIN) $(DOSBIN) cbios.bin >>$@ |
|||
|
|||
rom0.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin |
|||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin >>$@ |
|||
|
|||
rom1.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin |
|||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin >>$@ |
|||
|
|||
$(OUTDIR)/$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)/$(ROMNAME).sys |
|||
cp blank$(ROMSIZE)KB.dat RomDisk.tmp |
|||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp $(ROMDSKFILES) 0: |
|||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp ../Output/$(ROMNAME).sys 0:$(SYS).sys |
|||
cat rom0.bin rom1.bin RomDisk.tmp >>$@ |
|||
|
|||
$(OUTDIR)/$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin |
|||
cat bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin >>$@ |
|||
|
|||
$(OUTDIR)/$(ROMNAME).sys: prefix.bin os.bin |
|||
cat prefix.bin os.bin >>$@ |
|||
|
|||
clean: |
|||
rm -f *.bin *.com *.img *.rom *.lst *.exp *.tmp |
|||
rm -f build.inc |
|||
rm -f $(OUTDIR)/*.* |
|||
# |
|||
# GCC based makefile |
|||
# |
|||
# 06/18/2012 2.0 dgg - updated for v2.0 |
|||
# |
|||
# 02/22/2012 1.5 dgg - modified for assembly under Linux |
|||
# |
|||
# 01/11/2011 1.4 wbw - added support for ZSDOS/ZDDOS/ZCPR |
|||
# |
|||
# 12/22/2011 1.3 wbw - removed all built-in config stuff, operation is now entirely |
|||
# dependent on variables CONFIG, ROMSIZE, and CPU |
|||
# |
|||
# 12/02/2011 1.3 wbw - replaced makever functionality with built-in makefile stuff |
|||
# |
|||
# 11/29/2011 1.3 dwg - uses makever to generate stdincl.inc from the version.hpp file |
|||
# |
|||
# 11/19/2011 1.3 dwg - added n8vem_vdu to "usage" and "all" rules |
|||
# enhanced clean to get files in $(OUTDIR) |
|||
# added custom to "all" rule |
|||
|
|||
# |
|||
# The operation of this makefile is entirely dependent on the setting |
|||
# of three variables: CONFIG, ROMSIZE, and CPU: |
|||
# |
|||
# CONFIG determines which configuration to build which means that |
|||
# it will determine the config_xxx.asm config settings file to |
|||
# include as well as the output file names. So, for example, |
|||
# if CONFIG is "n8vem", the config_n8vem.asm file will be used |
|||
# for BIOS configuration settings and the output files will be |
|||
# n8vem.rom, n8vem.sys, and n8vem.com. |
|||
# |
|||
# ROMSIZE specifies the size of the ROM image to be produced and |
|||
# currently must be either "1024" for a 1MB ROM or "512" for a |
|||
# 512KB ROM. |
|||
# |
|||
# CPU specifies the instruction set to be used in assembly and |
|||
# must be either "80" for Z80 or "180" for Z180. Currently, |
|||
# you should use 180 for N8 ROMs and 80 for everything else. |
|||
# |
|||
# SYS specifies the system variant to build in. CPM will |
|||
# build traditional CP/M. ZSYS will build ZSystem which |
|||
# currently means ZSDOS 1.2 & ZCPR 1.0 |
|||
# |
|||
# ROMNAME names the output file. It defaults to |
|||
# CONFIG. The output of the build will be: |
|||
# <ROMNAME>.rom, <ROMNAME>.sys, and <ROMNAME>.com. |
|||
# |
|||
# These variables can be passed into the makefile by the command |
|||
# line, hardcoded in this file, or set as environment variables |
|||
# in the OS. To use a command line, use the following format: |
|||
# |
|||
# make CONFIG=<config> ROMSIZE=<romsize> CPU=<cpu> SYS=<sys> ROMNAME=<romname> |
|||
# |
|||
# An example of this is: |
|||
# |
|||
# make CONFIG=n8vem ROMSIZE=512 CPU=80 SYS=CPM ROMNAME=n8vem |
|||
# |
|||
# Alternatively, you can specify the variables by hardcoding them |
|||
# in this file. To do so, uncomment the five lines after these |
|||
# comments and change the values as desired. |
|||
# If the variables are specified this way, you would then invoke |
|||
# the make by simply using "make" |
|||
# |
|||
# If you want to set them as environment variables, you can |
|||
# do this with commands like the following at an OS command |
|||
# prompt or in a batch file: |
|||
# |
|||
# SET CONFIG=n8vem |
|||
# SET ROMSIZE=512 |
|||
# SET CPU=80 |
|||
# SET SYS=CPM |
|||
# SET ROMNAME=n8vem |
|||
# |
|||
# Note: use "make clean" to delete temporary and output files |
|||
# |
|||
# A good idea is to do a clean with every build and this can be |
|||
# accomplished on one command line doing something like this: |
|||
# |
|||
# make clean all CONFIG=n8vem ROMSIZE=512 CPU=80 SYS=CPM ROMNAME=n8vem |
|||
# |
|||
# or, if you are using hard coded variables above: |
|||
# |
|||
# make clean all |
|||
# |
|||
# Uncomment and update values below to hardcode settings: |
|||
# |
|||
#CONFIG := n8vem |
|||
#ROMSIZE := 512 |
|||
#CPU := 80 |
|||
#SYS := CPM |
|||
#ROMNAME := n8vem |
|||
|
|||
ifndef ROMNAME |
|||
ROMNAME := $(CONFIG) |
|||
endif |
|||
|
|||
CPMCP := /usr/bin/cpmcp |
|||
|
|||
ROMDSKFILES := ../RomDsk/$(SYS)_$(ROMSIZE)KB/*.* ../RomDsk/cfg_$(CONFIG)/*.* ../Apps/core/*.* |
|||
|
|||
ifeq "$(SYS)" "CPM" |
|||
DOSBIN := bdosb01.bin |
|||
CPBIN := ccpb03.bin |
|||
else |
|||
DOSBIN := zsdos.bin |
|||
CPBIN := zcprw.bin |
|||
endif |
|||
|
|||
OUTDIR := ../Output |
|||
|
|||
TASM := /usr/local/bin/tasm |
|||
TASMTABS := /usr/local/lib |
|||
export TASMTABS |
|||
|
|||
ASMOPT80 := -t$(CPU) -g3 |
|||
ASMOPT85 := -t85 -g3 |
|||
|
|||
ASM80 := $(TASM) $(ASMOPT80) |
|||
ASM85 := $(TASM) $(ASMOPT85) |
|||
ASMIMG := $(TASM) $(ASMOPT80) -b -fE5 |
|||
|
|||
NULL := |
|||
SPACE := ${NULL} ${NULL} |
|||
|
|||
%.bin: %.asm |
|||
$(ASM80) $< $@ |
|||
|
|||
%.com: %.asm |
|||
$(ASM80) $< $@ |
|||
|
|||
%.img: %.asm |
|||
$(ASMIMG) $< $@ |
|||
|
|||
%.exe: %.cpp |
|||
$(CC) $< -o $@ |
|||
|
|||
ifneq ($(MAKECMDGOALS),clean) |
|||
ifeq "$(and $(CONFIG), $(ROMSIZE), $(CPU), $(SYS), $(ROMNAME))" "" |
|||
$(error Usage: make CONFIG=<config> ROMSIZE=[512|1024] CPU=[80|180] SYS=[CPM|ZSYS] ROMNAME=<romname>) |
|||
endif |
|||
endif |
|||
|
|||
all: $(OUTDIR)/$(ROMNAME).rom $(OUTDIR)/$(ROMNAME).sys $(OUTDIR)/$(ROMNAME).com |
|||
|
|||
build.inc: |
|||
echo ';' >$@ |
|||
echo -n '; RomWBW Configured for '$(CONFIG)' ' >>$@ |
|||
date >> $@ |
|||
echo ; >>$@ |
|||
echo -n '#DEFINE TIMESTAMP "' >>$@ |
|||
date '+%Y %m %d %H%M"' >>$@ |
|||
echo ; >>$@ |
|||
echo '#DEFINE VARIANT "WBW-$(USERNAME)"' >>$@ |
|||
echo ; >>$@ |
|||
echo ROMSIZE .EQU $(ROMSIZE) >>$@ |
|||
echo ; >>$@ |
|||
echo '#INCLUDE "config_'$(CONFIG)'.asm"' >>$@ |
|||
echo ; >>$@ |
|||
|
|||
bootrom.bin : bootrom.asm std.asm build.inc ver.inc |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
bootapp.bin : bootapp.asm std.asm build.inc ver.inc |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
pgzero.bin : pgzero.asm std.asm build.inc ver.inc |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
zcprw.bin : zcprw.asm zcpr.asm |
|||
$(TASM) $(ASMOPT85) $< $@ |
|||
|
|||
zsdos.bin : zsdos.asm zsdos.lib zsdos-gp.z80 |
|||
$(TASM) $(ASMOPT80) $< $@ |
|||
|
|||
cbios.bin: cbios.asm fd_data.asm ide_data.asm ppide_data.asm sd_data.asm prp_data.asm ppp_data.asm uart.asm vdu.asm std.asm ver.inc build.inc |
|||
$(TASM) $(ASMOPT80) -dBLD_SYS=SYS_$(SYS) $< $@ |
|||
|
|||
dbgmon.bin: dbgmon.asm std.asm ver.inc build.inc |
|||
|
|||
syscfg.bin: syscfg.asm std.asm build.inc ver.inc |
|||
|
|||
os.bin: $(CPBIN) $(DOSBIN) cbios.bin |
|||
cat $(CPBIN) $(DOSBIN) cbios.bin >>$@ |
|||
|
|||
rom0.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin |
|||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin >>$@ |
|||
|
|||
rom1.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin |
|||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin >>$@ |
|||
|
|||
$(OUTDIR)/$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)/$(ROMNAME).sys |
|||
cp blank$(ROMSIZE)KB.dat RomDisk.tmp |
|||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp $(ROMDSKFILES) 0: |
|||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp ../Output/$(ROMNAME).sys 0:$(SYS).sys |
|||
cat rom0.bin rom1.bin RomDisk.tmp >>$@ |
|||
|
|||
$(OUTDIR)/$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin |
|||
cat bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin >>$@ |
|||
|
|||
$(OUTDIR)/$(ROMNAME).sys: prefix.bin os.bin |
|||
cat prefix.bin os.bin >>$@ |
|||
|
|||
clean: |
|||
rm -f *.bin *.com *.img *.rom *.lst *.exp *.tmp |
|||
rm -f build.inc |
|||
rm -f $(OUTDIR)/*.* |
|||
|
|||
Loading…
Reference in new issue