X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/64045ba0916623ab9e7c2f1eed837a2aae081e63..762a42ef835d3692bf0d9bea19f5cfd9cb673a33:/avr/z180-stamp-avr.c diff --git a/avr/z180-stamp-avr.c b/avr/z180-stamp-avr.c index 6871027..4ea4d47 100644 --- a/avr/z180-stamp-avr.c +++ b/avr/z180-stamp-avr.c @@ -22,16 +22,52 @@ #undef const #define FLASH __flash +//#define FLASH #define ESCCHAR ('^'-0x40) #define S_10MS_TO (1<<0) -static volatile int_fast8_t timeout_1s; -static volatile uint_least8_t Stat; +volatile int_fast8_t timeout_1s; +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 ; + +} + +/****************************************************************/ + /*--------------------------------------------------------------------------*/ @@ -46,7 +82,10 @@ 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(); } @@ -62,10 +101,6 @@ 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) @@ -73,7 +108,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 0x%.5lX byte... ", length); + DBG_P(1, "SRAM: Check %#.5x byte... ", length); while (length--) { if ((rval = z80_read(addr)) != wval) { if (errors == 0) { @@ -141,8 +176,6 @@ 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; @@ -154,6 +187,13 @@ uint8_t z80_get_byte(uint32_t adr) return data; } + +/*--------------------------------------------------------------------------*/ + +static void do_10ms(void) +{ +} + /*--------------------------------------------------------------------------*/ struct msg_item { @@ -162,7 +202,6 @@ struct msg_item { void (*func)(uint8_t, int, uint8_t *); }; -static uint32_t msg_to_addr(uint8_t *msg) { union { @@ -178,7 +217,6 @@ 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; @@ -187,7 +225,6 @@ 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; @@ -196,7 +233,6 @@ 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; @@ -206,7 +242,6 @@ void do_msg_char_out(uint8_t subf, int len, uint8_t * msg) } -static const FLASH struct msg_item z80_messages[] = { { 0, /* fct nr. */ @@ -225,7 +260,8 @@ const FLASH struct msg_item z80_messages[] = }; -static + + void do_message(int len, uint8_t *msg) { uint8_t fct, sub_fct; @@ -267,10 +303,9 @@ void do_message(int len, uint8_t *msg) } -//TODO: + #define CTRBUF_LEN 256 -static void check_msg_fifo(void) { int ch; @@ -309,7 +344,6 @@ void check_msg_fifo(void) } -static void z80_load_mem(void) { unsigned sec = 0; @@ -330,7 +364,6 @@ void z80_load_mem(void) sec++; } } - /*--------------------------------------------------------------------------*/ int main(void) @@ -340,6 +373,7 @@ 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... "); @@ -347,6 +381,7 @@ int main(void) z80_setup_bus(); DBG_P(1, "done.\n"); + DBG_P(1, "Get bus... "); z80_busreq(LOW); z80_reset(HIGH);