Author: wmb Date: Wed Oct 13 01:07:52 2010 New Revision: 1975 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1975
Log: OLPC XO-1.5 - Added menu for dual-booting, including changes in the menu code to support per-menu icon size and layout grid.
Added: cpu/x86/pc/olpc/images/settings.565 (contents, props changed) cpu/x86/pc/olpc/images/settings.bmp (contents, props changed) cpu/x86/pc/olpc/images/tux.565 (contents, props changed) cpu/x86/pc/olpc/images/tux.bmp (contents, props changed) cpu/x86/pc/olpc/images/winlogo.565 (contents, props changed) cpu/x86/pc/olpc/images/winlogo.bmp (contents, props changed) Modified: cpu/x86/pc/olpc/via/fw.bth cpu/x86/pc/olpc/via/mfgtest.fth cpu/x86/pc/olpc/via/olpc.bth ofw/gui/iconmenu.fth ofw/gui/insticon.fth ofw/gui/menumisc.fth
Added: cpu/x86/pc/olpc/images/settings.565 ============================================================================== Binary file. No diff available.
Added: cpu/x86/pc/olpc/images/settings.bmp ============================================================================== Binary file. No diff available.
Added: cpu/x86/pc/olpc/images/tux.565 ============================================================================== Binary file. No diff available.
Added: cpu/x86/pc/olpc/images/tux.bmp ============================================================================== Binary file. No diff available.
Added: cpu/x86/pc/olpc/images/winlogo.565 ============================================================================== Binary file. No diff available.
Added: cpu/x86/pc/olpc/images/winlogo.bmp ============================================================================== Binary file. No diff available.
Modified: cpu/x86/pc/olpc/via/fw.bth ============================================================================== --- cpu/x86/pc/olpc/via/fw.bth Wed Oct 13 00:16:13 2010 (r1974) +++ cpu/x86/pc/olpc/via/fw.bth Wed Oct 13 01:07:52 2010 (r1975) @@ -309,7 +309,6 @@ fload ${BP}/ofw/gui/loadmenu.fth patch merge-rect-565 merge-rect merge-cursor \ Hack since we do all our user-level graphics in 565 patch merge-rect-565 merge-rect merge-cursor \ Hack since we do all our user-level graphics in 565 -fload ${BP}/ofw/gui/insticon.fth
fload ${BP}/cpu/x86/pc/olpc/via/cstate.fth \ C-state tests
@@ -317,6 +316,7 @@ \ so exiting from emacs doesn't invoke the diag menu. ' quit to user-interface fload ${BP}/cpu/x86/pc/olpc/via/mfgtest.fth +fload ${BP}/cpu/x86/pc/olpc/via/bootmenu.fth
: screen-#lines ( -- n ) screen-ih 0= if default-#lines exit then @@ -645,6 +645,12 @@ ; [then]
+: ?boot-menu ( -- ) + button-rotate game-key? if + protect-fw visible bootmenu + then +; + : ?fs-update ( -- ) button-check button-x or button-o or button-square or ( mask ) game-key-mask = if protect-fw try-fs-update then @@ -707,6 +713,8 @@ ?usb-keyboard auto-banner? if banner then
+ ?boot-menu + auto-boot
frozen? text-on? 0= and ( no-banner? )
Modified: cpu/x86/pc/olpc/via/mfgtest.fth ============================================================================== --- cpu/x86/pc/olpc/via/mfgtest.fth Wed Oct 13 00:16:13 2010 (r1974) +++ cpu/x86/pc/olpc/via/mfgtest.fth Wed Oct 13 01:07:52 2010 (r1975) @@ -197,6 +197,12 @@ ;
: full-menu ( -- ) + d# 4 to rows + d# 5 to cols + d# 180 to sq-size + d# 128 to image-size + d# 128 to icon-size + olpc-menu-items
" Run all non-interactive tests. (Press a key between tests to stop.)"
Modified: cpu/x86/pc/olpc/via/olpc.bth ============================================================================== --- cpu/x86/pc/olpc/via/olpc.bth Wed Oct 13 00:16:13 2010 (r1974) +++ cpu/x86/pc/olpc/via/olpc.bth Wed Oct 13 01:07:52 2010 (r1975) @@ -189,6 +189,10 @@ " ${BP}/cpu/x86/pc/olpc/via/build/nandblaster15_rx.bin" " nb15_rx" $add-deflated-dropin " ${BP}/cpu/x86/pc/olpc/via/build/nandblaster_tx.bin" " nb_tx" $add-deflated-dropin
+ " ${BP}/cpu/x86/pc/olpc/images/winlogo.565" " winlogo.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/tux.565" " tux.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/settings.565" " settings.565" $add-deflated-dropin + .( Dropin top is ) ofd @ fsize .x cr
[ifdef] coreboot-loaded
Modified: ofw/gui/iconmenu.fth ============================================================================== --- ofw/gui/iconmenu.fth Wed Oct 13 00:16:13 2010 (r1974) +++ ofw/gui/iconmenu.fth Wed Oct 13 01:07:52 2010 (r1975) @@ -38,10 +38,10 @@
headers d# 32 value version-height -4 constant rows -5 constant cols +4 value rows +5 value cols headerless -rows cols * constant squares +: squares rows cols * ; d# 180 value sq-size d# 128 value image-size \ on file d# 128 value icon-size \ on screen @@ -89,15 +89,14 @@
struct /n field >icon - /n field >pixels /n field >function /n field >border 2 /n * field >help \ Brief description \ 32 field >label \ later... dup constant /entry squares * buffer: squarebuf -icon-size dup * 2 * constant /icon -image-size dup * 2 * 8 + constant /image +: /icon icon-size dup * 2 * ; +: /image image-size dup * 2 * 8 + ;
: sq ( sq - a ) sq? /entry * squarebuf + ;
@@ -231,26 +230,32 @@ then ;
-: load-icon ( sq -- ) - sq dup >pixels @ 0= if ( sq-adr ) - dup >icon @ count load-pixels ( sq-adr pix-adr ) - swap >pixels ! ( ) - else - drop ( ) +: (icon>pixels) ( apf -- 'pixels ) + ta1+ dup @ ?dup if ( 'icon 'pixels ) + nip ( 'pixels ) + else ( 'icon ) + dup na1+ count load-pixels ( 'icon 'pixels ) + tuck swap ! ( 'pixels ) then ;
+\ Defining word for icon images +: icon: ( "name" "devicename" -- ) ( child: -- 'pixels ) + create ['] (icon>pixels) token, 0 , parse-word ", +; +: icon>pixels ( icon-apf -- 'pixels ) dup token@ execute ; + : draw-sq ( sq -- ) - dup -1 = if exit then - background over sq>xy sq-size dup fill-rectangle - dup sq >border @ over draw-border - dup sq >icon @ if - dup load-icon - dup sq >pixels @ - swap sq>xy sq-size icon-size - 2/ tuck + -rot + swap - icon-size dup draw-rectangle - lowlight \ draw border - else + dup -1 = if exit then ( sq ) + background over sq>xy sq-size dup fill-rectangle ( sq ) + dup sq >border @ over draw-border ( sq ) + dup sq >icon @ ?dup if ( sq 'icon ) + icon>pixels ( sq 'pixels ) + swap sq>xy sq-size icon-size - 2/ ( 'pixels x y size ) + tuck + -rot + swap ( 'pixels x' y' ) + icon-size dup draw-rectangle ( ) + lowlight \ draw border ( ) + else ( sq ) drop then ; @@ -281,7 +286,7 @@ ; : refresh ( - ) draw-background - squares 0 do i draw-sq loop + squares 0 ?do i draw-sq loop set-description-region highlight describe ;
Modified: ofw/gui/insticon.fth ============================================================================== --- ofw/gui/insticon.fth Wed Oct 13 00:16:13 2010 (r1974) +++ ofw/gui/insticon.fth Wed Oct 13 01:07:52 2010 (r1975) @@ -1,6 +1,8 @@ \ See license at end of file purpose: Icon menu screen layout for Power Firmware demonstration version
+icon: exit.icon ${BP}/ofw/gui/exeunt.icx + \ fload ${BP}/ofw/gui/macosi.fth \ Boot/install MacOS items \ fload ${BP}/ofw/gui/nti.fth \ Boot/install NT items \ fload ${BP}/ofw/gui/aixi.fth \ Boot AIX item
Modified: ofw/gui/menumisc.fth ============================================================================== --- ofw/gui/menumisc.fth Wed Oct 13 00:16:13 2010 (r1974) +++ ofw/gui/menumisc.fth Wed Oct 13 01:07:52 2010 (r1975) @@ -50,12 +50,6 @@ does> dup na1+ swap @ ( adr len ) ;
-\ Defining word for icon images -: icon: ( "name" "devicename" -- ) ( child: -- adr ) - create parse-word ", -; - -icon: exit.icon ${BP}/ofw/gui/exeunt.icx \ LICENSE_BEGIN \ Copyright (c) 2006 FirmWorks \
openfirmware@openfirmware.info