NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Kalender | Einloggen



Autor Thema: Startvorgang beim 68k NKC
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 27. Januar 2018 18:28 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,

nachdem ich inzwischen die Sourcen fuer die Boot-ROMs von 68008, 68000 und 68020 habe, glaube ich, dass es so funktioniert:

68008

Das Boot-ROM verschiebt sich an Adresse 0x8000 und schaltet
danach die BANKBOOT ab.

68000

Das Boot-ROM verschiebt sich an Adresse 0x10000 und schaltet
danach beide BANKBOOTs ab.

68020

Das Boot-ROM sucht ab Adresse 0x8070 in 2k Schritten RAM,
verschiebt sich dorthin und schaltet danach das Boot-ROM auf
der CPU-Karte ab.

Alle

Ab Adresse 0x400 wird in 4K Schritten ein Grundprogramm gesucht. Es wird daran erkannt, dass es mit 0x5aa58001 beginnt und dass nach 7 weiteren 32 bit Wörtern zwei bra Befehle kommen. Der 2. dieser Befehle wird ausgeführt. Ein minimales Grundprogramm könnte ab Adresse 0
starten:

ds $400 ; 1k z.B. fuer exception table
dc.l $5aa58001 ; Suchstring fuer Anfang
dc.l 0,0,0,0,0,0,0
bra traprts ; Start-Trap mit RTS-Abschluss
bra start ; Kalt-Start

Ist das so richtig? An welcher Adresse liegt das Grundprogramm normalerweise?

Ich würde gerne ein anderes Monitorprogramm benutzen und es genau wie das Grundprogramm starten. Um die Exception Table im RAM zu haben, bräuchte ich also erst etwas RAM und erst danach das ROM für den Monitor. Weiss jemand, wie das bei CP/M 68k beim NKC funktioniert?

Michael

Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 27. Januar 2018 22:22 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Michael,

erstmal Vorweg: Es gibt keine feste Adresse für das Grundprogramm (ab V4.3). Es kann an jeder beliebigen (geraden) Adresse liegen. Praktischerweise sollte es aber auf einer 1k-Adresse beginnen.

Zu den GPs:
Bis Version 4.3 was es noch < 32kB. Im Anschluß mussten 32kB RAM folgen.
Ab Version 6.0 ist es <= 64kB, im Anschluß daran müssen 64kB RAM folgen (wird aber meist nur zum kleinen Teil genutzt, ausser bei großer Symboltabelle).

Auf das alte GP (V4.3) gehe ich im weiteren nicht ein.

Speicherbelegung:
GP auf Adresse 0. Im Anschluss daran min. 64kB RAM für JADOS min. 128kB
Nachteil:
- GP (V7) Befehl PATCH funktioniert nicht
- CP/M 68k läuft nicht

Bootpgrogramm auf Adresse 0
RAM von 0...$xxxx (richtet sich nach dem Prozessor)
GP ab $xxxx und im Anschluss daran noch 64kB RAM.

Beispiel 68008 voll ausgebaut:
$00000...$cffff RAM
$d0000...$dffff GP
$e0000...$effff RAM
$f0000...$fffff ist der IO-Bereich

Mit dieser Konfiguration ist sowohl JADOS wie auch CP/M-68k voll lauffähig ;)

Zum Bootprozess:
Beim Einschalten ist die BankBoot-Karte aktiv, das heist sie belegt die unteren 32kB Speicher. Das Bootprogramm kopiert dann einen Teil von sich in einen Speicherbereich in dem garantiert RAM ist. Dieser Programmteil schaltet dann die BankBoot-Karte ab und sucht das GP. Sobald es gefunden wurde wird es ausgeführt.
Was heist nun garantierter RAM-Bereich? Wenn das GP auf Adresse 0 liegt muss ab $10000 RAM sein (min. 64kB). Falls das GP auf einer höheren Adresse liegt, sollten mehr als 64kB RAM ab Adresse 0 verfügbar sein (sonst macht das banken ja auch kaum Sinn).

Zu CP/M-68k:
Man braucht eine BankBoot, da CP/M eigene Trap-Vektoren einrichtet (RAM ab Adresse 0),
min. 128kB ab 0
GP+RAM auf hoher Adresse.
Das CP/M Bios verwendet die GP Routinen für IOs und Floppy
Um auch für andere Programme unter CP/M das GP nutzbar zu machen hat das NKC-Bios einen weiteren Trap Aufruf, der die Basisadresse des GPs liefert.

Zitat:
68008

Das Boot-ROM verschiebt sich an Adresse 0x8000 und schaltet
danach die BANKBOOT ab.



ACHTUNG
Das ist das Bootprogramm für die alten GP Versionen bis V4.3
Für die neueren GPs muss nach Adresse $10000 verschoben werden.

