OldComp.cz

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


Právě je 28.03.2024, 11:38

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




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

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
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ů.


Nahoru
 Profil  
 
PříspěvekNapsal: 11.10.2021, 09:13 
Offline
Kecálek

Registrován: 28.11.2020, 17:02
Příspěvky: 88
Has thanked: 157 times
Been thanked: 15 times
Dobrý deň,

Oh!X je toto?


Nahoru
 Profil  
 
PříspěvekNapsal: 11.10.2021, 09:17 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
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


Nahoru
 Profil  
 
PříspěvekNapsal: 11.10.2021, 09:35 
Offline
Kecálek

Registrován: 28.11.2020, 17:02
Příspěvky: 88
Has thanked: 157 times
Been thanked: 15 times
Ďakujem :)


Nahoru
 Profil  
 
PříspěvekNapsal: 11.10.2021, 10:35 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
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ž ? ;)


Nahoru
 Profil  
 
PříspěvekNapsal: 11.10.2021, 11:18 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
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.


Nahoru
 Profil  
 
PříspěvekNapsal: 11.10.2021, 11:36 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
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 ?


Nahoru
 Profil  
 
PříspěvekNapsal: 11.10.2021, 12:33 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
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).


Nahoru
 Profil  
 
PříspěvekNapsal: 12.10.2021, 13:35 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
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.


Nahoru
 Profil  
 
PříspěvekNapsal: 01.11.2021, 23:41 
Offline
Kecálek

Registrován: 04.02.2016, 10:21
Příspěvky: 91
Has thanked: 7 times
Been thanked: 18 times
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.
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
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á.


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

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