Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Původní podoba příspěvku

Roman Bórik Zpět na příspěvek

Surová data tak, jak byla v roce 2013 stažena z Pandory (HTML zdroj bez úprav, osobní e-mailové adresy jsou maskované).

<!-------------------------------------------------------------->
<table width="100%"><tr><td align="left" valign="middle"></td><td align=right valign="middle"></td></tr></table><BR><pre>Ahoj.

To rozlíšenie je jednoduche a logické.
M je použité iba u inštrukcií, ktoré pracujú s 8 bitovými registrami,
<img src="BODY_IMAGES_WRAP_GIF"> takže v tom prípade 6 znamená jedine M.
PSW je použiteľné iba u inštrukcií PUSH a POP, takže je jasné, že 6
<img src="BODY_IMAGES_WRAP_GIF">môže byť jedine PSW. Naviac, za PUSH a POP môže byť iba párna hodnota 0, 
<img src="BODY_IMAGES_WRAP_GIF">2, 4 a 6 pre B, D, H, PSW.
SP je použité iba u inštrukcií, ktoré pracujú s 16 bitovými registrami
<img src="BODY_IMAGES_WRAP_GIF">(LXI, INX, DCX, DAD), takže v tom prípade 6 znamená jedine SP. A opäť sú
<img src="BODY_IMAGES_WRAP_GIF">povolené iba párné hodnoty 0, 2, 4 a 6 pre B, D, H, SP.

Neskúšal som to, ale predpokladám, že tento mechanizmus nie je možné
<img src="BODY_IMAGES_WRAP_GIF">použiť v Z80 notácii. Napr. inštrukcia LD x,y je príliš univerzálna na
<img src="BODY_IMAGES_WRAP_GIF">to, aby sa to dalo takýmto spôsobom rozlíšiť.

Jednoznačne, deliť hodnotu RTC čítača prostým odpočítavaním je
<img src="BODY_IMAGES_WRAP_GIF">neefektívne, hlavne pri veľkých hodnotách.
Treba použiť nejakú rutinu delenia, ktora bude vždy trvať približne
<img src="BODY_IMAGES_WRAP_GIF">konštantný čas.
Inšpirovať sa môžeš napr. tu:
http://baze.au.com/misc/z80bits.html
V tvojom prípade by asi vyhovovaa rutina delenia &quot;Restoring 24-bit / 8-bit
<img src="BODY_IMAGES_WRAP_GIF">Unsigned&quot;.

Chýbajúca informácia o pretečení čítača je nepríjemná. Stačil by
<img src="BODY_IMAGES_WRAP_GIF">jeden bit, ktorý by o pretečení informoval a to by umožnilo užívateľa
<img src="BODY_IMAGES_WRAP_GIF">informovať o potrebe čas znovu nastaviť.

Roman



----- Original Message ----- 
From: &quot;Jiri Biba (sapi@pandora.cz)&quot; &lt;unive.nb@[doména skryta]&gt;
To: &quot;Konference &quot;SAPI-1 a československé mikropočítače&quot;&quot;
<img src="BODY_IMAGES_WRAP_GIF">&lt;sapi@pandora.cz&gt;
Sent: Sunday, November 06, 2011 11:02 AM
Subject: RE: Chyba M80??


<span class="replyquote1">&gt; 
&gt; Ahoj Romane!
&gt; No to je dobry s tema cislama registru! Akorat jak se boha jeho rozlisuje M,
&gt; SP a PSW, kdyz jsou vsechny za 6 ? Rekl bych ze tohle psal primo Bill, jeste
&gt; kdyz sedel v garazi. -:)) A ze v tech kokotinach pokracuje Mrkvosoft
&gt; dodnes.-:)) U M80 prepnutym pomoci .Z80 to umi taky? Co vidis za uzitecnyho
&gt; na ty instrukci jako operand? -:) Ja jen dalsi zmatek. 
&gt; 
&gt; Resil jsem ted obsluhu &quot;pseudo&quot; realnyho casu na Sapi1 desce RTC-1. Je to 20
&gt; bitovej citac (5 Cmosu ala 74193 za sebou), ktery se plni z generatoru 0,5HZ
&gt; (dvousekundy) a vse jede na zalozni baterku. Do citace se vejde asi 23 dni.
&gt; Ja to pouzivam jen jako tydeni casovac. Vycitani a prevod tech 20 bitu na
&gt; cas
&gt; jsem resil tak, ze od hodnoty citace odcitam pocet dvousekund co ma den,
&gt; dokud neni CY. Takze mam den. Z toho co zbyde odecitam pocet dvousekund co
&gt; ma hodina, zase dokud neni CY, mam pak hodinu. Z toho co zbyde, zase
&gt; odecitam pocet dvousekund co ma minuta, tim ziskam minuty. No a zbytek jsou
&gt; dvousekundy.
&gt; Pri zapisu opacne, do tech 20 bitu zase pricitam den * pocet dvousekund dne,
&gt; hodina * pocet dvousekund hodiny atd.
&gt; Cely to chodi jak ma, jen je problem, ze pri preteceni toho 20 bitovyho
&gt; citace v dobe chodu na baterku to ztrati hodnotu spravnyho casu(jede znova
&gt; od 0 a HW nezajisti o tom zadnou informaci). Problem je, ze jak je to delany
&gt; tim postupnym odecitanim ci pricitanim, tak kdyz jses v poslednim dnu tydne
&gt; 23:59:59 tak to musi udelat kolem 4100 odcitacich a nebo scitacich cyklu,
&gt; kazdy ma kolem 10 instrukci, kazda prumerne 10 cyklu, takze by to mohlo byt
&gt; u neceho rychlostni omezeni.
&gt; Nenapada te prosim nejaka metoda jak to delat jinak?  Ja tohle napsal na
&gt; zaklade prvniho zpusobu, co me napadl. -:) Hlavne to prosim nepis, ta deska
&gt; ma urcita omezeni a RTC mam vyresen specialnim svabem uplne jinak, tohle
&gt; jsem psal jen tak ze zajmu.
&gt; Diky
&gt; Jirka 
&gt; 
&gt; 
&gt; -----Original Message-----
&gt; From: Roman Bórik (sapi@pandora.cz) [mailto:roman.borik@[doména skryta]] 
&gt; Sent: Saturday, November 05, 2011 11:57 AM
&gt; To: Konference &quot;SAPI-1 a československé mikropočítače&quot;
&gt; Subject: Re: Chyba M80??
&gt; 
&gt; 
&gt; Nie je to chyba M80, ale jeho vlastnosť (It is not a bug, it's a feature
&gt; :-).
&gt; 
&gt; Ale súhlasím, že je to viac matúce, ako užitočné.
&gt; Mnohokrát sa mi stalo, že som pri všeliakých úpravách a
<img src="BODY_IMAGES_WRAP_GIF">optimalizáciách
&gt; napísal napr.
&gt; MOV A,2 a potom som sa čudoval, prečo mi program robí psie kusy...
&gt; M80 to preložil ako MOV A,D (7Ah), ale ja som pochopiteľne chcel MVI A,2
&gt; (3Eh 02h).
&gt; 
&gt; Nedávno som na Aukre získal knihu &quot;Operační systém CP/M, Příručka
&gt; programátora, TESLA ELTOS, 1985, 2. vydanie 1988&quot;, kde je k formátu
&gt; zdrojového textu pre M80 uvedené, že mená registrov sú rezervované
<img src="BODY_IMAGES_WRAP_GIF">mená, ale
&gt; zároveň majú priradené nasledujúce hodnoty:
&gt; 
&gt; B  C  D  E  H  L  M  SP  PSW  A
&gt; 0  1  2  3  4  5  6  6  6  7
&gt; 
&gt; Takže to je dôvod, prečo pri &quot;chybnom&quot; zápise M80 nekričí.
&gt; 
&gt; Užitočnou vlastnosťou M80 je ale napr. to, že ako operand môže byť
<img src="BODY_IMAGES_WRAP_GIF">použitý
&gt; názov inštrukcie, napr.:
&gt; MVI A,(LXI H), čo sa preloží ako MVI A,21h
&gt; 
&gt; Roman
&gt; 
&gt; ----------
&gt; 
&gt; Dnes jsem se vratil k nejakymu starsimu programku, ktery jsem odlozil
&gt; protoze &quot;zahadne&quot; nechodil. Narazil jsem na jeden muj kopanec, ktery se po
&gt; prekladu pomoci Mrkvosofti M80 chova naprosto zvlastne. 
&gt; Spletl jsem si v 8080-ce dve scitaci instrukce ADC a ADI.  ADC  je pricteni
&gt; obsahu reg k stradaci ,  ACI je pricteni konstanty k stradaci. 
&gt; Napsal jsem :    ADC 0, jine zase ADC 6  coz je spatne, melo by byt ACI 0,
&gt; nebo ACI 6. Zajimavy ovsem je, ze to M80 schroupla a neprotestovala.  Ale
&gt; treba ADC 32 uz protestovala na chybu argumentu..
&gt; Tak jsem se chtel zeptat, jestli to je chyba M80 a nebo to je neco podobnyho
&gt; jako u 8051, kde se muzou registry oznacovat cislem, tedy adresou jejich
&gt; ulozeni v pameti RAM. Jenze u 8051 jsou ! registry skutecne v RAM a u 8080
&gt; jsou primo v procesoru. Pokud je skutecne mozny oznacovat registry H,L,D,E
&gt; atd cislama, nikdy jsem o tom neslysel. Treba v knize Zakladni instrukce
&gt; 8080 od Tesla Eltos o tom neni ani carka a v popisu M80 taky nic. Dalo by se
&gt; to odladit,  co je co, ale na to jsem docela linej. -:))    Uz si to proste
&gt; nespletu. Zkusim ale zda to M80 dela i pri Z80 instrukcich.
&gt; Jirka
&gt; 
&gt; ---------------------
&gt; sapi@pandora.cz
&gt; Konference o SAPI-1
&gt; ---
&gt; 
&gt; ---------------------
&gt; sapi@pandora.cz
&gt; Konference o SAPI-1
&gt; ---
</pre>