home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
disks
/
misc
/
savebb
/
savebb.p
< prev
next >
Wrap
Text File
|
1992-09-02
|
3KB
|
100 lines
Program
SaveBB;
Uses
ExecIO;
{$incl 'devices/trackdisk.h'}
Const
version = "$VER: SaveBB 1.0 (22.06.94) © by G.M.A.";
Var
msg_port : p_MsgPort; { Zeiger auf unseren Message-Port }
ioreq : p_IOExtTD; { Zeiger auf erweiterte IO-Request-Struktur }
buffer : ^Array[1..512*2] Of Byte; { Buffer für Daten des BBs }
lw : Byte; { Drive-Nummer }
error : Integer; { Ist Fehler aufgetreten ? - Wird nicht getestet. }
i : Integer; { Für Schleife }
datei : Text; { Dateihandle }
name : String[80]; { Dateiname }
Procedure alles_zu;
Begin
Close_Device (ioreq); { und trackdisk.device schließen }
DeleteExtIO (ioreq);
DeletePort (msg_port); { Messageport wieder entfernen }
End;
Begin
lw := 0; { Laufwerk 0 benutzen }
msg_port := CreatePort ('SaveBB-Port', 0); { Messageport anlegen }
ioreq := CreateExtIO (msg_port, SizeOf(IOExtTD));
Open_Device ('trackdisk.device', lw, ioreq, 0); { trackdisk.device öffnen }
ioreq^.iotd_req.io_Command := TD_CHANGESTATE; { Ist Disk im Laufwerk ? }
error := DoIO (ioreq);
If Not (ioreq^.iotd_req.io_Actual = 0) Then Begin
WriteLn ('Keine Diskette in df0: !');
alles_zu;
Halt (0);
End;
ioreq^.iotd_req.io_Command := TD_PROTSTATUS; { Schreibschutz testen }
error := DoIO (ioreq);
If (ioreq^.iotd_req.io_Actual <> 0) Then Begin
WriteLn ('Diskette ist schreibgeschützt !');
alles_zu;
Halt (0);
End;
Buffer := Ptr(Alloc_Mem(512 * 2, 2)); { Chip-Memory allokieren }
With ioreq^.iotd_req Do Begin
io_Command := CMD_READ;
io_Data := Buffer; { Hier Daten ablegen }
io_Length := 512 * 2; { 2 Blöcke lesen }
io_Offset := 0 { Hier mit Lesen beginnen, Offset in Bytes }
End;
error := DoIO (ioreq);
With ioreq^.iotd_req Do Begin { noch Motor ausschalten }
io_Command := TD_MOTOR;
io_Length := 0;
End;
error := DoIO (ioreq);
Write ("Dateiname = "); ReadLn (name);
ReSet(datei, name);
If IOResult = 0 Then Begin
WriteLn ("Datei ", name, " existiert schon !");
Close (datei);
alles_zu;
Halt (0);
End;
ReWrite(datei, name);
If IOResult <> 0 Then Begin
WriteLn ("Konnte Datei ", name, " nicht öffnen !");
alles_zu;
Halt (0);
End;
If error <> 0 Then { Wenn kein Fehler auftrat ... }
Writeln ('Ein Fehler ist aufgetreten: ', error)
Else Begin { ... Daten bearbeiten }
For i := 1 To 1024 Do { Jedes Byte bearbeiten }
Write (datei, Chr(Buffer^[i])) { = ausgeben }
End;
Free_Mem (Long(Buffer), 512 * 2);
alles_zu;
Close (datei); { Datei wieder schließen }
End.