OldComp.cz

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


Právě je 28.03.2024, 14:39

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: Generátor znaků pro XY4131
PříspěvekNapsal: 05.10.2019, 09:46 
Offline
Profík

Registrován: 06.03.2018, 16:00
Příspěvky: 955
Bydliště: Valtínov, Kunžak
Has thanked: 39 times
Been thanked: 471 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 7578 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 07.10.2019, 15:25 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2331
Has thanked: 303 times
Been thanked: 637 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.10.2019, 16:16 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.06.2013, 20:26
Příspěvky: 2487
Has thanked: 115 times
Been thanked: 424 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.10.2019, 18:30 
Offline
Profík

Registrován: 06.03.2018, 16:00
Příspěvky: 955
Bydliště: Valtínov, Kunžak
Has thanked: 39 times
Been thanked: 471 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.10.2019, 13:20 
Offline
Profík

Registrován: 06.03.2018, 16:00
Příspěvky: 955
Bydliště: Valtínov, Kunžak
Has thanked: 39 times
Been thanked: 471 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 7439 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 12.11.2019, 13:37 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 580
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 90 times
Ahoj,
pokud by si se chtěl vrtat v datech můžu poslat definiční soubory pro kreslení znaků čárama z IQ151-Grafik, dále pak definiční soubory jak pro XY tak Minigraf opět z modulů IQ151.
L.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 12.11.2019, 15:44 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 580
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 90 times
Jestli ještě bádáš nad fontama pro zapisovač, můžu poskytnout data z Modulů pro IQ151 jak pro minigraf tak pro XY, případně data z modulu jemné grafiky, kde je ale v interpolátoru možnost kreslit oblouky, takže to font využívá při definici...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Generátor znaků pro XY4131
PříspěvekNapsal: 13.11.2019, 15:26 
Offline
Profík

Registrován: 06.03.2018, 16:00
Příspěvky: 955
Bydliště: Valtínov, Kunžak
Has thanked: 39 times
Been thanked: 471 times
Ahoj, dík za nabídku, .BIN soubory tu samozřejmě zveřejnit můžeš, rád se do nich podívám (a možná nejen já). Prozatím je to uzavřený projekt, ale nevylučuji, že bude obnoven - třeba právě na základě souborů z IQ-čka.

Díky

Petr


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