home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 332.lha / AmigaAsmPreprocessor_v0.2 / test.p < prev   
Text File  |  1990-01-06  |  4KB  |  228 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. {
  125.     rndseed(vr) d0 rndseed(vr) = #31421 * #6927 + = .
  126.     d0 #320 / % .
  127. }
  128.     rts
  129.  
  130. ; code (a0),(a2) -> d0 -- calculate visibility code for clip
  131.  
  132. code    moveq    #0,d0
  133. {
  134.     d0 X(a0) = XL(a2) == . 
  135.         iflt d0 #16 <1 . else
  136.             d0 XR(a2) == . ifgt d0 #17 <1 . then then 
  137.  
  138.     d0 Y(a0) = YB(a2) == . 
  139.         iflt d0 #18 <1 . else
  140.             d0 YT(a2) == . ifgt d0 #19 <1 . then then 
  141.     d0 % .
  142. }
  143.     rts
  144.  
  145. ; clip (a0)-(a1),(a2) ->d0 -- clip line (a0)-(a1) to window (a2), d0=0 if succ
  146.  
  147. clip    movem.l    d2-d5,-(sp)
  148.  
  149.     bsr    code
  150.     exg.l    a1,a0
  151.     move.w    d0,d1
  152.     bsr    code
  153. {
  154.     begin
  155.  
  156.     d3 d0 = d1 & .
  157. }
  158.     bne    exclip
  159. {
  160.     d0 0= . ifeq a0 a1 :=: . d0 d1 :=: . then
  161.     d0 0= .
  162.     while
  163.     d0 #0 <? . ifne
  164.         Y(a0) d3 Y(a1) = Y(a0) - 
  165.             d4 XL(a2) = X(a0) -
  166.             d5 X(a1) = X(a0) - */ + .
  167.         X(a0) XL(a2) = .
  168.     else d0 #1 <? . ifne
  169.         Y(a0) d3 Y(a1) = Y(a0) - 
  170.             d4 XR(a2) = X(a0) -
  171.             d5 X(a1) = X(a0) - */ + .
  172.         X(a0) XR(a2) = .
  173.     else d0 #2 <? . ifne
  174.         X(a0) d3 X(a1) = X(a0) -
  175.             d4 YB(a2) = Y(a0) -
  176.             d5 Y(a1) = Y(a0) - */ + .
  177.         Y(a0) YB(a2) = .
  178.     else d0 #3 <? . ifne
  179.         X(a0) d3 X(a1) = X(a0) -
  180.             d4 YT(a2) = Y(a0) -
  181.             d5 Y(a1) = Y(a0) - */ + .
  182.         Y(a0) YT(a2) = .
  183.     then then then then
  184. }
  185.     bsr    code
  186. {
  187.     repeat
  188. }
  189.     move.l    a1,-(sp)        ; draw line
  190.     movem.w    (a0),d0-d1
  191.     move.l    rp(vr),a1
  192.     call    Move
  193.     move.l    (sp)+,a0
  194.     movem.w    (a0),d0-d1
  195.     move.l    rp(vr),a1
  196.     call    Draw
  197. exclip    movem.l    (sp)+,d2-d5
  198.  
  199.     rts
  200.  
  201. ; data
  202.  
  203. newscr    dc.w    0,0,320,256,        ; left top widht height
  204.     dc.w    2,            ; depth
  205.     dc.b    0,1,            ; detailpen blockpen
  206.     dc.w    0,CUSTOMSCREEN,        ; wiewmodes type
  207.     dc.l    font,            ; font
  208.     dc.l    title,            ; title
  209.     dc.l    0,0            ; gadgets custombitmap
  210.  
  211. font    dc.l    fontnam,
  212.     dc.w    TOPAZ_EIGHTY,
  213.     dc.b    FS_NORMAL,FPF_ROMFONT
  214.  
  215. wind    dc.w    50,50,270,205
  216.  
  217. IntuitionName
  218.     dc.b    'intuition.library',0
  219. GfxName    dc.b    'graphics.library',0
  220.  
  221. title    dc.b    'Test screen',0
  222. fontnam    dc.b    'topaz.font',0
  223.  
  224.     ds.w    0
  225.  
  226.     end
  227.  
  228.