.global main main: lbui r3, r0, testdata+1 swi r3, r0, 0x4000 addi r19, r0, helloworld main_loop: lbu r5, r19, r0 beqi r5, fill brlid r15, send_byte addi r19, r19, 1 # delay slot bri main_loop fill: # Clear screen addi r3, r0, 0x8000000 # r3 = address, load with FB base addi r4, r0, 0 # r4 = y ctr addi r7, r0, 0x0f000f00 # Upper/lower border addi r8, r0, 0x0000000f # Left border addi r9, r0, 0x00f00000 # Right border fill_line: addi r5, r0, 0 # r5 = x ctr fill_loop: beqi r4, border addi r6, r4, -479 beqi r6, border beqi r5, lborder addi r6, r5, -638 beqi r6, rborder brid fill_loop_end sw r0, r3, r0 border: brid fill_loop_end sw r7, r3, r0 lborder: brid fill_loop_end sw r8, r3, r0 rborder: sw r9, r3, r0 fill_loop_end: addi r3, r3, 4 addi r6, r5, -638 beqi r6, fill_loop_nextline brid fill_loop addi r5, r5, 2 fill_loop_nextline: addi r6, r4, -479 beqi r6, done brid fill_line addi r4, r4, 1 done: swi r0, r0, 0x0BFFFFFF # Force mem_bridge buffer flush idle: bri idle send_byte: lbui r3, r0, 0x4021 andi r3, r3, 0x2 # writefull bnei r3, send_byte rtsd r15, 8 sbi r5, r0, 0x4020 # delay slot .rodata helloworld: .asciz "Hello, World!(2)" .data testdata: .word 0xdeadbeef