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

Zpět na zprávu

Celé vlákno · 7 zpráv

Chyba M80??

Jiri Biba SAPI-1

Dnes jsem se vratil k nejakymu starsimu programku, ktery jsem odlozil protoze „zahadne“ nechodil. Narazil jsem na jeden muj kopanec, ktery se po prekladu pomoci Mrkvosofti M80 chova naprosto zvlastne.

Spletl jsem si v 8080-ce dve scitaci instrukce ADC a ADI.  ADC  je pricteni obsahu reg k stradaci ,  ACI je pricteni konstanty k stradaci.

Napsal jsem :    ADC 0, jine zase ADC 6  coz je spatne, melo by byt ACI 0,  nebo ACI 6. Zajimavy ovsem je, ze to M80 schroupla a neprotestovala.  Ale treba ADC 32 uz protestovala na chybu argumentu..

Tak jsem se chtel zeptat, jestli to je chyba M80 a nebo to je neco podobnyho jako u 8051, kde se muzou registry oznacovat cislem, tedy adresou jejich ulozeni v pameti RAM. Jenze u 8051 jsou registry skutecne v RAM a u 8080 jsou primo v procesoru. Pokud je skutecne mozny oznacovat registry H,L,D,E atd cislama, nikdy jsem o tom neslysel. Treba v knize Zakladni instrukce 8080 od Tesla Eltos o tom neni ani carka a v popisu M80 taky nic. Dalo by se to odladit,  co je co, ale na to jsem docela linej. -:))    Uz si to proste nespletu. Zkusim ale zda to M80 dela i pri Z80 instrukcich.

Jirka

 

Re: Chyba M80??

Roman Bórik SAPI-1

Nie je to chyba M80, ale jeho vlastnosť (It is not a bug, it's a feature :-).

Ale súhlasím, že je to viac matúce, ako užitočné.
Mnohokrát sa mi stalo, že som pri všeliakých úpravách a optimalizáciách 
napísal napr.
MOV A,2 a potom som sa čudoval, prečo mi program robí psie kusy...
M80 to preložil ako MOV A,D (7Ah), ale ja som pochopiteľne chcel MVI A,2 (3Eh 
02h).

Nedávno som na Aukre získal knihu "Operační systém CP/M, Příručka
programátora, TESLA ELTOS, 1985, 2. vydanie 1988", kde je k formátu
zdrojového textu pre M80 uvedené, že mená registrov sú rezervované mená, 
ale zároveň majú priradené nasledujúce hodnoty:

B  C  D  E  H  L  M  SP  PSW  A
0  1  2  3  4  5  6  6  6  7

Takže to je dôvod, prečo pri "chybnom" zápise M80 nekričí.

Užitočnou vlastnosťou M80 je ale napr. to, že ako operand môže byť
použitý názov inštrukcie, napr.:
MVI A,(LXI H), čo sa preloží ako MVI A,21h

Roman

----------

Dnes jsem se vratil k nejakymu starsimu programku, ktery jsem odlozil protoze
"zahadne" nechodil. Narazil jsem na jeden muj kopanec, ktery se po prekladu
pomoci Mrkvosofti M80 chova naprosto zvlastne. 
Spletl jsem si v 8080-ce dve scitaci instrukce ADC a ADI.  ADC  je pricteni
obsahu reg k stradaci ,  ACI je pricteni konstanty k stradaci. 
Napsal jsem :    ADC 0, jine zase ADC 6  coz je spatne, melo by byt ACI 0,  nebo
ACI 6. Zajimavy ovsem je, ze to M80 schroupla a neprotestovala.  Ale treba ADC
32 uz protestovala na chybu argumentu..
Tak jsem se chtel zeptat, jestli to je chyba M80 a nebo to je neco podobnyho
jako u 8051, kde se muzou registry oznacovat cislem, tedy adresou jejich ulozeni
v pameti RAM. Jenze u 8051 jsou ! registry skutecne v RAM a u 8080 jsou primo v 
procesoru. Pokud je skutecne mozny oznacovat registry H,L,D,E atd cislama, nikdy
jsem o tom neslysel. Treba v knize Zakladni instrukce 8080 od Tesla Eltos o tom 
neni ani carka a v popisu M80 taky nic. Dalo by se to odladit,  co je co, ale na
to jsem docela linej. -:))    Uz si to proste nespletu. Zkusim ale zda to M80
dela i pri Z80 instrukcich.
Jirka

