debian-cd-clone/data/bookworm/pegasos/pegasos

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