diff options
| author | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-08-27 21:22:55 +1000 |
|---|---|---|
| committer | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-08-27 21:22:55 +1000 |
| commit | 634681ce2bb36cd686943102a0f071cd6a09049f (patch) | |
| tree | 6710047aa231d50f57114bdd54a27c559fb20a73 /ROMs/hello_c.asm | |
| parent | 94ddc02e03ab942d0c881e29053e8df3d2940c30 (diff) | |
fixed bugs and revolutionized the universe
Diffstat (limited to 'ROMs/hello_c.asm')
| -rw-r--r-- | ROMs/hello_c.asm | 220 |
1 files changed, 207 insertions, 13 deletions
diff --git a/ROMs/hello_c.asm b/ROMs/hello_c.asm index bdb32ff..da648b6 100644 --- a/ROMs/hello_c.asm +++ b/ROMs/hello_c.asm @@ -1,21 +1,215 @@ jmp _main -_main: ; int main() - mov 1, [$51FF] ; int x = 1 - mov 0, [$5201] ; int i = 0 + .include "ROMs/font.bin" +_drawChar_int_ch__int_x__int_y__int_color: + pop V0 + pop [$71FF] + pop [$7201] + pop [$7203] + pop [$7205] + push V0 + ; adjust for jmp instruction + push $1FFF + mov 2, V1 + pop V0 + add V0, V1 + mov AX, [$7207] + push [$71FF] + mov 8, V1 + pop V0 + mul V0, V1 + mov AX, [$7209] + mov 0, [$720B] _body_1: - push [$5201] ; left operand - mov 10, V1 ; right operand - pop V0 ; get left operand back - lt V0, V1 ; compute less than check + push [$720B] + mov 8, V1 + pop V0 + lt V0, V1 + not LX + bz + jmp _end_2 + push [$7207] + push [$7209] + mov [$720B], V1 + pop V0 + add V0, V1 + mov AX, V1 + pop V0 + mul V1, 1 + add AX, V0 + mov AX, V0 + mov [V0], [$720D] + mov 0, [$720F] +_body_3: + push [$720F] + mov 8, V1 + pop V0 + lt V0, V1 not LX bz - jmp _end_2 ; if for condition fails, jump to end - mult [$51FF], 2 ; compute multiplication - mov AX, [$51FF] ; store back into left param - push [$5201] ; i++ - inc [$5201] + jmp _end_4 + push [$720D] + push 7 + mov [$720F], V1 + pop V0 + sub V0, V1 + mov AX, V1 pop V0 + shr V0, V1 + push DX + mov 1, V1 + pop V0 + and V0, V1 + mov DX, [$7211] + bz [$7211] + jmp _then_5 + mov [$7205], V0 + jmp _end_6 +_then_5: + mov 0, V0 +_end_6: + mov V0, [$7213] + push [$7213] + push [$7203] + mov [$720B], V1 + pop V0 + add V0, V1 + push AX + push [$7201] + mov [$720F], V1 + pop V0 + add V0, V1 + push AX + call _setPixel_int_x__int_y__int_c + push [$720F] + inc [$720F] + pop V0 + jmp _body_3 +_end_4: + push [$720B] + inc [$720B] + pop V0 + jmp _body_1 _end_2: - mov 0, V0 ; fallback return 0 + mov 0, V0 + ret + +_setPixel_int_x__int_y__int_c: + pop V0 + pop [$7215] + pop [$7217] + pop [$7219] + push V0 + mov $402F, [$721B] + push [$7217] + mov 128, V1 + pop V0 + mul V0, V1 + push AX + mov [$7215], V1 + pop V0 + add V0, V1 + mov AX, [$721D] + push [$721B] + mov [$721D], V1 + pop V0 + mul V1, 1 + add AX, V0 + mov AX, V0 + movb [$7219], [V0] + mov 0, V0 + ret + +_clear_int_c: + pop V0 + pop [$721F] + push V0 + mov $402F, [$7221] + push 64 + mov 128, V1 + pop V0 + mul V0, V1 + mov AX, [$7223] + mov 0, [$7225] +_body_7: + push [$7225] + mov [$7223], V1 + pop V0 + lt V0, V1 + not LX + bz + jmp _end_8 + push [$7221] + mov [$7225], V1 + pop V0 + mul V1, 1 + add AX, V0 + mov AX, V0 + movb [$721F], [V0] + push [$7225] + inc [$7225] + pop V0 + jmp _body_7 +_end_8: + mov 0, V0 + ret + +_main: + mov 1, [$7227] + mov 72, [$722B] + mov 69, [$722D] + mov 76, [$722F] + mov 76, [$7231] + mov 79, [$7233] + mov 32, [$7235] + mov 87, [$7237] + mov 79, [$7239] + mov 82, [$723B] + mov 76, [$723D] + mov 68, [$723F] + mov 33, [$7241] + mov $722B, [$7229] + mov 12, [$7243] + push 0 + call _clear_int_c +_body_9: + not 1 + bz + jmp _end_10 + mov 0, [$7245] +_body_11: + push [$7245] + mov [$7243], V1 + pop V0 + lt V0, V1 + not LX + bz + jmp _end_12 + push [$7229] + mov [$7245], V1 + pop V0 + mul V1, 2 + add AX, V0 + mov AX, V0 + mov [V0], [$7247] + push [$7227] + push 0 + push [$7245] + mov 8, V1 + pop V0 + mul V0, V1 + push AX + push [$7247] + call _drawChar_int_ch__int_x__int_y__int_color + push [$7245] + inc [$7245] + pop V0 + jmp _body_11 +_end_12: + push [$7227] + inc [$7227] + pop V0 + jmp _body_9 +_end_10: + mov 0, V0 ret |
