Home
Home
Anfang Zurück Inhalt Weiter Ende
Anfang - Zurück - Inhalt - Weiter - Ende
English
English

Anhang F: Emulator Erkennung - Wo bin ich?

In gewissen Situationen ist es für VC-20 Software günstig zu wissen, ob sie auf einem echten VC-20 oder einem Emulator läuft (etwa um Fastloader abzustellen). Die folgende Standard Methode zur Emulator Erkennung wurde von Roland Lieger für Power20 aus dem Emulator-Erkennungs-Standard für den C64 entwickelt. Die Autoren mehrerer anderer Emulatoren haben zugesagt, diesen Standard in zukünftigen Versionen ihrer Programme zu unterstützen.

Die Emulator Erkennung basiert auf einer speziellen Nutzung der Adressen $9F80-$9FFF. Details entnehmen Sie bitte dem untenstehenden Listing.

Wenn Sie dieses Programm mit Power20 testen wollen, kopieren Sie es aus diesem Dokument und fügen Sie es (per Cut & Paste oder Drag & Drop) in ein offenes Power20 Emulator Fenster ein. Power20 wird die folgende Meldung ausgeben:

    Power20 (4.9.5)
   Commodore VIC-20
  for Power Macintosh
(C) 2008 Roland Lieger

Wenn die Unterstützung der Emulator Erkennung Probleme mit einem Spiel verursachen sollte, so kann sie dem über Options/ROM Patches abgestellt werden.

100 REM ********* WHERE AM I? *********
110 REM -------------------------------
120 REM THIS IS THE RECOMMENDED METHOD
130 REM HOW TO DETECT A VIC20 EMULATOR,
140 REM E.G. FOR DISABLING FAST LOADERS
150 REM
160 REM - THE BYTE AT $9FFF CHANGES
170 REM   BETWEEN $55 AND $AA ON EVERY
180 REM   WRITE ACCESS
190 REM - THE BYTE AT $9FFE CONTAINS
200 REM   THE EMULATOR ID LETTER:
210 REM   / = POWER20
220 REM   M = EMULATOR OF MATT BROWNE
230 REM   V = VICE
240 REM   P = PFAU ZEH
250 REM   C = PCVIC
260 REM   L = V20
270 REM - THE WORD AT $9FFC CONTAINS
280 REM   THE EMULATOR VERSION NUMBER,
290 REM   E.G. $0120 FOR VERSION 1.2
300 REM - THE BYTES FROM $9FA0 CONTAIN
310 REM   A COPYRIGHT STRING WITH
320 REM   EMULATOR NAME, VERSION AND
330 REM   COPYRIGHT, $0D AND $00.
340 REM -------------------------------
350 :
500 PRINT
510 X=40959: REM $9FFF
520 IF PEEK(X)=85 THEN POKE X,0
530 IF PEEK(X)<>170 THEN 1000
540 POKE X,0
550 IF PEEK(X)<>85  THEN 1000
560 POKE X,0
570 IF PEEK(X)<>170 THEN 1000
580 POKE X,0
590 IF PEEK(X)<>85  THEN 1000
595 :
600 M$=CHR$(PEEK(40958)): REM $9FFE
610 PRINT "EMU-ID='"; M$; "' ";
620 IF M$="/" THEN PRINT "(POWER20)";
630 IF M$="M" THEN PRINT "(MATT BROWNE)";
640 IF M$="V" THEN PRINT "(VICE)";
650 IF M$="P" THEN PRINT "(PFAU ZEH)";
660 IF M$="C" THEN PRINT "(PCVIC)";
670 IF M$="L" THEN PRINT "(V20)";
680 PRINT
690 :
700 V=PEEK(40957)*256 + PEEK(40956): REM $9FFD/$9FFC
710 H$="0123456789ABCDEF"
720 FOR I=0 TO 3
730 V$=MID$(H$,1+(V AND 15),1)+V$
740 V=INT(V/16)
750 NEXT
760 PRINT "VERSION=$";V$
770 PRINT
780 :
800 I=40864: REM $9FA0
810 X=PEEK(I)
820 IF X=0 THEN PRINT: END
830 PRINT CHR$(X);
840 I=I+1
850 GOTO 810
860 :
1000 PRINT "THIS IS AN ORIGINAL VIC-20"
Home Anfang Zurück Inhalt Weiter Ende Top of Page

Quelle: http://www.infinite-loop.at/Power20/Documentation/Power20-LiesMich/AF-Emulatorerkennung.html
Power20 Homepage: http://www.infinite-loop.at und http://www.salto.at - EMail:
© Roland Lieger, Goethegasse 39, A-2340 Mödling, Österreich
Letzte Änderung: 29. Feb. 2008
Valid HTML 4.01!