Eine Ramdisk ist beim ATARI ST schon fast zum Standard geworden. Sie ermöglicht den schnellen Zugriff auf Programme und Dateien und ist besonders beim Arbeiten mit Compilern ein nicht mehr wegzudenkendes Hilfsmittel.
Ramdisk - ein Schlagwort, das wohl jeden ST-Benutzer aufhorchen läßt. Es handelt sich hierbei um ein virtuelles Laufwerk innerhalb des Rechnerspeichers, das wie ein normales Laufwerk angesprochen wird. Die interessanteste Eigenschaft besteht, wie schon erwähnt, in der enorm schnellen Arbeitsgeschwindigkeit, die besonders bei Programmen mit häufigen Diskettenzugriffen (Dateiprogramme, Compiler) eine deutliche Aufwertung des Programmes bewirken. So verkürzt sich beispielsweise ein Compiliervorgang auf einige wenige Sekunden.
Der großzügig ausgelegte Speicher (zumindest bei 520 ST + und 1040), bietet dazu die ideale Grundlage.
Ein Nachteil der bisher käuflichen Ram-disks war allgemein der Preis, der anfangs sogar bei 200, - DM lag und auch heute noch bei den meisten Anbietern ca. 100,- DM beträgt.
Schon allein die Entwicklungszeit, die in unserem Falle weniger als eine Stunde betrug, zeigt, daß ein solcher Preis nicht gerechtfertigt ist.
Bedienung:
Zur Installation der Ramdisks müssen Sie zuerst ein neues Diskettenlaufwerk anmelden. 'Klicken’ Sie dazu ein beliebiges vorhandenes Laufwerk einmal an und wählen Sie die Option 'Diskstation anmelden’.
Tragen Sie in die Dialog-Box die neue Laufwerk-Kennung (’C’) ein und benennen Sie das Laufwerk z. B. mit ’RAM-DISK’. Klicken Sie nun das Feld ’ANMELDEN’, das neue Laufwerk erscheint auf dem Bilschirm. Jetzt kann das entsprechende RAMDISK-Programm (RAM ★★★.PRG) gestartet werden. Um diesen Vorgang nicht bei jedem Neustart wiederholen zu müssen, kann man die augenblickliche Einstellung mit 'Arbeit sichern’ abspeichern und das Ramdisk-Programm in den AUTO-Ordner kopieren.
Die Länge 'der Ramdisk kann frei gewählt werden, dies wird im Source-Listing angegeben. Es sollte nur darauf geachtet werden, daß genügend freier Arbeitsspeicher bestehen bleibt.
Assembler: Digital Research (Entwicklungspaket)
* ram. s
*
* ramdisk for atari 520 st+
* written nov 85 by Jens-Uwe Mager
*
blocks = 512 ;groesse in 1 Kbyte blocks
* offsets in die base-page
prglen = $c
datalen = $14
bsslen = $lc
cmdlin = $80
* atari globals
hdv_bpb = $472
hdv_rw = $476
hdv_media = $47e
drvbits = $4c2
xbios = 14
tos = 1
keepterm = $31
supexec = 38
.text
move.l 4(sp),a6 ;adresse base page
pea vecinit
move.w #supexec.-(sp)
trap #xbios
addq.1 #6, sp
move.l bsslen(a6),d1
moveq #9,d0 ;bsslen div 512
lsr.l d0,d1 ;nr blocks
sub.w datrec,d1 ;nr dataenbloecke
lsr.w #1,d1 ;nr .datencluster
move.w d1,numcl
move.l prglen(a6),d0
add.1 dat a1en(a6),d0
add.l bsslen(a6),d0
add.l *256,d0
clr.w -(sp) ;exit code
move.l d0,-(sp) ;laenge
move.w #keepterm,-(sp)
trap *tos
vecinit: move.l hdv_rw,oldrw+2
move.l #rw,hdv_rw
move.l hdv_bpb,oldbpb+2
move.l #bpb,hdv_bpb
move.l hdv_media,oldmedia+2
move.l #media,hdv_media
move.l drvbit3,d0
move.l d0,d2
moveq #0,d1
drvlp: lsr.l #l,d0
bcc.s drvfnd
nddq.w #1,d1
bra.s drvlp
drvfnd: bset d1,d2
move.l d2,drvbits
move.w dl,drive
rts
rw: move.w drive,d0
cmp.w 14(sp),d0
bne oldrw
lea rambase,a0
move.l 6(sp),a1 ;tos buffer
moveq *0,d0
move.w 12(sp),d1 ;Start block
moveq #9,d0 ; *512
asl.l d0,d1
add.1 d1,a0
move.w 10(sp),d0 ;nr of blocks
move.l a1,d2
btst *0,d2
bne.s bytes
asl.l #7,d0 ;blocks -> longs
btst #0,5(sp) ;rwflg
bne.s lwords
cxg a0,a1
lwords: move.l (a1)+,(a0)+
subq.l #1,d0
bne.s lwords
rts
bytes: moveq #9,d1
asl.1 d1,d0 ;blocks -> bytes
btst #0,5(sp) ;rwflg
bne.s bytes1
exg a0,a1
bytes1: move.b (a1)+,(a0)+
subq.l #1,d0
bne.s bytes1
rts
oldrw: jmp -1
bpb: move.w drive,d0
cmp.w 4(sp),d0
bne.s oldbpb
move.l tmybpb,d0
rts
oldbpb: jmp -1
media: move.w drive,d0
cmp.w 4(sp),d0
bne.s oldmedia
moveq #0,d0
rts
oldmedia: jmp -1
.data
drive: dc.w 0
mybpb: dc.w 512
clsiz: dc.w 2
clsizb: dc.w 1024
rdlen: dc.w 7
fsiz: dc.w 5
fatrec: dc.w 5
datrec: dc.w 18
numcl: dc.w 351
.bss
rambase ds.b blocks*1024
.end