RE: Chyba M80??

Jiri Biba SAPI-1

Ahoj Romane!
No to je dobry s tema cislama registru! Akorat jak se boha jeho rozlisuje M,
SP a PSW, kdyz jsou vsechny za 6 ? Rekl bych ze tohle psal primo Bill, jeste
kdyz sedel v garazi. -:)) A ze v tech kokotinach pokracuje Mrkvosoft
dodnes.-:)) U M80 prepnutym pomoci .Z80 to umi taky? Co vidis za uzitecnyho
na ty instrukci jako operand? -:) Ja jen dalsi zmatek. 

Resil jsem ted obsluhu "pseudo" realnyho casu na Sapi1 desce RTC-1. Je to 20
bitovej citac (5 Cmosu ala 74193 za sebou), ktery se plni z generatoru 0,5HZ
(dvousekundy) a vse jede na zalozni baterku. Do citace se vejde asi 23 dni.
Ja to pouzivam jen jako tydeni casovac. Vycitani a prevod tech 20 bitu na
cas
jsem resil tak, ze od hodnoty citace odcitam pocet dvousekund co ma den,
dokud neni CY. Takze mam den. Z toho co zbyde odecitam pocet dvousekund co
ma hodina, zase dokud neni CY, mam pak hodinu. Z toho co zbyde, zase
odecitam pocet dvousekund co ma minuta, tim ziskam minuty. No a zbytek jsou
dvousekundy.
Pri zapisu opacne, do tech 20 bitu zase pricitam den * pocet dvousekund dne,
hodina * pocet dvousekund hodiny atd.
Cely to chodi jak ma, jen je problem, ze pri preteceni toho 20 bitovyho
citace v dobe chodu na baterku to ztrati hodnotu spravnyho casu(jede znova
od 0 a HW nezajisti o tom zadnou informaci). Problem je, ze jak je to delany
tim postupnym odecitanim ci pricitanim, tak kdyz jses v poslednim dnu tydne
23:59:59 tak to musi udelat kolem 4100 odcitacich a nebo scitacich cyklu,
kazdy ma kolem 10 instrukci, kazda prumerne 10 cyklu, takze by to mohlo byt
u neceho rychlostni omezeni.
Nenapada te prosim nejaka metoda jak to delat jinak?  Ja tohle napsal na
zaklade prvniho zpusobu, co me napadl. -:) Hlavne to prosim nepis, ta deska
ma urcita omezeni a RTC mam vyresen specialnim svabem uplne jinak, tohle
jsem psal jen tak ze zajmu.
Diky
Jirka 


Zobrazit citovaný text (61 řádků)
-----Original Message-----
From: Roman Bórik (sapipandora.cz) [mailto:roman.borik[doména skryta]] 
Sent: Saturday, November 05, 2011 11:57 AM
To: Konference "SAPI-1 a československé mikropočítače"
Subject: Re: Chyba M80??


Nie je to chyba M80, ale jeho vlastnosť (It is not a bug, it's a feature
:-).

Ale súhlasím, že je to viac matúce, ako užitočné.
Mnohokrát sa mi stalo, že som pri všeliakých úpravách a
 optimalizáciách
napísal napr.
MOV A,2 a potom som sa čudoval, prečo mi program robí psie kusy...
M80 to preložil ako MOV A,D (7Ah), ale ja som pochopiteľne chcel MVI A,2
(3Eh 02h).

Nedávno som na Aukre získal knihu "Operační systém CP/M, Příručka
programátora, TESLA ELTOS, 1985, 2. vydanie 1988", kde je k formátu
zdrojového textu pre M80 uvedené, že mená registrov sú rezervované mená, 
ale
zároveň majú priradené nasledujúce hodnoty:

B  C  D  E  H  L  M  SP  PSW  A
0  1  2  3  4  5  6  6  6  7

Takže to je dôvod, prečo pri "chybnom" zápise M80 nekričí.

Užitočnou vlastnosťou M80 je ale napr. to, že ako operand môže byť
použitý
názov inštrukcie, napr.:
MVI A,(LXI H), čo sa preloží ako MVI A,21h

Roman

----------

