[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] Firebee Coldfire MiNT Kernel and NFS

That lead me to a further consideration. User programs which call Super() to switch to supervisor mode and do infinite loops without doing any GEMDOS call (ex: demos) prevent multitasking: they hog the CPU and other tasks can't execute. If they detect FreeMiNT, they could call Syield() on each VBL for example, so other tasks could execute.
On other words: if I understand correctly, supervisor programs could do multitasking in a cooperative way.
Just a side note, demos (or any other graphical apps) can run in usermode without bigger problems. Quake, for example, was a 100% user-mode app, then I had to add my own VBL handler because of the triple-buffer (there's no way to do triple buffering solely using user mode calls) but still, you can listen to aniplayer in the background, for example :)
Now I understand better that phenomenon: if you use GEM=ROM to run the ROM AES from FreeMiNT, the keyboard does not work. I think it is because the AES runs in supervisor mode, and does not call the GEMDOS regularly. As a result, the keystroke handling (which seems to require multiple tasks in FreeMiNT) can't occur. I remember that people indicated a special accessory which called Syield() regularly. As far as I understand, the desktop accessories run inside the AES task (same process), so that's a trick to ask the AES to call Syield() regularly.
I think this is an excellent analysis of the problem. 

MiKRO / Mystic Bytes