From ffe0318e8da0c38ff4a61faa983dcfe7945c6c71 Mon Sep 17 00:00:00 2001 From: doug Date: Sun, 20 Jan 2013 04:26:32 +0000 Subject: [PATCH] converted from unix eol to dos eol --- branches/s100/Source/diskdefs | 682 ++++++++++++++-------------- branches/s100/Source/makefile.linux | 412 ++++++++--------- 2 files changed, 547 insertions(+), 547 deletions(-) diff --git a/branches/s100/Source/diskdefs b/branches/s100/Source/diskdefs index 2e1f5725..516ae28a 100644 --- a/branches/s100/Source/diskdefs +++ b/branches/s100/Source/diskdefs @@ -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 diff --git a/branches/s100/Source/makefile.linux b/branches/s100/Source/makefile.linux index a57268df..14fd13e6 100644 --- a/branches/s100/Source/makefile.linux +++ b/branches/s100/Source/makefile.linux @@ -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: -# .rom, .sys, and .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= ROMSIZE= CPU= SYS= 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= ROMSIZE=[512|1024] CPU=[80|180] SYS=[CPM|ZSYS] 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: +# .rom, .sys, and .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= ROMSIZE= CPU= SYS= 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= ROMSIZE=[512|1024] CPU=[80|180] SYS=[CPM|ZSYS] 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)/*.*