Dnes jsem se vratil k nejakymu starsimu programku, ktery jsem odlozil
protoze "zahadne" nechodil. Narazil jsem na jeden muj kopanec, ktery se po
prekladu pomoci Mrkvosofti M80 chova naprosto zvlastne. 
Spletl jsem si v 8080-ce dve scitaci instrukce ADC a ADI.  ADC  je pricteni
obsahu reg k stradaci ,  ACI je pricteni konstanty k stradaci. 
Napsal jsem :    ADC 0, jine zase ADC 6  coz je spatne, melo by byt ACI 0,
nebo ACI 6. Zajimavy ovsem je, ze to M80 schroupla a neprotestovala.  Ale
treba ADC 32 uz protestovala na chybu argumentu..
Tak jsem se chtel zeptat, jestli to je chyba M80 a nebo to je neco podobnyho
jako u 8051, kde se muzou registry oznacovat cislem, tedy adresou jejich
ulozeni v pameti RAM. Jenze u 8051 jsou ! registry skutecne v RAM a u 8080
jsou primo v procesoru. Pokud je skutecne mozny oznacovat registry H,L,D,E
atd cislama, nikdy jsem o tom neslysel. Treba v knize Zakladni instrukce
8080 od Tesla Eltos o tom neni ani carka a v popisu M80 taky nic. Dalo by se
to odladit,  co je co, ale na to jsem docela linej. -:))    Uz si to proste
nespletu. Zkusim ale zda to M80 dela i pri Z80 instrukcich.
Jirka

---------------------
sapipandora.cz
Konference o SAPI-1
---

RE: Chyba M80??

+GAMA SAPI-1

Zobrazit citovaný text (2 řádky)
>No to je dobry s tema cislama registru! Akorat jak se boha jeho rozlisuje M,
>SP a PSW, kdyz jsou vsechny za 6 ?
Taky by mne zajímalo. I když to asi nepoužiju.

Zobrazit citovaný text (2 řádky)
>Co vidis za uzitecnyho
>na ty instrukci jako operand? -:) Ja jen dalsi zmatek. 
Viděl bych trochu rozdíl. Pro lepší pochopitelnost, co tím autor myslel a
 odkud si číslo 21h vycucal, pak nemusím k instrukci dodávat komentář:
MVI A,(LXI H)
proti
MVI A,21h    ;LXI H

Re: Chyba M80??

Roman Bórik SAPI-1

Ahoj.

To rozlíšenie je jednoduche a logické.
M je použité iba u inštrukcií, ktoré pracujú s 8 bitovými registrami,
 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
môže byť jedine PSW. Naviac, za PUSH a POP môže byť iba párna hodnota 0, 
2, 4 a 6 pre B, D, H, PSW.
SP je použité iba u inštrukcií, ktoré pracujú s 16 bitovými registrami
(LXI, INX, DCX, DAD), takže v tom prípade 6 znamená jedine SP. A opäť sú
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é
použiť v Z80 notácii. Napr. inštrukcia LD x,y je príliš univerzálna na
to, aby sa to dalo takýmto spôsobom rozlíšiť.

Jednoznačne, deliť hodnotu RTC čítača prostým odpočítavaním je
neefektívne, hlavne pri veľkých hodnotách.
Treba použiť nejakú rutinu delenia, ktora bude vždy trvať približne
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 "Restoring 24-bit / 8-bit
Unsigned".

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

Roman



Zobrazit citovaný text (108 řádků)
----- Original Message ----- 
From: "Jiri Biba (sapipandora.cz)" <unive.nb[doména skryta]>
To: "Konference "SAPI-1 a československé mikropočítače""
<sapipandora.cz>
Sent: Sunday, November 06, 2011 11:02 AM
Subject: RE: Chyba M80??


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

RE: Chyba M80??

Jiri Biba SAPI-1

Aha, tak nad tim rozlisenim jsem nepremyslel. No asi to stejne nikdy
nepouziju. -:)

