home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 332.lha / AmigaAsmPreprocessor_v0.2 / test.a < prev    next >
Text File  |  1990-01-06  |  4KB  |  280 lines

  1. ;
  2. ; test.p -- test
  3. ;
  4.  
  5.     include 'include.i'
  6.     include    'offsets.i'
  7.     include    'macro.i'
  8.  
  9. SysBase    equ    4
  10.  
  11. ; point
  12.  
  13. X    equ    0
  14. Y    equ    2
  15.  
  16. ; window
  17.  
  18. XL    equ    0
  19. YB    equ    2
  20. XR    equ    4
  21. YT    equ    6
  22.  
  23. ; vars
  24.  
  25. lastvar    set    0
  26.  
  27.     var.l IntuitionBase
  28.     var.l GfxBase
  29.     var.l screen
  30.     var.l rp
  31.     var.w line,4
  32.     var.w rndseed
  33.  
  34. ;
  35.  
  36. start    link    vr,#lastvar        ; alloc & clear vars
  37.     move.w    #-lastvar/2,d0
  38.     lea    lastvar(vr),a0
  39.     bra.s    001$
  40. 000$    clr.w    (a0)+
  41. 001$    dbra    d0,000$
  42.  
  43.     lea    GfxName(pc),a1        ; open graphics
  44.     moveq    #0,d0
  45.     call    SysBase,OpenLibrary
  46.     move.l    d0,GfxBase(vr)
  47.     beq    exit
  48.  
  49.     lea    IntuitionName(pc),a1    ; open intuition
  50.     moveq    #0,d0
  51.     call    OpenLibrary
  52.     move.l    d0,IntuitionBase(vr)
  53.     beq    exit
  54.  
  55.     move.l    d0,a6            ; open screen
  56.     lea    newscr(pc),a0
  57.     call    OpenScreen
  58.     move.l    d0,screen(vr)
  59.     beq    exit
  60.     
  61.     move.l    d0,a0            ; get RastPort address
  62.     lea    sc_RastPort(a0),a0
  63.     move.l    a0,rp(vr)
  64.  
  65.     move.w    #7051,rndseed(vr)    ; init rndseed
  66.  
  67.     lea    wind(pc),a2        ; load window ptr
  68.  
  69.     move.l    GfxBase(vr),a6
  70.  
  71.     moveq    #1,d0
  72.     move.l    rp(vr),a1
  73.     call    SetAPen
  74.     move.l    #RP_COMPLEMENT,d0
  75.     move.l    rp(vr),a1
  76.     call    SetDrMd
  77.  
  78.     move.w    #319,d2            ; draw 10000 lines
  79.  
  80. yyy    move.w    d2,line(vr)
  81.     move.w    #0,line+2(vr)
  82.     move.w    #319,line+4(vr)
  83.     sub.w    d2,line+4(vr)
  84.     move.w    #255,line+6(vr)
  85.     lea    line(vr),a0
  86.     lea    line+4(vr),a1
  87.     bsr    clip
  88.     dbra    d2,yyy
  89.  
  90.     move.w    #255,d2
  91.  
  92. aaa    move.w    #0,line(vr)
  93.     move.w    d2,line+2(vr)
  94.     move.w    #319,line+4(vr)
  95.     move.w    #255,line+6(vr)
  96.     sub.w    d2,line+6(vr)
  97.     lea    line(vr),a0
  98.     lea    line+4(vr),a1
  99.     bsr    clip
  100. bbb    dbra    d2,aaa
  101.  
  102.  
  103.     moveq    #100,d2            ; wait 2 seconds
  104. zzz    call    WaitTOF
  105.     dbra    d2,zzz
  106.  
  107. exit    tst.l    IntuitionBase(vr)    ; test intuition
  108.     beq.s    000$
  109.     tst.l    screen(vr)        ; test screen
  110.     beq.s    001$
  111.     move.l    screen(vr),a0        ; close screen
  112.     call    IntuitionBase(vr),CloseScreen
  113. 001$    move.l    IntuitionBase(vr),a1    ; close intuition
  114.     call    SysBase,CloseLibrary
  115. 000$    tst.l    GfxBase(vr)        ; test graphics
  116.     beq.s    002$
  117.     move.l    GfxBase(vr),a1        ; close graphics
  118.     call    SysBase,CloseLibrary
  119.     unlk    vr            ; restore stack
  120.     moveq    #0,d0            ; exit(0)
  121. 002$    rts
  122.     
  123. rnd    
  124.     move.w rndseed(vr),d0
  125.     muls.w #31421,d0
  126.     add.w #6927,d0
  127.     move.w d0,rndseed(vr)
  128.     ext.l d0
  129.     divs.w #320,d0
  130.     swap d0
  131.     rts
  132.  
  133. ; code (a0),(a2) -> d0 -- calculate visibility code for clip
  134.  
  135. code    moveq    #0,d0
  136.     move.w X(a0),d0
  137.     cmp.w XL(a2),d0
  138.     bge if.000
  139.     bset #16,d0
  140.     bra if.001
  141. if.000
  142.     cmp.w XR(a2),d0
  143.     ble if.002
  144.     bset #17,d0
  145. if.002
  146. if.001
  147.     move.w Y(a0),d0
  148.     cmp.w YB(a2),d0
  149.     bge if.003
  150.     bset #18,d0
  151.     bra if.004
  152. if.003
  153.     cmp.w YT(a2),d0
  154.     ble if.005
  155.     bset #19,d0
  156. if.005
  157. if.004
  158.     swap d0
  159.     rts
  160.  
  161. ; clip (a0)-(a1),(a2) ->d0 -- clip line (a0)-(a1) to window (a2), d0=0 if succ
  162.  
  163. clip    movem.l    d2-d5,-(sp)
  164.  
  165.     bsr    code
  166.     exg.l    a1,a0
  167.     move.w    d0,d1
  168.     bsr    code
  169. beg.006
  170.     move.w d0,d3
  171.     and.w d1,d3
  172.     bne    exclip
  173.     tst.w d0
  174.     bne if.007
  175.     exg.w a1,a0
  176.     exg.w d1,d0
  177. if.007
  178.     tst.w d0
  179.     beq whl.008
  180.     btst #0,d0
  181.     beq if.009
  182.     move.w Y(a1),d3
  183.     sub.w Y(a0),d3
  184.     move.w XL(a2),d4
  185.     sub.w X(a0),d4
  186.     move.w X(a1),d5
  187.     sub.w X(a0),d5
  188.     muls.w d4,d3
  189.     divs.w d5,d3
  190.     add.w d3,Y(a0)
  191.     move.w XL(a2),X(a0)
  192.     bra if.010
  193. if.009
  194.     btst #1,d0
  195.     beq if.011
  196.     move.w Y(a1),d3
  197.     sub.w Y(a0),d3
  198.     move.w XR(a2),d4
  199.     sub.w X(a0),d4
  200.     move.w X(a1),d5
  201.     sub.w X(a0),d5
  202.     muls.w d4,d3
  203.     divs.w d5,d3
  204.     add.w d3,Y(a0)
  205.     move.w XR(a2),X(a0)
  206.     bra if.012
  207. if.011
  208.     btst #2,d0
  209.     beq if.013
  210.     move.w X(a1),d3
  211.     sub.w X(a0),d3
  212.     move.w YB(a2),d4
  213.     sub.w Y(a0),d4
  214.     move.w Y(a1),d5
  215.     sub.w Y(a0),d5
  216.     muls.w d4,d3
  217.     divs.w d5,d3
  218.     add.w d3,X(a0)
  219.     move.w YB(a2),Y(a0)
  220.     bra if.014
  221. if.013
  222.     btst #3,d0
  223.     beq if.015
  224.     move.w X(a1),d3
  225.     sub.w X(a0),d3
  226.     move.w YT(a2),d4
  227.     sub.w Y(a0),d4
  228.     move.w Y(a1),d5
  229.     sub.w Y(a0),d5
  230.     muls.w d4,d3
  231.     divs.w d5,d3
  232.     add.w d3,X(a0)
  233.     move.w YT(a2),Y(a0)
  234. if.015
  235. if.014
  236. if.012
  237. if.010
  238.     bsr    code
  239.     bra beg.006
  240. whl.008
  241.     move.l    a1,-(sp)        ; draw line
  242.     movem.w    (a0),d0-d1
  243.     move.l    rp(vr),a1
  244.     call    Move
  245.     move.l    (sp)+,a0
  246.     movem.w    (a0),d0-d1
  247.     move.l    rp(vr),a1
  248.     call    Draw
  249. exclip    movem.l    (sp)+,d2-d5
  250.  
  251.     rts
  252.  
  253. ; data
  254.  
  255. newscr    dc.w    0,0,320,256,        ; left top widht height
  256.     dc.w    2,            ; depth
  257.     dc.b    0,1,            ; detailpen blockpen
  258.     dc.w    0,CUSTOMSCREEN,        ; wiewmodes type
  259.     dc.l    font,            ; font
  260.     dc.l    title,            ; title
  261.     dc.l    0,0            ; gadgets custombitmap
  262.  
  263. font    dc.l    fontnam,
  264.     dc.w    TOPAZ_EIGHTY,
  265.     dc.b    FS_NORMAL,FPF_ROMFONT
  266.  
  267. wind    dc.w    50,50,270,205
  268.  
  269. IntuitionName
  270.     dc.b    'intuition.library',0
  271. GfxName    dc.b    'graphics.library',0
  272.  
  273. title    dc.b    'Test screen',0
  274. fontnam    dc.b    'topaz.font',0
  275.  
  276.     ds.w    0
  277.  
  278.     end
  279.  
  280.