home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / A / BIOSR4.ARC / X6502.LIB < prev    next >
Text File  |  1987-04-26  |  5KB  |  408 lines

  1.     ; This macro library is to be used with DRI's MAC or RMAC
  2.     ;   (MAC and RMAC are registered trademarks of Digital Research)
  3.     ;
  4.     ; The code structure is the same as normal 6502 asmabler
  5.     ; with the following differences:
  6.     ;
  7.     ;   Hex numbers '$00' are replaced with a number followed by an h
  8.     ;   i.e. normal 8080 type numbers  (also have binary, and octal)
  9.     ;
  10.     ;   The immediate instruction's format is different. Below is an
  11.     ;   example:
  12.     ;        normal 6502 ASM        LIB 6502 ASM
  13.  
  14.     ;        lda    #$A5        lda     0A5h,#
  15.     ;
  16.  
  17.  
  18.     ; Written by    Von Ertwine
  19.     ; 26 July 84
  20.     ;
  21.  
  22. xaaa    macro    @W,@Y,@Z
  23.      if    nul @Z
  24.       if    @Y<256
  25.        db    @W+4,@Y
  26.       else
  27.        db    @W+12
  28.        dw    @Y    
  29.       endif
  30.      else
  31.       if    '&@Z'='X)'
  32.        db    @W,@Y&)
  33.       else
  34.        if    '&@Z'='X'
  35.         if    @Y<256
  36.          db    @W+20,@Y
  37.         else
  38.          db    @W+28
  39.          dw    @Y
  40.         endif
  41.        else
  42.         if    '&@Z'='Y'
  43.          @A    set 0
  44.          irpc    @x,@y
  45.           if    '&@X'='('
  46.            @A    set 1
  47.           endif
  48.          endm
  49.          if    @A=1
  50.           db    @W+16,@Y
  51.          else
  52.           db    @W+24
  53.           dw    @Y
  54.          endif
  55.         else
  56.          if    '&@Z'='#'
  57.           if    @Y<256
  58.            db    @W+8,@Y
  59.           else
  60.            db    @W,0,0
  61.            'Error'
  62.           endif
  63.          endif
  64.         endif
  65.        endif
  66.       endif
  67.      endif
  68.     endm
  69.  
  70. xbb    macro    @W,@Y,@Z
  71.      @A    set 0
  72.      if    not nul @Z
  73.       @A    set 16
  74.       if    (@W=86h) or (@W=84h)
  75.        if    @Y>256
  76.         'Error'
  77.        endif
  78.       endif
  79.      endif
  80.      if    @Y<256
  81.       db    @W+@A,@Y
  82.      else
  83.       db    @W+@A+8
  84.       dw    @Y
  85.      endif
  86.     endm
  87.  
  88. xbbb    macro    @W,@Y,@Z
  89.      if    NUL @Z
  90.       @A    set    0
  91.       irpc    @X,@Y
  92.        @A    set @A+1
  93.       endm
  94.       if    @A=1
  95.        if    '&@Y'='A'
  96.         db    @W+8
  97.        else
  98.         if    @Y<256
  99.          db    @W+4,@Y
  100.         else
  101.          db    @W+12
  102.          dw    @Y
  103.         endif
  104.        endif
  105.       else    
  106.        if    @Y<256
  107.         db    @W+4,@Y
  108.        else
  109.         db    @W+12
  110.         dw    @Y
  111.        endif
  112.       endif
  113.      else
  114.       if    @Y<256
  115.        db    @W+20,@Y
  116.       else
  117.        db    @W+28
  118.        dw    @Y
  119.       endif
  120.      endif
  121.     endm
  122.  
  123. xcc    macro    @W,@Y,@Z
  124.      if    NUL @Z
  125.       if    @Y<256
  126.        db    @W+4,@Y
  127.       else
  128.        db    @W+12
  129.        dw    @Y
  130.       endif
  131.      else
  132.       if '&@Z'='#'
  133.        db    @W,@Y
  134.       else
  135.        'Error'
  136.       endif
  137.      endif
  138.     endm
  139.  
  140. xddd    macro    @W,@Y,@Z
  141.      if    NUL @Z
  142.       if    @Y<256
  143.        db    @W+4,@Y
  144.       else
  145.        db    @W+12
  146.        dw    @Y
  147.       endif
  148.      else
  149.       if    '&@Z'='#'
  150.        db    @W,@Y
  151.       else
  152.        if    @Y<256
  153.         db    @W+20,@Y
  154.        else
  155.         db    @W+28
  156.         dw    @Y
  157.        endif
  158.       endif
  159.      endif
  160.     endm
  161.  
  162.  
  163.  
  164. @adc    macro    @u,@v
  165.     xaaa    61h,@u,@v
  166.     endm
  167.  
  168. @and    macro    @u,@v
  169.     xaaa    21h,@u,@v
  170.     endm
  171.  
  172. @asl    macro    @u,@v
  173.     xbbb    2,@u,@v
  174.     endm
  175.  
  176. @bcc    macro    @u
  177.     db    90h,@u-$-1
  178.     endm
  179.  
  180. @bcs    macro    @u
  181.     db    0b0h,@u-$-1
  182.     endm
  183.  
  184. @beq    macro    @u
  185.     db    0f0h,@u-$-1
  186.     endm
  187.  
  188. @bit    macro    @u
  189.      if    @u<256
  190.       db    24h,@u
  191.      else
  192.       db    2ch
  193.       dw    @u
  194.      endif
  195.     endm
  196.  
  197. @bmi    macro    @u
  198.     db    30h,@u-$-1
  199.     endm
  200.  
  201. @bne    macro    @u
  202.     db    0d0h,@u-$-1
  203.     endm
  204.  
  205. @bpl    macro    @u
  206.     db    10h,@u-$-1
  207.     endm
  208.  
  209. @brk    macro
  210.     db    00h
  211.     endm
  212.  
  213. @bvc    macro    @u
  214.     db    50h,@u-$-1
  215.     endm
  216.  
  217. @bvs    macro    @u
  218.     db    70h,@u-$-1
  219.     endm
  220.  
  221. @clc    macro
  222.     db    018h
  223.     endm
  224.  
  225. @cld    macro
  226.     db    0d8h
  227.     endm
  228.  
  229. @cli    macro
  230.     db    058h
  231.     endm
  232.  
  233. @clv    macro
  234.     db    0b8h
  235.     endm
  236.  
  237. @cmp    macro    @u,@v
  238.     xaaa    0c1h,@u,@v
  239.     endm
  240.  
  241. @cpx    macro    @u,@v
  242.     xcc    0e0h,@u,@v
  243.     endm
  244.  
  245. @cpy    macro    @u,@v
  246.     xcc    0c0h,@u,@v
  247.     endm
  248.  
  249. @dec    macro    @u,@v
  250.     xbb    0c6h,@u,@v
  251.     endm
  252.  
  253. @dex    macro
  254.     db    0cah
  255.     endm
  256.  
  257. @dey    macro
  258.     db    088h
  259.     endm
  260.  
  261. @eor    macro    @u,@v
  262.     xaaa    41h,@u,@v
  263.     endm
  264.  
  265. @inc    macro    @u,@v
  266.     xbb    0e6h,@u,@v
  267.     endm
  268.  
  269. @inx    macro
  270.     db    0e8h
  271.     endm
  272.  
  273. @iny    macro
  274.     db    0c8h
  275.     endm
  276.  
  277. @jmp    macro    @u
  278.     @A    set 0
  279.      irpc    @X,@u
  280.       if    '&@X'='('
  281.        @A    set 20h
  282.       endif
  283.      endm
  284.     db    4ch+@A
  285.     dw    @U
  286.     endm
  287.  
  288. @jsr    macro    @u
  289.     db    20h
  290.     dw    @u
  291.     endm
  292.  
  293. @lda    macro    @u,@v
  294.     xaaa    0a1h,@u,@v
  295.     endm
  296.  
  297. @ldx    macro    @u,@v
  298.     xddd    0a2h,@u,@v
  299.     endm
  300.  
  301. @ldy    macro    @u,@v
  302.     xddd    0a0h,@u,@v
  303.     endm
  304.  
  305. @lsr    macro    @u,@v
  306.     xbbb    42h,@u,@v
  307.     endm
  308.  
  309. @nop    macro
  310.     db    0eah
  311.     endm
  312.  
  313. @ora    macro    @u,@v
  314.     xaaa    1,@u,@v
  315.     endm
  316.  
  317. @pha    macro
  318.     db    048h
  319.     endm
  320.  
  321. @php    macro
  322.     db    008h
  323.     endm
  324.  
  325. @pla    macro
  326.     db    068h
  327.     endm
  328.  
  329. @plp    macro
  330.     db    028h
  331.     endm
  332.  
  333. @rol    macro    @u,@v
  334.     xbbb    22h,@u,@v
  335.     endm
  336.  
  337. @ror    macro    @u,@v
  338.     xbbb    62h,@u,@v
  339.     endm
  340.  
  341. @rti    macro
  342.     db    040h
  343.     endm
  344.  
  345. @rts    macro
  346.     db    060h
  347.     endm
  348.  
  349. @sbc    macro    @u,@v
  350.     xaaa    0e1h,@u,@v
  351.     endm
  352.  
  353. @sec    macro
  354.     db    038h
  355.     endm
  356.  
  357. @sed    macro
  358.     db    0f8h
  359.     endm
  360.  
  361. @sei    macro
  362.     db    078h
  363.     endm
  364.  
  365. @sta    macro    @u,@v
  366.     xaaa    81h,@u,@v
  367.     endm
  368.  
  369. @stx    macro    @u,@v
  370.     xbb    86h,@u,@v
  371.     endm
  372.  
  373. @sty    macro    @u,@v
  374.     xbb    84h,@u,@v
  375.     endm
  376.  
  377. @tax    macro
  378.     db    0aah
  379.     endm
  380.  
  381. @tay    macro
  382.     db    0a8h
  383.     endm
  384.  
  385. @tsx    macro
  386.     db    0bah
  387.     endm
  388.  
  389. @txa    macro
  390.     db    08ah
  391.     endm
  392.  
  393. @txs    macro
  394.     db    09ah
  395.     endm
  396.  
  397. @tya    macro
  398.     db    098h
  399.     endm
  400.  
  401. @skip1    macro
  402.     db    024h
  403.     endm
  404.  
  405. @skip2    macro
  406.     db    02ch
  407.     endm
  408.