Files
2d_display_engine-new/firmware/test.s
Matthias Blankertz 1807fb99b5 - Replaced cache with simpler wishbone-memory bridge
- Redesign wishbone interconnect
- Changed wb_ddr_ctrl_wb_sc to allow easier addition of ports
2013-06-04 23:18:16 +02:00

73 lines
1.2 KiB
ArmAsm

.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