This document is the specification of ??OO lib.
It list the components and show their use.

OO?? lib is an Object Oriented librairy, for direct assembly usage.

All objects obey to the following rules.

ESI is the pointer to current/son object
EDI is the pointer to parent object

An object is an array of values, generally 32 bits, but can be used as you need.

The pimary structure, the simplest, is like that:

item0:
dd func

item1:
dd func,argument

only two dwords.
func is the minimal requirement, it says what is the routine to call when crossed.
argument is intended to be the context for the function, as functions don't have their own context.

It don't force to write everything in this concept, but can help to build gui and controls easy.

The functions are in differents class,

THE GRAPHIC CLASS:

item2:
dd func,x,y,xl,yl,data

the NODE function is used to dive in the arborescence.
the 4 first arguments are X,Y,XL,YL graphic coordinates of the object.
it defines a definition window for the object, it is relative to parent item
and sometimes absolute, for particular functions.

the screen and the mouse are the main objects of this class.

THE EVENT CLASS:

this class can be called from the graphic class.
for that, it have an interface, called the board.
the keyboard is the main object of this class.
event can bve generated by any port or object.
it is also possible to simulate events.

board:
dd func,0,0,0,0,size
dd item3

item3:
dd func,size
dd key1,func1,arg1
dd key2,func2,arg2

THE HIDDEN CLASS:

this class is the one that perform "invisible" actions, like buffer changing, port polling,
wait for something, load some disk, etc...

this class can be called from any of the two others.
btw, it have two interfaces.
one for the graphics, and one for the events.

