From 8a4df3af35e0c8e5be7406233dc74c8ade52d51f Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 25 Jul 2010 22:40:07 +0000 Subject: [PATCH] * avr/z80.asm: - Removed DRAM_DQ_ORDER. - New macros inm8/outm8 to hide the differences between ATmega8 and ATmegaX8. - Added USART TX buffer with Interrupt. - DRAM read: 1 nop added. - Cleaned up INS_DEBUG. git-svn-id: svn://cu.loc/avr-cpm/trunk@51 57430480-672e-4586-8877-bcf8adbbf3b7 --- avrcpm/avr/z80.asm | 379 ++++++++++++++++++++++++--------------------- 1 file changed, 199 insertions(+), 180 deletions(-) diff --git a/avrcpm/avr/z80.asm b/avrcpm/avr/z80.asm index 0f2e46b..dd32be8 100644 --- a/avrcpm/avr/z80.asm +++ b/avrcpm/avr/z80.asm @@ -31,9 +31,6 @@ .list .listmac -#ifndef DRAM_DQ_ORDER /* If this is set to 1, the portbits */ - #define DRAM_DQ_ORDER 0 /* for DRAM D1 and WE are swapped. */ -#endif #ifndef F_CPU @@ -47,6 +44,7 @@ #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) /* clever rounding */ #define RXBUFSIZE 64 /* USART recieve buffer size. Must be power of 2 */ +#define TXBUFSIZE 64 /* USART transmit buffer size. Must be power of 2 */ #define REFR_RATE 64000 /* dram refresh rate in cycles/s. */ /* Most drams need 1/15.6µs. */ @@ -115,16 +113,11 @@ .equ PB_OUTPUT_MASK = (1< 0x3f + sts @0,@1 +.else + out @0,@1 +.endif +.endm + +;---------------------------------------- +; +.macro inm8 +.if @1 > 0x3f + lds @0,@1 +.else + in @0,@1 +.endif +.endm + .cseg @@ -253,8 +257,8 @@ rjmp sysclockint ; 1ms system timer .org URXCaddr rjmp rxint ; USART receive int. -;.org UDREaddr -; rjmp txint +.org UDREaddr + rjmp txint ; USART transmit int. .org INT_VECTORS_SIZE @@ -264,41 +268,32 @@ start: ldi temp,high(RAMEND) ; top of memory out SPH,temp ; init stack pointer + clr _0 + ; - Kill wdt wdr -#if defined __ATmega8__ - out MCUCSR,_0 - - ldi temp,(1<