home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / EXTRA-ST / CPM-80-E / CPM-0.2 / CPM-0 / cpm-0.2 / codeix.s < prev    next >
Encoding:
Text File  |  1994-06-06  |  4.8 KB  |  177 lines

  1. /*****************************************************************************/
  2. /*                                         */
  3. /*                                         */
  4. /*    CP/M emulator version 0.1                         */
  5. /*                                         */
  6. /*    written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de)             */
  7. /*    June-1994                                 */
  8. /*                                         */
  9. /*    This file is distributed under the GNU COPYRIGHT             */
  10. /*    see COPYRIGHT.GNU for Copyright details                     */
  11. /*                                         */
  12. /*                                         */
  13. /*****************************************************************************/
  14.         .data
  15. jumptabix:
  16.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  17.         .long EXIT2,ix09, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  18.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  19.         .long EXIT2,ix19, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  20.         .long EXIT2,ix21, ix22, ix23, EXIT2,EXIT2,EXIT2,EXIT2
  21.         .long EXIT2,ix29, ix2a, ix2b, EXIT2,EXIT2,EXIT2,EXIT2
  22.         .long EXIT2,EXIT2,EXIT2,EXIT2,ix34, ix35, ix36, EXIT2
  23.         .long EXIT2,ix39, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  24.  
  25.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix46, EXIT2
  26.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix4e, EXIT2
  27.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix56, EXIT2
  28.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix5e, EXIT2
  29.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix66, EXIT2
  30.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix6e, EXIT2
  31.         .long ix70, ix71, ix72, ix73, ix74, ix75, EXIT2,ix77
  32.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix7e, EXIT2
  33.  
  34.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix86, EXIT2
  35.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix8e, EXIT2
  36.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix96, EXIT2
  37.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ix9e, EXIT2
  38.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixa6, EXIT2
  39.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixae, EXIT2
  40.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixb6, EXIT2
  41.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,ixbe, EXIT2
  42.  
  43.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  44.         .long EXIT2,EXIT2,EXIT2,ixcb, EXIT2,EXIT2,EXIT2,EXIT2
  45.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  46.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  47.         .long EXIT2,ixe1, EXIT2,ixe3, EXIT2,ixe5, EXIT2,EXIT2
  48.         .long EXIT2,ixe9, EXIT2,ixeb, EXIT2,EXIT2,EXIT2,EXIT2
  49.         .long EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  50.         .long EXIT2,ixf9, EXIT2,EXIT2,EXIT2,EXIT2,EXIT2,EXIT2
  51.         .text
  52.  
  53.         
  54.         opcode (0x09)        /* ADD IX,BC */
  55. ix09:           andb $0xec,%ah        /* ### H noch falsch */
  56.         addw %cx,IX
  57.         adcb $0,%ah        /* set carry flag if necessary (8 Byte) */
  58.         dispatch
  59.         opcode (0x19)        /* ADD IX,DE */
  60. ix19:           andb $0xec,%ah        /* ### H noch falsch */
  61.         addw %dx,IX
  62.         adc $0,%ah
  63.         dispatch
  64.  
  65.         opcode (0x21)        /* LD IX,nnnn */
  66. ix21:           movw (%esi,%ebp),%di
  67.         movw %di,IX
  68.         incl %esi
  69.         incl %esi
  70.         dispatch
  71.  
  72.         opcode (0x22)           /* LD (nnnn),IX */
  73. ix22:        movzwl (%esi,%ebp),%edi
  74.         pushl %ebx
  75.         movl IX,%ebx
  76.         movw %bx,(%edi,%ebp)
  77.         popl %ebx
  78.         incl %esi
  79.         incl %esi
  80.         dispatch
  81.  
  82.         opcode (0x23)        /* INC IX */
  83. ix23:           incw IX
  84.         dispatch
  85.  
  86.         opcode (0x29)        /* ADD IX,IX */
  87. ix29:           andb $0xec,%ah        /* clear some Flags  ### H noch falsch */
  88.         movl IX,%edi
  89.         addw %di,%di
  90.         movl %edi,IX
  91.         adc $0,%ah
  92.         dispatch
  93.  
  94.         opcode (0x2a)        /* LD IX,(nnnn) */
  95. ix2a:           movzwl (%esi,%ebp),%edi
  96.         pushl %ebx
  97.         movw (%edi,%ebp),%bx
  98.         movw %bx,IX
  99.         popl %ebx
  100.         incl %esi
  101.         incl %esi
  102.         dispatch
  103.  
  104.         opcode (0x2b)        /* DEC IX */
  105. ix2b:           decw IX
  106.         dispatch
  107.  
  108.         opcode (0x34)           /* INC (IX+off) */
  109. ix34:        GETIXOFF
  110.         inc8mac((%ebp,%edi))
  111.         dispatch
  112.  
  113.         opcode (0x35)            /* DEC (IX+off) */
  114. ix35:        GETIXOFF
  115.         dec8mac((%ebp,%edi))
  116.         dispatch
  117.  
  118.         opcode (0x36)        /* LD (IX+off),nn */
  119. ix36:        GETIXOFF        /* erst offset, dann data! */
  120.         pushl %eax
  121.         movb (%esi,%ebp),%al
  122.         incl %esi
  123.         movb %al,(%edi,%ebp)
  124.         popl %eax
  125.         dispatch
  126.  
  127.         opcode (0x39)        /* ADD IX,SP */
  128. ix39:           andb $0xec,%ah        /* clear some Flags  ### H noch falsch */
  129.         movw _z80regs+4,%di
  130.         addw %di,IX
  131.         adc $0,%ah
  132.         dispatch
  133.  
  134.                 opcode (0xe1)        /* POP IX */
  135. ixe1:        movl _z80regs+4,%edi
  136.         pushl %eax
  137.         movw (%edi,%ebp),%ax
  138.         incl %edi
  139.         incl %edi
  140.         movl %edi,_z80regs+4
  141.         movw %ax,IX
  142.         popl %eax
  143.         dispatch
  144.  
  145.                 opcode (0xe5)        /* PUSH IX */
  146. ixe5:        movl _z80regs+4,%edi
  147.         decw %di
  148.         decw %di
  149.         pushl %ebx
  150.         movw IX,%bx
  151.         movw %bx,(%ebp,%edi)
  152.         popl %ebx
  153.         movl %edi,_z80regs+4
  154.         dispatch
  155.  
  156.                 opcode (0xe3)            /* EX (SP),IX */
  157. ixe3:        movl _z80regs+4,%edi
  158.         pushl %ebx
  159.                 movw (%edi,%ebp),%bx
  160.         xchgw %bx,IX
  161.         movw %bx,(%edi,%ebp)
  162.         popl %ebx
  163.             dispatch
  164.  
  165.                 opcode (0xe9)        /* JP (IX) */
  166. ixe9:           movl IX,%esi
  167.                 dispatch
  168.  
  169.                 opcode (0xeb)        /* EX DE,IX */
  170. ixeb:           xchgl IX,%edx
  171.                 dispatch
  172.  
  173.                 opcode (0xf9)        /* LD SP,IX */
  174. ixf9:            movl IX,%edi
  175.         movl %edi,_z80regs+4
  176.                 dispatch
  177.