?login_element?

Subversion Repositories NedoOS

Rev

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

  1. ;"a"=a
  2. ;"x"=c (b=0)
  3. ;"y"=e (d=0)
  4.  
  5.         macro checka
  6.         inc a
  7.         dec a
  8.         endm
  9.  
  10.         macro checkx
  11.         inc c
  12.         dec c
  13.         endm
  14.  
  15.         macro checky
  16.         inc e
  17.         dec e
  18.         endm
  19.  
  20.         macro sei ;ei
  21.         endm
  22.  
  23.         macro cld ;clear decimal mode
  24.         endm
  25.  
  26.         macro txs ;set stack pointer = x
  27.         endm
  28.  
  29.         macro beq addr
  30.         jp z,addr
  31.         endm
  32.        
  33.         macro bne addr
  34.         jp nz,addr
  35.         endm
  36.        
  37.         macro bcs addr
  38.         jp c,addr
  39.         endm
  40.        
  41.         macro bcc addr
  42.         jp nc,addr
  43.         endm
  44.        
  45.         macro bmi addr
  46.         jp m,addr
  47.         endm
  48.  
  49.         macro bpl addr
  50.         jp p,addr
  51.         endm
  52.        
  53.         macro jsr addr
  54.         call addr
  55.         endm
  56.  
  57.         macro jmp addr
  58.         jp addr
  59.         endm
  60.        
  61.         macro jmpindirect addr
  62.         ld hl,(addr)
  63.         jp (hl)
  64.         endm
  65.        
  66.         macro rts
  67.         ret
  68.         endm
  69.        
  70.         macro rti ;return from interrupt
  71.         ret
  72.         endm
  73.        
  74. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  75.        
  76.         macro sec
  77.         scf
  78.         endm
  79.        
  80.         macro secsub ;перенос в вычитании инверсный
  81.         or a
  82.         endm
  83.        
  84.         macro cmpcy ;перенос после сравнения инверсный
  85.         ccf
  86.         endm
  87.        
  88.         macro clc ;сохраняет Z как минимум в chkjumpstringmetatiles
  89.         scf
  90.         ccf
  91.         endm
  92.        
  93.         macro lsr
  94.         srl a ;set Z,N,CY
  95.         endm
  96.  
  97.         macro ror
  98.         rr a ;set Z,N,CY
  99.         endm
  100.        
  101.         macro rol
  102.         rl a ;set Z,N,CY
  103.         endm
  104.        
  105.         macro asl
  106.         add a,a ;set Z,N,CY
  107.         endm
  108.        
  109.         macro lsri addr
  110.         ld hl,addr
  111.         srl (hl)
  112.         endm
  113.        
  114.         macro rori addr
  115.         ld hl,addr
  116.         rr (hl)
  117.         endm
  118.        
  119.         macro roli addr
  120.         ld hl,addr
  121.         rl (hl)
  122.         endm
  123.        
  124.         macro asli addr
  125.         ld hl,addr
  126.         sla (hl)
  127.         endm
  128.        
  129.         macro rorx shift,x
  130.         push af
  131.         ld hl,shift
  132.         add hl,bc
  133.         pop af
  134.         rr (hl)
  135.         endm
  136.  
  137.         macro rolx shift,x
  138.         push af
  139.         ld hl,shift
  140.         add hl,bc
  141.         pop af
  142.         rl (hl)
  143.         endm
  144.  
  145.         macro oran value ;TODO don't spoil CY
  146.          push af
  147.         or value
  148.          ld h,a
  149.          pop af
  150.          ld a,h
  151.          inc a
  152.          dec a
  153.         endm
  154.        
  155.         macro eorn value ;TODO don't spoil CY
  156.          push af
  157.         xor value
  158.          ld h,a
  159.          pop af
  160.          ld a,h
  161.          inc a
  162.          dec a
  163.         endm
  164.        
  165.         macro andn value ;TODO don't spoil CY
  166.          push af
  167.         and value
  168.          ld h,a
  169.          pop af
  170.          ld a,h
  171.          inc a
  172.          dec a
  173.         endm
  174.        
  175.         macro orax shift,x
  176.          push af
  177.         ld hl,shift
  178.         add hl,bc
  179.         or (hl) ;TODO don't spoil CY
  180.          ld h,a
  181.          pop af
  182.          ld a,h
  183.          inc a
  184.          dec a
  185.         endm
  186.  
  187.         macro oray shift,y
  188.          push af
  189.         ld hl,shift
  190.         add hl,de
  191.         or (hl) ;TODO don't spoil CY
  192.          ld h,a
  193.          pop af
  194.          ld a,h
  195.          inc a
  196.          dec a
  197.         endm
  198.  
  199.         macro eorx shift,x
  200.          push af
  201.         ld hl,shift
  202.         add hl,bc
  203.         xor (hl) ;TODO don't spoil CY
  204.          ld h,a
  205.          pop af
  206.          ld a,h
  207.          inc a
  208.          dec a
  209.         endm
  210.  
  211.         macro eory shift,y
  212.          push af
  213.         ld hl,shift
  214.         add hl,de
  215.         xor (hl) ;TODO don't spoil CY
  216.          ld h,a
  217.          pop af
  218.          ld a,h
  219.          inc a
  220.          dec a
  221.         endm
  222.  
  223.         macro andx shift,x
  224.          push af
  225.         ld hl,shift
  226.         add hl,bc
  227.         and (hl) ;TODO don't spoil CY
  228.          ld h,a
  229.          pop af
  230.          ld a,h
  231.          inc a
  232.          dec a
  233.         endm
  234.  
  235.         macro andy shift,y
  236.          push af
  237.         ld hl,shift
  238.         add hl,de
  239.         and (hl) ;TODO don't spoil CY
  240.          ld h,a
  241.          pop af
  242.          ld a,h
  243.          inc a
  244.          dec a
  245.         endm
  246.  
  247.         macro orai addr ;TODO don't spoil CY
  248.          push af
  249.         ld hl,addr
  250.         or (hl)
  251.          ld h,a
  252.          pop af
  253.          ld a,h
  254.          inc a
  255.          dec a
  256.         endm
  257.        
  258.         macro eori addr ;TODO don't spoil CY
  259.          push af
  260.         ld hl,addr
  261.         xor (hl)
  262.          ld h,a
  263.          pop af
  264.          ld a,h
  265.          inc a
  266.          dec a
  267.         endm
  268.        
  269.         macro andi addr ;TODO don't spoil CY
  270.          push af
  271.         ld hl,addr
  272.         and (hl)
  273.          ld h,a
  274.          pop af
  275.          ld a,h
  276.          inc a
  277.          dec a
  278.         endm
  279.        
  280.         macro biti addr ;TODO don't spoil CY
  281.          push af
  282.         ld hl,(addr)
  283.         ld h,a
  284.         and l
  285.          ld h,a
  286.          pop af
  287.          inc h
  288.          dec h
  289.         endm
  290.        
  291.         macro adcn value
  292.         adc a,value
  293.         endm
  294.        
  295.         macro sbcn value
  296.         sbc a,value
  297.         endm
  298.        
  299.         macro adci addr
  300.         ld hl,addr
  301.         adc a,(hl)
  302.         endm
  303.        
  304.         macro sbci addr
  305.         ld hl,addr
  306.         sbc a,(hl)
  307.         endm
  308.        
  309.         macro adcx shift,x
  310.         push af
  311.         ld hl,shift
  312.         add hl,bc
  313.         pop af
  314.         adc a,(hl)
  315.         endm
  316.  
  317.         macro sbcx shift,x
  318.         push af
  319.         ld hl,shift
  320.         add hl,bc
  321.         pop af
  322.         sbc a,(hl)
  323.         endm
  324.  
  325.         macro adcy shift,y
  326.         push af
  327.         ld hl,shift
  328.         add hl,de
  329.         pop af
  330.         adc a,(hl)
  331.         endm
  332.  
  333.         macro sbcy shift,y
  334.         push af
  335.         ld hl,shift
  336.         add hl,de
  337.         pop af
  338.         sbc a,(hl)
  339.         endm
  340.  
  341.         macro cmpn value
  342.         cp value
  343.         endm
  344.  
  345.         macro cpxn value
  346.         ld l,a
  347.         ld a,c
  348.         cp value
  349.         ld a,l
  350.         endm
  351.  
  352.         macro cpyn value
  353.         ld l,a
  354.         ld a,e
  355.         cp value
  356.         ld a,l
  357.         endm
  358.  
  359.         macro cmpi addr
  360.         ld hl,addr
  361.         cp (hl)
  362.         endm
  363.  
  364.         macro cpxi addr
  365.         ld hl,(addr)
  366.         ld h,a
  367.         ld a,c
  368.         cp l
  369.         ld a,h
  370.         endm
  371.  
  372.         macro cpyi addr
  373.         ld hl,(addr)
  374.         ld h,a
  375.         ld a,e
  376.         cp l
  377.         ld a,h
  378.         endm
  379.  
  380.         macro cmpx shift,x
  381.          push af
  382.         ld hl,shift
  383.         add hl,bc
  384.          pop af
  385.         cp (hl)
  386.         endm
  387.  
  388.         macro cmpy shift,y
  389.          push af
  390.         ld hl,shift
  391.         add hl,de
  392.          pop af
  393.         cp (hl)
  394.         endm
  395.  
  396.         macro dex
  397.         dec c
  398.         endm
  399.        
  400.         macro inx
  401.         inc c
  402.         endm
  403.        
  404.         macro dey
  405.         dec e
  406.         endm
  407.        
  408.         macro iny
  409.         inc e
  410.         endm
  411.        
  412.         macro deci addr
  413.         ld hl,addr
  414.         dec (hl)
  415.         endm
  416.        
  417.         macro inci addr
  418.         ld hl,addr
  419.         inc (hl)
  420.         endm
  421.        
  422.         macro incx shift,x
  423.          push af
  424.         ld hl,shift
  425.         add hl,bc
  426.          pop af
  427.         inc (hl)
  428.         endm
  429.  
  430.         macro decx shift,x
  431.          push af
  432.         ld hl,shift
  433.         add hl,bc
  434.          pop af
  435.         dec (hl)
  436.         endm
  437.  
  438.         macro incy shift,y
  439.          push af
  440.         ld hl,shift
  441.         add hl,de
  442.          pop af
  443.         inc (hl)
  444.         endm
  445.  
  446.         macro decy shift,y
  447.          push af
  448.         ld hl,shift
  449.         add hl,de
  450.          pop af
  451.         dec (hl)
  452.         endm
  453.  
  454. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  455.        
  456.         macro pha
  457.         push af
  458.         endm
  459.        
  460.         macro pla
  461.         ;pop hl
  462.         ;ld a,h ;keep CY
  463.         ;inc a
  464.         ;dec a ;keep CY, set Z,N
  465.         pop af
  466.         endm
  467.        
  468.         macro plakeepcy
  469.         pop hl
  470.         ld a,h ;keep CY
  471.         inc a
  472.         dec a ;set Z,N
  473.         endm
  474.        
  475.         macro plarol ;pla:rol
  476.         pop hl
  477.         ld a,h ;keep CY
  478.         rla
  479.         endm
  480.  
  481.         macro txa
  482.         ld a,c
  483.         ;inc a
  484.         ;dec a ;keep CY, set Z,N
  485.         endm
  486.        
  487.         macro tya
  488.         ld a,e
  489.         ;inc a
  490.         ;dec a ;keep CY, set Z,N
  491.         endm
  492.        
  493.         macro tax
  494.         ld c,a
  495.         ;inc a
  496.         ;dec a ;keep CY, set Z,N
  497.         endm
  498.        
  499.         macro tay
  500.         ld e,a
  501.         ;inc a
  502.         ;dec a ;keep CY, set Z,N
  503.         endm
  504.        
  505.         macro ldan value
  506.         ld a,value
  507.         ;inc a
  508.         ;dec a ;keep CY, set Z,N
  509.         endm
  510.  
  511.         macro ldxn value
  512.         ld c,value
  513.         ;inc c
  514.         ;dec c ;keep CY, set Z,N
  515.         endm
  516.  
  517.         macro ldyn value
  518.         ld e,value
  519.         ;inc e
  520.         ;dec e ;keep CY, set Z,N
  521.         endm
  522.  
  523.         macro ldyn16 value
  524.         ld de,value
  525.         endm
  526.  
  527.         macro lda addr
  528.         ld a,(addr)
  529.         ;inc a
  530.         ;dec a ;keep CY, set Z,N
  531.         endm
  532.  
  533.         macro ldx addr
  534.         ld hl,addr
  535.         ld c,(hl)
  536.         ;inc c
  537.         ;dec c ;keep CY, set Z,N
  538.         endm
  539.  
  540.         macro ldy addr
  541.         ld hl,addr
  542.         ld e,(hl)
  543.         ;inc e
  544.         ;dec e ;keep CY, set Z,N
  545.         endm
  546.  
  547.         macro ldax shift,x ;???
  548.         ;push af
  549.         ld hl,shift
  550.         add hl,bc
  551.         ;pop af
  552.         ld a,(hl)
  553.         ;inc a
  554.         ;dec a ;keep CY, set Z,N
  555.         endm
  556.  
  557.         macro ldaxkeepcy shift,x ;???
  558.         push af
  559.         ld hl,shift
  560.         add hl,bc
  561.         pop af
  562.         ld a,(hl)
  563.         ;inc a
  564.         ;dec a ;keep CY, set Z,N
  565.         endm
  566.  
  567.         macro lday shift,y ;???
  568.          push af
  569.         ld hl,shift
  570.         add hl,de
  571.          pop af
  572.         ld a,(hl)
  573.         ;inc a
  574.         ;dec a ;keep CY, set Z,N
  575.         endm
  576.  
  577.         macro ldaykeepcy shift,y ;???
  578.         push af
  579.         ld hl,shift
  580.         add hl,de
  581.         pop af
  582.         ld a,(hl)
  583.         ;inc a
  584.         ;dec a ;keep CY, set Z,N
  585.         endm
  586.  
  587.         macro ldxy shift,y ;???
  588.          push af
  589.         ld hl,shift
  590.         add hl,de
  591.          pop af
  592.         ld c,(hl)
  593.         ;inc c
  594.         ;dec c ;keep CY, set Z,N
  595.         endm
  596.  
  597.         macro ldyx shift,x ;???
  598.          push af
  599.         ld hl,shift
  600.         add hl,bc
  601.          pop af
  602.         ld e,(hl)
  603.         ;inc e
  604.         ;dec e ;keep CY, set Z,N
  605.         endm
  606.  
  607.         macro ldayindirect addr,y ;???
  608.          push af
  609.         ld hl,(addr)
  610.         add hl,de
  611.          pop af
  612.         ld a,(hl)
  613.         ;inc a
  614.         ;dec a ;keep CY, set Z,N
  615.         endm
  616.  
  617.         macro sta addr
  618.         ld (addr),a
  619.         endm
  620.  
  621.         macro stx addr
  622.         ld hl,addr
  623.         ld (hl),c
  624.         endm
  625.  
  626.         macro sty addr
  627.         ld hl,addr
  628.         ld (hl),e
  629.         endm
  630.  
  631.         macro stax shift,x ;??? no branches found after stax
  632.          push af
  633.         ld hl,shift
  634.         add hl,bc
  635.          pop af
  636.         ld (hl),a
  637.         endm
  638.  
  639.         macro stay shift,y ;??? no branches found after stay
  640.          push af
  641.         ld hl,shift
  642.         add hl,de
  643.          pop af
  644.         ld (hl),a
  645.         endm
  646.  
  647.         macro stxy shift,y ;??? no branches found after stxy
  648.          push af
  649.         ld hl,shift
  650.         add hl,de
  651.          pop af
  652.         ld (hl),c
  653.         endm
  654.  
  655.         macro styx shift,x ;??? no branches found after styx
  656.          push af
  657.         ld hl,shift
  658.         add hl,bc
  659.          pop af
  660.         ld (hl),e
  661.         endm
  662.  
  663.         macro stayindirect addr,y ;??? no branches found after stayindirect
  664.          push af
  665.         ld hl,(addr)
  666.         add hl,de
  667.          pop af
  668.         ld (hl),a
  669.         endm
  670.