Találtam egy kis emulátor bug-ot:
Itt volt szó arról, hogy NMOS Z80-ak bugosak az LD A,I/R utasításoknál.
Az EXOS 2.4 már ki is írja a CPU típusát induláskor, ehhez találtam egy egyszerûbb
módszert:Az EDh,71h kódú utasítás, ami az utasítás táblázatban a helye alapján OUT (C),F lenne (HEASS így ismeri), a netes Z80-as köznyelv szerint OUT (C),0-ként szerepel (emulátor debugerben így szerepel), 0-t küld ki NMOS procival, FFh-t CMOS procival.
Tehát pl így nagyon egyszerûen lehet tesztelni:
LD C,0B1H
OUT (C),0
IN A,(0B1H)
OR A
JR Z,NMOS
Ez mûködik is valódi gépen, több darabon is próbáltam, a Z80bug progival is ellenõrizve a eredményt.
Az emulátoron most viszont ellentmondásos a dolog, az LD A,I/R nem hibás, tehát CMOS proci van emulálva.
De az OUT (C),0 valóban 0-át küld ki, így meg NMOS procinak látszik.
Vagy az LD A,I/R-t kéne elrontani vagy az OUT-nál FFh-re cserélni az értéket. Ha jól sejtem ez utóbbi a könnyebb megoldás
ha jól tippelem itt kell a 0-át átjavítani:
case 0x071:
{
doOut(R.BC.W, 0);
ADD_PC(2);
R.Flags |= Z80_CHECK_INTERRUPT_FLAG;
}