Detekcia Z80 CPU

Dovolím si dnes pridať jeden prevzatý článok o možnosti detekcie procesora Z80 podľa registra Q.

Na procesoroch kompatibilných so Zilogom Z80 existuje register Q, ktorý slúži ako keš a oznamuje či nastala zmena príznakov poslednou vykonanou inštrukciou. Je to neprístupný vnútorný register, ktorý ovplyvňujú nedokumentované príznaky vo výstupe inštrukcií SCF a CCF. Toto správanie môže byť použité na detekciu procesora Z80 od NECu, ktorý nie je 100% kompatibilný so Zilogom a bežne sa používa v počítačoch Sinclair a Timex.

 
 
 ; Detekcia NEC Z80
 ; Rui Ribeiro 2019
 ;
 ; PRINT USR 50000
 ;
 ; vráti:
 ;
 ; 0 pre NEC
 ; 1 pre Z80 kompatibilný so Zilogom
 ;

 ORG     50000

 LD      BC,1   ; BC = 1 - Z80 nie NEC
 XOR     A      ; A = 0
 LD      D,A    ; D = A
 DEC     D      ; A-1 = $FF Q = 1
 NOP            ; Q = 0
 CCF            ; X = 1 a Y = 1 ak je to Zilog alebo iný kompatibilný
                ; X = 0 a Y = 0 ak je to NEC Z80

 PUSH    AF
 POP     DE     ; uloži F do E

 LD      A,E
 AND     $28    ; 00101000 - test X a Y

 RET     NZ     ; návrat ak je to Z80 a nie NEC

 DEC     BC     ; Z80 je NEC, BC = 0
 RET

Použitím tejto rutiny pomocou PRINT USR 50000 zistíte či je procesor alebo emulátor Zilog kompatibilný. Návratová hodnota 1 znamená 100% kompatibilitu, hodnota 0 signalizuje NEC alebo iný nekompatibilný procesor.

Poznámka: Vďaka Miguelovi Capelovi za otestovanie rutiny na spektráckych a timexáckych Z80-tkách – menovite Z80A Mostek, NEC, Zilog a SGS.

Autor: Rui F Ribeiro
Zdroj: https://planetasinclair.blogspot.com/2019/12/dica-usar-registo-q-do-z80-detectar-z80.html

6 názorov na “Detekcia Z80 CPU

  1. Hi Rui. Actually it’s not Polish but Slovak. But I understand our Slavic languages might look quite similar for you.

  2. Dik za preklad. Po tolkych rokoch som necakal, ze existuje nieco okolo Z80 neprebadane.

  3. Do tretice som vyskusal aj

    Spectrum +2 gray ….BC=1
    Spectrum +3…………..BC=1

Pridaj komentár