atarionline.pl mad pascal wasm - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorastrofor
      • CommentTime21 Dec 2025 18:19
       
      Mad Pascal w przeglądarce (WASM) – podobnie jak cc65 w 8bitworkshop



      chciałbym zapytać pewnie głównie Tebe, czy jest możliwa implementacja wersji kompilatora Mad Pascal działającej w przeglądarce, podobnie jak obecnie działa cc65 w projekcie 8bitworkshop.



      Dla cc65 zastosowano następujące podejście:

      kompilator, assembler i linker cc65 są napisane w przenośnym C

      cały toolchain został skompilowany do WebAssembly (WASM) przy użyciu Emscripten

      pliki wejściowe i wyjściowe obsługiwane są przez wirtualny system plików (VFS) w pamięci przeglądarki

      narzędzia działają w Web Workerze, więc IDE nie zawiesza interfejsu

      wynik to prawdziwy kod 6502 (XEX/ATR), a nie WASM

      Dzięki temu można pisać i kompilować programy na Atari 8-bit bez instalowania czegokolwiek, bezpośrednio online.

      tylko że:

      Mad Pascal nie jest napisany w C (Pascal / FreePascal)

      FreePascal nie ma natywnego backendu do WASM w tym kontekście

      możliwe zależności od systemu plików, procesów lub bibliotek OS

      mysle ze

      integracja z istniejącą infrastrukturą 8bitworkshop bedzie dosc prosta jak juz bedzie plik wasm
      • 2: CommentAuthortebe
      • CommentTime21 Dec 2025 18:55
       
      obecna wersja od JAC!-a kompiluje się do JS (pas2js), można uruchamiać z przeglądarki

      ->link<-
      • 3: CommentAuthorastrofor
      • CommentTime23 Dec 2025 23:08
       
      Co udało się zrobić:
      Wykorzystując pas2js, udało mi się uruchomić główny plik kompilatora (mp.js) w środowisku przeglądarkowym.
      Napisałem prosty wrapper z wirtualnym systemem plików, który ładuje niezbędne biblioteki (mock system.pas itp.).
      Całość działa poprawnie: wpisuję kod w Pascalu, a skrypt w JS zwraca poprawny kod źródłowy asemblera (.a65)
      Ale Utknąłem na drugim etapie. Mam plik tekstowy .a65, ale potrzebuję zamienić go na binarkę Atari (.xex). Mad Pascal
      generuje kod pod MADS-a, ale z tego co widzę, mp.js nie zawiera w sobie assemblera.

      czy istnieje port MADS napisany w JavaScript lub skompilowany do WebAssembly (WASM)?
      Ewentualnie, czy istnieje inny assembler 6502 działający w przeglądarce, który byłby wystarczająco zgodny ze
      składnią wyjściową Mad Pascala, aby to "zlinkować"?
      • 4: CommentAuthorzbyti
      • CommentTime24 Dec 2025 00:04
       
      @astrofor TeBe to "ojciec" Mad Pascala, ale jeżeli chcesz iść tą ścieżką to radzę pisać do JAC! bo to jego pomysł by Mad Pascal wynieść na wyższy poziom "abstrakcji" (jak ja lubię tę nowomowę IT, ale wydaje się adekwatna) ;)
      • 5: CommentAuthorastrofor
      • CommentTime24 Dec 2025 00:30 zmieniony
       
      Masz racje zamiast na forum napisalem bezposredio w issues na repo mad pascala. Jakos mam ogromne watpliwosci czy uda sie zintegrowac mad pascala w 8bitworkshop tak jak cc65. cc65 jest w wasmie emscripterowym, z wbudowanym wirtualnym filesystemem, z gotowym api do js co znacznie ulatwia sprawe integracji przegladarkowej
      • 6: CommentAuthorzbyti
      • CommentTime24 Dec 2025 01:26 zmieniony
       
      @astrofor z mojego punktu widzenia to doceniam, że Mad Pascal kompiluje się na czymkolwiek innym niż A8 (na cokolwiek innego) ;) zanim "dołączyłem" do projektu to Mad Pascal kompilował się tylko na A8 - ponoć miałem jakąś zasługę, że kompiluje się na inne targety ale już niejasno to pamiętam, nawet ponoć odpowiadam za target na C64, czemu zaprzeczam (to robota TeBe), udzielałem tylko zachęt (tak to byłem ja) ;) jedyny target za jaki można mnie pociągnąć do odpowiedzialności to C+4 ;) jakiś udział miałem by rozbić monolit tak by szło go targetować ale to wciąż nie jest tak oczywiste jak powinno być. TeBe to atarowiec z krwi i kości :]

      EDIT1: target RAW to jeszcze mój pomysł i wykonanie ale odkąd JAC! robi swoje to przyznaję się tylko do idei a nie do kodu ;)

      EDIT2: no i oddajmy sprawiedliwość Bocianu, że jak rzuciłem, że jest fajny emu 6502 w pytongu to on napisał unittesty w oparciu o to emu ;) gość jest zajebisty ;)
      • 7: CommentAuthorzbyti
      • CommentTime24 Dec 2025 02:04 zmieniony
       
      @astrofor mój poprzedni wpis mógł zabrzmieć jakbym się chwalił ale jego idea jest taka, że jak czegoś potrzebowałem to próbowałem to zrobić sam tak jak Bocianu ;) a TeBe nie stoi temu na przekór, więc do dzieła :D
      • 8: CommentAuthorastrofor
      • CommentTime24 Dec 2025 22:31 zmieniony
       
      @zbyti: Jak robi się coś fajnego, to czemu się tym nie chwalić? Miałeś też bardzo fajny tutorial o programowaniu na Atari, którym niespecjalnie się chwaliłeś — a szkoda.

      Wracając do pas2js: na razie trzeba jeszcze poczekać. Obecnie są problemy z kompilacją większości programów, głównie przez 64-bitowe liczby całkowite, których JavaScript nie obsługuje wprost. Dodatkowo kompilacja działa tylko do MADS-a, a nie do binarki.

      Trzymam kciuki za projekt. Jednym z pomysłów mogłoby być postawienie w Dockerze kompilatora Mad Pascala, wystawienie HTTP API jako bramki do kompilatora, a jako bonus — MCP dla LLM-ów robiący to samo co API. Można by to połączyć z 8bitworkshop, choć wtedy byłoby to już rozwiązanie pół-webowe i wszystko musiałoby działać lokalnie.

      edit: na razie poprawilem i zaktualizowalem dockera do mad pascala w dockerhubie, mad pascal verision 1.75 odchudzilem z 500mb do 60mb dziala jedna linia : docker run --rm -v "$(pwd):/code" astrofor/madpascal wsk(wsk to w moim przypadku wsk.pas , czyli nazwa glownego pliku)