home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Recent / hard / hack / ps2m.lha / PIC_source / macros.i < prev    next >
Text File  |  2000-07-09  |  4KB  |  460 lines

  1. mov    macro
  2.     if    streq("\1","w")|streq("\1","W")
  3.     movwf    \2
  4.     else
  5.     if    (chrval("\1",1)==0x27)|((chrval("\1",0)>0x2F)&(chrval("\1",0)<0x3A))
  6.     movlw    \1
  7.     else
  8.     movf    \1,w
  9.     endif
  10.     if    ~(streq("\2","w")|streq("\2","W"))
  11.     movwf    \2
  12.     endif
  13.     endif
  14.     endm
  15.  
  16. gid    macro
  17.     bcf    INTCON,7
  18.     endm
  19.  
  20. gie    macro
  21.     bsf    INTCON,7
  22.     endm
  23.  
  24. bsf1    macro
  25.     data1
  26.     bsf    \1,\2
  27.     data0
  28.     endm
  29.  
  30. bcf1    macro
  31.     data1
  32.     bcf    \1,\2
  33.     data0
  34.     endm
  35.  
  36. skipc    macro    ; skip if carry
  37.     btfss    STATUS,C
  38.     endm
  39.  
  40. skipnc    macro    ; skip if not carry
  41.     btfsc    STATUS,C
  42.     endm
  43.  
  44. skipz    macro    ; skip if zero
  45.     btfss    STATUS,Z
  46.     endm
  47.  
  48. skipnz    macro    ; skip if not zero
  49.     btfsc    STATUS,Z
  50.     endm
  51.  
  52. skpos    macro    ; skip if reg >= 0 (reg)
  53.     btfsc    \1,7
  54.     endm
  55.  
  56. skneg    macro    ; skip if reg < 0 (reg)
  57.     btfss    \1,7
  58.     endm
  59.  
  60. setc    macro    ; set carry
  61.     bsf    STATUS,C
  62.     endm
  63.  
  64. clrc    macro    ; clear carry
  65.     bcf    STATUS,C
  66.     endm
  67.  
  68. bc    macro    ;branch if carry
  69.     skipnc
  70.     goto    \1
  71.     endm
  72.  
  73. bnc    macro    ;branch if no carry
  74.     skipc
  75.     goto    \1
  76.     endm
  77.  
  78. bz    macro    ;branch if zero
  79.     skipnz
  80.     goto    \1
  81.     endm
  82.  
  83. bnz    macro    ;branch if not zero
  84.     skipz
  85.     goto    \1
  86.     endm
  87.  
  88. bwz    macro    ;branch if w = 0
  89.     addlw    0
  90.     skipnz
  91.     goto    \1
  92.     endm
  93.  
  94. bwnz    macro    ;branch if w <> 0
  95.     addlw    0
  96.     skipz
  97.     goto    \1
  98.     endm
  99.  
  100. retz    macro
  101.     skipnz
  102.     return
  103.     endm
  104.  
  105. retnz    macro
  106.     skipz
  107.     return
  108.     endm
  109.  
  110. retwz    macro
  111.     addlw    0
  112.     skipnz
  113.     return
  114.     endm
  115.  
  116. retwnz    macro
  117.     addlw    0
  118.     skipz
  119.     return
  120.     endm
  121.  
  122. bpos    macro    ;branch if reg >= 0 (reg,dest_addr)
  123.     btfss    \1,7
  124.     goto    \2
  125.     endm
  126.  
  127. bneg    macro    ;branch if reg < 0 (reg,dest_addr)
  128.     btfsc    \1,7
  129.     goto    \2
  130.     endm
  131.  
  132. brset    macro    ;branch if bit set (reg,bit,dest_addr)
  133.     btfsc    \1,\2
  134.     goto    \3
  135.     endm
  136.  
  137. brclr    macro    ;branch if bit clear (reg,bit,dest_addr)
  138.     btfss    \1,\2
  139.     goto    \3
  140.     endm
  141.  
  142. data0    macro
  143.     bcf    STATUS,RP0
  144.     endm
  145.  
  146. data1    macro
  147.     bsf    STATUS,RP0
  148.     endm
  149.  
  150. code0    macro
  151.     bcf    PCLATH,3
  152.     endm
  153.  
  154. code1    macro
  155.     bsf    PCLATH,3
  156.     endm
  157.  
  158. loop    macro
  159.     decfsz    \2
  160.     goto    \1
  161.     endm
  162.  
  163. movlf    macro
  164.     movlw    \1
  165.     movwf    \2
  166.     endm
  167.  
  168. movff    macro
  169.     movf    \1,w
  170.     movwf    \2
  171.     endm
  172.  
  173. movfw    macro
  174.     movf    \1,w
  175.     endm
  176.  
  177. iorfw    macro
  178.     iorwf    \1,w
  179.     endm
  180.  
  181. xorfw    macro
  182.     xorwf    \1,w
  183.     endm
  184.  
  185. addfw    macro
  186.     addwf    \1,w
  187.     endm
  188.  
  189. comfw    macro
  190.     comf    \1,w
  191.     endm
  192.  
  193. swapfw    macro
  194.     swapf    \1,w
  195.     endm
  196.  
  197. rrfw    macro
  198.     rrf    \1,w
  199.     endm
  200.  
  201. rlfw    macro
  202.     rlf    \1,w
  203.     endm
  204.  
  205. andlf    macro
  206.     movlw    \1
  207.     andwf    \2
  208.     endm
  209.  
  210. addlf    macro
  211.     movlw    \1
  212.     addwf    \2
  213.     endm
  214.  
  215. sublf    macro
  216.     movlw    \1
  217.     subwf    \2
  218.     endm
  219.  
  220. cmplf    macro
  221.     movlw    \1
  222.     subwf    \2,w
  223.     endm
  224.  
  225. cmpff    macro
  226.     movf    \1,w
  227.     subwf    \2,w
  228.     endm
  229.  
  230. addff    macro
  231.     movf    \1,w
  232.     addwf    \2
  233.     endm
  234.  
  235. subff    macro
  236.     movf    \1,w
  237.     subwf    \2
  238.     endm
  239.  
  240. callw    macro
  241.     movlw    \2
  242.     call    \1
  243.     endm
  244.  
  245. callf    macro
  246.     movf    \2,w
  247.     call    \1
  248.     endm
  249.  
  250. call0    macro
  251.     bcf    PCLATH,3
  252.     call    \1
  253.     bsf    PCLATH,3
  254.     endm
  255.  
  256. call1    macro
  257.     bsf    PCLATH,3
  258.     call    \1
  259.     bcf    PCLATH,3
  260.     endm
  261.  
  262. call1w    macro
  263.     bsf    PCLATH,3
  264.     movlw    \2
  265.     call    \1
  266.     bcf    PCLATH,3
  267.     endm
  268.  
  269. call1f    macro
  270.     bsf    PCLATH,3
  271.     movf    \2,w
  272.     call    \1
  273.     bcf    PCLATH,3
  274.     endm
  275.  
  276. goto0    macro
  277.     bcf    PCLATH,3
  278.     goto    \1
  279.     endm
  280.  
  281. goto1    macro
  282.     bsf    PCLATH,3
  283.     goto    \1
  284.     endm
  285.  
  286. tstf    macro
  287.     movf    \1
  288.     endm
  289.  
  290. tstw    macro
  291.     addlw    0
  292.     endm
  293.  
  294. clrd    macro
  295.     clrf    \10
  296.     clrf    \11
  297.     endm
  298.  
  299. tstd    macro
  300.     movf    \10
  301.     skipnz
  302.     movf    \11
  303.     endm
  304.  
  305. incd    macro
  306.     incf    \10
  307.     skipnz
  308.     incf    \11
  309.     endm
  310.  
  311. movld    macro
  312.     if    \1&255
  313.     movlw    \1&255
  314.     movwf    \20
  315.     else
  316.     clrf    \20
  317.     endif
  318.     if    (\1>>8)&255
  319.     if    ((\1>>8)&255)-(\1&255)
  320.     movlw    (\1>>8)&255
  321.     endif
  322.     movwf    \21
  323.     else
  324.     clrf    \21
  325.     endif
  326.     endm
  327.  
  328. movcd    macro
  329.     movld    (\1+256),\2
  330.     endm
  331.  
  332. movwd    macro
  333.     movwf    \10
  334.     clrf    \11
  335.     endm
  336.  
  337. loopd    macro
  338.     loop    \1,\20
  339.     loop    \1,\21
  340.     endm
  341.  
  342. movdd    macro
  343.     movf    \10,w
  344.     movwf    \20
  345.     movf    \11,w
  346.     movwf    \21
  347.     endm
  348.  
  349. movtt    macro
  350.     movf    \10,w
  351.     movwf    \20
  352.     movf    \11,w
  353.     movwf    \21
  354.     movf    \12,w
  355.     movwf    \22
  356.     endm
  357.  
  358. adddd    macro
  359.     movf    \10,w
  360.     addwf    \20
  361.     movf    \11,w
  362.     btfsc    STATUS,C
  363.     incfsz    \11,w
  364.     addwf    \21
  365.     endm
  366.  
  367. addfd    macro
  368.     movf    \1,w
  369.     addwf    \20
  370.     skipnc
  371.     incf    \21
  372.     endm
  373.  
  374. addwd    macro
  375.     addwf    \10
  376.     skipnc
  377.     incf    \11
  378.     endm
  379.  
  380. addld    macro
  381.     if    \1-1
  382.     movlw    \1&255
  383.     addwf    \20
  384.     skipnc
  385.     incf    \21
  386.     if    (\1>>8)&255
  387.     if    (((\1>>8)&255)-1)
  388.     movlw    (\1>>8)&255
  389.     addwf    \21
  390.     else
  391.     incf    \21
  392.     endif
  393.     endif
  394.     else
  395.     incf    \20
  396.     skipnz
  397.     incf    \21
  398.     endif
  399.     endm
  400.  
  401. subdd    macro
  402.     movf    \10,w
  403.     subwf    \20
  404.     movf    \11,w
  405.     btfss    STATUS,C
  406.     incfsz    \11,w
  407.     subwf    \21
  408.     endm
  409.  
  410. subfd    macro
  411.     movf    \1,w
  412.     subwf    \20
  413.     skipc
  414.     decf    \21
  415.     endm
  416.  
  417. subwd    macro
  418.     subwf    \10
  419.     skipc
  420.     decf    \11
  421.     endm
  422.  
  423. subld    macro
  424.     movlw    \1&255
  425.     subwf    \20
  426.     skipc
  427.     decf    \21
  428.     if    (\1>>8)&255
  429.     if    (((\1>>8)&255)-1)
  430.     movlw    (\1>>8)&255
  431.     subwf    \21
  432.     else
  433.     decf    \21
  434.     endif
  435.     endif
  436.     endm
  437.  
  438. rld    macro
  439.     rlf    \10
  440.     rlf    \11
  441.     endm
  442.  
  443. ald    macro
  444.     clrc
  445.     rlf    \10
  446.     rlf    \11
  447.     endm
  448.  
  449. rrd    macro
  450.     rrf    \11
  451.     rrf    \10
  452.     endm
  453.  
  454. ard    macro
  455.     clrc
  456.     rrf    \11
  457.     rrf    \10
  458.     endm
  459.  
  460.