?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1.         ALIGNrm ;на всякий случай, вдруг там есть r/m
  2. EXTer
  3.        UNTESTED
  4. ;0f 31 = rdtsc eax edx
  5. ;0f b6 d0 = movzx dx,al (move with zero-extend)
  6. ;0f b6 c2 = movzx ax,dl (move with zero-extend)
  7. ;0f b6 06 87 0c = movzx ax,byte ptr [0c87] for pitman
  8. ;0f b6 9f 8e 0c = movzx bx,byte ptr [bx+0c8e] for pitman
  9. ;0f a8 .. TODO for 25frame
  10. ;0F DA  r P3+     PMINUB mm mm/m64   sse1      Minimum of Packed Unsigned Byte Integers (for pixeltwn)
  11. ;0F 82 (xx xx) JC rel16/32 Jump near if below/not above or equal/carry (CF=1) ;(for pixeltwn)
  12. ;0F 83 (A4 00) JNC rel16/32 Jump near if not below/above or equal/not carry (CF=0) ;(for pixeltwn)
  13. ;0F 85 (6B FF) jnz rel16 (for megapole)
  14. ;0F AF C3 imul ax,bx (for megapole)
  15. ;0F 45 C1 CMOVNZ ax,cx (for megapole) Conditional Move - not zero/not equal (ZF=0)
  16. ;JNAE rel16/32    
  17. ;JC rel16/32
  18.  
  19. ;TODO прочие адресации
  20.         get
  21.         next
  22.        cp 0x31
  23.        jp z,RDTSCer
  24.        cp 0x45
  25.        jr z,CMOVNZer
  26.        cp 0x82
  27.        jp z,JCrel16
  28.        cp 0x83
  29.        jp z,JNCrel16
  30.        cp 0x84
  31.        jp z,JZrel16
  32.        cp 0x85
  33.        jp z,JNZrel16
  34.       cp 0x88
  35.       jp z,JSrel16 ;pitman
  36.        cp 0xaf
  37.        jr z,IMULr1r2
  38.        cp 0xda
  39.        jr z,PMINUBer
  40.        cp 0xb6
  41.        jr nz,$
  42. ;movzx r16,rm8
  43.         get
  44.         next
  45.         cp 0b11000000
  46.         jr c,MOVZXmem
  47.         ;jr $
  48.       if 1
  49.        ;ld h,a
  50.        sub 64
  51.         ld l,a
  52.         ld h,_AX/256
  53.         ld l,(hl) ;rm addr
  54.        ;ld a,h
  55.         ;ld h,_AX/256
  56.         ld c,(hl)
  57.         ld b,0 ;rm
  58.         rra
  59.         rra
  60.         and 7*2
  61.         ld l,a
  62.        _PUTr16Loop_
  63.         ;ld l,a
  64.         ;ld h,_AX/256
  65.         ;ld l,(hl) ;reg8 addr
  66.         ;ld c,(hl)
  67.         ;ld b,0 ;reg16
  68.        ;and 7
  69.        ;add a,a
  70.         ;ld l,a ;rm addr
  71.        ;_PUTr16Loop_
  72.       else
  73.        cp 0xc2
  74.        jr z,MOVZXaxdl
  75.        cp 0xd0
  76.        jr nz,$
  77.         ld hl,(_AL)
  78.         ld h,0
  79.         ld (_DX),hl
  80.        _Loop_
  81. MOVZXaxdl
  82.         ld hl,(_DL)
  83.         ld h,0
  84.         ld (_AX),hl
  85.        _Loop_
  86.       endif
  87. MOVZXmem
  88.        ADDRm16_GETm8c_for_PUTm8
  89.         ld b,0 ;rm
  90.         rra
  91.         rra
  92.         and 7*2
  93.         ld l,a
  94.         ld h,_AX/256
  95.        _PUTr16Loop_AisL
  96.        
  97. CMOVNZer
  98. ;CMOVNZ ax,cx - Conditional Move - not zero/not equal (ZF=0)
  99.         ex af,af' ;'
  100.         jr z,CMOVnzer_no
  101.         ld hl,(_CX)
  102.         ld (_AX),hl
  103. CMOVnzer_no
  104.         ex af,af' ;'
  105.        _Loop_
  106.  
  107. IMULr1r2
  108.         get
  109.         next
  110.        push de
  111.         ld bc,(_BX) ;TODO other regs
  112.         ld de,(_AX);ex de,hl ;de=ax ;TODO other regs
  113.         call IMUL_bc_de_to_hlde
  114.         ;ld (_DX),hl ;HSW
  115.         ld (_AX),de ;LSW
  116.        pop de
  117.        _Loop_
  118.  
  119. PMINUBer
  120. ;не уверен, что такое поведение - TODO
  121.         ld hl,(_AX)
  122.         ld a,l
  123.         cp h
  124.         jr c,$+3
  125.         ld l,h
  126.         ld h,0
  127.         ld (_AX),hl
  128.        _Loop_
  129.  
  130. RDTSCer
  131. ;костыль для para512
  132.         ld a,r
  133.         ld l,a
  134.         ld h,a
  135.         ld (_AX),hl
  136.        _Loop_
  137.  
  138. JSrel16
  139.         ex af,af' ;'
  140.         jp m,JRrel16y
  141.         ex af,af' ;'
  142.         next
  143.         next
  144.        _Loop_
  145. JCrel16
  146.         ex af,af' ;'
  147.         jr c,JRrel16y
  148.         ex af,af' ;'
  149.         next
  150.         next
  151.        _Loop_
  152. JNCrel16
  153.         ex af,af' ;'
  154.         jr nc,JRrel16y
  155.         ex af,af' ;'
  156.         next
  157.         next
  158.        _Loop_
  159. JZrel16
  160.         ex af,af' ;'
  161.         jr z,JRrel16y
  162.         ex af,af' ;'
  163.         next
  164.         next
  165.        _Loop_
  166. JNZrel16
  167.         ex af,af' ;'
  168.         jr nz,JRrel16y
  169.         ex af,af' ;'
  170.         next
  171.         next
  172.        _Loop_
  173. JRrel16y
  174.         ex af,af' ;'
  175.         get
  176.         next
  177.         ld l,a
  178.         get
  179.         next
  180.         LD H,A
  181.        decodePC ;a=d
  182.         ADD HL,DE
  183.        ;;ld a,d
  184.        ;xor h
  185.        ;and 0xc0
  186.         ex de,hl ;new PC
  187.        ;jp z,JRer_qslow
  188.        _LoopC_JP;oldpg
  189.