From 35edb766593d019b89a3f40b6d6cdd2b50f18032 Mon Sep 17 00:00:00 2001 From: Leo C Date: Tue, 16 Dec 2014 16:03:06 +0100 Subject: Add copyright notice --- avr/background.c | 16 +- avr/cli.c | 13 ++ avr/cli_readline.c | 3 +- avr/cmd_boot.c | 8 + avr/cmd_date.c | 2 + avr/cmd_fat.c | 49 +++++ avr/cmd_gpio.c | 6 + avr/cmd_help.c | 8 + avr/cmd_mem.c | 2 + avr/cmd_misc.c | 3 +- avr/cmd_sd.c | 6 + avr/command.c | 9 + avr/command_tbl.c | 7 +- avr/con-utils.c | 5 + avr/debug.c | 7 + avr/env.c | 7 +- avr/getopt-min.c | 9 +- avr/gpio.c | 7 +- avr/i2c.c | 8 +- avr/main.c | 4 +- avr/pcf8583.c | 6 + avr/print-utils.c | 6 + avr/serial.c | 9 +- avr/timer.c | 10 +- avr/xmalloc.c | 11 +- avr/z180-serv.c | 8 +- avr/z180-stamp-avr.c | 591 --------------------------------------------------- avr/z80-if.c | 7 +- 28 files changed, 200 insertions(+), 627 deletions(-) delete mode 100644 avr/z180-stamp-avr.c (limited to 'avr') diff --git a/avr/background.c b/avr/background.c index 0e1ca40..9c8b5a6 100644 --- a/avr/background.c +++ b/avr/background.c @@ -1,10 +1,16 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include "background.h" #define BG_FUNC_MAX 5 -static struct { +static struct { bg_func fct; int param; } func_tab[BG_FUNC_MAX]; @@ -13,7 +19,7 @@ static int_fast8_t fcount; int bg_register(bg_func f, int initval) { - if (fcount < BG_FUNC_MAX) { + if (fcount < BG_FUNC_MAX) { func_tab[fcount].fct = f; func_tab[fcount].param = initval; return ++fcount - 1; @@ -27,7 +33,7 @@ int bg_setstat(int handle, int val) func_tab[handle].param = val; return 1; } - + return 0; } @@ -44,7 +50,7 @@ int bg_getstat(int handle) void bg_shed(void) { static int_fast8_t current; - + if (func_tab[current].fct) { int v = func_tab[current].fct(func_tab[current].param); func_tab[current].param = v; @@ -52,5 +58,3 @@ void bg_shed(void) if (++current >= fcount) current = 0; } - - diff --git a/avr/cli.c b/avr/cli.c index 046859c..52c85db 100644 --- a/avr/cli.c +++ b/avr/cli.c @@ -1,3 +1,16 @@ +/* + * (C) Copyright 2014 Leo C. + * + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * Add to readline cmdline-editing by + * (C) Copyright 2005 + * JinHua Luo, GuangDong Linux Center, + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include diff --git a/avr/cli_readline.c b/avr/cli_readline.c index 1dbc73b..04d32b1 100644 --- a/avr/cli_readline.c +++ b/avr/cli_readline.c @@ -1,4 +1,6 @@ /* + * (C) Copyright 2014 Leo C. + * * (C) Copyright 2000 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * @@ -591,4 +593,3 @@ int cli_readline(const FLASH char *const prompt) return cli_readline_into_buffer(prompt, console_buffer); } - diff --git a/avr/cmd_boot.c b/avr/cmd_boot.c index 4775b6e..301f4f5 100644 --- a/avr/cmd_boot.c +++ b/avr/cmd_boot.c @@ -1,3 +1,11 @@ +/* + * (C) Copyright 2014 Leo C. + * + * (C) Copyright 2000-2003 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * SPDX-License-Identifier: GPL-2.0+ + */ /* * Misc boot support diff --git a/avr/cmd_date.c b/avr/cmd_date.c index 3beebee..efba858 100644 --- a/avr/cmd_date.c +++ b/avr/cmd_date.c @@ -1,4 +1,6 @@ /* + * (C) Copyright 2014 Leo C. + * * (C) Copyright 2001 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * diff --git a/avr/cmd_fat.c b/avr/cmd_fat.c index df2ae69..8ed7ae3 100644 --- a/avr/cmd_fat.c +++ b/avr/cmd_fat.c @@ -1,3 +1,13 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +/* + * FAT filesystem commands + */ + #include "common.h" #include #include @@ -290,6 +300,39 @@ command_ret_t do_fat_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ return CMD_RET_SUCCESS; } +static +FRESULT mkpath(TCHAR *path) +{ + /* TODO: */ + (void) path; +#if 0 + FILINFO fd + TCHAR *p, *q; + FRESULT ret; + +#if _USE_LFN + fd.lfname = 0; +#endif + + + res = f_stat (path, &fd) + + p = strchr(path, ':'); + if (p == NULL || *++p == '\0' || *p++ != '/') + return FR_OK; + + while ((q = strchr(p, '/')) != NULL) { + *q = '\0'; + ret = f_mkdir(path); + *q = '/'; + if (ret != FR_OK && ret != FR_EXIST) + return ret; + p = q + 1; + } +#endif + + return FR_OK; +} /* * fatread/write - load binary file to/from a dos filesystem @@ -343,6 +386,12 @@ command_ret_t do_fat_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ } res = f_mount(FatFs, argv[1], 0); + + if (!res) { + if (dowrite) { + res = mkpath(argv[1]); + } + } if (!res) { res = f_open(&File, argv[1], dowrite ? FA_WRITE | FA_CREATE_ALWAYS : FA_READ ); diff --git a/avr/cmd_gpio.c b/avr/cmd_gpio.c index f448e36..e0d9b06 100644 --- a/avr/cmd_gpio.c +++ b/avr/cmd_gpio.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include #include diff --git a/avr/cmd_help.c b/avr/cmd_help.c index 8f81b2d..010339d 100644 --- a/avr/cmd_help.c +++ b/avr/cmd_help.c @@ -1,3 +1,11 @@ +/* + * (C) Copyright 2014 Leo C. + * + * Copyright 2000-2009 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * SPDX-License-Identifier: GPL-2.0+ + */ #include "common.h" #include "command.h" diff --git a/avr/cmd_mem.c b/avr/cmd_mem.c index 0bc5742..20a4412 100644 --- a/avr/cmd_mem.c +++ b/avr/cmd_mem.c @@ -1,4 +1,6 @@ /* + * (C) Copyright 2014 Leo C. + * * (C) Copyright 2000 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * diff --git a/avr/cmd_misc.c b/avr/cmd_misc.c index 315b959..b29aedd 100644 --- a/avr/cmd_misc.c +++ b/avr/cmd_misc.c @@ -1,4 +1,6 @@ /* + * (C) Copyright 2014 Leo C. + * * Copyright 2000-2009 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * @@ -88,4 +90,3 @@ command_ret_t do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] return CMD_RET_SUCCESS; } - diff --git a/avr/cmd_sd.c b/avr/cmd_sd.c index 46dbcfd..6b75d6e 100644 --- a/avr/cmd_sd.c +++ b/avr/cmd_sd.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include diff --git a/avr/command.c b/avr/command.c index c080527..b6fa418 100644 --- a/avr/command.c +++ b/avr/command.c @@ -1,3 +1,12 @@ +/* + * (C) Copyright 2014 Leo C. + * + * (C) Copyright 2000-2009 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + /* * Command Processor Table */ diff --git a/avr/command_tbl.c b/avr/command_tbl.c index e5c6567..b70c711 100644 --- a/avr/command_tbl.c +++ b/avr/command_tbl.c @@ -1,10 +1,13 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ #include "common.h" - #include "command.h" #include "cmd_mem.h" - extern command_ret_t do_help(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_echo(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_sleep(cmd_tbl_t *, int, int, char * const []); diff --git a/avr/con-utils.c b/avr/con-utils.c index f4023ff..f20dbfe 100644 --- a/avr/con-utils.c +++ b/avr/con-utils.c @@ -1,3 +1,8 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ #include #include "common.h" diff --git a/avr/debug.c b/avr/debug.c index 796647b..5096d59 100644 --- a/avr/debug.c +++ b/avr/debug.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include #include @@ -7,6 +13,7 @@ #include "command.h" #include "print-utils.h" #include "debug.h" + /* * Debugging */ diff --git a/avr/env.c b/avr/env.c index 017053c..7be7d03 100644 --- a/avr/env.c +++ b/avr/env.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include #include @@ -8,7 +14,6 @@ #include "xmalloc.h" #include "crc.h" #include "command.h" - #include "env.h" diff --git a/avr/getopt-min.c b/avr/getopt-min.c index 8e5dd6c..f5ad912 100644 --- a/avr/getopt-min.c +++ b/avr/getopt-min.c @@ -1,6 +1,3 @@ -#include "common.h" - - /* * Minimum getopt, original version was: */ @@ -13,7 +10,8 @@ */ /* $Id: getopt.c,v 1.2 1992/12/07 11:12:52 nickc Exp $ */ -#include +#include "common.h" /* definition of FLASH */ +#include int optind = 1; /* next argv[] index */ char *optarg; /* option parameter if any */ @@ -40,7 +38,7 @@ getopt( /* returns letter, '?', EOF */ ) return -1; } - + c = argv[optind][sp]; /* option letter */ osp = sp++; /* get ready for next letter */ @@ -72,4 +70,3 @@ getopt( /* returns letter, '?', EOF */ return c; } - diff --git a/avr/gpio.c b/avr/gpio.c index 31dbc21..73e9c39 100644 --- a/avr/gpio.c +++ b/avr/gpio.c @@ -1,10 +1,15 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include #include #include "debug.h" #include "gpio.h" - /* Pin Name Port Timer Mode max div max div min f [Hz] diff --git a/avr/i2c.c b/avr/i2c.c index d181ff6..ae2f8da 100644 --- a/avr/i2c.c +++ b/avr/i2c.c @@ -1,3 +1,8 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ /* * I2C (TWI) master interface. @@ -371,6 +376,3 @@ int i2c_read(uint8_t chip, unsigned int addr, uint_fast8_t alen, return !((rc & (XMIT_DONE|DATA_ACK)) == (XMIT_DONE|DATA_ACK)); } - - - diff --git a/avr/main.c b/avr/main.c index f601736..8bffef9 100644 --- a/avr/main.c +++ b/avr/main.c @@ -1,9 +1,11 @@ /* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ */ #include "common.h" - #include #include #include diff --git a/avr/pcf8583.c b/avr/pcf8583.c index 7e9d749..169e4e9 100644 --- a/avr/pcf8583.c +++ b/avr/pcf8583.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + /* * Date & Time support for Philips PCF8583 RTC */ diff --git a/avr/print-utils.c b/avr/print-utils.c index 4205a90..3f48620 100644 --- a/avr/print-utils.c +++ b/avr/print-utils.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include #include diff --git a/avr/serial.c b/avr/serial.c index e897c84..adbc3c4 100644 --- a/avr/serial.c +++ b/avr/serial.c @@ -1,4 +1,7 @@ /* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -12,7 +15,7 @@ static int _write(char c, FILE *stream); -static FILE mystdout = FDEV_SETUP_STREAM(_write, +static FILE mystdout = FDEV_SETUP_STREAM(_write, NULL, _FDEV_SETUP_WRITE); @@ -24,7 +27,7 @@ static FILE mystdout = FDEV_SETUP_STREAM(_write, #endif #if ((BUFFER_SIZE) > 256) -# error: BUFFER_SIZE +# error: BUFFER_SIZE #endif struct ring rx_ring; @@ -119,5 +122,3 @@ uint_fast8_t serial_tstc(void) { return !ring_is_empty(&rx_ring); } - - diff --git a/avr/timer.c b/avr/timer.c index e222e68..f45f267 100644 --- a/avr/timer.c +++ b/avr/timer.c @@ -1,4 +1,7 @@ /* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ */ #include "common.h" @@ -12,10 +15,9 @@ static volatile uint32_t timestamp; -/*---------------------------------------------------------*/ -/* 1000Hz timer interrupt generated by OC3A */ -/*---------------------------------------------------------*/ - +/* + * 1000Hz timer interrupt generated by OC3A + */ ISR(TIMER3_COMPA_vect) { static int_fast8_t tick_10ms; diff --git a/avr/xmalloc.c b/avr/xmalloc.c index 9bf2684..d42d5c9 100644 --- a/avr/xmalloc.c +++ b/avr/xmalloc.c @@ -1,5 +1,10 @@ -#include +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ +#include #include "debug.h" #include "xmalloc.h" @@ -11,7 +16,7 @@ void* xmalloc(size_t size) if (p == NULL) debug("*** Out of memory!\n"); - + return p; } @@ -22,6 +27,6 @@ void* xrealloc(void *p, size_t size) if (p == NULL) debug("*** Out of memory!\n"); - + return p; } diff --git a/avr/z180-serv.c b/avr/z180-serv.c index e3bca16..e0b763f 100644 --- a/avr/z180-serv.c +++ b/avr/z180-serv.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + #include "common.h" #include @@ -7,8 +13,6 @@ #include "debug.h" #include "z180-serv.h" - - /*--------------------------------------------------------------------------*/ diff --git a/avr/z180-stamp-avr.c b/avr/z180-stamp-avr.c deleted file mode 100644 index e6edb33..0000000 --- a/avr/z180-stamp-avr.c +++ /dev/null @@ -1,591 +0,0 @@ -/* - */ - - -#include -//#include -//#include -#include -//#include -//#include -//#include - -#include - - -#include "debug.h" -#include "serial.h" -#include "z80-if.h" - -#define const const __flash -#include "../z180/hdrom.h" -#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; -#define Stat GPIOR0 - -unsigned int to_counter; - -/****************************************************************/ - -#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; - - - -/*--------------------------------------------------------------------------*/ - -/*---------------------------------------------------------*/ -/* 1000Hz timer interrupt generated by OC1A */ -/*---------------------------------------------------------*/ - -ISR(TIMER1_COMPA_vect) -{ - static int_fast8_t tick_10ms; -// static int_fast16_t count_ms; - - int_fast8_t i; - - - i = tick_10ms + 1; - if (i == 10) { - i = 0; - Stat |= S_10MS_TO; - - /* Drive timer procedure of low level disk I/O module */ - //disk_timerproc(); - } - tick_10ms = i; - -#if 0 - count_ms++; - if (count_ms == 1000) { - count_ms = 0; - - i = timeout_1s; - if (i) - timeout_1s = i - 1; - } -#endif -} - - -/*--------------------------------------------------------------------------*/ - -static uint32_t z80_sram_cmp(uint32_t addr, uint32_t length, uint8_t wval, int inc) -{ - uint8_t rval; - int_fast8_t errors = 0; - - DBG_P(1, "SRAM: Check 0x%.5lx byte... ", length); - while (length--) { - if ((rval = z80_read(addr)) != wval) { - if (errors == 0) { - DBG_P(1, "\nSRAM: Address W R\n" \ - " ------------------\n"); - } - errors++; - if (errors > 20) { - DBG_P(1, " ...\n"); - break; - } - DBG_P(1, " 0x%.5lx 0x%.2x 0x%.2x\n", addr, wval, rval); - } - addr++; - wval += inc; - } - DBG_P(1, "Done.\n"); - - return addr; -} - -static void z80_sram_fill(uint32_t addr, uint32_t length, uint8_t startval, int inc) -{ - printf("SRAM: Write 0x%.5lx byte... ", length); - while (length--) { - z80_write(addr, startval); - ++addr; - startval += inc; - } - printf("Done.\n"); -} - - -#if 0 -void z80_sram_fill_string(uint32_t addr, int length, const char *text) -{ - char c; - const char *p = text; - - while (length--) { - z80_write(addr++, c = *p++); - if (c == 0) - p = text; - } -} - - -uint32_t z80_sram_cmp_string(uint32_t addr, int length, const char *text) -{ - char c; - const char *p = text; - - while (length--) { - c = *p++; - if (z80_read(addr) != c) - break; - ++addr; - if (c == 0) - p = text; - } - return addr; -} - -const char * const qbfox = "Zhe quick brown fox jumps over the lazy dog!"; -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; - - z80_request_bus(); - data = z80_read(adr), - z80_release_bus(); - - return data; -} - - -/*--------------------------------------------------------------------------*/ - -static void do_10ms(void) -{ - if (to_counter) - to_counter--; -} - -/*--------------------------------------------------------------------------*/ - -struct msg_item { - uint8_t fct; - uint8_t sub_min, sub_max; - void (*func)(uint8_t, int, uint8_t *); -}; - -uint32_t msg_to_addr(uint8_t *msg) -{ - union { - uint32_t as32; - uint8_t as8[4]; - } addr; - - addr.as8[0] = msg[0]; - addr.as8[1] = msg[1]; - addr.as8[2] = msg[2]; - addr.as8[3] = 0; - - return addr.as32; -} - -void do_msg_ini_msgfifo(uint8_t subf, int len, uint8_t * msg) -{ - (void)subf; (void)len; - - z80_init_msg_fifo(msg_to_addr(msg)); -} - - -void do_msg_ini_memfifo(uint8_t subf, int len, uint8_t * msg) -{ - (void)len; - - z80_memfifo_init(subf - 1, msg_to_addr(msg)); -} - - -void do_msg_char_out(uint8_t subf, int len, uint8_t * msg) -{ - (void)subf; - - while (len--) - putchar(*msg++); -} - - -const FLASH struct msg_item z80_messages[] = -{ - { 0, /* fct nr. */ - 0, 0, /* sub fct nr. from, to */ - do_msg_ini_msgfifo}, - { 0, - 1, 2, - do_msg_ini_memfifo}, - { 1, - 1, 1, - do_msg_char_out}, - { 0xff, /* end mark */ - 0, 0, - 0}, - -}; - - - - -void do_message(int len, uint8_t *msg) -{ - uint8_t fct, sub_fct; - int_fast8_t i = 0; - - if (len >= 2) { - fct = *msg++; - sub_fct = *msg++; - len -= 2; - - while (fct != z80_messages[i].fct) - ++i; - - if (z80_messages[i].fct == 0xff) { - DBG_P(1, "do_message: Unknown function: %i, %i\n", - fct, sub_fct); - return; /* TODO: unknown message # */ - } - - while (fct == z80_messages[i].fct) { - if (sub_fct >= z80_messages[i].sub_min && sub_fct <= z80_messages[i].sub_max ) - break; - ++i; - } - - if (z80_messages[i].fct != fct) { - DBG_P(1, "do_message: Unknown sub function: %i, %i\n", - fct, sub_fct); - return; /* TODO: unknown message sub# */ - } - - (z80_messages[i].func)(sub_fct, len, msg); - - - } else { - /* TODO: error */ - DBG_P(1, "do_message: to few arguments (%i); this shouldn't happen!\n", len); - } -} - - - -#define CTRBUF_LEN 256 - -void check_msg_fifo(void) -{ - int ch; - static int_fast8_t state; - static int msglen,idx; - static uint8_t buffer[CTRBUF_LEN]; - - while (state != 3 && (ch = z80_msg_fifo_getc()) >= 0) { - switch (state) { - case 0: /* wait for start of message */ - if (ch == 0x81) { - msglen = 0; - idx = 0; - state = 1; - } - break; - case 1: /* get msg len */ - if (ch > 0 && ch <= CTRBUF_LEN) { - msglen = ch; - state = 2; - } else - state = 0; - break; - case 2: /* get message */ - buffer[idx++] = ch; - if (idx == msglen) - state = 3; - break; - } - } - - if (state == 3) { - do_message(msglen, buffer); - state = 0; - } -} - - -/*--------------------------------------------------------------------------*/ - -void dump_mem(const __flash uint8_t *addr, uint32_t len) -{ - DBG_P(1, "hdrom dump:"); - while (len) { - DBG_P(1, "\n %.5x:", addr); - for (unsigned i = 0; i<16; i++) - DBG_P(1, " %.2x", *addr++); - len -= len > 16 ? 16 : len; - } - DBG_P(1, "\n"); -} - -/*--------------------------------------------------------------------------*/ - -void z80_load_mem(void) -{ - unsigned sec = 0; - uint32_t sec_base = hdrom_start; - - DBG_P(1, "Loading z80 memory... \n"); - - while (sec < hdrom_sections) { - DBG_P(2, " From: 0x%.5lX to: 0x%.5lX (%5li bytes)\n", - hdrom_address[sec], - hdrom_address[sec]+hdrom_length_of_sections[sec] - 1, - hdrom_length_of_sections[sec]); - - z80_write_block((const __flash unsigned char *) &hdrom[sec_base], /* src */ - hdrom_address[sec], /* dest */ - hdrom_length_of_sections[sec]); /* len */ - sec_base+=hdrom_length_of_sections[sec]; - sec++; - } -} - -/*--------------------------------------------------------------------------*/ - -void z80_dump_mem(uint32_t addr, uint32_t len) -{ - DBG_P(1, "Memory dump:"); - while (len) { - DBG_P(1, "\n %.5lx:", addr); - for (unsigned i = 0; i<16; i++) - DBG_P(1, " %.2x", z80_read(addr++)); - len -= len > 16 ? 16 : len; - } - DBG_P(1, "\n"); -} - -/*--------------------------------------------------------------------------*/ - -void setup_rtc(void) -{ - /* TODO: */ -} - -void setup_avr(void) -{ - /* WD */ - - /* CPU */ - - /* Disable JTAG Interface regardless of the JTAGEN fuse setting. */ - MCUCR = _BV(JTD); - MCUCR = _BV(JTD); - - /* disable unused periphels */ - PRR0 = _BV(PRTIM2) | _BV(PRTIM0) | _BV(PRADC); - PRR1 = _BV(PRTIM5) | _BV(PRTIM4) | _BV(PRTIM3) | - _BV(PRUSART3) | _BV(PRUSART2) | _BV(PRUSART1); - - /* disable analog comparator */ - ACSR = _BV(ACD); - /* Ports */ - - /* Clock */ - CLKPR = _BV(CLKPCE); - CLKPR = 0; - - /* Timer */ - - OCR1A = F_CPU / 8 / 1000 - 1; // Timer1: 1000Hz interval (OC1A) - TCCR1B = 0b00001010; - TIMSK1 = _BV(OCIE1A); // Enable TC1.oca interrupt -} - -const __flash uint8_t iniprog[] = { - 0xAF, // xor a - 0xED, 0x39, 0x36, // out0 (rcr),a ;disable DRAM refresh - 0x3E, 0x30, // ld a,030h - 0xED, 0x39, 0x32 //out0 (dcntl),a ;0 mem, max i/0 wait states -}; - -const __flash uint8_t sertest[] = { - 0xAF, // xor a - 0xED, 0x39, 0x36, // out0 (rcr),a ;disable DRAM refresh - 0x3E, 0x30, // ld a,030h - 0xED, 0x39, 0x32, // out0 (dcntl),a ;0 mem, max i/0 wait states - 0x3E, 0x80, // ld a,M_MPBT ;no MP, PS=10, DR=16, SS=0 - 0xED, 0x39, 0x03, // out0 (cntlb1),a - 0x3E, 0x64, // ld a,M_RE + M_TE + M_MOD2 ; - 0xED, 0x39, 0x01, // out0 (cntla1),a - 0x3E, 0x00, // ld a,0 - 0xED, 0x39, 0x05, // out0 (stat1),a ;Enable rx interrupts - 0xED, 0x38, 0x05, //l0:in0 a,(stat1) - 0xE6, 0x80, // and 80h - 0x28, 0xF9, // jr z,l0 - 0xED, 0x00, 0x09, // in0 b,(rdr1) - 0xED, 0x38, 0x05, //l1:in0 a,(stat1) - 0xE6, 0x02, // and 02h - 0x28, 0xF9, // jr z,l1 - 0xED, 0x01, 0x07, // out0 (tdr1),b - 0x18, 0xEA, // jr l0 -}; - -const __flash uint8_t test1[] = { - 0xAF, // xor a - 0xED, 0x39, 0x36, // out0 (rcr),a ;disable DRAM refresh - 0x3E, 0x30, // ld a,030h - 0xED, 0x39, 0x32, // out0 (dcntl),a ;0 mem, max i/0 wait states - 0x21, 0x1E, 0x00, // ld hl,dmclrt ;load DMA registers - 0x06, 0x08, // ld b,dmct_e-dmclrt - 0x0E, 0x20, // ld c,sar0l - 0xED, 0x93, // otimr - 0x3E, 0xC3, // ld a,0c3h ;dst +1, src +1, burst - 0xED, 0x39, 0x31, // out0 (dmode),a ; - 0x3E, 0x62, // ld a,062h ;enable dma0, - 0xED, 0x39, 0x30, //cl_1: out0 (dstat),a ;copy 64k - 0x18, 0xFB, // jr cl_1 ; - 0x00, 0x00, //dmclrt: dw 0 ;src (inc) - 0x00, // db 0 ;src - 0x00, 0x00, // dw 0 ;dst (inc), - 0x00, // db 0 ;dst - 0x00, 0x00, // dw 0 ;count (64k) -}; - - -int main(void) -{ - int_fast8_t state = 0; - int ch; - - setup_avr(); - serial_setup(); - setup_rtc(); - sei(); - - printf_P(PSTR("\n(ATMEGA1281+HD64180)_stamp Tester\n")); - - DBG_P(1, "z80_setup_bus... "); - z80_setup_msg_fifo(); - z80_setup_bus(); - DBG_P(1, "done.\n"); - - DBG_P(1, "Get bus... "); -/* Now done via S_Z180_RUNNING - z80_busreq(LOW); - z80_reset(HIGH); -*/ - z80_request_bus(); - DBG_P(1, "got it!\n"); - -// z80_sram_fill(0, (uint32_t)512 * 1024, 0x00, 3); -// z80_sram_cmp(0, (uint32_t)512 * 1024, 0x00, 3); -// z80_dump_mem(0, 0x400); - - z80_memset(0, 0x76, 0x80000); -// z80_memset(0, 0x00, 0x80000); -// z80_write_block(test1, 0, sizeof(test1)); - -// z80_dump_mem(0, 0x100); - -// z80_sram_cmp(0, (uint32_t)512 * 1024, 0x76, 0); - - z80_load_mem(); -// z80_write(0, 0x76); -// z80_dump_mem(0, 0x200); - - -/* Now done via S_Z180_RUNNING - z80_reset(LOW); -*/ - z80_release_bus(); - DBG_P(1, "Bus released!\n"); - z80_reset(HIGH); - DBG_P(1, "Reset released!\n"); - - to_counter = 200; - - while (1) { - - if (Stat & S_10MS_TO) { - Stat &= ~S_10MS_TO; - do_10ms(); - } - - - if ((ch = serial_getc()) >= 0) { - switch (state) { - case 0: - if (ch == ESCCHAR) { - state = 1; - /* TODO: Timer starten */ - } else { -// z80_memfifo_putc(fifo_out, ch); - serial_putc(ch); - if (ch == '\r') - serial_putc('\n'); - } - break; - case 1: - switch (ch) { - - case 'r': - z80_reset_pulse(); - break; - - case 'b': - z80_request_bus(); - z80_dump_mem(0, 0x2d20); - z80_release_bus(); - break; - - case 'e': - z80_request_bus(); - z80_dump_mem(0x80000-0x4000, 0x800); - z80_dump_mem(0x80000-0x200, 0x200); - z80_release_bus(); - break; - - case ESCCHAR: - default: -// z80_memfifo_putc(fifo_out, ch); - serial_putc(ch); - if (ch == '\r') - serial_putc('\n'); - } - state = 0; - break; - } - } - -// check_msg_fifo(); - } - - return 0; -} diff --git a/avr/z80-if.c b/avr/z80-if.c index cc0bab1..b64e755 100644 --- a/avr/z80-if.c +++ b/avr/z80-if.c @@ -1,3 +1,9 @@ +/* + * (C) Copyright 2014 Leo C. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + /** * * Pin assignments @@ -50,7 +56,6 @@ * | | P | | af1 OSC32 | * | | P | | af1 OSC32 | - */ -- cgit v1.2.3