- Redesign wishbone interconnect - Changed wb_ddr_ctrl_wb_sc to allow easier addition of ports
73 lines
1.2 KiB
ArmAsm
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
|