-
11. Data: 2021-08-06 12:06:52
Temat: Re: Asembler 8080 - przerwania i zrzucanie stanu rejestrów na stos
Od: Atlantis <m...@w...pl>
Przychodzi mi do głowy jeszcze jedna hipoteza, że może coś jest nie tak
z pamięcią systemową i w pewnym momencie przewijanie ekranu wysypuje się
na odczycie z/zapisie do bufora BLKDAT. Byłoby to jednak wyjątkowo
dziwną i niesamowicie selektywną awarią - w tym samym układzie pamięci
SRAM mieści się przecież stos, kod wykonywanego programu w BASIC-u oraz
kluczowe zmienne systemowe. Gdyby układ był wadliwy, to niestabilność
systemu byłaby widoczna znacznie częściej, a nie tylko podczas
wykonywania jednej procedury do scrollowania ekranu...
-
12. Data: 2021-08-06 14:47:56
Temat: Re: Asembler 8080 - przerwania i zrzucanie stanu rejestrów na stos
Od: RoMan Mandziejewicz <r...@p...pl.invalid>
Hello Zbych,
Friday, August 6, 2021, 10:13:47 AM, you wrote:
>>> W aktywnych przerwaniach faktycznie mam instrukcje modyfikujące HL, DE
>>> oraz oczywiście akumulator/rejestr flag, jednak przed wykonaniem
>>> procedury obsługi przerwania zrzucam ich stany na stos za pomocą PUSH, a
>>> potem przywracam instrukcją POP.
>> A 8080 nie ma czasami banków rejestrów jak 51?
> Nie, ten cud techniki pojawił się w Z80, nie w 8080
> https://en.wikipedia.org/wiki/Zilog_Z80#Registers
> Dla porównania:
> https://en.wikipedia.org/wiki/Intel_8080#Registers
Człowiek się uczy całe życie... Naukę programowania zaczynałem 37 lat
temu od ZX Spectrum i Z80. W asemblerze popełniłem sporo, m.in.
drivery drukarki (łacznie z LPRINT i LLIST oraz wydruku grafiki z
ArtSTUDIO) i... dalekopisu jako drukarki.
Po 37 latach dowiaduję się, że Z80 miał podwójne rejestry. Może
jeszcze miał flagę sygnalizującą, z którego zestawu korzystam?
--
Best regards,
RoMan
Nowa strona: http://www.elektronika.squadack.com (w budowie!)
-
13. Data: 2021-08-06 15:00:51
Temat: Re: Asembler 8080 - przerwania i zrzucanie stanu rejestrów na stos
Od: Atlantis <m...@w...pl>
Jeszcze jedna rzecz do mnie dotarła. Procedura scrollująca ekran jest
jedyną częścią kodu, która korzysta z odczytu pamięci VRAM. Wszytsko
inne (w tym alternatywa polegająca na skasowaniu ekranu i przesunięciu
kursora na jego początek) zadowala się jedynie zapisem.
Czy potencjalnie może istnieć jakaś sprzętowa przyczyna, która mogłaby
się objawiać w ten sposób? Nie jest to raczej kwestia luźnej podstawki
lub niełączącego kynaru, ponieważ przewijanie działa prawidłowo za
każdym razem po włączeniu zasilania - nie wiem, np, uszkodzony inwerter
na linii RD, "zatrzaskujący" się w jednej pozycji?
-
14. Data: 2021-08-06 15:14:53
Temat: Re: Asembler 8080 - przerwania i zrzucanie stanu rejestrów na stos
Od: Zbych <z...@s...com>
On 06.08.2021 14:47, RoMan Mandziejewicz wrote:
> Po 37 latach dowiaduję się, że Z80 miał podwójne rejestry. Może
> jeszcze miał flagę sygnalizującą, z którego zestawu korzystam?
The only way for the programmer to tell which set(s) are in context is
to trace where each register swap is made at each point in the program.
-
15. Data: 2021-08-06 15:16:55
Temat: Re: Asembler 8080 - przerwania i zrzucanie stanu rejestrów na stos
Od: Janusz <j...@o...pl>
W dniu 2021-08-06 o 15:00, Atlantis pisze:
> Jeszcze jedna rzecz do mnie dotarła. Procedura scrollująca ekran jest
> jedyną częścią kodu, która korzysta z odczytu pamięci VRAM. Wszytsko
> inne (w tym alternatywa polegająca na skasowaniu ekranu i przesunięciu
> kursora na jego początek) zadowala się jedynie zapisem.
> Czy potencjalnie może istnieć jakaś sprzętowa przyczyna, która mogłaby
> się objawiać w ten sposób? Nie jest to raczej kwestia luźnej podstawki
> lub niełączącego kynaru, ponieważ przewijanie działa prawidłowo za
> każdym razem po włączeniu zasilania - nie wiem, np, uszkodzony inwerter
> na linii RD, "zatrzaskujący" się w jednej pozycji?
>
Albo hazard czasowy na danych lub adresach. Trzeba oscylem sprawdzić
czasy dostępu do pamięci.
--
Janusz
-
16. Data: 2021-08-07 11:25:03
Temat: Re: Asembler 8080 - przerwania i zrzucanie stanu rejestrów na stos
Od: Atlantis <m...@w...pl>
On 06.08.2021 15:16, Janusz wrote:
> Albo hazard czasowy na danych lub adresach. Trzeba oscylem sprawdzić
> czasy dostępu do pamięci.
Podmieniłem wszystkie układy scalone w sterowniku ekranu - nic się nie
zmieniło. Gdy już kończyły mi się pomysły, a po kolejnym przeglądzie
kody nie widziałem żadnego błędu, w akcie desperacji zacząłem sprawdzać
mniej prawdopodobne hipotezy.
Zacząłem od podmienienia pamięci SRAM. Nie tej w "karcie graficznej",
ale głównej pamięci komputera. Wygląda na to, że trafiłem - komputer
działa prawidłowo od kilku godzin, podczas gdy poprzednio problem z
przewijaniem ekranu występował po kilku-kilkunastu-minutach.
Wygląda na to, że problem z danymi miał miejsce w buforze BLKDAT,
pośredniczącym w przesuwanie tekstu na ekranie. Jak dotąd nie trafiłem
na tak dziwny problem z pamięcią - przechodziła test na TL866, działała
prawidłowo przez jakiś czas, ale potem zaczynała gubić dane w jednym
konkretnym fragmencie - tym, który użyłem na bufor. Nie było problemów z
kodem BASIC-a znajdującym się trochę wcześniej, ani zmiennymi
systemowymi, które umieściłem za buforem. Co więcej - power cycle
przywracał na chwilę prawidłowe działanie.
Nie mogę też powiedzieć, żeby pamięć przekłamywała dane, bo wtedy
widziałbym na ekranie losowe znaki - one je po prostu gubiła, najpewniej
zastępując zerami (albo inną jednolitą wartością, która wskazywała
sterownikowi ekranu pusty znak).
-
17. Data: 2021-08-09 10:54:58
Temat: Re: Asembler 8080 - przerwania i zrzucanie stanu rejestrów na stos
Od: "J.F" <j...@p...onet.pl>
On Sat, 7 Aug 2021 11:25:03 +0200, Atlantis wrote:
> On 06.08.2021 15:16, Janusz wrote:
>> Albo hazard czasowy na danych lub adresach. Trzeba oscylem sprawdzić
>> czasy dostępu do pamięci.
>
> Podmieniłem wszystkie układy scalone w sterowniku ekranu - nic się nie
> zmieniło. Gdy już kończyły mi się pomysły, a po kolejnym przeglądzie
> kody nie widziałem żadnego błędu, w akcie desperacji zacząłem sprawdzać
> mniej prawdopodobne hipotezy.
> Zacząłem od podmienienia pamięci SRAM. Nie tej w "karcie graficznej",
> ale głównej pamięci komputera. Wygląda na to, że trafiłem - komputer
> działa prawidłowo od kilku godzin, podczas gdy poprzednio problem z
> przewijaniem ekranu występował po kilku-kilkunastu-minutach.
>
> Wygląda na to, że problem z danymi miał miejsce w buforze BLKDAT,
> pośredniczącym w przesuwanie tekstu na ekranie. Jak dotąd nie trafiłem
> na tak dziwny problem z pamięcią
Bo to malo prawdopodobne - wszystko dziala, tylko kopiowanie do
sterownika ekranu nie. I to kopiowanie czysto programowe.
Podmien jeszcze raz - zobaczysz czy problem wroci :-)
Jesli jednak wroci ... sterownik ekranu jakis wolny, i odczytany
smieci na magistrali jeszcze dlugo?
Szczegolnie, ze masz tam jeszcze kilka NOP .. no wlasnie - program z
RAM czy EPROM czytany?
>- przechodziła test na TL866, działała
> prawidłowo przez jakiś czas, ale potem zaczynała gubić dane w jednym
> konkretnym fragmencie - tym, który użyłem na bufor. Nie było problemów z
> kodem BASIC-a znajdującym się trochę wcześniej, ani zmiennymi
> systemowymi, które umieściłem za buforem. Co więcej - power cycle
> przywracał na chwilę prawidłowe działanie.
> Nie mogę też powiedzieć, żeby pamięć przekłamywała dane, bo wtedy
> widziałbym na ekranie losowe znaki - one je po prostu gubiła, najpewniej
> zastępując zerami (albo inną jednolitą wartością, która wskazywała
> sterownikowi ekranu pusty znak).
No wlasnie - nie tyle "gubi" co zastepuje zerami.
Ale to hipoteza, czy jakos sprawdziles, ze tak sie dzieje?
Bo znow - malo prawdopodobne. Chyba, ze pamiec na granicy parametrow.
Ale bardziej bym podejrzewal jakis problem z dekoderem adresow -
moze ci sie cos wcina w te przestrzen.
J.