Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » CP/M Power 3.7 ... Sektoren patchen? » Themenansicht

Autor Thread - Seiten: -1-
000
13.04.2015, 20:08 Uhr
holm

Avatar von holm

Ich kann mich ganz trübe erinnern wohl früher mal mit Power 3.3 unter CP/M 2.2 Sektoren von einer Diskette gelesen, gepatched und zurückgeschrieben zu haben.
Ich weiß aber heute nicht mehr ob diese Erinnerungen Spinnerei sind und ich a was mit ZSID und DDTZ) durcheinander haue.

Mir geht es im Wesentlichen darum, eine Datei von der Festplatte zu laden, diese zu patchen und dann an die selbe Stelle wieder zurück zu schreiben. Genaugenommen keine Datei sondern nur einen Sektor in dem ich natürlich vorher die zu patchende Stelle finden muß, aber das ist ein anderes Paar Schuhe.
Das man mit READ bzw. READGR irgendwas lesen und mit WRITE bzw. WRITEGR irgendwas schreiben konnt, das krige ich noch auf die Reihe, aber Patchen? Hexadezimal? Hat das Ding einen Editor? ...vergessen. Andererseits wenn ich lesen und schreiben kann ohne zu bearbeiten, wozu ist das dann gut?
Gibts irgendwo eine Doku zu 3.7? (ist mit dem USER-Handling besser als 3.3)

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;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
13.04.2015, 20:40 Uhr
maleuma



Also für solche Fälle benutze ich DIMA, damit kannst Du Sektoren direkt editieren.
Eine Version DIMAKC.COM habe ich auch schon einmal angepasst für den KC85/4.

Das Ändern von Speicherbereichen geht unter POWER aber auch, Kommando DS.
Eine Hilfedatei zu POWER findest Du z.B. hier:
https://www.iee.et.tu-dresden.de/~kc-club/DOWNLOAD/DISK262/POWER.TXT
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
13.04.2015, 21:10 Uhr
maleuma



Oder hier, das scheint speziell für die Version 3.07 zu sein:

http://www.z80.eu/downloads/POWERHLP.ZIP
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
13.04.2015, 22:21 Uhr
holm

Avatar von holm

Ok, danke.
Ich bin damit klar gekommen, habe aber nicht ganz das erreicht was ich wollte.
Das liegt aber an der Festplatten-Implementation des CP/M Systems von Manfred.

Ich wollte nach dem erfolgreichen booten von der Festplatte erreichen, das die Platte auch als
Defaultlaufwerk eingeklinkt wird, das geht aber so nicht, da die dph's beim Warmstart mit 0 überschrieben werden und dann erst später anhand der Partitionstabelle geladen werden. So ganz steige ich da noch nicht durch was da im Einzelnen passiert....

http://www.tiffe.de/Robotron/CPM-KRZ/SYSCPM3-ROM-CCP/

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;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
14.04.2015, 01:33 Uhr
Pollyplay



Hallo Holm,

Verstehe ich Dich richtig? , Du willst eine Datei editieren ?
Das dürfte kein Problem sein.
Willst Du den Bootbereich ändern?
Die Partitionstabelle ist doch fest vorgegeben.

Willst Du mehrere primäre partitions also bootfähige partitions einrichten ?

Dieser Beitrag wurde am 14.04.2015 um 01:43 Uhr von Pollyplay editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
14.04.2015, 10:59 Uhr
Pollyplay



Hallo Holm ,

Aufgrund Deiner PN verstehe ich es so:
Es ist eine Systemdatei, deren Ansprechadresse von der Partitionstabelle ( je nachdem, wie viele partitions ) vorgegeben ist.


Eine FP ( wie ich sie kenne ) hat 63 Bootsektoren, von 0 ... 62. Im ersten, 0, steht z.B. die Partitionseinteilung, max. 4 partitions bei DOS,, 1 prim und drei sec .
Wird ein Bootmanager benutzt, steht das auch mit in den Bootsektoren.

( m.E. stehen bei den alten FP die Defektsektoren mit in den Bootsektoren aufgeführt, damit diese nicht angesprochen werden. )

