
 #name Rays

 ;*************************************************************************
 #set xscreen = 320
 #set yscreen = 256
 #set xres = 160
 #set yres = 128
 #set sq_max = 512*512

 ;-----------------------------------------------------------------------
 ;Memory setup

 ;Claim screen memory
 mov r0,#2
 swi OS_ReadDynamicArea
 mov r0,#2
 rsbs r2,r1,#xscreen*yscreen*4*3
 mov r1,r2
 swigt XOS_ChangeDynamicArea

 ;Claim wimpslot
 mov r0,#2048*1024
 mvn r1,#0
 swi Wimp_SlotSize

 ;-----------------------------------------------------------------------
 ;Video setup

 ;Set mode
 mov r0,#0
 adr r1,mode
 swi OS_ScreenMode
 swi OS_RemoveCursors

 ;Get video ram base
 mov r0,#2
 swi OS_ReadDynamicArea
 str r0,video

 ;-----------------------------------------------------------------------
 ;Interrupts

 ;Ticker
 mov r0,#&1C
 adr r1,ticker
 mov r2,#007
 swi OS_Claim

 ;Start up the triple buffering
 mov r0,#&10
 adr r1,vbl
 mov r2,#&D09E
 swi OS_Claim
 ;ensure event is enabled
 mov r0,#&e
 mov r1,#4
 swi OS_Byte

 ;*************************************************************************
 ;include lookup code
 #include "<raysold$dir>.lookup"

 b main_loop

.mode
 dcd 1
 dcd xscreen
 dcd yscreen
 dcd 5
 dcd -1
 dcd -1
 dcd 255
 dcd -1

.main_loop
 ;check escape
 mov r0,#121
 mov r1,#240
 swi OS_Byte
 cmp r1,#&ff
 beq exit


 ;Setup stuff to call effect
 ;video base
 ldr r12,video
 ;set current and previous screens..
 ldr r0,work
 sub r0,r0,#1
 mov r1,#320*256*4
 mul r0,r1,r0
 add r12,r12,r0

 ;Check to see if the write to bank is set to the one still shown
 ldr r0,work
.wait_v_loop
 ldr r1,show
 cmp r0,r1
 beq wait_v_loop

 ldr pc,effect

.effect
 dcd tracer

.work
 dcd 2
.show
 dcd 3
.f_16384
 dcfs 16384
.f_128
 dcfs 128


 ;*************************************************************************
 ;include system code
 #include "<raysold$dir>.system"

 ;*************************************************************************
 ;include effects
 #include "<raysold$dir>.tracer"
 ;*************************************************************************
.video
 dcd 0
.sqr
 dcd 0
.bss

