home *** CD-ROM | disk | FTP | other *** search
- ;
- ; test.p -- test
- ;
-
- include 'include.i'
- include 'offsets.i'
- include 'macro.i'
-
- SysBase equ 4
-
- ; point
-
- X equ 0
- Y equ 2
-
- ; window
-
- XL equ 0
- YB equ 2
- XR equ 4
- YT equ 6
-
- ; vars
-
- lastvar set 0
-
- var.l IntuitionBase
- var.l GfxBase
- var.l screen
- var.l rp
- var.w line,4
- var.w rndseed
-
- ;
-
- start link vr,#lastvar ; alloc & clear vars
- move.w #-lastvar/2,d0
- lea lastvar(vr),a0
- bra.s 001$
- 000$ clr.w (a0)+
- 001$ dbra d0,000$
-
- lea GfxName(pc),a1 ; open graphics
- moveq #0,d0
- call SysBase,OpenLibrary
- move.l d0,GfxBase(vr)
- beq exit
-
- lea IntuitionName(pc),a1 ; open intuition
- moveq #0,d0
- call OpenLibrary
- move.l d0,IntuitionBase(vr)
- beq exit
-
- move.l d0,a6 ; open screen
- lea newscr(pc),a0
- call OpenScreen
- move.l d0,screen(vr)
- beq exit
-
- move.l d0,a0 ; get RastPort address
- lea sc_RastPort(a0),a0
- move.l a0,rp(vr)
-
- move.w #7051,rndseed(vr) ; init rndseed
-
- lea wind(pc),a2 ; load window ptr
-
- move.l GfxBase(vr),a6
-
- moveq #1,d0
- move.l rp(vr),a1
- call SetAPen
- move.l #RP_COMPLEMENT,d0
- move.l rp(vr),a1
- call SetDrMd
-
- move.w #319,d2 ; draw 10000 lines
-
- yyy move.w d2,line(vr)
- move.w #0,line+2(vr)
- move.w #319,line+4(vr)
- sub.w d2,line+4(vr)
- move.w #255,line+6(vr)
- lea line(vr),a0
- lea line+4(vr),a1
- bsr clip
- dbra d2,yyy
-
- move.w #255,d2
-
- aaa move.w #0,line(vr)
- move.w d2,line+2(vr)
- move.w #319,line+4(vr)
- move.w #255,line+6(vr)
- sub.w d2,line+6(vr)
- lea line(vr),a0
- lea line+4(vr),a1
- bsr clip
- bbb dbra d2,aaa
-
-
- moveq #100,d2 ; wait 2 seconds
- zzz call WaitTOF
- dbra d2,zzz
-
- exit tst.l IntuitionBase(vr) ; test intuition
- beq.s 000$
- tst.l screen(vr) ; test screen
- beq.s 001$
- move.l screen(vr),a0 ; close screen
- call IntuitionBase(vr),CloseScreen
- 001$ move.l IntuitionBase(vr),a1 ; close intuition
- call SysBase,CloseLibrary
- 000$ tst.l GfxBase(vr) ; test graphics
- beq.s 002$
- move.l GfxBase(vr),a1 ; close graphics
- call SysBase,CloseLibrary
- unlk vr ; restore stack
- moveq #0,d0 ; exit(0)
- 002$ rts
-
- rnd
- {
- rndseed(vr) d0 rndseed(vr) = #31421 * #6927 + = .
- d0 #320 / % .
- }
- rts
-
- ; code (a0),(a2) -> d0 -- calculate visibility code for clip
-
- code moveq #0,d0
- {
- d0 X(a0) = XL(a2) == .
- iflt d0 #16 <1 . else
- d0 XR(a2) == . ifgt d0 #17 <1 . then then
-
- d0 Y(a0) = YB(a2) == .
- iflt d0 #18 <1 . else
- d0 YT(a2) == . ifgt d0 #19 <1 . then then
- d0 % .
- }
- rts
-
- ; clip (a0)-(a1),(a2) ->d0 -- clip line (a0)-(a1) to window (a2), d0=0 if succ
-
- clip movem.l d2-d5,-(sp)
-
- bsr code
- exg.l a1,a0
- move.w d0,d1
- bsr code
- {
- begin
-
- d3 d0 = d1 & .
- }
- bne exclip
- {
- d0 0= . ifeq a0 a1 :=: . d0 d1 :=: . then
- d0 0= .
- while
- d0 #0 <? . ifne
- Y(a0) d3 Y(a1) = Y(a0) -
- d4 XL(a2) = X(a0) -
- d5 X(a1) = X(a0) - */ + .
- X(a0) XL(a2) = .
- else d0 #1 <? . ifne
- Y(a0) d3 Y(a1) = Y(a0) -
- d4 XR(a2) = X(a0) -
- d5 X(a1) = X(a0) - */ + .
- X(a0) XR(a2) = .
- else d0 #2 <? . ifne
- X(a0) d3 X(a1) = X(a0) -
- d4 YB(a2) = Y(a0) -
- d5 Y(a1) = Y(a0) - */ + .
- Y(a0) YB(a2) = .
- else d0 #3 <? . ifne
- X(a0) d3 X(a1) = X(a0) -
- d4 YT(a2) = Y(a0) -
- d5 Y(a1) = Y(a0) - */ + .
- Y(a0) YT(a2) = .
- then then then then
- }
- bsr code
- {
- repeat
- }
- move.l a1,-(sp) ; draw line
- movem.w (a0),d0-d1
- move.l rp(vr),a1
- call Move
- move.l (sp)+,a0
- movem.w (a0),d0-d1
- move.l rp(vr),a1
- call Draw
- exclip movem.l (sp)+,d2-d5
-
- rts
-
- ; data
-
- newscr dc.w 0,0,320,256, ; left top widht height
- dc.w 2, ; depth
- dc.b 0,1, ; detailpen blockpen
- dc.w 0,CUSTOMSCREEN, ; wiewmodes type
- dc.l font, ; font
- dc.l title, ; title
- dc.l 0,0 ; gadgets custombitmap
-
- font dc.l fontnam,
- dc.w TOPAZ_EIGHTY,
- dc.b FS_NORMAL,FPF_ROMFONT
-
- wind dc.w 50,50,270,205
-
- IntuitionName
- dc.b 'intuition.library',0
- GfxName dc.b 'graphics.library',0
-
- title dc.b 'Test screen',0
- fontnam dc.b 'topaz.font',0
-
- ds.w 0
-
- end
-
-