home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 303.lha / AssemTools / Include / com.i < prev    next >
Text File  |  1980-12-03  |  6KB  |  312 lines

  1. ; Graphics and etc. MACRO SET
  2. ; fw 1988
  3. ; Metacomco Macro Assembler
  4. ; Needs 'jmplibs.i' included
  5. ; NOTE: The "common registers" (d0-d1/a0-a1/a6-a7)
  6. ; should not be used as parameters for these macros
  7. ; to avoid confusion.
  8.  
  9. leftmouse    macro
  10.         btst    #6,$bfe001
  11.         endm
  12.  
  13. ; Usage: leftmouse [<dummy>]
  14. ; Returns the zero flag as ONE if the left mouse button was
  15. ; pressed.
  16. ; <dummy> for compatibility with former versions.
  17.  
  18.  
  19. rightmouse    macro
  20.         btst    #10,$dff016
  21.         endm
  22.  
  23. ; Usage: rightmouse
  24. ; Returns the zero flag as ONE if the right mouse button was
  25. ; pressed.
  26.  
  27.  
  28. use_text    macro
  29.         push    d0-d1/a0-a2
  30.         move.l    \1,a1
  31.         move.w    \2,d0
  32.         move.l    \4,a2
  33.         move.w    \3,d1
  34.         lib    Gfx,Move
  35.         move.l    a2,a0
  36.         moveq.l    #-1,d0
  37. use_tx\@    addq.l    #1,d0
  38.         tst.b    (a2)+
  39.         bne    use_tx\@
  40.         lib    Gfx,Text
  41.         pull    d0-d1/a0-a2
  42.         endm
  43.  
  44. ; Usage: use_text <rport>,<xco>,<yco>,<*text>
  45. ; Calculates the length of the string *text
  46. ; (until a null byte) and outputs it to po-
  47. ; sition xco,yco using Move and Text-functions
  48. ; of the Graphics library.
  49.  
  50.  
  51. alloc_mem    macro
  52.         move.l    $4,a6
  53.         move.l    \1,d0
  54.         move.l    \2,d1
  55.         jsr    _LVOAllocMem(a6)
  56.         move.l    d0,\3
  57.         endm
  58.  
  59. ; Usage: alloc_mem <size>,<type>,<*mem>
  60. ; Allocates memory and returns the pointer.
  61.  
  62.  
  63. use_setapen    macro
  64.         move.l    \1,a1
  65.         move.l    \2,d0
  66.         lib    Gfx,SetAPen
  67.         endm
  68.  
  69. use_setbpen    macro
  70.         move.l    \1,a1
  71.         move.l    \2,d0
  72.         lib    Gfx,SetBPen
  73.         endm
  74.  
  75. ;Usage:    use_setapen <rport>,<pen>
  76. ;Sets the Bg-pen (setbpen) or the Fg-pen (setapen).
  77.  
  78.  
  79. use_setmask    macro
  80.         move.l    \1,a1
  81.         move.b    \2,24(a1)
  82.         endm
  83.  
  84. ;Usage:    use_setmask <rport>,<mask>
  85. ;Sets the drawing mask for given rastport.
  86.  
  87.  
  88. use_move    macro
  89.         move.l    \1,a1
  90.         move.l    \2,d0
  91.         move.l    \3,d1
  92.         lib    Gfx,Move
  93.         endm
  94.  
  95. use_draw    macro
  96.         move.l    \1,a1
  97.         move.l    \2,d0
  98.         move.l    \3,d1
  99.         lib    Gfx,Draw
  100.         endm
  101.  
  102. ;Usage:    use_move <rport>,<xco>,<yco>
  103. ;    use_draw <rport>,<xco>,<yco>
  104. ;Moves the pixel cursor or draws a line.
  105.  
  106.  
  107. use_hrect    macro
  108.         move.l    \1,a1
  109.         move.l    \2,d0
  110.         move.l    \3,d1
  111.         lib    Gfx,Move
  112.         move.l    \2,d0
  113.         move.l    \5,d1
  114.         move.l    \1,a1
  115.         lib    Gfx,Draw
  116.         move.l    \4,d0
  117.         move.l    \5,d1
  118.         move.l    \1,a1
  119.         lib    Gfx,Draw
  120.         move.l    \4,d0
  121.         move.l    \3,d1
  122.         move.l    \1,a1
  123.         lib    Gfx,Draw
  124.         move.l    \2,d0
  125.         move.l    \3,d1
  126.         move.l    \1,a1
  127.         lib    Gfx,Draw
  128.         endm
  129.  
  130. ;Usage:    use_hrect <rport>,<xco1>,<yco1>,<xco2>,<yco2>
  131. ;Draws a hollow rectangle using Move and Draw-routines
  132.  
  133.  
  134. use_frect    macro
  135.         move.l    \1,a1
  136.         move.l    \4,d2
  137.         move.l    \5,d3
  138.         move.l    \2,d0
  139.         move.l    \3,d1
  140.         lib    Gfx,RectFill
  141.         endm
  142.  
  143. ;Usage:    use_frect <rport>,<xco1>,<yco1>,<xco2>,<yco2>
  144. ;Draws a filled rectangle using the RectFill-routine.
  145. ;NOTE: Any parameters should not be passed to this macro
  146. ;in the common registers or d2-d3 to avoid confusion.
  147.  
  148.  
  149. set_led        macro
  150.         push    d0
  151.         move.l    \1,d0
  152.         beq    \@s_led2
  153.         bpl    \@s_led1
  154.         bclr    #1,$bfe001
  155.         bra    \@s_led0
  156. \@s_led1    bset    #1,$bfe001
  157.         bra    \@s_led0
  158. \@s_led2    bchg    #1,$bfe001
  159. \@s_led0    pull    d0
  160.         endm
  161.  
  162. ;Usage:    set_led    <state>
  163. ;Sets the power indicator state. On a positive <state> the
  164. ;indicator will be turned off (A500) or dimmed (A1000/A2000).
  165. ;On a negative <state> the indicator will be brightened back.
  166. ;On a zero <state> the led will be toggled on and off.
  167.  
  168.  
  169. use_line    macro
  170.         move.l    \1,a1
  171.         move.l    \2,d0
  172.         move.l    \3,d1
  173.         lib    Gfx,Move
  174.         move.l    \1,a1
  175.         move.l    \4,d0
  176.         move.l    \5,d1
  177.         lib    Gfx,Draw
  178.         endm
  179.  
  180. ;Usage:    use_line <rport>,<x1>,<y1>,<x2>,<y2>
  181. ;Draws a straight line between points (x1,y1)
  182. ;and (x2,y2) using the routines DRAW and MOVE
  183. ;of the Gfx-library.
  184.  
  185.  
  186. use_setdrmd    macro
  187.         move.l    \1,a1
  188.         move.l    \2,d0
  189.         lib    Gfx,SetDrMd
  190.         endm
  191.  
  192. ;Usage:    use_setdrmd <rport>,<mode>
  193. ;Sets the drawing mode using the SetDrMd-routine.
  194.  
  195.  
  196. drmd_jam1    equ    0
  197. drmd_jam2    equ    1
  198. drmd_complement    equ    2
  199. drmd_inversvid    equ    4
  200.  
  201. memf_public    equ    1
  202. memf_chip    equ    2
  203. memf_fast    equ    4
  204. memf_clear    equ    1<<16
  205. memf_largest    equ    1<<17
  206.  
  207. style_bold    equ    2
  208. style_italic    equ    4
  209. style_underline    equ    1
  210.  
  211. customscreen    equ    15
  212.  
  213.  
  214. use_setrast    macro
  215.         move.l    \1,a1
  216.         move.l    \2,d0
  217.         lib    Gfx,SetRast
  218.         endm
  219.  
  220. ;Usage:    use_setrast <rport>,<color>
  221. ;Used to fill the whole rastport with any color.
  222.  
  223.  
  224. use_scrollraster macro
  225.         move.l    \1,a1
  226.         move.l    \2,d2
  227.         move.l    \3,d3
  228.         move.l    \4,d4
  229.         move.l    \5,d5
  230.         move.l    \6,d0
  231.         move.l    \7,d1
  232.         lib    Gfx,ScrollRaster
  233.         endm
  234.  
  235. ;Usage:    use_scrollraster <rport>,<x1>,<y1>,<x2>,
  236. ;    <y2>,<xd>,<yd>
  237. ;Scrolls a rectangular area of the rastport.
  238. ;Direction is specified by dx and dy. Negative
  239. ;value means down or right, positive up or left.
  240.  
  241.  
  242. use_clearvert    macro
  243.         move.l    \1,a1
  244.         move.l    4(a1),a1
  245.         move.l    (8+4*\2)(a1),a1
  246.         add.l    #\3*\5,a1
  247.         move.l    #\4*\5,d0
  248.         moveq.l    #0,d1
  249.         lib    Gfx,BltClear
  250.         endm
  251.  
  252. ;Usage:    use_clearvert <rport>,<plane#>,<ymin>,<ysiz>,<bytesperrow>
  253. ;Used to clear a vertical region of a rastport.
  254. ;plane# is the number of plane to be cleared, 
  255. ;ymin and ysiz are the utmost pixel line and number of pixel
  256. ;lines of the area to be cleared,
  257. ;bytesperrow is the number of bytes per a horizontal row
  258. ;The values plane#, ymin, ysiz and bpr must be entered as
  259. ;immediate values, but WITHOUT the hash (#) sign.
  260.  
  261.  
  262. use_loadrgb4    macro
  263.         move.l    \1,a0
  264.         move.l    \2,a1
  265.         move.l    \3,d0
  266.         lib    Gfx,LoadRGB4
  267.         endm
  268.  
  269. ;Usage:    use_loadrgb4 <vport>,<colmap>,<count>
  270. ;Loads palette for given viewport. See the
  271. ;Amiga Rom Kernel Refernce Manual: Libraries
  272. ;and Devices for further details.
  273.  
  274.  
  275. rassize        macro
  276. \1        set    \3*(((\2+15)/16)*2)
  277.         endm
  278.  
  279. ;Usage:    rassize <label>,<xsiz>,<ysiz>
  280. ;SETs the value of the label as the size of a raster
  281. ;of size (xsiz,ysiz) in words.
  282.  
  283.  
  284. use_allocraster    macro
  285.         move.l    \1,d0
  286.         move.l    \2,d1
  287.         lib    Gfx,AllocRaster
  288.         move.l    d0,\3
  289.         ifnc    '\4',''
  290.         beq    \4
  291.         endc
  292.         endm
  293.  
  294. ;Usage:    use_allocraster <wid>,<heig>,<dest>[,<cleanup>]
  295. ;Allocates a raster of size <wid>,<heig>. Pointer to
  296. ;the raster is written to the <dest>. If an error occurs,
  297. ;the program flow will be transferred to <cleanup>.
  298.  
  299.  
  300. use_freeraster    macro
  301.         move.l    \1,d0
  302.         move.l    \2,d1
  303.         move.l    \3,a0
  304.         lib    Gfx,FreeRaster
  305.         endm
  306.  
  307. ;Usage:    use_freeraster <wid>,<heig>,<pointer>
  308. ;Frees the raster allocated by the use_allocraster.
  309. ;Use the same parameters as in the use_allocraster.
  310.  
  311.