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



Autor Thema: Neues CP/M 2.2 für den NKC erstellen
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 19. März 2017 15:06 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,

hier eine neue Anleitung, die die bisherigen Anleitungen ersetzen soll. Wenn etwas nicht klar ist, sagt bitte Bescheid. Die finale Version wird Hans-Werner sicher ins Web übernehmen.

Michael



Traditionell wurde ein Abbild von CP/M 2.2 durch MOVCPM in die TPA geladen, wobei es durch Angabe einer Speichergröße in KByte für diese Menge an Speicher reloziert wurde. Danach wurde es mit SYSGEN auf die Systemspuren geschrieben. SYSGEN wurde vom Hersteller gerne für undokumentierte Besonderheiten des Systems angepasst und da macht der NKC keine Ausnahme.

Darum war dieser Vorgang nicht gut verständlich, aber Digital Research lieferte nur das fertige System und keinen Quellcode, so dass es keine Alternative gab.

Heute ist der Quellcode offen und es spricht viel dafür, das System komplett aus dem Quellcode zu bauen. Die einzelnen Teile werden dann in die TPA geladen, ähnlich wie MOVCPM das tut. Danach wird das Abbild mit SYSGEN auf die Systemspuren geschrieben oder mit SAVE in eine Datei gesichert.

SYSGEN ist so klein, dass die TPA garantiert ab Adresse 0900h für das Systemabbild benutzt werden kann. Diese Ladeadresse ist so ziemlich das Einzige, was bei allen Versionen von SYSGEN gleich ist.

Diese Tabelle zeigt, wo die Bestandteile des Systems später im Speicher stehen sollen und wohin sie für SYSGEN geladen werden:

RAM SYSGEN Floppy
0FC00h 00900h Bootsektor
0F000h FLOMON (darum 60k CP/M)
0EA00h 01F80h BIOS (Länge 0600h)
0DC00h 01180h BDOS (Länge 0E00h)
0D400h 00980h CCP (Länge 0800h)

Hier zeigt sich beim NKC eine Besonderheit für Floppies im Vergleich zu anderen Massenspeichern: Das SYSGEN80 des NKC erwartet zwar auch das Abbild ab 0900h, aber es schreibt nur die ersten 128 Bytes in den Bootsektor. Die Sektoren sind bei Floppies 1024 Bytes lang, aber im Speicherabbild beginnt CP/M bereits ab 0980h. Leider ging der Quellcode für SYSGEN80 verloren, der vielleicht dokumentiert, warum das so gemacht wurde. Möglicherweise hat es damit zu tun, dass der NKC ursprünglich 8" Laufwerke mit einer Sektorgröße von 128 Bytes benutzte.

Die einzelnen Teile werden mit DDT geladen. DDT erlaubt die Angabe eines Offsets beim Laden von Dateien. COM Dateien haben die implizite Startadresse 0100h, zu der der Offset addiert wird. Bei HEX-Dateien wird der Offset mit der Startadresse in der HEX-Datei verrechnet:

0FC00h soll nach 0900h: 0900h - 0FC00h = 0D00h
0D400h soll nach 0980h: 0980h - 0D400h = 03580h

Mit Hilfe der SUBMIT-Datei GENFLO.SUB wird die Systemgenerierung für Floppies automatisiert:

XSUB
DDT
IBOOT80.HEX
R0D00
IOS2CCP.HEX
R3580
IOS3BDOS.HEX
R3580
IPATCH.HEX
R3580
ISERIAL.HEX
R3580
IBIOS001.HEX
R3580
G0

BOOT80.HEX ist der Bootloader für Floppies.

OS2CCP.HEX ist der assemblierte CCP.

OS3BDOS.HEX ist das assemblierte BDOS.

PATCH.HEX enthält einen beim NKC beliebten Patch für CP/M, der ein unmodifiziertes CP/M vorraussetzt.

SERIAL.HEX enthält die Seriennummer, die vom unmodifizierten CP/M geprüft wird.

BIOS001.HEX ist ein BIOS für den Betrieb mit bis zu zwei 3.5" oder 5.25" Floppies sowie einer RAM-Disk, d.h. es werden wenigstens zwei ROA64 benötigt.

Nach Start dieser SUBMIT-Datei steht das fertige Systemabbild in der TPA und kann mit SYSGEN80 in die Systemspuren einer Floppy geschrieben werden.

Wenn man SAVE benutzt, um das Abbild zu sichern, muss man die Anzahl von Pages des Systems angeben:

SYSGEN von 0100h bis 0900h = 8 pages (SAVE speichert erst ab 0100h)
Länge des Bootsektors im Speicher = 1 page
Länge von CP/M+BIOS = 0F000 - 0D400 = 28 pages
Insgesamt 8 + 1 + 28 = 37

So wird das System also gespeichert:

A>SAVE 37 CPM.COM

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


  Erstellt am 19. März 2017 18:09 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Michael,

den (warscheinlich rückübersetzten) Quellcode für SYSGEN80 hab ich. Kann ich die mailen.

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

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


  Erstellt am 19. März 2017 19:11 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ja, bitte!

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,014473 Sekunden erstellt
16 Dateien verarbeitet
gzip Komprimierung eingeschaltet
656,20 KiB Speichernutzung