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

  1. * include file for Amiga metacc macro assembler *
  2. * created 21.01.89 TM - Supervisor Software *
  3. * for handling Graphics events *
  4.  
  5.  
  6. *T
  7. *T    GFXLIB.I * Metacc Include File
  8. *T        Version 1.02
  9. *T           Date 12.07.89
  10. *T
  11.  
  12. ;"drawrect, text, setmask, drawarray [MDAR]" created
  13. ;    -> v1.00 05.03.1989
  14. ;"drawarray [TF]" created -> v1.01 15.06.89
  15. ;"drawarray [BPW]" created -> v1.02 12.07.89
  16.  
  17. *B
  18.  
  19. ;  drawrect    (draw a rectangle)
  20. ;  in:        d0=x1, d1=y1, d2=x2, d3=y2; a1=rport;
  21. ;  call:    gfxlib    drawrect;
  22. ;  notes:    /the drawing pen will be left into/
  23. ;          /position (x1,y1)./
  24.  
  25. ;  text        (write text into a rastport)
  26. ;  in:        d0=x, d1=y; a0=*string; a1=rport;
  27. ;  call:    gfxlib    text;
  28. ;  notes:    /remember the baseline in Y/
  29.  
  30. ;  setmask    (set a drawing mask into a rastport)
  31. ;  in:        d0=mask; a1=rport;
  32. ;  call:    gfxlib    setmask;
  33.  
  34. ;  drawarray    (draw from a table of commands)
  35. ;  in:        d0=x0, d1=y0; a0=*array; a1=rport;
  36. ;  call:    gfxlib    drawarray;
  37. ;  notes:    Possible commands are (given in Ascii):
  38. ;            Mx,y    Move drawing pen to (x,y)
  39. ;            Dx,y    Draw line to (x,y)
  40. ;            Rx,y    Draw rectangle to (x,y)
  41. ;            Tl,t  Write text "t" of length l using
  42. ;            last x,y as centre
  43. ;          Fx,y    Fill rectangle to (x,y)
  44. ;          Wx,y    Fill rectangle to (x,y) with BPen,
  45. ;            draw frame to (x,y) with APen
  46. ;          Px    Set frame mode: x=0: simple,
  47. ;            x=1: double thick hor. lines
  48. ;            Ax    Set APen
  49. ;            Bx    Set BPen
  50. ;            'NUL'    End of array (a NULL char.)
  51. ;          where x and y given as signed decimal
  52. ;        (base 10) integers (coordinates relative
  53. ;        to (x0,y0)).
  54.  
  55. *E
  56.  
  57.  
  58. gfxlib        macro    name
  59.         ifnc    '\1',''
  60. _GFXF\1        set    1
  61.         bsr    _GFX\1
  62.         mexit
  63.         endc
  64.  
  65.         ifd    _GFXFsetmask
  66. _GFXsetmask    move.b    d0,24(a1)
  67.         rts
  68.         endc
  69.  
  70.         ifd    _GFXFdrawarray
  71. _GFXdrawarray    push    d0-d7/a0-a5
  72.         sub.l    a5,a5    ;frame mode = 0
  73.         move.l    a0,a2
  74.         move.l    a1,a3
  75.         move.w    d0,d4
  76.         move.w    d1,d5
  77. _GFXdrawarray1    move.b    (a2)+,d0
  78.         beq    _GFXdrawarray0
  79.         cmp.b    #'M',d0
  80.         bne.s    _GFXdrawarray2
  81.         bsr    _GFXdrawarray.b
  82.         move.w    d0,d6
  83.         move.w    d1,d7
  84.         move.l    a3,a1
  85.         lib    Gfx,Move
  86.         bra.s    _GFXdrawarray1
  87. _GFXdrawarray2    cmp.b    #'D',d0
  88.         bne.s    _GFXdrawarray3
  89.         bsr    _GFXdrawarray.b
  90.         move.l    a3,a1
  91.         lib    Gfx,Draw
  92.         bra.s    _GFXdrawarray1
  93. _GFXdrawarray3    cmp.b    #'A',d0
  94.         bne.s    _GFXdrawarray4
  95.         bsr    _GFXdrawarray.a
  96.         move.l    a3,a1
  97.         lib    Gfx,SetAPen
  98.         bra.s    _GFXdrawarray1
  99. _GFXdrawarray4    cmp.b    #'R',d0
  100.         bne.s    _GFXdrawarray5
  101.         bsr    _GFXdrawarray.b
  102.         move.w    d6,d2
  103.         move.w    d7,d3
  104. _GFXdrawarray4b    move.l    a3,a1
  105.         gfxlib    drawrect
  106.         cmp.w    #0,a5    ;frame mode
  107.         beq    _GFXdrawarray1
  108.         addq.w    #1,d0    ;double frame
  109.         subq.w    #1,d2
  110.         gfxlib    drawrect
  111.         bra    _GFXdrawarray1
  112. _GFXdrawarray5    cmp.b    #'T',d0
  113.         bne.s    _GFXdrawarray6
  114.         bsr    _GFXdrawarray.a
  115.         move.l    d0,d2
  116.         mulu.w    60(a3),d0
  117.         asr.w    #1,d0
  118.         neg.w    d0
  119.         move.l    58(a3),d1
  120.         asr.w    #1,d1
  121.         neg.w    d1
  122.         add.w    d6,d0
  123.         add.w    d7,d1
  124.         add.w    62(a3),d1
  125.         move.l    a3,a1
  126.         lib    Gfx,Move
  127.         move.l    a2,a0
  128.         move.l    d2,d0
  129.         move.l    a3,a1
  130.         lib    Gfx,Text
  131.         add.w    d2,a2
  132.         bra    _GFXdrawarray1
  133. _GFXdrawarray6    cmp.b    #'F',d0
  134.         bne.s    _GFXdrawarray7
  135.         bsr    _GFXdrawarray.b
  136.         move.w    d6,d2
  137.         move.w    d7,d3
  138.         bsr    _GFXdrawarray.c
  139.         move.l    a3,a1
  140.         lib    Gfx,RectFill
  141.         bra    _GFXdrawarray1
  142. _GFXdrawarray7    cmp.b    #'B',d0
  143.         bne.s    _GFXdrawarray8
  144.         bsr    _GFXdrawarray.a
  145.         move.l    a3,a1
  146.         lib    Gfx,SetBPen
  147.         bra    _GFXdrawarray1
  148. _GFXdrawarray8    cmp.b    #'P',d0
  149.         bne.s    _GFXdrawarray9
  150.         bsr    _GFXdrawarray.a
  151.         move.l    d0,a5    ;frame mode
  152.         bra    _GFXdrawarray1
  153. _GFXdrawarray9    cmp.b    #'W',d0
  154.         bne.s    _GFXdrawarray10
  155.         bsr    _GFXdrawarray.b
  156.         move.w    d6,d2
  157.         move.w    d7,d3
  158.         bsr    _GFXdrawarray.c
  159.         push    d0-d3
  160.         move.l    a3,a1
  161.         move.b    25(a1),d6
  162.         move.b    26(a1),d0
  163.         ext.w    d0
  164.         lib    Gfx,SetAPen
  165.         peek    d0-d3
  166.         move.l    a3,a1
  167.         lib    Gfx,RectFill
  168.         move.l    a3,a1
  169.         move.b    d6,d0
  170.         ext.w    d0
  171.         lib    Gfx,SetAPen
  172.         pull    d0-d3
  173.         bra    _GFXdrawarray4b
  174. _GFXdrawarray10    ;add commands here!!!
  175.         cmp.b    #10,d0
  176.         beq    _GFXdrawarray1
  177.         cmp.b    #32,d0
  178.         beq    _GFXdrawarray1
  179. _GFXdrawarray0    pull    d0-d7/a0-a5
  180.         rts
  181. _GFXdrawarray.a    cmp.b    #'-',(a2)
  182.         bne.s    _GFXdrawarray.a3
  183.         addq.w    #1,a2
  184.         bsr.s    _GFXdrawarray.a
  185.         neg.w    d0
  186.         rts
  187. _GFXdrawarray.a3 move.w    d1,-(sp)
  188.         moveq    #0,d0
  189.         clr.w    d1
  190. _GFXdrawarray.a1 move.b    (a2)+,d1
  191.         sub.b    #'0',d1
  192.         blo.s    _GFXdrawarray.a2
  193.         cmp.b    #9,d1
  194.         bhi.s    _GFXdrawarray.a2
  195.         mulu.w    #10,d0
  196.         add.w    d1,d0
  197.         bvc.s    _GFXdrawarray.a1
  198. _GFXdrawarray.a2 move.b    -1(a2),d1
  199.         cmp.b    #',',d1
  200.         beq.s    _GFXdrawarray.a0
  201.         subq.w    #1,a2
  202. _GFXdrawarray.a0 move.w    (sp)+,d1
  203.         rts
  204. _GFXdrawarray.b    bsr    _GFXdrawarray.a
  205.         move.w    d0,d1
  206.         bsr    _GFXdrawarray.a
  207.         exg.l    d0,d1
  208.         add.w    d4,d0
  209.         add.w    d5,d1
  210.         rts
  211. _GFXdrawarray.c    cmp.w    d0,d2
  212.         bhs.s    001$
  213.         exg.l    d0,d2
  214. 001$        cmp.w    d1,d3
  215.         bhs.s    002$
  216.         exg.l    d1,d3
  217. 002$        rts
  218.         endc
  219.  
  220.         ifd    _GFXFtext
  221. _GFXtext    push    a0-a3/d0-d1
  222.         move.l    a0,a2
  223.         move.l    a1,a3
  224.         lib    Gfx,Move
  225.         move.l    a2,a0
  226.         move.l    a3,a1
  227.         moveq    #-1,d0
  228. _GFXtext1    addq.w    #1,d0
  229.         tst.b    (a2)+
  230.         bne.s    _GFXtext1
  231.         flib    Gfx,Text
  232.         pull    a0-a3/d0-d1
  233.         rts
  234.         endc
  235.  
  236.         ifd    _GFXFdrawrect
  237. _GFXdrawrect    push    a0-a2/d0-d5
  238.         move.l    a1,a2
  239.         move.w    d0,d4
  240.         move.w    d1,d5
  241.         lib    Gfx,Move
  242.         move.l    a2,a1
  243.         move.w    d2,d0
  244.         move.w    d5,d1
  245.         flib    Gfx,Draw
  246.         move.l    a2,a1
  247.         move.w    d2,d0
  248.         move.w    d3,d1
  249.         flib    Gfx,Draw
  250.         move.l    a2,a1
  251.         move.w    d4,d0
  252.         move.w    d3,d1
  253.         flib    Gfx,Draw
  254.         move.l    a2,a1
  255.         move.w    d4,d0
  256.         move.w    d5,d1
  257.         flib    Gfx,Draw
  258.         pull    a0-a2/d0-d5
  259.         rts
  260.         endc
  261.  
  262.         endm
  263.  
  264.  
  265.