Assembler: RAMDISK

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


Aus: ST-Computer 06 / 1986, Seite 78

Links

Copyright-Bestimmungen: siehe Über diese Seite