atarionline.pl MAD-Pascal - Początki - 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:
       
      CommentAuthorgalu
    • CommentTime1 Oct 2019
     
    Myślę, że mogło chodzić o wykorzystanie takiego zapisu:
    type SampleType = (A, B, C, D);

    var dummy: array[0..5, 0..9] of SampleType = (
    (D, D, D, D, D, D, D, D, D, D),
    (D, D, D, D, D, D, D, D, D, D),
    (D, D, D, D, D, D, D, D, D, D),
    (D, D, D, D, D, D, D, D, D, D),
    (D, D, D, D, D, D, D, D, D, D),
    (D, D, D, D, D, D, D, D, D, D)
    );

    begin
    end.

    (14,33) Error: Expected another 4 array elements

    Pomogła zamiana
    var dummy: array[0..5, 0..9] of SampleType = (
    na
    var dummy: array[0..5, 0..9] of byte = (

    (w większym programie ten [tj. podobny] fragment kodu czasem kompilował się poprawnie i działał też - wydawałoby się - poprawnie)
    • 2: CommentAuthortebe
    • CommentTime1 Oct 2019 zmieniony
     
    nie testowałem czegoś tak pokrętnego :) ja tu widzę potrzebę użycia ord(D), ale to też nie pomoże

    po dodaniu jakiegoś kodu przeszła kompilacja ale nie został wygenerowany kod wynikowy

    zdecydowanie zastosowanie typu wyliczeniowego tutaj nie działa
    • 3:
       
      CommentAuthorsun
    • CommentTime1 Oct 2019
     
    @bocianu: Tak, zbildowałem za pomocą fpc zarówno mp jak i mads, wtedy się zaczęło kompilować. Niemniej coś idzie w maliny ;)
    Podeślę dziś do tebe ten mój projekt. Aktualnie wróciłem do 160.
    • 4: CommentAuthorMADRAFi
    • CommentTime1 Oct 2019
     
    Zmiany w sposobie obslugi tablicy typu record :)
    Z tego co pamietam jest roznica pomiedzy 1.6.0 i 1.6.2 :)
    Ja i Dely wyrywalismy wlosy probujac znalesc dlaczego sie nie kompiluje.
    • 5:
       
      CommentAuthorsun
    • CommentTime2 Oct 2019
     
    W przypadku Dely'ego to chyba problematyczny temat, takie wyrywanie :)
    W moim przypadku @tebe wczoraj pozamiatał. Dzięki raz jeszcze.
    Problem oczywiście był u mnie a nie w super kompilatorze :)
    • 6: CommentAuthorkski
    • CommentTime2 Oct 2019
     
    Albert jest mocno posunięty w pracach i Mad Pascal sprawuje się baz zarzutu. Całkowicie zintegrowany assembler a więc możliwość przepisywania na asembler ważnych funkcji lub fragmentów kodu krok po kroku, po wcześniejszym ich dopracowaniu i przetestowaniu, to możliwość której nie da się przecenić.

    Natomiast ogólnie programując dla atari rzeczywiście łatwo popełnić błędy trudniej je znaleźć.
    • 7:
       
      CommentAuthorsun
    • CommentTime2 Oct 2019
     
    Stare dzieje, ale TP6.0 też pozwalał wstawki asm robić i klon arkanoida sobie wysmażyłem, ale to było... hoho ho, albo i jeszcze dawniej :)

    Narzędzie jest super, nie wszystko trzeba orać w asm, to zdecydowanie przyspiesza pracę a szczególnie prototypowanie.
    • 8:
       
      CommentAuthorgalu
    • CommentTime12 Oct 2019
     
    Czy wynikowe pliki wykonywalne można uznać za zoptymalizowane pod względem rozmiaru, czy mogą być podatne na potraktowanie jakimś dodatkowym cruncherem? Jakie narzędzie ewentualnie wypróbować (nie znam żadnych na Atari)?
    • 9: CommentAuthorVidol
    • CommentTime12 Oct 2019
     
    Sprobuj Super Packera 6.1. Masz w nim 3 rozne kompresory do wyboru.

    ->link<-
    • 10: CommentAuthorzbyti
    • CommentTime3 Nov 2019 zmieniony
     
    Czy któryś z Panów mógłby mi w jakiś wymierny sposób przedstawić jaka jest wydajność Mad Pascala w stosunku do ASM w obliczeniach?

    Znalazłem źródła Turbo Chess napisane w Turbo Pascalu 3.0 i 4.0 ->link<- i może pokusił bym się o konwersję jeżeli utrata wydajności spowodowana pisaniem w wysokopoziomowym języku nie jest aż tak duża.

    Pisanie sensownego programu szachowego dla 8-bit w języku innym niż ASM nie jest precedensem. Panowie odpowiedzialni za genialnego Mephisto III ->link<- postanowili napisać swój program dla CPU 1806 ->link<- (będącym ok 2.5 raza wolniejszym od 6502) w języku CDL2 (Compiler Description Language).

    Proszę o komentarz :)
    • 11: CommentAuthortebe
    • CommentTime3 Nov 2019 zmieniony
     
    Zbyti, nie spróbujesz to się nie dowiesz

    najpierw spróbuj to skompilować Free Pascalem (FPC), użyj przełącznika -MTp dla FPC

    Mad Pascal (MP) nie ma takiego przełącznika, a jest 32 bitowy jak domyślnie FPC, musisz potem pozmieniać typy ze znakiem, INTEGER -> SMALLINT, LONGINT -> INTEGER

    dodatkowo na PC masz 80 znaków w linii, taki C128 ma taki tryb natywnie, na XE/XL jest to na VBXE, w przykładach 'solitario' wymagało przystosowania do 40 znaków na wiersz

    ogólnie MP nie wprowadza swojej składni, ma być kompatybilny z FPC, więc możesz pisać kod na PC, oczyścić go, sprowadzić do ograniczeń MP a potem kompilować dla XE/XL

    w przykładach MP są programy które możesz kompilować zamiennie FPC <> MP, uruchomiać na MAC,PC <> XE/XL
    • 12: CommentAuthorzbyti
    • CommentTime3 Nov 2019 zmieniony
     
    @tebe dzięki za odpowiedź! :)

    tebe:

    nie spróbujesz to się nie dowiesz

    No właśnie moje pytanie dotyczyła bardziej czy w Twoim odczuciu jako praktyka w ogóle warto próbować ten rodzaj oprogramowania (kojarzącego się z wykorzystaniem każdego cykla) za pomocą tego narzędzia.

    Nie miałem zamiaru skompilować kodu Turbo Chess na A8 tylko pisać od zera to co zrozumiem z kodu Sargona I i Turbo Chess za pomocą czegoś wygodniejszego niż ASM, którego też bym musiał się nauczyć.

    Dobrze, skorzystam z każdej rady jaką dostanę, także spróbuję na ten moment w ogóle postawić sobie środowisko.

    W Turbo Pascalu 7.0 pisałem ze 20 lat temu...
    • 13: CommentAuthortebe
    • CommentTime3 Nov 2019 zmieniony
     
    podejrzałem ten GameWorks o którym się tutaj teraz dowiedziałem :)

    pewne poprawki są wymagane aby przenieść np. GO-MOKU do MP, ten akurat FPC trawi bezboleśnie

    tablice w MP są od 0.., maksymalnie dwu-wymiarowe, brak typu określającego zakres X..Y, nazwa pliku inkludowanego nie może zawierać znaku '-'

    to takie drobnostki które na szybko zauważyłem
    • 14:
       
      CommentAuthorbocianu
    • CommentTime3 Nov 2019
     
    Życzę powodzenia i służę pomocą jak coś. Na szachach znam się słabo, ale madpascala mecze już kilka lat.

    Tu masz poradnik jak zacząć:

    ->link<-
    • 15: CommentAuthorzbyti
    • CommentTime3 Nov 2019 zmieniony
     
    @bocianu dziękuję za poradnik, przeczytam.

    Ja w szachy tylko trochę gram. Spora cześć tych co pisali silniki szachowe w epoce to doktoranci fizyki :D Także bardzo mnie to onieśmiela ;) Przy nich to cienki Bolek jestem ;) ale trzeba gonić swoje marzenia ;D Te szachy nie muszą być tak dobre jak ich, jak będą grały chociaż na poziomie 1200+ to odtrąbię sukces :D

    @tebe szybko ogarniasz ;)
    • 16: CommentAuthorzbyti
    • CommentTime3 Nov 2019 zmieniony
     
    @bocianu tutorial OK, wszystko cyka, dzięki :) No i za BLIBS też dzięki :D

    @tebe bez wazeliny genialna rzecz! :D Dla mnie ludzie którzy piszą kompilatory są genialni ;)
    • 17: CommentAuthorMADRAFi
    • CommentTime3 Nov 2019
     
    Uwaga to wciaga. Ostatni rok siedzialem tylko w Pascalu i kompilowalem :D
    • 18: CommentAuthorzbyti
    • CommentTime3 Nov 2019
     
    @MADRAFi sądząc po Twojej nowej grze z niezłym sukcesem! :D
    • 19: CommentAuthorzbyti
    • CommentTime4 Nov 2019 zmieniony
     
    To tak na początek ode mnie, w formie żartu, mój pierwszy program w Mad Pascalu ;)

    Oczywiście mógłbym nie malować czarnych linii ale dla zwięzłości kodu niech będzie, w końcu to ćwiczenia ;)

    Teraz się pobawię i zobaczę o ile uda mi się przyspieszyć rysowanie :)

    Ciekawe czy ktoś się pokusi wrzucić tutaj to co jest "prawdziwym" wynikiem kodu ;)
    • 20: CommentAuthorMADRAFi
    • CommentTime4 Nov 2019
     
    Fajne. A zobacz sobie zrodlo datamatrix w przykladach.
    nie wiem czy tamten kod nie generuje sie szybciej.
    • 21: CommentAuthorzbyti
    • CommentTime4 Nov 2019 zmieniony
     
    @MADRAFi dzięki za rekomendację :) mam parę pomysłów jak jeszcze to przyspieszyć, więc je jeszcze wdrożę potem rzucę okiem na ten matrix i ew. przepiszę program ;)
    • 22:
       
      CommentAuthorbocianu
    • CommentTime4 Nov 2019 zmieniony
     
    Fajne :D

    Ale kilka rad o ile mogę

    1. Nie musisz inicjować tablicy QR procedurą, możesz ją zainicjować przy deklaracji:
    qr: array[0..34] of string = (
    '11111111111111111111111111111111111',
    '10000000100010100111111100100000001',
    '10111110100011010000011111101111101',
    '10100010101001000100111001101000101',
    '10100010100101000110110101101000101',
    '10100010111111001110110100101000101',
    '10111110101100100100001001101111101',
    '10000000101010101010101010100000001',
    '11111111110110011000111100111111111',
    '10011000111101001101010100110100001',
    '10011001010010110010011111011001101',
    '10100010101100111001110011111010011',
    '10101111011001010100111101011111001',
    '11101000001010000001001010111100111',
    '10100011100111111000101100000001101',
    '10110000101011000000111001110010011',
    '10011001001010111001111010100001001',
    '10110110001100100100000111011011111',
    '10110111010110001110101010111101101',
    '10111100001001110101110011111010011',
    '10010001011110110101100011110001111',
    '11100010100101011101000100001011111',
    '10010101010010110010110111011011101',
    '11101100100111100011100011111011011',
    '11110111101001011001110101111101111',
    '10001010110001111101000110000010011',
    '11111111100110001001111110111011011',
    '10000000110111010101100010101000111',
    '10111110101111010100100000111001001',
    '10100010100010001100100110000011101',
    '10100010110101010010011110111111001',
    '10100010111010100001110010111101011',
    '10111110100100000101110011000001111',
    '10000000101000101011000111101111101',
    '11111111111111111111111111111111111'
    );


    2. Szybsze niż rysowanie kwadracików 4x4px w trybie 8 byłoby użycie pojedynczego piksela w trybie 4 lub 5 :D obraz będzie identyczny, a z pewnością narysuje się dużo szybciej. Odpadają Ci też wtedy 2 operacje dzielenia i 3 dodawania. Będzie o niebo szybciej.
    • 23: CommentAuthorzbyti
    • CommentTime4 Nov 2019 zmieniony
     
    @bocianu dziękuję, zaraz postaram się wdrożyć te rady :)

    Na razie nie rysuję czarnych linii bo tła zmieniać na inny kolor nie będę ;)

    begin
    InitGraph(8);
    TextBackground(0);
    SetColor(1);

    for y := 0 to 34 do begin
    binLine := qr[y];
    newYLine := y * 4;
    for x := 1 to 35 do begin
    boxStart := x * 4;
    boxEnd := boxStart + 3;
    if (binLine[x] = '1') then begin
    drawBox(boxStart, boxEnd, newYLine);
    end;
    end;

    ReadKey;
    end

    Nie znam się niestety na trybach, obadam. Postaram się zrobić tak jak radzisz :)
    • 24: CommentAuthorVidol
    • CommentTime4 Nov 2019
     
    • 25: CommentAuthorzbyti
    • CommentTime4 Nov 2019 zmieniony
     
    @Vidol ha! :D

    @bocianu po wprowadzeniu zmian jakie proponowałeś renderuje się w sekundę :D Dzięki!

    uses crt, fastgraph;

    var x, y: byte;
    binLine: string;
    qr: array[0..34] of string = (
    '11111111111111111111111111111111111',
    '10000000100010100111111100100000001',
    '10111110100011010000011111101111101',
    '10100010101001000100111001101000101',
    '10100010100101000110110101101000101',
    '10100010111111001110110100101000101',
    '10111110101100100100001001101111101',
    '10000000101010101010101010100000001',
    '11111111110110011000111100111111111',
    '10011000111101001101010100110100001',
    '10011001010010110010011111011001101',
    '10100010101100111001110011111010011',
    '10101111011001010100111101011111001',
    '11101000001010000001001010111100111',
    '10100011100111111000101100000001101',
    '10110000101011000000111001110010011',
    '10011001001010111001111010100001001',
    '10110110001100100100000111011011111',
    '10110111010110001110101010111101101',
    '10111100001001110101110011111010011',
    '10010001011110110101100011110001111',
    '11100010100101011101000100001011111',
    '10010101010010110010110111011011101',
    '11101100100111100011100011111011011',
    '11110111101001011001110101111101111',
    '10001010110001111101000110000010011',
    '11111111100110001001111110111011011',
    '10000000110111010101100010101000111',
    '10111110101111010100100000111001001',
    '10100010100010001100100110000011101',
    '10100010110101010010011110111111001',
    '10100010111010100001110010111101011',
    '10111110100100000101110011000001111',
    '10000000101000101011000111101111101',
    '11111111111111111111111111111111111'
    );

    begin
    InitGraph(5);
    TextBackground(0);
    SetColor(1);

    for y := 0 to 34 do begin
    binLine := qr[y];
    for x := 1 to 35 do begin
    if (binLine[x] = '1') then begin
    PutPixel(x,y);
    end;
    end;
    end;

    ReadKey;
    end.
    • 26:
       
      CommentAuthormav
    • CommentTime4 Nov 2019
     
    A to przypisanie do binline to konieczne?
    QR[y][x] by nie wystarczyło?
    Tak z ciekawości bo pojińcia nie mam ;-)
    • 27: CommentAuthorzbyti
    • CommentTime4 Nov 2019
     
    @mav to tablica jednomiarowa typu string. w JS czy PHP pewnie by cyknęło takie wywołanie ale tutaj masz od razu błąd kompilacji:

    hello_qr_v2.pas (52,13) Error: -- under construction --
    • 28:
       
      CommentAuthormav
    • CommentTime4 Nov 2019
     
    Pech ;-)
    Ale pamietam, że któryś z języków dokładnie taką operację umożliwiał, c# może? Wiem że używałem, dokładnie to była iteracja po poszczególnych znakach w tablicy stringów
    • 29:
       
      CommentAuthorbocianu
    • CommentTime4 Nov 2019
     
    Gdybyś zrobił to na bajtach zamiast stringa to by pykło, bo tablica dwuwymiarowa bajtów już działa od jakiegoś czasu.
    Ficzer z iterowaniem po tablicy stringów chyba nie działa (jeszcze), co wnioskuje po komunikacie błędu.
    Ale to najlepiej jak się Tebe wypowie.
    • 30: CommentAuthorzbyti
    • CommentTime4 Nov 2019 zmieniony
     
    @bocianu OK zrobię na bajtach.

    Wygodniej było mi robić tę strukturę na stringach, próbowałem ogarnąć QR jako base64 ale MP nie wspiera tych bibliotek.
    • 31: CommentAuthorzbyti
    • CommentTime4 Nov 2019 zmieniony
     
    @bocianu po zamianie na dwuwymiarową tablice bajtów znaczne spowolnienie względem jednowymiarowych stringów. Trochę mnie to martwi bo szachy kojarzą mi się właśnie z dwumiarowymi strukturami :(

    begin
    InitGraph(5);
    TextBackground(0);
    SetColor(1);

    for y := 0 to 34 do begin
    for x := 0 to 34 do begin
    if (qr[y][x] = 1) then begin
    PutPixel(x,y);
    end;
    end;
    end;

    ReadKey;
    end.

    Zostaję przy stringach ;) a temat QR zostawiam. Dla tych co jeszcze nie uruchomili skanerów załącznik ;)
    • 32:
       
      CommentAuthorbocianu
    • CommentTime5 Nov 2019
     
    A to dziwne. Wydaje mi się, że nie powinno być wolniej. Aż to z ciekawości sprawdzę, jak wrócę z pracy...
    • 33: CommentAuthorMADRAFi
    • CommentTime5 Nov 2019
     
    Kazda 2 wymiarowa tablice mozesz zapisac w 1 wymiarowej.
    Musisz tylko potem sobie wyliczyc offset o ktory masz sie przesunac by odczytac dana wartosc.
    1 wymiarowe tablice beda szybsze w iteracji niz 2 wymiarowe.
    • 34: CommentAuthortebe
    • CommentTime5 Nov 2019 zmieniony
     
    obliczanie indeksu dla jednowymiarowej tablicy tab[a]
    [0..x] = a * DataSize[AllocElementType]

    obliczanie indeksu dla dwuwymiarowej tablicy tab[a,b]

    [0..x, 0..y] = a * ((y+1) * DataSize[AllocElementType]) + b * DataSize[AllocElementType]

    p.s.
    wstaw dyrektywę ($f mem_page}

    {$f $a0} // fastmul at page $a0 ($a000)
    • 35: CommentAuthorilmenit
    • CommentTime5 Nov 2019
     
    Zakładam, że MP potrafi wygenerować listing kodu ASM. Wrzuć wygenerowany dla stringów i 2D, zobaczymy jakie są różnice a może będzie też wskazówka dla autora jak usprawnić kompilator.
    • 36: CommentAuthorzbyti
    • CommentTime5 Nov 2019 zmieniony
     
    @bocianu & MADRAFi jr. dzięki za wskazówki i rady! :D

    @tebe ja robię na razie rozpoznanie bojem, nie przeczytałem jeszcze całej dokumentacji jaką napisałeś do MP, nie mówiąc o Free Pascalu. Jeszcze trochę potrenuję to przeczytam.

    @ilmenit jeżeli coś Ci to powie (autorowi kompilatora na pewno) to proszę, wrzucam w załącznik:

    V2 -> stringi; V3 -> 2D bajty.
    • 37: CommentAuthortebe
    • CommentTime5 Nov 2019
     
    Zbyti, używasz starej wersji kompilatora, nowa wersja zauważalnie wygeneruje krótszy/szybszy kod

    ->link<-
    • 38: CommentAuthorzbyti
    • CommentTime5 Nov 2019 zmieniony
     
    @tebe jak stawiałem sobie środowisko 2 dni temu to wszystko pobrałem z oficjalnej strony:

    - mads_209.7z
    - mp_160.7z

    Skoro na githubie są nowsze stabilne wersje to już pobieram, dzięki :)

    EDIT: no niestety, mam takie coś przy ostatniej wersji z github

    mp hello_qr_v3.pas 
    Mad Pascal Compiler version 1.6.2 [2019/11/05] for 6502
    Compiling hello_qr_v3.pas
    An unhandled exception occurred at $00000000004769A2:
    EAccessViolation: Access violation
    $00000000004769A2
    $00000000004A6533
    • 39: CommentAuthortebe
    • CommentTime5 Nov 2019
     
    szybkość dostępu do tablic zależna jest od ich rozmiaru, jeśli indeks nie przekracza 256 bajtów i zostały jawnie zadeklarowane, to dostęp będzie najszybszy

    poniżej przykład deklaracji tablic spełniających kryterium:
    tab: array [0..255] of byte;
    tab2: array [0..127] of word;
    tab3: array [0..63] od cardinal;
    tab4: array [0..15, 0..15] of byte;
    tab5: array [0..7, 0..15] of byte;
    tab6: array [0..10, 0..10] of word;
    tab7: array [0..7, 0..7] of cardinal;


    nie jawnie, oraz tablice z indeksem powyżej 256
    tab: array [0..0] of byte;
    tab2: array [0..255] of cardinal;
    itp.
    • 40: CommentAuthortebe
    • CommentTime5 Nov 2019
     
    to może jeszcze

    ->link<-
    • 41: CommentAuthorzbyti
    • CommentTime5 Nov 2019 zmieniony
     
    Obie rzeczy mam w tej chwili pobrane z githuba:

    Mad Pascal Compiler version 1.6.2 [2019/11/05] for 6502
    mads 2.1.0

    Log błędu kompilacji "hello_qr_v3.pas" jest we wcześniejszym poście.

    To ja wracam do wersji "Mad Pascal Compiler version 1.6.0" aż @tebe da znać co nie bangla ;)
    • 42: CommentAuthorMADRAFi
    • CommentTime5 Nov 2019
     
    A wklej calosc z kompilacji samym pascalem.
    • 43: CommentAuthorMADRAFi
    • CommentTime5 Nov 2019
     
    1.6.0 ma troszke pozmieniane. Sprawdz jak deklarujesz tablice.

    Ale memory violation to nie widzialem jeszcze, moze Tebe cos pomoze :)
    • 44: CommentAuthorzbyti
    • CommentTime5 Nov 2019 zmieniony
     
    @MADRAFi nie sądzę, że coś robię źle, błąd jest w kompilatorze.

    To co poniżej daje ten sam błąd dla wersji 1.6.2 a przecież nic tam nie ma, a deklaracja zgodna z wytycznymi @tebe.

    uses crt, fastgraph;

    var qr: array [0..255] of byte;

    begin
    InitGraph(5);
    TextBackground(0);
    SetColor(1);

    ReadKey;
    end.

    mp hello_qr_v4.pas
    Mad Pascal Compiler version 1.6.2 [2019/11/05] for 6502
    Compiling hello_qr_v4.pas
    An unhandled exception occurred at $00000000004769A2:
    EAccessViolation: Access violation
    $00000000004769A2
    $00000000004A6533

    • 45: CommentAuthorzbyti
    • CommentTime5 Nov 2019 zmieniony
     
    @tebe przepraszam za zamieszanie, kliknąłem w link jaki podałeś do githuba i pobrałem bez patrzenia od razu paczkę, nie zauważyłem, że to był Mad-Pascal-patch-10.

    Master nie rzuca błędami i z wersją 1.6.2 jest wszystko OK.

    Po dodaniu dyrektywy "{$f $a0} // fastmul at page $a0 ($a000)" i kompilatorze 1.6.2 faktycznie jest szybciej ale wciąż ze 2x wolniej od wersji ze stringami. Wezmę po prostu ten narzut pod uwagę w krytycznych miejscach.
    • 46:
       
      CommentAuthorKaz
    • CommentTime6 Nov 2019
     

    Zbyti:

    To tak na początek ode mnie, w formie żartu, mój pierwszy program w Mad Pascalu ;)


    Gratulacje! Rozwijasz się :D
    Czyżby przygotowania do napisania programu, który pokona CC4.0? :D
    • 47: CommentAuthorzbyti
    • CommentTime6 Nov 2019 zmieniony
     
    @Kaz przygotowania do pisania szachów są ale poprzeczka nie wisi aż tak wysoko ;)

    Najpierw walnę jakąś tekstówkę ku zgorszeniu wszystkich albo coś ;)

    Na razie na potrzeby moich QR Codes (datamatrix mi się tu nie nada) i gry tekstowej zrobiłem implementację w FP Lempel–Ziv–Welch bo to banalne ->link<-

    Wynik jest niezły:

    1111111111111111111111111111111111110000000100010100111111100100000001101111101000110100000111111011111011010001010100100010011100110100010110100010100101000110110101101000101101000101111110011101101001010001011011111010110010010000100110111110110000000101010101010101010100000001111111111101100110001111001111111111001100011110100110101010011010000110011001010010110010011111011001101101000101011001110011100111110100111010111101100101010011110101111100111101000001010000001001010111100111101000111001111110001011000000011011011000010101100000011100111001001110011001001010111001111010100001001101101100011001001000001110110111111011011101011000111010101011110110110111100001001110101110011111010011100100010111101101011000111100011111110001010010101110100010000101111110010101010010110010110111011011101111011001001111000111000111110110111111011110100101100111010111110111110001010110001111101000110000010011111111111001100010011111101110110111000000011011101010110001010100011110111110101111010100100000111001001101000101000100011001001100000111011010001011010101001001111011111100110100010111010100001110010111101011101111101001000001011100110000011111000000010100010101100011110111110111111111111111111111111111111111111

    ./compressor
    string length: 1225

    ^#1Di!f#kBoEoAb0BOD1KDh1H1D1jD1GEhMoD1jDbIOGDkBMF1CHBh#1L1L1L1#!l1NqE1i!qUE1jHWH1CUGG1FBhH1jD1hIInBoIMqhGoI1gBIjAja1GQIjEibDq#qO1CMalIFqUF1M1IWCHqhEF1AqXbOqME1L1QO1QCIMiBoIfDl1hMEc!D1Gh1J1C0bGg1G1GYOqQhFl1Ei0Bh0bQoG1IgB0BD1N0BoEAi!lUD0bh1Oq#1YLqDjEkBM1jKAlF1jD1Df1FqAlODqL1FqkbH1DqWCqGlMpBKA1PhAB#jD1hEkB0^

    compressed length: 306; compression: 75%

    Jak widać po wyniku uzyskałem 10 bajtów podłą sztuczką, ale wszystkie QR będą się tak zaczynać i kończyć, nie jest to uniwersalne ale szyję pod konkretne zadanie.

    Niestety nie zmieszczę się w jednym stringu ;( No chyba, że napiszę dwa przebiegi jakoś ;) Ale raz pakowane się słabiej pakuje więc nie wiem czy jest sens. A może jeszcze usprawnić compressor? Z drugiej strony chcę by A8 to szybko rozpakowywało więc nie chcę przesadzić.

    GZipem bym się zmieścił ->link<-

    -----------------------------------------------------------

    GZ compression. Original size: 1225 bytes Result size: 246 bytes

    H4sIAAAAAAAA/4WTURICMQhDr0TufzkdS5LX9WPrWCvQNASQ3tecpd/3u8ccj47thGjtG+U992WoOSDxCE8ESpenh2UQaIYsl6Wo8Wvl4oz+PwPuDZfWSBfNTqSnw39JaMCHqNSlijRqU5zeaQ2sQylYPmfsiw1ACpYLNdy/ggOMWjCAlwpltjItQErVfkiRfESeMvO5NHjogm6YC80/SbN8t/euLmpfyjtJVntgT7ggKREGFSITXl2RkuWztThFpsOZA2Bm5poAJbMWkzPnuY6dperMGaPo9+S2ASxgKtaCTVTnS9c0PhSiei/rA9Md6k/JBAAA

    Deflate ->link<- Original size: 1225 bytes Result size: 234 bytes

    eJyFk1ESAjEIQ69E7n85HUuS1/Vj61gr0DQEkN7XnKXf97vHHI+O7YRo7RvlPfdlqDkg8QhPBEqXp4dlEGiGLJelqPFr5eKM/j8D7g2X1kgXzU6kp8N/SWjAh6jUpYo0alOc3mkNrEMpWD5n7IsNQAqWCzXcv4IDjFowgJcKZbYyLUBK1X5IkXxEnjLzuTR46IJumAvNP0mzfLf3ri5qX8o7SVZ7YE+4ICkRBhUiE15dkZLls7U4RabDmQNgZuaaACWzFpMz57mOnaXqzBmj6PfktgEsYCrWgk1U50vXND4Uonov6wOCZehi

    @tebe & @boocianu widze w MP unit decrunch, więc jakby co może się przyda ->link<-
    • 48:
       
      CommentAuthorarchieil
    • CommentTime6 Nov 2019 zmieniony
     
    W sprawie szachów to jest pod 6502 wersja public domain.

    Miałem zamiar kiedyś ją do FICS-a dostosować i wrzucić Atari jako przeciwnika ludziom ale projekt zawisł w niebycie.

    Jak wiele innych zresztą.

    Nie pomnę nazwy i silny program specjalnie nie jest ale zawsze to jakiś punkt startowy, a autor mi odpisał, że nie ma nic przeciwko rozwienięciu swojego programu przy dodaniu na czym przeróbka bazuje.

    O ile się nie mylę to:
    ->link<-
    • 49: CommentAuthorzbyti
    • CommentTime6 Nov 2019 zmieniony
     
    @archieil fajny pomysł! :)

    Może chodziło o wspomniane w innym wątku:

    1. MicroChess ->link<- ->link<-

    2. Atomchess ->link<-

    ?

    O szachach - jakbyś miał ochotę dodać od siebie coś więcej - dyskutujmy tutaj ->link<-

    EDIT: O! dodałeś link :) Tak myślałem, że to może być to. Jest też kod Sargona I - chyba grał nieco silniej od MicroChess.
    • 50:
       
      CommentAuthorarchieil
    • CommentTime6 Nov 2019 zmieniony
     
    Wrzuciłem do poprzedniego.

    Chyba z Jenningsem pisałem o tym ale musiałbym poszukać w archiwach. To X lat temu było.

    Za to sam pomysł żeby program miał wyjście do FICS-a polecam wziąć pod uwagę.

    FICS używa telnet z koniecznością ustalenia protokołu transmisji.
    Ja wtedy brałem pod uwagę, że za komunikację odpowiadalby moduł na PC, a Atari tylko ruchy przekazywało.

    Gdyby taki pomysł był to zgodę oddam osobie, która chciałaby wdrożyć. :-). Poszukam w poczcie i podrzucę mail z oficjalną zgodą na użycie kodu w rozwojowej wersji silnika.

    Ja wręcz proponowałbym zacząć od interfejsu do obsługi FICS-a, a silnik szachowy dodać później. ;-)