[CA80]MikSid.

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

Re: [CA80]MikSid.

Postautor: Zegar » piątek 24 maja 2024, 19:05

gaweł pisze:Piszesz, że można rozróżnić różne wersje procków. Zastanawiam się, na jakiej podstawie jest to możliwe? Możesz troszkę to wyjaśnić?

Sam niewiele o tym wiedziałem. Kolega @tapy podesłał mi link.
Autor programu zebrał różne dziwne zachowania różnych wersji Z80.
CMOS od NMOS można odróżnić po skutkach rozkazu OUT (C),0

Kod: Zaznacz cały

;-------------------------------------------------------------------------
; TESTCMOS - Test if the CPU is a CMOS variety according to OUT (C),0 test
; Note: CMOS Sharp LH5080A is reported as NMOS
; Input:
;   None
; Output:
;   A = 00 - NMOS
;   A = FF - CMOS
;-------------------------------------------------------------------------
OUT   (SIOBC),A
   .DB   0EDH, 071H      ; UNDOCUMENTED OUT (C),<0|0FFH> INSTRUCTION
                  ; WRITE 0 OR FF TO THE SIO INTERRUPT VECTOR

NRD-owskie klony inaczej wykonują rozkaz OUTI

Kod: Zaznacz cały

;-------------------------------------------------------------------------
; TESTU880 - Check if the CPU is MME U880 or Thesys Z80
; Input:
;   None
; Output:
;   A = 0 - Non-U880
;   A = 1 - U880
;-------------------------------------------------------------------------
.DB   0EDH,0A3H   ; Z80 OUTI INSTRUCTION

Pozostałe testy polegają na sprawdzaniu wpływu instrukcji SCF na nieużywane flagi (bit 3. i 5. rejestru F)

Kod: Zaznacz cały

;-------------------------------------------------------------------------
; TESTXY - Tests how SCF (SCF) instruction affects FLAGS.5 (YF) and FLAGS.3 (XF)
; Input:
;   None
; Output:
;   A[7:6] - YF result of F = 0, A = C | 0x20 & 0xF7
;   A[5:4] - XF result of F = 0, A = C | 0x08 & 0xDF
;   A[3:2] - YF result of F = C | 0x20 & 0xF7, A = 0
;   A[1:0] - XF result of F = C | 0x08 & 0xDF, A = 0
;   Where the result bits set as follows:
;   00 - YF/XF always set as 0
;   11 - YF/XF always set as 1
;   01 - YF/XF most of the time set as 0
;   10 - YF/XF most of the time set as 1
;-------------------------------------------------------------------------

Przeportowałem tylko kod, żeby działał na komputerach bez CP/M. ;)
"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
User
User
Posty: 133
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [CA80]MikSid.

Postautor: tapy » piątek 24 maja 2024, 21:24

Znaczenie zachowania procesorów na instrukcję OUT (C),0 (obecnie jest to traktowane CMOS/NMOS) może ulec zmianie. Ja już jakiś czas temu postawiłem tezę, że wynik tej instrukcji określa istnienie w CPU wbudowanej funkcji trybu obniżonego poboru mocy, co na razie potwierdza test Sharp LH5080(A) który pomimo że jest zbudowany w technologii CMOS nie posiada takiej funkcjonalności, co skutkuje że w tym teście jest rozpoznawany jako NMOS. Za 2 tygodnie powinienem otrzymać CPU CMOS Sharp który ma wbudowaną tą funkcjonalność (oznaczenie z literą L na końcu - LH5080(A)L ) i jeśli on da wynik jako CMOS w tym teście, to zostanie to całkowicie potwierdzone.
Z ciekawostek jakie zostały już odkryte, to rumuńskie klony Z80 firmy Microelectronica Bucharest - MMN80CPU mają w sobie struktury produkowane w NRD - MME U880.
Jak ktoś ma mniej typowy procesor Z80 to proszę o jego testy, to ułatwi dalszy rozwój tego programu i przy okazji rozwiąże kilka zagadek.

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

Re: [CA80]MikSid.

Postautor: Zegar » czwartek 03 paź 2024, 21:04

Wystawiłem aukcję CA180 na pomoc dla powodzian. Zapraszam chętnych - każda złotówka się liczy.
"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


Wróć do „Retro”

Kto jest online

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