Skip to content

Instantly share code, notes, and snippets.

@EwanFox
Created July 21, 2022 15:51
Show Gist options
  • Save EwanFox/d6aead96477fc16ece5e1f0f9de1b820 to your computer and use it in GitHub Desktop.
Save EwanFox/d6aead96477fc16ece5e1f0f9de1b820 to your computer and use it in GitHub Desktop.
BITS == 32
MINHEAP 4096
MINSTACK 1024
MOV R1 SP
CAL ._Hx4maini8
MOV SP R1
HLT
._Hx5inputvs
PSH R1
MOV R1 SP
LLOD R3 R1 2
.input_loop
IN R2 %TEXT
BRZ .input_end R2
STR R3 R2
INC R3 R3
JMP .input_loop
.input_end
MOV SP R1
POP R1
RET
._Hx5inputvi32
PSH R1
MOV R1 SP
PSH .input_int32_str
CAL ._Hx5inputvs
ADD SP SP 1
IMM R3 0
IMM R4 0
.input_int32_loop
LLOD R5 .input_int32_str R4
MLT R3 R3 10
ADD R3 R3 R5
INC R4 R4
BRL .input_int32_loop R4 20
LSTR R1 2 R3
.input_int32_str
DW [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]
MOV SP R1
POP R1
RET
._Hx7printlnvs
PSH R1
MOV R1 SP
LLOD R2 R1 2
.println_loop
LOD R3 R2
INC R2 R2
BRZ .println_end R3
OUT %TEXT R3
JMP .println_loop
.println_end
OUT %TEXT '\n'
MOV SP R1
POP R1
RET
._Hx7printlnvi32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %INT R2
OUT %TEXT '\n'
MOV SP R1
POP R1
RET
._Hx7printlnvu32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %UINT R2
OUT %TEXT '\n'
MOV SP R1
POP R1
RET
._Hx5printvs
PSH R1
MOV R1 SP
LLOD R2 R1 2
.print_loop
LOD R3 R2
INC R2 R2
BRZ .print_end R3
OUT %TEXT R3
JMP .print_loop
.print_end
MOV SP R1
POP R1
RET
._Hx5printvi32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %INT R2
MOV SP R1
POP R1
RET
._Hx5printvu32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %UINT R2
MOV SP R1
POP R1
RET
._Hx9isgamepadi32
PSH R1
MOV R1 SP
IN R2 %GAMEPAD_INFO
MOV SP R1
POP R1
RET
._Hx13enablegamepadv
PSH R1
MOV R1 SP
OUT %GAMEPAD 1
MOV SP R1
POP R1
RET
._Hx14disablegamepadv
PSH R1
MOV R1 SP
OUT %GAMEPAD 0
MOV SP R1
POP R1
RET
._Hx4maini8
PSH R1
MOV R1 SP
AND R2 0 0xffffffff
PSH R2
CAL ._Hx9isgamepadi32
ADD SP SP 0
pop r0
psh r2
LLOD R2 R1 -1
IMM R3 0
BRE .if1 R2 R3
JMP .endif1
.if1
PSH .str0
CAL ._Hx7printlnvs
ADD SP SP 1
ADD SP SP 0
.endif1
LLOD R2 R1 -1
IMM R3 1
BRE .if2 R2 R3
JMP .endif2
.if2
PSH .str1
CAL ._Hx7printlnvs
ADD SP SP 1
ADD SP SP 0
.endif2
ADD SP SP 1
MOV SP R1
POP R1
RET
.str0
DW [ "0" 0 ]
.str1
DW [ "1" 0 ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment