BIOS direkt aufrufen mit Turbo Pascal 3.01A unter CP/M

  • Hallo,


    ich experimentiere gerade mit Turbo Pascal auf meinem PX-8, da ich mir ein kleines Terminalprogramm schreiben möchte. Dazu würde ich gerne einige der BIOS-Funktionen verwenden, die der PX-8 zum Zugriff auf die RS-232-Schnittstelle zur Verfügung steht. Wenn ich das Handbuch richtig verstehe, dann kann ich mit der BIOS-Prozedur direkt entsprechende Aufrufe machen. Die Funktionen -3 (Cold Boot) und 0 (Warm Boot) lassen sich auch aufrufen, aber alle anderen Funktionen machen irgendwie gar nichts oder lassen den Rechner abstürzen.


    Zum Beispiel:

    Code
    program test;
    begin
      WriteLn(Bios($06, 0));
    end.

    Das sollte die BIOS-Funktion CONST aufrufen und 0 ausgeben, wenn keine Taste gedrückt ist (was normalerweise ja der Fall sein dürfte).


    Das Programm bleibt jedoch einfach hängen und ich kann es nur mit Ctrl-STOP anhalten. Weitere Funktionen, die ich probiert habe, reagieren genauso merkwürdig (bleiben hängen oder crashen den Rechner).


    Mache ich etwas falsch, oder funktioniert BIOS auf dem PX-8 nicht?

    Danke!
    Hans

  • fritzeflink Danke, hilfreiche Datei! Wenn ich dort nachsehe, wie das mit den BIOS-Einsprüngen funktioniert, dann entspricht das ungefähr dem, was ich schon wusste. Mir ist immer noch unklar, warum die Aufrufe nicht funktionieren. Hat jemand vielleicht ein funktionierendes Programm in Turbo Pascal, das BIOS-Funktionen demonstriert?

  • Bin hier auf Glatteis unterwegs :sunny: .

    Im CP/M Listing gibt es BDOS und BIOS Funktionen.

    Wenn ich das im Listing richtig verstehe, wird die Biosfunktion mit "Bios-Startadresse plus Offset der gewünschten Funktion" aufgerufen.

    Eventuell liegt hier der Pfeffer im Hasen?

    :grübel: :kafeee:

    Viele Grüße,

    Knut

    :cat2:

  • CONS ist eigentlich $2, nicht $6?


    6 ist AUXOUT - Da tut sich ohne angeschlossenes Gerät natürlich nix.

    Cool, Danke! Ich muss also die im PX-8-Manual aufgeführten Funktionsnummern durch drei teilen, dann funktionieren sie auch wie gewünscht.


    Danke nochmal!

    Hans

  • Bin hier auf Glatteis unterwegs :sunny: .

    Im CP/M Listing gibt es BDOS und BIOS Funktionen.

    Wenn ich das im Listing richtig verstehe, wird die Biosfunktion mit "Bios-Startadresse plus Offset der gewünschten Funktion" aufgerufen.

    Eventuell liegt hier der Pfeffer im Hasen?

    :grübel: :kafeee:

    Das macht eingentlich Turbo-Pascal von alleine, ohne Klimmzüge (wenn man die richtige Funktionsnummer angibt :) )

  • Ahh, Danke!

    Wie gesagt "Glatteis" und eine mittlere Ewigkeit her... angst

    Viele Grüße,

    Knut

    :cat2:

  • CONS ist eigentlich $2, nicht $6?


    6 ist AUXOUT - Da tut sich ohne angeschlossenes Gerät natürlich nix.

    Cool, Danke! Ich muss also die im PX-8-Manual aufgeführten Funktionsnummern durch drei teilen, dann funktionieren sie auch wie gewünscht.

    Für mich sieht das so aus, als ob im Manual Address-Offsets zur WBOOT-Routine statt Funktionsnummern stehen. Das würde (ein CALL oder JMP dort zur eigentlichen Routine würde 3 Bytes brauchen) passen.

  • Für mich sieht das so aus, als ob im Manual Address-Offsets zur WBOOT-Routine statt Funktionsnummern stehen. Das würde (ein CALL oder JMP dort zur eigentlichen Routine würde 3 Bytes brauchen) passen.

    Genau so ist es! Nachdem ich nun die Offsets in Funktiosnummern umrechne, funktioniert alles genau wie geplant. Danke für Eure Hilfe!