Turbo-Pascal-Routinen spzl. Sirius

  • Moin,


    ich habe damals ja viel auf dem Sirius programmiert - hier mal die verschiedenden Funktionen die Sirius1-Spezifisch waren :) Natürlich gab es nochmal eine andere Library mit den gleichen Routinen für den IBM-PC. Die letzte Änderung am Sourcecode war übrigens am 07.06.90:


    VicLib:


    (* Constanten f}r deutsche Sonderzeichen *)
    GrAe = '[';
    GrOe = '\';
    GrUe = ']';
    ae = '{';
    oe = '|';
    ue = '}';
    sz = '~';


    VAR
    ScrNo : BYTE; (* Muss hier definiert werden, da sonst kein Startwert gegeben werden kann *)
    ScreenAbs : ARRAY[1..2000] OF WORD ABSOLUTE $F000:0;
    ScreenStore : ARRAY[1..2000,1..4] OF WORD;
    XPosAlt,
    YPosAlt,
    XPosUntenAlt,
    YPosUntenAlt : ARRAY[0..4] OF BYTE;
    i : INTEGER;



    PROCEDURE GetTaste(VAR Taste :CHAR; VAR FTaste :BYTE;
    VAR Aktion :BOOLEAN; XPos, YPos :BYTE);
    (* Holt ein Zeichen von der Tastatur und }bersetzt dieses in die
    FTasten-Nummer *)


    PROCEDURE Display(ZKette :WorkString; XAbs, YAbs, Attr :BYTE);
    (* Schreibt den Text, absolut addressiert, in den Bildschirm-Speicher
    Getestet + OK: 12.01.89 *)



    PROCEDURE Fenster(XPos, YPos, XPosUnten, YPosUnten :BYTE; Header :WorkString);
    (* Getestet + OK 31.01.89 *)


    PROCEDURE SchirmSichern;
    (* Sichert den Bildschirm *)


    PROCEDURE AlterSchirm;
    (* ]berschreibt den Bildschirm mit dem
    gesichertem alten Bildschirminhalt *)


    PROCEDURE ClrFullScreen;
    (* L|scht den gesamten Bildschirm, bei Sirius 1 reicht das normale CLS
    nicht, da der interne Pointer auf den Anfang der ersten Bildschirm-
    Seite gestellt werden muss
    Getestet + OK 30.01.89 *)


    PROCEDURE ClrScr;


    PROCEDURE DrawFrame(XPos, YPos, XPosUnten, YPosUnten,
    FrameTyp :BYTE; Header :WorkString);
    (* Zeichnet einen Rahmen im angegebenen FrameTyp und gibt einen Header
    aus, wenn dieser mit angegeben ist. Muss mit in dieser Libary sitzen,
    da hier sonst gegenseitige Aufrufe von OutLib und VicLib entstehen.
    Getestet + OK 30.01.89 *)


    PROCEDURE Cursor(CursorTyp: BYTE);
    (* Ver{ndert den Cursor
    0 = Block-Cursor
    1 = Strich-Cursor
    2 = Hidden Cursor
    Getestet + OK 30.01.89 *)


    PROCEDURE Printer(PrintNo :BYTE);
    (* Schaltet den Drucker }ber die entsprechende Schnittstelle ein,
    diser Drucker wird dann von den Druckroutinen benutzt *)


    UNCTION KeyPressed: BOOLEAN;
    (* Gibt TRUE und FALSE aus, l|scht jedoch nicht den Buffer
    Getestet + OK: 11.01.89 *)
    BEGIN
    Regs.AH := $0B;
    Intr($21,Regs);
    IF Regs.AL = $FF THEN KeyPressed := True ELSE
    KeyPressed := False;
    END;


    FUNCTION ReadKey: CHAR;
    (* Wartet auf einen Tastendruck und l|scht den Buffer
    Getestet + OK: 11.01.89 *)
    BEGIN
    Regs.AH := $07;
    Intr($21,Regs);
    ReadKey := Chr(Regs.AL);
    END;


    PROCEDURE GotoXY(XPos,YPos: ShortInt);
    (* Geht zur Position X, Y; wobei zuerst der Spaltenwert (1-80) und dann
    der Zeilenwert (1-24) angegeben wird. ShortInt wurde definiert, um den
    Cursor auch ausserhalb des Fensters setzen zu k|nnen.
    Getestet + OK: 02.06.88 *)
    BEGIN
    XPos := XPos +Lo(WindMin);
    YPos := YPos +Hi(WindMin);
    Write(#27,'Y',Chr(31+YPos),Chr(31+XPos));
    END;


    PROCEDURE Window(XPos,YPos,XPosUnten,YPosUnten: BYTE);
    (* Definiert den angegebenen Bereich des Bildschirm als Textfenster.
    Die Positionen sind allesamt absolute Endpositionen. Danach wird der
    Cursor auf die Position 1,1 des Fensters gesetzt. S{mtliche Routinen,
    die sich auf eine Bildschirm-Position beziehen, beziehen sich dann auf
    die Position 1,1 des Fensters
    Getestet + OK: 11.01.89 *)


    PROCEDURE Delay(DelayTime: WORD);


    PROCEDURE SysTime(VAR Zeit :ZeitRec);
    (* Holt die System-Zeit *)



    Gruss
    Hans

  • Grins - das waren noch Zeiten.


    Ich habe den Sirius auch "bearbeitet", so ähnlich wie Du, aber mit DeSmet-C88.


    Besonders schön fand ich, dass der Sirius damals schon voll konfiguriebar war, incl. eigenem Tastatur-Layout (je nach Verwendungszweck) und eigenem Zeichensatz.


    Apropos
    PROCEDURE SysTime(VAR Zeit :ZeitRec);
    (* Holt die System-Zeit *)


    hatte Dein Sirius schon eine batteriegepufferte Uhr?


    Gruß
    christopher

  • Hi,

    Ich habe den Sirius auch "bearbeitet", so ähnlich wie Du, aber mit DeSmet-C88.

    nein, bei mir war es erst der Basic-Interpreter, dann BusinessBasic-Compiler und dann eben TurboPascal ... ich muss echt die Tage nochmal kucken ob das noch alles läuft :)

    Besonders schön fand ich, dass der Sirius damals schon voll konfiguriebar war, incl. eigenem Tastatur-Layout (je nach Verwendungszweck) und eigenem Zeichensatz.

    Ja - da hatte ich jede Menge von ... für jedes Programm wurde ein eigener Satz geladen. Und oben auf der tastatur klebten an einer Plastikspirale kartonstreifen mit den Layouts :)

    hatte Dein Sirius schon eine batteriegepufferte Uhr?

    Ich bin mir relativ sicher - aber das kann ich Dir echt erst sagen wenn ich den mal wieder boote.


    Gruß
    Hans