Created
May 22, 2024 11:23
-
-
Save alex-s168/8920cbf198fbbe69e26344dc60af2e54 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
: 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