org 0x6001000 processor 0x6fffffe coprocessor 0x30f8 blx thumblabel thumb thumblabel: ;Display setup mov r1, 0 movt r1, 0x1002 ;LCD control registers base address mov r3, 0x3F9C movt r3, 0x3F1F str r3, [r1, 0x0] mov r3, 0x61DF movt r3, 0x090B str r3, [r1, 0x4] mov r3, 0x1800 movt r3, 0x067F str r3, [r1, 0x8] mov r2, 0 movt r2, 0x6002 ;Framebuffer str r2, [r1, 0x10] ;Store to LCDUPBASE mov r3, 0x082B str r3, [r1, 0x18] ;End of setup ;Main routine ;640x480x24 mov r7, 0 ;time drawloop: ;infinite loop mov r0, 0 ;Address mov r6, -240 ;y .y: mov r5, 320 ;x rsb r5, 0 ; -320 .x: mov r1, 0 cmp r5, 300 ;Draw IO blt .skip cmp r6, -230 bgt .skip it eq moveq r1, -1 cmp r5, 318 bgt .skip it eq moveq r1, -1 cmp r6, -240 it eq moveq r1, -1 cmp r5, 304 it eq moveq r1, -1 cmp r5, 310 it eq moveq r1, -1 cmp r1, -1 beq .draw .skip: eor r5, r5, r6 mov r3, r7 ;Turn time into a triangle wave and r3, 0xFF cmp r3, 0x80 it ge rsbge r3, 0xFF lsl r3, 3 rsb r3, 0x200 add r3, r5 mul r8, r5, r3 mul r9, r6, r6 add r1, r8, r9 lsr r1, 8 ;Zoom in sub r1, r7, lsl 2 mov r3, r1, lsr 8 and r3, 0x3 eor r5, r5, r6 lsl r3, 3 and r1, 0xFF cmp r1, 0x80 it ge rsbge r1, 0xFF lsl r1, 1 lsl r1, r3 .draw: str r1, [r2, r0] add r0, r0, 4 add r5, 1 cmp r5, 320 bne .x add r6, 1 cmp r6, 240 bne .y add r7, 1 b drawloop