#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 ;
+
+}
+
+/****************************************************************/
+
/*--------------------------------------------------------------------------*/
if (tick_10ms == 10)
{
Stat |= S_10MS_TO;
+
tick_10ms = 0;
+
+
/* Drive timer procedure of low level disk I/O module */
//disk_timerproc();
}
}
-static void do_10ms(void)
-{
-}
-
/*--------------------------------------------------------------------------*/
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);
+ DBG_P(1, "SRAM: Check %#.5x byte... ", length);
while (length--) {
if ((rval = z80_read(addr)) != wval) {
if (errors == 0) {
#endif
-/*--------------------------------------------------------------------------*/
-
uint8_t z80_get_byte(uint32_t adr)
{
uint8_t data;
return data;
}
+
+/*--------------------------------------------------------------------------*/
+
+static void do_10ms(void)
+{
+}
+
/*--------------------------------------------------------------------------*/
struct msg_item {
void (*func)(uint8_t, int, uint8_t *);
};
-static
uint32_t msg_to_addr(uint8_t *msg)
{
union {
return addr.as32;
}
-static
void do_msg_ini_msgfifo(uint8_t subf, int len, uint8_t * msg)
{
(void)subf; (void)len;
}
-static
void do_msg_ini_memfifo(uint8_t subf, int len, uint8_t * msg)
{
(void)len;
}
-static
void do_msg_char_out(uint8_t subf, int len, uint8_t * msg)
{
(void)subf;
}
-static
const FLASH struct msg_item z80_messages[] =
{
{ 0, /* fct nr. */
};
-static
+
+
void do_message(int len, uint8_t *msg)
{
uint8_t fct, sub_fct;
}
-//TODO:
+
#define CTRBUF_LEN 256
-static
void check_msg_fifo(void)
{
int ch;
}
-static
void z80_load_mem(void)
{
unsigned sec = 0;
sec++;
}
}
-
/*--------------------------------------------------------------------------*/
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... ");
z80_setup_bus();
DBG_P(1, "done.\n");
+
DBG_P(1, "Get bus... ");
z80_busreq(LOW);
z80_reset(HIGH);