diff options
Diffstat (limited to 'qemu/roms/openbios/forth')
-rw-r--r-- | qemu/roms/openbios/forth/lib/string.fs | 14 | ||||
-rw-r--r-- | qemu/roms/openbios/forth/system/ciface.fs | 8 |
2 files changed, 22 insertions, 0 deletions
diff --git a/qemu/roms/openbios/forth/lib/string.fs b/qemu/roms/openbios/forth/lib/string.fs index eb6474917..f97db232f 100644 --- a/qemu/roms/openbios/forth/lib/string.fs +++ b/qemu/roms/openbios/forth/lib/string.fs @@ -125,3 +125,17 @@ : parse-hex ( str len -- value ) base @ hex -rot $number if 0 then swap base ! ; + + +\ ----------------------------------------------------- +\ miscellaneous functions +\ ----------------------------------------------------- + +: rot13 ( c - c ) + dup upc [char] A [char] M between if d# 13 + exit then + dup upc [char] N [char] Z between if d# 13 - then +; + +: rot13-str ( str len -- newstr len ) + strdup 2dup bounds ?do i c@ rot13 i c! loop +; diff --git a/qemu/roms/openbios/forth/system/ciface.fs b/qemu/roms/openbios/forth/system/ciface.fs index fd6c54efd..85a607627 100644 --- a/qemu/roms/openbios/forth/system/ciface.fs +++ b/qemu/roms/openbios/forth/system/ciface.fs @@ -326,6 +326,14 @@ external : exit ( -- ) ." EXIT" + + \ Execute (exit) hook if one exists + s" (exit)" $find if + execute + else + 2drop + then + outer-interpreter ; |