24-bit VGA

This commit is contained in:
thamugadi 2021-10-10 19:11:29 +01:00
parent fd5d151853
commit cf12e548eb
4 changed files with 29 additions and 34 deletions

View File

@ -1,3 +1,4 @@
MACHINE=mac99
PPC=powerpc-linux-gnu PPC=powerpc-linux-gnu
QEMU=qemu-system-ppc QEMU=qemu-system-ppc
DISK.APM: kernel.elf bootinfo.txt scripts/kpartx.sh DISK.APM: kernel.elf bootinfo.txt scripts/kpartx.sh
@ -24,8 +25,8 @@ start.elf: entry/start.s
clean: clean:
rm *.APM *elf *txt rm *.APM *elf *txt
run: run:
$(QEMU) *.APM -g 1024x768x32 $(QEMU) *.APM -g 1280x768x32 -machine $(MACHINE)
debug: debug:
$(QEMU) *.APM -d in_asm -g 1024x768x32 $(QEMU) *.APM -d in_asm -g 1280x768x32 -machine $(MACHINE)
all: all:
make clean && make && make run make clean && make && make run

View File

@ -1,16 +1,18 @@
#define beige 0xBE #define beige 0xBE
#define mac99 0x5A #define mac99 0x5A
#define __VRAM__BEIGE 0x80000000
#define __VRAM__MAC99 0x81000000
#define __BIOS__BEIGE 0xFFC00000
#define __BIOS__MAC99 0xFFF00000
#define __VRAM__BEIGE 0x80000000
#define __BIOS__BEIGE 0xFFC00000
unsigned char IO_TYPE; #define __VRAM__MAC99 0x81000000
#define __BIOS__MAC99 0XFFF00000
#define __USB_KEYBOARD__MAC99 0x80080038
#define __USB_MOUSE__MAC99 0x8008003C
unsigned char IO_TYPE;
unsigned char* p_vram; unsigned char* p_vram;
unsigned char* p_bios; unsigned char* p_bios;
void get_io_type(void) void get_io_type(void)
{ {
if (*(unsigned char*)__VRAM__BEIGE == beige) IO_TYPE = beige; if (*(unsigned char*)__VRAM__BEIGE == beige) IO_TYPE = beige;
@ -21,9 +23,7 @@ void init(void)
{ {
if (IO_TYPE == beige) if (IO_TYPE == beige)
{ {
p_vram = __VRAM__BEIGE; for(;;); // unsupported yet.
p_bios = __BIOS__BEIGE;
} }
else if (IO_TYPE == mac99) else if (IO_TYPE == mac99)
{ {
@ -36,29 +36,23 @@ void main(void)
{ {
get_io_type(); get_io_type();
init(); init();
clearscreen(0xAA,0xBB); clearscreen(100,85,100, 0x100000);
for(;;); for(;;);
} }
void clearscreen(unsigned char a, unsigned char b) void clearscreen(unsigned char a, unsigned char b, unsigned char c, int n)
{ {
init(); init();
for (unsigned int i = 0; i<0x100000; i++) for (unsigned int i = 0; i<n; i++)
{ {
*p_vram = a; //24-bit VGA
*p_vram = 0;
p_vram++; p_vram++;
*p_vram = b; *p_vram = a;
p_vram++;
*p_vram = b;
p_vram++;
*p_vram = c;
p_vram++; p_vram++;
} }
} }
void noisescreen(void)
{
init();
for (unsigned int i = 0; i<0x200000; i++)
{
*p_vram = *(p_bios+0x2F0000+i);
p_vram++;
}
}

View File

@ -1,4 +1,3 @@
.globl _start .globl _start
_start: _start:
li 1, 0xac
b main b main

View File

@ -8,14 +8,15 @@
: fba frame-buffer-adr ; : fba frame-buffer-adr ;
: beige-vram 80000000 ; : mac99-vram 81000000 ; : beige-vram 80000000 ; : mac99-vram 81000000 ;
: beige-error ." G3 Beige machine isn't supported yet. Please run it with a post-1999 PowerPC Mac." ;
variable run variable run
-1 run ! -1 run !
fba beige-vram = if ." Beige" cr 100 0 do 0BE i beige-vram + c! loop then fba beige-vram = if beige-error cr 100 0 do 0BE i beige-vram + c! loop then
fba mac99-vram = if ." mac99" cr 100 0 do 05A i mac99-vram + c! loop then fba mac99-vram = if ." mac99" cr 100 0 do 05A i mac99-vram + c! loop then
fba beige-vram diff fba mac99-vram diff and if ." Hardware not supported." cr 0 run ! then fba beige-vram diff fba mac99-vram diff and if ." Hardware not supported." cr 0 run ! then
fba 100 dump
run @ 0 = if 1 0 do 0 +loop then run @ 0 = if 1 0 do 0 +loop then
boot hd:,\boot\kernel.elf boot hd:,\boot\kernel.elf