?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.         or value
  147.         endm
  148.        
  149.         macro eorn value ;TODO don't spoil CY
  150.         xor value
  151.         endm
  152.        
  153.         macro andn value ;TODO don't spoil CY
  154.         and value
  155.         endm
  156.        
  157.         macro orax shift,x
  158.         ;push af
  159.         ld hl,shift
  160.         add hl,bc
  161.         ;pop af
  162.         or (hl) ;TODO don't spoil CY
  163.         endm
  164.  
  165.         macro oray shift,y
  166.         ;push af
  167.         ld hl,shift
  168.         add hl,de
  169.         ;pop af
  170.         or (hl) ;TODO don't spoil CY
  171.         endm
  172.  
  173.         macro eorx shift,x
  174.         ;push af
  175.         ld hl,shift
  176.         add hl,bc
  177.         ;pop af
  178.         xor (hl) ;TODO don't spoil CY
  179.         endm
  180.  
  181.         macro eory shift,y
  182.         ;push af
  183.         ld hl,shift
  184.         add hl,de
  185.         ;pop af
  186.         xor (hl) ;TODO don't spoil CY
  187.         endm
  188.  
  189.         macro andx shift,x
  190.         ;push af
  191.         ld hl,shift
  192.         add hl,bc
  193.         ;pop af
  194.         and (hl) ;TODO don't spoil CY
  195.         endm
  196.  
  197.         macro andy shift,y
  198.         ;push af
  199.         ld hl,shift
  200.         add hl,de
  201.         ;pop af
  202.         and (hl) ;TODO don't spoil CY
  203.         endm
  204.  
  205.         macro orai addr ;TODO don't spoil CY
  206.         ld hl,addr
  207.         or (hl)
  208.         endm
  209.        
  210.         macro eori addr ;TODO don't spoil CY
  211.         ld hl,addr
  212.         xor (hl)
  213.         endm
  214.        
  215.         macro andi addr ;TODO don't spoil CY
  216.         ld hl,addr
  217.         and (hl)
  218.         endm
  219.        
  220.         macro biti addr ;TODO don't spoil CY
  221.         ld hl,(addr)
  222.         ld h,a
  223.         and l
  224.         ld a,h
  225.         endm
  226.        
  227.         macro adcn value
  228.         adc a,value
  229.         endm
  230.        
  231.         macro sbcn value
  232.         sbc a,value
  233.         endm
  234.        
  235.         macro adci addr
  236.         ld hl,addr
  237.         adc a,(hl)
  238.         endm
  239.        
  240.         macro sbci addr
  241.         ld hl,addr
  242.         sbc a,(hl)
  243.         endm
  244.        
  245.         macro adcx shift,x
  246.         push af
  247.         ld hl,shift
  248.         add hl,bc
  249.         pop af
  250.         adc a,(hl)
  251.         endm
  252.  
  253.         macro sbcx shift,x
  254.         push af
  255.         ld hl,shift
  256.         add hl,bc
  257.         pop af
  258.         sbc a,(hl)
  259.         endm
  260.  
  261.         macro adcy shift,y
  262.         push af
  263.         ld hl,shift
  264.         add hl,de
  265.         pop af
  266.         adc a,(hl)
  267.         endm
  268.  
  269.         macro sbcy shift,y
  270.         push af
  271.         ld hl,shift
  272.         add hl,de
  273.         pop af
  274.         sbc a,(hl)
  275.         endm
  276.  
  277.         macro cmpn value
  278.         cp value
  279.         endm
  280.  
  281.         macro cpxn value
  282.         ld l,a
  283.         ld a,c
  284.         cp value
  285.         ld a,l
  286.         endm
  287.  
  288.         macro cpyn value
  289.         ld l,a
  290.         ld a,e
  291.         cp value
  292.         ld a,l
  293.         endm
  294.  
  295.         macro cmpi addr
  296.         ld hl,addr
  297.         cp (hl)
  298.         endm
  299.  
  300.         macro cpxi addr
  301.         ld hl,(addr)
  302.         ld h,a
  303.         ld a,c
  304.         cp l
  305.         ld a,h
  306.         endm
  307.  
  308.         macro cpyi addr
  309.         ld hl,(addr)
  310.         ld h,a
  311.         ld a,e
  312.         cp l
  313.         ld a,h
  314.         endm
  315.  
  316.         macro cmpx shift,x
  317.         ;push af
  318.         ld hl,shift
  319.         add hl,bc
  320.         ;pop af
  321.         cp (hl)
  322.         endm
  323.  
  324.         macro cmpy shift,y
  325.         ;push af
  326.         ld hl,shift
  327.         add hl,de
  328.         ;pop af
  329.         cp (hl)
  330.         endm
  331.  
  332.         macro dex
  333.         dec c
  334.         endm
  335.        
  336.         macro inx
  337.         inc c
  338.         endm
  339.        
  340.         macro dey
  341.         dec e
  342.         endm
  343.        
  344.         macro iny
  345.         inc e
  346.         endm
  347.        
  348.         macro deci addr
  349.         ld hl,addr
  350.         dec (hl)
  351.         endm
  352.        
  353.         macro inci addr
  354.         ld hl,addr
  355.         inc (hl)
  356.         endm
  357.        
  358.         macro incx shift,x
  359.         ;push af
  360.         ld hl,shift
  361.         add hl,bc
  362.         ;pop af
  363.         inc (hl)
  364.         endm
  365.  
  366.         macro decx shift,x
  367.         ;push af
  368.         ld hl,shift
  369.         add hl,bc
  370.         ;pop af
  371.         dec (hl)
  372.         endm
  373.  
  374.         macro incy shift,y
  375.         ;push af
  376.         ld hl,shift
  377.         add hl,de
  378.         ;pop af
  379.         inc (hl)
  380.         endm
  381.  
  382.         macro decy shift,y
  383.         ;push af
  384.         ld hl,shift
  385.         add hl,de
  386.         ;pop af
  387.         dec (hl)
  388.         endm
  389.  
  390. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  391.        
  392.         macro pha
  393.         push af
  394.         endm
  395.        
  396.         macro pla
  397.         ;pop hl
  398.         ;ld a,h ;keep CY
  399.         ;inc a
  400.         ;dec a ;keep CY, set Z,N
  401.         pop af
  402.         endm
  403.        
  404.         macro plakeepcy
  405.         pop hl
  406.         ld a,h ;keep CY
  407.         inc a
  408.         dec a ;set Z,N
  409.         endm
  410.        
  411.         macro plarol ;pla:rol
  412.         pop hl
  413.         ld a,h ;keep CY
  414.         rla
  415.         endm
  416.  
  417.         macro txa
  418.         ld a,c
  419.         ;inc a
  420.         ;dec a ;keep CY, set Z,N
  421.         endm
  422.        
  423.         macro tya
  424.         ld a,e
  425.         ;inc a
  426.         ;dec a ;keep CY, set Z,N
  427.         endm
  428.        
  429.         macro tax
  430.         ld c,a
  431.         ;inc a
  432.         ;dec a ;keep CY, set Z,N
  433.         endm
  434.        
  435.         macro tay
  436.         ld e,a
  437.         ;inc a
  438.         ;dec a ;keep CY, set Z,N
  439.         endm
  440.        
  441.         macro ldan value
  442.         ld a,value
  443.         ;inc a
  444.         ;dec a ;keep CY, set Z,N
  445.         endm
  446.  
  447.         macro ldxn value
  448.         ld c,value
  449.         ;inc c
  450.         ;dec c ;keep CY, set Z,N
  451.         endm
  452.  
  453.         macro ldyn value
  454.         ld e,value
  455.         ;inc e
  456.         ;dec e ;keep CY, set Z,N
  457.         endm
  458.  
  459.         macro ldyn16 value
  460.         ld de,value
  461.         endm
  462.  
  463.         macro lda addr
  464.         ld a,(addr)
  465.         ;inc a
  466.         ;dec a ;keep CY, set Z,N
  467.         endm
  468.  
  469.         macro ldx addr
  470.         ld hl,addr
  471.         ld c,(hl)
  472.         ;inc c
  473.         ;dec c ;keep CY, set Z,N
  474.         endm
  475.  
  476.         macro ldy addr
  477.         ld hl,addr
  478.         ld e,(hl)
  479.         ;inc e
  480.         ;dec e ;keep CY, set Z,N
  481.         endm
  482.  
  483.         macro ldax shift,x ;???
  484.         ;push af
  485.         ld hl,shift
  486.         add hl,bc
  487.         ;pop af
  488.         ld a,(hl)
  489.         ;inc a
  490.         ;dec a ;keep CY, set Z,N
  491.         endm
  492.  
  493.         macro ldaxkeepcy shift,x ;???
  494.         push af
  495.         ld hl,shift
  496.         add hl,bc
  497.         pop af
  498.         ld a,(hl)
  499.         ;inc a
  500.         ;dec a ;keep CY, set Z,N
  501.         endm
  502.  
  503.         macro lday shift,y ;???
  504.         ;push af
  505.         ld hl,shift
  506.         add hl,de
  507.         ;pop af
  508.         ld a,(hl)
  509.         ;inc a
  510.         ;dec a ;keep CY, set Z,N
  511.         endm
  512.  
  513.         macro ldaykeepcy shift,y ;???
  514.         push af
  515.         ld hl,shift
  516.         add hl,de
  517.         pop af
  518.         ld a,(hl)
  519.         ;inc a
  520.         ;dec a ;keep CY, set Z,N
  521.         endm
  522.  
  523.         macro ldxy shift,y ;???
  524.         ;push af
  525.         ld hl,shift
  526.         add hl,de
  527.         ;pop af
  528.         ld c,(hl)
  529.         ;inc c
  530.         ;dec c ;keep CY, set Z,N
  531.         endm
  532.  
  533.         macro ldyx shift,x ;???
  534.         ;push af
  535.         ld hl,shift
  536.         add hl,bc
  537.         ;pop af
  538.         ld e,(hl)
  539.         ;inc e
  540.         ;dec e ;keep CY, set Z,N
  541.         endm
  542.  
  543.         macro ldayindirect addr,y ;???
  544.         ;push af
  545.         ld hl,(addr)
  546.         add hl,de
  547.         ;pop af
  548.         ld a,(hl)
  549.         ;inc a
  550.         ;dec a ;keep CY, set Z,N
  551.         endm
  552.  
  553.         macro sta addr
  554.         ld (addr),a
  555.         endm
  556.  
  557.         macro stx addr
  558.         ld hl,addr
  559.         ld (hl),c
  560.         endm
  561.  
  562.         macro sty addr
  563.         ld hl,addr
  564.         ld (hl),e
  565.         endm
  566.  
  567.         macro stax shift,x ;??? no branches found after stax
  568.         ;push af
  569.         ld hl,shift
  570.         add hl,bc
  571.         ;pop af
  572.         ld (hl),a
  573.         endm
  574.  
  575.         macro stay shift,y ;??? no branches found after stay
  576.         ;push af
  577.         ld hl,shift
  578.         add hl,de
  579.         ;pop af
  580.         ld (hl),a
  581.         endm
  582.  
  583.         macro stxy shift,y ;??? no branches found after stxy
  584.         ;push af
  585.         ld hl,shift
  586.         add hl,de
  587.         ;pop af
  588.         ld (hl),c
  589.         endm
  590.  
  591.         macro styx shift,x ;??? no branches found after styx
  592.         ;push af
  593.         ld hl,shift
  594.         add hl,bc
  595.         ;pop af
  596.         ld (hl),e
  597.         endm
  598.  
  599.         macro stayindirect addr,y ;??? no branches found after stayindirect
  600.         ;push af
  601.         ld hl,(addr)
  602.         add hl,de
  603.         ;pop af
  604.         ld (hl),a
  605.         endm
  606.