[V20-MBC] Dlaczego D0 i D3 są zamienione?

Kącik dla elektroniki retro - układy, urządzenia, podzespoły, literatura itp.
Awatar użytkownika
Zegar
User
User
Posty: 264
Rejestracja: wtorek 02 lip 2019, 14:42

[V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: Zegar » piątek 26 lis 2021, 01:53

Ostatnio zmontowałem kolejny MBC - tym razem z procesorem V20. Przez jakiś czas omijałem ten projekt, bo szukałem tylko informacji o V20 (jak zwykle zainspirowany lekturą kolejnego tomu MIK - MIK11). W końcu się przełamałem i pobrałem dokumentację. Przejrzałem schemat i już chciałem zrezygnować, kiedy zauważyłem, że linie D0 i D3 są zamienione. Zaczęły mi się otwierać szufladki w pamięci i przypomniałem sobie podobną historię z zamierzchłych czasów...
V20-MBC_AD0_AD3.png

Dostałem kiedyś używaną klawiaturę PC XT. Nie miałem jej do czego podłączyć, nie wiedziałem, jak ona działa... Nie było wtedy Internetu! Zaczynałem pierwszą pracę i mój szef polecił mi, żebym przyniósł ją (klawiaturę) do pracy. (Przynieść było łatwo, w drugą stronę znacznie trudniej.) W ramach testów mojej przydatności, dał mi polecenie służbowe: rozpracuj ją! No i nie było innego wyjścia. Jaki to ma związek z V20? W środku był i8035 z zewnętrznym EPROMEM.
Klawiatura XT.jpg

Na pierwszy rzut oka - prościzna. Niestety bajty odczytane z pamięci nijak nie chciały ułożyć się w program. Dopiero odtworzenie schematu dało jakieś wskazówki. Linie danych były pozamieniane. Trzeba było trochę gimnastyki - drukarki nie mieliśmy nawet w pracy. Jedyny dostępny komputer: CA80. Ale zrobiłem to. Szef pomógł zbudować prosty układ na 74198. Niestety nigdy nie dokończyłem komputera, do którego miała być podłączona.
74198.jpg

Po kilku latach zmieniłem pracę, a elektronika staniała na tyle, że możliwy stał się zakup czegoś gotowego, kupiłem płytę główną do mojej klawiatury. W tej samej cenie można było zdobyć AT, ale... wybrałem XT z procesorem V30. Najszybszy XT na świecie!
MotherB_XT.jpg

Pod wpływem emocji zamówiłem płytki, procesor i RAM i znowu mam XT. Niestety moja pierwsza klawiatura odmówiła współpracy, ale i tak na nic by się zdała, bo uTerm obsługuje klawiatury PS2.
IMG_20211125_225401.jpg
IMG_20211125_225837.jpg
IMG_20211125_225920.jpg

Ale do rzeczy! W kodzie znalazłem taki fragment:

Kod: Zaznacz cały

// Read D0-D7 and A0-A1
      ioAddress = PIN_A1A0;                     // Read V20 address bus line A1-A0
      ioData = PINA & B11110110;                // Read V20 data bus D7-D0 (D0 and D3 cleared)
      ioData = ioData | ((PINA >> 3) & B00000001); // Adjust D0
      ioData = ioData | ((PINA << 3) & B00001000); // Adjust D3

Czy ktoś wie, w jakim celu autor projektu zamienił linie danych? Chyba nie po to, by utrudnić sobie życie...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
Newb
Newb
Posty: 83
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: tapy » piątek 26 lis 2021, 08:57

Gratuluję spostrzegawczości! Przyznam że od jakiegoś czasu mam ten projekt i nie zwróciłem na to uwagi. Generalnie jest to emulowany system, więc ta zamiana (chyba) nie powinna wpływać na oprogramowanie, gdyż każda operacja I/O i tak musi przejść przez ATMega i ten kawałek kodu. Pytanie dlaczego jest b. ciekawe i chyba warto je zadać autorowi (aktywnie on uczestniczy na forum retrobrewcomputers.org oraz grupie Z80-MBC na FB), może to kwestia pomyłki lub wygody w trakcie projektowania PCB. Ciekawe.

Awatar użytkownika
Zegar
User
User
Posty: 264
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: Zegar » piątek 26 lis 2021, 22:19

tapy pisze:Pytanie dlaczego jest b. ciekawe i chyba warto je zadać autorowi (aktywnie on uczestniczy na forum retrobrewcomputers.org oraz grupie Z80-MBC na FB), może to kwestia pomyłki lub wygody w trakcie projektowania PCB. Ciekawe.

FB nie mam i nie planuję mieć. Założyłem konto na https://hackaday.io tylko po to, by zapytać... Zobaczymy, czy odpowie. :)
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
Newb
Newb
Posty: 83
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: tapy » piątek 26 lis 2021, 22:40

Ja mam dla niego gorsze pytanie ;) gdyż zaprojektował już wszystkie platformy obsługujące CP/M oprócz jednej - CP/M-8000 dla rodziny Zilog 8000. Myślę, że jest to jedno z większych wyzwań jakiego można się podjąć, by przywrócić ten system do życia w dzisiejszych czasach. Podejrzewam, że moje jakiego się podjąłem z MP/M i CP/Net jest przy tym temacie przedszkolem. Kilkukrotnie podchodziłem, by stworzyć samą podstawową platformę do zapoznania się z tą rodziną procesorów i zawsze zabrakło mi odwagi wejść w ten temat. :)

