\ FORTH is identifed by a forth comment at first line \ \ terminal control stuff \ : TTY.CSI d# 27 EMIT ASCII [ EMIT ; : TTY.HOME TTY.CSI ASCII H EMIT ; : TTY.CLR_EOS TTY.CSI ASCII J EMIT ; : TTY.HOME_CLR TTY.HOME TTY.CLR_EOS ; \ \ boot menu stuff \ : my-max-boot-num 5 ; : my-boot-default 1 ; : my-boot-delay d# 300 ; \ unit = 100 ms : my-print-menu ( -- ) TTY.HOME_CLR ." " cr ." Welcome to Debian GNU/Linux ${DEBIAN_VERSION}!" cr ." " cr ." This is a Debian installation ${MEDIA_TYPE}," cr ." built on ${BUILD_DATE}." cr ." " cr ." The default option is (1) 'install'. For maximum" cr ." control, you can use the (2) 'expert' option." cr ." " cr ." ************************************" cr ." If in doubt, just choose (1) 'install'" cr ." ************************************" cr ." " cr ." 1: install" cr ." 2: expert" cr ." 3: rescue" cr ." 4: auto" cr ." 5: return to OF prompt" cr ." " cr ; : my-boot-case ( num -- ) ." " cr case 1 of " cd install/powerpc/vmlinuz-chrp.initrd ---" endof 2 of " cd install/powerpc/vmlinuz-chrp.initrd priority=low ---" endof 3 of " cd install/powerpc/vmlinuz-chrp.initrd rescue/enable=true ---" endof 4 of " cd install/powerpc/vmlinuz-chrp.initrd auto=true priority=critical ---" endof 5 of " none" endof endcase $boot ; : my-input-num ( wait-period max-boot-num default-num -- boot-num ) 1 \ loop-inc = 1 3 pick 0 do 0d emit ." press 1-" ( wait-period max-boot-num default-num loop-inc ) 2 pick ascii 0 + emit dup 1 = if ." within " 3 pick i - d# 10 / .d ." seconds" then ." (default: " over ascii 0 + emit ." ) : " d# 100 ms key? if key ( wait-period max-boot-num default-num loop-inc key ) dup 0d = if \ return pressed drop leave then ascii 0 - ( wait-period max-boot-num default-num loop-inc num ) dup 1 5 pick ( wait-period max-boot-num default-num loop-inc num num 1 max-boot-num ) between if rot drop swap leave then ( wait-period max-boot-num default-num loop-inc num ) 2drop 0 \ loop-inc = 0 then dup +loop drop ( wait-period max-boot-num boot-num ) nip nip ; my-print-menu my-boot-delay my-max-boot-num my-boot-default my-input-num my-boot-case