summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2014-07-11 17:14:53 +0200
committerLeo C2014-07-11 17:14:53 +0200
commit64045ba0916623ab9e7c2f1eed837a2aae081e63 (patch)
tree2fd245ca15b7f32485e168d4598565efd98f00c4
parente598b357f1cdfa103c2dc9985321f8c4e11d49ee (diff)
downloadz180-stamp-64045ba0916623ab9e7c2f1eed837a2aae081e63.zip
Refactor Tupfiles
-rw-r--r--Tuprules.tup1
-rw-r--r--avr/Tupfile37
-rw-r--r--avr/z180-stamp-avr.c73
-rw-r--r--avr/z80-if.c7
-rw-r--r--avr/z80-if.h7
-rw-r--r--stm32/Tupfile44
-rw-r--r--stm32/z180-stamp-stm32.c14
-rw-r--r--z180/Tupfile22
8 files changed, 71 insertions, 134 deletions
diff --git a/Tuprules.tup b/Tuprules.tup
index 185c6bf..a2a7678 100644
--- a/Tuprules.tup
+++ b/Tuprules.tup
@@ -1,3 +1,4 @@
.gitignore
TOP = $(TUP_CWD)
+CONFIG = $(TOP)/configs
diff --git a/avr/Tupfile b/avr/Tupfile
index b43a822..72f7e71 100644
--- a/avr/Tupfile
+++ b/avr/Tupfile
@@ -1,8 +1,13 @@
include_rules
PROG = z180-stamp-avr
+
SRC = z180-stamp-avr.c serial.c z80-if.c
+
SRC_Z = ../z180/hdrom.c
+PREDEP = ../z180/hdrom.h
+
+#SRC += $(SRC_Z)
#TARGETS = $(PROG).elf
MCU_TARGET = atmega1281
@@ -16,47 +21,23 @@ INCLUDES += ../z180
TOOLCHAINDIR =
TOOLCHAIN = avr
-CC = $(TOOLCHAIN)-gcc
-LD = $(TOOLCHAIN)-gcc
-AR = $(TOOLCHAIN)-ar
-AS = $(TOOLCHAIN)-as
-OBJCOPY = $(TOOLCHAIN)-objcopy
-OBJDUMP = $(TOOLCHAIN)-objdump
-SIZE = $(TOOLCHAIN)-size
-GDB = $(TOOLCHAIN)-gdb
-
###############################################################################
ifdef DEBUG
DEFS += -DDEBUG=2
endif
-CFLAGS = -g -Os
CFLAGS += -mmcu=$(MCU_TARGET)
-CFLAGS += -std=gnu99
-CFLAGS += -Wall -Wextra -Wimplicit-function-declaration
-CFLAGS += -Wredundant-decls
-#CFLAGS += -fno-common -ffunction-sections -fdata-sections
+
#CFLAGS += -I $(INCLUDES)
CPPFLAGS += $(DEFS)
+CPPFLAGS_Z += -D'const=const __flash'
+
# Linker flags
LDFLAGS += -Wl,--gc-sections
LDFLAGS += -Wl,--cref
-!cc = |> ^ CC %f^ $(CC) $(CFLAGS) $(CPPFLAGS) -c %f -o %o |> %B.o
-!LINK = |> ^ LINK %o^ $(LD) $(CFLAGS) $(LDFLAGS) -Wl,-Map=%O.map %f $(LDLIBS) -o %o |> | %O.map
-!OBJCOPY= |> ^ OBJCOPY %o^ $(OBJCOPY) -Oihex %f %o |>
-!OBJDUMP= |> ^ OBJDUMP %o^ $(OBJDUMP) -h -S %f > %o |> %O.lss
-!SIZE = |> ^ SIZE^ $(SIZE) %f |>
-
-: foreach $(SRC) | ../z180/hdrom.h |> !cc |> {objs}
-: $(SRC_Z) |> !cc -D'const=const __flash' |> {objs}
-
-: {objs} |> !LINK |> $(PROG).elf
-: $(PROG).elf |> !OBJCOPY |> %B.hex
-: $(PROG).elf |> !OBJDUMP |> %B.lss
-: $(PROG).elf |> !SIZE |>
-
+include $(CONFIG)/gcc.tup
diff --git a/avr/z180-stamp-avr.c b/avr/z180-stamp-avr.c
index 4ea4d47..6871027 100644
--- a/avr/z180-stamp-avr.c
+++ b/avr/z180-stamp-avr.c
@@ -22,52 +22,16 @@
#undef const
#define FLASH __flash
-//#define FLASH
#define ESCCHAR ('^'-0x40)
#define S_10MS_TO (1<<0)
-volatile int_fast8_t timeout_1s;
-volatile uint_least8_t Stat;
+static volatile int_fast8_t timeout_1s;
+static volatile uint_least8_t Stat;
-/****************************************************************/
-
-#define P_ADL PORTA
-#define P_ADH PORTC
-#define P_ADB PORTE
-#define PIN_ADB PINE
-
-#define ADB_WIDTH 3
-#define ADB_SHIFT 2
-//#define ADB_PORT GPIOE
-
-#define MASK(n) ((1<<(n))-1)
-#define SMASK(w,s) (MASK(w) << (s))
-
-typedef union {
- uint32_t l;
- uint16_t w[2];
- uint8_t b[4];
-} addr_t;
-
-
-
-void z80_setaddress(uint32_t addr)
-{
- addr_t x;
-
- x.l = addr;
- P_ADL = x.b[0];
- P_ADH = x.b[1];
- PIN_ADB = ((x.b[2] << ADB_SHIFT) ^ P_ADB) & MASK(ADB_WIDTH) << ADB_SHIFT ;
-
-}
-
-/****************************************************************/
-
/*--------------------------------------------------------------------------*/
@@ -82,10 +46,7 @@ void sys_tick_handler(void)
if (tick_10ms == 10)
{
Stat |= S_10MS_TO;
-
tick_10ms = 0;
-
-
/* Drive timer procedure of low level disk I/O module */
//disk_timerproc();
}
@@ -101,6 +62,10 @@ void sys_tick_handler(void)
}
+static void do_10ms(void)
+{
+}
+
/*--------------------------------------------------------------------------*/
static uint32_t z80_sram_cmp(uint32_t addr, uint32_t length, uint8_t wval, int inc)
@@ -108,7 +73,7 @@ static uint32_t z80_sram_cmp(uint32_t addr, uint32_t length, uint8_t wval, int i
uint8_t rval;
int_fast8_t errors = 0;
- DBG_P(1, "SRAM: Check %#.5x byte... ", length);
+ DBG_P(1, "SRAM: Check 0x%.5lX byte... ", length);
while (length--) {
if ((rval = z80_read(addr)) != wval) {
if (errors == 0) {
@@ -176,6 +141,8 @@ const char * const qbcat = "Zhe quick brown fox jumps over the lazy cat!";
#endif
+/*--------------------------------------------------------------------------*/
+
uint8_t z80_get_byte(uint32_t adr)
{
uint8_t data;
@@ -187,13 +154,6 @@ uint8_t z80_get_byte(uint32_t adr)
return data;
}
-
-/*--------------------------------------------------------------------------*/
-
-static void do_10ms(void)
-{
-}
-
/*--------------------------------------------------------------------------*/
struct msg_item {
@@ -202,6 +162,7 @@ struct msg_item {
void (*func)(uint8_t, int, uint8_t *);
};
+static
uint32_t msg_to_addr(uint8_t *msg)
{
union {
@@ -217,6 +178,7 @@ uint32_t msg_to_addr(uint8_t *msg)
return addr.as32;
}
+static
void do_msg_ini_msgfifo(uint8_t subf, int len, uint8_t * msg)
{
(void)subf; (void)len;
@@ -225,6 +187,7 @@ void do_msg_ini_msgfifo(uint8_t subf, int len, uint8_t * msg)
}
+static
void do_msg_ini_memfifo(uint8_t subf, int len, uint8_t * msg)
{
(void)len;
@@ -233,6 +196,7 @@ void do_msg_ini_memfifo(uint8_t subf, int len, uint8_t * msg)
}
+static
void do_msg_char_out(uint8_t subf, int len, uint8_t * msg)
{
(void)subf;
@@ -242,6 +206,7 @@ void do_msg_char_out(uint8_t subf, int len, uint8_t * msg)
}
+static
const FLASH struct msg_item z80_messages[] =
{
{ 0, /* fct nr. */
@@ -260,8 +225,7 @@ const FLASH struct msg_item z80_messages[] =
};
-
-
+static
void do_message(int len, uint8_t *msg)
{
uint8_t fct, sub_fct;
@@ -303,9 +267,10 @@ void do_message(int len, uint8_t *msg)
}
-
+//TODO:
#define CTRBUF_LEN 256
+static
void check_msg_fifo(void)
{
int ch;
@@ -344,6 +309,7 @@ void check_msg_fifo(void)
}
+static
void z80_load_mem(void)
{
unsigned sec = 0;
@@ -364,6 +330,7 @@ void z80_load_mem(void)
sec++;
}
}
+
/*--------------------------------------------------------------------------*/
int main(void)
@@ -373,7 +340,6 @@ int main(void)
// setvbuf(stdout, NULL, _IONBF, 0);
serial_setup();
-// printf("\n(STM32F100+HD64180)_stamp Tester\n");
printf("\n(ATMEGA1281+HD64180)_stamp Tester\n");
DBG_P(1, "z80_setup_bus... ");
@@ -381,7 +347,6 @@ int main(void)
z80_setup_bus();
DBG_P(1, "done.\n");
-
DBG_P(1, "Get bus... ");
z80_busreq(LOW);
z80_reset(HIGH);
diff --git a/avr/z80-if.c b/avr/z80-if.c
index 955a61a..889849b 100644
--- a/avr/z80-if.c
+++ b/avr/z80-if.c
@@ -200,13 +200,6 @@ int z80_stat_halt(void)
-typedef union {
- uint32_t l;
- uint16_t w[2];
- uint8_t b[4];
-} addr_t;
-
-
/*--------------------------------------------------------------------------*/
diff --git a/avr/z80-if.h b/avr/z80-if.h
index 1068225..1e7d675 100644
--- a/avr/z80-if.h
+++ b/avr/z80-if.h
@@ -1,6 +1,13 @@
typedef enum {LOW, HIGH} level_t;
+typedef union {
+ uint32_t l;
+ uint16_t w[2];
+ uint8_t b[4];
+} addr_t;
+
+
void z80_setup_bus(void);
void z80_write(uint32_t addr, uint8_t data);
uint8_t z80_read(uint32_t addr);
diff --git a/stm32/Tupfile b/stm32/Tupfile
index 1778623..8512bfe 100644
--- a/stm32/Tupfile
+++ b/stm32/Tupfile
@@ -1,8 +1,13 @@
include_rules
PROG = z180-stamp-stm32
+
SRC = z180-stamp-stm32.c serial.c z80-if.c
+
SRC_Z = ../z180/hdrom.c
+PREDEP = ../z180/hdrom.h
+
+#SRC += $(SRC_Z)
#TARGETS = $(PROG).elf
FP_FLAGS = -msoft-float
@@ -13,62 +18,31 @@ OPENCM3_DIR = $(TOP)/libopencm3
LDSCRIPT = stm32vl-discovery.ld
###############################################################################
-# Executables
TOOLCHAINDIR = /usr/local/gcc-arm-none-eabi-4_8-2014q2/bin
TOOLCHAIN = $(TOOLCHAINDIR)/arm-none-eabi
-CC = $(TOOLCHAIN)-gcc
-LD = $(TOOLCHAIN)-gcc
-AR = $(TOOLCHAIN)-ar
-AS = $(TOOLCHAIN)-as
-OBJCOPY = $(TOOLCHAIN)-objcopy
-OBJDUMP = $(TOOLCHAIN)-objdump
-SIZE = $(TOOLCHAIN)-size
-GDB = $(TOOLCHAIN)-gdb
-
###############################################################################
INCLUDES += $(OPENCM3_DIR)/include
LIBDIRS += $(OPENCM3_DIR)/lib
-SCRIPT_DIR = $(OPENCM3_DIR)/scripts
-
ifdef DEBUG
DEFS += -DDEBUG=2
endif
-CFLAGS += -g -Os
CFLAGS += -mthumb -mcpu=cortex-m3 $(FP_FLAGS) -mfix-cortex-m3-ldrd
-CFLAGS += -std=gnu99
-CFLAGS += -Wall -Wextra -Wimplicit-function-declaration
-CFLAGS += -Wredundant-decls
-#CFLAGS += -fno-common -ffunction-sections -fdata-sections
+
CFLAGS += -I $(INCLUDES)
CPPFLAGS += $(DEFS)
# Linker flags
LDFLAGS += --static -nostartfiles
-LDFLAGS += -T$(LDSCRIPT)
-LDFLAGS += -Wl,--gc-sections
-LDFLAGS += -Wl,--cref
-
-LDLIBS += -L$(LIBDIRS) -l$(LIBNAME)
-LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
-
-
-!cc = |> ^ CC %f^ $(CC) $(CFLAGS) $(CPPFLAGS) -c %f -o %o |> %B.o
-!LINK = |> ^ LINK %o^ $(LD) $(CFLAGS) $(LDFLAGS) -Wl,-Map=%O.map %f $(LDLIBS) -o %o |> | %O.map
-!OBJCOPY= |> ^ OBJCOPY %o^ $(OBJCOPY) -Oihex %f %o |>
-!OBJDUMP= |> ^ OBJDUMP %o^ $(OBJDUMP) -h -S %f > %o |> %O.lss
-!SIZE = |> ^ SIZE^ $(SIZE) %f |>
-: foreach $(SRC) $(SRC_Z) | ../z180/hdrom.h |> !cc |> {objs}
+LDLIBS += -L$(LIBDIRS) -l$(LIBNAME)
+LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
-: {objs} |> !LINK |> $(PROG).elf
-: $(PROG).elf |> !OBJCOPY |> %B.hex
-: $(PROG).elf |> !OBJDUMP |> %B.lss
-: $(PROG).elf |> !SIZE |>
+include $(CONFIG)/gcc.tup
diff --git a/stm32/z180-stamp-stm32.c b/stm32/z180-stamp-stm32.c
index 15d732d..96d724c 100644
--- a/stm32/z180-stamp-stm32.c
+++ b/stm32/z180-stamp-stm32.c
@@ -1,7 +1,6 @@
/*
*/
-#include <stdio.h>
#include <libopencmsis/core_cm3.h>
#include <libopencm3/cm3/nvic.h>
@@ -11,6 +10,8 @@
#include <libopencm3/stm32/gpio.h>
#include <libopencm3/stm32/timer.h>
+#include <stdio.h>
+
#define ODR 0x0c
#define IDR 0x08
@@ -394,7 +395,7 @@ static uint32_t z80_sram_cmp(uint32_t addr, uint32_t length, uint8_t wval, int i
uint8_t rval;
int_fast8_t errors = 0;
- DBG_P(1, "SRAM: Check %#.5x byte... ", length);
+ DBG_P(1, "SRAM: Check 0x%.5lX byte... ", length);
while (length--) {
if ((rval = z80_read(addr)) != wval) {
if (errors == 0) {
@@ -462,6 +463,8 @@ const char * const qbcat = "Zhe quick brown fox jumps over the lazy cat!";
#endif
+/*--------------------------------------------------------------------------*/
+
uint8_t z80_get_byte(uint32_t adr)
{
uint8_t data;
@@ -508,6 +511,7 @@ struct msg_item {
void (*func)(uint8_t, int, uint8_t *);
};
+static
uint32_t msg_to_addr(uint8_t *msg)
{
uint32_t addr = msg[0] | (msg[1] << 8) | ((uint32_t)msg[2] << 16);
@@ -516,6 +520,7 @@ uint32_t msg_to_addr(uint8_t *msg)
}
+static
void do_msg_ini_msgfifo(uint8_t subf, int len, uint8_t * msg)
{
(void)subf; (void)len;
@@ -524,6 +529,7 @@ void do_msg_ini_msgfifo(uint8_t subf, int len, uint8_t * msg)
}
+static
void do_msg_ini_memfifo(uint8_t subf, int len, uint8_t * msg)
{
(void)len;
@@ -532,6 +538,7 @@ void do_msg_ini_memfifo(uint8_t subf, int len, uint8_t * msg)
}
+static
void do_msg_char_out(uint8_t subf, int len, uint8_t * msg)
{
(void)subf;
@@ -541,6 +548,7 @@ void do_msg_char_out(uint8_t subf, int len, uint8_t * msg)
}
+static
const struct msg_item z80_messages[] =
{
{ 0, /* fct nr. */
@@ -561,6 +569,7 @@ const struct msg_item z80_messages[] =
+static
void do_message(int len, uint8_t *msg)
{
uint8_t fct, sub_fct;
@@ -605,6 +614,7 @@ void do_message(int len, uint8_t *msg)
#define CTRBUF_LEN 256
+static
void check_msg_fifo(void)
{
int ch;
diff --git a/z180/Tupfile b/z180/Tupfile
index b79d098..962b23b 100644
--- a/z180/Tupfile
+++ b/z180/Tupfile
@@ -4,6 +4,7 @@ PROG = hdrom
SRC = r3init.180
SRC += ddtz.180
+#SRC += ddtz-g.180
SRC += fifoio.180 msgbuf.180 ser1-i.180 console.180
SRC += romend.180
@@ -17,37 +18,42 @@ LN_DATA = C000
DEFS = -DSTM32F1 -DBAUD=115200
###############################################################################
-# Executables
CPMEMU = zxcc
+
#AS = $(CPMEMU) ccpline.com
+
+AS_PREFIX = -
AS = $(CPMEMU) slr180.com
+#AS_PREFIX =
+#AS = aliados /usr/local/lib/cpm/bin80/slr180.com
###############################################################################
-!AS-plain = |> $(AS) -%B/$(AS_OPT) |> %B.rel | %B.lst
+!AS-plain = |> $(AS) $(AS_PREFIX)%B/$(AS_OPT) |> %B.rel | %B.lst
-!AS = |> ^ $(AS) -%B/$(AS_OPT)^ set +e; OUTPUT=\$(mktemp);\
-$(AS) -%B/$(AS_OPT) > ${OUTPUT};\
+
+!AS = |> ^ $(AS) $(AS_PREFIX)%B/$(AS_OPT)^ set +e; OUTPUT=\$(mktemp);\
+$(AS) $(AS_PREFIX)%B/$(AS_OPT) > ${OUTPUT};\
grep -q '^ 0 Error(s) Detected' ${OUTPUT}; ERROR=$?;\
[ "${ERROR}" != "0" ] && cat ${OUTPUT};\
[ "${ERROR}" != "0" ] && rm -f %B.rel;\
rm -f ${OUTPUT}; exit ${ERROR} \
|> %B.rel | %B.lst
-!LINK = |> ld80 -o %o -ms %O.map -P $(LN_PROG) -D $(LN_DATA) %f |> | %O.map
+!LINK = |> ^o LINK %o^ ld80 -o %o -ms %O.map -P $(LN_PROG) -D $(LN_DATA) %f |> | %O.map
#ifndef DEBUG
+
+#: foreach $(SRC) |> cp %f \$(echo %f | tr a-z A-Z) |> %B {uc_src}
+
: foreach $(SRC) |> !AS |> {objs}
: {objs} |> !LINK |> $(PROG).hex
: $(PROG).hex |> srec_cat -o %o -c_array %B -C_COMpressed -include %f -Intel |> $(PROG).c | $(PROG).h
-#COMMAND="$(AS) -%B/$(AS_OPT)"; \
-
-
#endif