OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 10:26

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 13 ] 
Autor Zpráva
PříspěvekNapsal: 08.11.2016, 08:46 
Offline
Kecálek

Registrován: 25.11.2015, 02:24
Příspěvky: 109
Has thanked: 1 time
Been thanked: 17 times
Dobrý deň!

Nedávno som zistil že odlišnosť originálnej ZX Spectrum znakovej sady je od Didaktiku M 1991 sady je dosť veľká.
V podstate Didaktik M 1991 má Bold verziu sady ZX Spectra.
Chcel by som ju využiť.
Keďže sa nepohybujem na Speccy scéne, venujem sa Commodorom, vie mi niekto poradiť kde v ROMke sa nachádza a aká je jej veľkosť.
Samotné vyextrahovanie je potom už maličkosť.
Výsledok bude dve ZXS sady: Regular & Bold :)

Za pomoc ďakujem.
Miro


Nahoru
 Profil  
 
PříspěvekNapsal: 08.11.2016, 14:20 
Offline
Kecálek

Registrován: 25.11.2015, 02:24
Příspěvky: 109
Has thanked: 1 time
Been thanked: 17 times
Lanex píše:
Obvykle se nachází na adrese 15616 (3D00h), délku má 768 Bytes (obsahuje 96 ascii znaků od 32 do 127) ;-)

Ďakujem ale som trochu zmätený.
Má len 768 B a znaky 32-127...
Ako sú reprezentované znaky 0-31 - viem sú to riadiace znaky, no aj tie sú reprezentované tzv. netlačiteľnými znakmi a je ich možné zobraziť... A čo upper ASCII part 128-255?
Viem že Commodore zn. sady majú túto časť inverzné 0-127, no aj ASCII ENU má tieto znaky - čo ich reprezentuje?

Miro


Nahoru
 Profil  
 
PříspěvekNapsal: 08.11.2016, 14:38 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2569
Bydliště: Praha
Has thanked: 502 times
Been thanked: 604 times
Na Wiki je to popsané docela hezky

_________________
ZX80, ZX81, ZX Spectrum, ZX Spectrum +2, Didaktik M, PMD 85-1,2A,3, Olivetti Prodest PC 128, Acorn BBC Micro, PC-XT, Amiga 500


Nahoru
 Profil  
 
PříspěvekNapsal: 08.11.2016, 15:53 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
MIRKOSOFT píše:
V podstate Didaktik M 1991 má Bold verziu sady ZX Spectra.
Nie je to celkom bold. Boldovane znaky standartneho ZX Spektra vyzeraju dost inak. Ma proste iny font :)
vanthomas píše:
Na Wiki je to popasné docela hezky
V tom popise su drobne chybicky, ale inak celkom dobry popis.
MIRKOSOFT píše:
Len z pohľadu že Basic interpreter je súčasťou zn. sady, je to veľmi obmedzujúce...
Asi nie celkom rozumiem co tym myslis. Ak nechces, nemusis pouzivat znakovu sadu v romke, mozes si vytvorit vlastnu znakovu sadu kdekolvek v pameti.
MIRKOSOFT píše:
Prakticky temer/úplne nemožné novšie vyššie verzie Basicu.
Na ZX mame spustu roznych novsich alebo vylepsenych basicov - napr. Betabasic, Megabasic, Prodos...
Samotny interpreter basicu je od znakovej sady nezavisly. Nejaky iny interpreter moze vyuzivat sadu z romky, a podobne tak originalny interpreter v romke moze vyuzvat vlastnu sadu ktoru si das do ramky.

