Napadla mě jedna myšlenka, využít chatGPT jako programátora. Použil jsem model o1-preview se zadáním, aby naprogramoval v Basicu program, který nahradí horní znaky vedle čísel českými znaky. Musím říct, že si s tím poradil velmi dobře, hned pochopil o co mi jde a program měl za minutu hotový. Musím říci, že program byl bez chyby po spuštění, to smekám. Pouze jsem trochu upravil písmeno č a ř (prodloužil), otočil háčky (měl je obráceně), ale jinak jsem ponechal jeho font a pak jsem dodělal jen řádek 195. Je to jen nástin, nechci to dál rozpracovávat, jen ukázat, že udělat program a udělat dokumentaci není žádný problém pro GPT. Pozor načtení ROM do RAM trvá, lepší je použít rutinu v assembleru, ale jako demonstrace tohle stačí. Je to přizpůsobeno klávesnici C64, tedy ne VICE s PC klávesnici, která má jiné rozložení.
Vysvětlení programu:Řádky 5–90: Kopírují znakovou sadu z ROM do RAM na adresu $2000 (8192) a nastavují systém tak, aby ji VIC-II čip používal.
Řádky 110–190: Mapují české znaky na specifické klávesy podle vašeho požadavku. Proměnná N obsahuje ASCII kód znaku, který nahrazujeme českým písmenem. Každému znaku je přiřazen podprogram s definicí jeho bitmapy.
Řádky 1000–1072: Obsahují definice bitmap pro jednotlivé české znaky. Data reprezentují 8 řádků pixelů pro každý znak.
Řádky 1300–1306: Podprogram, který načítá data pro aktuální znak a ukládá je do paměti znakové sady v RAM. Rovněž vytváří inverzní verzi znaku pro inverzní textový režim.
Jak používat program:Spuštění programu:
Zadejte a spusťte program na Commodore 64.
Program přepne do režimu velkých a malých písmen a nastaví novou znakovou sadu s českými znaky.
Použití kláves pro české znaky:
Stisknutím klávesy " (uvozovky) napíšete ě.
Stisknutím klávesy # napíšete š.
Stisknutím klávesy $ napíšete č.
Stisknutím klávesy % napíšete ř.
Stisknutím klávesy ' (apostrof) napíšete ž.
Stisknutím klávesy & napíšete ý.
Stisknutím klávesy ( napíšete á.
Stisknutím klávesy ) napíšete í.
Poznámky:Režim velká/malá písmena:
Program automaticky přepíná do režimu velkých a malých písmen pomocí PRINT CHR$(14).
Pokud chcete přepnout zpět do původního režimu, použijte PRINT CHR$(142).
Inverzní video:
Program vytváří inverzní verze znaků, takže české znaky budou správně zobrazeny i v inverzním režimu.
Omezení:
Původní symboly na klávesách ", #, $, %, ', &, (, ) jsou nahrazeny českými znaky. Pokud potřebujete tyto symboly, budete muset upravit mapování nebo použít jiné klávesy.
Přizpůsobení:
Pro změnu mapování nebo přidání dalších znaků můžete upravit hodnotu N (ASCII kód klávesy) a příslušná data v podprogramech.
ASCII kódy použitých kláves:
" (uvozovky) – ASCII 34
# – ASCII 35
$ – ASCII 36
% – ASCII 37
' (apostrof) – ASCII 39
& – ASCII 38
( – ASCII 40
) – ASCII 41
Kód:
5 print chr$(14) : rem přepnutí do režimu velká/malá písmena
10 rem kopírování znakové sady z rom do ram
20 poke 56334, peek(56334) and 254 : rem vypnutí přerušení
30 poke 1, peek(1) and 251 : rem zapnutí znakové rom
40 for i=0 to 2047
50 poke 8192+i, peek(53248+i)
60 next i
70 poke 1, peek(1) or 4 : rem vypnutí znakové rom
80 poke 56334, peek(56334) or 1 : rem zapnutí přerušení
90 poke 53272, (peek(53272) and 240) or 2 : rem nastavení znakové sady na $2000
100 rem definice českých znaků přiřazených ke specifickým klávesám
110 rem přiřazení českých písmen ke znakům: " # $ % ' & ( )
120 n=34 : gosub 1000 : rem '"' -> 'ě'
130 n=35 : gosub 1010 : rem '#' -> 'š'
140 n=36 : gosub 1020 : rem '$' -> 'č'
150 n=37 : gosub 1030 : rem '%' -> 'ř'
160 n=39 : gosub 1040 : rem ''' -> 'ž'
170 n=38 : gosub 1050 : rem '&' -> 'ý'
180 n=40 : gosub 1060 : rem '(' -> 'á'
190 n=41 : gosub 1070 : rem ')' -> 'í'
195 poke 53272,24: rem nastaveni nove znakove sady
200 rem konec programu
210 end
1000 rem definice 'ě'
1001 data 0,40,16,60,66,126,64,60
1002 goto 1300
1010 rem definice 'š'
1011 data 0,40,16,60,32,24,4,120
1012 goto 1300
1020 rem definice 'č'
1021 data 0,40,16,60,64,64,60,0
1022 goto 1300
1030 rem definice 'ř'
1031 data 0,40,16,76,82,96,64,0
1032 goto 1300
1040 rem definice 'ž'
1041 data 0,40,16,124,8,16,32,124
1042 goto 1300
1050 rem definice 'ý'
1051 data 0,4,8,68,68,60,4,56
1052 goto 1300
1060 rem definice 'á'
1061 data 0,4,8,60,2,62,66,62
1062 goto 1300
1070 rem definice 'í'
1071 data 0,4,8,16,0,16,16,16
1072 goto 1300
1300 rem načtení dat do paměti
1301 for i=0 to 7
1302 read ze
1303 poke 8192 + n * 8 + i, ze
1304 poke 8192 + n * 8 + i + 1024, 255 - ze
1305 next i
1306 return