-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED.cdk152.neoplus.adsl.tpnet.pl!no
t-for-mail
From: Atlantis <m...@w...pl>
Newsgroups: pl.misc.elektronika
Subject: Procesor NMOS i karta CF
Date: Wed, 22 May 2024 10:27:16 +0200
Organization: ICM, Uniwersytet Warszawski
Message-ID: <v2ka94$2ncku$1@news.icm.edu.pl>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 22 May 2024 08:27:16 -0000 (UTC)
Injection-Info: news.icm.edu.pl;
posting-host="cdk152.neoplus.adsl.tpnet.pl:83.30.160.152";
logging-data="2863774"; mail-complaints-to="u...@n...icm.edu.pl"
User-Agent: Mozilla Thunderbird
Content-Language: en-US, pl-PL
Xref: news-archive.icm.edu.pl pl.misc.elektronika:791919
[ ukryj nagłówki ]Parę lat temu zacząłem budować prosty komputerek na polskim
mikroprocesorze MCY7880. Zaczęło się od migania diodą i przesyłania
znaków przez UART, ale na chwilę obecną mam już właściwie kompletny
system z klawiaturą i monitorem, zdolny do uruchamiania Tiny Basica z
pamięci EPROM. Docelowo jednak moim celem od początku było uruchomienie
na tym CP/M 2.2 i ładowanie programów z dysku (w tej roli podpięta
bezpośrednio do magistrali karta CF, pracująca w trybie 8bit).
Podczas pandemii prace nad projektem nieco spowolniły, ale ostatnio
powróciłem do niego. Na chwilę obecną mam już działający bootloader,
który pozwala na załadowanie programu do pamięci RAM. Działa to mniej
więcej w następujący sposób:
1. Program podejmuje próbę zainicjowania karty CF, pobiera strukturę z
informacjami i wyświetla na ekranie jej nazwę.
2. Program odczytuje pierwszy sektor karty CF i sprawdza, czy określone
bajty mają wartości, których można się spodziewać po MBR w stylu MS-DOS.
3. Program odczytuje i wyświetla na ekranie tablicę partycji (adresy i
rozmiary poszczególnych partycji).
4. Program wyświetla menu, pozwalając użytkownikowi wybrać bootowanie z
karty albo uruchomienie Tiny Basica z EPROM-u.
5. Jeśli użytkownik wybierze bootowanie z CF, program sprawdza czy
pierwsza partycja ma odpowiedni rozmiar. Jeśli tak, pobiera jej adres i
ładuje pierwszych 16kB do RAM-u (zaczynając od adresu 0x0000).
6. Program wykonuje skok bezwarunkowy pod adres 0x0000.
7. Jeśli karta CF nie zostanie poprawnie zainicjowana lub nie powiedzie
się któryś z wspomnianych testów, uruchamiany jest od razu TinyBasic.
Takie podejście pozwala mi dość łatwo wgrywać na kartę testowe programy
- wystarczy wrzucić plik bin za pomocą dd:
dd if=source.bin of=/dev/sdx1 bs=512
Podczas wstępnych testów miałem problem z niektórymi modelami karty CF.
O ile struktura z nazwą odczytywała się zawsze poprawnie, to karta użyta
początkowo (wszystkie egzemplarze tego samego modelu, bodajże SanDisk
32MB) dawała dziwne rezultaty podczas próby odczytu MBR-a/tablicy
partycji. Co kilka prób pojawiały się przekłamania wartości i jakieś
dziwne przesunięcie o kilka bajtów w buforze. Kolejna karta (jakaś
przemysłowa WD 256MB) działa już o wiele lepiej i to właśnie jej używam
obecnie podczas testów.
O ile MBR jak dotąd ładuje się zawsze poprawnie, to jednak ze dwa razy
rzucił mi się w oczy dziwny błąd. Jak wspominałem, program testowy to
krótka pętla printująca z opóźnieniem wartość hex jednego bajtu
(konkretnie 0xFA). Wykonywany kod wykorzystuje gotowe procedury,
zapisane w pamięci EPROM, tak wiec składa się on zaledwie z kilku
wywołań CALL, poprzedzonych ładowaniem wartości do rejestrów. Testując
program od kilku dni już dwa razy zauważyłem sytuację, kiedy wykonywał
się on znacznie szybciej - zupełnie jakby przekłamana została wartość
odpowiadająca za czas trwania pętli opóźniającej. Trochę mnie to dziwi,
bo byłoby to dość specyficzne przekłamanie, które pojawiło się dwa razy.
Trochę mnie to jednak niepokoi, bo jeśli problemy pojawiają się przy
ładowaniu tak krótkiego programu, to tym bardziej mogą pojawić się przy
próbie załadowania całego CP/M (gdy już przygotuję niskopoziomowe
procedury I/O).
Zacząłem trochę czytać i analizować inne podobne projekty retro i widzę,
że w wielu z ich przed kartą CF stosowane są bufory 74HC245. Ludzie
wspominają też o problemach i konieczności dobierania kompatybilnej
karty w przypadku, gdy tego bufora nie ma. W dodatku ja w tej chwili
pracują na prototypie zbudowanym na płytce uniwersalnej (przy pomocy
dużej ilości kynaru), gdzie karta jest umieszczona na osobnym module,
podpiętym za pomocą taśmy (jednocześnie powstaje nowsza wersja na
trawionym PCB).
Myślicie, że jest szansa na dobranie karty, która będzie poprawnie
pracowała ze starym procesorem NMOS (tym bardziej, że raz dobrana karta
zostanie tam na stałe i nie będzie podmieniana) czy jednak nieuniknione
będzie zmodyfikowanie projektu i dodanie 74HC245?
Następne wpisy z tego wątku
- 22.05.24 10:50 Marek
- 22.05.24 11:38 Atlantis
- 22.05.24 17:57 Atlantis
- 22.05.24 18:21 J.F
- 22.05.24 18:40 J.F
- 22.05.24 18:56 Atlantis
- 22.05.24 19:10 Atlantis
- 22.05.24 19:14 Atlantis
- 22.05.24 22:08 Atlantis
- 23.05.24 10:09 Atlantis
- 23.05.24 10:54 J.F
- 23.05.24 11:09 Atlantis
- 23.05.24 13:52 J.F
- 23.05.24 15:18 Atlantis
- 23.05.24 17:47 J.F
Najnowsze wątki z tej grupy
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
Najnowsze wątki
- 2025-03-04 Prunt drogi!
- 2025-03-04 Warszawa => Frontend Developer (Angular13+) <=
- 2025-03-04 Warszawa => Frontend Developer (obszar Angular13+) <=
- 2025-03-04 Warszawa => Senior ASP.NET Developer <=
- 2025-03-04 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2025-03-04 Teraz kolej na studentów
- 2025-03-03 Re: Czy to była Polska Dywizja Waffen SS? [SS Galicja]
- 2025-03-03 Narkotyki na Uniwersytecie
- 2025-03-04 Zwrot towaru i kasy od sprzedawcy a zmiana plastiku
- 2025-03-03 Szaleństwo w BOS-iu - 8,1% :D
- 2025-03-03 a Ty jak się zachowasz w godzinie próby?
- 2025-03-03 nie naprawiam więcej telewizorów
- 2025-03-03 Białystok => Gen AI Engineer <=
- 2025-03-03 Poznań => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-03 Olsztyn => Sales Specialist <=