Skip to content

Instantly share code, notes, and snippets.

@alex-s168
Created May 22, 2024 11:23
Show Gist options
  • Save alex-s168/8920cbf198fbbe69e26344dc60af2e54 to your computer and use it in GitHub Desktop.
Save alex-s168/8920cbf198fbbe69e26344dc60af2e54 to your computer and use it in GitHub Desktop.
: print ( ptr len -- )
0 do
dup
i + C@
dup 0= if
drop
leave
then
emit
loop
drop
;
: readln ( ptr len -- )
0 do
key
dup 10 = if
drop
0 over C!
leave
then
over
C!
1 +
loop
drop
;
: itoa ( value base ptr len -- )
0 do
>R
dup >R
over over /
>R
mod
R> swap
R> swap
48 +
R> dup 1 + >R
C!
over 0= if
R>
dup
0 swap C!
leave
then
R>
loop
drop
drop
drop
;
: strlen ( ptr len -- len )
over swap
0 do
dup
C@
0= if
leave
then
1 +
loop
swap
-
;
: cmemswap ( a b -- )
dup C@ >R
over C@ >R
\ a b bval aval
R> swap C!
R> swap C!
;
: strrev ( ptr len -- )
dup >R
over swap strlen
1 -
over +
R> 0 do \ ptr endptr
over over = if
leave
then
over over > if
leave
then
over over cmemswap
swap 1 + swap
1 -
loop
drop drop
;
create test 10 0 do 0 c, loop
12345 10 test 10 itoa
test 10 strrev
test 10 print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment