Registriert seit: 22. Okt 2006
772 Beiträge
|
Re: Z80 emulator ( z80 core )
27. Feb 2007, 16:16

Zitat von Mavarik:

Zitat von Reinhard Kern:
M80 war der beste Z80-Assembler, der je existiert hat.
Ja ja der gute "Masm"... Damit habe ich auch alles Programmiert. Inkl. unseres mForth 800 Compilers...
Kann ich mit Deinem Emulator die alten CP/M Diskette auf einem PC lesen?
Grüsse Frank :coder:
Ja, wenn du das Format kennst, man muss eine Definition wie folgt erstellen:
Delphi-Quellcode:
NOTE THIS IS THE DATABASE FOR VERSION 1.30 OF 22DISK BY SYDEX.
NOTE
NOTE MARCH 20, 1989
NOTE
NOTE SYDEX
NOTE 153 NORTH MURPHY AVE.
NOTE SUNNYVALE, CA 94086
NOTE (408) 739-4866
BEGIN RK30 RK Solitaire 3.5 inch 64 Dir Ent.
DENSITY MFM,LOW
CYLINDERS 80
SIDES 2
SECTORS 10,512
SIDE1 0 1,5,9,3,7,2,6,10,4,8
SIDE2 1 1,5,9,3,7,2,6,10,4,8
ORDER SIDES
LABEL RK30
BSH 4 BLM 15 EXM 0 DSM 384 DRM 63 AL0 080H AL1 0 OFS 6
END
BEGIN RK50 RK Solitaire 5.25 inch 64 Dir Ent.
DENSITY MFM,LOW
CYLINDERS 40
SIDES 2
SECTORS 10,512
SIDE1 0 1,5,9,3,7,2,6,10,4,8
SIDE2 1 1,5,9,3,7,2,6,10,4,8
ORDER CYLINDERS
LABEL RK50
BSH 4 BLM 15 EXM 1 DSM 191 DRM 63 AL0 080H AL1 0 OFS 3
END
BEGIN SUP3 Superbrain QD - DSDD 48 tpi 5.25"
DENSITY MFM,LOW
COMPLEMENT
CYLINDERS 35
SIDES 2
SECTORS 10,512
SIDE1 0 1,3,5,7,9,2,4,6,8,10
SIDE2 1 1,3,5,7,9,2,4,6,8,10
ORDER CYLINDERS
BSH 4 BLM 15 EXM 1 DSM 169 DRM 63 AL0 080H AL1 0 OFS 2
END
Ausserdem habe ich mal eine Software zum Zugriff unter DOS in Pascal (nicht Delphi, nicht Turbo) geschrieben, die wie folgt anfängt, dient aber nur zum KOMPLETTEN Lesen und Schreiben und v.a. Formatieren, also zum Archivieren von CP/M-Disketten meiner Machart. Sollte den Kunden und den Kundendienst unabhängig von einem realen CP/M-System machen.
Delphi-Quellcode:
PROGRAM rkcpm; {read/write/format rk cp/m disks into/from dos file}
CONST skewstr = '01050903070206100408';
maxsector = 10;
strategy = 1; { side 0 up, then side 1}
deblock = 4; { 4 cpm sect = 1 dos sect }
offset = 3;
direntries = 64;
allocunit = 16; { cpm sect / block entry }
systemtracks = 3; { only head 0 used ! }
dir_offset = 3;
{$I cnc\biosiod.pas}
{$I doslib.pas}
TYPE
sector = array[0..127] of byte;
sstring = string[76];
genstring = string [255];
st = (norm,sel1,sel2,sel3,skip);
maddr = record case boolean of
false : (ad : integer);
true : (ofs,seg : word);
end;
hexcar = array[0..15] of char;
dskparams = array [0..10] of byte;
{....}
Bei weiterem Interesse melden.
Gruss Reinhard
|