diff options
Diffstat (limited to 'qemu/roms/openbios/packages/molvideo.c')
-rw-r--r-- | qemu/roms/openbios/packages/molvideo.c | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/qemu/roms/openbios/packages/molvideo.c b/qemu/roms/openbios/packages/molvideo.c deleted file mode 100644 index 787c4dc08..000000000 --- a/qemu/roms/openbios/packages/molvideo.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Creation Date: <2002/10/23 20:26:40 samuel> - * Time-stamp: <2004/01/07 19:39:15 samuel> - * - * <molvideo.c> - * - * Mac-on-Linux display node - * - * Copyright (C) 2002, 2003, 2004 Samuel Rydh (samuel@ibrium.se) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation - * - */ - -#include "config.h" -#include "libopenbios/bindings.h" -#include "libc/diskio.h" -#include "libopenbios/ofmem.h" -#include "drivers/drivers.h" -#include "packages/video.h" -#include "libopenbios/video.h" -#include "drivers/vga.h" - - -/************************************************************************/ -/* OF methods */ -/************************************************************************/ - -DECLARE_NODE( video, 0, 0, "Tdisplay" ); - -/* ( r g b index -- ) */ -static void -molvideo_color_bang( void ) -{ - int index = POP(); - int b = POP(); - int g = POP(); - int r = POP(); - unsigned long col = ((r << 16) & 0xff0000) | ((g << 8) & 0x00ff00) | (b & 0xff); - /* printk("color!: %08lx %08lx %08lx %08lx\n", r, g, b, index ); */ - - if( VIDEO_DICT_VALUE(video.depth) == 8 ) { - OSI_SetColor( index, col ); - OSI_RefreshPalette(); - } -} - -/* ( -- ) - really should be reworked as draw-logo */ -static void -molvideo_startup_splash( void ) -{ - int fd, s, i, y, x, dx, dy; - int width, height; - char *pp, *p; - char buf[64]; - - /* only draw logo in 24-bit mode (for now) */ - if( VIDEO_DICT_VALUE(video.depth) < 15 ) - return; - - for( i=0; i<2; i++ ) { - if( !BootHGetStrResInd("bootlogo", buf, sizeof(buf), 0, i) ) - return; - *(!i ? &width : &height) = atol(buf); - } - - if( (s=width * height * 3) > 0x20000 ) - return; - - if( (fd=open_io("pseudo:,bootlogo")) >= 0 ) { - p = malloc( s ); - if( read_io(fd, p, s) != s ) - printk("bootlogo size error\n"); - close_io( fd ); - - dx = (VIDEO_DICT_VALUE(video.w) - width)/2; - dy = (VIDEO_DICT_VALUE(video.h) - height)/3; - - pp = (char*)VIDEO_DICT_VALUE(video.mvirt) + dy * VIDEO_DICT_VALUE(video.rb) + dx * (VIDEO_DICT_VALUE(video.depth) >= 24 ? 4 : 2); - - for( y=0 ; y<height; y++, pp += VIDEO_DICT_VALUE(video.rb) ) { - if( VIDEO_DICT_VALUE(video.depth) >= 24 ) { - unsigned long *d = (unsigned long*)pp; - for( x=0; x<width; x++, p+=3, d++ ) - *d = ((int)p[0] << 16) | ((int)p[1] << 8) | p[2]; - } else if( VIDEO_DICT_VALUE(video.depth) == 15 ) { - unsigned short *d = (unsigned short*)pp; - for( x=0; x<width; x++, p+=3, d++ ) { - int col = ((int)p[0] << 16) | ((int)p[1] << 8) | p[2]; - *d = ((col>>9) & 0x7c00) | ((col>>6) & 0x03e0) | ((col>>3) & 0x1f); - } - } - } - free( p ); - } - - /* No bootlogo support yet on other platforms */ - return; -} - - -NODE_METHODS( video ) = { - {"mol-startup-splash", molvideo_startup_splash }, -}; - - -/************************************************************************/ -/* init */ -/************************************************************************/ - -void -molvideo_init(void) -{ - xt_t color_bang; - - REGISTER_NODE( video ); - - /* Bind the MOL graphic routines to the mol-color! defer */ - color_bang = bind_noname_func(molvideo_color_bang); - PUSH(color_bang); - feval(" to mol-color!"); -} |