wip drawing apps
This commit is contained in:
parent
77033e121b
commit
c71254f351
|
@ -265,6 +265,7 @@ void register_sdl_devices(VM *vm) {
|
|||
&keyboard_ops);
|
||||
}
|
||||
|
||||
#ifdef ASM_DEBUG
|
||||
const char *opcode_to_string(Opcode op) {
|
||||
static const char *names[] = {[OP_HALT] = "halt",
|
||||
[OP_JMP] = "jump",
|
||||
|
@ -344,6 +345,7 @@ const char *opcode_to_string(Opcode op) {
|
|||
const char *name = names[op];
|
||||
return name ? name : "<unknown-opcode>";
|
||||
}
|
||||
#endif
|
||||
|
||||
i32 main(i32 argc, char *argv[]) {
|
||||
bool gui_mode = false;
|
||||
|
|
|
@ -8,93 +8,121 @@
|
|||
; draw to the device because otherwise the screen wont open
|
||||
(syscall WRITE $0 $0 $0)
|
||||
|
||||
; first row
|
||||
(load $1 &BLACK)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
(load-immediate $16 &mouse-namespace)
|
||||
(load-immediate $3 12) ; malloc sizeof mouse data
|
||||
(malloc $4 $3)
|
||||
|
||||
(load $1 &WHITE)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
(label draw-loop
|
||||
; load mouse click data
|
||||
(syscall READ $16 $2 $3 $4)
|
||||
(load-immediate $5 4) ; offset for x
|
||||
(add-nat $6 $5 $2)
|
||||
(load-r $7 $6) ; load x
|
||||
(load-immediate $5 8) ; offset for y
|
||||
(add-nat $6 $5 $2)
|
||||
(load-r $8 $6) ; load y
|
||||
(load-immediate $5 12) ; offset for btn1
|
||||
(add-nat $6 $5 $2)
|
||||
(load-r8 $9 $6) ; load btn1 pressed
|
||||
(load-immediate $5 13) ; offset for btn2
|
||||
(add-nat $6 $5 $2)
|
||||
(load-r8 $10 $6) ; load btn2 pressed
|
||||
|
||||
; row 2
|
||||
(load $1 &CHARCOAL)
|
||||
(push $1)
|
||||
(load-immediate $1 30)
|
||||
(push $1)
|
||||
(load-immediate $1 40)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
; first row
|
||||
(load $1 &BLACK)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
(load $1 &DARK-GRAY)
|
||||
(push $1)
|
||||
(load-immediate $1 10)
|
||||
(push $1)
|
||||
(load-immediate $1 40)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
(load $1 &WHITE)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
; row 3
|
||||
(load $1 &RED)
|
||||
(push $1)
|
||||
(load-immediate $1 30)
|
||||
(push $1)
|
||||
(load-immediate $1 60)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
; row 2
|
||||
(load $1 &CHARCOAL)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
(load $1 &ORANGE)
|
||||
(push $1)
|
||||
(load-immediate $1 10)
|
||||
(push $1)
|
||||
(load-immediate $1 60)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
(load $1 &DARK-GRAY)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
; row 3
|
||||
(load $1 &YELLOW)
|
||||
(push $1)
|
||||
(load-immediate $1 30)
|
||||
(push $1)
|
||||
(load-immediate $1 80)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
; row 3
|
||||
(load $1 &RED)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(load-immediate $1 41)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
(load $1 &GREEN)
|
||||
(push $1)
|
||||
(load-immediate $1 10)
|
||||
(push $1)
|
||||
(load-immediate $1 80)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
(load $1 &ORANGE)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(load-immediate $1 41)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
; row 4
|
||||
(load $1 &BLUE)
|
||||
(push $1)
|
||||
(load-immediate $1 30)
|
||||
(push $1)
|
||||
(load-immediate $1 100)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
; row 3
|
||||
(load $1 &YELLOW)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(load-immediate $1 61)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
(load $1 &PURPLE)
|
||||
(push $1)
|
||||
(load-immediate $1 10)
|
||||
(push $1)
|
||||
(load-immediate $1 100)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
(load $1 &GREEN)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(load-immediate $1 61)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
; row 4
|
||||
(load $1 &BLUE)
|
||||
(push $1)
|
||||
(load-immediate $1 1)
|
||||
(push $1)
|
||||
(load-immediate $1 81)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
(load $1 &PURPLE)
|
||||
(push $1)
|
||||
(load-immediate $1 21)
|
||||
(push $1)
|
||||
(load-immediate $1 81)
|
||||
(push $1)
|
||||
(call &draw-outlined-swatch)
|
||||
|
||||
(syscall WRITE $0 $0 $0)
|
||||
(jump-eq-nat &draw-loop $9 $11)
|
||||
|
||||
; if click on box then switch color
|
||||
|
||||
; else draw the pixel
|
||||
|
||||
(jump-eq-nat &draw-loop $10 $11))
|
||||
|
||||
; Flush and halt
|
||||
(syscall WRITE $0 $0 $0)
|
||||
(halt))
|
||||
|
||||
(label draw-outlined-swatch
|
||||
|
@ -146,6 +174,10 @@
|
|||
(load-immediate $1 12) ; offset for width
|
||||
(add-nat $19 $18 $1)
|
||||
(load-r $2 $19) ; load width
|
||||
(load-immediate $1 4) ; offset for width
|
||||
(add-nat $19 $18 $1)
|
||||
(load-r $21 $19) ; load base pointer
|
||||
(add-nat $21 $21 $1) ; need to add offset for fat pointer size
|
||||
|
||||
; Constants
|
||||
(load-immediate $1 1) ; increment
|
||||
|
@ -153,6 +185,7 @@
|
|||
; Compute start address: base + y*640 + x
|
||||
(mul-int $15 $13 $2) ; $15 = y * 640
|
||||
(add-int $15 $15 $11) ; $15 += x
|
||||
(add-nat $15 $21 $15) ; $15 = base + pixel_offset
|
||||
(register-move $4 $15)
|
||||
|
||||
; Outer loop: height times
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
(load-immediate $1 12) ; offset for width
|
||||
(add-nat $19 $18 $1)
|
||||
(load-r $20 $19) ; load width
|
||||
(load-immediate $1 4) ; offset for width
|
||||
(add-nat $19 $18 $1)
|
||||
(load-r $21 $19) ; load base pointer
|
||||
(add-nat $21 $21 $1) ; need to add offset for fat pointer size
|
||||
|
||||
(load-immediate $16 &mouse-namespace)
|
||||
(load-immediate $3 12) ; malloc sizeof mouse data
|
||||
|
@ -32,33 +36,13 @@
|
|||
(load-immediate $5 13) ; offset for btn2
|
||||
(add-nat $6 $5 $2)
|
||||
(load-r8 $10 $6) ; load btn2 pressed
|
||||
(load-r $12 $5) ; load x
|
||||
|
||||
(jump-eq-nat &draw-loop $9 $11)
|
||||
|
||||
;;(nat-to-string $1 $7)
|
||||
;;(push $1)
|
||||
;;(call &println)
|
||||
;;
|
||||
;;(nat-to-string $1 $8)
|
||||
;;(push $1)
|
||||
;;(call &println)
|
||||
;;
|
||||
;;(nat-to-string $1 $9)
|
||||
;;(push $1)
|
||||
;;(call &println)
|
||||
;;
|
||||
;;(nat-to-string $1 $10)
|
||||
;;(push $1)
|
||||
;;(call &println)
|
||||
;;
|
||||
;;(nat-to-string $1 $12)
|
||||
;;(push $1)
|
||||
;;(call &println)
|
||||
|
||||
; Compute start address: y*width + x
|
||||
(mul-nat $15 $8 $20) ; $15 = y * width
|
||||
(add-nat $15 $15 $7) ; $15 += x
|
||||
(add-nat $15 $21 $15) ; $15 = base + pixel_offset
|
||||
|
||||
(load $3 &WHITE) ; color
|
||||
(store-8 $15 $3) ; draw color at screen [x,y]
|
||||
|
|
Loading…
Reference in New Issue