[OT?] Fw: [ANN] IA32FVM + HPK (Headless Pure Kernel) image

SmallSqueak smallsqueak at rogers.com
Sun Nov 28 00:13:05 UTC 2004


Dear Squeakers,

    Please consider this as my little contribution to the NRTF.

    At least to me, for now, I can enjoy the idea that I have
    a Headless Pure Kernel (tm) image with a VM stuckin.
    (all in 40 'forthy' KB  ;-)

    My hope is that this will become a topic when the future
    is going to be invented ;-)

    Cheers,

    SmallSqueak.

----- Original Message ----- 
From: "PhiHo Hoang" <phihoDOThoang(AT)rogersDOTcom>
Newsgroups: comp.lang.forth
Sent: Thursday, November 25, 2004 11:20 PM
Subject: [ANN] IA32FVM + HPK (Headless Pure Kernel) image


> Greetings,
>
>    This was posted last weekend and it seems it was burried under the
>    old thread "Forth VM + microKernel" .
>
>    Since I really like to get feedback on the exercise I started several
>    weeks ago and just barely finished last weekend, I am reposting this
>    under a new thread in the hope that it can draw some attention hence
>    feedback.
>
>    Please accept my apologies if anyone find this reposting offended.
>
> [SNIP]
>>
>>
>>    Only recently he thinks he found an interesting use for Forth so he is
>>    trying to do a more serious exercise, turning Win32Forth kernel into
>>    a pure STC kernel for IA32 architecture and the wrapper into a thin
>>    wrapper with minimal C code to support system interface through
>>    dlfcn interface and some other things.
>>
>
>    The changes to STC will come later. I may reconsider this .
>
>    This release of IA32FVM is still ITC.
>
>    The 5 system calls were
>
> 0  EQU  SysLoadLibrary
> 1  EQU  SysGetProcAddress
>
>        These are the backbone for the FFI
>
> 2  EQU  SysGetProcessHeap
> 3  EQU  SysHeapAlloc
>
>        Needed to initialize buffers in the image.
>
> 4  EQU  SysVirtualAlloc
>
>        I am not quite sure that this is really needed.
>
>>
>>    Let's call the pure kernel IA32FVM (in need of a better name).
>>
>
>    Any suggestion ?
>
>>
>>    IA32FVM must not have IO words (including QUIT), but it must
>>    have support for dlfcn interface (with help from the thin wrapper)
>>    and be capable of compiling new words into the dictionary.
>>
>
>    Done.
>
>    The pure kernel can now be extended into an SDK with inspecting
>    words like WORDS, SEE, DIS
>
>>    The thin wrapper will provide :
>>
>>        1/- Memory allocations
>>        2/- Supports for dlfcn interface
>>        3/- Loading an image (-I option)
>>        4/- Reading a source file to fill the terminal input buffer so 
>> that
>> the
>>            compiler can compile them into the dictionary (-L option).
>>
>
>        See below.
>
>>    All the IO words (including FLOAD and FSAVE) and outer text
>>    interpreter will be implemented in a platform specific file
>>    <Platform>IO.f so that on Windows platforms, one can invoke :
>>
>>        ThisThinWrapper.exe -I IA32FVM.img -L Win32IO.f
>>
>>    someone else on, say IA32 Linux, can invoke:
>>
>>        ThatThinWrapper -I IA32FVM.img -L Lin32IO.f
>>
>
>
>    For simplicity, in this release, just double click IA32FVM.exe to
>    bring up a DOS console then :
>
>        FLOAD src\sdk.f
>
>    The DOS console is still slow and buggy. It was noticed that
>    pressing SPACE while displaying WORDS, CONSTANTS
>    and DIS does not work as expected.
>
>    It is interesting to note that this kernel not only pure,
>    but also headless.
>
>    To switch head, using a kernel GUI console instead,
>    edit IA32FVM.ini :
>
> [LOAD]
> Comments.f   =src\FKernel\Utils
> Maths.f     =src\FKernel\Utils
> Tools.f     =src\FKernel\Utils
> LastWords.f   =src\FKernel\Utils
> ModUtil.f    =src\FKernel\Utils
> dthread.f    =src\FKernel\Module
> order.f     =src\FKernel\Module
> module.f    =src\FKernel\Module
> interpif.f   =src\FKernel\Module
> InitWinLib.f   =src\FKernel\Platform
> winlib.f    =src\FKernel\Platform
> GetLastError.f =src\FKernel\Platform
> MemMan.f    =src\FKernel\Platform
> ANSFile0.f   =src\FKernel\Platform
> FileLoading.f  =src\FKernel\Platform
> CurrentDir.f  =src\FKernel\Platform
> LoadFile.f   =src\FKernel\Platform
> DOSConsole.f  =src\FKernel\Platform
> Startup.f    =src\Boot
> ;3+4.f     =src\Test
>
>    Replace DOSConsole.f with GUIConsole.f
>
>    The display is much faster and pressing SPACE
>    works properly with DIS, WORDS, CONSTANTS
>
>    That Startup.f in src\Boot directory is also worth a look.
>
>    In there one will find that _QUIT, the outer interpreter.
>
>    If one does not like it, just go ahead and change it without
>    having to recompile the kernel.
>
>    Isn't this cool ;-)
>
>    The word COLD is now a VM primitive ;-)
>
>    Also, take a look at IA32FVM.f (previously Fkernel.f) ,
>    all forward reference resolutions were eliminated, except
>    one (left as an exericse for the experts ;-)
>
> fload VM.f
> fload Nucleus.f
> fload uKernel.f
>
> \ -------------------- The End --------------------
> \ Forward reference resolutions.
>
> \ ' THROW         RESOLVES THROW
> \ ' NFA-COUNT     RESOLVES NFA-COUNT
> \ ' NALIGNED      RESOLVES NALIGNED
> \ ' _LOCALALLOC   RESOLVES _LOCALALLOC
> \ ' _LOCALFREE    RESOLVES _LOCALFREE
> \ ' LINK,         RESOLVES LINK,
> \ ' START/STOP    RESOLVES START/STOP
> \ ' LOADFILE      RESOLVES LOADFILE
> \ ' INIT-K32      RESOLVES INIT-K32
> \ ' LOAD-WINLIBRARY RESOLVES LOAD-WINLIBRARY
> \ ' RES-LOADCALL  RESOLVES RES-LOADCALL
> \ ' .NAME      RESOLVES .NAME
>
> ' PARMFIND    RESOLVES PARMFIND
>
>
>>
>>    Note that IA32FVM.img is the same in both cases.
>>
>>    Are there anything wrong with these specs ? Is it doable ?
>>
>>    He is soliciting constructive critcisms and helps for this exercise.
>>
>>    Please feel free to email him directly.
>>
>
>    I got help from nice people on W32F and W32FX lists.
>
>    The Wincon.dll with nearly 30 thousand Windows constants
>    was stolen from W32FX 3.03.
>
>    The innovation in the Upper/Lower case in W32F 6.09.12
>    found its way into IA32FVM Pure Kernel too ;-)
>
>    The rest of IA32FVM is based on Win32Forth 6.09.
>
>    I really like to upload this preliminary release of IA32FVM
>    to Yahoo file area but my problem was that I cannot decide
>    if it should be uploaded to W32F or W32FX file area !
>
>    I really wish that these 2 groups will merge and W32F,
>    W32FX and  IA32FVM can share a common code base.
>
>    One guy from SqueakDev list also came to help. and I must
>    say that I wouldn't get this far without his commitment;-)
>
>    He also offered to host IA32FVM.zip :
>
>    http://members.rogers.com/smallsqueak/FVM/IA32FVM.zip
>
>    Please bear in mind that this is a preliminary release for comments
>    at a temporary home. It's just a proof of concept.
>
>    The primary goal of this exercise is to have a pure kernel image.
>    This seems to be achievable.
>
>    Your feedback and constructive criticism is more that welcome.
>
>    Is it worth to go the path of converting ITC into STC ?
>    What are the pros and cons of STC vs ITC ?
>    What's the best route to get there from here ?
>
>    My ultimate goal is a Native Compiled Code image.
>
>    It would be interesting if someone will try to port this IA32FVM
>    to Linux to see if the kernel is really pure and can be used as is
>    cross IA32 platforms that support dlfcn interface .
>
>    Cheers,
>
>    PhiHo.
>
>    P.S: This posting is cc squeak-dev at lists.squeakfoundation.org
>            at SmallSqueak request. ;-)
>
>
>
>
> 




More information about the Squeak-dev mailing list