Nach diesen 63 kommen dann in vielen Fällen als Erstes, ab dem Sec 64 = 63, die Systemdateien.
In der Partitionstabelle steht der Beginn der Boot-Partition ( je nachdem, mit welcher gebootet werden soll,, das könnte auch ne zweite FP sein ). In diesem Fall Sec 64 = 63. Die erste Datei, die dort steht, wird dann abgearbeitet und entsprechend das BS geladen.


M.E. könnte man dennoch versuchen zu editieren und dann zu überschreiben.

( das geht aber nicht mit LW C: )

Beim erneuten Kopieren auf die Festplatte werde ich z.B. darauf hingewiesen, dass die Datei bereits vorhanden ist und ob ich diese überschreiben will. Bei "ja" wird m.E. die Ansprechadresse beibehalten.
Ist die Datei länger, wird der Rest m.E. auf vorhandene freie Sektoren geschrieben.
Wenn das funktionieren sollte, dann muss man sich eine neue Startdiskette erstellen.

Man braucht doch immer eine Startdiskette, Bootdiskette, Systemdiskette ( CD ), um die Systemdateien an die richtige Stelle zu laden.


Vorschlag:
Wenn es soweit ist, schickst Du mir bitte die Datei, die editiert werden soll.
Das, was editiert werden soll, dürfte doch bekannt sein?
Dort steht doch sicher ein Befehl, der in HEX bekannt ist?
Den suche ich und dort kann man auch Werte abändern.
Gibt es dafür kein Assemblerprogramm?

Dieser Beitrag wurde am 14.04.2015 um 11:36 Uhr von Pollyplay editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
14.04.2015, 12:11 Uhr
holm

Avatar von 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;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
14.04.2015, 14:13 Uhr
Pollyplay




Zitat:
holm schrieb

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",

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



Hallo Holm ,

nur zum Teil.
Das Funktionsprinzip, das Zusammenspiel ist m.E. doch ähnlich.
Im BIOS, Grundroutine steht die Organisation der Recheneinheit, Adressen und dass dann entweder auf fest programmierte Speicher oder Festplatte zugegriffen wird.

z.B.:
https://books.google.de/books?id=11bSGJrPnVoC&pg=PA36&lpg=PA36&dq=Festplatte+060h&source=bl&ots=yn07PEsIoA&sig=Bb-VVXHT41wddjpTidLeH9r0wns&hl=de&sa=X&ei=hPgsVbvzIcjnavjwgJgH&ved=0CDEQ6AEwAw#v=onepage&q=Festplatte%20060h&f=false

Ist die K2521 ähnlich der ZRE im Polyplay ?
Diese 2 oder 3 EPROMs sind doch so ne Art BIOS.
edit: das ist wohl das BS ?


Verstehe ich das richtig, dass das K1520 System eine andere Festplattenorganisation hat und Du eine FP mit DOS über eine gesonderte Steckkarte betreiben willst?

hier steht etwas über 128 Byte,
http://webcache.googleusercontent.com/search?q=cache:TQJeO8iYtSIJ:https://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_98/boot/boot2.html+&cd=1&hl=de&ct=clnk&gl=de


Stimmt, ein Löschen und neu Beschreiben geht nicht, aber ein Überschreiben müsste m.E. gehen. Bei gleicher Größe müsste es passen.
Die Formatierung als Solches ist m.E. nebensächlich, das hängt davon ab, ob es verarbeitet werden kann, erkannt wird.

ein Beispiel bei NTFS, hierbei sieht der erste und der zweite Sektor immer so aus, dass dort NTFS und NTLDR zu sehen ist,,
" NT-Loader, kurz NTLDR, ist der Bootmanager von Microsoft für alle Windows-NT-Systeme bis einschließlich Windows Server 2003 : "




Dieser Beitrag wurde am 14.04.2015 um 14:42 Uhr von Pollyplay editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
14.04.2015, 15:00 Uhr
holm

Avatar von holm

Die K2521 ist die ZVE zumindest der ersten Polyplay, später haben die eine eigene Variante entwickelt...sagt Paulotto. Ich hatte diese Dinger nie in der Hand.

