X-Git-Url: http://cloudbase.mooo.com/gitweb/avrcpm.git/blobdiff_plain/99ed719900586348e7c4f3c2c39ebb60ec20bf2b..f2114c72ecf341b6b8cfb71c440cef7aeb2ccf0c:/avrcpm/avr/z80.asm diff --git a/avrcpm/avr/z80.asm b/avrcpm/avr/z80.asm index 409cc88..0f2e46b 100644 --- a/avrcpm/avr/z80.asm +++ b/avrcpm/avr/z80.asm @@ -21,6 +21,8 @@ .include "m8def.inc" #elif defined atmega168 .include "m168def.inc" +#elif defined atmega328P + .include "m328Pdef.inc" #else /* default */ .include "m88def.inc" ;FUSE_H=0xDF @@ -61,7 +63,7 @@ #define DRAM_WORD_ACCESS 0 /* experimental */ -#define EM_Z80 0 /* we don't have any z80 instructions yet */ +#define EM_Z80 0 /* we don't have any z80 instructions yet */ .equ MMC_DEBUG = 0 .equ INS_DEBUG = 0 @@ -105,8 +107,8 @@ .equ ram_ras = 5 .equ mmc_sck = 5 -.equ P_RAS = PORTB +.equ P_RAS = PORTB .equ P_AL = PORTB ; ram_a[4..0] .equ RAM_AL_MASK = (1< Z80 periph stuff ------------------ .equ memReadByte = dram_read @@ -2139,18 +2306,15 @@ do_fetch_af: ret do_fetch_bc: - mov opl,z_c - mov oph,z_b + movw opl,z_c ret do_fetch_de: - mov opl,z_e - mov oph,z_d + movw opl,z_e ret do_fetch_hl: - mov opl,z_l - mov oph,z_h + movw opl,z_l ret do_fetch_sp: @@ -2158,22 +2322,19 @@ do_fetch_sp: ret do_fetch_mbc: - mov adrh,z_b - mov adrl,z_c + movw adrl,z_c rcall memReadByte mov opl,temp ret do_fetch_mde: - mov adrh,z_d - mov adrl,z_e + movw adrl,z_e rcall memReadByte mov opl,temp ret do_fetch_mhl: - mov adrh,z_h - mov adrl,z_l + movw adrl,z_l rcall memReadByte mov opl,temp ret @@ -2186,7 +2347,6 @@ do_fetch_msp: #else rcall memReadByte mov opl,temp - adiw adrl,1 rcall memReadByte mov oph,temp @@ -2328,22 +2488,19 @@ do_store_hl: ret do_store_mbc: - mov adrh,z_b - mov adrl,z_c + movw adrl,z_c mov temp,opl rcall memWriteByte ret do_store_mde: - mov adrh,z_d - mov adrl,z_e + movw adrl,z_e mov temp,opl rcall memWriteByte ret do_store_mhl: - mov adrh,z_h - mov adrl,z_l + movw adrl,z_l mov temp,opl rcall memWriteByte ret @@ -2692,7 +2849,6 @@ opjumps: mov zl,@2 lpm @0,z .endm - .macro do_z80_flags_HP #if EM_Z80 bmov z_flags, ZFL_P, temp, AVR_V @@ -2795,7 +2951,8 @@ do_op_dec: ; ; do_op_inc16: - adiw opl,1 + subi opl,low(-1) + sbci oph,high(-1) ret ;---------------------------------------------------------------- @@ -3033,8 +3190,7 @@ do_op_addhl: do_op_sthl: ;store hl to mem loc in opl:h movw adrl,opl #if DRAM_WORD_ACCESS - mov temp,z_l - mov temp2,z_h + movw temp,z_l rcall memWriteWord #else mov temp,z_l @@ -3315,6 +3471,7 @@ do_op_pop16: add z_spl,temp adc z_sph,_0 + .if STACK_DBG rcall printstr .db "Stack pop: val ",0 @@ -3376,8 +3533,8 @@ do_op_ei: do_op_ifnz: sbrs z_flags, ZFL_Z ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3391,8 +3548,8 @@ do_op_ifnz: do_op_ifz: sbrc z_flags, ZFL_Z ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3406,8 +3563,8 @@ do_op_ifz: do_op_ifnc: sbrs z_flags, ZFL_C ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3421,8 +3578,8 @@ do_op_ifnc: do_op_ifc: sbrc z_flags, ZFL_C ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3436,8 +3593,8 @@ do_op_ifc: do_op_ifpo: sbrs z_flags, ZFL_P ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3451,8 +3608,8 @@ do_op_ifpo: do_op_ifpe: sbrc z_flags, ZFL_P ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3466,8 +3623,8 @@ do_op_ifpe: do_op_ifp: ;sign positive, aka s=0 sbrs z_flags, ZFL_S ret - ldi insdech,0 - ldi insdecl,0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3481,8 +3638,8 @@ do_op_ifp: ;sign positive, aka s=0 do_op_ifm: ;sign negative, aka s=1 sbrc z_flags, ZFL_S ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3599,7 +3756,6 @@ sz53p_tab: ; The table is made of 256 words. These 16-bit words consist of ; the fetch operation (bit 0-4), the processing operation (bit 10-16) and the store ; operation (bit 5-9). - .org (PC+255) & 0xff00 inst_table: .dw (FETCH_NOP | OP_NOP | STORE_NOP) ; 00 NOP @@ -3860,4 +4016,3 @@ inst_table: .dw (FETCH_RST | OP_NOP | STORE_CALL) ; FF RST 38H ; vim:set ts=8 noet nowrap -