/*****************************************************************************/ /* */ /* */ /* CP/M emulator version 0.1 */ /* */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* June-1994 */ /* */ /* This file is distributed under the GNU COPYRIGHT */ /* see COPYRIGHT.GNU for Copyright details */ /* */ /* */ /*****************************************************************************/ .data jumptabix: .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,ix09, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,ix19, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,ix21, ix22, ix23, EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,ix29, ix2a, ix2b, EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,ix34, ix35, ix36, EXIT2 .long EXIT2,ix39, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix46, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix4e, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix56, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix5e, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix66, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix6e, EXIT2 .long ix70, ix71, ix72, ix73, ix74, ix75, EXIT2,ix77 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix7e, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix86, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix8e, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix96, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix9e, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixa6, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixae, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixb6, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixbe, EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,EXIT2,EXIT2,ixcb, EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,ixe1, EXIT2,ixe3, EXIT2,ixe5, EXIT2,EXIT2 .long EXIT2,ixe9, EXIT2,ixeb, EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .long EXIT2,ixf9, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2 .text opcode (0x09) /* ADD IX,BC */ ix09: andb $0xec,%ah /* ### H noch falsch */ addw %cx,IX adcb $0,%ah /* set carry flag if necessary (8 Byte) */ dispatch opcode (0x19) /* ADD IX,DE */ ix19: andb $0xec,%ah /* ### H noch falsch */ addw %dx,IX adc $0,%ah dispatch opcode (0x21) /* LD IX,nnnn */ ix21: movw (%esi,%ebp),%di movw %di,IX incl %esi incl %esi dispatch opcode (0x22) /* LD (nnnn),IX */ ix22: movzwl (%esi,%ebp),%edi pushl %ebx movl IX,%ebx movw %bx,(%edi,%ebp) popl %ebx incl %esi incl %esi dispatch opcode (0x23) /* INC IX */ ix23: incw IX dispatch opcode (0x29) /* ADD IX,IX */ ix29: andb $0xec,%ah /* clear some Flags ### H noch falsch */ movl IX,%edi addw %di,%di movl %edi,IX adc $0,%ah dispatch opcode (0x2a) /* LD IX,(nnnn) */ ix2a: movzwl (%esi,%ebp),%edi pushl %ebx movw (%edi,%ebp),%bx movw %bx,IX popl %ebx incl %esi incl %esi dispatch opcode (0x2b) /* DEC IX */ ix2b: decw IX dispatch opcode (0x34) /* INC (IX+off) */ ix34: GETIXOFF inc8mac((%ebp,%edi)) dispatch opcode (0x35) /* DEC (IX+off) */ ix35: GETIXOFF dec8mac((%ebp,%edi)) dispatch opcode (0x36) /* LD (IX+off),nn */ ix36: GETIXOFF /* erst offset, dann data! */ pushl %eax movb (%esi,%ebp),%al incl %esi movb %al,(%edi,%ebp) popl %eax dispatch opcode (0x39) /* ADD IX,SP */ ix39: andb $0xec,%ah /* clear some Flags ### H noch falsch */ movw z80regs+4,%di addw %di,IX adc $0,%ah dispatch opcode (0xe1) /* POP IX */ ixe1: movl z80regs+4,%edi pushl %eax movw (%edi,%ebp),%ax incl %edi incl %edi movl %edi,z80regs+4 movw %ax,IX popl %eax dispatch opcode (0xe5) /* PUSH IX */ ixe5: movl z80regs+4,%edi decw %di decw %di pushl %ebx movw IX,%bx movw %bx,(%ebp,%edi) popl %ebx movl %edi,z80regs+4 dispatch opcode (0xe3) /* EX (SP),IX */ ixe3: movl z80regs+4,%edi pushl %ebx movw (%edi,%ebp),%bx xchgw %bx,IX movw %bx,(%edi,%ebp) popl %ebx dispatch opcode (0xe9) /* JP (IX) */ ixe9: movl IX,%esi dispatch opcode (0xeb) /* EX DE,IX */ ixeb: xchgl IX,%edx dispatch opcode (0xf9) /* LD SP,IX */ ixf9: movl IX,%edi movl %edi,z80regs+4 dispatch