Discussion:
A2osX: Multi-Tasking OS for Apple II goes v0.9.1
(too old to reply)
Antoine Vignau
2018-05-24 18:10:14 UTC
Permalink
...and offers a preemptive kernel.

Rémi Gibert, the author, is looking for contributors.

For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/

Thank you,
Antoine
Nicola
2018-05-25 06:51:09 UTC
Permalink
Post by Antoine Vignau
...and offers a preemptive kernel.
That looks like a great project!
Can you elaborate a bit on how "preemptive" works in this context?
I guess that process cooperation is needed anyway, without hardware
support.

Nicola
Antoine Vignau
2018-05-25 07:55:58 UTC
Permalink
Please contact the author,
av
Zellyn
2018-05-25 13:28:50 UTC
Permalink
Post by Nicola
Post by Antoine Vignau
...and offers a preemptive kernel.
That looks like a great project!
Can you elaborate a bit on how "preemptive" works in this context?
I guess that process cooperation is needed anyway, without hardware
support.
Nicola
Hmmm. Did you click through?
Post by Nicola
Kernel 0.9.1 is now preemptive. All you need is a “tick” source, see below for supported hardware.
Zellyn
remy gibert
2018-06-12 12:36:08 UTC
Permalink
Post by Zellyn
Post by Nicola
Post by Antoine Vignau
...and offers a preemptive kernel.
That looks like a great project!
Can you elaborate a bit on how "preemptive" works in this context?
I guess that process cooperation is needed anyway, without hardware
support.
Nicola
Hmmm. Did you click through?
Post by Nicola
Kernel 0.9.1 is now preemptive. All you need is a “tick” source, see below for supported hardware.
Zellyn
mmmmm...Did not get clearly your question, but here is my answer ;-)

If kernel detects an "Apple II Mouse Card", it activates IRQ for VBL and leave mouse move/click DEACTIVATED.

This generates a 50/60hz tick source, depending of your hardware (US or EU Apple)
Thats why you have to specify in KCONFIG the "Macine Timing" parameter.

see :
Loading Image...

if you want mouse support for the GUI, you have to load MOUSE.DRV that will activate move/click to animate the pointer WITHOUT disturbing IRQ/VBL.
Nicola
2018-06-12 13:51:46 UTC
Permalink
Post by remy gibert
Post by Zellyn
Post by Nicola
Post by Antoine Vignau
...and offers a preemptive kernel.
That looks like a great project!
Can you elaborate a bit on how "preemptive" works in this context?
I guess that process cooperation is needed anyway, without hardware
support.
Nicola
Hmmm. Did you click through?
Post by Nicola
Kernel 0.9.1 is now preemptive. All you need is a “tick” source, see below for supported hardware.
Zellyn
Sorry for the late feedback. Yes, I had skimmed through the Readme, but
didn't get at once was a “tick” source was: somehow, I had read
“source” as… source code :D
Post by remy gibert
mmmmm...Did not get clearly your question, but here is my answer ;-)
If kernel detects an "Apple II Mouse Card", it activates IRQ for VBL and leave mouse move/click DEACTIVATED.
This generates a 50/60hz tick source, depending of your hardware (US or EU Apple)
Thats why you have to specify in KCONFIG the "Macine Timing" parameter.
https://github.com/burniouf/A2osX/blob/master/.screen-shots/ScreenShot.KCONFIG.png
if you want mouse support for the GUI, you have to load MOUSE.DRV that will activate move/click to animate the pointer WITHOUT disturbing IRQ/VBL.
Thanks for the clear explanation!

I hope I'll have some time during the summer to play with your project!

Nicola
Oliver Schmidt
2018-06-12 19:20:03 UTC
Permalink
Hi Remy,
Post by remy gibert
if you want mouse support for the GUI, you have to load MOUSE.DRV that
will activate move/click to animate the pointer WITHOUT disturbing IRQ/VBL.
Or You just poll the mouse during the VBL IRQ - and keep Move/Click IRQ
off. E.g. the cc65 mouse driver does that - not because of unwanted side
effects of other VBL IRQ users but for those two reasons:

