Hi Alex

This is not helpful. I want to define registers *globally", so that values,
arguments and return values can be passed between functions. All functions
get
arguments in 1, 2, or more registers, and *return* values (not just a single
value!) in 1, 2 or more registers, plus direct condition codes.
A Fastproc lets you pass up to 3 registers-worth of arguments to it...Any
more and you'd associate the registers with structures to squeeze more in
like this.....

https://forum.powerbasic.com/forum/user-to-user-discussions/powerbasic-inline-assembler/744566-fastcall-using-a-structure-for-arguments
which saves you using the stack but not quite as fast as the value sitting
their in the register.

Hope that helps and no problem if this is not of interest...I just saw it
as a way of overcoming CLANG problems re pil32.

Best Regards
Dean




On 4 February 2017 at 20:46, dean <deangwillia...@gmail.com> wrote:

> Hi Alex
>
> >No, I want a *generic way* to call existing external libraries, e.g.
>
> Powerbasic won't do what (native... does because it doesn't do variadic
> arguments like lisp or even c...
>
> Here's an example .....
>
> BTW Important words are LoadLibrary  GetProcAddress Call DWORD FreeLibrary
> and recently
>
> IMPORT ADDR
>
> What native does looks very cool....
>
> 'Declare function prototype
> Declare Function protoFreeCCSDLL (Key as ASCIIZ,Param as ASCIIZ) as LONG
>
> Function ProcessCreditCards() as LONG
>     Local x as LONG
>     Local hLib as LONG
>     Local ProcAddr as DWORD
>     local lResult as LONG
>
>     'Retrieve DLL handle
>     hLib = LoadLibrary("FREECCS.DLL")
>     If IsFalse hLib Then
>         MsgBox "FreeCCS.DLL is missing or damaged, please verify 
> installation", %MB_ICONSTOP,"CCS"
>         Exit Function
>     End If
>
>     'Retrieve function address
>     ProcAddr = GetProcAddress(hLib,"FreeCCSDLL")
>     If ProcAddr = %NULL Then
>         MsgBox "Could not find function FreeCCSDLL in FreeCCS.DLL"
>         Exit Function
>     End If
>
>     Key = "MyKey"
>     Param = "MyParam"
>
>     'Call pointer to the function using Function prototype
>     Call DWORD ProcAddr USING protoFreeCCSDLL(Key,Param) TO lResult
>
>     'Do some more calls/processing
>
>     'Release Library
>     Call FreeLibrary(hLib)
>
>     Function = lResult
> End Function
>
>
>
> On 4 February 2017 at 20:26, dean <deangwillia...@gmail.com> wrote:
>
>> Re the carry flag...you can get at that :)
>>
>> On 4 February 2017 at 20:24, dean <deangwillia...@gmail.com> wrote:
>>
>>> Hi Alex
>>>
>>> With stack control I mean that you can do unlimited 'push'es and 'pop's
>>> to/from
>>> the stack inside a function, and build arbitrary structures this way on
>>> the
>>> stack. You can add, subtract, increment and decrement the stack pointer
>>> arbitrarily, and switch between different stacks by assigning values to
>>> the
>>> stack pointer.
>>>
>>> I've read these and it looks like it i.e. you can save and restore EBP
>>> and ESP
>>> freeing you to do what you want with them until restoration
>>> also you can push stuff of one size and pop it off in different sized
>>> chunks.
>>> It all looks very freestyle to me as long as you balance the stack when
>>> you've finished.
>>> I'd be very happy to try an example if you want.
>>> https://www.powerbasic.com/help/pbcc/the_stack.htm
>>> https://www.powerbasic.com/help/pbcc/using_esp_and_ebp.htm
>>> https://www.powerbasic.com/help/pbcc/tricks_of_the_stack.htm
>>>
>>> On 4 February 2017 at 19:32, Lindsay John Lawrence <
>>> lawrence.lindsayj...@gmail.com> wrote:
>>>
>>>> I also run PicoLisp out of a TinyCore Linux 'VirtualBox' image...
>>>> This turned out to be the best route for me to get the performance and
>>>> features of picolisp I wanted on microsoft windows hosts.
>>>>
>>>> TinyCore64 + vboxsf (to access host drives) + picolisp is a great combo
>>>> in < 50Mb
>>>> Exporting that as an 'appliance'  < 15Mb.
>>>> == full linux kernel with all the goodness that provides + picolisp
>>>> awesomeness to easily utilize all that goodness.
>>>>
>>>> A slightly larger image with docs+w3m+vim (or the picollsp 'vi'
>>>> Alexander published) may make a nicely focused little 'lisp machine'  to
>>>> learn and tinker on.
>>>>
>>>> /Lindsay
>>>>
>>>>
>>>> On Sat, Feb 4, 2017 at 8:40 AM, Erik Gustafson <
>>>> erik.d.gustaf...@gmail.com> wrote:
>>>>
>>>>> Hi list,
>>>>>
>>>>> Sounds like it's time to update the 'apt-get yourself some PicoLisp'
>>>>> section on the wiki, as this is no longer the best route for those new to
>>>>> the language.
>>>>>
>>>>> To confirm, the best options seem to be:
>>>>>
>>>>> - pil64 for Android
>>>>> - Ersatz for Windows
>>>>> - Docker Image (Packaged PL + Tiny Core)
>>>>> - Build from source
>>>>>
>>>>> Please add if I'm missing anything.
>>>>>
>>>>> Now as far as trying PicoLisp goes, could we make a little app like
>>>>> http://www.tryclj.com? A sandboxed subset of PL where one could try
>>>>> out the language and maybe work through a short accompanying tutorial to
>>>>> give a taste of the language, before diving into the install process. I
>>>>> think this has been discussed before...?
>>>>>
>>>>> Also isn't there the Emulisp (PL in JS) REPL app? Could that be
>>>>> leveraged? Maybe this is a solution without a problem; I agree with others
>>>>> that most people discovering PL will likely be comfortable building from
>>>>> source, spinning up a VM, etc
>>>>>
>>>>> Finally, a side note: I recently came across https://antergos.com.
>>>>> It's basically a graphical installer for Arch Linux. I gave it a try and
>>>>> found it to be as easy as installing Ubuntu... Click through the install
>>>>> wizard and ten minutes later you've got a full-blown Arch desktop
>>>>> environment (or base-install if desired) with built-in access to the AUR
>>>>> The AUR has always been up to date (many thanks!) with the latest 
>>>>> PicoLisp.
>>>>> Might be worth a mention?
>>>>>
>>>>> Erik
>>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to