OldComp.cz

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


Právě je 28.03.2024, 11:02

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 91 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další
Autor Zpráva
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 23.08.2021, 17:21 
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
zatím poslední verze, ještě by to určitě šlo dál optimalizovat v případě zájmu lze ještě pár taktíků z toho často opakujícího se cyklu dostat
je to psané pro ASW, pro jiný ssembler je třeba kouknout jak na makro rept...

Kód:
       cpu z80
       org 8000h

start: di
       ld hl,2000h   ;obrazová data - 24kB - 3x8192 R,G,B bitplány - po 7FFFh
       ld de,0A000h   ;zde je namapovaná VRAM
       ld bc,1000h   ;16x256=4096 bajtů pro každou stránku, C=0=256
       xor A
       out (0C0h),a   ;scroll registr
       out (0CCh),a   ;režim jednotlivých bitplánů

sm1:   ld a,0E6h   ;bitmapa R, první půlka od A000h
       out (0EAh),a
       ld a,0E2h   ;od 2000h první 4kB R
       out (0E2h),a
       call sm256
       ld a,0EAh   ;bitmapa G, první půlka
       out (0EAh),a
       ld a,0E4h   ;od 2000h první 4kB G
       out (0E2h),a
       call sm256
       ld a,0EEh   ;bitmapa B, první půlka
       out (0EAh),a
       ld a,0ECh   ;od 2000 první 4kB B
       out (0E2h),a
       call sm256
       inc h
       inc d
       dec b
       jp nz,sm1   ;opakuj 16x
       ld b,10h
sm2:   ld a,0E7h   ;bitmapa R, druhá půlka
       out (0EBh),a
       ld a,0E3h   ;od 3000h druhé 4kB G
       out (0E3h),a
       call sm256
       ld a,0EBh   ;bitmapa G, druhá půlka
       out (0EBh),a
       ld a,0E5h   ;od 3000h druhé 4kB G
       out (0E3h),a
       call sm256
       ld a,0EFh   ;bitmapa B, druhá půlka
       out (0EBh),a
       ld a,0EDh   ;od 3000h druhé 4kB B
       out (0E3h),a
       call sm256
       inc h
       inc d
       dec b
       jp nz,sm2   ;opakuj 16x
       ld a,0EAh
       out (0EAh),a
       ld a,0EBh
       out (0EBh),a
       ld a,0E2h
       out (0E2h),a
       ld a,0E3h
       out (0E3h),a
       ei
       ret

;přenos 256 bajtů RAM->VRAM
;--------------------------
sm256: ;ld a,(hl)   ->    původní kód zakomentovaný
       ;ld (de),a
       ;inc l
       ;inc e
       ;dec c
       ;jp nz,sm256
       ;ret
       
aaa:   push hl
       ld (aa1+1),hl
       ld hl,0
       add hl,sp
       ld (aa3+1),hl
aa1:   ld  sp,0
       ld  c,16
       ex de,hl
aa2:   rept 8
       pop de
       ld (hl),e
       inc l
       ld (hl),d
       inc l
       endm
       dec c
       jp nz,aa2
       ex de,hl
aa3:   ld  sp,0
       pop hl
       ret


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 23.08.2021, 17:53 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 782
Bydliště: Šlapanice
Has thanked: 129 times
Been thanked: 97 times
Už je to dlouho co jsem to PP-01 překresloval ale podle mě ten barvonosný registr tak dali jen kvůli textovému režimu. Výkon 8080 není nic moc a pokut chtěli mít slušně rychlí text a to ještě barevný tak tomu museli pomoct železem (pro někoho je to nepřijatelná myšlenka aneb na vše stačí program). Což ta možnost odkud začít vkreslovat VRAM a pak ten barvonosný registr. To že nejde vyčíst barvonosný registr něčemu nevadí aneb … BUSY mě už předběhl.

Pokut jde o programování v asembleru tak v základu se to neliší od vyšších jazyků jen se musí myslet o dost na nižší úrovni. A jako u všeho to chce začít od jednoduchých věcí ke složitým a také je vhodné s tím asemblerem začít na strojích k tomu určeních např. PMI-80 ale není to nutné.

Docela nedávno jsem poprvé použil instrukci XTHL a načtené parametry uložené na zásobníku a to se osobně řadím k začátečníkům a to se v asembleru vrtám s přestávkami min 20let. V asembleru jsem si všimnul jedné věci, buď je program rychlý ale dlouhý, nebo krátký a pomalý. Teda to platí pro rozsáhlejší kousky aneb napsat program tak aby byl krátký a rychlí jsou dvě protichůdné věci.

