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 00:01
       
      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 09:01
       
      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 12:01 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 13:01
       
      Świetny, kompleksowy opis! Dzięki QTZ.
      • 5: CommentAuthorbasakatu
      • CommentTime4 Feb 2019 01:02
       
      Dzięki za obszerne i wyczerpujące objaśnienie sprawy.
      • 6:
         
        CommentAuthorKaz
      • CommentTime25 Nov 2019 01:11
       
      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 10:12
       
      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 16:12
       
      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 07:12
       
      @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.