1 Ostatnio edytowany przez mkur (2026-07-13 16:08:52)

Cześć,

Zostało mi trochę tokenów, więc zsytentyzowałem kompilator skrośny dla Action!:

https://github.com/mkur/actionc

Kompilator obsługuje kilka trybów:

- tryb zgodności (--mode compatibility) - wysoce zgodny z oryginałem. Mniejsze programy często kompilują się do identycznych plików binarnych,
- tryb optymalizujący (--mode optimized) - nowy layout, dodatkowe optymalizacje, ale wciąż oparty o ten sam klasyczny backend co tryb zgodności,
- tryb eksperymentalny, wykorzystujący nowy backend (--mode mir6502). Na chwilę obecną, tryb ten generuje większe binarki niź pozostałe, ale ma największy potencjał rozwojowy.

Miłej zabawy!

2

O! To jest ciekawa wiadomość! Dzięki za podzielenie się kodem i udostępnienie repo! W wolnej chwili spróbuję wykonać kilka testów! :)

I jeszcze do kompletu źródła Toms Navigatora w projekcie! Dopiero patrząc na te źródła i Twoją ksywę zrozumiałem że jesteś również autorem TOMS Navigatora.  Prawdę mówiąc nigdy mu się dokładniej nie przyglądałem, poza normalnym używaniem programu i pojęcia nie miałem że był on napisany w Action! :)

Możesz napisać parę słów opisujących historię tego jak to się stało że Twój program trafił do ROM-ów stacji TOMS? Ja miałem wcześniejszą wersję TOMS720 z ROM-em datowanym na '92 rok, który to w środku ma MyDOS jeszcze.

3

Nie pamiętam dokładnie okoliczności nawiązania współpracy ale tak zgadza się - popełniłem TN dla TOMS-ów. TOMS-si wprowadzali na rynek stację TOMS 710, która miała być stacją dla mniej zaawansowanych użytkowników - stąd pomysł na bardziej przyjazny interfejs niż standardowy DUP MyDOS-a. W rozliczeniu dostałem prototypowy egzemplarz TOMS-a 720, który mam do teraz. Napisałem też dla nich program do kopiowania plików przez RS232.

4

Jaki temat!
- ja wychowałem się  na takim toms 710, właśnie z toms Navigatorem (do dziś go mam).
Wrzuć proszę fotki tej prototypowej toms 720 .

Obecnie to nawet w jednym klonie toms 720 (by Zaxon) mam też toms navigator-a i to dobrze działa :)

5

AS... napisał/a:

Jaki temat!
- ja wychowałem się  na takim toms 710, właśnie z toms Navigatorem (do dziś go mam).
Wrzuć proszę fotki tej prototypowej toms 720 .

Obecnie to nawet w jednym klonie toms 720 (by Zaxon) mam też toms navigator-a i to dobrze działa :)

Zdjęcia zrobię, jak tylko wpadnę do domu rodzinnego :-) Miło, że wspominacie TN - powstanie nowego kompilatora jest ściśle związane z TN. Kompilator powstał głównie po to, żebym mógł rozszerzyć TN o nowe funkcjonalności - oryginalny kompilator generował na tyle rozwlekły kod, że po prostu brakowało już pamięci na nowe funkcje.

6 Ostatnio edytowany przez mkur (2026-08-09 20:13:59)

Jako, że minęło już trochę czasu i commitów od upublicznienia kodu kompilatora, czas na małą aktualizację. Nowe funkcjonalności actionc:

- Wbudowany assembler - dodano możliwość osadzania kodu maszynowego wprost w programach Action! za pomocą bloków ASM/ENDASM.  Wbudowany assembler jest z grubsza zgodny z podstawową składnią MADS. Wewnątrz bloków ASM/ENDASM można definiować etykiety oraz odwoływać się do symboli Action!

PROC Rainbow()

BYTE vcount=$D40B, wsync=$D40A,
        rtclok=$14, color=$D018, u=$7,
        ch=764

ASM
loop:
    lda u
    sta wsync

    lda vcount
    clc
    adc rtclok
    sta color

    lda ch
    cmp #$FF
    beq loop
ENDASM
RETURN

Bardziej zaawansowany przykład tutaj:

https://github.com/mkur/actionc/blob/ma ... scroll.act

- Dodano możliwość zapisywania ciągów znaków w kodach ekranowych ANTIC za pomocą składni \{SCREEN:tekst}

    scroll_txt = "\{SCREEN:Hello world!}"

- Sporo czasu i tokenów zużyto na rozwój eksperymentalnego backendu MIR6502 - obecnie jest on konkurencyjny w stosunku do klasycznego backendu uruchamianego w trybie --optimized.

Wyniki dla kompilacji TN:

Mode             Profile/Backend   Size        Relative size       Reduction
Compatibility    legacy/classic    12,226 B    100.00%              -
Optimized        modern/classic    10,445 B    85.43%              1,781 B / 14.57%
MIR6502          modern/mir6502    9,920 B     81.14%              2,306 B / 18.86%

- Poprawiono szereg błędów zarówno w kompilatorze jak i programach towarzyszących

7

Są już dostępne binarki (rolling release) dla Windows, Linuxa i MacOS:

https://github.com/mkur/actionc/releases/tag/nightly

Z innych rzeczy:

- Poprawiono tworzenie listingów - obecnie są zgodne z MADS. Ułatwi to wykorzystanie actionc do generowania mniej krytycznych części większych projektów. Wygenerowany kod można bez problemu zasemblować pod innym adresem początkowym.
- Doszedł nowy runner actionc-run (zastąpił on skrypt shellowy - chciałem uniknać zależności od basha dla wersji pod Windows)
- Wprowadzono workflow CI.
- Drobne usprawnienia w generacji kodu.