[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
VGA output on macppc
許です。
G4 Tiでpresentaitonをしようと思っていろいろ試したんですが、以下の
ような問題に悩んでいます。
1) G4 Tiで
- 640x480
- 800x600
- 1024x768
それぞれのモード用の modeline 設定
2) それぞれのモードに「Xを終了する事無しに」切替える方法
(まぁ、これは一度終了させても良いけど)
3) それをVGA outに出力させる方法
一応、添付してみました。が、動くかどうかを試すには、1)をclearし
なければならないので試せていません。
どなたか、解決できている方いらっしゃいませんか?
ほ
/*
* Copyright (C) 1996 Paul Mackerras (paulus@linuxcare.com.au)
*
* 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; either version
* 2 of the License, or (at your option) any later version.
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/fcntl.h>
#include <sys/mman.h>
static inline void eieio()
{
asm volatile("eieio" : :);
}
unsigned long regs;
static inline unsigned int ld(int regno)
{
unsigned int x;
asm volatile ("lwbrx %0,0,%1; eieio" : "=r" (x) : "r" (regs + regno));
return x;
}
static inline void st(int regno, unsigned int x)
{
asm volatile ("stwbrx %0,0,%1; eieio" : : "r" (x), "r" (regs + regno));
}
main(int ac, char **av)
{
int fd, on;
int a, x;
if ((fd = open("/dev/ttyE0", O_RDWR)) < 0) {
perror("/dev/ttyE0");
exit(1);
}
regs = (unsigned long)
mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0xa0000000);
if (regs == -1) {
perror("mmap");
exit(1);
}
on = (ac > 1)? atoi(av[1]): 1;
st(0x300, ld(0x200));
st(0x304, ld(0x204));
st(0x308, ld(0x208));
st(0x30c, ld(0x20c));
st(0x324, ld(0x224));
st(0x32c, ld(0x22c));
st(0x3f8, on? ((ld(0x50) & 0x700) | 0x2210000): 0x4000000);
st(0x3e0, ld(0x2e0));
st(0x3e4, ld(0x2e4));
x = ld(0x8) & ~0xff;
st(0x8, x | 2);
a = ld(0x9);
st(0x8, x | 0xaa);
st(0x9, a & ~0x20000);
st(0x8, x | 3);
a = ld(0x9);
st(0x8, x | 0xab);
st(0x9, a);
st(0x8, x | 4);
a = ld(0x9);
st(0x8, 0xac);
st(0x9, a);
st(0x58, (ld(0x58) & ~0x10));
st(0x54, on? (ld(0x54) | 0x8000): (ld(0x54) & ~0x8000));
exit(0);
}