STOP dem Cartridge-Klau

Auch auf der diesjährigen Atari-Messe werden wieder viele Anbieter mit Wechselplatten ausgestattet sein. Kein Wunder, denn so lassen sich auch größere Datenmengen leicht transportieren, und die Cartridge kann nach dem Ende einer Demonstration an einem sicheren Ort aufbewahrt werden. Was aber, wenn ein Unbefugter mal schnell den Auswurfknopf betätigt und die Cartridge mitgehen läßt?

Diese Situation ist sicherlich für viele ein Alptraum. Selbst wenn sich keine wirklich wichtigen Daten auf dem Medium befinden (Backups sollten anderweitig vorhanden sein), ist der Cartridge-Verlust zumindest aus finanzieller Sicht ärgerlich. Dem Diebstahl eines Mediums kann jedoch sehr wirkungsvoll vorgebeugt werden. Eine Wechselplatte erlaubt es nämlich, den Auswurfknopf per Software zu verriegeln. In diesem Fall ist ein Entnehmen der Cartridge unmöglich. Wird der Auswurfknopf betätigt, läßt sich die Platte in keiner Weise beeinflussen. Verspürt man irgendwann den Wunsch, die Cartridge zu entnehmen, läßt sich der Auswurfknopf natürlich auch wieder entriegeln.

Besitzt man einen Festplattentreiber, der die XFIDI-Spezifikation (s. hierzu „Schoner für die Festplatte“, ebenfalls in dieser Ausgabe) erfüllt, so läßt sich dieses Vorhaben leicht realisieren. Der XHDI-Aufruf XHLock() erlaubt das treiberunabhängige Ver- und Entriegeln des Auswurfknopfes. Nachdem mit XHInqTarget() festgestellt wurde, bei welcher Platte es sich um eine Wechselplatte handelt, lassen sich alle Cartridges verriegeln. Hierzu dient LOCK.PRG, wogegen UNLOCK.PRG die Verriegelung wieder aufhebt.

Da sich beide Programme lediglich durch einen Parameter beim XHLock()-Aufruf unterscheiden, gibt es nur ein Programm-Listing. Je nachdem, welche Programmversion benötigt wird, muß einer der beiden MODE-Definitionen am Anfang des Listings auskommentiert werden. Das Programm überprüft übrigens nicht, ob sich zwei logische Laufwerke auf dem gleichen physikalischen Device befinden, so daß es durchaus Vorkommen kann, daß der XHLock() für eine Platte mehrmals abgesetzt wird. Dies hat jedoch keine nachteilige Wirkung.


***************************************** * * * LOCK/UNLOCK V1.00 * * * * Ver- oder entriegelt den Auswurfknopf * * von Wechselplatten unter Verwendung * * des XHDI-Protokolls * * * * by Uwe Seimet * * * * (c) 1992 MAXON Computer * ***************************************** *MODE-Parameter je nach Bedarf auskommentieren *MODE = 0 ;Cartridge freigeben MODE = 1 ;Cartridge verriegeln GEMDOS = 1 XBIOS = 14 SUPEXEC = 38 _p_cookies = $5a0 XHInqTarget = 1 XHLock = 3 XHDrvMap = 6 XHInqDev = 7 XHDIMAGXC = $27011992 text pea act(pc) move #SUPEXEC,-(sp) trap #XBIOS addq.l #6,sp clr -(sp) trap #GEMDOS act: move.l _p_cookies,d0 ;keine beq quit ;cookies- move.l d0,a0 noxhdi: movem.l (a0)+,d0/a6 tst.l d0 ;kein beq quit ;XNDI- cmp.l #"XHDI",d0 bne noxhdi cmp.l #XHDIMAGIC,-4(a6) bne noxhdi move #XHDrvMap,-(sp) ;Gerätevektor jsr (a6) ;holen addq.l #2,sp move.l d0,d6 moveq #0,d7 loop: btst d6,d7 ;kein XHDI beq.s noxdev ;Device- clr.l -(sp) clr.l -(sp) pea minor pea major move d7,-(sp) move #XHInqDev,-(sp) ;Gerätenummern jsr (a6) ;holen lea 20(sp),sp tst d0 bmi.s noxdev clr.l -(sp) pea flags clr.l -(sp) move minor,-(sp) move major,-(sp) move #XHInqTarget,-(sp) jsr (a6) lea 18(sp),sp tst d0 bmi.s noxdev btst #2,flags+3 ;kann Gerät ;verriegelt ;werden? beg.s noxdev ;nein- tst.l flags ;Gerät ist bmi.s noxdev ;reserviert- clr -(sp) ;Dummy-Key move #MODE,-(sp) ;Cartridge move minor,-(sp) ;sperren oder move major,-(sp) ;entriegel move #XHLock,-(sp) ;(gemäß MODE) jsr (a6) lea 10(sp),sp noxdev: addq #1,d7 cmp #32,d7 ;nächstes bne loop ;Device- quit: clr -(sp) trap #GEMDOS bss flags: ds.l 1 major: ds.w 1 minor: ds.w 1

Uwe Seimet
Aus:ST-Computer 09 /1992, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite