summaryrefslogtreecommitdiff
path: root/avr/z180-serv.c
diff options
context:
space:
mode:
authorLeo C2014-10-26 12:43:57 +0100
committerLeo C2014-10-26 12:43:57 +0100
commit8a7deceacd30529e5c32082b2c719eb055841d0d (patch)
tree19b22d5a0363847ad5e29dd2d8c726191b1b5c82 /avr/z180-serv.c
parent889202c46ced1be4fc0db3faf63564722eba2865 (diff)
downloadz180-stamp-8a7deceacd30529e5c32082b2c719eb055841d0d.zip
working connect command, new sleep command
Diffstat (limited to 'avr/z180-serv.c')
-rw-r--r--avr/z180-serv.c52
1 files changed, 14 insertions, 38 deletions
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 <util/atomic.h>
@@ -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