Skusim zhrnut co sa (ne)pise v tej wiki:
V znakovej sade v romke na #3D00-#3FFF su len ASCII znaky 32-127.
Znaky 0-31 nemaju ziadny graficky tvar, nachadzaju sa tu riadiace kody. Napr. posun kurzora dolava, nastavenie farieb pre pismo/podklad, zapnutie/vypnutie inverzneho vypisu, atd. Pri pokuse o vypis znaku z tejto skupiny, ktory nie je nejaky konkretny riadiaci kod, sa zobrazi iba otaznik.
Znaky 128-143 su rozne usporiadanie stvorceky. Ich graficka podoba nie je nikde ulozena, pri zobrazeni niektoreho z tychto znakov sa jeho podoba vypocita "on demand".
Znaky 144-164 su uzivatelske graficke znaky umiestnene v ramke, takze uzivatel si ich moze jednoduchym POKE zmenit. Po resete sa do nich skopiruje podoba velkych pismen A az U zo sady co je v romke.
Znaky 165-255 su basicove klucove slova. Pri vypise niektoreho z tychto znakov sa vypise cele slovo. Napr. PRINT CHR$(249) vypise naraz cely prikaz RANDOMIZE. Ich graficka podoba tiez nie je nikde ulozena, ale az pri vypise sa vysklada z jednotlivych pismen aktualne pouzivanej sady.

Skus trosku popisat, ako tu sadu chces vyuzit. Mozno budeme potom mudrejsi ;)


Nahoru
 Profil  
 
PříspěvekNapsal: 08.11.2016, 18:44 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3025
Has thanked: 2191 times
Been thanked: 894 times
MIRKOSOFT píše:
Len z pohľadu že Basic interpreter je súčasťou zn. sady, je to veľmi obmedzujúce...

Muzes si dat svou znakovou sadu nekam do RAM, a nastavit jeji adresu v systemovych promennych.
http://www.worldofspectrum.org/ZXBasicM ... hap25.html

Bytes, Address, Name, Contents
2, 23606, CHARS, 256 less than address of character set (which starts with space and carries on to the copyright symbol). Normally in ROM, but you can set up your own in RAM and make CHARS point to it.
2, 23675, UDG, Address of 1st user defined graphic You can change this for instance to save space by having fewer user defined graphics.

_________________
// na co myslím, když sedím u oldkompů: celý příběh


Nahoru
 Profil  
 
PříspěvekNapsal: 08.11.2016, 22:41 
Offline
Kecálek

Registrován: 25.11.2015, 02:24
Příspěvky: 109
Has thanked: 1 time
Been thanked: 17 times
Znakovú sadu chcem použiť ako jednu z možností importu do Font Editora robeného pre Commodore počítače (Editor bežiaci vo Windows) s možnosťou exportu aj do formátov iných počítačov a samozrejme RAW data.
Font Editor umožní editovať monospace alebo proportional fonty od 1x1 po 16x16 (16x32 interlaced).
Pri štandardnom poli 8x8 je možné do 64K (fyzicky, nie funkčne) vložiť 8192 znakov. Čiže v natívnom adresovom priestore 8-bitov.
Má aj ďalšie možnosti. Bude s podporou Drawera pre proportional fonty v X65 assembleri.
Cieľom tohto editora je použitie v The Ace OS pre Commodore 8-bity.
Keď ho už robím, chcem aby mali osoh aj užívateli iných počítačov. No moje znalosti X80 assembleru sú iba základné, ktoré mi boli potrebné pre programovanie Z80 v Commodore 128.

Miro


Nahoru
 Profil  
 
PříspěvekNapsal: 08.11.2016, 23:09 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
ASCII je sedmibitový kód, takže popisuje jenom znaky 0..127.

Řídící znaky 0..31 na Spectru mají úplně jiné významy než v ASCII, shoduje se snad jenom Enter.

V té horní polovině není interpretr BASICu, ale tokeny jednotlivých klíčových slov. Spectrum má všechna "zadrátovaná do klávesnice", takže nepotřebuje žádný parser, který by čistý text překládal, zadávají se vlastně přímo.

P.S. Font přímo z ROM si můžeš zkopírovat do obrazovky bajt po bajtu takhle:
Kód:
10 FOR i=0 TO 95
20 FOR j=0 TO 7
30 POKE 16384+i+j*256,PEEK (15616+i*8+j)
40 NEXT j
50 NEXT i

_________________
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říspěvekNapsal: 09.11.2016, 03:16 
Offline
Kecálek

Registrován: 25.11.2015, 02:24
Příspěvky: 109
Has thanked: 1 time
Been thanked: 17 times
Vyextrahované.
Pre znaky 0-31 som použil veľké písmená až po _
Znaky 32-127 sú nezmenené - skopírované z ROM ale malé a veľké písmená sú zamenené
Znaky 128-144 sú grafické znaky z mapy ZX Spectra
Příloha:
Poznámka: Znaková sada Didaktik M 1991
didaktik91.png
didaktik91.png [ 1.08 KiB | Zobrazeno 12899 krát ]


