home *** CD-ROM | disk | FTP | other *** search
- ; TopazTest
- ; by Preben Nielsen
- ; Assemble it as case-sensitive.
- ; OPT O+
- ; OPT O1+ ;Tells when a branch could be optimised to short
- ; OPT i+ ;Tells when '#' is probably missing
-
- TIMES =2500
-
- incdir "INCLUDE:"
- include "exec/execbase.i"
- include "exec/exec_lib.i"
- include "graphics/graphics_lib.i"
- include "intuition/intuition.i"
- include "intuition/intuition_lib.i"
- include "libraries/dos_lib.i"
- include "libraries/dosextens.i"
-
- LoadBase MACRO
- IFNC '\1','ExecBase'
- movea.l \1(PC),A6
- ENDC
- IFC '\1','ExecBase'
- movea.l 4.W,A6
- ENDC
- ENDM
- CallLib MACRO
- jsr _LVO\1(A6)
- ENDM
- Call MACRO
- bsr \1
- ENDM
- Push MACRO
- movem.l \1,-(SP)
- ENDM
- Pop MACRO
- movem.l (SP)+,\1
- ENDM
-
- LoadBase ExecBase
- suba.l A1,A1
- CallLib FindTask ;Find us
- movea.l D0,A2
- tst.l pr_CLI(A2)
- bne.S CLIAndWBStartup
- WBenchStartup lea pr_MsgPort(A2),A0
- CallLib WaitPort ;Wait for a message
- lea pr_MsgPort(A2),A0
- CallLib GetMsg ;Get the message
- move.l D0,WBenchMsg ;Save it for later reply
- CLIAndWBStartup lea DosName(PC),A1
- CallLib OldOpenLibrary
- move.l D0,DosBase
- lea GfxName(PC),A1
- CallLib OldOpenLibrary
- move.l D0,GfxBase
- lea IntName(PC),A1
- CallLib OldOpenLibrary
- move.l D0,IntBase
- LoadBase IntBase
- lea NW(PC),A0
- CallLib OpenWindow
- move.l D0,PWindow
- movea.l D0,A0
- move.l wd_RPort(A0),Rp
- LoadBase GfxBase
- lea TopazAttr(PC),A0
- CallLib OpenFont
- tst.l D0
- beq.S Exit
- movea.l D0,A0
- movea.l Rp,A1
- CallLib SetFont ;Make sure to use topaz in the right size
- bra.S Main
-
- Exit LoadBase IntBase
- FreeWindow move.l PWindow(PC),D0
- beq.S FreeInt
- movea.l D0,A0
- CallLib CloseWindow ;Close window if it is open
- FreeInt LoadBase ExecBase
- move.l IntBase(PC),D0
- beq.S FreeGfx
- movea.l D0,A1
- CallLib CloseLibrary ;Close intuition if it is open
- FreeGfx move.l GfxBase(PC),D0
- beq.S FreeDos
- movea.l D0,A1
- CallLib CloseLibrary ;Close graphics if it is open
- FreeDos move.l DosBase(PC),D0
- beq.S ReplyWB
- movea.l D0,A1
- CallLib CloseLibrary ;Close dos if it is open
- ReplyWB move.l WBenchMsg(PC),D0
- beq.S AllDone
- CallLib Forbid
- movea.l D0,A1
- CallLib ReplyMsg ;Reply WBenchMessage if we are started from WB
- AllDone rts
-
- Main LoadBase ExecBase
- CallLib Forbid
- CallLib Disable
- LoadBase GfxBase
- moveq #1,D0
- move.l Rp(PC),A1
- CallLib SetAPen
- move.w #250,D0
- moveq #30,D1
- moveq #11,D2
- lea WaitTxt(PC),A0
- Call Txt
- Call StartTimer
- move.l #TIMES,D5
- moveq #1,D6 ;Color
- bra.S ContLoop
- Loop not.b D6
- move.w D6,D0
- move.l Rp(PC),A1
- CallLib SetAPen
- moveq #8,D0
- moveq #19,D1
- move.l Rp(PC),A1
- CallLib Move
- moveq #71,D0
- lea TestTxt(PC),A0
- movea.l Rp(PC),A1
- CallLib Text
- ContLoop dbf D5,Loop
- Call EndTimer
- lea TimeTxt+13(PC),A0
- Call DecStr
- move.l #TIMES,D0
- lea TimeTxt+52(PC),A0
- Call DecStr
- moveq #1,D0
- move.l Rp(PC),A1
- CallLib SetAPen
- moveq #62,D0
- moveq #30,D1
- moveq #58,D2
- lea TimeTxt(PC),A0
- Call Txt
- LoadBase ExecBase
- CallLib Enable
- CallLib Permit
-
- GetNextMsg LoadBase ExecBase
- movea.l PWindow(PC),A0
- movea.l wd_UserPort(A0),A0
- CallLib WaitPort
- movea.l PWindow(PC),A0
- movea.l wd_UserPort(A0),A0
- CallLib GetMsg
- tst.l D0
- beq.S GetNextMsg
- movea.l D0,A1 ;Message address to A1
- move.l im_Class(A1),D2 ;Save the event class in D2
- CallLib ReplyMsg ;Reply the message
- CheckWinClose cmpi.w #CLOSEWINDOW,D2
- beq Exit ;Terminate ?
- bra.S GetNextMsg
-
- StartTimer Push D1-D7/A0-A6
- lea Stamp(PC),A0
- Call GetTime
- Pop D1-D7/A0-A6
- rts
-
- EndTimer Push D1-D7/A0-A6
- lea Stamp2(PC),A0
- Call GetTime
- LoadBase ExecBase
- moveq #0,D1
- move.b PowerSupplyFrequency(A6),D1
- move.l Minutes2(PC),D0
- sub.l Minutes(PC),D0
- mulu #60,D1
- mulu D1,D0
- add.l Ticks2(PC),D0
- sub.l Ticks(PC),D0
- Pop D1-D7/A0-A6
- rts
-
- GetTime LoadBase DosBase
- move.l A0,D1
- CallLib DateStamp ;Get current time
- rts
-
- DecStr move.b #'0',-1(A0) ;This has to be done If D0=0
- ConvertLoop tst.l D0 ;A0=end of Txtbuffer
- beq.S EndDecStr
- divu #10,D0
- swap D0
- addi.b #'0',D0
- move.b D0,-(A0)
- clr.w D0
- swap D0
- bra.S ConvertLoop
- EndDecStr rts
-
- Txt LoadBase GfxBase
- movea.l Rp(PC),A1
- CallLib Move
- move.w D2,D0
- movea.l Rp(PC),A1
- CallLib Text
- rts
-
- WaitTxt dc.b 'Please Wait'
- TestTxt dc.b 'This is a test to see how fast the Text-routine can write with Topaz-80'
- TimeTxt dc.b 'It took system ticks to write the string times'
- EVEN
-
- TopazAttr dc.l TopazName
- dc.w 8
- dc.b 0,0
-
- WBenchMsg dc.l 0
- DosBase dc.l 0
- GfxBase dc.l 0
- IntBase dc.l 0
- PWindow dc.l 0
- Rp dc.l 0
-
- Stamp ;\
- Days dc.l 0 ; \struct DateStamp Stamp;
- Minutes dc.l 0 ; /
- Ticks dc.l 0 ;/
-
- Stamp2 ;\
- Days2 dc.l 0 ; \struct DateStamp Stamp;
- Minutes2 dc.l 0 ; /
- Ticks2 dc.l 0 ;/
-
-
-
- NW dc.w 25,40,588,35
- dc.b 0,1
- dc.l CLOSEWINDOW
- dc.l WINDOWDEPTH+WINDOWDRAG+WINDOWCLOSE+ACTIVATE,0,0,NWName,0,0
- dc.w 150,50,320,200,WBENCHSCREEN
-
- TopazName dc.b 'topaz.font',0
- DosName dc.b 'dos.library',0
- GfxName dc.b 'graphics.library',0
- IntName dc.b 'intuition.library',0
- NWName dc.b ' Measuring Topaz-80 Speed ',0
- END
-
-