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

3 názory 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.

Pridaj komentár