summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/slof/fs/graphics.fs
diff options
context:
space:
mode:
authorYang Zhang <yang.z.zhang@intel.com>2015-08-28 09:58:54 +0800
committerYang Zhang <yang.z.zhang@intel.com>2015-09-01 12:44:00 +0800
commite44e3482bdb4d0ebde2d8b41830ac2cdb07948fb (patch)
tree66b09f592c55df2878107a468a91d21506104d3f /qemu/roms/SLOF/slof/fs/graphics.fs
parent9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 (diff)
Add qemu 2.4.0
Change-Id: Ic99cbad4b61f8b127b7dc74d04576c0bcbaaf4f5 Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
Diffstat (limited to 'qemu/roms/SLOF/slof/fs/graphics.fs')
-rw-r--r--qemu/roms/SLOF/slof/fs/graphics.fs87
1 files changed, 87 insertions, 0 deletions
diff --git a/qemu/roms/SLOF/slof/fs/graphics.fs b/qemu/roms/SLOF/slof/fs/graphics.fs
new file mode 100644
index 000000000..7d5d9306d
--- /dev/null
+++ b/qemu/roms/SLOF/slof/fs/graphics.fs
@@ -0,0 +1,87 @@
+\ *****************************************************************************
+\ * Copyright (c) 2015 IBM Corporation
+\ * All rights reserved.
+\ * This program and the accompanying materials
+\ * are made available under the terms of the BSD License
+\ * which accompanies this distribution, and is available at
+\ * http://www.opensource.org/licenses/bsd-license.php
+\ *
+\ * Contributors:
+\ * IBM Corporation - initial implementation
+\ ****************************************************************************/
+
+\ Provide some of the functions that are defined in the
+\ "OF Recommended Practice: 8bit Graphics Extension" document
+
+: draw-rectangle ( adr x y w h -- )
+ frame-buffer-adr 0= IF 4drop drop EXIT THEN
+ 0 ?DO
+ 4dup drop ( adr x y w adr x y )
+ \ calculate offset into framebuffer: ((y + i) * width + x) * depth
+ i + screen-width * + screen-depth * ( adr x y w adr offs )
+ frame-buffer-adr + ( adr x y w adr fb_adr )
+ over 3 pick screen-depth * i * + ( adr x y w adr fb_adr src )
+ swap 3 pick screen-depth * ( adr x y w adr src fb_adr len )
+ rmove \ copy line ( adr x y w adr )
+ drop ( adr x y w )
+ LOOP
+ 4drop
+;
+
+: fill-rectangle ( col x y w h -- )
+ frame-buffer-adr 0= IF 4drop drop EXIT THEN
+ 0 ?DO
+ 4dup drop ( col x y w col x y )
+ \ calculate offset into framebuffer: ((y + i) * width + x) * depth
+ i + screen-width * + screen-depth * ( col x y w col offs )
+ frame-buffer-adr + ( col x y w col adr )
+ 2 pick screen-depth * 2 pick ( col x y w col adr len col )
+ rfill \ draw line ( col x y w col )
+ drop ( col x y w )
+ LOOP
+ 4drop
+;
+
+: read-rectangle ( adr x y w h -- )
+ frame-buffer-adr 0= IF 4drop drop EXIT THEN
+ 0 ?DO
+ 4dup drop ( adr x y w adr x y )
+ \ calculate offset into framebuffer: ((y + i) * width + x) * depth
+ i + screen-width * + screen-depth * ( adr x y w adr offs )
+ frame-buffer-adr + ( adr x y w adr fb_adr )
+ over 3 pick screen-depth * i * + ( adr x y w adr fb_adr dst )
+ 3 pick ( adr x y w adr fb_adr dst w )
+ rmove \ copy line ( adr x y w adr )
+ drop ( adr x y w )
+ LOOP
+ 4drop
+;
+
+: dimensions ( -- width height )
+ screen-width screen-height
+;
+
+\ Initialize a default palette (not a standard command, but useful anyway)
+: init-default-palette
+ \ Grayscale ramp for upper colors
+ 100 10 DO
+ i i i i color!
+ LOOP
+ \ Standard colors from "16-color Text Extension" specification
+ 00 00 00 0 color!
+ 00 00 aa 1 color!
+ 00 aa 00 2 color!
+ 00 aa aa 3 color!
+ aa 00 00 4 color!
+ aa 00 aa 5 color!
+ aa 55 00 6 color!
+ aa aa aa 7 color!
+ 55 55 55 8 color!
+ 55 55 ff 9 color!
+ 55 ff 55 a color!
+ 55 ff ff b color!
+ ff 55 55 c color!
+ ff 55 ff d color!
+ ff ff 55 e color!
+ ff ff ff f color!
+;