Subversion Repositories NedoOS

Rev

Rev 1031 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ;=================== ОБЫЧНЫЕ КОМАНДЫ ===============
  2. SIM1
  3. ;1-байтная, без работы с памятью и SP
  4.         LD (sim1),A
  5.         EXX
  6.         EXA
  7. sim1    NOP
  8.         EXA
  9.         EXX
  10.        _Loop_
  11. SIM1A
  12. ;1-байтная, только аккумулятор
  13.         LD (sim1A),A
  14.         EXA
  15. sim1A   NOP
  16.         EXA
  17.        _Loop_
  18.  
  19. SIM1LD
  20. ;1-байтная ld r,r (без аккумулятора)
  21.         LD (sim1LD),A
  22.         EXX
  23. sim1LD  NOP
  24.         EXX
  25.        _Loop_
  26.  
  27. INCSP
  28.         LD HL,(_SP)
  29.         INC HL
  30.         LD (_SP),HL
  31.        _Loop_
  32. DECSP
  33.         LD HL,(_SP)
  34.         DEC HL
  35.         LD (_SP),HL
  36.        _Loop_
  37.  
  38. POPBC
  39.         LD HL,(_SP)
  40.         INC HL,HL
  41.         LD (_SP),HL
  42.         DEC HL,HL
  43.         getmemBC
  44.         PUSH BC
  45.         EXX
  46.         POP BC
  47.         EXX
  48.        _LoopCimmediately
  49. POPDE
  50.         LD HL,(_SP)
  51.         INC HL,HL
  52.         LD (_SP),HL
  53.         DEC HL,HL
  54.         getmemBC
  55.         PUSH BC
  56.         EXX
  57.         POP DE
  58.         EXX
  59.        _LoopCimmediately
  60. POPHL
  61.         LD HL,(_SP)
  62.         INC HL,HL
  63.         LD (_SP),HL
  64.         DEC HL,HL
  65.         getmemBC
  66.         PUSH BC
  67.         EXX
  68.         POP HL
  69.         EXX
  70.        _LoopCimmediately
  71. POPAF
  72.         LD HL,(_SP)
  73.         INC HL,HL
  74.         LD (_SP),HL
  75.         DEC HL,HL
  76.         getmemBC
  77.         PUSH BC
  78.         POP AF
  79.         EXA
  80.        _LoopC
  81.  
  82. RETcc
  83.         ADD A,2 ;превращаем RET в JP
  84.         LD (retcc),A
  85.         EXA
  86. retcc   JP NZ,RETccY
  87.         EXA
  88.        _Loop_
  89. RETccY  EXA
  90. RETER
  91. imitret
  92.         LD HL,(_SP)
  93.         INC HL,HL
  94.         LD (_SP),HL
  95.         DEC HL,HL
  96.         getmemBC
  97.         LD D,B
  98.         ld E,C ;=PC
  99.        _LoopC_JP
  100.  
  101. PUSHBC
  102.         EXX
  103.         PUSH BC
  104.         EXX
  105.         POP BC
  106.         LD HL,(_SP)
  107.         DEC HL,HL
  108.         LD (_SP),HL
  109.         putmemBC
  110.        _LoopCimmediately
  111. PUSHDE
  112.         EXX
  113.         PUSH DE
  114.         EXX
  115.         POP BC
  116.         LD HL,(_SP)
  117.         DEC HL,HL
  118.         LD (_SP),HL
  119.         putmemBC
  120.        _LoopCimmediately
  121. PUSHHL
  122.         EXX
  123.         PUSH HL
  124.         EXX
  125.         POP BC
  126.         LD HL,(_SP)
  127.         DEC HL,HL
  128.         LD (_SP),HL
  129.         putmemBC
  130.        _LoopCimmediately
  131. PUSHAF
  132.         EXA
  133.         PUSH AF
  134.         EXA
  135.         POP BC
  136.         LD HL,(_SP)
  137.         DEC HL,HL
  138.         LD (_SP),HL
  139.         putmemBC
  140.        _LoopCimmediately
  141.  
  142. CALLcc
  143.         SUB 2 ;превращаем CALL в JP
  144.         LD (callcc),A
  145.         EXA
  146. callcc  JP NZ,CALLccY
  147.         EXA
  148.         next
  149.         next
  150.        _Loop_
  151. CALLccY EXA
  152. CALLER
  153.         getHL
  154.        CALCpc
  155.         EXD ;new PC
  156.         LD B,H
  157.         ld C,L ;=old PC
  158.         LD HL,(_SP)
  159.         DEC HL,HL
  160.         LD (_SP),HL
  161.         putmemBC
  162.        _LoopC_JP
  163.  
  164. RSTn
  165.         AND #38
  166.         LD L,A
  167.         ld H,0 ;=PC
  168.        CALCpc
  169.        EXD
  170.         LD B,H
  171.         ld C,L ;=old PC
  172.         LD HL,(_SP)
  173.         DEC HL,HL
  174.         LD (_SP),HL
  175.         putmemBC
  176.        _LoopC_JP_NODOS
  177.  
  178. JRcc
  179.         LD (jrcc),A
  180.         EXA
  181. jrcc    JR NZ,JRccY
  182.         EXA
  183.         next
  184.        _Loop_
  185. JRccY   EXA
  186. JRER
  187.         get
  188.         next
  189. DJNZY   LD L,A
  190.         RLA
  191.         SBC A,A
  192.         LD H,A
  193.        CALCpc
  194.         ADD HL,DE
  195.         EXD ;=PC
  196.        _LoopJP_NODOS
  197.  
  198. DJNZER
  199.         get
  200.         next
  201.         EXX
  202.         DEC B
  203.         EXX
  204.         JP NZ,DJNZY
  205.        _Loop_
  206.  
  207. JPcc
  208.         LD (jpcc),A
  209.         EXA
  210. jpcc    JP NZ,JPccY
  211.         EXA
  212.         next
  213.         next
  214.        _Loop_
  215. JPccY   EXA
  216. JPER
  217.         getHL
  218.         EXD ;=PC
  219.        _LoopJP
  220.  
  221. EXXER
  222.         EXX
  223.        PUSH HL
  224.         LD H,B
  225.         ld L,C
  226.         LD BC,(_BC)
  227.         LD (_BC),HL
  228.         LD HL,(_DE)
  229.         EXD
  230.         LD (_DE),HL
  231.         LD HL,(_HL)
  232.        EX (SP),HL
  233.         LD (_HL),HL
  234.        POP HL
  235.         EXX
  236.        _Loop_
  237.  
  238. EXAER
  239.         LD HL,(_AF)
  240.         PUSH HL
  241.         POP AF
  242.         EXA
  243.         PUSH AF
  244.         POP HL
  245.         LD (_AF),HL
  246.        _Loop_
  247.  
  248. SIM2
  249. ;2-байтная, без работы с памятью
  250.         LD L,A
  251.         get
  252.         next
  253.         LD H,A
  254.         LD (sim2),HL
  255.         EXX
  256.         EXA
  257. sim2    DS 2
  258.         EXA
  259.         EXX
  260.        _Loop_
  261.  
  262. LDBC
  263.         getHL ;TODO getBC'
  264.        push hl
  265.         EXX
  266.        pop bc
  267.         EXX
  268.        _Loop_
  269.  
  270. LDDE
  271.         getHL ;TODO getDE'
  272.        push hl
  273.         EXX
  274.        pop de
  275.         EXX
  276.        _Loop_
  277.  
  278. LDHL
  279.         getHL ;TODO getHL'
  280.        push hl
  281.         EXX
  282.        pop hl
  283.         EXX
  284.        _Loop_
  285.  
  286. LDSP
  287.         getHL
  288.         LD (_SP),HL
  289.        _Loop_
  290.  
  291. LDAnn
  292.         getHL
  293.         mem ;портит флаги ;TODO без первого ld a,h
  294.         EXA
  295.         LD A,(hl)
  296.         EXA
  297.        _LoopCimmediately
  298.  
  299. LDHLnn
  300.         getHL
  301.         getmemBC ;TODO getmemHL' без первого ld a,h
  302.         PUSH BC
  303.         EXX
  304.         POP HL
  305.         EXX
  306.        _LoopCimmediately
  307.  
  308. LDMn
  309.         get
  310.         next
  311.         EXX
  312.         PUSH HL
  313.         EXX
  314.         POP HL
  315.         putmem ;портит HL
  316.        _LoopCimmediately
  317.  
  318. INCM
  319.         EXX
  320.         PUSH HL
  321.         EXX
  322.         POP HL
  323.        PUSH HL
  324.         mem ;портит HL
  325.         ld b,(hl)
  326.        POP HL ;TODO rra:ld h,a
  327.         EXA
  328.         INC B
  329.         EXA
  330.         LD A,B
  331.         putmem ;TODO putmemB
  332. ;нельзя mem:INC (HL) - не заработает extpg5
  333.        _LoopCimmediately
  334.  
  335. DECM
  336.         EXX
  337.         PUSH HL
  338.         EXX
  339.         POP HL
  340.        PUSH HL
  341.         mem ;портит HL
  342.         ld b,(hl)
  343.         EXA
  344.         DEC B
  345.         EXA
  346.         LD A,B
  347.        POP HL
  348.         putmem
  349. ;нельзя mem:INC (HL) - не заработает extpg5
  350.        _LoopCimmediately
  351.  
  352. LDnnA
  353.         getHL
  354.         EXA
  355.         LD C,A
  356.         EXA
  357.         LD A,C
  358.         putmem ;портит флаги ;TODO putmemC
  359.        _LoopCimmediately
  360.  
  361. LDnnHL
  362.         getHL
  363.         EXX
  364.         PUSH HL
  365.         EXX
  366.         POP BC
  367.         putmemBC ;TODO putmemHL'
  368.        _LoopCimmediately
  369.  
  370. LDAbc
  371.        exx
  372.        push bc
  373.        exx
  374.        pop hl
  375.         mem
  376.         EXA
  377.         LD A,(hl)
  378.         EXA
  379.        _LoopCimmediately
  380.  
  381. LDAde
  382.        exx
  383.        push de
  384.        exx
  385.        pop hl
  386.         mem
  387.         EXA
  388.         LD A,(hl)
  389.         EXA
  390.        _LoopCimmediately
  391.  
  392. LDbcA
  393.        exx
  394.        push bc
  395.        exx
  396.        pop hl
  397.         EXA
  398.         LD C,A
  399.         EXA
  400.         LD A,C
  401.         putmem
  402.        _LoopCimmediately
  403.  
  404. LDdeA
  405.        exx
  406.        push de
  407.        exx
  408.        pop hl
  409.         EXA
  410.         LD C,A
  411.         EXA
  412.         LD A,C
  413.         putmem
  414.        _LoopCimmediately
  415.  
  416. OUTnA
  417.         get
  418.         next
  419.         LD C,A
  420.         EXA
  421.         LD B,A
  422.         EXA
  423.         LD A,B
  424.         CALL EMUOUT
  425.        _LoopSWI
  426.  
  427. INAn
  428.         get
  429.         next
  430.         LD C,A
  431.         EXA
  432.         LD B,A
  433.         EXA
  434.         CALL EMUIN
  435.        ;флагов быть не должно!
  436.         LD B,A
  437.         EXA
  438.         LD A,B
  439.         EXA
  440.        _LoopSWI
  441.  
  442. DIER
  443.         XOR A
  444.         LD (iff1),A
  445.         LD (iff2),A
  446.        _Loop_
  447.  
  448. EIER
  449.         LD A,-1
  450.         LD (iff1),A
  451.         LD (iff2),A
  452.        _Loop_
  453.  
  454. HALTER
  455.       ;XOR A
  456.       ;OUT (-2),A
  457.         ;LD A,I
  458.         ;JP PE,$-2 ;это если обработчик не включает прерывания
  459.         halt
  460.        ;_Loop_
  461. NOPER
  462.        _Loop_
  463.  
  464. LOGAM
  465. ;1-байтная ADD/ADC/... A,(HL)
  466.         LD (logam),A
  467.         EXX
  468.         PUSH HL
  469.         EXX
  470.         POP HL
  471.         mem ;портит HL
  472.         EXA
  473. logam   NOP
  474.         EXA
  475.        _LoopCimmediately
  476.  
  477. LDMr
  478. ;1-байтная LD (HL),r, r<>A
  479.         ADD A,8 ;превращаем (HL) в A
  480.         LD (ldmr),A
  481.         EXX
  482.         PUSH HL
  483. ldmr    NOP
  484.         EXX
  485.         POP HL
  486.         putmem ;портит HL
  487.        _LoopCimmediately
  488.  
  489. LDMA
  490.         EXX
  491.         PUSH HL
  492.         EXX
  493.         POP HL
  494.         EXA
  495.         LD C,A
  496.         EXA
  497.         LD A,C
  498.         putmem ;портит флаги и HL ;TODO putmemA'
  499.        _LoopCimmediately
  500.  
  501. LDrM
  502. ;1-байтная LD r,(HL), r<>A
  503.         INC A ;превращаем (HL) в A
  504.         LD (ldrm),A
  505.         EXX
  506.         PUSH HL
  507.         EXX
  508.         POP HL
  509.         getmem ;портит HL
  510.         EXX
  511. ldrm    NOP
  512.         EXX
  513.        _LoopCimmediately
  514.  
  515. LDAM
  516.         EXX
  517.         PUSH HL
  518.         EXX
  519.         POP HL
  520.         mem ;портит HL
  521.         EXA
  522.         LD A,(hl)
  523.         EXA
  524.        _LoopCimmediately
  525.  
  526. JPM
  527.         EXX
  528.         PUSH HL
  529.         EXX
  530.         POP DE ;=PC
  531.        _LoopJP
  532.  
  533. LDSPHL
  534.         EXX
  535.         LD (_SP),HL
  536.         EXX
  537.        _Loop_
  538.  
  539. ADDSP
  540.         EXX
  541.         PUSH BC
  542.         LD BC,(_SP)
  543.         EXA
  544.         ADD HL,BC
  545.         EXA
  546.         POP BC
  547.         EXX
  548.        _Loop_
  549.  
  550. EXSPHL
  551.         LD HL,(_SP)
  552.         getmemBC
  553.         PUSH BC
  554.         EXX
  555.         EX (SP),HL
  556.         EXX
  557.         POP BC
  558.         LD HL,(_SP)
  559.         putmemBC
  560.        _LoopCimmediately
  561.  
  562. ;=================== #CB КОМАНДЫ ===============
  563.  
  564. CB2
  565.         LD (cb2),A
  566.         EXX
  567.         EXA
  568.         DB #CB
  569. cb2     NOP
  570.         EXX
  571.         EXA
  572.        _Loop_
  573.  
  574. CB2M
  575. ;CB команда с параметром (HL)
  576.         sub 6 ;превращаем (HL) в B
  577.         LD (cb2m),A
  578.         EXX
  579.         PUSH HL
  580.         EXX
  581.         POP HL
  582.        PUSH HL
  583.         mem
  584.         ld b,(hl)
  585.         EXA
  586.         DB #CB
  587. cb2m    NOP
  588.         EXA
  589.         LD A,B
  590.        POP HL
  591.         putmem
  592.        _LoopCimmediately
  593.  
  594. ;=================== #DD #CB КОМАНДЫ ===============
  595.  
  596. DDCBDOC
  597.        ;HL=IX+d
  598. ;RL/.. (IX+d): DD CB d OPCODE
  599. ;BIT n,(IX+d): DD CB d OPCODE
  600. ;RES n,(IX+d): DD CB d OPCODE
  601. ;SET n,(IX+d): DD CB d OPCODE
  602.         sub 6 ;превращаем (HL) в B
  603.         LD (ddcbdoc),A
  604.        PUSH HL
  605.         mem
  606.         ld b,(hl)
  607.         EXA
  608.         DB #CB
  609. ddcbdoc NOP
  610.         EXA
  611.         LD A,B
  612.        POP HL
  613.         putmem
  614. DDCBUNDOC
  615. ;TODO op r,(iz+d)
  616.        _LoopC
  617.  
  618. ;=================== #ED КОМАНДЫ ===============
  619.  
  620. LDBCnn
  621.         getHL
  622.         getmemBC ;TODO getmemBC' без первого ld a,h
  623.         push bc
  624.         exx
  625.         pop bc
  626.         exx
  627.        _LoopCimmediately
  628.  
  629. LDDEnn
  630.         getHL
  631.         getmemBC ;TODO getmemDE' без первого ld a,h
  632.         push bc
  633.         exx
  634.         pop de
  635.         exx
  636.        _LoopCimmediately
  637.  
  638. LDSPnn
  639.         getHL
  640.         getmemBC ;TODO без первого ld a,h
  641.         LD (_SP),BC
  642.        _LoopCimmediately
  643.  
  644. LDnnBC
  645.         exx
  646.         push bc
  647.         exx
  648.         getHL
  649.         pop bc
  650.         putmemBC ;TODO putmemBC' без первого ld a,h
  651.        _LoopCimmediately
  652.  
  653. LDnnDE
  654.         exx
  655.         push de
  656.         exx
  657.         getHL
  658.         pop bc
  659.         putmemBC ;TODO putmemDE' без первого ld a,h
  660.        _LoopCimmediately
  661.  
  662. LDnnSP
  663.         getHL
  664.         LD BC,(_SP)
  665.         putmemBC ;TODO без первого ld a,h
  666.        _LoopCimmediately
  667.        
  668. SBCHLSP
  669.         exa
  670.         exx
  671.         push bc
  672.         LD BC,(_SP)
  673.         sbc hl,bc
  674.         pop bc
  675.         exx
  676.         exa
  677.        _Loop_
  678.  
  679. ADCHLSP
  680.         exa
  681.         exx
  682.         push bc
  683.         LD BC,(_SP)
  684.         adc hl,bc
  685.         pop bc
  686.         exx
  687.         exa
  688.        _Loop_
  689.  
  690. LDIER
  691.         EXX
  692.         PUSH BC
  693.         PUSH DE
  694.         PUSH HL
  695.         INC HL,DE
  696.         DEC BC
  697.         EXX
  698.         POP HL
  699.         getmem
  700.         POP HL
  701.         putmem
  702.         POP BC
  703.        PUSH DE
  704.         LD D,secbuf/256
  705.         LD H,D
  706.         LD (HL),A
  707.         EXA
  708.         LDI ;флаги 3 и 5 устанавливаются по (HL)
  709.         EXA
  710.        POP DE
  711.        _LoopC
  712.  
  713. LDDER
  714.         EXX
  715.         PUSH BC
  716.         PUSH DE
  717.         PUSH HL
  718.         DEC HL,DE
  719.         DEC BC
  720.         EXX
  721.         POP HL
  722.         getmem
  723.         POP HL
  724.         putmem
  725.         POP BC
  726.        PUSH DE
  727.         LD D,secbuf/256
  728.         LD H,D
  729.         LD (HL),A
  730.         EXA
  731.         LDD ;флаги 3 и 5 устанавливаются по (HL)
  732.         EXA
  733.        POP DE
  734.        _LoopC
  735.  
  736. LDIRER
  737.         EXX
  738.         DEC BC
  739.         LD A,C
  740.         OR B
  741.         JP Z,LDIREND
  742.         PUSH DE
  743.         PUSH HL
  744.         INC HL,DE
  745.         EXX
  746.         POP HL
  747.         getmem
  748.         POP HL
  749.         putmem
  750.        CALCpc
  751.         DEC DE,DE
  752.        ;надо бы сделать PE для обработчика прерыв-й
  753.        _LoopC_JP_NODOS
  754. LDIREND
  755.         PUSH DE
  756.         PUSH HL
  757.         INC HL,DE
  758.         EXX
  759.         POP HL
  760.         getmem
  761.         POP HL
  762.         putmem
  763.         LD A,(HL)
  764.        PUSH DE
  765.         LD D,secbuf/256
  766.         LD H,D
  767.         LD (HL),A
  768.         EXA
  769.         LD BC,1
  770.         LDI ;флаги 3 и 5 устанавливаются по (HL)
  771.        POP DE
  772.        ;PO=конец цикла
  773.         EXA
  774.        _LoopC
  775.  
  776. LDDRER
  777.         EXX
  778.         DEC BC
  779.         LD A,C
  780.         OR B
  781.         JP Z,LDDREND
  782.         PUSH DE
  783.         PUSH HL
  784.         DEC HL,DE
  785.         EXX
  786.         POP HL
  787.         getmem
  788.         POP HL
  789.         putmem
  790.        CALCpc
  791.         DEC DE,DE
  792.        ;надо бы сделать PE для обработчика прерыв-й
  793.        _LoopC_JP_NODOS
  794. LDDREND
  795.         PUSH DE
  796.         PUSH HL
  797.         DEC HL,DE
  798.         EXX
  799.         POP HL
  800.         getmem
  801.         POP HL
  802.         putmem
  803.         LD A,(HL)
  804.        PUSH DE
  805.         LD D,secbuf/256
  806.         LD H,D
  807.         LD (HL),A
  808.         EXA
  809.         LD BC,1
  810.         LDD ;флаги 3 и 5 устанавливаются по (HL)
  811.        POP DE
  812.        ;PO=конец цикла
  813.         EXA
  814.        _LoopC
  815.  
  816. IMn
  817.         AND #18
  818.         LD (immode),A
  819.        _Loop_
  820.  
  821. ED2
  822.         LD (ed2),A
  823.         EXX
  824.         EXA
  825.         DB #ED
  826. ed2     NOP
  827.         EXX
  828.         EXA
  829.        _Loop_
  830.  
  831. RETIER
  832. RETNER
  833.         LD A,(iff2)
  834.         LD (iff1),A
  835.         JP RETER
  836.  
  837. OUTCr
  838.         RRA
  839.         RRA
  840.         RRA
  841.         AND 7
  842.         ADD A,#78 ;превращаем OUT в LD A,r
  843.         LD (outcr),A
  844.        CP #7E
  845.         EXX
  846. outcr   NOP
  847.         PUSH BC
  848.         EXX
  849.         POP BC
  850.        jr NZ,$+3
  851.        XOR A
  852.         CALL EMUOUT
  853.        _LoopSWI
  854.  
  855. INrC
  856.         ADD A,7 ;превращаем IN в LD r,A
  857.         LD (inrc),A
  858.         EXX
  859.         PUSH BC
  860.         EXX
  861.         POP BC
  862.        EXA
  863.        PUSH AF
  864.         CALL EMUIN
  865.        POP BC
  866.        LD C,A
  867.        LD A,B
  868.        EXA ;с флагами
  869.        LD A,C
  870.         EXX
  871. inrc    NOP
  872.         EXX
  873.        _LoopSWI
  874.  
  875. INFC
  876.         EXX
  877.         PUSH BC
  878.         EXX
  879.         POP BC
  880.        EXA
  881.        PUSH AF
  882.         CALL EMUIN
  883.        POP BC
  884.        LD A,B
  885.        EXA ;с флагами
  886.        _LoopSWI
  887.  
  888. OUTCA
  889.         EXX
  890.         PUSH BC
  891.         EXX
  892.         POP BC
  893.         EXA
  894.         LD L,A
  895.         EXA
  896.         LD A,L
  897.         CALL EMUOUT
  898.        _LoopSWI
  899.  
  900. INAC
  901.         EXX
  902.         PUSH BC
  903.         EXX
  904.         POP BC
  905.         CALL EMUIN
  906.         EXA ;с флагами
  907.        _LoopSWI
  908.  
  909. RRDER
  910.         EXX
  911.         PUSH HL
  912.         EXX
  913.         POP HL
  914.        PUSH HL
  915.         getmem
  916.         LD H,secbuf/256
  917.         LD (HL),A
  918.         EXA
  919.         RRD
  920.         EXA
  921.         LD A,(HL)
  922.        POP HL
  923.         putmem
  924.        _LoopCimmediately
  925.  
  926. RLDER
  927.         EXX
  928.         PUSH HL
  929.         EXX
  930.         POP HL
  931.        PUSH HL
  932.         getmem
  933.         LD H,secbuf/256
  934.         LD (HL),A
  935.         EXA
  936.         RLD
  937.         EXA
  938.         LD A,(HL)
  939.        POP HL
  940.         putmem
  941.        _LoopCimmediately
  942.  
  943. LDIA
  944.         EXA
  945.         LD (_I),A
  946.         EXA
  947.        _Loop_
  948.  
  949. LDRA
  950.         EXA
  951.         LD (_R),A
  952.         EXA
  953.        _Loop_
  954.  
  955. LDAI
  956.         EXA
  957.         LD A,(iff1) ;??? так в US
  958.         OR A ;эмулируется только P/V
  959.         LD A,(_I)
  960.         EXA
  961.        _Loop_
  962.  
  963. LDAR
  964.         EXA
  965.         ld hl,_R
  966.         ld a,r
  967.         xor (hl)
  968.         and 0x7f
  969.         xor (hl)
  970.         ld (hl),a
  971.         LD A,(iff2)
  972.         OR A ;эмулируется только P/V
  973.         LD A,(hl);(_R)
  974.         EXA
  975.        _Loop_
  976.  
  977. CPIER
  978.         EXX
  979.         PUSH BC
  980.         PUSH HL
  981.         INC HL
  982.         DEC BC
  983.         EXX
  984.         POP HL
  985.         getmem
  986.         POP BC
  987.         LD H,secbuf/256
  988.         LD (HL),A
  989.         EXA
  990.         CPI
  991.         EXA
  992.        _LoopCimmediately
  993.  
  994. CPDER
  995.         EXX
  996.         PUSH BC
  997.         PUSH HL
  998.         DEC HL
  999.         DEC BC
  1000.         EXX
  1001.         POP HL
  1002.         getmem
  1003.         POP BC
  1004.         LD H,secbuf/256
  1005.         LD (HL),A
  1006.         EXA
  1007.         CPD
  1008.         EXA
  1009.        _LoopCimmediately
  1010.  
  1011. CPIRER
  1012.         EXX
  1013.         PUSH BC
  1014.         PUSH HL
  1015.         INC HL
  1016.         DEC BC
  1017.         EXX
  1018.         POP HL
  1019.         getmem
  1020.         POP BC
  1021.         LD H,secbuf/256
  1022.         LD (HL),A
  1023.        CALCpc
  1024.         EXA
  1025.         CPI
  1026.         jr Z,CPIRPO
  1027.         JP PO,CPIRPO ;PO=конец цикла
  1028.         DEC DE,DE
  1029. CPIRPO  EXA
  1030.        _LoopC_JP_NODOS
  1031.  
  1032. CPDRER
  1033.         EXX
  1034.         PUSH BC
  1035.         PUSH HL
  1036.         DEC HL
  1037.         DEC BC
  1038.         EXX
  1039.         POP HL
  1040.         getmem
  1041.         POP BC
  1042.         LD H,secbuf/256
  1043.         LD (HL),A
  1044.        CALCpc
  1045.         EXA
  1046.         CPD
  1047.         jr Z,CPDRPO
  1048.         JP PO,CPDRPO ;PO=конец цикла
  1049.         DEC DE,DE
  1050. CPDRPO  EXA
  1051.        _LoopC_JP_NODOS
  1052.  
  1053. OUTIER
  1054.         exx
  1055.         exa
  1056.         dec b
  1057.         push bc
  1058.         push hl
  1059.         inc hl
  1060.         exa
  1061.         exx
  1062.         pop hl
  1063.         getmem
  1064.         pop bc
  1065.         CALL EMUOUT
  1066.        _LoopSWI
  1067. OUTDER
  1068.         exx
  1069.         exa
  1070.         dec b
  1071.         push bc
  1072.         push hl
  1073.         dec hl
  1074.         exa
  1075.         exx
  1076.         pop hl
  1077.         getmem
  1078.         pop bc
  1079.         CALL EMUOUT
  1080.        _LoopSWI
  1081. INIER
  1082. INDER
  1083.  
  1084. OTIRER
  1085. OTDRER
  1086. INIRER
  1087. INDRER
  1088. ;NYR - NOP ;TODO!!!
  1089.        _LoopC;_JP
  1090.  
  1091. ;=================== #DD КОМАНДЫ ===============
  1092.  
  1093. DD2
  1094. ;2-байтная с IX, без работы с памятью
  1095.         LD (dd2),A
  1096.         EXX
  1097.         EXA
  1098.         DB #DD
  1099. dd2     NOP
  1100.         EXA
  1101.         EXX
  1102.        _Loop_
  1103.  
  1104. DD2LD
  1105. ;2-байтная с IX, без работы с памятью и аккумулятором
  1106.         LD (dd2LD),A
  1107.         EXX
  1108.         DB #DD
  1109. dd2LD   NOP
  1110.         EXX
  1111.        _Loop_
  1112.  
  1113. DD3
  1114. ;3-байтная с IX, без работы с памятью
  1115. ;только для LD LX/HX,n
  1116.         LD L,A
  1117.         get
  1118.         next
  1119.         LD H,A
  1120.         LD (dd3),HL
  1121.         DB #DD
  1122. dd3     DS 2
  1123.        _Loop_
  1124.  
  1125. LDIX
  1126.         getHL ;TODO getIX
  1127.         PUSH HL
  1128.         POP IX
  1129.        _Loop_
  1130.  
  1131. POPIX
  1132.         LD HL,(_SP)
  1133.         INC HL,HL
  1134.         LD (_SP),HL
  1135.         DEC HL,HL
  1136.         getmemBC ;TODO getmemIX
  1137.         PUSH BC
  1138.         POP IX
  1139.        _LoopCimmediately
  1140.  
  1141. PUSHIX
  1142.         PUSH IX
  1143.         POP BC
  1144.         LD HL,(_SP)
  1145.         DEC HL,HL
  1146.         LD (_SP),HL
  1147.         putmemBC ;TODO putmemIX
  1148.        _LoopCimmediately
  1149.  
  1150. LDIXnn
  1151.         getHL
  1152.         getmemBC ;TODO getIX без первого ld a,h
  1153.         PUSH BC
  1154.         POP IX
  1155.        _LoopCimmediately
  1156.  
  1157. LDMXn
  1158.         getdIXtoHL
  1159.        ;push hl ;чтобы get мог портить H
  1160.         get
  1161.         next
  1162.        ;pop hl
  1163.         putmem ;портит HL
  1164.        _LoopCimmediately
  1165.  
  1166. IDCMX
  1167. ;3-байтная INC/DEC (IX+)
  1168.         SUB #30 ;превращаем (HL) в B
  1169.         LD (idcmx),A
  1170.         getdIXtoHL
  1171.        PUSH HL
  1172.         mem ;портит HL
  1173.         ld b,(hl)
  1174.         EXA
  1175. idcmx   NOP
  1176.         EXA
  1177.         LD A,B
  1178.        POP HL
  1179.         putmem
  1180.        _LoopCimmediately
  1181.  
  1182. LDnnIX
  1183.         getHL
  1184.         PUSH IX
  1185.         POP BC
  1186.         putmemBC ;TODO putmemIX без первого ld a,h
  1187.        _LoopCimmediately
  1188.  
  1189. LOGAMX
  1190. ;3-байтная ADD/ADC/... A,(IX+)
  1191.         LD (logamx),A
  1192.         getdIXtoHL
  1193.         mem ;портит HL
  1194.         EXA
  1195. logamx  NOP
  1196.         EXA
  1197.        _LoopCimmediately
  1198.  
  1199. LDMXr
  1200. ;3-байтная LD (IX+),r, r<>A
  1201.         ADD A,8 ;превращаем (HL) в A
  1202.         LD (ldmrx),A
  1203.         getdIXtoHL
  1204.         EXX
  1205. ldmrx   NOP
  1206.         EXX
  1207.         putmem ;портит HL
  1208.        _LoopCimmediately
  1209.  
  1210. LDMXA
  1211.         getdIXtoHL
  1212.         EXA
  1213.         LD C,A
  1214.         EXA
  1215.         LD A,C
  1216.         putmem ;портит флаги и HL ;TODO putmemA'
  1217.        _LoopCimmediately
  1218.  
  1219. LDrMX
  1220. ;3-байтная LD r,(IX+), r<>A
  1221.         INC A ;превращаем (HL) в A
  1222.         LD (ldrmx),A
  1223.         getdIXtoHL
  1224.         getmem ;портит HL
  1225.         EXX
  1226. ldrmx   NOP
  1227.         EXX
  1228.        _LoopCimmediately
  1229.  
  1230. LDAMX
  1231.         getdIXtoHL
  1232.         mem ;портит HL
  1233.         EXA
  1234.         LD A,(hl)
  1235.         EXA
  1236.        _LoopCimmediately
  1237.  
  1238. JPMX
  1239.         PUSH IX
  1240.         POP DE ;=PC
  1241.        _LoopJP
  1242.  
  1243. LDSPIX
  1244.         LD (_SP),IX
  1245.        _Loop_
  1246.  
  1247. ADDISP
  1248.         push bc ;fix!
  1249.         LD BC,(_SP)
  1250.         EXA
  1251.         ADD IX,BC
  1252.         EXA
  1253.         POP BC
  1254.        _Loop_
  1255.  
  1256. EXSPIX
  1257.         LD HL,(_SP)
  1258.         getmemBC
  1259.         PUSH BC
  1260.         EX (SP),IX
  1261.         POP BC
  1262.         LD HL,(_SP)
  1263.         putmemBC
  1264.        _LoopCimmediately
  1265.