Hej mistrzowie.

Szukałem jakiegoś małego języka skryptowego dla ST na Mist i znalazłem Lua.

Jakby ktoś chciał się pobawić, więcej szczegółów tutaj:

http://blog.greblus.net/2015/01/12/lua- … -st-purec/

i tutaj:

http://blog.greblus.net/2015/01/06/lua- … -atari-st/

Tylko proszę się nie śmiać. ST to dla mnie nowość ;)

2

Tu nie ma nic do śmiania. Bardzo fajna strona z fajnymi rzeczami. Dziękuję za namiary.

3

Jaka jest wydajność Lua na Atari ST?
Ja wiem, że LuaJIT to to nie będzie, ale i tak jestem ciekaw. ;)
No i czy jest jakaś biblioteka do obsługi systemu/sprzętu ST z poziomu Lua?

.: miejsce na twoją reklamę :.

4 Ostatnio edytowany przez greblus (2015-01-12 20:28:27)

@Skrzyp: spróbuje to jakoś w miarę obiektywnie ocenić, ale łatwo nie będzie ;) bo do czego i jak porównać? Konsola interaktywna odpalona na 8Mhz STE działa żwawo i pozwala eksperymentować z cechami języka z 21-wieku.

Mój pomysł był taki, żeby po pierwsze: przypomnieć sobie ANSI C, niekoniecznie w ujęciu total retro. Jak widać kod dosłownie z dzisiaj da się w PureC skompilować, no i teraz logicznie rozumując: Lua lubi się z C, więc przy odrobinie samozaparcia można spróbować "ożenić" to co przychodzi z PureC czyli GEMLIB z Lua. Znów osobiste eksperymenta - bo raz: nie znam GEMLIB (fajnie byłoby poznać), dwa nie znam Lua. Same korzyści jak widać i całkiem kształcąca zabawa ;). Aa no i jednym z założeń było działanie na Mist w trybie STEroids.

A co do współpracy z systemem - out of the box nie różni się niczym od Lua na PC. Obsługuje wejście i wyjście, plik da się otworzyć, przetworzyć, zapisać. Dla mnie szok, że jest coś takiego jak shell dla ST i to nie jeden. Gulam w każdym razie jest super.

5

Zmień typ zmiennej Number z double na long, bo daleko na ST nie zajedziesz :)

What can be asserted without proof can be dismissed without proof.

6

Zmień typ zmiennej Number z double na long, bo daleko na ST nie zajedziesz :)

What can be asserted without proof can be dismissed without proof.

7

@greblus: Jak Ty z Krakowa jesteś, to trzebaby się kiedyś ustawić, bo widzę, że nie tylko ja tu pingwinuję, pythonizuję i atarkuję jednocześnie ;D

.: miejsce na twoją reklamę :.

8

greblus napisał/a:

Hej mistrzowie.

Szukałem jakiegoś małego języka skryptowego dla ST na Mist i znalazłem Lua.

Jakby ktoś chciał się pobawić, więcej szczegółów tutaj:

http://blog.greblus.net/2015/01/12/lua- … -st-purec/

i tutaj:

http://blog.greblus.net/2015/01/06/lua- … -atari-st/

Tylko proszę się nie śmiać. ST to dla mnie nowość ;)

fajny blog.
LUA przewnęła mi się parę razy przez dysk ale nigdy jeszcze jej nie próbowałem.
Da się może z poziomu LUA korzystać z funkcji GEM/GEMDOS/VDI itp?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

9

sqward napisał/a:

Zmień typ zmiennej Number z double na long, bo daleko na ST nie zajedziesz :)

Faktycznie, patrzyłem na luaconf.h kiedyś i sprawdziłem, że makro rozwija się do:

#define LUAI_BITSINT    16

a z tego wynika, że używa

#define LUA_INT_LONG
#define LUA_REAL_DOUBLE

zmieniłem na REAL_FLOAT, ale ja i tak używam tylko intów :P

Jakby ktoś nad wydajnością rozmyślał, to różnica jest znaczna (20 elementów fibonacciego na ST@8MHz w C 37x5ms, w Lua ~ 240x5ms) ale to trochę jak porównywanie jabłek i marchewek :)