Auf einer K2521 haben 3 Kilobyte ROM Platz, davon werden beim Krzikalla System 2 Kilobyte für den CCP benötigt, 1Kilo bleibt übrig für den Laderom. Daher sind dort die Verhältnisse dramatisch anders als in einem PC dessen BIOS viel größer ist. In einem XT brachte der Festplattencontroller seine eigene BIOS Erweiterung mit die im Allgemeinen 8 Kilobyte groß war.
Ja, im K1520 System ist die Festplatte normalerweise anders organisiert als im PC, besser gesagt es gab da nie Eine und Nein, ich will kein DOS auf dem K1520 betreiben. Ein K1520 Rechner hat weder eine dem PC ähnliches BIOS noch irgendwelche Datenstrukturen. Nicht mal die CPU ist ähnlich.

Rede ich so undeutlich?

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;}

Dieser Beitrag wurde am 14.04.2015 um 15:01 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
14.04.2015, 17:35 Uhr
Pollyplay




Zitat:
holm schrieb

davon werden beim Krzikalla System 2 Kilobyte für den CCP benötigt, 1Kilo bleibt übrig für den Laderom. Daher sind dort die Verhältnisse dramatisch anders als in einem PC dessen BIOS viel größer ist. In einem XT brachte der Festplattencontroller seine eigene BIOS Erweiterung mit die im Allgemeinen 8 Kilobyte groß war.
Ja, im K1520 System ist die Festplatte normalerweise anders organisiert als im PC, besser gesagt es gab da nie Eine und Nein, ich will kein DOS auf dem K1520 betreiben. Ein K1520 Rechner hat weder eine dem PC ähnliches BIOS noch irgendwelche Datenstrukturen. Nicht mal die CPU ist ähnlich.

Rede ich so undeutlich?

Gruß,

Holm




Nein, Nein, ich will mich nur reinversetzen.
Laderom dürfte dann der erste sein.
Ich hab doch den von der K2521, der auf 0000 steckt mit der Prüfsumme, CRC 552E für die Spiele und einen für Farbbalken und Gittermuster mit der Prüfsumme 5A01. Die ersten 96 Byte sind jedenfalls gleich.

1. ZRE 552E 0000, adr.
000 : 31 FF 0F C3 B3 00 48 3A
008 : C9 20 31 20 4C 45 42 45
010 : C9 20 20 3C 3D 3E 20 20
018 : C9 34 20 53 43 48 55 53

( Dieser eine von mir mit 552E zeigt aber bei nem anderen user eine Prüfsumme von 8A4B. K.A., wie das zustande kommt. )

Wenn mein Prommer nicht defekt ist, dann müsste m.E. bei dir das Gleiche stehen, da doch die Grundroutine gleich sein müsste.

" besser gesagt es gab da nie Eine "
doofe Frage: du schreibst von LW F:, was bitte sind dann die anderen ? A:, C: usw ?

Dieser Beitrag wurde am 14.04.2015 um 17:36 Uhr von Pollyplay editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
14.04.2015, 18:28 Uhr
Bert




Zitat:
holm schrieb
Daher sind dort die Verhältnisse dramatisch anders als in einem PC dessen BIOS viel größer ist.


...

Zitat:

Ein K1520 Rechner hat weder eine dem PC ähnliches BIOS noch irgendwelche Datenstrukturen. Nicht mal die CPU ist ähnlich.


Das mag ja sein, aber das Prinzip ist doch haargenau das Gleiche.

Das erste Stück ROM-Code (beim IBM-PC würde man BIOS dazu sagen) sorgt dafür, das die erste Spur von Diskette oder Festplatte im Speicher landet und dort ausgeführt wird.
Da ist es völlig unerheblich was für eine CPU verwendet wird und wie groß der ROM-Code ist.

just my 2 cents,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
14.04.2015, 19:12 Uhr
holm

Avatar von holm

Ja Bert. Was aber hat das mit CP/M, dem OMTI Controller, der K2521 und und meinem nach dem booten aktiven Laufwerk zu tun? ...just 4 Cents back.

@Pollyplay: In meinem 1. ROM ist genau das drin, was ich rein programmiert hatte, in Deinen ROMs mit Sicherheit nicht. Es ist nicht mal wahrscheinlich das Deine ROMs Code enthalten der was von einer Floppy oder einer Platte laden kann.

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;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek