in DOS schreibgeschuetzte Disketten beschreiben

Locked
Message
Author
frank

in DOS schreibgeschuetzte Disketten beschreiben

#1 Post by frank »

damit ich es endlcih mal los bin: das diskettenschreibschutzumgehungsprogramm für DOS.
habe ich mal von einem alten c't magazin abgeschrieben.

________________________________________________________________________________
program FIDE_test;
uses dos;
var puffer:array[0..$4000] of byte;
var fdcresult:array[0..6] of byte absolute $40:$42;

procedure readsec (anz,drive,head,track,sek:word ; var res:byte); var
reg:registers;
begin reg.ax:=$200 + lo(anz);
reg.bx:=ofs (puffer);
reg.es:=seg (puffer);
reg.ch:=lo(track);
reg.cl:=hi(track) shl 6 or lo(sek);
reg.dl:=drive;
reg.dh:=head;
intr($13,reg);
res:=reg.ah
end;

procedure writeresult;
var i:byte;
var wptr:^word;

begin
wptr:=pointer(@fdcresult[0]);
wptr^:=swap (wptr^ and $fe or $4c);
fdcresult<font size="2">:=fdcresult<font size="1">-3;
for i:=6 downto 0 do write (char(fdcresult<i>));
end;

function read_rtc (index:byte): byte;
begin
port[$70]:=index;
read_rtc:=port[$71];
end;

var r:byte;
drivechar:char;
drive:byte;
floppytyp:byte;
retry:byte;
begin
writeln;
write ('floppy-konfiguration (gemaess fide v4/01), ');
writeln ('anders skaemt, c´´t 4/97');
writeln ('ueberprueft beschreibbarkeit trotz schreibschutz');
writeln ('achtung: nur fuer 3,5"-laufwerke!! ');
writeln ('bitte leere formatierte diskette einlegen');
write ('floppy auf (a oder b)? ');
readln (drivechar);
case upcase(drivechar) of
'a': begin
drive:=0;
floppytyp:=read_rtc($10) shr 4;
end;
'b': begin
drive:=1;
floppytyp:=read_rtc($10) and $f;
end
else
begin
writeln (chr(7),'nur a oder b erlaubt');
end;
if floppytyp < 4 then
begin
writeln (chr(7),'nur 3,5"-laufwerke erlaubt'); halt(2);
end;
write ('floppy-laufwerk meldet: ');
retry:=0;

repeat
readsec (1,drive,$50,$152,$1,r);
case r of
$80: begin
writeln ('keine disc eingelegt?');
halt(2);
end;
$06: writeresult;
$02,$0a: begin writeresult; inc (retry)end;
end;
until (retry =2);
writeln;
end;
end.
_____________________________________________________________________

ratte

Re: in DOS schreibgeschuetzte Disketten beschreiben

#2 Post by ratte »

Im [<!--no-->code]-Block musst du eckige Klammern mit \ escapen, sonst verhunzt die Forumsoftware deinen Code.

ratte

Locked