-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED.cdo179.neoplus.adsl.tpnet.pl!no
t-for-mail
From: Atlantis <m...@w...pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Portowanie CP/M
Date: Mon, 8 Jul 2024 22:20:26 +0200
Organization: ICM, Uniwersytet Warszawski
Message-ID: <v6hhma$12832$1@news.icm.edu.pl>
References: <v6h7gt$11nrq$1@news.icm.edu.pl>
<o7faz70e4d2w$.79mo6m18nev9$.dlg@40tude.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 8 Jul 2024 20:20:26 -0000 (UTC)
Injection-Info: news.icm.edu.pl;
posting-host="cdo179.neoplus.adsl.tpnet.pl:83.30.164.179";
logging-data="1122402"; mail-complaints-to="u...@n...icm.edu.pl"
User-Agent: Mozilla Thunderbird
Content-Language: en-US, pl-PL
In-Reply-To: <o7faz70e4d2w$.79mo6m18nev9$.dlg@40tude.net>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:792729
[ ukryj nagłówki ]On 8.07.2024 20:05, J.F wrote:
> A to sugeruje problemy z odczytem dysku.
Absolutnej pewności mieć nie mogę, ale wygląda na to, że karta CF jest
czytana poprawnie. Wcześniej (przed buforem na liniach danych) miałem
problemy na niektórych kartach, głównie w przypadku odczytu wartości
0xFF. Teraz te problemy zniknęły.
> Albo ... masz CCP wczytanego błędnie do pamięci.
Printowałem sobie wyrywkowo zawartość buforów i porównywałem je z
obrazem karty na dysku - wszystko było ok. Teraz DDT działa u mnie na
tyle dobrze, że też wyrywkowo porównałem sobie bajt po bajcie kilka
fragmentów pamięci z plikami lst. I też nie widzę przekłamań.
Będę musiał dodać liczenie sumy kontrolnej z fragmentu obrazu i
porównywać je z wartością liczoną z zawartości pamięci po załadowaniu.
Wtedy będę miał pewność, że wszystko jest ładowane poprawnie.
> A co się dzieje dalej - działa dalej z błędami, czy restartujesz?
> Może coś uszkadza CCP w pamięci?
Jeśli chodzi o TYPE, to po prostu wraca do prompta i pozwala na
wydawanie kolejnych poleceń. Ale w międzyczasie zauważyłem jeszcze jedną
rzecz. ten średnik to po prostu pierwsza litera obydwu plików, które
chciałem wyprintować (to pliki źródłowe, zaczynające się od komentarza).
Żeby to potwierdzić, wrzuciłem na kartę jeszcze jeden plik tekstowy i
faktycznie wyprintowała się tylko jego pierwsza litera.
Czyli z jakiegoś powodu TYPE poprzestaje na tym jednym znaku. Jasne, to
może być problem wynikający z jakiegoś przekłamania (chociaż byłoby to
wyjątkowo konsystentne przekłamanie) ale może to też być powodem tego,
że mój bios psuje coś w działaniu wyższych warstw. Tyle tylko, że parę
razy już sprawdziłem, czy przypadkiem któryś z rejestrów nie jest
permanentnie nadpisywany i nie mogę się dopatrzeć takiej sytuacji.
> A to jest potrzebne? nie pamiętam juz.
Pewien nie jestem. Może wyższe warstwy już to robią. Jednak w przypadku
BIOS-a nie mam pewności co się działo na chwilę przed jego zawołaniem,
więc chyba dobrą praktyką jest zrobienie kopii zapasowej na stosie
jakiegoś rejestru, jeśli mam zamiar wykorzystać go w roli "pola
roboczego". Oczywiście nie odnosi się to do tych rejestrów, w których
finalnie i tak zwracany jest wynik operacji.
> A gdzie ten stos wskazuje? Niestety zapomniałem, gdzie powinien.
BDOS ma swój własny stos. Gdy jest wołany tymczasowo podmienia na niego
stos użytkownika. Ponieważ stos ten jest relatywnie niewielki, a
niektóre z operacji w moim BIOS-ie zrzucają trochę bajtów, w swoim
kodzie robię to samo - przy wejściu do niektórych procedur zapisuję
wartość SP, podmieniam na swój stos BIOS-a, po czym po skończonej
robocie przywracam oryginalną wartość.
> a) przerwania tam masz? Prawidłowo odzyskują rejestry przy powrocie?
Tak, przerwania są. Inicjowane są jeszcze przed CP/M-em i wykonują kilka
niskopoziomowych operacji I/O. Patrzyłem na ich kod, ale nie widzę
niczego podejrzanego. Zresztą TinyBasic nie miał żadnych problemów ze
stabilnością, a przerwanie mieszające w rejestrach procesora dość szybko
by go zmasakrowało.
> b) ta konwersja sektorów 512/128 na pewno poprawnie działa?
Wyprintowałem wartości i wszystko się zgadza. Sektory zmieniają się w
zakresie 0..3, a liczony adres początku danych w buforze to
adres_bufora_cf + (sektor * 128)
> e) mozesz chyba przesledzic przez DDT co się dzieje w CCP po wpisaniu
> DIR czy TYPE
Pamiętasz jak to się robiło?
> f) ... bankowanie pamięci na pewno działa poprawnie?
Na chwilę obecna nie jest używane. System korzysta w tej chwili tylko z
32kB pamięci zmapowanej na stałe na fragment przestrzeni adresowej. Mam
jeszcze drugie 32kB w postaci dwóch banków po 16kB, ale one nie są w tej
chwili wykorzystywane. Gdy uda mi się rozwiązać ten problem, pewnie
poupycham w nich różne bufory pomocnicze (np. do odczytu/zapisu CF albo
przewijania ekranu)..
Następne wpisy z tego wątku
- 09.07.24 09:42 Marek
- 09.07.24 09:15 Atlantis
- 09.07.24 09:47 Jacek Konieczny
- 09.07.24 10:25 Atlantis
- 09.07.24 10:42 Atlantis
- 09.07.24 11:21 J.F
- 09.07.24 12:26 Atlantis
- 09.07.24 22:57 Atlantis
- 10.07.24 07:28 J.F
- 10.07.24 09:03 Atlantis
- 11.07.24 09:31 J.F
- 11.07.24 09:59 J.F
- 12.07.24 19:14 Atlantis
- 12.07.24 20:45 J.F
- 13.07.24 07:59 Atlantis
Najnowsze wątki z tej grupy
- Światłowód między budynkami
- POtrzebny bufor 3.3<>5V, jedonkieruowy, trójstanowy, wąski
- retro
- Bezprzewodowe polączenie Windows z projektorem
- rozklejanie obudowy
- Prośba o identyfikację komponentu
- Smart gniazdko straciło na zasięgu wifi?
- Smart gniazdko straciło zasięg wifi?
- nurtuje mnie
- dziwna sprawa...
- Laptop MSI się nie uruchamia.
- Dobra listwa LED (CRI 90-95, bez migotania)
- masowe programowanie AVR
- Fajny pomysł na monitor z klawiaturą
- Sprzedawanie zaszyfrowanych filmów na płytach Blu-Ray bez kluczy deszyfrujących
Najnowsze wątki
- 2024-11-02 piszę list do św Mikołaja
- 2024-11-01 karta SIM nie działa w konkretnym smartfonie.
- 2024-11-01 Mamy WZROST! O 50% wzrosła ilość kredytów gotówkowych
- 2024-11-01 Warszawa => Expert Recruiter 360 <=
- 2024-11-01 Warszawa => Technical Leader (Java Background) <=
- 2024-11-01 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2024-11-01 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-01 Warszawa => Programista Dynamics 365 CRM <=
- 2024-11-01 Warszawa => Dynamics 365 CRM Developer <=
- 2024-11-01 Warszawa => Junior Rekruter <=
- 2024-11-01 Chrzanów => Specjalista ds. PR Produktowego <=
- 2024-11-01 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-01 Łódź => Frontend Engineer (Three.js) <=
- 2024-11-01 Warszawa => Junior Rekruter <=
- 2024-11-01 Gdańsk => Programista Full Stack .Net <=