[openfirmware] r1246 - cpu/x86/pc/olpc
svn at openfirmware.info
svn at openfirmware.info
Mon Jul 20 23:39:07 CEST 2009
Author: wmb
Date: 2009-07-20 23:39:07 +0200 (Mon, 20 Jul 2009)
New Revision: 1246
Added:
cpu/x86/pc/olpc/gridmap.fth
Log:
Factored out gridmap functionality.
Added: cpu/x86/pc/olpc/gridmap.fth
===================================================================
--- cpu/x86/pc/olpc/gridmap.fth (rev 0)
+++ cpu/x86/pc/olpc/gridmap.fth 2009-07-20 21:39:07 UTC (rev 1246)
@@ -0,0 +1,31 @@
+
+d# 24 d# 24 2value ulhc
+
+8 constant glyph-w
+8 constant glyph-h
+
+9 constant grid-w
+9 constant grid-h
+
+d# 128 value #cols
+\needs xy+ : xy+ ( x1 y1 x2 y2 -- x3 y3 ) rot + -rot + swap ;
+\needs xy* : xy* ( x y w h -- x*w y*h ) rot * >r * r> ;
+
+: do-fill ( color x y w h -- ) " fill-rectangle" $call-screen ;
+
+\ States: 0:erased 1:bad 2:waiting for write 3:written
+
+: >loc ( eblock# -- x y ) #cols /mod grid-w grid-h xy* ulhc xy+ ;
+
+: show-state ( eblock# state -- ) swap >loc glyph-w glyph-h do-fill ;
+
+code map-color ( color24 -- color565 )
+ bx pop
+ bx ax mov 3 # ax shr h# 1f # ax and \ Blue in correct place
+ bx cx mov 5 # cx shr h# 7e0 # cx and cx ax or \ Green and blue in place
+ 8 # bx shr h# f800 # bx and bx ax or \ Red, green and blue in place
+ ax push
+c;
+: show-color ( eblock# color32 -- ) map-color show-state ;
+
+dev screen : erase-screen erase-screen ; dend
More information about the openfirmware
mailing list