_________________
Ne všichni jsme měli z češtiny za jedna, aneb jsem dyslektik a dysgrafik.

http://www.sapi.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 09:23 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Díky nezměrné romborově trpělivosti a programátorskému skilu, se kterým v rekordně krátkém čase vytvořil konverzní utilitu pro .bmp soubory mohu slavnostně představit první ne-testovací obrázek pro PP-01 a věřím, že se otevírá další kapitola pro využití grafických možností PP-01 :-). Všichni zvědaví mohou stáhnout, umístit do adresáře CODE a spustit si TEST.ppb. :neener:


Přílohy:
TEST.zip [2.68 KiB]
245 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 10:47 
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
když už Roman udělal konverzní utilitu do RAW formátu, pojďme ještě vymyslet formát vhodný ke kompresi, přece jen tahat 24kB dat když to jde zkompresovat na více než 1/10 mi přijde jako hloupost.

napadlo mně aby nemuselo být pro dekompresi volných 24kB a mohlo se zapisovat ne po bitplánech ale pěkněji do všech naráz přeházet data do bloků po 756 bajtech (3x256) což by byl zároveń dekompresní buffer a tyto bloky zpakovat aby to šlo rychle rozpakovat a pak přenést do VRAM, výsledný soubor by byl pak složený z těchto bloků.

Dekompresně-zobrazovací rutina by se pak asi dala vměstnat i s bufferem zhruba do 1kB


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 11:12 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Aniž bych to chtěl nějak sabotovat, ale má to cenu? Dostupný SDROM má z pohledu PP nekonečnou kapacitu a je tu též externí SRAM s 896 kB. Tam se vejde obrázků... A nejsou tu žádné problémy s RAM, kopíruje se přímo do VideoRAM, nejsou tu žádné problémy ve stylu PMD kdy se musí hlídat kam si Basic co uloží. Navíc máme i RAMTOP a dost místa na strojáky (tuším defaultně 2 kB). Obrázky se mění jedním příkazem slušnou rychlostí, neřeší se adresy, unpack, nic...

A proč to píšu - i s quidoscr komprimovací utilitou pro PMD se hodně členitý obrázek smrskne z 12 na cca 7-8 kB. A to jsou vždy šestice pixelů 1 ze 4barev. Tady každý pixel může být jiný z 8 barvami, resp. jsou to 3 bity ze 3 bajtů. A kolik CPU času bude taková utilitka potřebovat, aby to třeba neběželo významně pomaleji než prosté překopírování RAM to RAM. Ten formát je navíc vysoce efektivní pro uložení dat, levněji už to prakticky nejde.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 11:27 
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
když budeš mít 1-3 obrázky asi není co řešit, ale i do 896kB dostaneš "jen" 37 obrázků, nehledě na to jak dlouho by i z SDROM trvalo jejich načtení...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 11:56 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 529
Bydliště: Košice
Has thanked: 423 times
Been thanked: 265 times
Utilitku na konverziu 16 farebného BMP na VRAM PP 01 som predbežne posielal iba Czech Humanovi na vyskúšanie. Samozrejme to nie je nič tajné, takže si to tu môžete stiahnuť. Neskôr to kľudne môžem pridať na stránky PP 01.

Keďže na PP 01 je iba 8 farieb, bude obvykle potrebné urobiť premapovanie farieb v BMP na farby PP 01.
Pre ten testovací obrázok to môže byť napr. takto:
convbmp16.bat -in "c:\path\Screen PP-01.bmp" -out "c:\path\scr.vram" -cm 0,0,2,0,0,0,0,0,6,1,0,3,4,5,0,7
Ten zoznam obsahuje čísla farieb podľa https://pp01.borik.net/index.php?pg=videoram a musí ich byť toľko, koľko je farieb v BMP v hlavičke.
Paletu farieb daného BMP si možno pozrieť napr. v IrfanView: Image -> Palette -> Edit palette...
Utilita umožňuje aj "vystrihnúť" časť z väčšieho BMP a tá bude umiestnená do ľavého horného rohu VRAM.

https://pp01.borik.net/_temp/convbmp16.zip


O komprimáciu VRAM PP 01 som sa pokúšal aj ja, ale nikam som to nedotiahol aj preto, že sa objavili iné priority.
Musí to byť nejaký vhodný formát, aby sa to potom dalo nejako rozumne a efektívne dostať do tých 3 bitplanov. Tie 3 bitplany môžu byť kľudne všetky namapované v pamäťovom priestore, napr. miesto ROM, tie cieľové adresy potom budú 0A000h, 0C000h a 0E000h, čím sa vyhneme neustálemu prepínaniu pamäte. Až na záver sa opäť pripojí ROM.

Inou alternatívou je vymyslieť spôsob "kódovania farieb" v spakovanom streame tak, že sa bude používať iba bitplan G, ale to môže byť ešte viac náročné na čas.

A samozrejme, otázkou je, aká vôbec bude efektivita pakovania, či sa to vôbec oplatí. Určite by sa malo začať jednoduchou RLE, nejaké zložitejšie algoritmy môžu byť viac na škodu.
Otázka: Nie je na Sharp MZ-800 tiež bitplanova VideoRAM? Ak áno, nemali tam už vymyslené nejaké pakovacie algoritmy?

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 12:54 
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
no já jsem přemýšlel jen nad super jednoduchou kompresí pomocí značkového bajtu a počtu. tj. pakuje 4 a více stejných bajtů (pokud je za bajtem značka, následuje počet opakování). Značka by se dala volit podle dat (bajt, kterých je v obrázku nejmíň)
šlo by o 32x756=24576 bajtů, tak je otázkou jestli by značkový bajt měl být pro všechny bloky jeden stejný nebo jestli se vyplatí pro každý blok jiný (1/32 bajtů navíc). Tato značka by byla před daty (blokem) a následovalo by 756 zkomprimovaných bajtů. Ty by se po dekompresi do bufferu přenesly do VRAM (každá barva 256 bajtů) a šlo by se na další blok...

účinnost těžko říct :) ale na jednoduché obrázky nebo souvislé plochy by to mohlo zabrat


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 14:46 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
rombor píše:
Inou alternatívou je vymyslieť spôsob "kódovania farieb" v spakovanom streame tak, že sa bude používať iba bitplan G, ale to môže byť ešte viac náročné na čas.

Huffmanovym kódovaním spakovať 256x256 pixlov, depakovacia tabuľka (strom) nebude veľká (tipujem 32 bajtov) pretože sa bude pakovať maximálne 8 čísel. Pri dekompresii budeme dostávať pixel za pixlom, teda komplet farbu. Tú farbu by bolo vhodné už pred kompresovaním rozšíriť o bit 3 (teda +8).
Účinnosť komresie je otázna, ale prázdna obrazovka bude mať 8KB plus strom.
Lepšie by to malo byť pri kompresii bitplanov pomocou RLE alebo LZX.
Pre maximum bitplany po stĺpcoch.


Naposledy upravil Antony/DTA dne 24.08.2021, 18:32, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 15:57 
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
zapomeňte na práci s pixelama.... je to o moc pomalejší než zapisování do bit plánů, sice zapisuju 3x ale 8 bitů, kdežto po jednom zapisuju 8x na 2 místa (barva + pixel), s použitím stránkování vlastně jen přestránkuju a dávám na "to samé" místo hodnotu pro druhou barvu, takže když sjou správně nachystaná data tak to jde relativně velmi rychle


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 24.08.2021, 16:55 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Raději udělat stránkování do SRAM ať má PP dost RAM na programy, stačí 6 bloků na aktuální obrázek vzhledem ke kapacitě SDROMu :-).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 25.08.2021, 08:03 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Díky novým možnostem máme novou dobu - vyzkoušel jsem si vytvořit malé lehce naivní demíčko 8bitového zájemce o assembler se zábavným podtextem :P Stačí soubory rozbalit do složky Code, spustit DEMO.PPB a třeba se i pousmát :-). Demo jsem si včera vyzkoušel i na živém PP-01 a běhá to parádně :god: rombor a look :god2: .


Přílohy:
Demicko.zip [10.5 KiB]
249 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 25.08.2021, 09: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
Czech Human píše:
... malé lehce naivní demíčko ...
Hadze mi to chybu:
CHYBA 103
30 LOAD "POK.COD" AT 8000H


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 25.08.2021, 09:45 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 529
Bydliště: Košice
Has thanked: 423 times
Been thanked: 265 times
Busy píše:
Czech Human píše:
... malé lehce naivní demíčko ...
Hadze mi to chybu:
CHYBA 103
30 LOAD "POK.COD" AT 8000H
103 - Súbor alebo adresár sa nenašiel
Mne to ale normálne funguje.

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SMEP PP01 - otázky PPpanice
PříspěvekNapsal: 25.08.2021, 09:49 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Aha, tak to pardon, ještě musíte mít zobrazovač pok.cod co tu dal looke. Ten mě uklouzl v souborech, ono stejně většina lidí si ho už tady stáhla. Stačí nakopírovat ke zbytku souborů.


Přílohy:
pok.cod [180 bajtů]
242 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ů: 91 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další

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 3 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