VM issues.
Ian Piumarta
ian.piumarta at inria.fr
Sun Mar 6 21:59:16 UTC 2005
On Mar 5, 2005, at 05:02, Alan Grimes wrote:
> 1. The current SVM source of the VM can't be configured on unix, the
> error messages are:
>
> acplugins.m4:9: error: m4_defn: undefined macro: _m4_divert_diversion
Cannot reproduce. FWIW, m4_divert does not occur anywhere in my
acplugins.m4 -- so I figure it must come from expanding an
auto{conf,make} macro somewhere and maybe you should double-check that
your autoconf/automake are installed correctly, working and of
compatible versions.
> 2. My current unix squeak VM, while operable in the framebuffer mode
> only supports 640x480x8(bit) (I'm not sure about the last but it is
> definitely not more than 8).
>
> It really needs a method for controlling screen resolutions....
The fbdev driver should use whatever depth (8, 15, 16, 24) it finds the
console in when the VM starts. Try changing it with 'vidmode' before
running Squeak.
> 3. I currently have two monitors, it would be very nice to be able to
> open the second fb as well. =)
Not trivial.
> 4. To address 2 and 3, I wanted to try out different display libraries
> such as ggi, SDL, and DirectFB. Unfortunately even though the coding
> style is vastly improved over 3.4, the interface between the VM and
> its display plugins is COMPLETELY UNDOCUMENTED.
The interface is basically the same as it always was: the traditional
bunch of ioFooBar() functions that deal with the keyboard, mouse and
screen. To make pluggable drivers I just put them inside a structure
and called them indirectly. (Think of this like a 'display proxy' for
calling the display driver, in exactly the same way that plugins use an
'interpreter proxy' to call functions inside the VM.) The functions
themselves haven't changed significantly in years; certainly not since
they were documented in the New Blue Book (modulo events, which I think
weren't quite ready by the time it went to press), and the names
haven't changed at all since then. The only additional thing is that
each driver exports a function that returns a pointer to its local
interface structure, through which all display-related calls are
subsequently made (similar in operation to the
'getInterpreterProxy()').
You're easiest route would be to copy vm-display-null (which contains
stubs for all the io functions, plus a working 'contract' to supply an
interface structure to the VM) and then fill out the implementation of
each stub according to the display device you're driving.
You can mostly ignore the second half of the display interface
structure whose functions are related to OpenGL. Simply failing the
primitives should work.
Ian
More information about the Squeak-dev
mailing list
|