The main goal of this project is to provide a cross platform system with a special set of structures letting the applicaitons and data being altered at run time, and fragments of any code/data being shared by any application or data from other parts.

This is object oriented in any aspect, data, functions, applications and even the library itself are objects and can be nested as needed.

here is the logo of this project
very cool isn't it?

Here are links to specific items in this lib.
bootwriter, BW06 an application to write raw data on hard drives, support virtual drives, files and so on. This application should compile and work, if not, it means fool have a regression.

[url=]Tetris[/url] this version is made for the birthday of tetris, it took 3 days to made it as it is now. Add the support for beep.

[url=]fool3D[/url] this is the version for 3D support, it will be merged into fool (or fool will be merged into fool3D) in order to have 3D/2D/xD programming accessible from any line of fool code.

[url=]foolW[/url] this is the version of fool for windows, it supports win32 api an give you simplified interface to basic functions.
it also give you the possibility to modify the code at run time (because fool is designed to be runtime self modifiable), fool/fool3D will be merged into foolW

[url=]foolOs[/url] this Proof of concept is the goal of fool at it's begining, being an obejct oriented os able toself modify itself at runtime, and give user the experience to have a total control of the machine.

foolg this is the generic version of fool, for the moment, it is in development under windows, and the fool code inside should be the same used in foolos, the goal there is to get the minimal win32 interface in order to simulate the computer needed by foolos. next, it will be ported in linux and propagated to every fool versions.

[url=]foolGl[/url] this is the version with opengl support, will be factorised with fool3D in order to give a unique interface for any 3D development.

[url=]foolTr[/url] this is the full fool langage, based on very atomic objects, here, any instruction is fool based. it introduce the concept of "Real Programming Langage" because any item can call any other item and then, give the possibility to build items from items. next step will be to expand the function list with complex items, and give a real New instruction.

as i am building a shell, i want to have some ideas form fasm users.
what commands and syntax do you prefer?

the shell will permit to explore trees, edit trees, execute programs, and the best, execute commands like a script. then, as i am not informatician, and used to the GUI, i invite you to list some good stuff you want to see in this shell.

don't speak about DOS or LINUX commands, just about What do you prefer to have for intuitive use. it can be inspirated from existing command lines, but i'd prefer to have a really new vision of shell, more asm oriented.

for example:

Quote:

existing commands:
x, exit, q, quit to exit teh shell

help, h toggle the global help file

keymap toogle the keymap

rdtsc toogle the rdtsc application

null point the reply to null char

color %n% ,c %n% to change the color

path, p to set the comand line with the current path.

i have a little idea about the navigation, a sort of intuitive command, not cd or ls oriented, but directlly edit the desired path and hit enter
the comand path used to remember the current path in comand line.
and to change the current node, just change teh path and hit enter.
it will be updated in the path buffer, and remembered with path command.

existing comands are not definitive, for example, the x, q, quit commands can be reassigned.

About the syntax, what about the fasm syntax?

Code:

function operand1,operand2,operand3,operand4,.,.,...

for example;
box x,y,xl,yl,c

will create a new box in the current path.

the path is a reference in the tree.

the tree begin at [desk], [desk] hold the start of the tree.
[desk] is a value used by main, contained in the system memory of the application.

an application will be affected to each 1 MegaBytes, oriented in a V86 mode, supporting the vesa high resolution as a composition of little screen.
all screens will be decomposed in smaller screens.

then, it is a tree.

a visual file system.

the problem now is ot create new objects in this struture.

Description:

24/04/2019 current state of foolg. g stands for generic, not related to fasmg

when i started to add the fader and buttons functions, it appears to be a problem.
because theses functions will call a text, an image and a rectangle
and the "color" parameter have to be always after the coordinates, to keep a compatibility, and if an item cannot access it's onw structures like image or text, it can display a coloured rectangle, this is interresting in case of html parsing with access problems to the ressources.

it took me only 1 hour to modify everything in my poor testdemo code to work with this update.

but now, it is more friendly to create complex graphic objects.