Miro


Nahoru
 Profil  
 
PříspěvekNapsal: 09.11.2016, 18:35 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Mám tu ROMku Didaktik Gama 1987 s tímhle tlustým fontem, potom Gama 1988 s tenkým spektráckým, pak zase Gama 1989 s tlustým. EMka jsem radši ani nezkoušel.
Možná to pojmenuj jen "Didaktik", protože se používal v celé téhle řadě od Gamy až po Kompakt, s drobnými výjimkami.

_________________
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říspěvekNapsal: 10.11.2016, 02:46 
Offline
Kecálek

Registrován: 27.09.2013, 19:59
Příspěvky: 91
Bydliště: Havirov
Has thanked: 0 time
Been thanked: 11 times
Diky tomu, ze prikazy Basicu jsou zakodovane do tokenu, ma Spectrum Basic dve vyhody:

- podstatne nizsi pametova narocnost programu, kazdy prikaz zabira v pameti jediny byte (namisto napr. 9 bytu pro RANDOMIZE nebo 5 bytu pro PRINT),
- lexikalni analyzator v ROM je jednodussi a tedy kratsi.


Nahoru
 Profil  
 
PříspěvekNapsal: 10.11.2016, 03:44 
Offline
Kecálek

Registrován: 25.11.2015, 02:24
Příspěvky: 109
Has thanked: 1 time
Been thanked: 17 times
Samozrejme že ani Commodore nemá pre príkaz DIRECTORY vyhradené 9 písmen ale tzv. Token ktorý je v Basicu 7.0 nielen 1 B ale mnohé nové tokeny majú 2 B.
Je to rovnaké a namiesto využitia fontu pre tokeny má aj viac riadiacich znakov než originálny ASCII...
Tokenizer a Detokenizer pracuje relatívne rovnako ako v ZXS.
Miro


Nahoru
 Profil  
 
PříspěvekNapsal: 10.11.2016, 19:39 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
ZX Spectrum tokenizer vlastně ani nemá, právě díky tomu že se tokeny zadávají přímo klávesnicí, podle toho který vkládací režim je právě nastavený. Ušetřilo se tak pár kilobajtů ROM a asi i hromada výkonu, díky tomu zbylo na takové lahůdky jako kontrola syntaktických chyb přímo v editačním řádku, a ne až za běhu.

Tokeny se v BASICu používají už od šedesátých let, jakmile se objevily první interpretry na minipočítačích. Prakticky je to částečná kompilace do jazyka virtuálního stroje, stejně jako bytekód v Javě. Rozdíl je v tom že BASIC má mnohem menší požadavky na stroj i na programátora :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říspěvekNapsal: 10.11.2016, 23:39 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
MIRKOSOFT píše:
namiesto využitia fontu pre tokeny má aj viac riadiacich znakov než originálny ASCII...
Ale pre tokeny nie je vyuzity samotny font, ale iba kody nad 164. Pri vypise sa tieto kody "detokenizuju" na standartne ASCII znaky a az tu vstupuje do hry font ktory urcuje ako maju vyzerat.

Inak, ci je lepsie mat viac riadiacich znakov namiesto tokenov nie je ani zdaleka take jednoznacne, pretoze napriklad vdaka tokenom sa daju niektore texty pisat uspornejsie. Napriklad meno suboru ma iba 10 znakov, ale vdaka tonenom sa do tychto 10 znakov da napriklad napisat text BORDEL V BORDERI (jeden program som si kedysi naozaj takto nazval :) ). A pokial na Spektre chcem aj ine znaky nez su v standartnom fonte, nie je najmensi problem si cokolvek nadefinovat v uzivatelskej grafike (kody 144-164) a to potom vypisat.
MIRKOSOFT píše:
Tokenizer a Detokenizer pracuje relatívne rovnako ako v ZXS.
Ako uz napisal faraon, ZX Spectrum 48 tokenizer vobec nema.


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ů: 13 ] 

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 7 návštevní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