X-Git-Url: http://cloudbase.mooo.com/gitweb/avrcpm.git/blobdiff_plain/29fb1fd423f3f8402c2f7f997ce3d5f62fdbf219..12a27f27734b18ba4dea8d411095cf53c3870ef2:/avr/8080int-jmp.asm diff --git a/avr/8080int-jmp.asm b/avr/8080int-jmp.asm index 23ef640..6a2df73 100644 --- a/avr/8080int-jmp.asm +++ b/avr/8080int-jmp.asm @@ -1,6 +1,6 @@ ; 8080 Interpreter. ; This is part of the Z80-CP/M emulator written by Sprite_tm. -; +; ; Copyright (C) 2010 Sprite_tm ; Copyright (C) 2010 Leo C. @@ -25,7 +25,7 @@ ; .dseg -z_regs: +z_regs: z_b: .byte 1 z_c: .byte 1 z_d: .byte 1 @@ -88,7 +88,7 @@ z_istat: .byte 1 #endif .cseg - + ;Init z80 z80_init: ldi z_pcl,low (IPLADDR) @@ -145,14 +145,14 @@ noprintpc: ; ; instr fetch, op, store ; -.macro instr +.macro instr .ifndef opcjmp_table_pos_ .set todo_table_pos_ = PC ; Place the opcode jump table on the next available location. .equ opcjmp = (PC+255) & 0xff00 .set opcjmp_table_pos_ = opcjmp .endif - + .if todo_table_pos_ < opcjmp + 256 + 128 .if todo_table_pos_ + 3 >= opcjmp .set todo_table_pos_ = opcjmp + 256 + 128 @@ -174,15 +174,15 @@ noprintpc: .endif .if cnt_ == 1 ; jump direct to action - .if fetch_ ; - rjmp @0 ; - .endif + .if fetch_ ; + rjmp @0 ; + .endif .if op_ rjmp do_@1 ; do op and return to main - .endif - .if store_ ; - rjmp @2 ; - .endif + .endif + .if store_ ; + rjmp @2 ; + .endif .endif ; two or tree actions @@ -194,7 +194,7 @@ noprintpc: .if fetch_ ; must fetch .if op_ || store_ rcall @0 ; fetch and come back here - .else ; + .else ; rjmp @0 ; fetch and return to main .endif .endif @@ -207,20 +207,20 @@ noprintpc: .endif .if store_ ; must store rjmp @2 ; store is allways last - .endif - + .endif + .set todo_table_pos_ = PC .endif .endm - + ; ------------ Fetch phase stuff ----------------- ;.org (PC+255) & 0xff00 fetch_ops: -do_fetch_nop: +do_fetch_nop: ret do_fetch_a: @@ -326,7 +326,7 @@ do_fetch_rst: store_ops: do_store_nop: ret - + do_store_a: mov z_a,opl ret @@ -664,8 +664,8 @@ do_store_am: .macro ldpmx ldi zh,high(@1*2) ; table must be page aligned - mov zl,@2 - lpm @0,z + mov zl,@2 + lpm @0,z .endm .macro do_z80_flags_V @@ -704,7 +704,7 @@ do_store_am: #endif .endm - + .macro do_z80_flags_copy_HC #if EM_Z80 bmov z_flags, ZFL_H, z_flags, ZFL_H @@ -745,7 +745,7 @@ haltinv: do_op_nop: ret - + ;---------------------------------------------------------------- ;|Mnemonic |SZHPNC|Description |Notes | ;---------------------------------------------------------------- @@ -804,7 +804,7 @@ do_op_ina: ; in a,(opl) ;|INC r |**-P0-|Increment |r=r+1 | ;|INC [HL] |**-P0-|Increment |[HL]=[HL]+1 | ; -; +; do_op_inc: ldi temp,1 add opl,temp @@ -867,7 +867,7 @@ do_op_deca: ;|INC xx |------|Increment |xx=xx+1 | ;|INC ss |------|Increment |ss=ss+1 | ; -; +; do_op_inc16: subi opl,low(-1) sbci oph,high(-1) @@ -879,7 +879,7 @@ do_op_inc16: ;|DEC xx |------|Decrement |xx=xx-1 | ;|DEC ss |------|Decrement |ss=ss-1 | ; -; +; do_op_dec16: subi opl, 1 sbci oph, 0 @@ -894,7 +894,7 @@ do_op_dec16: ; ; do_op_rlca: - ;Rotate Left Cyclical. All bits move 1 to the + ;Rotate Left Cyclical. All bits move 1 to the ;left, the msb becomes c and lsb. do_z80_flags_op_rotate lsl z_a @@ -913,8 +913,8 @@ do_op_rlc_noc: ;|RRCA |---- *|Rotate Right Circular|A=->A | ; ; -do_op_rrca: - ;Rotate Right Cyclical. All bits move 1 to the +do_op_rrca: + ;Rotate Right Cyclical. All bits move 1 to the ;right, the lsb becomes c and msb. do_z80_flags_op_rotate lsr z_a @@ -932,9 +932,9 @@ do_op_rrc_noc: ;|----------|SZHP C|---------- 8080 ----------------------------| ;|RRA |---- *|Rotate Right Acc. |A=->{CY,A} | ; -; -do_op_rra: - ;Rotate Right. All bits move 1 to the right, the lsb +; +do_op_rra: + ;Rotate Right. All bits move 1 to the right, the lsb ;becomes c, c becomes msb. clc ; get z80 carry to avr carry sbrc z_flags,ZFL_C @@ -951,9 +951,9 @@ do_op_rra: ;|----------|SZHP C|---------- 8080 ----------------------------| ;|RLA |---- *|Rotate Left Acc. |A={CY,A}<- | ; -; +; do_op_rla: - ;Rotate Left. All bits move 1 to the left, the msb + ;Rotate Left. All bits move 1 to the left, the msb ;becomes c, c becomes lsb. clc sbrc z_flags,ZFL_C @@ -1142,7 +1142,7 @@ do_op_sthl: ;store hl to mem loc in opl:h ;---------------------------------------------------------------- ;|LD dst,src|------|Load |dst=src | ; -; +; do_op_rmem16: movw xl,opl mem_read_d opl @@ -1198,13 +1198,13 @@ do_op_rmem8: ; ; --------------------- ; | N | H | low |H' | -; | | |nibble | | +; | | |nibble | | ; |---+---+-------+---| -; | 0 | * | 0-9 | 0 | -; | 0 | * | a-f | 1 | -; | 1 | 0 | * | 0 | -; | 1 | 1 | 6-f | 0 | -; | 1 | 1 | 0-5 | 1 | +; | 0 | * | 0-9 | 0 | +; | 0 | * | a-f | 1 | +; | 1 | 0 | * | 0 | +; | 1 | 1 | 6-f | 0 | +; | 1 | 1 | 0-5 | 1 | ; --------------------- ; ; Ohter flags: @@ -1218,7 +1218,7 @@ do_op_rmem8: do_op_da: #if EM_Z80 - sbrc z_flags,ZFL_N ;if add-op + sbrc z_flags,ZFL_N ;if add-op rjmp op_da_sub ;then #endif @@ -1232,8 +1232,8 @@ op_da_add: brlo op_da_a10 ; | op_da_a01: ; then ldi oph,0x06 ; add 6 to lower nibble - add opl,oph ; - brhc op_da_02 ; if + add opl,oph ; + brhc op_da_02 ; if ori temp2,(1<= 0xA0) - brlo op_da_a13 ; + brlo op_da_a13 ; op_da_a12: ; ldi oph,0x60 ; add 6 to lower nibble add opl,oph ; @@ -1265,7 +1265,7 @@ do_op_da: ldi temp2,0 ;new C and H flag ldi oph,0 ;oph: what to add - sbrc z_flags,ZFL_N ;if add-op + sbrc z_flags,ZFL_N ;if add-op rjmp op_da_sub ;then op_da_add: mov temp,opl ; | @@ -1279,7 +1279,7 @@ op_da_add: rjmp op_da_a02 ; if (C flag ... cpi opl,0x90 ; |... or upper nibble >= 0x90) brlo op_da_a03 ; | -op_da_a02: +op_da_a02: ori oph,0x60 ; add 0x60 ori temp2,(1<= 0xA0) - brlo op_da_a13 ; -op_da_a12: + brlo op_da_a13 ; +op_da_a12: ori oph,0x60 ; add 0x60 ori temp2,(1<HL | ;|EX DE,HL |------|Exchange |DE<->HL | ;-----------------------------Z80-------------------------------- -; +; do_op_exhl: lds temp,z_l lds temp2,z_h @@ -1453,7 +1453,7 @@ do_op_ifnz: sbrs z_flags, ZFL_Z ret pop temp ; nix tun - pop temp ; direkt zurueck zu main + pop temp ; direkt zurueck zu main ret ;---------------------------------------------------------------- @@ -1468,7 +1468,7 @@ do_op_ifz: sbrc z_flags, ZFL_Z ret pop temp ; nix tun - pop temp ; direkt zurueck zu main + pop temp ; direkt zurueck zu main ret ;---------------------------------------------------------------- @@ -1483,7 +1483,7 @@ do_op_ifnc: sbrs z_flags, ZFL_C ret pop temp ; nix tun - pop temp ; direkt zuruech zu main + pop temp ; direkt zuruech zu main ret ;---------------------------------------------------------------- @@ -1498,7 +1498,7 @@ do_op_ifc: sbrc z_flags, ZFL_C ret pop temp ; nix tun - pop temp ; direkt zuruech zu main + pop temp ; direkt zuruech zu main ret ;---------------------------------------------------------------- @@ -1513,7 +1513,7 @@ do_op_ifpo: sbrs z_flags, ZFL_P ret pop temp ; nix tun - pop temp ; direkt zuruech zu main + pop temp ; direkt zuruech zu main ret ;---------------------------------------------------------------- @@ -1528,7 +1528,7 @@ do_op_ifpe: sbrc z_flags, ZFL_P ret pop temp ; nix tun - pop temp ; direkt zuruech zu main + pop temp ; direkt zuruech zu main ret ;---------------------------------------------------------------- @@ -1543,7 +1543,7 @@ do_op_ifp: ;sign positive, aka s=0 sbrs z_flags, ZFL_S ret pop temp ; nix tun - pop temp ; direkt zuruech zu main + pop temp ; direkt zuruech zu main ret ;---------------------------------------------------------------- @@ -1558,15 +1558,15 @@ do_op_ifm: ;sign negative, aka s=1 sbrc z_flags, ZFL_S ret pop temp ; nix tun - pop temp ; direkt zuruech zu main + pop temp ; direkt zuruech zu main ret - + ; ----------------------- Opcode decoding ------------------------- ; Lookup table for Z80 opcodes. Translates the first byte of the instruction word into three ; operations: fetch, do something, store. -; The table is made of 256 words. +; The table is made of 256 words. ; .org (PC+255) & 0xff00 @@ -1834,7 +1834,7 @@ instr do_fetch_RST, op_nop, do_store_CALL ;FF ;RST 38H ; Lookup table, stolen from z80ex, Z80 emulation library. ; http://z80ex.sourceforge.net/ -; The S, Z, 5 and 3 bits and the parity of the lookup value +; The S, Z, 5 and 3 bits and the parity of the lookup value ; .org (PC+255) & 0xff00 .org opcjmp + 256 @@ -1871,6 +1871,5 @@ sz53p_tab: .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac - -; vim:set ts=8 noet nowrap +; vim:set ts=8 noet nowrap