summaryrefslogtreecommitdiffstats
path: root/system.inc
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2009-01-27 17:30:08 +0000
committerPascal Rigaux <pixel@mandriva.com>2009-01-27 17:30:08 +0000
commit5ce8d30439463838f845c78bc926cc9b310a8743 (patch)
treebb1852dc58711c7baee31216a765067dfa49b65b /system.inc
parent10658e71475bd964263d09f1a661f24fadfaf496 (diff)
downloadbootloader-theme-5ce8d30439463838f845c78bc926cc9b310a8743.tar
bootloader-theme-5ce8d30439463838f845c78bc926cc9b310a8743.tar.gz
bootloader-theme-5ce8d30439463838f845c78bc926cc9b310a8743.tar.bz2
bootloader-theme-5ce8d30439463838f845c78bc926cc9b310a8743.tar.xz
bootloader-theme-5ce8d30439463838f845c78bc926cc9b310a8743.zip
imported openSUSE.tar.bz2 (from gfxboot-4.1.19-2.1.src.rpm)4.1.19.1
Diffstat (limited to 'system.inc')
-rw-r--r--system.inc807
1 files changed, 0 insertions, 807 deletions
diff --git a/system.inc b/system.inc
deleted file mode 100644
index fa2a7e5..0000000
--- a/system.inc
+++ /dev/null
@@ -1,807 +0,0 @@
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-%
-% Some basic definitions.
-%
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-% some key codes
-/keyEsc 0x0000001b def
-/keyEnter 0x0000000d def
-/keyTab 0x00000009 def
-/keyShiftTab 0x00800009 def
-/keyF1 0x3b000000 def
-/keyF2 0x3c000000 def
-/keyF3 0x3d000000 def
-/keyF4 0x3e000000 def
-/keyF5 0x3f000000 def
-/keyF6 0x40000000 def
-/keyF7 0x41000000 def
-/keyF8 0x42000000 def
-/keyF9 0x43000000 def
-/keyF10 0x44000000 def
-/keyF11 0x85000000 def
-/keyF12 0x86000000 def
-/keyHome 0x47000000 def
-/keyUp 0x48000000 def
-/keyPgUp 0x49000000 def
-/keyLeft 0x4b000000 def
-/keyRight 0x4d000000 def
-/keyEnd 0x4f000000 def
-/keyDown 0x50000000 def
-/keyPgDown 0x51000000 def
-/keyIns 0x52000000 def
-/keyDel 0x53000000 def
-/keyShiftF1 0x54000000 def
-/keyShiftF2 0x55000000 def
-/keyShiftF3 0x56000000 def
-/keyShiftF4 0x57000000 def
-/keyShiftF5 0x58000000 def
-/keyShiftF6 0x59000000 def
-/keyShiftF7 0x5a000000 def
-/keyShiftF8 0x5b000000 def
-/keyShiftF9 0x5c000000 def
-/keyShiftF10 0x5d000000 def
-/keyShiftF11 0x87000000 def
-/keyShiftF12 0x88000000 def
-/keyCtrlF1 0x5e000000 def
-/keyCtrlF2 0x5f000000 def
-/keyCtrlF3 0x60000000 def
-/keyCtrlF4 0x61000000 def
-/keyCtrlF5 0x62000000 def
-/keyCtrlF6 0x63000000 def
-/keyCtrlF7 0x64000000 def
-/keyCtrlF8 0x65000000 def
-/keyCtrlF9 0x66000000 def
-/keyCtrlF10 0x67000000 def
-/keyAltF1 0x68000000 def
-/keyAltF2 0x69000000 def
-/keyAltF3 0x6a000000 def
-/keyAltF4 0x6b000000 def
-/keyAltF5 0x6c000000 def
-/keyAltF6 0x6d000000 def
-/keyAltF7 0x6e000000 def
-/keyAltF8 0x6f000000 def
-/keyAltF9 0x70000000 def
-/keyAltF10 0x71000000 def
-/keyCtrlLeft 0x73000000 def
-/keyCtrlRight 0x74000000 def
-/keyCtrlEnd 0x75000000 def
-/keyCtrlDown 0x76000000 def
-/keyCtrlHome 0x76000000 def
-/keyCtrlUp 0x84000000 def
-/keyStatus 0xff000000 def
-
-/statusAlt 0x0208 def
-/statusAltL 0x0200 def
-/statusAltR 0x0008 def
-/statusCtrl 0x0104 def
-/statusShift 0x0003 def
-
-/CapsLock { 0x417 cvp getbyte 0x40 and 0 ne } def
-
-% boot loader
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% bootloader - boot loader type
-%
-% group: system
-%
-% ( -- int1 )
-%
-% int1: boot loader type (0: lilo, 1:syslinux/isolinux, 2: grub)
-%
-/bootloader sysconfig getbyte def
-
-/lilo bootloader 0 eq def
-/syslinux bootloader 1 eq def
-/grub bootloader 2 eq def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% boot_failsafe - failsafe options the user selected (bitmask)
-%
-% group: system
-%
-% ( -- int1 )
-%
-% int1: option bitmask
-% bit 0: SHIFT pressed
-% bit 1: no graphics
-% bit 2: no monitor detection
-%
-/boot_failsafe sysconfig 3 add getbyte def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% bootdrive - drive the BIOS booted from
-%
-% group: system
-%
-% ( -- int1 )
-%
-% int1: BIOS drive id
-%
-/bootdrive sysconfig 5 add getbyte def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% mediatype - type of media we booted from
-%
-% group: system
-%
-% ( -- int1 )
-%
-% int1: media type (0 disk, 1 floppy, 2 cdrom)
-%
-/mediatype sysconfig 2 add getbyte def
-
-/m_disk 0 def
-/m_floppy 1 def
-/m_cdrom 2 def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% biosmem - BIOS reported memory size
-%
-% group: mem
-%
-% ( -- int1 )
-%
-% int1: total memory size according to BIOS
-%
-/biosmem sysconfig 20 add getdword def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% sectorsize - sector size
-%
-% group: mem system
-%
-% ( -- int1 )
-%
-% int1: sector size in bytes
-%
-/sectorsize
- 1
- sysconfig 1 add getbyte
- 20 min % max. 1 MB
- dup 0 eq { pop 9 } if
- shl
-def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% getinfo - type of info box
-%
-% group: system
-%
-% ( int1 -- int2 )
-%
-% int1: type of info box we have to show
-% int2: some data
-%
-% Note: really weird, should be replaced by something more obvious.
-%
-/getinfo {
- 2 shl
- sysconfig 12 add exch add getdword
-} def
-
-
-% bool values
-/true 0 0 eq def
-/false 0 0 ne def
-
-% type values
-/t_none 0 def
-/t_int 1 def
-/t_unsigned 2 def
-/t_bool 3 def
-/t_string 4 def
-/t_code 5 def
-/t_ret 6 def
-/t_prim 7 def
-/t_sec 8 def
-/t_dict_idx 9 def
-/t_array 10 def
-/t_end 11 def
-/t_ptr 12 def
-
-/.value { t_int settype } def
-/.undef 0 t_none settype def
-/.end 0 t_end settype def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Print string (for debugging).
-%
-% ( string ) ==> ( )
-%
-/string.print {
- dup
- currentpoint currentpoint 5 -1 roll strsize image moveto
- show
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Print number (for debugging).
-%
-% ( number ) ==> ( )
-%
-/number.print {
- 32 string
- exch over
- "%08x" exch sprintf
- dup string.print
- free
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Print obj (for debugging).
-%
-% ( obj ) ==> ( )
-%
-/obj.print {
- 64 string
- exch dup
- .value exch gettype
- "%x:%08x" 3 index sprintf
- dup string.print
- free
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Print (for debugging).
-%
-% ( obj ) ==> ( )
-%
-/print {
- dup gettype t_int eq { number.print return } if
- dup gettype t_string eq { string.print return } if
- obj.print
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Convert object to pointer.
-%
-% ( obj ) ==> ( ptr )
-%
-/cvp { t_ptr settype } def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Convert object to string.
-%
-% ( obj ) ==> ( string )
-%
-/cvs { t_string settype } def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Convert object to number.
-%
-% ( obj ) ==> ( int )
-%
-/cvn {
- dup gettype t_string eq {
- 0 exch
- {
- '0' sub
- dup 0 lt over 9 gt or { pop exit } if
- exch 10 mul add
- } forall
- } {
- t_int settype
- } ifelse
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Arguments like snprintf.
-%
-% ( obj_1 ... obj_n string_1 string_2 ) ==> ( )
-%
-/sprintf {
- dup cvp length exch snprintf
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Allocate new string.
-%
-% ( size ) ==> ( string )
-/string {
- 1 add malloc cvs
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Increment variable.
-%
-% ( dict_ref ) ==> ( )
-%
-/inc {
- dup exec 1 add def
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Copy src to dst.
-%
-% Watch overlapping src & dst!
-%
-% ( dst src ) ==> ( dst )
-%
-/strcpy {
- "%s" 2 index sprintf
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Duplicate string.
-%
-% ( string ) ==> ( string )
-%
-/strdup {
- dup length string exch strcpy
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Concatenate strings.
-%
-% ( string1 string2 ) ==> ( string1 )
-%
-/strcat {
- over dup length add exch strcpy pop
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Test for AltGr.
-%
-% ( ) ==> ( bool )
-%
-/is_altGr {
- keystat statusAltR and 0 ne keystat statusAltL and 0 eq and
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Keyboard mapping.
-%
-% ( key ) ==> ( key )
-%
-/mapkey {
- dup 24 shr 0xff and /key.code exch def
- is_altGr {
- % bios is too smart...
- key.code 0x78 ge key.code 0x83 le and { /key.code key.code 0x76 sub def } if
- } if
- 0 1 config.keymap length 1 sub {
- config.keymap exch get
- dup 0 get key.code eq {
- 1
- keystat statusShift and { pop 2 } if
- is_altGr { pop 3 } if
- get
- exch pop
- } {
- pop
- } ifelse
- } for
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Set password mode font property.
-%
-% ( font ) ==> ( font )
-%
-/pwmode {
- dup gettype t_ptr eq {
- .value 0x80000000 or t_ptr settype
- } if
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Show string right aligned.
-%
-% ( string ) ==> ( )
-%
-/showright {
- dup strsize pop neg 0 rmoveto show
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Show string centered.
-%
-% ( string ) ==> ( )
-%
-/showcenter {
- dup strsize pop 2 div neg 0 rmoveto show
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Generate pseudo random number.
-% Good enough for boot loader splash screen.
-%
-% ( ) ==> ( int )
-%
-/rand {
- rand.start 59 mul 97 add 0x7fffffff and
- /rand.start over def
-} def
-
-% start value
-/rand.start time def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-%
-% ( date ) ==> ( weekday )
-%
-/weekday {
- dup 8 shr 0xff and 1 sub
- dup 3 mul over 2 div sub
- exch 2 mul 0x11000a exch shr 3 and add
- over 0xff and 6 add add
- exch 16 shr add
- 7 mod
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-%
-% ( date ) ==> ( day )
-%
-/day {
- 0xff and
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-%
-% ( date ) ==> ( month )
-%
-/month {
- 8 shr 0xff and
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-%
-% ( date ) ==> ( year )
-%
-/year {
- 16 shr
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-%
-% Read CMOS RAM.
-%
-% ( index ) ==> ( value )
-%
-/nvram {
- 0x70 exch outbyte
- 0x71 inbyte
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% readsector - read sector
-%
-% group: system
-%
-% ( int1 -- ptr1 )
-%
-% int1: sector number
-% ptr1: buffer with sector data or .undef. Use @free to free the buffer.
-%
-% Note: does not return on error. Returns .undef if function is not implemented.
-%
-/readsector {
- _readsector
- dup .undef eq { return } if
-
- sectorsize malloc dup rot over length memcpy
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% getgfxconfig - get gfxboot config file entry
-%
-% group: system
-%
-% ( str1 -- str2 )
-%
-% str1: key for config entry
-% str2: config string (or .undef)
-%
-/getgfxconfig {
- gfxconfig.data .undef eq {
- "gfxboot.cfg" findfile dup .undef ne {
- dup dup length dup string dup cvp 4 2 roll memcpy exch free
- } {
- pop ""
- } ifelse
-
- /gfxconfig.data over '\n' split def free
-
- } if
-
- currenteotchar '=' seteotchar
-
- .undef
-
- gfxconfig.data {
-
- % overkill because string compare does not honor eotchar
- dup strdup dup 5 index eq {
- dup length exch free 1 add add exch pop exit
- } {
- free pop
- } ifelse
-
- } forall
-
- exch seteotchar exch pop
-
-} def
-
-/gfxconfig.data .undef def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% split - split string
-%
-% group:
-%
-% ( str1 int1 -- array1 )
-%
-% str1: string
-% int1: char
-% array1: array of strings
-%
-/split {
-
- currenteotchar exch seteotchar exch
-
- [ exch
-
- {
- dup length 0 gt {
- dup strdup exch
- dup length add
- } if
-
- dup cvp length 1 le { pop exit } if
-
- 1 add
-
- } loop
-
- ]
-
- exch seteotchar
-
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Skip leading non-spaces.
-%
-% ( string ) ==> ( string )
-%
-/skipnonspaces {
- { dup 0 get dup 0 ne exch ' ' ne and { 1 add } { exit } ifelse } loop
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Skip leading spaces.
-%
-% ( string ) ==> ( string )
-%
-/skipspaces {
- { dup 0 get ' ' eq { 1 add } { exit } ifelse } loop
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Drop spaces at string end.
-% Modifies string!
-%
-% ( string ) ==> ( )
-%
-/dropspaces {
- dup length
- dup 0 eq {
- pop pop
- } {
- 1 sub
- -1 0 {
- over over get ' ' eq { over exch 0 put } { pop exit } ifelse
- } for
- pop
- } ifelse
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Test if string[ofs-1]/string[ofs] is a word boundary.
-%
-% ( string ofs ) ==> ( true|false )
-%
-% boundary is either space/non-space or non-space/(space|'=')
-%
-/iswordboundary {
- dup 0 eq { pop pop true return } if
-
- add dup 1 sub 0 get exch 0 get
-
- over ' ' eq over ' ' gt and { pop pop true return } if
- over ' ' gt over dup ' ' eq exch dup '=' eq exch 0 eq or or and { pop pop true return } if
-
- pop pop false
-} def
-
-
-%% findmode - find video mode number
-%
-% group: gfx.screen
-%
-% ( int1 int2 int3 -- int4 )
-%
-% int1, int2: width, height
-% int3: color bits
-% int4: mode number (or .undef)
-%
-% example
-% 1024 768 16 findmode setmode % 1024x768, 16-bit color mode
-%
-/findmode {
- 0 1 videomodes {
- videomodeinfo dup .undef eq {
- pop pop pop pop
- } {
- % compare width, height, colors
- 6 index 4 index eq 6 index 4 index eq and 5 index 3 index eq and {
- 7 1 roll 6 { pop } repeat 0xbfff and return
- } {
- pop pop pop pop
- } ifelse
- } ifelse
- } for
-
- pop pop pop .undef
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-%
-% Replace substring. Returns newly allocated string.
-%
-% ( str key value ) ==> ( new_str )
-%
-% Replaces first occurence of 'key' in str with 'value'.
-%
-/strreplace {
- 2 index 2 index strstr dup 0 ne {
- 1 sub
- over length 3 index length sub 4 index length add string
- dup cvp 5 index cvp 3 index memcpy
- dup 6 1 roll over add exch 5 -1 roll exch add
- 4 -1 roll length add 3 1 roll "%s%s" exch sprintf
- } {
- pop pop pop strdup
- } ifelse
-
-
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Search for option in cmdline.
-% Returns .undef if not found.
-%
-% ( cmdline option_name ) ==> ( option_start )
-%
-/bootopt.find {
- /bo.opt exch def
- /bo.cmdline exch def
-
- {
- bo.cmdline bo.opt strstr
- dup {
- dup 1 eq {
- true
- } {
- dup 2 sub bo.cmdline exch get ' ' eq
- } ifelse
-
- {
- bo.cmdline over bo.opt length add 1 sub get
- dup '=' eq
- over ' ' eq or
- exch 0 eq or
- } {
- false
- } ifelse
-
- bo.cmdline rot add exch
-
- {
- 1 sub exit
- } {
- /bo.cmdline exch def
- } ifelse
- } {
- pop
- .undef exit
- } ifelse
- } loop
-
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Search for second occurence of option in cmdline.
-% Returns .undef if not found.
-%
-% ( cmdline option_name ) ==> ( option_start )
-%
-/bootopt.find2 {
- over over bootopt.find dup .undef eq {
- pop pop pop .undef
- } {
- 1 add rot pop exch bootopt.find
- } ifelse
-} def
-
-
-% Remove option from cmdline. Returns removed option or .undef.
-%
-% cmdline is modified, option_entry is allocated dynamicyll and must be
-% freed later.
-%
-% ( cmdline option_name -- option_entry )
-%
-/bootopt.remove {
- bootopt.find dup .undef ne {
- dup
- skipnonspaces dup skipspaces 2 index sub rot rot over sub string over strcpy
- rot rot
- {
- over over exch get
- over over 0 exch put {
- 1 add
- } {
- exit
- } ifelse
- } loop
- pop pop
- } if
-} def
-
-
-% Test whether we run in Live-CD mode
-%
-% ( -- true|false )
-%
-/livecd {
- /livecd "livecd" getgfxconfig dup .undef ne { 0 ne } { pop false } ifelse def
- livecd
-} def
-
-