Skip to content

Instantly share code, notes, and snippets.

@DuoSRX
Created April 11, 2012 23:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DuoSRX/2363468 to your computer and use it in GitHub Desktop.
Save DuoSRX/2363468 to your computer and use it in GitHub Desktop.
random dcpu16 stuff
set a, data
jsr strlen
set b, a
set a, data
jsr reverse
jsr print
set PC, end
; reverse the string in place at [a], of len b
:reverse
set PUSH, a
sub b, 1; len - 1
set i, 0; start
set a, POP
:doreverse
ifg i, b
set PC, POP
set x, a
add x, i
set y, a
add y, b
set c, [x]
set [x], [y]
set [y], c
add i, 1
sub b, 1
set PC, doreverse
:strlen
set i, 0
:docount
ife [a], 0x0
set PC, countend
add i, 1
add a, 1
set PC, docount
:countend
set a, i
set PC, POP
; print the string at [a] ending with 0x0
:print
set PUSH, a
set i, 0
:doprint
ife [a], 0x0
set PC, printend
set [0x8000+i], [a]
add i, 1
add a, 1
set PC, doprint
:printend
set a, POP
set PC, POP
:end
set PC, end
:data
dat "Hello world"
:itoa
set j, 0 ;index
set z, 48
set i, a
mod i, 10
div a, 10
add z, i
set [0x1000+j], z
add j, 1
set z, 48
ifg a, 0
sub PC, 11
set [0x1000+j], 0x0
set PC, POP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment