esetleg egy TIME viszony szám?
valami ilyesmi
10 TIME "00:00:00"
20 FOR X =0 to 32767
30 IF TIME="00:00:01" THEN EXIT NEXT
40 NEXT
50 IF X<250 THEN SPEED=EP64BASIC
60 IF 250<X THEN SPEED=EP128BASIC
70 IF 1250<X THEN SPEED=EP64ZZZIP
80 IF 1550<X THEN SPEED=EP128ZZZIP
Szerintem a TIME értékét nem jó elállítani, mert ha pl. órakártya van a gépben, akkor nem jó az időt elállítani, valami más módszerrel kéne mérni az időt. Vagy valami más módszerrel megállapítani, hogy az adott gép EP64 vagy EP128-e. Ha jól tudom, a VERNUM változó 2.1 a 128-as, 2.0 64-es gép esetében. Azt nem tudom, hogy létezik-e 2.0-ás verziójú Exos 128-as géphez, vagy 2.1-es 64-es géphez valami tévedés folytán valahol.
Ja, de mégsem jó a VERNUM változó, mert a Zzzip annak is kerekíti az értékét, gondolom. Na, most kipróbáltam: a Zzzip mindig 1-et ad vissza a VERNUM változó értékére, akár 2.1-es, akár 2.0-ás. Akkor ezt a Zzzip nem jól kezeli.
Van viszont a VER$ változó, aminek a 29-31. karakterében benne van az Exos/Basic verziószáma is, abból is ki lehetne olvasni. (Azt hiszem, a dokumentációkban nem is említik a VER$ és VERNUM változókat, valamelyik könyv elején írnak róluk.)
Hogy Zzzip vagy basic alól megy-e a program, azt legegyszerűbben a PI értékéből lehet megállapítani. Ha 3, akkor Zzzip megy (mert a Zzzip kerekít), ha nem 3 (3-nál nagyobb), akkor basic.
Hirtelen ez jut eszembe:
50 IF PI>3 AND VER$(31)=0 THEN LET SPEED=EP64BASIC
60 IF PI>3 AND VER$(31)>0 THEN LET SPEED=EP128BASIC
70 IF PI=3 AND VER$(31)=0 THEN LET SPEED=EP64ZZZIP
80 IF PI=3 AND VER$(31)>0 THEN LET SPEED=EP128ZZZIP
Itt most a program a verziószám utolsó számjegyét vizsgálja, ha az 0 (2.0-ás verzió), akkor EP64, ha 0-nál nagyobb (pl. 2.1-es, 2.2-es, stb. verzió), akkor EP128. Probléma lehet még, hogy állítólag van/volt 1.9-es Exos/basic is, és állítólag lesz 3.0-ás Exos/basic, nem tudom, ezeket is számba kellene-e venni.
UI.: Most nézem, a VER$-ban csak a basic verziószáma van benne, az Exos-é nincs. Gondolom, a VERNUM is a basic verziószáma, abból meg csak 2.0 és 2.1 létezik. (Volt az EXT bug javítása, de az úgy tudom, nem a basic, hanem az Exos módosítása.)
Nem lenne egyszerűbb egyébként a SPEEK-elés helyett IF VER$(31)=... THEN ...-nel állítani be az LPT és a videomemória kezdőcímét? Vagy az nem bombabiztos?