Missing routines for 3.0 Unix VM: what's the status?

Stefan Matthias Aust sma at 3plus4.de
Wed Feb 7 23:26:08 UTC 2001


Ned,

At 14:55 07.02.01 -0800, you wrote:
>I was working with the sources from Ian's directory, as well (in the 
>jitter subdirectory); mine are (I think) 2.8pre5.

Yes, that's the same version.  (I still wonder why with 5 project managers 
nobody can put that source to sourceforge)

>Did you generate all the sources from the 3.0 (updated) image?

Yes. Using Interpreter translate whatever and then the line to generate the 
supporting files like sq.h and so one.  I'm sorry, I can't be more specific 
at the moment.

>dir_GetMacFileTypeAndCreator
>ioDisablePowerManager

These are trivial. Just ignore.

>dropInit
>dropRequestFileHandle
>dropRequestFileName
>dropShutdown

I implemented stubs.

>ioCanRenameImage
>ioCanWriteImage
>ioDisableImageWrite
>ioGetSecureUserDirectory
>ioGetUntrustedUserDirectory
>ioScreenDepth

Don't know why but I didn't get these.

>ioGetNextEvent
>ioSetInputSemaphore

These are IMHO the most important ones.

>snd_SetVolume
>snd_Volume

Can be safely ignored.

>sqFileFlush
>sqImageFileStartLocation

Actually, these two are just defines.  You might want to check whether 
you're using the right sq.h file.  You'll however get a however a couple of 
other errors then.  You should disable Ian's experimental gzip-image support.

I also got an error because of setSocketPollFunction and another similar 
function in platform.exports.

>The Windows sources may make more sense (see sqWin32Window.c)

Does it signal the semaphore?  If not, I don't think, event support is working.

>int ioGetNextEvent(sqInputEvent *evt) {
>         if (eventBufferGet == eventBufferPut) {
>                 ioProcessEvents();
>         }
>         if (eventBufferGet == eventBufferPut)
>                 return 1;

This line looks strange.  If the buffer is empty, this should never have 
been called.  Or at least, the primitive must fail. IMHO.  This way, evt 
isn't initialized which could be already bad.  Or, if that doesn't crash 
the system, it will magical "generate" an event as it reuses the old structure.

>         *evt = eventBuffer[eventBufferGet];
>         eventBufferGet = (eventBufferGet+1) % MAX_EVENT_BUFFER;
>         return 1;

Sure. The obvious implementation.  The interesting question however is, 
what kinds of events are possible?

bye
--
My eyes adapted to the darkness... finally I can see clearly now





More information about the Squeak-dev mailing list