home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / crossplatform / emulators / detect-emu-c64.txt < prev    next >
Encoding:
Text File  |  1998-08-04  |  2.2 KB  |  83 lines

  1.  
  2. 100 REM ********* WHERE AM I? *********
  3. 110 REM -------------------------------
  4. 120 REM THIS IS THE RECOMMENDED METHOD
  5. 130 REM HOW TO DETECT A C64 EMULATOR,
  6. 140 REM E.G. FOR DISABLING FAST LOADERS
  7. 150 REM
  8. 160 REM - THE BYTE AT $DFFF CHANGES
  9. 170 REM   BETWEEN $55 AND $AA
  10. 180 REM - THE BYTE AT $DFFE CONTAINS
  11. 190 REM   THE MANUFACTURER CODE LETTER:
  12. 200 REM   A = C64ALIVE
  13. 210 REM   F = FRODO
  14. 220 REM   P = PERSONAL C64
  15. 230 REM   S = C64 SOFTWARE EMULATOR
  16. 240 REM   V = VICE
  17. 250 REM   / = POWER64
  18. 260 REM - THE WORD AT $DFFC CONTAINS
  19. 270 REM   THE EMULATOR VERSION NUMBER,
  20. 280 REM   E.G. $0120 FOR VERSION 1.2
  21. 290 REM - THE BYTES FROM $DFA0 CONTAIN
  22. 300 REM   A COPYRIGHT STRING WITH
  23. 310 REM   EMULATOR NAME AND VERSION,
  24. 320 REM   $0D, COPYRIGHT AND $00.
  25. 330 REM -------------------------------
  26. 340 :
  27. 500 PRINT
  28. 510 X=57343: REM $DFFF
  29. 520 IF PEEK(X)<>85 THEN IF PEEK(X)<>85 THEN 1000
  30. 530 IF PEEK(X)<>170 THEN 1000
  31. 540 IF PEEK(X)<>85  THEN 1000
  32. 550 IF PEEK(X)<>170 THEN 1000
  33. 560 M$=CHR$(PEEK(57342)): REM $DFFE
  34. 570 PRINT "MANUFACTURER = '"; M$; "' ";
  35. 580 IF M$="A" THEN PRINT "(C64ALIVE)";
  36. 590 IF M$="F" THEN PRINT "(FRODO)";
  37. 600 IF M$="P" THEN PRINT "(PC64)";
  38. 610 IF M$="S" THEN PRINT "(C64S)";
  39. 620 IF M$="V" THEN PRINT "(VICE)";
  40. 630 IF M$="/" THEN PRINT "(POWER64)";
  41. 640 PRINT
  42. 650 :
  43. 700 V=PEEK(57341)*256 + PEEK(57340): REM $DFFD/$DFFC
  44. 710 H$="0123456789ABCDEF"
  45. 720 FOR I=0 TO 3
  46. 730 V$=MID$(H$,1+(V AND 15),1)+V$
  47. 740 V=INT(V/16)
  48. 750 NEXT
  49. 760 PRINT "VERSION = $";V$
  50. 770 PRINT
  51. 780 :
  52. 800 I=57248: REM $DFA0
  53. 810 X=PEEK(I)
  54. 820 IF X=0 THEN PRINT: END
  55. 830 PRINT CHR$(X);
  56. 840 I=I+1
  57. 850 GOTO 810
  58. 860 :
  59. 900 REM -------------------------------
  60. 910 REM THESE ARE MANUFACTURER-SPECIFIC
  61. 920 REM WORKAROUNDS, WHICH SHOULD BE
  62. 930 REM REPLACED WITH THE OFFICIAL
  63. 940 REM EMULATOR DETECTION METHOD
  64. 950 :
  65. 1000 IF PEEK(60682)<>0 THEN 1100: REM $ED0A
  66. 1010 PRINT "C64 SOFTWARE EMULATOR"
  67. 1020 PRINT "(C)1991-94 MIHA PETERNEL"
  68. 1030 END
  69. 1040 :
  70. 1100 IF PEEK(60736)<>0 THEN 1200: REM $ED40
  71. 1110 PRINT "X64 (VERSION 0.2.0 OR 0.3.0)"
  72. 1120 PRINT "(C)1993-94 J.SONNINEN/T.RANTANEN/J.VALTA"
  73. 1130 END
  74. 1140 :
  75. 1200 X=57087: REM $DEFF
  76. 1210 IF PEEK(X)+PEEK(X)+PEEK(X)<>0 THEN 2000
  77. 1220 PRINT "C64ALIVE"
  78. 1230 PRINT "(C)1993-94 F.LITTMANN DEVELOPMENTS"
  79. 1240 END
  80. 1250 :
  81. 2000 PRINT "THIS IS AN ORIGINAL C64 OR C128"
  82.  
  83.