OldComp.cz

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

ByteFest 2019!

Právě je 17 říj 2019, 20:23

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
 Předmět příspěvku: Generátor znaků pro XY4131
PříspěvekNapsal: 05 říj 2019, 09:46 
Offline
Kecálek

Registrován: 06 bře 2018, 16:00
Příspěvky: 95
Has thanked: 0 time
Been thanked: 40 times
Ahoj, hraju si s XY4131 a dospěl jsem do fáze, kdy potřebuju vytvořit znakový generátor - do programu vstoupí ASCII hodnota znaku a ten se postará o jeho vykreslení na plotru.

Taď používám formát, kdy každý byte z generátoru v sobě obsahuje informaci o zvednutém/spuštěném peru (bit 7), směru pohybu pera (8 směrů, bity 6,5 a 4) a o délce pohybu pera (16 kroků, bity 3 az 0). Byte s hodnotou 0 znamená konec definice znaku. Část mám hotovou a funguje to. Jen mi připadá, že ty definice zabírají dost místa.

Snažil jsem se pochopit systém použitý programem Superplott, ale nějak se mi to nepovedlo. Podobně jsem dopadl s obsluhou z PMD85 - tam vím, že se definice každého znaku před jeho vykreslením načítá z ROM modulu, ale jak jsou přesně data kódována, na to jsem nepřišel.

Je nějaký "standard", který se běžně používá nebo někdo tady má nějaké své "know-how"? Stačí mi princip, nemusí tobýt zdroják :D .

Za odpovědi děkuji.

Petr


Přílohy:
img_20191005_093736.jpg
img_20191005_093736.jpg [ 145.99 KiB | Zobrazeno 311 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 07 říj 2019, 15:25 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 18 kvě 2013, 14:56
Příspěvky: 1091
Has thanked: 146 times
Been thanked: 271 times
Standard asi není. V manuálu Alfi je popsán jejich způsob uložení znaků, ale i když je možná velmi úsporný, je taky velmi omezený na znaky složené pouze z čar svislých, vodorovných a šikmých 45°.

Co mě ale velmi zaujalo je, že existují docela pěkná písma od pana Alana Hersheyho cca z 1960-1970 určená pro CRT tiskárny (to není překlep a opravdu to znamená CRT obrazovku).

Viz external links z Wikipedie https://en.wikipedia.org/wiki/Hershey_fonts

Tady je malá přednáška o autorovi a písmech https://vimeo.com/178015110 vč. vysvětlení jak funguje původní formát. Někde jinde to je ještě lépe a detailněji, příp. popíšu, není to těžké. Jediná záludnost je, že jako command se počítá i pen_up a pen_up se skládá z mezery a znaku R. Vtipné je, že čísla souřadnic včetně znaménka jsou zakódovaná jako vzdálenost znaku od R v ASCII.

Oproti fontům se kterými jsme zvyklí pracovat jsou Hersheyho písma v rastru 32 x 32 souřadnic. resp. v rozsahu -16 až + 16 s nulou uprostřed a přehozenými znaménky pro osu X.

Rozhodně to jsou písma, která bych rád na některém ze svých plotrů viděl. Pár písmenek jsem zkoušel vyplotrovat a vypadají moc pěkně.

A krom toho mám nakreslené písmo v rastru 40x20 souřadnic, ale ještě jsem ho z SVG nepřevedl do použitelných dat. Narozdíl od Hersheyho je vyšší, podobně detailní, záměrně neproporcionální a zároveň připravené na diakritiku.

Mám do SVG překreslené i písmo z MZXR pro Aritmu 0507 (podle ukázky v manuálu), které narozdíl od Alfi není tak omezené a vyskytují se v něm čáry i v jiných úhlech než 0°, 90° a 45°. Jak přesně je kódované zatím netuším. Nicméně data jsou na mém webu ke stažení, povede-li se rozkódovat.
https://cygnus.speccy.cz/download/aritm ... er.tar.bz2

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 07 říj 2019, 16:16 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18 čer 2013, 20:26
Příspěvky: 2487
Has thanked: 97 times
Been thanked: 366 times
RaceSoft: Já bych se ještě přimlouval - jestli budeš řešit kódování češtiny, tak kdyby to mohlo být ISO Latin-2 (ISO-8859-2)

_________________
"Je lepší rozsvítit byť jen malou svíčku, než jen proklínat temnotu." (Konfucius)

www.zxsparrow.com


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 07 říj 2019, 18:30 
Offline
Kecálek

Registrován: 06 bře 2018, 16:00
Příspěvky: 95
Has thanked: 0 time
Been thanked: 40 times
Díky za odpovědi. Odkazy se budu snažit nastudovat v samostudiu. Kódování češtiny jsem zatím neřešil, předpokládám jen znaky do 127. Pokud se mi podaří něco rozumně vykoumat, nebráním se ani druhé polovině tabulky.

Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 08 říj 2019, 13:20 
Offline
Kecálek

Registrován: 06 bře 2018, 16:00
Příspěvky: 95
Has thanked: 0 time
Been thanked: 40 times
Takže, domácí úkol jsem částečně splnil a problematiku Hersheyových fontů jsem si přečetl a video shlédl. Jsou sice krásné, ale pro můj účel nepoužitelné - zabírají spoustu místa.

Uložení ve formátu Alfi je hodně podobné tomu, co používám já. V mém případě ale každý bajt obsahuje i informaci o tom, zda je písátko nahoře nebo dole (viz. 1. příspěvek).

Každý znak je definován v matici 8x6 kroků + 2 kroky meziznaková mezera. Každý znak se začíná kreslit od jeho levého dolního okraje a po jeho dokončení je písátko na levém dolním okraji dalšího znaku. Oba směry pohybu (X i Y) mají ještě svůj vlastní koeficient zvětšení, což umožňuje písmo zvětšovat v obou osách navzájem nezávisle.

Třeba zápis 007h,00B6h,031h,021h,000h (pro znak "\") znamená:
007h - udělěj 7 kroků směrem vzhůru se zvednutým perem
0B6h - udělěj 6 kroků směrem vpravo dolů se spuštěným perem
031h - udělej 1 krok směrem vpravo dolů se zvednutým perem
021h - udělěj 1 krok směrem v pravo se zvednutým perem

Pro vlastní výpočty přesunu písátka používám Bresenhamův algoritmus pro výpočet čáry - pro neznalé, vyznačuje se tím, že je rychlý a používá pouze celočíselnou aritmetiku. Stejný algoritmus jsem použil i pro kreslení souborů ve formátu HPGL/PLT. Oba programy (tisk znaků a obrázků) zprovozňuji na svém Stone64kB se systémem CP/M 2.2 s CF kartou 64MB. Výhoda je v tom, že zdrojový soubor HPGL může být i hodně velký, systém si ho postupně načítá do paměti.

Na přiloženém scanu písma je zvětšení jednotlivých bloků: 3x; 4x; 6x; 4x osa X a 6x osa Y; 6x osa X a 4x osa Y

Petr


Přílohy:
xy4131.jpg
xy4131.jpg [ 155.32 KiB | Zobrazeno 172 krát ]
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ů: 5 ] 

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