Awatar użytkownika
Zegar
User
User
Posty: 264
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: Zegar » niedziela 28 lis 2021, 11:25

Jest odpowiedź!
J4F_V20.png

:D
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
Newb
Newb
Posty: 83
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: tapy » niedziela 28 lis 2021, 12:55

"You are the first one to find this..." :)
Daje to do myślenia, jak traktujemy działające konstrukcje.

Z innej beczki, bo ten zestaw daje nam fajne porównanie wydajności architektur procesora. Można w miarę poprawnie sprawdzić wydajność procesorów poprzez uruchomieniu takiego samego interpretowanego kodu na Z80-MBC2 i V20-MBC, gdyż na oba użyte tam procesory mamy Microsoft BASIC pracujący pod CP/M. Testy bezlitośnie ukazują czymże był ów x86. Owszem można zarzucić, że Microsoft prawdopodobnie tylko przeportował ten interpreter na x86 bez optymalizacji, ale prawie dwukrotna różnica nie tłumaczy wyników. W sprzętowym trybie 8080 V20 pod CP/M 2.2 wygląda to jeszcze gorzej, a pamiętajmy że sprawdzamy systemy zegar w zegar. Dla przypomnienia, V20 to był swoisty "dopalacz" komputerów PC-XT.

Awatar użytkownika
Zegar
User
User
Posty: 264
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: Zegar » środa 01 gru 2021, 22:55

tapy pisze:...W sprzętowym trybie 8080 V20 pod CP/M 2.2 wygląda to jeszcze gorzej...

MIK11.png

Może interpreter Basic-a nie jest najlepszym testem... Pan Gardynik "doświadczalnie stwierdził" dużą różnicę (nawet 10 razy) na korzyść V20.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
Newb
Newb
Posty: 83
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: tapy » czwartek 02 gru 2021, 00:54

Trudno się nie zgodzić z tymi doświadczeniami, gdyż jak wspomniałem V20 był swoistym "dopalaczem". Moje porównanie dotyczyło dwóch różnych architektur procesora, podejrzewam że równie blado wypadłby i 286. Nie chciałem brać pod uwagę testów intensywnie wykorzystujących podsystem dyskowy, choć w przypadku Z80-MBC2 i V20-MBC może on być na podobnie powolnym poziomie, z racji samej emulacji i tej samej obsługi kart SD przez AVR. Z ciekawości sprawdziłem kompilację tego samego przykładu w kompilatorze PL/I-80 v1.4 pod oboma platformami, ale tu różnice były niezauważalne. Operacje na dysku zajmowały większość czasu... ATMega. Wydaje się, że jednak obliczanie fraktalu Mandelbrota jest jednak w tym przypadku lepszym testem (choć dalekim od doskonałości z racji użycia interpretatora), gdyż w obliczeniach bierze udział tylko procesor i pamięć.
Jako ciekawostkę dopowiem, że całkiem niedawno uruchomiłem kolejny projekt Fabio Defabis (Just4Fun) w postaci 68k-MBC i tu obsługa kart SD (via PIC) jest na bardziej komfortowym poziomie. Pomimo wspomnianych wad związanych z podsystemem dyskowym, nadal uważam te projekty za rewelacyjne, ze powodu swoich niskich wymaganych nakładów i oferujące w zamian praktycznie pełne możliwości pracy pod różnymi "dialektami" CP/M.

Awatar użytkownika
Zegar
User
User
Posty: 264
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: Zegar » czwartek 02 gru 2021, 08:18

tapy pisze:Jako ciekawostkę dopowiem, że całkiem niedawno uruchomiłem kolejny projekt Fabio Defabis (Just4Fun) w postaci 68k-MBC i tu obsługa kart SD (via PIC) jest na bardziej komfortowym poziomie.

Jestem na etapie gromadzenia elementów... Właściwie prawie wszystko mam, tylko płytki jeszcze w produkcji. Ten PIC to jakiś niszowy... Trudno go kupić. W Chinach całkowity brak. Ze Stanów wysyłka około 100 USD. Udało mi się kupić na "Aledrogo". Zainteresowałem się bo znowu naszły mnie wspomnienia. Próbowałem zrobić coś na "dużej" Motoroli (68008 to tylko namiastka). Zostały tylko książki na półce..
IMG_20211202_080944.jpg
.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
Newb
Newb
Posty: 83
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: tapy » piątek 24 gru 2021, 00:42

