I misunderstood the query a bit.
sQLux v1.0 (The Xmas Turkey)
- XorA
- Site Admin
- Posts: 1583
- Joined: Thu Jun 02, 2011 11:31 am
- Location: Shotts, North Lanarkshire, Scotland, UK
Re: sQLux v1.0 (The Xmas Turkey)
So uqlx and in turn sQLux is very invasive in the way it emulates QDOS. It doesn't emulate any hardware. So there is nothing emulated for gold card. So I could probably make it run in a few minutes. But you would have no storage devices.pjw wrote:I thought all the drivers already were in a version of SMSQ/E that thinks its running in a QL with a Gold Card. Perhaps its the GC bit that is the difference..
Anyway, my question really was: Should it work? and if so, what do I need to do differently? It seems its not supposed to work. Fair enough. No wuckin' forries.
(Or any of the other uqlx magic devices)
- XorA
- Site Admin
- Posts: 1583
- Joined: Thu Jun 02, 2011 11:31 am
- Location: Shotts, North Lanarkshire, Scotland, UK
Re: sQLux v1.0 (The Xmas Turkey)
So there are issues with your EMU_ proposals.
EMU_NETADDR$ - that is the impossible to answer question, and will result in 127.0.0.1 always being returned given your spec.
EMU_HOSTOS$ - why? the numeric version is precise (although doesnt have any unixes defined I think), the free form one would be chaos in Superbasic.
EMU_NETNAME$ - again impossible to answer, machines have multiple names, thats why gethostXXXXX() functions return arrays.
MACHINE/PROCESSOR - NO JUST NO Superbasic already has enough non namespaced extensions that collide! (I know they already exist but come on lads).
I don't see a major problem with the rest, the SYNCSCRAP one would not be applicable to sQLux anyway I think!
EMU_NETADDR$ - that is the impossible to answer question, and will result in 127.0.0.1 always being returned given your spec.
EMU_HOSTOS$ - why? the numeric version is precise (although doesnt have any unixes defined I think), the free form one would be chaos in Superbasic.
EMU_NETNAME$ - again impossible to answer, machines have multiple names, thats why gethostXXXXX() functions return arrays.
MACHINE/PROCESSOR - NO JUST NO Superbasic already has enough non namespaced extensions that collide! (I know they already exist but come on lads).
I don't see a major problem with the rest, the SYNCSCRAP one would not be applicable to sQLux anyway I think!
- XorA
- Site Admin
- Posts: 1583
- Joined: Thu Jun 02, 2011 11:31 am
- Location: Shotts, North Lanarkshire, Scotland, UK
Re: sQLux v1.0 (The Xmas Turkey)
Code: Select all
512: br-aa92cc35a87f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:fd:44:dc:f3 brd ff:ff:ff:ff:ff:ff
inet 172.24.0.1/16 brd 172.24.255.255 scope global br-aa92cc35a87f
valid_lft forever preferred_lft forever
inet6 fe80::42:fdff:fe44:dcf3/64 scope link
valid_lft forever preferred_lft forever
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 00:01:2e:91:89:ea brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:01:2e:91:89:eb brd ff:ff:ff:ff:ff:ff
inet 192.168.222.13/24 brd 192.168.222.255 scope global dynamic noprefixroute enp2s0
valid_lft 4467sec preferred_lft 4467sec
inet6 2a02:8010:64d6:0:eeee:d3f1:de69:1acb/128 scope global dynamic noprefixroute
valid_lft 6049sec preferred_lft 3349sec
inet6 fe80::91c8:d8da:35ed:7c30/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: wlp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 9a:58:d1:e9:39:c3 brd ff:ff:ff:ff:ff:ff permaddr 38:ba:f8:84:86:81
9: br-449cf08818fe: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:c8:d6:35:7b brd ff:ff:ff:ff:ff:ff
inet 172.20.0.1/16 brd 172.20.255.255 scope global br-449cf08818fe
valid_lft forever preferred_lft forever
inet6 fe80::42:c8ff:fed6:357b/64 scope link
valid_lft forever preferred_lft forever
11: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:d0:d4:82:69 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:d0ff:fed4:8269/64 scope link
valid_lft forever preferred_lft forever
30: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:1c:38:2d brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
35: vnet4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:40:f3:e7 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe40:f3e7/64 scope link
valid_lft forever preferred_lft forever
548: vetha60d6a4@if547: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-c4ae5c7e6876 state UP group default
link/ether ba:2f:2b:1b:00:8b brd ff:ff:ff:ff:ff:ff link-netnsid 5
inet6 fe80::b82f:2bff:fe1b:8b/64 scope link
valid_lft forever preferred_lft forever
550: veth1a2ac3b@if549: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-c4ae5c7e6876 state UP group default
link/ether 9e:9d:d5:c8:21:09 brd ff:ff:ff:ff:ff:ff link-netnsid 11
inet6 fe80::9c9d:d5ff:fec8:2109/64 scope link
valid_lft forever preferred_lft forever
552: veth02412f3@if551: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether b2:86:c9:de:77:98 brd ff:ff:ff:ff:ff:ff link-netnsid 12
inet6 fe80::b086:c9ff:fede:7798/64 scope link
valid_lft forever preferred_lft forever
554: vethdf65d4c@if553: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-c4ae5c7e6876 state UP group default
link/ether b6:40:e8:86:03:78 brd ff:ff:ff:ff:ff:ff link-netnsid 12
inet6 fe80::b440:e8ff:fe86:378/64 scope link
valid_lft forever preferred_lft forever
595: br-0a6fa455c455: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:f3:ff:3d:15 brd ff:ff:ff:ff:ff:ff
inet 172.25.0.1/16 brd 172.25.255.255 scope global br-0a6fa455c455
valid_lft forever preferred_lft forever
inet6 fe80::42:f3ff:feff:3d15/64 scope link
valid_lft forever preferred_lft forever
611: veth0a7c04a@if610: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-aa92cc35a87f state UP group default
link/ether 4a:ef:2d:33:3e:7a brd ff:ff:ff:ff:ff:ff link-netnsid 17
inet6 fe80::48ef:2dff:fe33:3e7a/64 scope link
valid_lft forever preferred_lft forever
613: veth3eac1d2@if612: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether da:0e:66:d5:a9:fb brd ff:ff:ff:ff:ff:ff link-netnsid 10
inet6 fe80::d80e:66ff:fed5:a9fb/64 scope link
valid_lft forever preferred_lft forever
615: vethc298a68@if614: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-13c4bf1b4ed0 state UP group default
link/ether 96:0b:e5:c3:30:df brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::940b:e5ff:fec3:30df/64 scope link
valid_lft forever preferred_lft forever
359: vethd7b2bb6@if358: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether ee:32:62:4b:44:58 brd ff:ff:ff:ff:ff:ff link-netnsid 2
inet6 fe80::ec32:62ff:fe4b:4458/64 scope link
valid_lft forever preferred_lft forever
617: vethf86361d@if616: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether f6:eb:4d:bc:b0:b3 brd ff:ff:ff:ff:ff:ff link-netnsid 14
inet6 fe80::f4eb:4dff:febc:b0b3/64 scope link
valid_lft forever preferred_lft forever
619: veth3db7f03@if618: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-13c4bf1b4ed0 state UP group default
link/ether 72:43:dd:24:06:b6 brd ff:ff:ff:ff:ff:ff link-netnsid 14
inet6 fe80::7043:ddff:fe24:6b6/64 scope link
valid_lft forever preferred_lft forever
363: veth95730a7@if362: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether 76:7d:7a:ea:bc:84 brd ff:ff:ff:ff:ff:ff link-netnsid 3
inet6 fe80::747d:7aff:feea:bc84/64 scope link
valid_lft forever preferred_lft forever
365: br-c4ae5c7e6876: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:82:81:1c:09 brd ff:ff:ff:ff:ff:ff
inet 172.21.0.1/16 brd 172.21.255.255 scope global br-c4ae5c7e6876
valid_lft forever preferred_lft forever
inet6 fe80::42:82ff:fe81:1c09/64 scope link
valid_lft forever preferred_lft forever
630: veth3d6b009@if629: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether e2:b6:ec:45:1f:1b brd ff:ff:ff:ff:ff:ff link-netnsid 16
inet6 fe80::e0b6:ecff:fe45:1f1b/64 scope link
valid_lft forever preferred_lft forever
374: br-ec9edeee4071: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:54:c4:f0:59 brd ff:ff:ff:ff:ff:ff
inet 172.22.0.1/16 brd 172.22.255.255 scope global br-ec9edeee4071
valid_lft forever preferred_lft forever
inet6 fe80::42:54ff:fec4:f059/64 scope link
valid_lft forever preferred_lft forever
634: veth66c1c70@if633: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether 76:91:39:e0:88:81 brd ff:ff:ff:ff:ff:ff link-netnsid 15
inet6 fe80::7491:39ff:fee0:8881/64 scope link
valid_lft forever preferred_lft forever
636: veth07fa0c3@if635: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether 5a:bc:c8:82:17:03 brd ff:ff:ff:ff:ff:ff link-netnsid 4
inet6 fe80::58bc:c8ff:fe82:1703/64 scope link
valid_lft forever preferred_lft forever
638: veth0d7ea61@if637: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether f2:16:cc:22:49:7c brd ff:ff:ff:ff:ff:ff link-netnsid 8
inet6 fe80::f016:ccff:fe22:497c/64 scope link
valid_lft forever preferred_lft forever
640: veth333ba75@if639: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-6977c0f0fd5b state UP group default
link/ether be:cd:6f:42:9a:9a brd ff:ff:ff:ff:ff:ff link-netnsid 6
inet6 fe80::bccd:6fff:fe42:9a9a/64 scope link
valid_lft forever preferred_lft forever
642: veth6207cc3@if641: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-6977c0f0fd5b state UP group default
link/ether 12:5b:8d:fe:28:18 brd ff:ff:ff:ff:ff:ff link-netnsid 9
inet6 fe80::105b:8dff:fefe:2818/64 scope link
valid_lft forever preferred_lft forever
644: veth143df1f@if643: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether da:3f:bd:80:a3:15 brd ff:ff:ff:ff:ff:ff link-netnsid 9
inet6 fe80::d83f:bdff:fe80:a315/64 scope link
valid_lft forever preferred_lft forever
418: veth2b3813f@if417: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-ec9edeee4071 state UP group default
link/ether 42:6e:67:97:f7:84 brd ff:ff:ff:ff:ff:ff link-netnsid 7
inet6 fe80::406e:67ff:fe97:f784/64 scope link
valid_lft forever preferred_lft forever
420: vethdd72504@if419: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-ec9edeee4071 state UP group default
link/ether 42:b2:17:b8:eb:5a brd ff:ff:ff:ff:ff:ff link-netnsid 13
inet6 fe80::40b2:17ff:feb8:eb5a/64 scope link
valid_lft forever preferred_lft forever
422: vethefd7bb5@if421: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether d6:96:42:d3:19:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 13
inet6 fe80::d496:42ff:fed3:19c3/64 scope link
valid_lft forever preferred_lft forever
423: br-13c4bf1b4ed0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:42:29:76:6f brd ff:ff:ff:ff:ff:ff
inet 172.23.0.1/16 brd 172.23.255.255 scope global br-13c4bf1b4ed0
valid_lft forever preferred_lft forever
inet6 fe80::42:42ff:fe29:766f/64 scope link
valid_lft forever preferred_lft forever
196: br-f78eeffd2b92: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:54:cc:cc:0e brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-f78eeffd2b92
valid_lft forever preferred_lft forever
inet6 fe80::42:54ff:fecc:cc0e/64 scope link
valid_lft forever preferred_lft forever
197: br-6977c0f0fd5b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:dd:ee:e4:91 brd ff:ff:ff:ff:ff:ff
inet 172.19.0.1/16 brd 172.19.255.255 scope global br-6977c0f0fd5b
valid_lft forever preferred_lft forever
inet6 fe80::42:ddff:feee:e491/64 scope link
valid_lft forever preferred_lft forever
499: veth106e00e@if498: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f78eeffd2b92 state UP group default
link/ether 26:1f:2b:0e:57:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::241f:2bff:fe0e:57f1/64 scope link
valid_lft forever preferred_lft forever
Re: sQLux v1.0 (The Xmas Turkey)
And yet all the EMU_ stuff above comes directly from SMSQmulator, so saying its not possible is clearly not correct.XorA wrote: Wed Mar 05, 2025 10:09 am So there are issues with your EMU_ proposals.
EMU_NETADDR$ - that is the impossible to answer question, and will result in 127.0.0.1 always being returned given your spec.
EMU_HOSTOS$ - why? the numeric version is precise (although doesnt have any unixes defined I think), the free form one would be chaos in Superbasic.
EMU_NETNAME$ - again impossible to answer, machines have multiple names, thats why gethostXXXXX() functions return arrays.
MACHINE/PROCESSOR - NO JUST NO Superbasic already has enough non namespaced extensions that collide! (I know they already exist but come on lads).
I don't see a major problem with the rest, the SYNCSCRAP one would not be applicable to sQLux anyway I think!
The MACHINE/PROCESSOR stuff comes from SMSQ/E. When there was only one platform (the QL) there was no need for any of this. Now that there are a whole variety of platforms with different capabilities this information becomes necessary. Sure, one might just be able to PEEK stuff.. Ah but wait, if we dont know what platform we're on we cant even know if the system variables contain reliable information.
I wish that anyone writing or maintaining an emulator or QL platform of any sort, would research what others have done before them to avoid everyone just doing their own thing. The whole point of interfaces is that they are uniform so that people using them or programming for them can get on with the job and not have to relate to each and every little piece of underlying mess.
None of this matters to me as Im not a uQLx user. I was just a little inquisitive about the state of play.
Per
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
- XorA
- Site Admin
- Posts: 1583
- Joined: Thu Jun 02, 2011 11:31 am
- Location: Shotts, North Lanarkshire, Scotland, UK
Re: sQLux v1.0 (The Xmas Turkey)
Code: Select all
JVA_NETADDR$
This function returns the Ipv4 internet address of the machine it is running from. This may
be an empty string if no internet address can be found. Moreover, if you have two network
interfaces connected with two different addresses (e.g. a wifi and a lan cable) then there is
no way of telling which address is returned.
Syntax: result$ = JVA_NETADDR$
Unfortunately this is what happens when amateur software people think a problem is simple!
Re: sQLux v1.0 (The Xmas Turkey)
I freely admit to being an amateur when it comes to programming, and Im pretty sure that Wolfgang is one too. However, Wolfgang wrote a complete SMSQ/E emulator from scratch. What did you do, apart from patching up the work of your betters?
I dont know which of us you are calling "amateur" but given the context, you clearly intended this as an insult. Or perhaps its just unwarranted arrogance talking and one should simply overlook it?
You asked
EMU_NETADDR$ may not be ideal, that is why there is no QPC_NETADDR$. (See, I may be an amateur, but Im not a complete idiot. Marcel gave me the same information - in temperate language - many years ago when I asked him.) However, in my case it works well on my laptop that only uses WiFi, as most laptops do. Better than nothing!
I dont know which of us you are calling "amateur" but given the context, you clearly intended this as an insult. Or perhaps its just unwarranted arrogance talking and one should simply overlook it?
You asked
I spent a hour or so doing just that and all I get back is abuse? Talk of floccinaucinihilipilification!I have always said if someone documents a bunch of emu_ stuff I will implement it in sQLux, they are really easy to add in most cases.
Im unlikely to ever try that again with you!Even better if that person persuaded the others to follow.
EMU_NETADDR$ may not be ideal, that is why there is no QPC_NETADDR$. (See, I may be an amateur, but Im not a complete idiot. Marcel gave me the same information - in temperate language - many years ago when I asked him.) However, in my case it works well on my laptop that only uses WiFi, as most laptops do. Better than nothing!
Per
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
Re: sQLux v1.0 (The Xmas Turkey)
> I wish that anyone writing or maintaining an emulator or QL platform of any sort, would research what others have done before them to avoid everyone just doing their own thing.
QPC and Qemulator were developed independently in 1996, QPC in Germany and Qemulator in Italy. Since there were no earlier emulators, neither developer has any prior art to reference. Each emulator had a different take on how the emulator handles QDOS file on the underlying file system. uQLx also came out in 1996, based in part on Qemulator (mostly the 68000 emulator core IIRC). Each emulator was written on a different operating system (DOS for QPC, Mac for Qemulator and Unix for uQLx) and that probably effected how each author approached how the emulator worked. Once each emulator was released, the die was cast, so to speak.
Understanding how we got here can help in understanding where we are going.
Tim
QPC and Qemulator were developed independently in 1996, QPC in Germany and Qemulator in Italy. Since there were no earlier emulators, neither developer has any prior art to reference. Each emulator had a different take on how the emulator handles QDOS file on the underlying file system. uQLx also came out in 1996, based in part on Qemulator (mostly the 68000 emulator core IIRC). Each emulator was written on a different operating system (DOS for QPC, Mac for Qemulator and Unix for uQLx) and that probably effected how each author approached how the emulator worked. Once each emulator was released, the die was cast, so to speak.
Understanding how we got here can help in understanding where we are going.
Tim
Re: sQLux v1.0 (The Xmas Turkey)
Hello XorA,
sorry, my message(s) was (were) never thought negative. The opposite is true. When I have looked at the GitHub site (found via Google) I couldn't find a binary version. So I prepared to compile it myself and so I asked. Unfortunately, I had confused MinGW with Cygwin, or thought MinGW was similar to Cygwin (with Unix compatibility DLL). I will install sQLux in any case (especially if a binary version is available), I would even have compiled it myself if necessary.
Sincerely Peter
XorA wrote: Tue Mar 04, 2025 7:38 am Man I go to all the hassle to make a windows native version and people spread misinformation like this.
YES THERE IS A WINDOWS NATIVE VERSION.
It's fine if you don't want to use it, but please stop with the massive negativity about it.
sorry, my message(s) was (were) never thought negative. The opposite is true. When I have looked at the GitHub site (found via Google) I couldn't find a binary version. So I prepared to compile it myself and so I asked. Unfortunately, I had confused MinGW with Cygwin, or thought MinGW was similar to Cygwin (with Unix compatibility DLL). I will install sQLux in any case (especially if a binary version is available), I would even have compiled it myself if necessary.
Sincerely Peter
http://peter-sulzer.bplaced.net
GERMAN! QL-Download page also available in English: GETLINE$() function, UNIX-like "ls" command, improved DIY-Toolkit function EDLINE$ - All with source. AND a good Python 3 Tutorial (German) for Win/UNIX
GERMAN! QL-Download page also available in English: GETLINE$() function, UNIX-like "ls" command, improved DIY-Toolkit function EDLINE$ - All with source. AND a good Python 3 Tutorial (German) for Win/UNIX
