006
14.04.2015, 12:11 Uhr
holm
|
Mönnesch... Du liest nicht was ich schreibe.
Als Erstes bitte das Posting 003 noch mal lesen. In der ersten Zeile steht : erledigt.
Als Zweites, bitte realisiere mal das es hier überhaupt nicht um einen PC und seine üblichen Eigenheiten geht, es handelt sich um eine 8 Bit CP/M Kiste mit einer K2521 CPU auf deren 1. Eprom sich der Lader befindet über den wir hier diskutieren.
Die 1. Festplattenpartition hat hier den Laufwerksbuchstaben "F", die 2. "G" und die 3. "H" , die vorhergehenden Buschtaben sind durch 2 Floppies mit verschiedenen Formaten belegt.
Wenn ich hier vom Kopieren rede, meinte ich nicht das irgend ein DOS seine Ideen zum Besten gibt ob eine Datei schon existiert. Ich habe Sektor-Groups mit Power von der Platte gelesen und diese nach Bearbeitung auf die selben Gropups zurück geschrieben, dabei handelt es sich um 96 Stück 128 Byte Sektoren was 12 Kilobyte Filesize ergibt.
Im Originalrechner von Manfred gibt es eine für DOS reservierte Partition, da die Jungs damals eine 8086 Prozessorkarte erfunden haben die im K1520 System zusätzlich werkelt. Wegen diesem DOS haben sie offensichtlich auch die DOS-Artige Partitionstabelle für die Platte übernommen aus der der physikalische CP/M Festplattentreiber die Geometrie der einzelnen Partitionen ermittelt und mit diesen Daten dann die entsprechenden Disk Parameter Header in den BIOS Tabellen patched.
Das Ganze ist also überhaupt nicht mit den Vorgägnen in einem normalen PC vergleichbar. Nein, es gibt auch derzeit kein mir bekanntes Assemblerprogramm das diese Kopiererei erledigt. In Einem üblichen CP/M System existiert meist ein Programm namens "sysgen" das das Betreibssystem auf den reservierten Systemspuren von Disketten unterbringt. Auf einem Bürocomputer heißt sowas auch CPABCGEN wenn das OS CP/A ist.
Da hier bei 800K Diskettenformat keine reservierten Systemspuren existieren, kann die Datei die das Betriebssystem enthält "normal" auf die Diskette kopiert werden, die einzige Restriktion wegen des Laders ist, das sie die erste Datei nach dem Directory-Space ist.
Wenn man nun diese Datei ändern will ohne die entsprechende Diskette (Festplatte) neu zu formatieren, hilft es nicht diese zu löschen und eine Andere da hin zu kopieren weil sie i.A. nicht auf die richtige Stelle kopiert wird, sondern dahin wo gerade Platz ist. Das Directory enthält die Info auf welchen Sektoren die Datei steht, nur wertet der Lader das Directory nicht aus, sondern liest physisch die ersten Sektoren.
Hast Dus jetzt verstanden?
Gruß,
Holm -- float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v; {s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+ (r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&& (A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;} |