?login_element?

Subversion Repositories NedoOS

Rev

Rev 1030 | Go to most recent revision | 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.        ;_Loop_
  460. NOPER
  461.        _Loop_
  462.  
  463. LOGAM
  464. ;1-байтная ADD/ADC/... A,(HL)
  465.         LD (logam),A
  466.         EXX
  467.         PUSH HL
  468.         EXX
  469.         POP HL
  470.         mem ;портит HL
  471.         EXA
  472. logam   NOP
  473.         EXA
  474.        _LoopCimmediately
  475.  
  476. LDMr
  477. ;1-байтная LD (HL),r, r<>A
  478.         ADD A,8 ;превращаем (HL) в A
  479.         LD (ldmr),A
  480.         EXX
  481.         PUSH HL
  482. ldmr    NOP
  483.         EXX
  484.         POP HL
  485.         putmem ;портит HL
  486.        _LoopCimmediately
  487.  
  488. LDMA
  489.         EXX
  490.         PUSH HL
  491.         EXX
  492.         POP HL
  493.         EXA
  494.         LD C,A
  495.         EXA
  496.         LD A,C
  497.         putmem ;портит флаги и HL ;TODO putmemA'
  498.        _LoopCimmediately
  499.  
  500. LDrM
  501. ;1-байтная LD r,(HL), r<>A
  502.         INC A ;превращаем (HL) в A
  503.         LD (ldrm),A
  504.         EXX
  505.         PUSH HL
  506.         EXX
  507.         POP HL
  508.         getmem ;портит HL
  509.         EXX
  510. ldrm    NOP
  511.         EXX
  512.        _LoopCimmediately
  513.  
  514. LDAM
  515.         EXX
  516.         PUSH HL
  517.         EXX
  518.         POP HL
  519.         mem ;портит HL
  520.         EXA
  521.         LD A,(hl)
  522.         EXA
  523.        _LoopCimmediately
  524.  
  525. JPM
  526.         EXX
  527.         PUSH HL
  528.         EXX
  529.         POP DE ;=PC
  530.        _LoopJP
  531.  
  532. LDSPHL
  533.         EXX
  534.         LD (_SP),HL
  535.         EXX
  536.        _Loop_
  537.  
  538. ADDSP
  539.         EXX
  540.         PUSH BC
  541.         LD BC,(_SP)
  542.         EXA
  543.         ADD HL,BC
  544.         EXA
  545.         POP BC
  546.         EXX
  547.        _Loop_
  548.  
  549. EXSPHL
  550.         LD HL,(_SP)
  551.         getmemBC
  552.         PUSH BC
  553.         EXX
  554.         EX (SP),HL
  555.         EXX
  556.         POP BC
  557.         LD HL,(_SP)
  558.         putmemBC
  559.        _LoopCimmediately
  560.  
  561. ;=================== #CB КОМАНДЫ ===============
  562.  
  563. CB2
  564.         LD (cb2),A
  565.         EXX
  566.         EXA
  567.         DB #CB
  568. cb2     NOP
  569.         EXX
  570.         EXA
  571.        _Loop_
  572.  
  573. CB2M
  574. ;CB команда с параметром (HL)
  575.         sub 6 ;превращаем (HL) в B
  576.         LD (cb2m),A
  577.         EXX
  578.         PUSH HL
  579.         EXX
  580.         POP HL
  581.        PUSH HL
  582.         mem
  583.         ld b,(hl)
  584.         EXA
  585.         DB #CB
  586. cb2m    NOP
  587.         EXA
  588.         LD A,B
  589.        POP HL
  590.         putmem
  591.        _LoopCimmediately
  592.  
  593. ;=================== #DD #CB КОМАНДЫ ===============
  594.  
  595. DDCBDOC
  596.        ;HL=IX+d
  597. ;RL/.. (IX+d): DD CB d OPCODE
  598. ;BIT n,(IX+d): DD CB d OPCODE
  599. ;RES n,(IX+d): DD CB d OPCODE
  600. ;SET n,(IX+d): DD CB d OPCODE
  601.         sub 6 ;превращаем (HL) в B
  602.         LD (ddcbdoc),A
  603.        PUSH HL
  604.         mem
  605.         ld b,(hl)
  606.         EXA
  607.         DB #CB
  608. ddcbdoc NOP
  609.         EXA
  610.         LD A,B
  611.        POP HL
  612.         putmem
  613. DDCBUNDOC
  614. ;TODO op r,(iz+d)
  615.        _LoopC
  616.  
  617. ;=================== #ED КОМАНДЫ ===============
  618.  
  619. LDBCnn
  620.         getHL
  621.         getmemBC ;TODO getmemBC' без первого ld a,h
  622.         push bc
  623.         exx
  624.         pop bc
  625.         exx
  626.        _LoopCimmediately
  627.  
  628. LDDEnn
  629.         getHL
  630.         getmemBC ;TODO getmemDE' без первого ld a,h
  631.         push bc
  632.         exx
  633.         pop de
  634.         exx
  635.        _LoopCimmediately
  636.  
  637. LDSPnn
  638.         getHL
  639.         getmemBC ;TODO без первого ld a,h
  640.         LD (_SP),BC
  641.        _LoopCimmediately
  642.  
  643. LDnnBC
  644.         exx
  645.         push bc
  646.         exx
  647.         getHL
  648.         pop bc
  649.         putmemBC ;TODO putmemBC' без первого ld a,h
  650.        _LoopCimmediately
  651.  
  652. LDnnDE
  653.         exx
  654.         push de
  655.         exx
  656.         getHL
  657.         pop bc
  658.         putmemBC ;TODO putmemDE' без первого ld a,h
  659.        _LoopCimmediately
  660.  
  661. LDnnSP
  662.         getHL
  663.         LD BC,(_SP)
  664.         putmemBC ;TODO без первого ld a,h
  665.        _LoopCimmediately
  666.        
  667. SBCHLSP
  668.         exa
  669.         exx
  670.         push bc
  671.         LD BC,(_SP)
  672.         sbc hl,bc
  673.         pop bc
  674.         exx
  675.         exa
  676.        _Loop_
  677.  
  678. ADCHLSP
  679.         exa
  680.         exx
  681.         push bc
  682.         LD BC,(_SP)
  683.         adc hl,bc
  684.         pop bc
  685.         exx
  686.         exa
  687.        _Loop_
  688.  
  689. LDIER
  690.         EXX
  691.         PUSH BC
  692.         PUSH DE
  693.         PUSH HL
  694.         INC HL,DE
  695.         DEC BC
  696.         EXX
  697.         POP HL
  698.         getmem
  699.         POP HL
  700.         putmem
  701.         POP BC
  702.        PUSH DE
  703.         LD D,secbuf/256
  704.         LD H,D
  705.         LD (HL),A
  706.         EXA
  707.         LDI ;флаги 3 и 5 устанавливаются по (HL)
  708.         EXA
  709.        POP DE
  710.        _LoopC
  711.  
  712. LDDER
  713.         EXX
  714.         PUSH BC
  715.         PUSH DE
  716.         PUSH HL
  717.         DEC HL,DE
  718.         DEC BC
  719.         EXX
  720.         POP HL
  721.         getmem
  722.         POP HL
  723.         putmem
  724.         POP BC
  725.        PUSH DE
  726.         LD D,secbuf/256
  727.         LD H,D
  728.         LD (HL),A
  729.         EXA
  730.         LDD ;флаги 3 и 5 устанавливаются по (HL)
  731.         EXA
  732.        POP DE
  733.        _LoopC
  734.  
  735. LDIRER
  736.         EXX
  737.         DEC BC
  738.         LD A,C
  739.         OR B
  740.         JP Z,LDIREND
  741.         PUSH DE
  742.         PUSH HL
  743.         INC HL,DE
  744.         EXX
  745.         POP HL
  746.         getmem
  747.         POP HL
  748.         putmem
  749.        CALCpc
  750.         DEC DE,DE
  751.        ;надо бы сделать PE для обработчика прерыв-й
  752.        _LoopC_JP_NODOS
  753. LDIREND
  754.         PUSH DE
  755.         PUSH HL
  756.         INC HL,DE
  757.         EXX
  758.         POP HL
  759.         getmem
  760.         POP HL
  761.         putmem
  762.         LD A,(HL)
  763.        PUSH DE
  764.         LD D,secbuf/256
  765.         LD H,D
  766.         LD (HL),A
  767.         EXA
  768.         LD BC,1
  769.         LDI ;флаги 3 и 5 устанавливаются по (HL)
  770.        POP DE
  771.        ;PO=конец цикла
  772.         EXA
  773.        _LoopC
  774.  
  775. LDDRER
  776.         EXX
  777.         DEC BC
  778.         LD A,C
  779.         OR B
  780.         JP Z,LDDREND
  781.         PUSH DE
  782.         PUSH HL
  783.         DEC HL,DE
  784.         EXX
  785.         POP HL
  786.         getmem
  787.         POP HL
  788.         putmem
  789.        CALCpc
  790.         DEC DE,DE
  791.        ;надо бы сделать PE для обработчика прерыв-й
  792.        _LoopC_JP_NODOS
  793. LDDREND
  794.         PUSH DE
  795.         PUSH HL
  796.         DEC HL,DE
  797.         EXX
  798.         POP HL
  799.         getmem
  800.         POP HL
  801.         putmem
  802.         LD A,(HL)
  803.        PUSH DE
  804.         LD D,secbuf/256
  805.         LD H,D
  806.         LD (HL),A
  807.         EXA
  808.         LD BC,1
  809.         LDD ;флаги 3 и 5 устанавливаются по (HL)
  810.        POP DE
  811.        ;PO=конец цикла
  812.         EXA
  813.        _LoopC
  814.  
  815. IMn
  816.         AND #18
  817.         LD (immode),A
  818.        _Loop_
  819.  
  820. ED2
  821.         LD (ed2),A
  822.         EXX
  823.         EXA
  824.         DB #ED
  825. ed2     NOP
  826.         EXX
  827.         EXA
  828.        _Loop_
  829.  
  830. RETIER
  831. RETNER
  832.         LD A,(iff2)
  833.         LD (iff1),A
  834.         JP RETER
  835.  
  836. OUTCr
  837.         RRA
  838.         RRA
  839.         RRA
  840.         AND 7
  841.         ADD A,#78 ;превращаем OUT в LD A,r
  842.         LD (outcr),A
  843.        CP #7E
  844.         EXX
  845. outcr   NOP
  846.         PUSH BC
  847.         EXX
  848.         POP BC
  849.        jr NZ,$+3
  850.        XOR A
  851.         CALL EMUOUT
  852.        _LoopSWI
  853.  
  854. INrC
  855.         ADD A,7 ;превращаем IN в LD r,A
  856.         LD (inrc),A
  857.         EXX
  858.         PUSH BC
  859.         EXX
  860.         POP BC
  861.        EXA
  862.        PUSH AF
  863.         CALL EMUIN
  864.        POP BC
  865.        LD C,A
  866.        LD A,B
  867.        EXA ;с флагами
  868.        LD A,C
  869.         EXX
  870. inrc    NOP
  871.         EXX
  872.        _LoopSWI
  873.  
  874. INFC
  875.         EXX
  876.         PUSH BC
  877.         EXX
  878.         POP BC
  879.        EXA
  880.        PUSH AF
  881.         CALL EMUIN
  882.        POP BC
  883.        LD A,B
  884.        EXA ;с флагами
  885.        _LoopSWI
  886.  
  887. OUTCA
  888.         EXX
  889.         PUSH BC
  890.         EXX
  891.         POP BC
  892.         EXA
  893.         LD L,A
  894.         EXA
  895.         LD A,L
  896.         CALL EMUOUT
  897.        _LoopSWI
  898.  
  899. INAC
  900.         EXX
  901.         PUSH BC
  902.         EXX
  903.         POP BC
  904.         CALL EMUIN
  905.         EXA ;с флагами
  906.        _LoopSWI
  907.  
  908. RRDER
  909.         EXX
  910.         PUSH HL
  911.         EXX
  912.         POP HL
  913.        PUSH HL
  914.         getmem
  915.         LD H,secbuf/256
  916.         LD (HL),A
  917.         EXA
  918.         RRD
  919.         EXA
  920.         LD A,(HL)
  921.        POP HL
  922.         putmem
  923.        _LoopCimmediately
  924.  
  925. RLDER
  926.         EXX
  927.         PUSH HL
  928.         EXX
  929.         POP HL
  930.        PUSH HL
  931.         getmem
  932.         LD H,secbuf/256
  933.         LD (HL),A
  934.         EXA
  935.         RLD
  936.         EXA
  937.         LD A,(HL)
  938.        POP HL
  939.         putmem
  940.        _LoopCimmediately
  941.  
  942. LDIA
  943.         EXA
  944.         LD (_I),A
  945.         EXA
  946.        _Loop_
  947.  
  948. LDRA
  949.         EXA
  950.         LD (_R),A
  951.         EXA
  952.        _Loop_
  953.  
  954. LDAI
  955.         EXA
  956.         LD A,(iff1) ;??? так в US
  957.         OR A ;эмулируется только P/V
  958.         LD A,(_I)
  959.         EXA
  960.        _Loop_
  961.  
  962. LDAR
  963.         EXA
  964.         ld hl,_R
  965.         ld a,r
  966.         xor (hl)
  967.         and 0x7f
  968.         xor (hl)
  969.         ld (hl),a
  970.         LD A,(iff2)
  971.         OR A ;эмулируется только P/V
  972.         LD A,(hl);(_R)
  973.         EXA
  974.        _Loop_
  975.  
  976. CPIER
  977.         EXX
  978.         PUSH BC
  979.         PUSH HL
  980.         INC HL
  981.         DEC BC
  982.         EXX
  983.         POP HL
  984.         getmem
  985.         POP BC
  986.         LD H,secbuf/256
  987.         LD (HL),A
  988.         EXA
  989.         CPI
  990.         EXA
  991.        _LoopCimmediately
  992.  
  993. CPDER
  994.         EXX
  995.         PUSH BC
  996.         PUSH HL
  997.         DEC HL
  998.         DEC BC
  999.         EXX
  1000.         POP HL
  1001.         getmem
  1002.         POP BC
  1003.         LD H,secbuf/256
  1004.         LD (HL),A
  1005.         EXA
  1006.         CPD
  1007.         EXA
  1008.        _LoopCimmediately
  1009.  
  1010. CPIRER
  1011.         EXX
  1012.         PUSH BC
  1013.         PUSH HL
  1014.         INC HL
  1015.         DEC BC
  1016.         EXX
  1017.         POP HL
  1018.         getmem
  1019.         POP BC
  1020.         LD H,secbuf/256
  1021.         LD (HL),A
  1022.        CALCpc
  1023.         EXA
  1024.         CPI
  1025.         jr Z,CPIRPO
  1026.         JP PO,CPIRPO ;PO=конец цикла
  1027.         DEC DE,DE
  1028. CPIRPO  EXA
  1029.        _LoopC_JP_NODOS
  1030.  
  1031. CPDRER
  1032.         EXX
  1033.         PUSH BC
  1034.         PUSH HL
  1035.         DEC HL
  1036.         DEC BC
  1037.         EXX
  1038.         POP HL
  1039.         getmem
  1040.         POP BC
  1041.         LD H,secbuf/256
  1042.         LD (HL),A
  1043.        CALCpc
  1044.         EXA
  1045.         CPD
  1046.         jr Z,CPDRPO
  1047.         JP PO,CPDRPO ;PO=конец цикла
  1048.         DEC DE,DE
  1049. CPDRPO  EXA
  1050.        _LoopC_JP_NODOS
  1051.  
  1052. OUTIER
  1053.         exx
  1054.         exa
  1055.         dec b
  1056.         push bc
  1057.         push hl
  1058.         inc hl
  1059.         exa
  1060.         exx
  1061.         pop hl
  1062.         getmem
  1063.         pop bc
  1064.         CALL EMUOUT
  1065.        _LoopSWI
  1066. OUTDER
  1067.         exx
  1068.         exa
  1069.         dec b
  1070.         push bc
  1071.         push hl
  1072.         dec hl
  1073.         exa
  1074.         exx
  1075.         pop hl
  1076.         getmem
  1077.         pop bc
  1078.         CALL EMUOUT
  1079.        _LoopSWI
  1080. INIER
  1081. INDER
  1082.  
  1083. OTIRER
  1084. OTDRER
  1085. INIRER
  1086. INDRER
  1087. ;NYR - NOP ;TODO!!!
  1088.        _LoopC;_JP
  1089.  
  1090. ;=================== #DD КОМАНДЫ ===============
  1091.  
  1092. DD2
  1093. ;2-байтная с IX, без работы с памятью
  1094.         LD (dd2),A
  1095.         EXX
  1096.         EXA
  1097.         DB #DD
  1098. dd2     NOP
  1099.         EXA
  1100.         EXX
  1101.        _Loop_
  1102.  
  1103. DD2LD
  1104. ;2-байтная с IX, без работы с памятью и аккумулятором
  1105.         LD (dd2LD),A
  1106.         EXX
  1107.         DB #DD
  1108. dd2LD   NOP
  1109.         EXX
  1110.        _Loop_
  1111.  
  1112. DD3
  1113. ;3-байтная с IX, без работы с памятью
  1114. ;только для LD LX/HX,n
  1115.         LD L,A
  1116.         get
  1117.         next
  1118.         LD H,A
  1119.         LD (dd3),HL
  1120.         DB #DD
  1121. dd3     DS 2
  1122.        _Loop_
  1123.  
  1124. LDIX
  1125.         getHL ;TODO getIX
  1126.         PUSH HL
  1127.         POP IX
  1128.        _Loop_
  1129.  
  1130. POPIX
  1131.         LD HL,(_SP)
  1132.         INC HL,HL
  1133.         LD (_SP),HL
  1134.         DEC HL,HL
  1135.         getmemBC ;TODO getmemIX
  1136.         PUSH BC
  1137.         POP IX
  1138.        _LoopCimmediately
  1139.  
  1140. PUSHIX
  1141.         PUSH IX
  1142.         POP BC
  1143.         LD HL,(_SP)
  1144.         DEC HL,HL
  1145.         LD (_SP),HL
  1146.         putmemBC ;TODO putmemIX
  1147.        _LoopCimmediately
  1148.  
  1149. LDIXnn
  1150.         getHL
  1151.         getmemBC ;TODO getIX без первого ld a,h
  1152.         PUSH BC
  1153.         POP IX
  1154.        _LoopCimmediately
  1155.  
  1156. LDMXn
  1157.         getdIXtoHL
  1158.        ;push hl ;чтобы get мог портить H
  1159.         get
  1160.         next
  1161.        ;pop hl
  1162.         putmem ;портит HL
  1163.        _LoopCimmediately
  1164.  
  1165. IDCMX
  1166. ;3-байтная INC/DEC (IX+)
  1167.         SUB #30 ;превращаем (HL) в B
  1168.         LD (idcmx),A
  1169.         getdIXtoHL
  1170.        PUSH HL
  1171.         mem ;портит HL
  1172.         ld b,(hl)
  1173.         EXA
  1174. idcmx   NOP
  1175.         EXA
  1176.         LD A,B
  1177.        POP HL
  1178.         putmem
  1179.        _LoopCimmediately
  1180.  
  1181. LDnnIX
  1182.         getHL
  1183.         PUSH IX
  1184.         POP BC
  1185.         putmemBC ;TODO putmemIX без первого ld a,h
  1186.        _LoopCimmediately
  1187.  
  1188. LOGAMX
  1189. ;3-байтная ADD/ADC/... A,(IX+)
  1190.         LD (logamx),A
  1191.         getdIXtoHL
  1192.         mem ;портит HL
  1193.         EXA
  1194. logamx  NOP
  1195.         EXA
  1196.        _LoopCimmediately
  1197.  
  1198. LDMXr
  1199. ;3-байтная LD (IX+),r, r<>A
  1200.         ADD A,8 ;превращаем (HL) в A
  1201.         LD (ldmrx),A
  1202.         getdIXtoHL
  1203.         EXX
  1204. ldmrx   NOP
  1205.         EXX
  1206.         putmem ;портит HL
  1207.        _LoopCimmediately
  1208.  
  1209. LDMXA
  1210.         getdIXtoHL
  1211.         EXA
  1212.         LD C,A
  1213.         EXA
  1214.         LD A,C
  1215.         putmem ;портит флаги и HL ;TODO putmemA'
  1216.        _LoopCimmediately
  1217.  
  1218. LDrMX
  1219. ;3-байтная LD r,(IX+), r<>A
  1220.         INC A ;превращаем (HL) в A
  1221.         LD (ldrmx),A
  1222.         getdIXtoHL
  1223.         getmem ;портит HL
  1224.         EXX
  1225. ldrmx   NOP
  1226.         EXX
  1227.        _LoopCimmediately
  1228.  
  1229. LDAMX
  1230.         getdIXtoHL
  1231.         mem ;портит HL
  1232.         EXA
  1233.         LD A,(hl)
  1234.         EXA
  1235.        _LoopCimmediately
  1236.  
  1237. JPMX
  1238.         PUSH IX
  1239.         POP DE ;=PC
  1240.        _LoopJP
  1241.  
  1242. LDSPIX
  1243.         LD (_SP),IX
  1244.        _Loop_
  1245.  
  1246. ADDISP
  1247.         push bc ;fix!
  1248.         LD BC,(_SP)
  1249.         EXA
  1250.         ADD IX,BC
  1251.         EXA
  1252.         POP BC
  1253.        _Loop_
  1254.  
  1255. EXSPIX
  1256.         LD HL,(_SP)
  1257.         getmemBC
  1258.         PUSH BC
  1259.         EX (SP),IX
  1260.         POP BC
  1261.         LD HL,(_SP)
  1262.         putmemBC
  1263.        _LoopCimmediately
  1264.