 ;-----------------------------\
 ;escape 4k demo                 \
 ;made for code craft contest      \
 ;code - tom/kulture 1999            \
 ;------------------------------------ \

 ;extro part---------------------------------------------------------------|
 ldr pc,extro_go
.extro_go
 dcd draw_screen
.draw_screen
 ;
 ldr r1,work
.e_waitv
 ldr r0,show
 cmp r0,r1
 ;if the shown bank is the one we are about to write on we must wait..
 beq e_waitv
 ;
 mov r0,#112
 swi OS_Byte
 swi 256+12

 ;plot the text...
 adr r1,e_fname
 mov r2,#64*16
 mov r3,#64*16
 mov r4,#0
 mov r5,#0
 swi Font_FindFont
 mov r12,r0
 adr r0,e_colour
 mov r1,#10
 swi OS_WriteN
 mov r0,r12
 adr r1,e_text
 mov r2,#20
 mov r3,#64
 mov r4,#200
 swi Font_Paint
 swi Font_LoseFont

 ldr r12,video
 ldr r0,work
 sub r0,r0,#1
 mov r1,r0,lsl #8
 add r1,r1,r0,lsl #6
 add r12,r12,r1,lsl #8

 ;Plot a julia set on the screen.....
 mvn r0,#2<<14 ;x
 mvn r1,#2<<14 ;y
 mov r14,#yscreen
.j_yloop
 mov r13,#xscreen
.j_xloop
 mov r2,#16
 mov r3,r0
 mov r4,r1
.fractal_loop
 mov r3,r3,asr #7
 mul r5,r3,r3
 mov r4,r4,asr #7
 mul r6,r4,r4
 mul r3,r4,r3
 mov r3,r3,lsl #1
 sub r4,r5,r6
 add r5,r5,r6
 cmp r5,#4*16384
 bge fractal_out
 add r3,r3,#16384/2
 add r4,r4,#16384/4
 subs r2,r2,#1
 bne fractal_loop
.fractal_out
 rsb r2,r2,#16
 mov r2,r2,lsl #4
 ldrb r3,[r12]
 add r3,r3,r2
 cmp r3,#255
 movgt r3,#255
 strb r3,[r12],#1

 add r0,r0,#(4*16384)/xscreen
 subs r13,r13,#1
 bne j_xloop
 mvn r0,#2<<14
 add r1,r1,#(4*16384)/yscreen
 subs r14,r14,#1
 bne j_yloop

 ldr r1,work
 subs r1,r1,#1
 moveq r1,#3
 str r1,work

 adr r0,extro_main
 str r0,extro_go
 b loop

.extro_main

 ldr r12,counter
.wait_loop
 ldr r0,counter
 sub r1,r0,r12
 cmp r1,#5
 ble wait_loop
 mov r12,r0
 cmp r0,#4096+2048+2048
 bge int_off
 b blur

.e_fname
 dcb "Homerton.Bold",0
 align
.e_colour
 dcb 23,25,128,1,1,1,1,1,1,128
 align
.e_text
 dcb "kulture",0
 align
