OldComp.cz https://www.oldcomp.cz/ |
|
Oh!X 1988/8 - seriál o programování her v assembleru https://www.oldcomp.cz/viewtopic.php?f=135&t=10428 |
Stránka 1 z 1 |
Autor: | vaclavpe [ 08.10.2021, 19:08 ] |
Předmět příspěvku: | Oh!X 1988/8 - seriál o programování her v assembleru |
Ahoj, na twitteru jsem našel jednu horizontální střílečku pro MZ-700 s komentářem, že je dělaná podle seriálu v Oh!X. Takže to zkouším louskat. Je tam popis, jakým způsobem funguje zobrazení na různých Sharpech. Zatím jsem se prokousal MZ-700 - to známe, VRAM je od adresy D000h - a Sharp X1. Tam je textová VRAM umístěna na portech od adresy 3000h. Tj. LD BC,vramaddr; LD A,asciiznak; OUT (C),A Na MZ-2000, 2200, 2500 se přepínají banky. Ten seriál je vlastně kurz pro začátečníky, tak kdybyste se někdo chtěli začít učit assembler Z80, tak se zkuste přes Google translator podívat. Je tam spousta kvízů. |
Autor: | Stano [ 11.10.2021, 09:13 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Dobrý deň, Oh!X je toto? |
Autor: | vaclavpe [ 11.10.2021, 09:17 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Stano píše: Dobrý deň, Oh!X je toto? Ano, je, ale začátek seriálu je tady: https://archive.org/details/OhX_1988-08 |
Autor: | Stano [ 11.10.2021, 09:35 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Ďakujem |
Autor: | vaclavpe [ 11.10.2021, 10:35 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Jen pro zajímavost, jakým způsobem se tiskne v ASM znak A do levého horního rohu na různých platformách Sharp: MZ-700 asi mnoho z nás dobře zná - nepoužívá se ASCII, ale tzv. display code: Kód: LD HL,D000H LD A,01 ; 'A' v display kodu MZ700 LD (HL),A RET X1 má VRAM na portech: Kód: LD BC,3000H LD A,'A' ; ASCII znak OUT (C),A RET MZ200 má přepínání bank na portu E8 (tam se nastavují i RGB roviny pro grafickou VRAM) Kód: CALL VOPEN ; prepnout banku na VRAM LD HL,D000H LD A,'A' ; ASCII znak LD (HL),A CALL VCLOSE ; prepnout VRAM zpet na RAM RET VOPEN: DI IN A,(0E8H) OR 0C0H ; textova VRAM OUT (0E8H),A RET VCLOSE: IN A,(0E8H) AND 07FH OUT (0E8H),A EI RET Finálně MZ-2500 používá segmenty podobně jako MemExt k MZ-800, až na to, že my MemExt přepínáme trochu jinak: Kód: CALL VOPEN ; prepnout banku na VRAM LD HL,E000H LD A,'A' ; ASCII znak LD (HL),A CALL VCLOSE ; prepnout VRAM zpet RET VOPEN: DI LD A,07 OUT (0B4H),A ; sedmy segment E000-FFFF IN A,(0B5H) LD (OLDMB),A ; ulozit aktualni mapovani stránky LD A,07 OUT (0B4H),A LD A,38H ; na 38H je textova VRAM OUT (0B5H),A RET VCLOSE: LD A,07 OUT (0B4H),A ; do 7. segmentu LD A,(OLDMB) ; nastavime OUT (0B5H),A ; puvodni stranku EI RET OLDMB:DEFB 0 Pěkné, což ? |
Autor: | dex [ 11.10.2021, 11:18 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Hlavně u té X1 asi někdo přemýšlel. 64K RAM k dispozici, a VRAM, byť je celkem malá, v ní nezabírá místo. A komunikace s ní je rychlejší, než v případě TMS 9929A, která taky visí na portech. |
Autor: | vaclavpe [ 11.10.2021, 11:36 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
dex píše: Hlavně u té X1 asi někdo přemýšlel. 64K RAM k dispozici, a VRAM, byť je celkem malá, v ní nezabírá místo. A komunikace s ní je rychlejší, než v případě TMS 9929A, která taky visí na portech. Možná proto byl Sharp X1 později výrazně oblíbenější, než řada MZ. jak se komunikuje s TMS9929 ? |
Autor: | dex [ 11.10.2021, 12:33 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Třeba http://map.grauw.nl/articles/vdp_tut.php (popis čipu ZDE). Například zápis na adresu do VRAM - musím natříkrát poslat adresu (protože sedmibitově - 7+7+2 bity, u V9938 pak 7+7+5, protože větší RAM) s příznakem zápisu nebo čtení (každý zápis jsou dva OUTy - nejprve zapisovaná hodnota, pak číslo registru, do kterého patří), takže jen nastavení adresy je řada několika OUTů a to ještě pořád není zapsaná žádná hodnota, to se pak provede na jiném portu. A během práce musí být zakázané přerušení, aby se během něj nezměnily zapsané hodnoty (neplatí pro v9938). |
Autor: | vaclavpe [ 12.10.2021, 13:35 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Ahoj, tak tady je pokračování - attributová VRAM: MZ700 - od adresy D800h: bit 2..0 barva pozadí bit 6..4 barva znaku bit 7 přepínání banky CGROM X1 - porty od adresy 2000h: bit 2..0 barva znaku bit 3 - inverze barev bit 4 - blikání bit 5 - PCG/ROMCG bit 6 - dvojnásobná výška bit 7 - dvojnásobná šířka X1turbo má navíc na portech od 3800h bit 7 jako Kanji přepínač MZ-2000 - je černobílý, tam barva nefunguje (MZ-2200 už je barevný, ale dělá se to tam nějak komplikovaně, textová VRAM snad atributy nemá, ale používá se přebarvení v grafické VRAM) MZ2500 - opět v bloku 38h, offset 800h: bit 2..0 barva znaku bit 3 - osmibarevný PCG bit 5..4 - selektor PCG0-PCG3 bit 6 - inverze barev bit 7 - blikání Od offsetu 1000h je bit 7 přepínač ROMCG/PCG Jak se zdá, jediný MZ-700 umí nastavit barvu znaku i barvu pozadí. U ostatních se to zřejmě dělá přes grafický overlay. Ale dál jsem se zatím neprokousal. |
Autor: | vaclavpe [ 01.11.2021, 23:41 ] |
Předmět příspěvku: | Re: Oh!X 1988/8 - seriál o programování her v assembleru |
Tak jen pro zajímavost - dostal jsem se do prosincového čísla seriálu - čtení klávesnice na Sharp X1 (používá se sub-CPU 80c49): Kód: 1) počkej až bit 6 portu 1A01h spadne do 0. Pro zvídavé - více informací o komunikaci s 80c49 je v SHARPX1TecRef na archive.org od strany 78. Komunikace s X1Turbo je trošičku jiná.
2) pošli E6h na port 1900h. 3) počkej až bit 5 portu 1A01h spadne do 0. 4) IN data z portu 1900h. funčkní bajt (GRAPH,CAPSLOCK,KANA,SHIFT,CTRL...) 5) znovu počkej až bit 5 portu 1A01h spadne do 0. 6) IN data z portu 1900h.ASCII kód klávesy |
Stránka 1 z 1 | Všechny časy jsou v UTC + 1 hodina [ Letní čas ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |