atarionline.pl Redefiniowanie znaków w Atari Basic - 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: CommentAuthorbasakatu
    • CommentTime31 Jan 2019
     
    Dzień dobry,

    Chciałbym spytać jak przedefiniować domyślne znaki w Atari Basic. Próbowałem wg opisanej tutaj metody ->link<-

    Ale to niestety nie za bardzo działa, ponieważ wysyła wszystkie już istniejące znaki w niebyt, a ja chciałem zmienić tylko kilka z tych graficznych dostępnych przez ctr + litera. Może metoda jest dobra, ale adresy złe.

    Używana maszyna - Atari 130XE pod emulatorem Atari800Win Plus

    Z góry dziękuję za wszelką pomoc i pozdrawiam.
    • 2:
       
      CommentAuthorlarek
    • CommentTime31 Jan 2019
     
    Był kiedyś taki program, który potrafił wygenerować gotowy podprogram w Basicu z procedurą zmiany fontów oraz liniami danych.
    • 3: CommentAuthorQTZ
    • CommentTime31 Jan 2019 zmieniony
     
    Od podstaw...

    W ROM-ie małego Atari mamy dwa fonty - standardowy (default) i międzynarodowy (international). Uwaga: w wersji arabskiej jeden z nich jest zastąpiony arabskim, a przy nieoficjalnych modyfikacjach ROM font może być dostępny tylko podstawowy lub zmodyfikowany - np. o polskie znaki! Przełączamy je wpisując POKE 756,224 lub POKE 756,204. Jeżeli potrzebujemy zmienić tylko kilka znaków to i tak musimy utworzyć cały font pod nowym adresem, czyli skopiować istniejący i zmodyfikować tylko to co potrzebujemy. W standardowym wbudowanym Basic-u nie ma szybkiej komendy MOVE (jest w Turbo Basic-u) która pozwala skopiować font w nowe miejsce w ułamku sekundy, ale zamiast użyć powolnej pętli, można użyć procedury napisanej w assemblerze. Np. z Bajtka Nr Specjalny Tylko o Atari - Kruczki i Sztuczki - str. 29 (aby nie było konfliktu z TB można zmienić nazwę MOVE na inną, np. MVE).

    Programy do edycji czcionek zapisują cały font, więc również kopię znaków, które nie zostały zmodyfikowane w porównaniu do standardowych z ROM. Ma to tę rzadko potrzebną zaletę, że modyfikacja ROM-u nie spowoduje pomieszania czcionek, ale taki listing zajmuje więcej pamięci.

    Program Larka generuje listing od linii 1, mój AFMov od 9000, a AFM od 10000. W związku z tym może zajść potrzeba przerenumerowania linii programu. W wbudowanym Basic-u nie ma takiej komendy więc można użyć programu Renumerator z książki Atari Basic Miguta. W TB jest komenda RENUM, którą wywołujemy z trzema parametrami - od której linii renumerować, pierwszy numer nowej linii, co ile (np.10) - mam nadzieję, że nie pomyliłem kolejności parametrów...
    Listing wygenerowany z edytora, do renumeracji wczytujemy poprzez E."D:DANE.LST", najlepiej poprzedzając komendą NEW, która wyczyści pamięć - usunie program. Po renumeracji zapisujemy dane czcionki poprzez L."D:RDANE.LST" i doczytujemy je do wczytanego naszego programu, lub doczytujemy nasz program uprzednio zapisany poprzez L."D:NASZPR.LST", a potem zapisujemy wraz z danymi fontu poprzez SAVE"D:NASZPR.BAS".

    Na PC:

    Aby zapisać listing przy pomocy Atari Font Mover-a trzeba wejść w "More Options..." i zaznaczyć "Save d.lst..." i/lub "Save b.lst...", przy czym ta druga opcja zapisuje dużo szybszy i krótszy listing. Następnie odczytujemy nasz font (przygotowany np. przy pomocy Atari Font Maker-a) i zapisujemy (uwaga: pod nowo podaną nazwą) - m.in. utworzone zostaną pliki z listingami.

    Atari Font Maker pozwala zapisać listing wyłącznie z danymi - program trzeba dopisać samodzielnie - do zapisu służy opcja Export font, która pozwala zapisać dane w wielu formatach (Basic, Action, Assembler, Mads, Fast Basic, Bitmap)

    Do edycji obrazów dyskietek na PC polecam program AtaDim

    Na Atari:

    Program Larka, który zapisuje nieco inny program.
    • 4:
       
      CommentAuthorKaz
    • CommentTime31 Jan 2019
     
    Świetny, kompleksowy opis! Dzięki QTZ.
    • 5: CommentAuthorbasakatu
    • CommentTime4 Feb 2019
     
    Dzięki za obszerne i wyczerpujące objaśnienie sprawy.
    • 6:
       
      CommentAuthorKaz
    • CommentTime25 Nov 2019
     
    A taki oto artykuł się pojawił u Steva Morrowa, krok po kroku dla początkujących, jak przedefiniować sobie w Basicu pojedynczy znak:

    ->link<-

    • 7: CommentAuthoroxy
    • CommentTime2 Dec 2020
     
    Czy da się przegenerować znaki dla trybu 1 i 2 (AtariBASIC) ?
    Robiłem wg. podanych tutoriali, ale zawsze jest jakieś przesunięcie, krzaczki, etc.
    • 8: CommentAuthorpirx
    • CommentTime2 Dec 2020
     
    pewnie, że się da, tylko trzeba pamiętać, że w tych trybach używane są tylko pierwsze 64 znaki internal (chyba, z pamięci klepię, altirra hardware manual Twoim przyjacielem jakby co). To się jakoś mapuje na atascii, że w oryginale masz tylko wielkie litery. najwyższe wyższe 2 bity znaków przypisują im kolorek.
    Jeśli mażesz po ekranie kodami internal, to łatwo - kody od 0 do 63. Jeśli robisz basicowego PRINTa, to to się przemapowuje na inne kolorki ("Aa") wyświetli "AA", tylko w różnych kolorkach.
    • 9: CommentAuthoroxy
    • CommentTime3 Dec 2020
     
    @pirx - dzięki za odpowiedź.

    Brałem przykład z jednej ze stron atarowych i tam było przesunięcie przy POKE 756, teraz mi działa.

    O przesunięciu 32 pierwszych znaków pamiętam. Teraz będę dalej pracował, jeśli wyjdą jakieś problemy to zapytam.