but why do i create this librairy? does anyone use it's functions?
i create this librairy because it is my vision of intelligence.
something with a general structure like grammar, geometry, objects.
and something platform independant.
i need to create a set of addressing modes for fool. a feature that can use parameters as pointers, values, files, structures, etc etc.
the finality is to save memory and create a new instruction set.
the proof is:

i use a functions list.
each function have a pointer and this pointer have a fixed position inside the function list.
the flist is created during compile.

in order to use less memory, i want to create a sort of transparent initialisation layer.
something you don't have to do while coding your application.

the OS is a set of functions loaded at a reserved location in ram or cache.
for the moment, all my functions occupies less than 64k, largelly less than code cache on my PIII.

to use the mouse, just read the coordinates, deltas, and status in mouse structure.

Code:

mouse dd f.int33,.x,.y,.dx,.dy,.color,.bmp,.status,.wheel,.item

added the function f.grab, in order to grab graphic items.

2Dmap.asm is a test, to create a very big game map. more than 1000000*1000000 is very possible.

testfpu.asm is an attempt to mix real32 and fool, in order to make some precise computations.

justlib.asm is the minimal code required to use the comheader under dos.

oscilloscope.asm is an application to display some ram in a signal form.
it is also the start of a "win98 like" gui definition.

view application is a sort of hexadecimal reader in devellopment.
it will be the same base as oscilloscope, and will be the base of file system viewer.

13/03/09
update and backup of fool.
it will be the official package on fasm board. for THE REAL OS CONTEST.
this backup is more for me because tests will be very dangerous theses next days.

about files:
to use correctlly the system and ad applications, i will create the .app file type.
it will be a sort of MZ, but a little different.

the header will contain position and size of the local flist (updated at load time), and the offset of entry, generaly a gnode.
to execute these, i will create the anode, to execute applications into other segment.

then it will be possible to load external applications, with restricted access if coded exclusivelly in fool style.

as i am building a "real" interface, i need items to be handled by any user item.
theses "user items" are mouse, keyboard or any human device that will reflect the human action.

when i tell this, it is mainly to remember that computers don't need a system but we, we need one to use the power of this machine.

the keyboard can be avoided for many purposes because of need devices.
then, a human device will be used to drive the system.
the human device will integrate a set of functions.

two or more families of devices will be possible. like pointing, keyboard, microphone, etc...
theses families will have a common main structure.
one human peripheral detected will install itself as a system object.
the system will give the hability to applications to use transparentlly the devices.

and the main major change is to reorganise the execution process.

basically, the execution process is to dive into the fool tree using "main" item, and dive more and more with "gnode", "node", "xnode".

but now, a change occured, i decided to add a new item able to call items.
the buttons and screen zones.
(maybe later, the keyboard will too..)

it gives me some problems but nothing very sad, just a priority problem.

hello all.
i have the honor and regress to anounce that edfed will take a very long rest.
then, i'll stop all my coding/electronics/researches activities to travel and live a little more.
i lost my job about the power supply 1 week before it's achievment.
a little fed up by this stuff.
i'll ride my bike over the french roads.
i hope i'll recover the passion for coding after that.

bye bye.

i post the very last state of my dear FOOL machine just for the eventuality of material loss of my PC.
hope it will be there when i'll be back.

boot writer is an application made all in fool and a little assembly, to run under any DOS compatible environment.

the gui is simple.

first, the title bar:
displays a button to exit, and the name of the application.

just under this bar, the first form.
this edit form is the path of the file to load in the DOS file system.

to load the file, you should click on the form.

! when you load the file, the button "write it!" in the left down corner will display a "pixel image" of the file content, it is a cool trick i find usefull because it lets you verify the content with just one single look.

the second form lets you choose a drive detected via BIOS int13h.
valid drives will show their geometry in the drive popup window.

ones you selected the destination drive, you should verify the first sector coordinate in CHS.

for BOOT sector, all field should be C=0 H=0 S=1
for the second sector, CHS=0 0 2
etc...

the down right corner shows the size of the file in real sectors, and in bytes.

