← ST-Computer 06 / 1986

Assembler: RAMDISK

Listing

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