- I needed the VBL IRQ anyway to redraw the (potentially unmoved) pointer
in case the forground program trashed it. I was very happy with the
responsiveness of the mouse without Move/Click IRQ so I didn‘t see the
point in stealing more cycles from the foreground program than the VBL IRQ
already does. You can experience that driver e.g. with the Contiki web
browser.

- The Move/Click IRQ seemd at least to me to work so differently on the
Mousecard, the //c and the IIgs that I would have had to add machine
detection code and do things slightly different. In contrast my current
polling during VBL IRQ is totally machine agnostic.

Regards,
Oliver
remy gibert
2018-06-12 19:39:28 UTC
Permalink
Post by Oliver Schmidt
Hi Remy,
Post by remy gibert
if you want mouse support for the GUI, you have to load MOUSE.DRV that
will activate move/click to animate the pointer WITHOUT disturbing IRQ/VBL.
Or You just poll the mouse during the VBL IRQ - and keep Move/Click IRQ
off. E.g. the cc65 mouse driver does that - not because of unwanted side
- I needed the VBL IRQ anyway to redraw the (potentially unmoved) pointer
in case the forground program trashed it. I was very happy with the
responsiveness of the mouse without Move/Click IRQ so I didn‘t see the
point in stealing more cycles from the foreground program than the VBL IRQ
already does. You can experience that driver e.g. with the Contiki web
browser.
- The Move/Click IRQ seemd at least to me to work so differently on the
Mousecard, the //c and the IIgs that I would have had to add machine
detection code and do things slightly different. In contrast my current
polling during VBL IRQ is totally machine agnostic.
Regards,
Oliver
Hello Oliver,

MOUSE.DRV just read the screen holes that were updated by IRQ/VBL handler.(calling SERVEMOUSE/READMOUSE)
Foreground process (SBIN/GUI) polls MOUSE.DRV, and update pointer according move,click.....and timer event! that permits animated pointer like the "hourglass" or blinking text edit.....

That does the trick.
Oliver Schmidt
2018-06-15 06:45:54 UTC
Permalink
Hi Remy,
Post by remy gibert
Post by remy gibert
if you want mouse support for the GUI, you have to load MOUSE.DRV that
will activate move/click to animate the pointer WITHOUT disturbing IRQ/VBL.
That seemed to me like you‘d see a challenge there. Therefore I described
what I considered an alternative approach / a solution.

Then you answered with what from my pov is a description of the very same
approach and end with...
Post by remy gibert
That does the trick.
I‘d say we both can be happy that we don‘t need to get to the point in a
technical discussion for a living ;-)

Regards,
Oliver
remy gibert
2018-06-15 07:02:19 UTC
Permalink
Post by Oliver Schmidt
Hi Remy,
Post by remy gibert
Post by remy gibert
if you want mouse support for the GUI, you have to load MOUSE.DRV that
will activate move/click to animate the pointer WITHOUT disturbing IRQ/VBL.
That seemed to me like you‘d see a challenge there. Therefore I described
what I considered an alternative approach / a solution.
Then you answered with what from my pov is a description of the very same
approach and end with...
Post by remy gibert
That does the trick.
I‘d say we both can be happy that we don‘t need to get to the point in a
technical discussion for a living ;-)
Regards,
Oliver
Just try to explain things the most clearly as i can in a language that is not my native.
so, once again, "sorry for the offense, Sir"
remy gibert
2018-06-12 11:40:13 UTC
Permalink
Post by Nicola
Post by Antoine Vignau
...and offers a preemptive kernel.
That looks like a great project!
Can you elaborate a bit on how "preemptive" works in this context?
I guess that process cooperation is needed anyway, without hardware
support.
Nicola
Previous Kernel versions were designed as cooperative.

BIN must be designed with 3 entry points : INIT,RUN;QUIT. an optional entry point is EVENT if you want your BIN notified for TIMER events, for example.

the BIN/SBIN were responsible to give back control to kernel at the end of "RUN"
with CC if you want to be rentered at RUN by kernel or with CS and A=RC if you want to quit.
Additionally, a "SLEEP" API call is available if you want to "escape" a loop in your RUN code.


