Subject: Re: Further info on the Picasso II blues
To: Phil Kernick <philk@dhn.csiro.au>
From: Michael Teske <teske@mail.desy.de>
List: port-amiga
Date: 09/05/1996 12:35:02
On Thu, 5 Sep 1996, Phil Kernick wrote:

> Hi Bernd,
> 
> > A workaround would be to disable the Hardwarecursor in the kernel.
> > Edit grf_cl.c and look for the cl_ioctl function.
> 
> After disabling the hardware cursor, I finally get a cursor using Xcl!
> 
> As to the question of why the HW cursor works for AmigaOS, but not NetBSD
> with a 1M Picasso, I am happy to test any configurations.
> 
> I'd do a little poking around myself, but I'm limited in that I can't write
> to /dev/mem, and as such I can't look at the VGA registers.
> 

No need to write to /dev/kmem for this purpose. There is a defined 
interface for accessing VGA-Registers which is used by e.g. the Xserver. 
An example code could look like this:

#include <sys/file.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <amiga/dev/grfioctl.h>
#include <amiga/dev/grf_clreg.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int grffd;
    struct grfvideo_mode gv;
    volatile unsigned char *fb;
    volatile unsigned char *vgaba;

    /* open grf device */
    grffd = open("/dev/grf3", O_RDWR);
    if (grffd < 0)
    	{
    	perror("showreg");
    	return(0);
    	}

    /* vgaba is the VGA register base mapped to user space */
    vgaba = mmap(0, 65536, PROT_READ|PROT_WRITE, 0, grffd, 0);
    if ((int)vgaba <0)
    	{
	perror("showreg mmap");
        return(0);
    	}

    /* print contents of VGA registers */
   for (i=0;i<0x1d;i++)
     printf ("CRT%x: %x\n",i, (unsigned int)RCrt(vgaba,i)); /* CRT Regs */

   for (i=0;i<=0x1F;i++)
     printf ("SEQ%x: %x\n",i, (unsigned int)RSeq(vgaba,i)); /*Sequencer Regs*/


   /* Maybe you want other regs too */


    munmap(vgaba, 65536); /* unmap vgabase */


    close(grffd); /* close device */


    return(0);
}


Try this instead! Maybe it must be run as root, depends on the 
permissions of /dev/grf3.

This is also much saver as you are able to write to the vga registers _only_.

Have fun,

-- 
Michael Teske (teske@wotan.desy.de)