a single boot sector is 200h bytes, and 1 sector.

when you click on write it button

here is the screen shot of bootwriter application with ramview application.

alt+a for zoom out
alt+z for zoom in
grab the window will allow to move it on the screen.
while zoom, it will pt it alway at cursor position, i wait a little to fix the zoom in and out hot spot in the middle of the screen.

to test applications in applications folder:

put a line at the begining like this one:

Code:

include '../comsys.inc'

compile
and you will have the application ready to use.

to include the same application in shell.asm, comment the line described above

remember, everytime you want a stand-alone fool application, you need to include comsys.inc, then, it will include all the complete lib.
and then, it will limit the size for application to some 21kilobytes. but it is lagelly enough because fool doesn't need a lot of code to be exploited.

comsys.inc fits in 42799bytes ones it is compiled.

for example:
the windowed application bootwriter fits in 3214 bytes, including a lot of data buffers like the preview bitmap the total compiled size is 46013 bytes. 42799 bytes for the lib.

of course, the lib will be optimised one day, as it is in the prealpha devellopment stage, i don't seek for size optimisatoin, but only working version, full of bad tricks (sham on me), but one day, i will try to fit the lib in only 10 or 20kilobytes, i think it is possible, but it is not the goal for the moment.

there are some extra segment capability that can allow the useage of more than the 64k code segment.

the magic of:
fptr:
.offset=0 ;word
.segment=2 ;word
.size=4 ;dword

then, 8 bytes to define a memory zone in real mode.

there are very few functions in fool that needs to be modified to be ported to PM.

the lib is always in expansion, and each time i cross a problem, i try to solve it, even it take me many mounth of code to fix. ones it is fixed, it will work without any bug.

but as it is code, it is not bug incompatible, some care should be taken when designing applications or functions.

read the whatsnew.asm file for more infos.

happy fools day! and thanks for those who down my dear lib.

many fucntions can be converted to use with different calling conventions. then, you can modify them to test in your code.

enjoy, and thanks again.

[edit] 25/apr/2010
3 functions are added:
crypt
will crypt a memory zone (fptr) with a random seed, initialised with a key
the seed can be up to many bits (tested ok with seeds of 60000 *8bits) and a very long initialisation key, up to as memory you have in the segment. seed too long will be very slow, key are threaded only one time for a crypting, seed is used for each byte to crypt. using XOR

xorx
will crypt a memory zone (fptr) with a fixed key, using XOR instruction on bytes.

DOSsave
save a file using dos INTs, if the file still exist, it will overwrite it, if the file doesn't exist, it will create it.

[edit] 30/apr/2010

New update of fool with corrections to work with fasm 1.69.

crypt is bugged, then, bypassed with a ret for the moment. it needs a complete rewrite to work well.

[edit] 09/may/2010

crypt is debugged, then, it works very well.
i've tested it with many combinaisons of seeds/keys. and it always give an acceptable result.
up to 32000 bits seeds are acceptable, but are very slow.

develloping a vectorial pong game using FPU. for the moment, only the ball is vectorial, after, i need to do some advanced vectorial maths to detect and compute collisions.

[edit] 06/june/2010

added tetris project.
modifiction to apply in applications using kb.otk and kb.tmk.
simplified comsys.inc for "applications/tetris.inc" to compile in less than 64k.

by toogling the button on the right of fps indicator, you can switch on or off the vsync polling.
it will then use 100% of the cpu, or let the cpu do pauses during the time between the last effective code and the next vsync.

during vsync, the cpu cannot do anything else than wait.

the moskito application is an idea for a game where you will have to crutch randomly flying moskitoes with a tap.

and many other things there, and to come...

[edit] 9/november/2011

added 10 conditional items.

IfCCdo var1,var2,func

CC is condition code, and can be

e, ne

l, nl

g, ng

a, na

b, nb

if var1 CC var2, do func
var1 and var2 are pointers to values, if pointer(s) = 0, nothing done at all.

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot vote in polls in this forumYou cannot attach files in this forumYou can download files in this forum