When preemptive mode is on, the kernel interrupt INIT/RUN/QUIT, and basically simulate a SLEEP call.


SLEEP save registers, 6502 ZP & HW stack on the process stack, and switch to another context, calling INIT,RUN,QUIT or RESUME (from SLEEP state) to next process in the list.

Every processes have :

a CS segment,relocatable code (includes initialized DATA)
a DS segment, uninitialized DATA
a SS segment, Stack segment for parameter passing....
a ZP context & PTRs : pPS, pCode, pData, pStack, pBase

Basically, every SBIN/BIN have been written to be "cooperative" and "preemtive" compliant.
Michael Mann
2018-05-25 23:53:04 UTC
Permalink
What can the OS do? Besides being incredibly cool, what's the intended use for the OS? What can you do with it? Is there an end goal?

Did I read correctly that there'll be a 'C' compiler? Could the new Plasma JIT run on this OS?

Is there a video of the OS in action? A video can fork over a lot of information in a way that's very accessible. Do you have a video showing the OS booting, various commands being run, some simple uses like pinging a site, or running a machine-wide diagnostics, etc.?

Is there any way that this OS can migrate to the IIgs? Then, like 'X' on *nix, you could have a GUI on top of a preemptive OS on the IIgs. That also would be very cool.
remy gibert
2018-06-12 10:32:18 UTC
Permalink
Post by Michael Mann
What can the OS do? Besides being incredibly cool, what's the intended use for the OS? What can you do with it? Is there an end goal?
Did I read correctly that there'll be a 'C' compiler? Could the new Plasma JIT run on this OS?
Is there a video of the OS in action? A video can fork over a lot of information in a way that's very accessible. Do you have a video showing the OS booting, various commands being run, some simple uses like pinging a site, or running a machine-wide diagnostics, etc.?
Is there any way that this OS can migrate to the IIgs? Then, like 'X' on *nix, you could have a GUI on top of a preemptive OS on the IIgs. That also would be very cool.
Many of your questions could find answers at GitHub's ReadMe.md

about C compiler (and the ASM), i use these sub projects (and others) to identify needed API to include in the kernel OR in seperate lib, then i check the code againt the added API....

for now, i stopped C, because i met an issue with MATH API not very well designed....i will review MATH API, then i will go back to C....and so on....

ASM helped me desngning the AUX memory manager....

PLASMA could be ported to A2osX, and benefit many API already in place....
remy gibert
2018-06-12 12:04:41 UTC
Permalink
Post by Michael Mann
What can the OS do? Besides being incredibly cool, what's the intended use for the OS? What can you do with it? Is there an end goal?
Did I read correctly that there'll be a 'C' compiler? Could the new Plasma JIT run on this OS?
Is there a video of the OS in action? A video can fork over a lot of information in a way that's very accessible. Do you have a video showing the OS booting, various commands being run, some simple uses like pinging a site, or running a machine-wide diagnostics, etc.?
Is there any way that this OS can migrate to the IIgs? Then, like 'X' on *nix, you could have a GUI on top of a preemptive OS on the IIgs. That also would be very cool.
btw, doing such a video could be a contribution ;-)

about the GUI, i completed most of the graphic primitives for DHGR mixed mode support. i added a way to use AUX mem to store graphical objects (fonts, bitmaps...etc...) now it's time to write the window manager.
TheJ
2018-06-12 16:54:23 UTC
Permalink
Post by remy gibert
Post by Michael Mann
What can the OS do? Besides being incredibly cool, what's the intended
use for the OS? What can you do with it? Is there an end goal?
Did I read correctly that there'll be a 'C' compiler? Could the new
Plasma JIT run on this OS?
Is there a video of the OS in action? A video can fork over a lot of
information in a way that's very accessible. Do you have a video showing
the OS booting, various commands being run, some simple uses like pinging
a site, or running a machine-wide diagnostics, etc.?
Is there any way that this OS can migrate to the IIgs? Then, like 'X' on
*nix, you could have a GUI on top of a preemptive OS on the IIgs. That
also would be very cool.
btw, doing such a video could be a contribution ;-)
about the GUI, i completed most of the graphic primitives for DHGR mixed
mode support. i added a way to use AUX mem to store graphical objects
(fonts, bitmaps...etc...) now it's time to write the window manager.
For the Window Manager, why not leverage the "Apple 2 Desktop / MouseDesk"
code.
There is a very active project that has been disassembling/Modularizing that
code base for the last few months.
The cc65 tool set is being used.

