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