92 lines
2.4 KiB
Plaintext
92 lines
2.4 KiB
Plaintext
|
\ 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
|