Jasne że chodzi o dowolne kształtowanie czcionki, ale jak jej nie wczytasz to oryginalna wygląda nieczytelnie.
I dobrze wiesz że w kodzie maszynowym są odpowiedniki komend POKE i CALL, a chodziło mi o to że do wyświetlania wąskiej czcionki można używać standardowej procedury i nie trzeba jej pisać na nowo.
Dzięki za wychwycenie błędu, faktycznie obie metody działają tylko na 6128. Wreszcie ktoś dociekliwy tu zagląda.
Za to CALL &BD1C działa na wszystkich CPC. I bez kasowania ekranu zmienia jego wyświetlanie na MODE 0.
CALL &BD1C,1 - zmienia na MODE 1 a CALL &BD1C,1,1 - zmienia na MODE 2.
A w kodzie zamiast dodawania tych jedynek po CALL trzeba przed jej wywołaniem do rejestru A wpisać nr trybu jaki chcemy.
Będę musiał dopisać sprostowanie na wątku o czcionkach.
Warto bys dopisal do tego artykulu o czcionkach, ze metoda, ktora opisujesz to tylko taki hack, oszukujacy system by myslal, ze wyswietla czcionki na ekranie w mode 1 gdy w rzeczywistosci jest to mode 0. Stad sie biora wszystkie artefakty na ekranie i mala czytelnosc czcionki.
Jesli chcesz wykorzystywac faktyczny font 4x6, 4x8, 6x8 albo inny rozny od 8x8 to musi to byc zrobione poprawnie, czyli:
- Minimalnie trzeba spatchowac nastepujace funkcje:
txt draw cursor (bdcd), txt undraw cursor (bdd0), txt write char (bdd3) i ew. txt unwrite (bdd6) i przekierowac je do wlasnych funkcji obslugujacych odpowiedni rozmiar czcionki
- Jesli maja byc inaczej interpretowane znaki kontrolne, to jeszcze txt out action (bdd9)
- ustawic rozmiar okna ekranu tak aby basic nie zglupial - txt win enable (bb66)
Pewnie jeszcze trzeba bedzie spatchowac pare funkcji w screen packu, typu scr char position czy scr char limits
W sumie parenascie, no gora paredziesiat linii kodu, nie liczac czcionki.