Home
Home
Principio Anterior Contenido Próximo Término
Principio - Anterior - Contenido - Próximo - Término
English Deutsch Italiano
English - Deutsch - Italiano

Apéndice F: Detección del Emulador

Los programadores de software para C64 o emuladores quizá deseen saber si la "máquina" sobre la que se está ejecutando su código es un C64 real o no (p.e. para deshabilitar cargadores rápidos). Wolfgang Lorenz, el autor de PC64, sugirió un método basado en un uso especial de las direcciones de memoria $DFA0-$DFFF que revela el tipo de emulador utilizado. Para más detalles vea el listado que sigue a continuación.

Si usted desea probar este programa en Power64, simplemente copie el listado de este documento y péguelo en una ventana de emulación de Power64. Power64 responderá con el siguiente mensaje:

          Power64 (4.9.5)
 Commodore 64 for Power Macintosh
      (C) 2008 Roland Lieger

Si es consciente de que la detección del emulador de Power64 pudiera causar problemas con un programa, puede ser deshabilitada utilizando la ventana de diálogo Opciones/Parches de la ROM

100 REM ******** ¿DONDE ESTOY? ********
110 REM -------------------------------
120 REM ESTE ES EL METODO RECOMENDADO
130 REM PARA DETECTAR UN EMULADOR DE C64,
140 REM P.E. PARA DESHABILITAR CARGADORES RAPIDOS
150 REM
160 REM - EL BYTE EN $DFFF VARIA
170 REM   ENTRE $55 Y $AA EN CADA
180 REM   ACCESO DE LECTURA
190 REM - EL BYTE EN $DFFE CONTIENE
200 REM   LA LETRA CODIGO DEL FABRICANTE:
210 REM   A = C64ALIVE
220 REM   F = FRODO
230 REM   P = PERSONAL C64
240 REM   S = C64 SOFTWARE EMULATOR
250 REM   V = VICE
260 REM   X = X64
270 REM   / = POWER64
280 REM - LA PALABRA EN $DFFC CONTIENE
290 REM   EL NUMERO DE VERSION DEL EMULADOR,
300 REM   P.E. $0120 PARA LA VERSION 1.2
310 REM - LOS BYTES A PARTIR DE $DFA0 CONTIENEN
320 REM   UN MENSAJE DE COPYRIGHT CON
330 REM   EL NOMBRE Y LA VERSION DEL EMULADOR,
340 REM   $0D, COPYRIGHT Y $00.
350 REM -------------------------------
360 :
500 PRINT
510 X=57343: REM $DFFF
520 IF PEEK(X)<>85 THEN IF PEEK(X)<>85 THEN 1000
530 IF PEEK(X)<>170 THEN 1000
540 IF PEEK(X)<>85  THEN 1000
550 IF PEEK(X)<>170 THEN 1000
560 M$=CHR$(PEEK(57342)): REM $DFFE
570 PRINT "FABRICANTE = '"; M$; "' ";
580 IF M$="A" THEN PRINT "(C64ALIVE)";
590 IF M$="F" THEN PRINT "(FRODO)";
600 IF M$="P" THEN PRINT "(PC64)";
610 IF M$="S" THEN PRINT "(C64S)";
620 IF M$="V" THEN PRINT "(VICE)";
630 IF M$="X" THEN PRINT "(X64)";
640 IF M$="/" THEN PRINT "(POWER64)";
650 PRINT
660 :
700 V=PEEK(57341)*256 + PEEK(57340): REM $DFFD/$DFFC
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=57248: REM $DFA0
810 X=PEEK(I)
820 IF X=0 THEN PRINT: END
830 PRINT CHR$(X);
840 I=I+1
850 GOTO 810
860 :
900 REM -------------------------------
910 REM ESTAS SON COMPROBACIONES ESPECIFICAS
920 REM DEL FABRICANTE, LAS CUALES DEBERIAN SER
930 REM REEMPLAZADAS CON EL METODO OFICIAL
940 REM DE DETECCION DEL EMULADOR
950 :
1000 IF PEEK(60682)<>0 THEN 1100: REM $ED0A
1010 PRINT "C64 SOFTWARE EMULATOR"
1020 PRINT "(C)1991-94 MIHA PETERNEL"
1030 END
1040 :
1100 IF PEEK(60736)<>0 THEN 1200: REM $ED40
1110 PRINT "X64 (VERSION 1 OR 2)"
1120 PRINT "(C)1993-94 J.SONNINEN/T.RANTANEN/J.VALTA"
1130 END
1140 :
1200 X=57087: REM $DEFF
1210 IF PEEK(X)+PEEK(X)+PEEK(X)<>0 THEN 2000
1220 PRINT "C64ALIVE"
1230 PRINT "(C)1993-94 F.LITTMANN DEVELOPMENTS"
1240 END
1250 :
2000 PRINT "ESTE ES UN C64 O C128 REAL"
Home Principio Anterior Contenido Próximo Término Top of Page

Fuente: http://www.salto.at/Power64/Documentation/Power64-Leame/AF-Deteccion_Emulador.html
Power64 Homepage: http://www.infinite-loop.at y http://www.salto.at - EMail:
© Roland Lieger, Goethegasse 39, A-2340 Mödling, Austria - Europe
Últiomo Modificación: 29 de Febrero de 2008
Valid HTML 4.01!