PS: Ich hab noch eine Variante des Bootprogramms für die BootRAM68k-Karte. Die prüft erstmal, ob eine CAS-Neo vorhanden ist und ob da ein GP-Image drauf ist, falls ja, wird dieses geladen und gestartet. Hab ich mir zur GP Entwicklung "gebastelt". Echt praktisch einfach mal ein anderes/neues GP auf die SD Karte zu schieben. Falls jemand Interesse hat einfach melden.

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 28. Januar 2018 00:01 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ok, also ist das so, wie ich es vermutete: Das GP befindet sich idealerweise hoch im Adressbereich, damit von 0 bis dahin RAM liegen kann.

Es kann definitiv nicht auf einer 1k Grenze liegen, weil es in 4k Schritten gesucht wird. Allerdings beginnt der eigentliche Code 1k nach der 4k Grenze, darum könnte man das glauben.

Ich hoffte, mittlerweile durch das Chaos der Bootprogramme durchzublicken, aber wenn sich das 68008 Boot-ROM nach 0x10000 verschieben muss, dann muss es eine neuere Version geben, die ich nicht habe. Die 68000 Version verschiebt sich dahin, aber das liegt daran, dass es dort zwei BANKBOOTs gibt.

Offenbar gibt es noch eine Menge wichtiges Zeug, was nicht im Web zu finden ist.

