From 8a7deceacd30529e5c32082b2c719eb055841d0d Mon Sep 17 00:00:00 2001 From: Leo C Date: Sun, 26 Oct 2014 12:43:57 +0100 Subject: working connect command, new sleep command --- avr/z180-serv.c | 52 ++++++++++++++-------------------------------------- 1 file changed, 14 insertions(+), 38 deletions(-) (limited to 'avr/z180-serv.c') diff --git a/avr/z180-serv.c b/avr/z180-serv.c index 56852cb..e6b4efd 100644 --- a/avr/z180-serv.c +++ b/avr/z180-serv.c @@ -1,6 +1,3 @@ -/* - */ - #include "common.h" #include @@ -18,11 +15,11 @@ uint8_t z80_get_byte(uint32_t adr) { uint8_t data; - + z80_bus_cmd(Request); data = z80_read(adr); z80_bus_cmd(Release); - + return data; } @@ -101,12 +98,12 @@ void do_message(int len, uint8_t *msg) fct, sub_fct); return; /* TODO: unknown message # */ } - + ++i; } while (fct == z80_messages[i].fct) { - if (sub_fct >= z80_messages[i].sub_min && + if (sub_fct >= z80_messages[i].sub_min && sub_fct <= z80_messages[i].sub_max ) break; ++i; @@ -169,12 +166,12 @@ void check_msg_fifo(void) int msg_handling(int state) { uint8_t pending; - - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + + ATOMIC_BLOCK(ATOMIC_FORCEON) { pending = (Stat & S_MSG_PENDING) != 0; Stat &= ~S_MSG_PENDING; } - + if (pending) { switch (state) { case 0: @@ -196,37 +193,14 @@ int msg_handling(int state) return state; } - - -int console_handling(int state) -{ - int ch; - uint8_t pending; - - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - pending = (Stat & S_CON_PENDING) != 0; - Stat &= ~S_CON_PENDING; - } - - if (pending) { - while ((ch = z80_memfifo_getc(fifo_conout)) >= 0) { - putchar(ch); - } - } - - return state; -} - - static int handle_msg_handling; void setup_z180_serv(void) { - + handle_msg_handling = bg_register(msg_handling, 0); -// bg_register(console_handling, 0); } void restart_z180_serv(void) @@ -236,7 +210,9 @@ void restart_z180_serv(void) z80_write(0x41, 0); z80_write(0x42, 0); z80_bus_cmd(Release); - + + for (int i = 0; i < NUM_FIFOS; i++) + z80_memfifo_init(i, 0); bg_setstat(handle_msg_handling, 0); } @@ -295,13 +271,13 @@ const FLASH uint8_t test1[] = { 0x21, 0x1E, 0x00, // ld hl,dmclrt ;load DMA registers 0x06, 0x08, // ld b,dmct_e-dmclrt 0x0E, 0x20, // ld c,sar0l - 0xED, 0x93, // otimr + 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, + 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, 0x00, //dmclrt: dw 0 ;src (inc) 0x00, // db 0 ;src 0x00, 0x00, // dw 0 ;dst (inc), 0x00, // db 0 ;dst -- cgit v1.2.3