CP/M BIOS Assemblieren

    • Official Post

    Wie ich ja bereits erwähnte, möchte ich das CP/M BIOS an meine abweichende Portadresse für die zweite serielle Schnittstelle anpassen.

    Ich habe also in der Datei BIOS.ASM die entsprechenden Änderungen vorgenommen.

    Wenn ich diese Datei assembliere (ASM BIOS) erhalte ich wie erwartet den Objektcode als HEX-Datei (BIOS.HEX) und die PRN-Datei.

    Aber wie geht es dann weiter? Wenn ich die BIOS.HEX mit LOAD lade und mit SYSGEN auf die DIsk zurückschreibe, ist das Ergebnis nicht bootfähig.

    Außerdem ist die von LOAD erzeugt BIOS.COM dann 60KB groß.

    Ich habe die ganze Prozedur mit SYSGEN und MOVCPM noch nicht verstanden ... :(

  • Das BIOS allein hilft Dir nichts, Du musst es mit den beiden anderen, unveränderlichen Bestandteilen BDOS und CCP vereinen. Mal sehen, ob ich dazu irgendwo einen Link finde, das habe ich auch noch nie gemacht.


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • In der BIOS-Source heißt es dazu:


    Ich bin gerade selber am Experimentieren.


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Wenn Du nur die Ports änderst, bleibt alles andere am Platz, sonst wird es anspruchsvoller (d.h. ich habe keine Ahnung)


    Du assemblierst die Datei BIOS.ASM mit


    Code
    ASM BIOS


    Dabei erhältst Du BIOS.HEX und BIOS.PRN


    Dann speicherst Du das gerade laufende CP/M mit MOVCPM


    Code
    MOVCPM
    SAVE 38 BIOS64.COM

    Dann weiter nach Mike's Anleitung:


    Mit DDT das eben gespeicherte komplette CP/M laden und mit dem assemblierten eigenen BIOS patchen.

    Aufgemercht: Das im BIOS genannte BIAS (musst Du ausrechnen) ist negativ ... negative Zahlen in Hex werden im Zweierkomplement dargestellt, daher das vorangestellte "F".

    Die DDT-Prompts (Spiegelstriche) werden nicht mit eingegeben.


    Code
    DDT CPM64.COM
    -IBIOS.HEX
    -RF3B00
    -G0


    Jetzt hast Du wieder einen Prompt und das neue CP/M ist im Speicher, aber noch nicht auf Diskette.


    Daher weiter mit SYSGEN - beim Aufruf ohne Parameter wird das CP/M aus dem Speicher genommen, Zieldiskette angeben und System schreiben, danach hard reset mit dem Taster.


    Jetzt müsste das neue System geladen werden ... siehst Du, was ich geändert habe? :)



    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

    • Official Post

    Jawoll, das hat geklappt. :)

    Überprüft habe ich es, indem ich das CP/M mit der Videokarte im MFA als Terminal gestartet habe, dabei die zweite serielle Schnittstelle mit dem Terminalprogramm auf dem PC verbunden.

    Dann die Konsole mit STAT CON:=UC1: umgeschaltet ... und zack, die Konsole lebt auf dem PC.

    Der Weg zurück mit STAT CON:=TTY: klappt auch. :)

    Besten Dank!

    Jetzt muß ich mich nochmal einlesen um zu kapieren, was ich da eigentlich gemacht habe. :)

  • MOVCPM Relocate and execute (max) KByte CP/M system

    MOVCPM n Relocate and execute n KByte CP/M system

    MOVCPM n * Create relocated image in RAM of n Kbyte CP/M system, ready for SYSGEN or SAVE

    MOVCPM * * Create relocated image in RAM of (max) Kbyte CP/M system, ready for SYSGEN or SAVE

    SYSGEN Initiate SYStem GENerate program