Michael

Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 28. Januar 2018 00:07 (#4)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin,

nö, das mit dem Verschieben nach $10000 hat nichts mit dem 68000/68008er zu tun sondern nur mit den "neueren" GPs.

OK, 1k-Schritte sind nicht eingebaut, sondern 4k-Schritte :o

Aber das ist nur eine Einschänkung durch das Bootprogramm. :D


PS: ob $8000 oder $10000 ist nur relevant, wenn das GP doch auf Adresse 0 ist.

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 28. Januar 2018 14:14 (#5)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Also braucht ein neueres GP, wenn es auf Adresse 0 liegt, ein Boot-ROM, was sich nicht nach 0x8000, sondern nach 0x10000 verschiebt.

Der 68000 hat das sowieso schon immer so gemacht, darum ist hier nichts zu tun. Der 68008 und 68020 brauchen ein neueres Boot-ROM. Beim 68008 merkt das aber nur, wer eine BANKBOOT benutzt, denn bei der neueren Speicherkarte gibt es sowieso ein anderes Boot-ROM. Und beim 68020 ist es kein Thema, weil der einzige Besitzer so eines Geräts eh alles personalisiert hat. :)

Und wer jemals CP/M 68k benutzt, hat das GP nicht auf Adresse 0 und muss damit eh nichts ändern.

Korrekt?

Michael

Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 28. Januar 2018 16:05 (#6)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Moin,

so wie du es jetzt beschreibst ist alles korrekt :)

Apropos 68020, ich bin nicht der Einzige der son schönes Teil hat, aber scheinbar der Einzige der damit auch etwas macht :rolleyes:

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
hschuetz
Administrator
Seitenadmins
******
ID # 3


  Erstellt am 28. Januar 2018 18:35 (#7)  |  Zitat Zitat   PN PN   E-Mail E-Mail   HP HP
Hallo,
stimmt...68020 steht auch bei mir... der hat das BOOT Eprom auf der CPU.
Gruß
Hans-Werner

-----------------------
Ob 8bit oder 16 oder 32 ist doch egal, Haupsache selbstgebaut!

Beiträge: 889 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 28. Januar 2018 19:10 (#8)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin,

sage ich ja, das ich nicht der Einzige bin :o

Ja eigentlich war es auch so geplant, daß das EPROM auf der CPU auch fürs GP ist. Allerdings ist es zu klein für die GPs ab V6.0. Ausser bei dir, da ist die Ansteuerung fürs EPROM modifiziert :D

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 28. Januar 2018 21:30 (#9)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Mir gefällt das abschaltbare Boot-ROM auf der 68020 CPU Karte und sowas hätte auch den anderen Karten gut gestanden, anstatt BANKEN auf den Bus zu legen. Das ist einfach eine sehr CPU-spezifische Sache, die sich nicht gut modularisieren lässt.

Ich vermute also, weil ich noch nie entsprechende Boot-ROMs für 68008 und 68020 sah, dass keiner das GP ab Adresse 0 laufen lässt.

Ich werde dann mal versuchen, meine BANKBOOT mit einem 68008 Boot-ROM auszustatten und ein einfaches Testprogramm mit GP-Signatur auf die ROA zu stecken.

Michael

Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
dl1ekm
Kennt sich schon aus
**
ID # 149


  Erstellt am 29. Januar 2018 22:38 (#10)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Man ist das kompliziert - so richtig habe ich das noch nicht verstanden. Ich glaube, wir brauchen wirklich mal ein User-Treffen-Wochenende, wo das alles mal besprochen wird...

Ich frage mich jetzt, ob ich das richtige BootEprom auf der BootRam68k habe? GP ist 7.1R5, CPU eine 68008. Das erste Eprom (32) Image, was ich auf Andreas Seite gefunde habe, lief nicht. Bei Werner fand ich ein anderes - und das geht - zumindest startet das GP. Ist dann "alles ok"?
Ich habe auch noch ein BootRom Image "V2.07" gefunden, was wohl auch für diese Karte ist - sollte ich besser das nehmen?

Gruß
Marcel

Beiträge: 82 | Mitglied seit: März 2015 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 29. Januar 2018 23:09 (#11)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Marcel,

Wenn das GP startet ist alles OK :)

Das BootRom Image V2.07 ist für die BootRAM68k Karte, also nichts für die Bankboot.

Da du ja leider etwas weiter weg wohnst (nicht Hamburg oder Umgebung) könnten wir es ja erstmal telefonisch versuchen.

Ich schick dir mal eine PN mit Telefonnummer.

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
Torsten
Kennt sich schon aus
**
ID # 92


  Erstellt am 30. Januar 2018 09:11 (#12)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,

nein Jens, du bist nicht der Einzige :-)

Läuft seit 2010 perfekt:

https://github.com/THemmecke/68K20

Software und BootLoader (der sollte auch mit der Original-Karte laufen - auf Adresse des Banken-Registers achten!):

https://github.com/THemmecke/68K20/tree/master/Software/GP

Grüsse
Torsten

Beiträge: 77 | Mitglied seit: März 2008 | IP-Adresse: gespeichert
dl1ekm
Kennt sich schon aus
**
ID # 149


  Erstellt am 30. Januar 2018 17:59 (#13)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Jens,

danke für das Angebot, ich kämpfe erst mal und melde mich nur, wenn es gar nicht mehr geht. Ich packe dann mal das 64k bin V2.07 auf die BootRam68k (ich habe keine "normale" Bankboot am laufen für den 68k8).

Laut Doku zur BootRam68k wird das GP auf 80000 geladen, also genau in die Mitte des 1MB Speichers - warum nicht ans Ende? Dort würde es doch bald überschrieben oder der Speicher dahinter vergeudet. Oder erledigt das der zweite Teil des Bootprogramms, was sich auf 10000 legt? Wohin wird das dann verschoben?
GP ist ja relocativ - aber woher weiß dann ein CPM oder JADOS, wo die Einsprünge sind, wenn das GP irgendwo liegen kann?

P.S.: Wie wäre es denn tatsächlich mal mit einem User-Treffen, gerne in Hamburg. Die Stadt ist toll - da käme auch meine Familie mit?

Beiträge: 82 | Mitglied seit: März 2015 | IP-Adresse: gespeichert
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 30. Januar 2018 19:55 (#14)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ok, Jens ist nicht der einzige mit einem 68020, aber bis jetzt gibt es 3 Stück und alle 3 haben ein anderes Boot-ROM, also sind bis jetzt alle 68020 Systeme personalisiert. :)

So viel Chaos gab's zu RDK Zeiten nicht. Kriegen wir es vielleicht hin, _ein_ Boot-ROM zu haben, was .if für BANKBOOT oder BOOTRAM benutzt, und wo man ansonsten die CPU konfigurieren kann?

Michael

Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
Torsten
Kennt sich schon aus
**
ID # 92


  Erstellt am 30. Januar 2018 20:37 (#15)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Also,

der Loader muss wissen:

1) wo das GP im EPROM/FLASH liegt -> gpstart
2) wie gross das GP ist (normalerweise 128k) -> gpsize
3) wo es hinkopiert werden soll -> gpziehl


Punkt 3 hängt ab von:

- wieviel RAM installiert ist -> es sollte sinnvollerweise in den letzten 256K Block kopiert werden (128K GP + 128K RAM für das GP)
- ob GP, JADOS und CPM die Speichermenge unterstützen (ich musste mir das GP umschreiben, was kein grosses Ding ist, damit meine 30MB vom GP unterstützt werden)

Bei Punkt 1) kann man etwas definieren, woran sich dann alle halten sollten, man kann das aber auch als Variable im BootLoader haben -> flexibler.
Punkt 2 wird sich wahrscheinlich entwickeln, aber wir gehen mal von 128K+x aus, wenn Jens noch seinen Multitasking-Kern implementiert wird's wohl mehr :-)

Damit man einen allgemeinen BootLoader bekommt, muss also Punkt 3 verallgemeinert werden:

Dazu muss die maximale RAM Grösse festgelegt werden, die durch das GP unterstützt wird:
In speicher.asm gibt es dafür die Variable grenze

grenze equ 2024*1024*cpu-1024*cpu-1 * Obergrenze für Speicher

Entweder man setzt das auf's maximal Mögliche oder einigt sich auf einen Wert.
Der BootLoader muss dann beim Start bis zu dieser Grenze nach RAM suchen und das GP möglichst weit Oben ablegen und starten.


cheers

Beiträge: 77 | Mitglied seit: März 2008 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 30. Januar 2018 21:48 (#16)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Torsten,

nun verwirr die Anderen doch nicht so :eek:

Die 128kB gelten nur für das 68020er GP und auch da wollte ich evtl. zusehen, das ich es wieder auf max. 64kB bekomme.

Die 68008 und 68000er GPs sind <= 64kB.

Die max. RAM Grösse ist inzwischen in der Datei varequ.asm (passte besser als in speicher.asm)

Mein Multitasking Kern wird wohl nicht ins GP kommen, denn dafür benötigt man den Timer der GDP-FPGA und die sind ja noch etwas spärlich geseht :D

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
dl1ekm
Kennt sich schon aus
**
ID # 149


  Erstellt am 31. Januar 2018 15:36 (#17)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Danke - geht so :-)
Soweit und mit dem 68K-Buch habe ich das im Grunde verstanden. Nur 3 Dinge noch nicht:
- Bei der BootRam68 steht, dass das GP-Eprom bei 80000 "eingeblendet" wird und dann verschoben werden kann. Das bedeutet als noch nicht, dass es dort auch bleibt sondern hängt davon ab, was der Code im Boot-Eprom damit macht?
- Die Speichergrenzen werden vom Boot-Eprom also nicht automatisch erkannt - das ist also pro System hardcoded in Abhängigkeit vom Speicher? ich hoffe also mal , dass die Version 2.07 das richtig macht. Kann man irgendwie rausbekommen im GP, wo es liegt? Sinnvoll wäre ja 1MB - 2x64K - ggf. IO-Fenster.
- Wenn das GP "mitten drin" steht, dann ist doch für JADOS/CPM der Rest RAM hinter dem GP nicht mehr nutzbar?

Gruß
Marcel

Beiträge: 82 | Mitglied seit: März 2015 | IP-Adresse: gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 31. Januar 2018 16:38 (#18)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Moin,

erstmal, die Konstante "grenze" die Torsten erwähnt, hat sagt dem System nur wie groß der Speicher max. sein kann. Das ist ja durch den NKC-Bus auf 20 Adressleitungen begrenzt. Daraus folgt das der max. Ausbau beim 68008 1MB, beim 68000 2MB und beim 68020 4MB sein kann. Beim 68008 gehen Aufgrund des IO-Signals die oberen 64kB für den Speicher verloren. Übrigens hab ich gerade noch nen Fehler bei der Konstanten für den 68000 und 68020 gefunden :( Wird in der nächsten GP-Version korrigiert.
Das 68020 System von Torsten hat nicht die Einschränkung der 20 Adressleitungen. Von daher hat er "grenze" angepasst, um mehr als 4MB Speicher zu nutzen.

Es stimmt, das bei der BootRAM68k nach dem Start das GP auf Adresse $80000 liegt, aber es wird auf die höchstmögliche Speicheradresse kopiert. Z.B beim 68008 mit RAM Vollausbau auf Adresse $D0000, von $E0000-$EFFFF ist dann RAM und $F0000-$FFFFF ist IO.
Danach werden das GP-EPROM wie auch das Boot-EPROM ausgeblendet und stattdessen ist dort RAM, beim 68008 wäre das dann von $00000 bis $CFFFF.
JADOS und CP/M werden unterhalb des GP (im RAM) installiert.

Ubrigens, falls das Bootprogramm V2.07 32kB groß ist, ist es für den 68008!

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
dl1ekm
Kennt sich schon aus
**
ID # 149


  Erstellt am 31. Januar 2018 17:39 (#19)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Danke - stimmt, das 68K8-BootRom muss in ein 27256 passen. Das gefundene ist 64k, also für den 68k.
Wie kann ich denn sicher sein, dass das BootRom, was bei mir steckt, das genau so macht mit dem GP? Ist das "Hochschieben" wie von dir beschrieben immer so? Dann bin ich beruhigt und bastel mal weiter. Alles sehr spannend :-)

Beiträge: 82 | Mitglied seit: März 2015 | IP-Adresse: gespeichert
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 31. Januar 2018 20:46 (#20)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Verstehe ich das richtig, dass bei der BOOTRAM nicht nur das Boot-ROM, sondern auch weiteres ROM in den Adressbereich eingeblendet wird? Man lässt das GP also nicht mehr direkt aus dem ROM laufen? Warum?

Michael

Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert



| https://hschuetz.selfhost.eu | Boardregeln | Datenschutzerklärung


Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts


Seite in 0,056149 Sekunden erstellt
20 Dateien verarbeitet
gzip Komprimierung eingeschaltet
821,54 KiB Speichernutzung