Jinak kam stale chodis na ty rozumy? -:)) Tohle je tedy opravdu bomba! To
jsem nemel ani v tech svych knihovnach, o ktery jsem prisel necitelnosti
disket.
Ted se zrovna blizi citace tem maximalnim hodnotam, za 5 hodin budou plny.
Kupodivu i kdyz to dela hromadu cyklu, na displeji neni okem znatelny
zpozdeni. Chtel jsem nechat "pulzovat" jeden port, set na zacatku a reset na
konci cteni citace abych zjistil realnou dylku ale jak jsem jiz psal, mam
uplny RTC od sekund do 99 roku v jednom svabu a tak tohle bylo jenom takovy
"hracickovami".  Ale to deleni a nasobeni schvalne vyzkousim.
Ta deska RTC-1 je proste paskvil. Kdyby pridali jeste jeden citac, tak to
mohlo umet vic nez rok a nebo mohli treba po trech tydnech dekodovat nejakym
Cmosem na baterku maximum a udelat reset citacu. Proste je videt, ze to
nenavrhl Eda ale liberecasi.
Jirka


Zobrazit citovaný text (180 řádků)
-----Original Message-----
From: Roman Bórik (sapipandora.cz) [mailto:roman.borik[doména skryta]] 
Sent: Sunday, November 06, 2011 2:15 PM
To: Konference "SAPI-1 a československé mikropočítače"
Subject: Re: Chyba M80??


Ahoj.

To rozlíšenie je jednoduche a logické.
M je použité iba u inštrukcií, ktoré pracujú s 8 bitovými registrami,
 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
môže byť
jedine PSW. Naviac, za PUSH a POP môže byť iba párna hodnota 0, 2, 4 a 6
pre
B, D, H, PSW.
SP je použité iba u inštrukcií, ktoré pracujú s 16 bitovými registrami
(LXI,
INX, DCX, DAD), takže v tom prípade 6 znamená jedine SP. A opäť sú
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é
použiť
v Z80 notácii. Napr. inštrukcia LD x,y je príliš univerzálna na to, aby
sa
to dalo takýmto spôsobom rozlíšiť.

Jednoznačne, deliť hodnotu RTC čítača prostým odpočítavaním je
neefektívne,
hlavne pri veľkých hodnotách.
Treba použiť nejakú rutinu delenia, ktora bude vždy trvať približne
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 "Restoring 24-bit / 8-bit
Unsigned".

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

Roman



----- Original Message ----- 
From: "Jiri Biba (sapipandora.cz)" <unive.nb[doména skryta]>
To: "Konference "SAPI-1 a československé mikropočítače""
<sapipandora.cz>
Sent: Sunday, November 06, 2011 11:02 AM
Subject: RE: Chyba M80??


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

RE: Chyba M80??

Jiri Biba SAPI-1

Tak jsem Romane zcela nepochodil, potreboval bych deleni 24/24 bitu. Nejvic
tam je 24/16 bitu. Ale ty ostatni funkce jsou perfektni. Jak jsem psal, bylo
to jen na zkousku desky a jestli nekdy bude cas, pokusim se to deleni 24/24
napsat. Inspiraci v tom odkazu je dost.
Jirka

Zobrazit citovaný text (180 řádků)
-----Original Message-----
From: Roman Bórik (sapipandora.cz) [mailto:roman.borik[doména skryta]] 
Sent: Sunday, November 06, 2011 2:15 PM
To: Konference "SAPI-1 a československé mikropočítače"
Subject: Re: Chyba M80??


Ahoj.

To rozlíšenie je jednoduche a logické.
M je použité iba u inštrukcií, ktoré pracujú s 8 bitovými registrami,
 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
môže byť
jedine PSW. Naviac, za PUSH a POP môže byť iba párna hodnota 0, 2, 4 a 6
pre
B, D, H, PSW.
SP je použité iba u inštrukcií, ktoré pracujú s 16 bitovými registrami
(LXI,
INX, DCX, DAD), takže v tom prípade 6 znamená jedine SP. A opäť sú
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é
použiť
v Z80 notácii. Napr. inštrukcia LD x,y je príliš univerzálna na to, aby
sa
to dalo takýmto spôsobom rozlíšiť.

Jednoznačne, deliť hodnotu RTC čítača prostým odpočítavaním je
neefektívne,
hlavne pri veľkých hodnotách.
Treba použiť nejakú rutinu delenia, ktora bude vždy trvať približne
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 "Restoring 24-bit / 8-bit
Unsigned".

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

Roman



----- Original Message ----- 
From: "Jiri Biba (sapipandora.cz)" <unive.nb[doména skryta]>
To: "Konference "SAPI-1 a československé mikropočítače""
<sapipandora.cz>
Sent: Sunday, November 06, 2011 11:02 AM
Subject: RE: Chyba M80??


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