You can see it here:
https://github.com/inexorabletash/a2d

Leveraging the work of others is almost the same as having more people on
your project :-)

Jason
remy gibert
2018-06-12 17:33:34 UTC
Permalink
Post by TheJ
Post by remy gibert
Post by Michael Mann
What can the OS do? Besides being incredibly cool, what's the intended
use for the OS? What can you do with it? Is there an end goal?
Did I read correctly that there'll be a 'C' compiler? Could the new
Plasma JIT run on this OS?
Is there a video of the OS in action? A video can fork over a lot of
information in a way that's very accessible. Do you have a video showing
the OS booting, various commands being run, some simple uses like pinging
a site, or running a machine-wide diagnostics, etc.?
Is there any way that this OS can migrate to the IIgs? Then, like 'X' on
*nix, you could have a GUI on top of a preemptive OS on the IIgs. That
also would be very cool.
btw, doing such a video could be a contribution ;-)
about the GUI, i completed most of the graphic primitives for DHGR mixed
mode support. i added a way to use AUX mem to store graphical objects
(fonts, bitmaps...etc...) now it's time to write the window manager.
For the Window Manager, why not leverage the "Apple 2 Desktop / MouseDesk"
code.
There is a very active project that has been disassembling/Modularizing that
code base for the last few months.
The cc65 tool set is being used.
https://github.com/inexorabletash/a2d
Leveraging the work of others is almost the same as having more people on
your project :-)
Jason
i already know this project. great work!