Dokonałem kolejnego porównania, lecz ten będzie już zdecydowanie obarczony większym błędem, gdyż użyte interpretatory BASIC nie są tego samego producenta. Z pomiarów wykonywania tego samego kodu wynika, że V20 (w trybie x86) jest ciut szybszy od 68008. Nie udało mi się odnaleźć wyników porównawczych w syntetycznym teście MIPS dla 68008, ale przy okazji poszukiwań znalazłem ciekawostkę. Z przedstawionych tabel wynika że, Z80 osiąga 0,145 MIPS/MHz, 8088 - 0,075, zaś V20 - 0,5! (68000 - 0,175 więc można zakładać, że jego 8-bitowa wersja będzie o ponad połowę wolniejsza). Zastanawiający jest tabelaryczny wynik dla V20, gdyż moje wyniki "badań" bliższe są osiągom 8088 niż przedstawionym deklaracjom. Wynik mojego "testu" dla Motorola 68008 daje oczekiwane z tabel pomiary, więc rodzi się pytanie - gdzie został pogrzebany potencjał V20. Ograniczeniem jest CP/M-86 czy środowisko konfiguracji sprzętowej V20-MBC? W wolnych chwilach będę drążyć ten temat (muszę jeszcze zdobyć 8088, by porównać wyniki na tym samym sprzęcie).

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1203
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: gaweł » niedziela 26 gru 2021, 13:29

Zegar pisze:Próbowałem zrobić coś na "dużej" Motoroli (68008 to tylko namiastka). Zostały tylko książki na półce..

Mam coś takiego i mogę się podzielić
mc68000.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1203
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: gaweł » niedziela 26 gru 2021, 13:41

tapy pisze:W wolnych chwilach będę drążyć ten temat (muszę jeszcze zdobyć 8088, by porównać wyniki na tym samym sprzęcie).

Służę pomocą...
i8088.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
Zegar
User
User
Posty: 264
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: Zegar » czwartek 17 lut 2022, 01:34

Postanowiłem sprawdzić, jaki wpływ na wydajność systemu ma zamiana D0 i D3. Najpierw zmierzyłem czas wykonywania programu ASCIART.BAS.
asciart.txt

Podano w nim wynik dla innego komputera z Z80 (7.3728Mhz) - 2m43s. V20 potrzebował 3m00s przy 8MHz. Słabiutko... Przeciąłem ścieżki, przylutowałem kawałki drutu, zmieniłem kod i ponownie uruchomiłem program. Kod wynikowy nieco schudł (148 bajtów), jednak nie wpłynęło to na wynik pomiaru. Nadal 3m00s. Widać różnicę około pół sekundy, ale stoper włączałem ręcznie, więc może to być błąd pomiaru.

Wszystkie niezbędne zmiany:

Kod: Zaznacz cały

840       ioData = PINA;// & B11110110;                // Read V20 data bus D7-D0 (D0 and D3 cleared)
841     //ioData = ioData | ((PINA >> 3) & B00000001); // Adjust D0
842     //ioData = ioData | ((PINA << 3) & B00001000); // Adjust D3

1039    PORTA = ioData; // & B11110110;             // Current output on data bus (D0 and D3 cleared)
1040    //PORTA = PORTA | ((ioData >> 3) & B00000001); // Adjust D0
1041    //PORTA = PORTA | ((ioData << 3) & B00001000); // Adjust D3

1072      PORTA = ioData;   // & B11110110;       // Current output on data bus (D0 and D3 cleared)
1073      //PORTA = PORTA | ((ioData >> 3) & B00000001); // Adjust D0
1074      //PORTA = PORTA | ((ioData << 3) & B00001000); // Adjust D3

1541      PORTA = data;   // & B11110110;          // Put the byte on data bus (D0 and D3 cleared)
1542      //PORTA = PORTA | ((data >> 3) & B00000001);    // Adjust D0
1543      //PORTA = PORTA | ((data << 3) & B00001000);    // Adjust D3

V20_MBC_normal.png

V20_MBC_fixed.png

V20-MBC_fixed.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
Newb
Newb
Posty: 83
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: tapy » niedziela 06 lis 2022, 01:48

Jak ktoś chce sobie przypomnieć MS-DOS, to jest to już możliwe na V20-MBC. Jestem pod wrażeniem. :shock:
Pliki do pobrania, binarki w /rdy2run (należy zachować oryginalne, autor nie chciał modyfikować IOS).

tapy
Newb
Newb
Posty: 83
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [V20-MBC] Dlaczego D0 i D3 są zamienione?

Postautor: tapy » czwartek 24 lis 2022, 18:44

Fabio dołączył obsługę MS-DOS w gałęzi rozwojowej V20-MBC, więc niedługo należy się spodziewać już oficjalnego wsparcia dla tego systemu.


Wróć do „Retro”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość