Diskuze o textových hrách

Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - mop

Stran: 1 ... 9 10 11
151
Sharp MZ-800 a ostatní / Re: Poradce
« kdy: 30. Červenec 2010 - 12:29 »
Druhou část musíš nahrát rychlostí 2400 Bd (rychlost se přepíná přímo v okně Virtual CMT).

152
Sharp MZ-800 a ostatní / Re: Podraz 3
« kdy: 30. Červenec 2010 - 12:24 »
Máš pravdu, tahle konverze má svoje mouchy. Existuje ještě jedna verze, napsaná v basicu. Když už jsi v tom, mohl bys ji otestovat? Já jsem ji zatím nehrál.

http://www.scav.cz/download/MZ-800/MZ-800_Software/BASIC/800/Podraz3.mzf
http://www.scav.cz/download/MZ-800/MZ-800_Software/BASIC/800/Podr3dat.mzf

153
Sharp MZ-800 a ostatní / Re: Operace Blesk
« kdy: 29. Červenec 2010 - 10:11 »
Možná jo, ale dřív než po víkendu to nebude.

Ještě jednu radu pro ty, kdo to dohrají do konce: až nahrajete ten třetí soubor a budete chtít zadat heslo, nejdřív sjeďte kurzorem na začátek prázdného řádku, jinak ta závěrečná odměna nejspíš nebude fungovat.

154
Sharp MZ-800 a ostatní / Re: Operace Blesk
« kdy: 29. Červenec 2010 - 09:55 »
Tady posílám kompletní postup pro Operaci Blesk. Pozor, nestačí tam ty čísla slepě nabušit - občas jsou tam ještě meziobrazovky, které se musí odmáčknout libovolnou klávesou. Ty jakoby obtížnější místa jsem dal na zvláštní řádek a okomentoval.

2,2,3,3,4,5,1,1,3,4,1,1,2,3,1,4,2
3,3,3 (chycení taxíka na tři pokusy)
3,3,3,2
1,1,2,2,2,2,3,3,3 (namačkání čísel na trezoru podle vzorce 2-4-3)
1 (vrácení materiálů do trezoru - trochu nelogicky tam ta možnost zůstane a dá se volit pořád dokola)
3,1,1,2,1,4,3,5,2

155
Programování / Re: Assembler z80
« kdy: 28. Červenec 2010 - 21:47 »
Ona ta instrukce LD A,x právě nikam nic neposílá. Ta jen nastaví registr A na nějakou hodnotu, a basta. A pak se teprve volá podprogram pro tisk znaku, který udělá všechnu práci a který je napsán tak, že hodnotu požadovaného znaku si bere právě z registru A.

Pokud jde o ty příklady, tak tam je to takhle mechanicky za sebou jen kvůli lepší přehlednosti. V reálu budeš mít ty data uložený někde v paměti hezky za sebou a jejich tisk bude řešený nějakým cyklem, takže ta instrukce bude v kódu napsaná jen jednou, i když budeš vypisovat dlouhé řetězce, různýma barvičkama atd.

156
Sharp MZ-800 a ostatní / Re: Operace Blesk
« kdy: 28. Červenec 2010 - 19:08 »
Velmi rád. Kdepak ses zaseknul? Pokud vím, tak nějaká záludnější místa jsou tam v podstatě jen dvě.

157
Programování / Re: Assembler z80
« kdy: 28. Červenec 2010 - 10:57 »
Nedalo mi to a stáhnul jsem si v pdf 1. díl té knihy Assembler a ZX Spectrum, kde je na str. 36 vysvětleno, jak je to vlastně s tím RST 16:

Citace
... Tisk znaku je zajišťován instrukcí rst 16 (volání podprogramu na adrese 16). Znak, který má být vytisknut, je uložen v registru a. ... Program umí tisknout všechny ASCII znaky, semigrafiku, UDG, klíčová slova a zpracovávat tyto řídící kódy:
6 - print COMMA (posune na další pozici - začátek nebo polovina řádku)
8 - cursor left (posune tiskovou pozici doleva)
9 - cursor right (posune tiskovou pozici doprava)
10 - cursor down (posune tiskovou pozici dolů)
11 - cursor up (posune tiskovou pozici nahoru)
13 - ENTER (přesune tiskovou pozici na začátek dalšího řádku)
16 - ink (ovládání barvy inkoustu - pošlete kód 16 a potom číslo 0-7)
17 - paper (ovládání barvy papíru - pošlete kód 17 a potom číslo 0-7)
18 - flash (ovládání blikání - pošlete kód 18 a potom číslo 0 nebo 1)
19 - bright (ovládání jasu - pošlete kód 19 a potom číslo 0 nebo 1)
20 - inverse (ovládání inverze - pošlete kód 20 a potom číslo 0 nebo 1)
21 - over (ovládání over - pošlete kód 21 a potom číslo 0 nebo 1)
22 - at (nastavení tiskové pozice - pošlete kód 22 a potom řádek a sloupec)
23 - tab (tabulátor - pošlete kód 23 a potom číslo rozložené do dvou bytů)

To je naprosto v souladu se známým faktem, že v ASCII tabulce začínají tisknutelné znaky až od č. 32, zatímco hodnoty 0 až 31 bývají využívány pro různé užitečné úkony, jako je třeba tabulátor, enter apod. (proto tomu říkají řídicí kódy). Takže v zásadě se dá říct, že sekvence instrukcí LD A,x a RST 16 dělá totéž, co příkaz PRINT CHR$(x) v basicu. Zkus třeba do basicu naťukat tohle:

Kód: [Vybrat]
10 LET A$="AHOJ"+CHR$(13)+"SVETE"
20 LET B$="HELLO"+CHR$(22)+CHR$(5)+CHR$(20)+"WORLD"
30 PRINT A$
40 PRINT B$

Když se podíváš, co to dělá, a dáš si to dohromady tady s tím seznamem řídicích kódů, tak ti to podle mě pomůže pochopit i leccos z těch dřívějších příkladů v assembleru.

158
Programování / Re: Assembler z80
« kdy: 27. Červenec 2010 - 21:50 »
Taky si myslím, že dokud nebudeš pořádně vědět, co dělá ta instrukce RST 16, tak ti tyhle příklady žádný užitek nepřinesou. Přiznám se, že považuju za docela nešťastný tenhle přístup k výuce assembleru, kdy se jako příklad použije kód, jehož podstatná část je tvořena instrukcemi CALL nebo RST, volajícími nějaké už existující rutiny v ROM nějakého konkrétního počítače. Z takového příkladu se v konečném důsledku stejně dopodrobna nedozvíš, co ten program vlastně vykonává.

Jestli trochu vládneš anglicky, tak rozhodně doporučuju tyhle stránky, kde na to autor jde přesně opačně:

http://sgate.emt.bme.hu/patai/publications/z80guide/

Myslím, že je to výborné čtivo na úplný začátek, pro pochopení samotné filozofie strojového jazyka. Ale tím, že je to tutoriál naprosto obecný, který se nezabývá specifiky nějakého konkrétního počítače, nenajdeš v něm odpovědi na své otázky týkající se ZX Spectra (jako třeba právě otázka, co dělá ta instrukce RST 16).

Já jsem si kdysi dávno něco málo psal pro počítač Sharp, takže s věcmi specifickými pro ZX poradit neumím, ale s otázkami týkajícími se obecně strojáku Z80 se můžu pokusit pomoct. Ale nevím, jestli je to ještě aktuální, jelikož tady už dva týdny žádná diskuse neběží.

Stran: 1 ... 9 10 11