OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů
Právě je 06.10.2024, 18:05

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 8 ] 
Autor Zpráva
 Předmět příspěvku: Nahrazení znaků na klávesnici
PříspěvekNapsal: 01.10.2024, 15:26 
Offline
Kecálek

Registrován: 13.01.2023, 09:42
Příspěvky: 169
Has thanked: 0 time
Been thanked: 54 times
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


Přílohy:
Snímek obrazovky 2024-10-01 v 15.23.46.png
Snímek obrazovky 2024-10-01 v 15.23.46.png [ 122.04 KiB | Zobrazeno 367 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nahrazení znaků na klávesnici
PříspěvekNapsal: 01.10.2024, 16:32 
Offline
Radil
Uživatelský avatar

Registrován: 27.06.2021, 15:15
Příspěvky: 359
Has thanked: 67 times
Been thanked: 338 times
Tak to čumim... Vůbec by mně nenapadlo na GPT chodit s prosbou o Basic. Zkoušel jsem asi před rokem něco okolo Z80 asm a vůbec nevěděla která bije. Dost možná teď už umí...

_________________
https://github.com/72ka


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nahrazení znaků na klávesnici
PříspěvekNapsal: 01.10.2024, 18:35 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2903
Has thanked: 248 times
Been thanked: 635 times
To byl assembler, na to je potřeba mít mozek. M$ BASIC na C=64 je tak ubohý, že ho zvládne i AI :lol:

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nahrazení znaků na klávesnici
PříspěvekNapsal: 01.10.2024, 19:31 
Offline
Kecálek

Registrován: 13.01.2023, 09:42
Příspěvky: 169
Has thanked: 0 time
Been thanked: 54 times
GPT programuje prakticky ve všem, umí i např. vytvářet java scripty do aplikací, které 99,99% lidí ani nezná. Schválně jsem mu zadal tuto stupidní otázku, odpověď trvala 7 sekund. Je skvělé jej použít na hledání chyb, nebo tvorbu nějakých rutin. Včera se lidé smáli, dnes jej úspěšně využívají a zítra nebudou programátoři potřeba.

Uměl bys naprogramovat textový editor v assembleru?


Naprogramování plnohodnotného textového editoru v assembleru pro platformu jako je MEGA65 nebo Commodore 64 je velmi komplexní úkol, který přesahuje rámec jedné odpovědi. Nicméně mohu vám pomoci začít tím, že poskytnu základní strukturu a vysvětlím klíčové kroky potřebné k vytvoření jednoduchého textového editoru v assembleru pro MEGA65.

1. Předpoklady:
Znalost assembleru 6502/65C02/45GS02: MEGA65 používá procesor C65GS, který je rozšířením 6502 s některými pokročilými funkcemi.
Vývojové prostředí: Potřebujete assembler a nástroje pro sestavení a nahrání kódu do MEGA65 (např. Xemu emulator, MEGA65 SDK, atd.).
Dokumentace MEGA65: Důkladně prostudujte MEGA65 Book, která obsahuje podrobné informace o hardwaru, instrukčních sadách a programování na MEGA65.
2. Základní koncepty textového editoru:
Režim obrazovky: Textový editor bude pracovat v textovém režimu, kde můžete manipulovat s jednotlivými znaky na obrazovce.
Paměť obrazovky: Musíte vědět, kde se nachází paměť obrazovky a jak do ní zapisovat znaky.
Vstup z klávesnice: Zpracování vstupu z klávesnice, detekce stisknutých kláves a reakce na ně.
Kurzory a pohyb v textu: Implementace kurzoru, umožnění pohybu kurzoru po obrazovce.
Editační funkce: Vkládání a mazání znaků, řádků, posouvání textu atd.
3. Základní struktura programu:
Níže je zjednodušený příklad, jak můžete začít s programem v assembleru pro MEGA65. Tento příklad ukazuje, jak číst vstup z klávesnice a zobrazovat znaky na obrazovce.

Kód:
        ; Jednoduchý textový vstup a zobrazení na MEGA65
        ; Tento kód je určen pro demonstraci a může vyžadovat úpravy pro skutečné použití

        .segment "HEADER"
        .word   $01, $0801, $0801
        .byte   $9e, $32, $30, $36, $31, $00    ; BASIC SYS2061

        .segment "CODE"
        .org    $0810

start:
        ; Inicializace
        sei                     ; Zakázat přerušení
        lda     #$00
        sta     $D020           ; Nastavit barvu okraje
        sta     $D021           ; Nastavit barvu pozadí
        cli                     ; Povolit přerušení

main_loop:
        jsr     get_key         ; Získat vstup z klávesnice
        cmp     #$00
        beq     main_loop       ; Pokud nebyla stisknuta žádná klávesa, opakovat

        jsr     display_char    ; Zobrazit znak na obrazovce
        jmp     main_loop       ; Opakovat hlavní smyčku

; Rutina pro získání vstupu z klávesnice
get_key:
        lda     $D610           ; MEGA65 klávesnicový buffer
        cmp     #$00
        beq     no_key
        sta     key_buffer
        lda     #$00
        sta     $D610           ; Vymazat klávesnicový buffer
        rts

no_key:
        lda     #$00
        rts

; Rutina pro zobrazení znaku na obrazovce
display_char:
        lda     key_buffer
        sta     ($fb),y         ; Uložit znak do paměti obrazovky na pozici kurzoru
        iny                     ; Posunout kurzor o jedno místo doprava
        cpy     #$28            ; Pokud dosáhneme konce řádku (40 znaků)
        bne     update_cursor
        lda     #$00
        sta     cursor_x
        iny                     ; Posunout na další řádek
        cpy     #$18            ; Pokud dosáhneme spodní části obrazovky (25 řádků)
        bne     update_cursor
        lda     #$00
        sta     cursor_y
update_cursor:
        lda     cursor_x
        sta     $fb
        lda     cursor_y
        sta     $fc
        rts

; Proměnné
        .segment "BSS"
key_buffer:
        .byte   $00
cursor_x:
        .byte   $00
cursor_y:
        .byte   $00

        .end


Doporučení:
Studium dokumentace:

Důkladně prostudujte dokumentaci MEGA65, zejména části týkající se práce s obrazovkou, klávesnicí a pamětí.
Rozdělení projektu:

Rozdělte si projekt na menší části a postupně implementujte jednotlivé funkce.
Vstup z klávesnice
Zobrazení textu
Pohyb kurzoru
Editační funkce (vkládání, mazání)
Práce se soubory (ukládání, načítání)
Použití vyšších programovacích jazyků:

Zvažte použití vyššího programovacího jazyka, pokud je to možné, nebo kombinaci assembleru a BASICu, abyste urychlil vývoj.
Komunitní zdroje:

Připojte se ke komunitě MEGA65, kde můžete najít další zdroje, příklady kódů a rady od ostatních vývojářů.
Závěr:
Naprogramování textového editoru v assembleru je náročný úkol, který vyžaduje pokročilé znalosti hardwaru a programování na nízké úrovni. Tento příklad vám může pomoci začít a pochopit základní principy. Doporučuji postupovat postupně, důkladně testovat každý krok a využívat dostupné zdroje a dokumentaci.

Pokud máte konkrétní otázky nebo potřebujete pomoc s určitými částmi kódu, neváhejte se zeptat. Rád vám pomohu s dalšími podrobnostmi.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nahrazení znaků na klávesnici
PříspěvekNapsal: 01.10.2024, 20:32 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2903
Has thanked: 248 times
Been thanked: 635 times
To je jako číst Reddit ;-)

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nahrazení znaků na klávesnici
PříspěvekNapsal: 01.10.2024, 20:36 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1335
Has thanked: 102 times
Been thanked: 195 times
Chat GPT neumi programovat, umi najit uz vymyslene a zverejnene reseni v naucene databazi.
Umi modifikovat reseni pro tve potreby.
Jakmile mu zadas neco co nenajdes na stackoverflow tak selze.
Zkus ho naucit nejake jednoduche algoritmy pro neortogonalni instrukcni sadu Z80.
Selzes.
Chvili se bude zdat ze mas nejaky pokrok a pak se kdykoliv vrati k chybnemu reseni. Vse zapomenuto.
Zkus tohle naucit cloveka a mozna to bude nejakou dobu trvat, ale principy pochopi.
Tam kde to nezvladaji ani prekladace a clovek nema problem ti Chat GPT nepomuze pokud nema odkud krast.
Tva predpoved budoucnosti by to vyzadovala, aby stale existovaly stranky typu stackoverflow, kde by AI pokladalo dotazy a clovek (nebo AI ktera ma pristup k emulaci hw a muze overovat svoje pokusy) odpovidal.
Aby se melo nad cim trenovat.
Protoze na rozdil od cloveka to nikdy vlastne delat nebude a ucit se sam svyma chybama.
Nabiflovany idiot teoretik je to nelepsi co zatim z neho dostanes.

