Yet another update on the proposed VIC-20 Emulator Detection Standard. It seems that flipping $9FFF on write access rather than read access is more popular. By now Paul Robson, Matt Browne and Boris van Schooten have expressed their preference for toggle-on-write. Ettore says the VICE team does not care one way or the other. I do not have a strong preference either. My original proposal of toggle-on-read was simply based on the similarity to the C64 emulator detection standard. Arne Bockholdt stated that he sees no performance penalty for toggle-on-read but has not expressed any dislike for toggle-on-write. Lance Ewing have not expressed any opinion. So overall their seems to be more proponent for toggle-on- write. I have therefore modified the emulation detection program to work with toggle-on-write. Lance Ewing and Paul Robson are encouraged to pick a emulator-ID character for their programs. Comments welcome, Roland Lieger ----------------------------------------- 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 - THE WORD AT $9FFC CONTAINS 270 REM THE EMULATOR VERSION NUMBER, 280 REM E.G. $0120 FOR VERSION 1.2 290 REM - THE BYTES FROM $9FA0 CONTAIN 300 REM A COPYRIGHT STRING WITH 310 REM EMULATOR NAME, VERSION AND 320 REM COPYRIGHT, $0D AND $00. 330 REM ------------------------------- 340 : 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 PRINT 680 : 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"