[OpenBIOS] r353 - cpu/x86 cpu/x86/pc/olpc ofw/termemu

svn at openbios.org svn at openbios.org
Fri May 4 09:28:03 CEST 2007


Author: wmb
Date: 2007-05-04 09:28:03 +0200 (Fri, 04 May 2007)
New Revision: 353

Added:
   ofw/termemu/difont.fth
Modified:
   cpu/x86/basefw.bth
   cpu/x86/pc/olpc/loaddropins.fth
   ofw/termemu/font.fth
Log:
Load the screen font from a dropin module so it's easy to change,
and also support .psf font format.











Modified: cpu/x86/basefw.bth
===================================================================
--- cpu/x86/basefw.bth	2007-05-04 07:01:20 UTC (rev 352)
+++ cpu/x86/basefw.bth	2007-05-04 07:28:03 UTC (rev 353)
@@ -59,7 +59,7 @@
 
 fload ${BP}/ofw/termemu/loadfb.fth	\ S Frame buffer support
 \ fload ${BP}/ofw/termemu/cp881-16.fth	\ ISO-Latin1 Font
-fload ${BP}/ofw/termemu/gallant2.fth	\ Sun font, tip o' the hat to Vaughn Pratt
+fload ${BP}/ofw/termemu/difont.fth	\ Get font from a dropin module
 
 fload ${BP}/ofw/gui/alert.fth		\ Basic dialogs and alerts
 fload ${BP}/dev/stringio.fth		\ Output diversion

Modified: cpu/x86/pc/olpc/loaddropins.fth
===================================================================
--- cpu/x86/pc/olpc/loaddropins.fth	2007-05-04 07:01:20 UTC (rev 352)
+++ cpu/x86/pc/olpc/loaddropins.fth	2007-05-04 07:28:03 UTC (rev 353)
@@ -37,3 +37,5 @@
    " ${BP}/cpu/x86/pc/olpc/images/usbkey.565"   " disk.565"      $add-deflated-dropin
    " ${BP}/cpu/x86/pc/olpc/images/wireless.565" " wireless.565"  $add-deflated-dropin
    " ${BP}/cpu/x86/pc/olpc/images/xo.565"       " xo.565"        $add-deflated-dropin
+
+   " ${BP}/ofw/termemu/gallant.obf"             " font"          $add-deflated-dropin

Added: ofw/termemu/difont.fth
===================================================================
--- ofw/termemu/difont.fth	                        (rev 0)
+++ ofw/termemu/difont.fth	2007-05-04 07:28:03 UTC (rev 353)
@@ -0,0 +1,10 @@
+purpose: Incorporate font into dictionary from dropin module
+
+0 value 'di-font
+
+: di-font  ( -- adr )
+   'di-font ?dup  if  exit  then
+   " font" find-drop-in  if  drop to 'di-font  'di-font  exit  then
+   0
+;
+' di-font to romfont

Modified: ofw/termemu/font.fth
===================================================================
--- ofw/termemu/font.fth	2007-05-04 07:01:20 UTC (rev 352)
+++ ofw/termemu/font.fth	2007-05-04 07:28:03 UTC (rev 353)
@@ -61,11 +61,28 @@
 
 headerless
 : decode-font  ( hdr-adr -- bits-adr width height advance min-char #glyphs )
-   dup d# 24 + swap          ( bits-adr hdr-adr )
-   d# 24                     ( bits-adr hdr-adr hdr-len )
-   4 decode-bytes  " font"  $=  0= abort" Not a font"  ( bits-adr str )
-   5 0 do  decode-int -rot  loop  ( bits-adr width height advance min #gl str )
-   2drop                     ( bits-adr width height advance min-char #glyphs )
+   dup " font" comp 0=  if   ( hdr-adr )   \ OBF font format
+      dup d# 24 +  swap              ( bit-adr hdr-adr )
+      4 +  d# 20                     ( bit-adr hdr-adr' hdr-len )
+      5 0 do  decode-int -rot  loop  ( bits-adr width height advance min #gl str )
+      2drop                  ( bits-adr width height advance min-char #glyphs )
+      exit
+   then                      ( hdr-adr )
+
+   \ http://www.win.tue.nl/~aeb/linux/kbd/font-formats-1.html
+   dup le-l@ h# 864ab572 =  if  ( hdr-adr )   \ PSF2 format, little endian
+      >r                        ( r: hdr-adr )
+      r@  r@ 8 + le-l@ +        ( bits-adr r: hdr-adr )
+      r@ h# 1c + le-l@          ( bits-adr width r: hdr-adr )
+      r@ h# 18 + le-l@ negate   ( bits-adr width height r: hdr-adr )
+      over 7 + 8 /              ( bits-adr width height advance r: hdr-adr )
+      0                         ( bits-adr width height advance min r: hdr-adr )
+      r@ h# 10 + le-l@          ( bits-adr width height advance #glyphs r: hdr-adr )
+      r> drop                   ( bits-adr width height advance #glyphs )
+      exit
+   then                         ( hdr-adr )
+
+   true abort" Not a font"
 ;
 headers
 also forth definitions




More information about the OpenBIOS mailing list