Recent posts

#41
newLISP and the O.S. / Re: Build newLISP for win10 64...
Last post by IVShilov - December 16, 2023, 11:13:24 AM
Thank you!
#42
newLISP and the O.S. / Re: Build newLISP for win10 64...
Last post by cameyo - December 15, 2023, 07:11:18 AM
I've been busy a little longer...
But today I compiled newLISP 10.7.6
See instructions here:
https://github.com/cameyo42/newLISP-Note/blob/master/97-appendici.lsp#L3767
I only compiled the utf8-ffi version and did few tests.
Ciao
#43
newLISP and the O.S. / Re: Build newLISP for win10 64...
Last post by cameyo - November 20, 2023, 09:58:09 AM
Hello IVShilov,
I'm a little busy right now.
I'll try to compile newlisp 64 bit next week (I hope).
Ciao
#44
newLISP in the real world / Re: Reading keyboard input
Last post by IVShilov - November 18, 2023, 08:54:54 AM
Found solutions.

Quote1) F1 (code 0 59) because 0 is default result of (read-key true) means "no key pressed", and IMHO it must return nil;
2) UTF8 non-onebyte char - leads to infinite loop and crash.
This two problems block for me creating enhanced REPL.

Explanation of problem:
(import "msvcrt.dll" "_getch")
(import "msvcrt.dll" "_kbhit")
(exec "chcp 65001")
(setq n 0)
(while (< n 7)
    (if (= 1 (setq k (_kbhit) ))
(println (++ n) ":" k ":" (_getch) ":" (_kbhit))
(setq n 0)
)
    )
  )
1:1:13:0   <----------- ENTER, one catch, code 13, and kbhit returns 0
1:1:224:1  <----------- press UP: two codes: 224 and next 72
2:1:72:0
1:1:0:1    <----------- press F1: two codes: first 0, kbhit still returns 1
2:1:59:0   <-------------------------------- second: 59, after that kbhit returns 0
1:1:145:1  <----------- enter "ё": first code 209 was disappear, getch return second: 145
2:1:145:1  <----------- AND kbhit still returns 1:
3:1:145:1
4:1:145:1
5:1:145:1
6:1:145:1
7:1:145:1
1
> ё        <----------- and ё somehow printed by default newlisp REPL
Solutions is:
1) for catch F1-F12: import kbhit and check if key was pressed;
2) UTF8 in cmd.exe: DO NOT (exec "chcp 65001"), because it enable UTF8 input AND output.
It's hard to even imagine keyboard with button for every char in UTF8 set, so it will be quite enough to enable UTF8-output only:
(import "kernel32.dll" "SetConsoleOutputCP")
(import "kernel32.dll" "GetConsoleOutputCP")
> (SetConsoleOutputCP 866) (GetConsoleOutputCP) (char 937)
1
866
"╬й"          <----------- FAIL
> (SetConsoleOutputCP 65001) (GetConsoleOutputCP) (char 937)
1
65001
"Ω"           <----------- SUCCESS
> (import "kernel32.dll" "GetConsoleCP")
GetConsoleCP@CB3855F0
> (GetConsoleCP)
866           <----------- this is INPUT codepage
> (GetConsoleOutputCP)
65001         <----------- this is OUTPUT codepage
>
More info here
Complete solution is in use "Win32 Console API".
#45
newLISP and the O.S. / Re: Build newLISP for win10 64...
Last post by IVShilov - November 12, 2023, 10:59:24 PM
Maybe in 2019 it was so simple,but in 2023 it is not :)
TDM have no ls, rm utilities, so I cannot do a "./configure" or "make clean".
MSYS have, but it not appropriate for building.

Can somebody explain step by step what I have to do to build newlisp from souce?

First: install TDM-GCC, ok, what next?
#46
newLISP and the O.S. / Re: Windows clipboard
Last post by cameyo - November 07, 2023, 06:29:32 AM
Thanks!
#47
newLISP and the O.S. / Re: Windows clipboard
Last post by Yael - November 07, 2023, 02:12:09 AM
As an example, in a Windows *.bat file use this:

echo "%var%" | clip.exe
pasteclipboard.exe
yournewlispfile.exe

The file yournewlispfile.exe is your newlisp compiled file, which must include these commands:

(set 'option (exec "pasteclipboard.exe"))
(set 'myvar(parse (option 0)))

I know it is a dirty way of doing things, but honestly after struggling with dll's import I failed miserably.

#48
newLISP and the O.S. / Re: Windows clipboard
Last post by Yael - November 07, 2023, 02:01:55 AM
I am now attaching a zipped file with the pasteclipboard.exe here:
#49
newLISP in the real world / Does (reset) restores the top-...
Last post by IVShilov - November 07, 2023, 12:06:07 AM
Info from manual :

reset restores the top-level variable environment using the saved variable environments on the stack.

But I can't "restores the top-level variable environment using the saved variable environments on the stack" using it:

newLISP v.10.7.5 64-bit on Windows IPv4/6 UTF-8 libffi, options: newlisp -h

> (crc32 (string (symbols)))
3617620833
> (prompt-event (fn () (string (args 0) ":" (crc32 (string (symbols))) " > ")))
$prompt-event
MAIN:1539437814 > (delete 'a)
true
MAIN:1539437814 > a
nil
MAIN:2595764761 > ## state change: 2595764761
MAIN:2595764761 > (ref "a" (map term (symbols)))
(49)
MAIN:2595764761 > ## sym a exists
MAIN:2595764761 > (delete 'a)
true
MAIN:1539437814 > ## we come back in 1539437814
MAIN:1539437814 > (ref "a" (map term (symbols)))
nil
MAIN:1539437814 > ## no sym a in MAIN
MAIN:1539437814 >

MAIN:1539437814 > a
nil
MAIN:2595764761 > ## sym a exist again but now we try to clean a context MAIN by reset
MAIN:2595764761 > ## newlisp manual: " reset restores the top-level variable environment using the saved variable environments on the stack. "
MAIN:2595764761 > (reset)
MAIN:2595764761 > (ref "a" (map term (symbols)))
(49)
MAIN:2595764761 > ## sym a exists
MAIN:2595764761 >

Bug or feature?
#50
newLISP and the O.S. / Re: Windows clipboard
Last post by cameyo - November 06, 2023, 01:12:31 PM
Thanks.
I can use the "clip" command, but where is "pasteclipboard.exe" ?
I have found: "powershell get-clipboard" to get text from clipboard.