but writing a WM (and any piece of code!) on top of A2osX kernel brings many constraints on code writing.
The underlying modules are already there (Preemtive kernel,Driver manager, graphic primitives..font manager.....)
all remaining work is implementing in assembly language well known algorithms (clipping, ...etc..) to give a WM life..
so i decided to write the WM from scratch, which i think is not the more difficult task to do....(i already wrote TCPIP stack from scratch.....and i'm still alive!)
Patrick Kloepfer
2018-06-12 00:31:36 UTC
Permalink
Post by Antoine Vignau
...and offers a preemptive kernel.
Rémi Gibert, the author, is looking for contributors.
For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/
Thank you,
Antoine
Antonie,

Is there a message board or wiki or something other than the github site? I have been trying the latest boot/build disks and have one of the beta UTHERNET2's and cannot get the TCPIPD to load. The UTHERNET2.DRV loads, but then TCPIPD and DHCPCLNT both save device not found. I want to see if this is an issue with the latest A2osx to report to them or with the card to report back to Glenn.

Hey links would be appreciated.

Patrick
Antoine Vignau
2018-06-12 04:18:26 UTC
Permalink
I don't know. I see that Rémy is active on comp.sys.apple2.programmer

av
remy gibert
2018-06-12 10:21:40 UTC
Permalink
Post by Patrick Kloepfer
Post by Antoine Vignau
...and offers a preemptive kernel.
Rémi Gibert, the author, is looking for contributors.
For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/
Thank you,
Antoine
Antonie,
Is there a message board or wiki or something other than the github site? I have been trying the latest boot/build disks and have one of the beta UTHERNET2's and cannot get the TCPIPD to load. The UTHERNET2.DRV loads, but then TCPIPD and DHCPCLNT both save device not found. I want to see if this is an issue with the latest A2osx to report to them or with the card to report back to Glenn.
Hey links would be appreciated.
Patrick
See :

https://github.com/burniouf/A2osX/commit/51820dfb56b69f13ab47fcad1fcb87092c34af3a

Corrected in lastest A2OSX.BOOT / A2OSX.BUILD
remy gibert
2018-06-12 12:58:54 UTC
Permalink
Post by Patrick Kloepfer
Post by Antoine Vignau
...and offers a preemptive kernel.
Rémi Gibert, the author, is looking for contributors.
For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/
Thank you,
Antoine
Antonie,
Is there a message board or wiki or something other than the github site? I have been trying the latest boot/build disks and have one of the beta UTHERNET2's and cannot get the TCPIPD to load. The UTHERNET2.DRV loads, but then TCPIPD and DHCPCLNT both save device not found. I want to see if this is an issue with the latest A2osx to report to them or with the card to report back to Glenn.
Hey links would be appreciated.
Patrick
...also corrected the LSDEV command, check if you see ETHx device (where x is the slot you put UthernetII board in)
remy gibert
2018-06-13 06:17:46 UTC
Permalink
Post by Patrick Kloepfer
Post by Antoine Vignau
...and offers a preemptive kernel.
Rémi Gibert, the author, is looking for contributors.
For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/
Thank you,
Antoine
Antonie,
Is there a message board or wiki or something other than the github site? I have been trying the latest boot/build disks and have one of the beta UTHERNET2's and cannot get the TCPIPD to load. The UTHERNET2.DRV loads, but then TCPIPD and DHCPCLNT both save device not found. I want to see if this is an issue with the latest A2osx to report to them or with the card to report back to Glenn.
Hey links would be appreciated.
Patrick
Hello Patrick,

do you confirm latest media solved your issue ?
If not, open a case at https://github.com/burniouf/A2osX/issues

Remy
Patrick Kloepfer
2018-06-15 02:47:27 UTC
Permalink
Post by remy gibert
Post by Patrick Kloepfer
Post by Antoine Vignau
...and offers a preemptive kernel.
Rémi Gibert, the author, is looking for contributors.
For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/
Thank you,
Antoine
Antonie,
Is there a message board or wiki or something other than the github site? I have been trying the latest boot/build disks and have one of the beta UTHERNET2's and cannot get the TCPIPD to load. The UTHERNET2.DRV loads, but then TCPIPD and DHCPCLNT both save device not found. I want to see if this is an issue with the latest A2osx to report to them or with the card to report back to Glenn.
Hey links would be appreciated.
Patrick
Hello Patrick,
do you confirm latest media solved your issue ?
If not, open a case at https://github.com/burniouf/A2osX/issues
Remy
Hi Remy,

I just downloaded the latest from github. I placed the images on a usb stick onto my CFFA (slot 4, virt flop slot 5) and booted BOOT.po (PR#5). When it gets to INSDRV CONSOLE.drv, it says Apple IIe 80 Col Driver. then [$FE]: Out of Memory Handle. I am going to copy the boot disk files unto my MicroTurbo Drive (S7) and remove the CFFA and try again. If still fail, I will remove ThunderClock and try, etc. Will provide update here as I have it. Once I figure out where problem might be, will open case on github.

Patrick
Patrick Kloepfer
2018-06-15 03:27:10 UTC
Permalink
Post by Oliver Schmidt
Post by remy gibert
Post by Patrick Kloepfer
Post by Antoine Vignau
...and offers a preemptive kernel.
Rémi Gibert, the author, is looking for contributors.
For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/
Thank you,
Antoine
Antonie,
Is there a message board or wiki or something other than the github site? I have been trying the latest boot/build disks and have one of the beta UTHERNET2's and cannot get the TCPIPD to load. The UTHERNET2.DRV loads, but then TCPIPD and DHCPCLNT both save device not found. I want to see if this is an issue with the latest A2osx to report to them or with the card to report back to Glenn.
Hey links would be appreciated.
Patrick
Hello Patrick,
do you confirm latest media solved your issue ?
If not, open a case at https://github.com/burniouf/A2osX/issues
Remy
Hi Remy,
I just downloaded the latest from github. I placed the images on a usb stick onto my CFFA (slot 4, virt flop slot 5) and booted BOOT.po (PR#5). When it gets to INSDRV CONSOLE.drv, it says Apple IIe 80 Col Driver. then [$FE]: Out of Memory Handle. I am going to copy the boot disk files unto my MicroTurbo Drive (S7) and remove the CFFA and try again. If still fail, I will remove ThunderClock and try, etc. Will provide update here as I have it. Once I figure out where problem might be, will open case on github.
Patrick
A Little Update. After copying the files over, removing the CFFA and loading A2osx.system, it would load the screen driver and then hang without error, never displaying the login screen. I ended up removing the Thunderclock and could finally get A2OSX to load and give a login prompt. Oddly, before with the clock in, A2osx would recognize it as a tick source and load the right driver. It was in Slot 1 if that makes a difference.

Anyway, I edited startup to load the ether2 driver, tcpipd and dhcpclnt. A2osx booted, drivers loaded and got ip address. IPconfig, showed everything you would expect. NETstat showed info, but formatting was off. Ping to bad hostname bombed out to Monitor. Ping to valid ip address, scrolled tons of pings, but when Ctrl-C, it exited to Console screen with (Mem Freed) and could not get shell screen back.

I should note, that since I moved this to work off MicroTurbo drive, I am running under prodos 2.4.1 and not the version on your floppies.

I will do some more testing tomorrow and work on notes to post on Github.

Patrick
remy gibert
2018-06-15 07:13:08 UTC
Permalink
Post by Patrick Kloepfer
Post by Oliver Schmidt
Post by remy gibert
Post by Patrick Kloepfer
Post by Antoine Vignau
...and offers a preemptive kernel.
Rémi Gibert, the author, is looking for contributors.
For more information, please visit http://a2central.com/7715/a2osx-multi-tasking-os-for-apple-ii-goes-v0-9-1/
Thank you,
Antoine
Antonie,
Is there a message board or wiki or something other than the github site? I have been trying the latest boot/build disks and have one of the beta UTHERNET2's and cannot get the TCPIPD to load. The UTHERNET2.DRV loads, but then TCPIPD and DHCPCLNT both save device not found. I want to see if this is an issue with the latest A2osx to report to them or with the card to report back to Glenn.
Hey links would be appreciated.
Patrick
Hello Patrick,
do you confirm latest media solved your issue ?
If not, open a case at https://github.com/burniouf/A2osX/issues
Remy
Hi Remy,
I just downloaded the latest from github. I placed the images on a usb stick onto my CFFA (slot 4, virt flop slot 5) and booted BOOT.po (PR#5). When it gets to INSDRV CONSOLE.drv, it says Apple IIe 80 Col Driver. then [$FE]: Out of Memory Handle. I am going to copy the boot disk files unto my MicroTurbo Drive (S7) and remove the CFFA and try again. If still fail, I will remove ThunderClock and try, etc. Will provide update here as I have it. Once I figure out where problem might be, will open case on github.
Patrick
A Little Update. After copying the files over, removing the CFFA and loading A2osx.system, it would load the screen driver and then hang without error, never displaying the login screen. I ended up removing the Thunderclock and could finally get A2OSX to load and give a login prompt. Oddly, before with the clock in, A2osx would recognize it as a tick source and load the right driver. It was in Slot 1 if that makes a difference.
Anyway, I edited startup to load the ether2 driver, tcpipd and dhcpclnt. A2osx booted, drivers loaded and got ip address. IPconfig, showed everything you would expect. NETstat showed info, but formatting was off. Ping to bad hostname bombed out to Monitor. Ping to valid ip address, scrolled tons of pings, but when Ctrl-C, it exited to Console screen with (Mem Freed) and could not get shell screen back.
I should note, that since I moved this to work off MicroTurbo drive, I am running under prodos 2.4.1 and not the version on your floppies.
I will do some more testing tomorrow and work on notes to post on Github.
Patrick
Thanx Patrick, this is exactly the kind of input i need.

To sum up, 3 issues:

- ThunderClock hanging at detection. (Mine is fauly cannot even manage to make it working after changing most of the ICs and others....)

- NetStat has corrupted output.

- ping bad.dns.com -> Monitor crash, ping good.dns.com -> Memory corruption detected by KERNEL

I have enough details to start fix that but would you mind opening tickets at GitHub for properly tracking that ?

About ProDOS 2.4.x, i have no problem switching from 2.0.3 to 2.4.x, but i read somewhere that the number of concurrent opened files has been decreased from 8 to 4....is that true ?
as A2osX is using intensively file access (specially in multiple sessions, it could be a problem.
A ticket about this point has been opened at GH, input welcome.

Loading...