Post's attachments

fib.png 6.66 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

10

Cyprian napisał/a:

LUA przewnęła mi się parę razy przez dysk ale nigdy jeszcze jej nie próbowałem.
Da się może z poziomu LUA korzystać z funkcji GEM/GEMDOS/VDI itp?

Niestety działa to na tej samej zasadzie pod Windows/Linuksem/etc - tak, jeśli ktoś stworzył "bindings" do danej biblioteki. Dałoby się zrobić, pytanie czy byłoby to używalne.

11

W Lua każda liczba jest double z definicji:
http://www.lua.org/pil/2.html

więc jak napiszesz:

a=2+2

to a i tak będzie reprezentowane w interpreterze jako double (czy float).

What can be asserted without proof can be dismissed without proof.

12

skrzyp napisał/a:

@greblus: Jak Ty z Krakowa jesteś, to trzebaby się kiedyś ustawić, bo widzę, że nie tylko ja tu pingwinuję, pythonizuję i atarkuję jednocześnie ;D

Z Krakowa uciekłem do Niepołomic ale na browara chętnie wracam :)

13

sqward napisał/a:

W Lua każda liczba jest double z definicji:
http://www.lua.org/pil/2.html
więc jak napiszesz:
a=2+2
to a i tak będzie reprezentowane w interpreterze jako double (czy float).

Ej, ale to by niemądre było. W Pythonie też tak to dziala, że jak trzeba (bo się nie mieści) to vm automatycznie konwertuje na większy typ, który dalej nazywa się tak samo (reprezentacja w pamięci nie jest jawna):

Python 3.4.2 (default, Oct  8 2014, 14:33:30)
[GCC 4.9.1 20140903 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a=300
>>> type(a)
<class 'int'>
>>> a=a**a
>>> type(a)
<class 'int'>


A w luaconf.h jest taka definicja:

#elif defined(LUA_INT_LONG) /* }{ long */
#define LUA_INTEGER     long

więc raczej 2+2 będzie typu long int.

14

Nie :) Zjadłem na interpreterze zęby. LUA_INTEGER helper type używany przy przekazywaniu argumentów z/do funkcji C. Lua to prosty język, którego gramatyka mieści się na połowie kartki. Dodatki typu osobny Int i osobny Real mijają się z celem przy tym języku.

What can be asserted without proof can be dismissed without proof.

15 Ostatnio edytowany przez greblus (2015-01-13 00:54:03)

Kurde, nie lubię się głupio upierać ;) ale Reference manual 5.3 o tym wspomina:

2.1 – Values and Types.

The type number uses two internal representations, one called integer and the other called float. Lua has explicit rules about when each representation is used, but it also converts between them automatically as needed (see §3.4.3
http://www.lua.org/manual/5.3/manual.html#3.4.3).

16

W podanym linku nie jest powiedziane wprost do czego typ INT w LUA jest używany.

Za to tutaj jest to jasne:
http://www.lua.org/pil/2.3.html

Pamiętam dobrze ten problem, gdy po zmianie double na float pointery które sprytnie konwertowaliśmy do liczby kiedy wracały spowrotem do kodu gry w C++ były jakby trochę "inne" (float nie ma takiej precyzji jak double i nasze pointery traciły "dokładność" - stare (nie)dobre czasy gamedev-u :) )

What can be asserted without proof can be dismissed without proof.

17

Ja już wiem w czym rzecz:

http://www.lua.org/versions.html#5.3:

Lua 5.3 was released on 12 Jan 2015. Its main new features are support for integers, bitwise operators, and a basic utf-8 library.

:)

18

Aha, no to się pozmiwniało, ja mam doświadczenia z 2010 roku :)

What can be asserted without proof can be dismissed without proof.

19 Ostatnio edytowany przez saulot (2015-01-13 11:10:38)

Trzeba jeszcze nadmienić, że dodali support typów integer i domyślnie int'y są 64 bitowe (jak mniemam zmiana ta dostosowuje luę do realiów systemów 64-bitowych).
Lua jest używana np. w Grafx2, ale to na flaszce (można sobie robić skrypty do rysowania/generowania grafiki).

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl