# main.asm.rb $gp0 = 0x1F801810 $gp1 = 0x1F801814 jmp l_start nop label :hello_world string "ello wrld!\n" label :printf addiu r0, 0xa0, at # address of bios func jr at addiu r0, 0x3f, t1 # printf number label :draw_line # todo: draw line function, take args in a0 - a3 # tood: implement shift left so we can use that lwi $gp0, t0 lwi 0x40_ffffff, t1 # monochrome line, color ffffff sw t1, 0, t0 # lwi st, t1 # line vert 1 sw t1, 0, t0 # lwi en, t1 # line vert 2 sw t1, 0, t0 label :start nop ; nop ; nop ; nop # THIS IS NEEDED lwi $gp1, t0 lwi 0x03_00_00_00, t1 # display enable sw t1, 0, t0 lwi $gp0, t0 lwi 0xe1_000000 + 0b0_0_0_1_0_01_00_0_0000, t1 sw t1, 0, t0 # THIS IS NEEDED lwi 0xe4_000000 + (640) + (480 << 10), t1 # Drawing Area bottom right sw t1, 0, t0 def line(st, en) lwi 0x40_ffffff, t1 # monochrome line, color ffffff sw t1, 0, t0 lwi st, t1 # line vert 1 sw t1, 0, t0 lwi en, t1 # line vert 2 sw t1, 0, t0 end line 0x0010_0010, 0x0030_0030 line 0x0030_0030, 0x0060_0000 line 0x0060_000a, 0x00f0_0060 lwi l_hello_world, a0 jal l_printf addiu sp, -16, sp # delay slot addiu sp, 16, sp label :end_loop lwi l_end_loop, t9 jr t9 nop