Ale ano, mas pravdu, pro pomoc se to da pouzit, jako ptani se na cestu lokalnich deti. Mozna znaji reseni mozna ne, musis to overit.

V nicem se to ale zasadne nebude lisit od chytreho vyhledavace s filtrovanim vysledku obleknuteho do pekneho havku. a ktery umi odpovedi vylestit az se lesknou.

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nahrazení znaků na klávesnici
PříspěvekNapsal: 01.10.2024, 20:45 
Offline
Pan Štábní

Registrován: 28.07.2018, 14:37
Příspěvky: 1011
Has thanked: 69 times
Been thanked: 467 times
_dworkin mě předběhl ale tak už to taky připojím:

Zkusil jsem vygenerovat něco v assembleru i8080. Moje postřehy zde:

- zarazilo mě opravdu okamžité pochopení problému a tah na branku (vykreslení obrázku z RAM do videoram)
- generuje srozumitelný, komentovaný a zřejmě i bezchybný kód v rámci zadání
- například iterace na základě opravy "bajt má v daném systému pouze 6 pixelů, nikoliv 8" opět okamžitě pochopil a zapracoval
- kód však obsahuje množství balastu, jakoby to psal začátečník a nedocházely mu souvislosti
- drobné úlety, jako instrukce DJNZ na i8080 jsou tolerovatelné

Zkusil jsem mu ale zadat vygenerování Arkanoidu pro PMD-85. Začal psát impozantní klíčové kusy asm kódu, které však byly naprostým nesmyslem. Bylo vidět, že umí vytáhnout nějaké subkódy z databáze, kterou má, a snaží se to spojit. Výsledek je pořád jako když pejsek s kočičkou pekli dort. Jako když namyšlený student začne opakovat, co teoreticky slyšel a tak si to zapamatoval.

Takže můj sumární dojem: i když je to obrovský pokrok (i oproti stavu například před rokem), je to hlavně textové rozhraní, které mě udivuje svými schopnostmi. NALEZENÁ řešení jsou už pak řekněme, triviální, druhojakostní, popřípadě vybraná z nějakých již vyšlechtěných produktů předchozího tréninku a jejich zřetězení do finálního řešení až zase tak omračující není. Ale je to pokrok, jen to ještě není ve fázi opravdové inteligence. Zajímavé bude, až se to začne rekurentně učit na svých vlastních nesmyslech z raného stádia. Snad tohle podchytili.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Nahrazení znaků na klávesnici
PříspěvekNapsal: 02.10.2024, 00:06 
Offline
Kecálek

Registrován: 13.01.2023, 09:42
Příspěvky: 169
Has thanked: 0 time
Been thanked: 54 times
Dnes to je často o hledání chyb v kódu a ulehčení práce. Drtivá většina lidí neumí s GPT pracovat (včetně mě) a používá to jako Google, což je hluboký omyl. Samozřejmě, je potřeba používat placenou verzi a pod přihlášeným účtem, ale to tady nemusím asi říkat.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 8 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz