From 562f6af31df7fa3d38b098894331269bd82250c1 Mon Sep 17 00:00:00 2001 From: Stefan Koelle Date: Tue, 4 Aug 2026 22:59:34 +0200 Subject: [PATCH] added license comment in source --- SOURCE/LOGO-INT.RO/AMN.PAS | 2 + SOURCE/LOGO-INT.RO/COMPILE.BAT | 2 + SOURCE/LOGO-INT.RO/TEXTGRAF.PAS | 68 +++++++++++++++++---------------- SOURCE/LOGO-INT.RO/logo-int.PAS | 4 +- SOURCE/MENU-INT.RO/AMN.PAS | 2 + SOURCE/MENU-INT.RO/COMPILE.BAT | 2 + SOURCE/MENU-INT.RO/TEXTGRAF.PAS | 68 +++++++++++++++++---------------- SOURCE/MENU-INT.RO/menu-int.PAS | 4 +- SOURCE/STAR-INT.RO/COMPILE.BAT | 2 + SOURCE/STAR-INT.RO/TEXTGRAF.PAS | 68 +++++++++++++++++---------------- SOURCE/STAR-INT.RO/star-int.PAS | 2 + 11 files changed, 123 insertions(+), 101 deletions(-) diff --git a/SOURCE/LOGO-INT.RO/AMN.PAS b/SOURCE/LOGO-INT.RO/AMN.PAS index 5025bb9..b91df1a 100644 --- a/SOURCE/LOGO-INT.RO/AMN.PAS +++ b/SOURCE/LOGO-INT.RO/AMN.PAS @@ -1,3 +1,5 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } unit amn; INTERFACE procedure tcmamn; diff --git a/SOURCE/LOGO-INT.RO/COMPILE.BAT b/SOURCE/LOGO-INT.RO/COMPILE.BAT index 5e861ee..846f76c 100644 --- a/SOURCE/LOGO-INT.RO/COMPILE.BAT +++ b/SOURCE/LOGO-INT.RO/COMPILE.BAT @@ -1,3 +1,5 @@ +REM Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) +REM Licensed under the MIT License. See LICENSE file in project root for details. c:\progs\tp\tpc amn.pas c:\progs\tp\tpc textgraf.pas c:\progs\tp\tpc logo-int.pas diff --git a/SOURCE/LOGO-INT.RO/TEXTGRAF.PAS b/SOURCE/LOGO-INT.RO/TEXTGRAF.PAS index 118cd7c..7d34e78 100644 --- a/SOURCE/LOGO-INT.RO/TEXTGRAF.PAS +++ b/SOURCE/LOGO-INT.RO/TEXTGRAF.PAS @@ -1,29 +1,31 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } unit TextGraf; interface uses dos; type MonitorTyp = (Hercules, EGA, VGA, other); - VGAColorInfo = array[0..2] of byte; { eine VGA-Farbe: nur fr Demo } + VGAColorInfo = array[0..2] of byte; { eine VGA-Farbe: nur f�r Demo } VGAColors = array[0..255] of VGAColorInfo; { alle VGA-Farben: dito } function InitTextGraf: integer; - { Muá ganz zu Anfang des Programms, noch im Textmodus aufgerufen + { Mu� ganz zu Anfang des Programms, noch im Textmodus aufgerufen werden. Ohne das funktioniert der Rest nicht. Ergebnis 0: Alles Ok, unbekannter Videotyp: -1, zuwenig Speicher: 1 (Bedarf ca. 12Kb) } procedure SetPaletteSave(On: boolean); { Mit On = true nach InitTextGraf und im Textmodus aufrufen. Sichert die - Textpalette und reserviert Speicher fr die Grafikpalette, die dann + Textpalette und reserviert Speicher f�r die Grafikpalette, die dann automatisch verwendet werden. On = false schaltet diese Automatik - wieder ab und gibt den Speicher fr die Paletten (ca. 1.5Kb) frei.} + wieder ab und gibt den Speicher f�r die Paletten (ca. 1.5Kb) frei.} procedure ToText; { Schaltet vom Grafik- in den Testmodus. Bildspeicher etc. werden in Sicherheit gebracht } procedure ToGraph; - { Schaltet in die Grafik zurck. Vorher sollte ein Grafikmodus mit + { Schaltet in die Grafik zur�ck. Vorher sollte ein Grafikmodus mit ToText verlassen worden sein, um alle Werte zu initialisieren } procedure GrafikMode(Mode: byte); - { nur fr das Demoprogramm. Kann gel”scht werden, wenn BGI-Routinen + { nur f�r das Demoprogramm. Kann gel�scht werden, wenn BGI-Routinen (InitGraph) verwendet werden } function GetMonTyp: MonitorTyp; { dito } @@ -38,7 +40,7 @@ type ModeType = (Text, Grafik, unknown); var - regs: registers; { fr intr } + regs: registers; { f�r intr } CharGen: CharGenArray absolute $A000:0; { Adresse Zeichengenerator } BMode: byte absolute $40:$49; { Bios-Videomode } @@ -48,7 +50,7 @@ const TScreen: ^ScreenArray = nil; { zeigt in den Bildspeicher } ScrBuf: ^ScreenArray = nil; { speichert Textschirm zwischen } CGBuf: ^CharGenArray = nil; { speichert Zeichengenerator } - ModeNr: byte = $FF; { Kennung fr Init } + ModeNr: byte = $FF; { Kennung f�r Init } TMode: byte = $FF; { der zu restaurierende Textmodus } GMode: byte = $FF; { dito Grafikmodus } VGATextPal: ^VGAColors = nil; @@ -60,7 +62,7 @@ begin begin AX:= $1A00; { Display Combination abfragen } Intr($10, regs); - IsVga:= (AL = $1A); { gltiger Aufruf } + IsVga:= (AL = $1A); { g�ltiger Aufruf } end; end; @@ -71,7 +73,7 @@ begin AH:= $12; { Funktion $12 } BL:= $10; { get EGA Information } Intr($10, regs); - IsEga:= (BL <> $10); { hat sich was ge„ndert ? } + IsEga:= (BL <> $10); { hat sich was ge�ndert ? } end; end; @@ -110,10 +112,10 @@ end; procedure HercTextMode; var i: integer; ModeReg: byte absolute 0:$465; -const HData: array[0..13] of byte = { Timingdaten! Nicht ver„ndern! } +const HData: array[0..13] of byte = { Timingdaten! Nicht ver�ndern! } ($61,$50,$52,$0f,$19,$06,$19,$19,$02,$0d,$0b,$0c,0,0); begin - port[$3bf]:= 0; { Config Reg: HalfMode: eine Seite (3 fr Full Mode) } + port[$3bf]:= 0; { Config Reg: HalfMode: eine Seite (3 f�r Full Mode) } port[$3b8]:= $21; { Mode Control: Dunkel, Text, 80x25 } for i:= 0 to 13 do { die Timing-Daten komplett } begin @@ -127,10 +129,10 @@ end; procedure HercGraphMode; var i: integer; ModeReg: byte absolute 0:$465; -const HData: array[0..13] of byte = { Timingdaten! Nicht ver„ndern! } +const HData: array[0..13] of byte = { Timingdaten! Nicht ver�ndern! } ($35,$2d,$2e,$07,$5b,$02,$57,$57,$02,$03,0,0,0,0); begin - port[$3bf]:= 1; { Config Reg: HalfMode: eine Seite (3 fr Full Mode) } + port[$3bf]:= 1; { Config Reg: HalfMode: eine Seite (3 f�r Full Mode) } port[$3b8]:= 2; { Mode Control: Dunkel, Grafik, Seite 0 } for i:= 0 to 13 do { die Timing-Daten komplett } begin @@ -141,10 +143,10 @@ begin ModeReg:= $0a; { im BIOS-Ram protokollieren } end; -procedure GrafikMode(Mode: byte); { Setzt den Videomodus, nur fr Demo } +procedure GrafikMode(Mode: byte); { Setzt den Videomodus, nur f�r Demo } var i: integer; begin - if VMonitor <> Hercules then { alle auáer Hercules sind sehr einfach } + if VMonitor <> Hercules then { alle au�er Hercules sind sehr einfach } with regs do begin AX:= Mode; { AH:= 0; AL:= Mode } @@ -157,13 +159,13 @@ begin end; end; -function GetMonTyp: MonitorTyp; { Zugriffsfunktion, nur fr das Demo } +function GetMonTyp: MonitorTyp; { Zugriffsfunktion, nur f�r das Demo } begin GetMonTyp:= VMonitor; end; procedure ToTextVGA; { sichert den Teil des Grafik-Bildspeichers, der } -var b: byte; { vom Zeichengenerator berschrieben wird } +var b: byte; { vom Zeichengenerator �berschrieben wird } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } intr($10, regs); { Bildspeicher bleibt erhalten } @@ -171,10 +173,10 @@ begin b:= Port[$3cf]; { lesen } Port[$3cf]:= 2; { Plane 2 ein } CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } - Port[$3cf]:= b; { Wert zurck } + Port[$3cf]:= b; { Wert zur�ck } end; -procedure ToTextEGA; { wie oben jedoch Variante fr EGA, } +procedure ToTextEGA; { wie oben jedoch Variante f�r EGA, } var b: byte; { deren Register nicht lesbar sind } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -182,10 +184,10 @@ begin Port[$3ce]:= 4; { Read Map Select holen } Port[$3cf]:= 2; { Plane 2 ein } CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } - Port[$3cf]:= 0; { Default zurck } + Port[$3cf]:= 0; { Default zur�ck } end; -procedure ToGraphVGA; { berschreibt den Zeichengenerator mit } +procedure ToGraphVGA; { �berschreibt den Zeichengenerator mit } var b: byte; { gesicherten Grafikinhalt } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -193,11 +195,11 @@ begin Port[$3C4]:= 2; { Map Mask Register holen } b:= Port[$3c5]; { lesen } Port[$3c5]:= 4; { Plane 2 ein } - CharGen:= CGBuf^; { Zeichengenerator zurck } - Port[$3c5]:= b; { Wert zurck } + CharGen:= CGBuf^; { Zeichengenerator zur�ck } + Port[$3c5]:= b; { Wert zur�ck } end; -procedure ToGraphEGA; { wie oben jedoch Variante fr EGA, } +procedure ToGraphEGA; { wie oben jedoch Variante f�r EGA, } var b: byte; { deren Register nicht lesbar sind } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -205,7 +207,7 @@ begin Port[$3C4]:= 2; { Map Mask Register holen } Port[$3c5]:= 4; { Plane 2 ein } CharGen:= CGBuf^; { Zeichengenerator kopieren } - Port[$3c5]:= 0; { Default zurck } + Port[$3c5]:= 0; { Default zur�ck } end; function InitTextGraf: integer; { ermittelt Monitor, setzt Variablen, } @@ -229,9 +231,9 @@ begin { reserviert Speicher } if VMonitor = other then exit; { was anderes? geht nicht! } InitTextGraf:= 1; { Fehlervorgabe: kein Speicher } if VMonitor in [EGA, VGA] then - begin { Vorgaben fr EGA & VGA } + begin { Vorgaben f�r EGA & VGA } GMode:= $10; { Grafik 640x350 } - if MaxAvail >= sizeof(CGBuf) then { Speicher fr Puffer belegen } + if MaxAvail >= sizeof(CGBuf) then { Speicher f�r Puffer belegen } New(CGBuf) else exit; { raus mit Fehler 1 } @@ -270,7 +272,7 @@ begin end; end; -procedure ToText; { Schaltet in Textmodus, bringt, was berschrieben } +procedure ToText; { Schaltet in Textmodus, bringt, was �berschrieben } begin { wird in Sicherheit } if ModeNr = $FF then NoInitStop; { schon Init ? } GMode:= BMode; { Grafikmodus merken } @@ -283,10 +285,10 @@ begin { wird in Sicherheit } EGA: ToTextEGA; end; {case} if VMonitor = Hercules then - HercTextMode { Hercules Textmodus ohne Bildspeicher l”schen } + HercTextMode { Hercules Textmodus ohne Bildspeicher l�schen } else begin - regs.ax:= TMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l”schen } + regs.ax:= TMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l�schen } intr($10, regs); if (VMonitor = VGA) and (VGATextPal <> nil) then SetVGAColors(VGATextPal^); @@ -299,7 +301,7 @@ procedure ToGraph; { versucht den Grafikmodus zu restaurieren } begin if ModeNr = $FF then NoInitStop; { schon Init ? } TMode:= BMode; - TScreen^:= ScrBuf^; { Grafikinhalt zurck in Textbildschirm fllen } + TScreen^:= ScrBuf^; { Grafikinhalt zur�ck in Textbildschirm f�llen } case VMonitor of VGA: begin if VGATextPal <> nil then @@ -312,7 +314,7 @@ begin HercGraphMode { Hercules handmade Grafikmodus } else begin - regs.ax:= GMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l”schen } + regs.ax:= GMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l�schen } intr($10, regs); if (VMonitor = VGA) and (VGAGraphPal <> nil) then SetVGAColors(VGAGraphPal^); diff --git a/SOURCE/LOGO-INT.RO/logo-int.PAS b/SOURCE/LOGO-INT.RO/logo-int.PAS index bb31469..c6e8900 100644 --- a/SOURCE/LOGO-INT.RO/logo-int.PAS +++ b/SOURCE/LOGO-INT.RO/logo-int.PAS @@ -1,3 +1,5 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } {$A-,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S-,V-,X-} {$M 16384,0,655360} uses crt,textgraf,WOWTPU,WOWCONST,amn; @@ -56,7 +58,7 @@ begin end; end; end; -procedure CLI; inline( $FA ); { Interrupts unterdrcken } +procedure CLI; inline( $FA ); { Interrupts unterdr�cken } procedure STI; inline( $FB ); { Interrupts wieder erlauben } begin CLI; diff --git a/SOURCE/MENU-INT.RO/AMN.PAS b/SOURCE/MENU-INT.RO/AMN.PAS index 5025bb9..b91df1a 100644 --- a/SOURCE/MENU-INT.RO/AMN.PAS +++ b/SOURCE/MENU-INT.RO/AMN.PAS @@ -1,3 +1,5 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } unit amn; INTERFACE procedure tcmamn; diff --git a/SOURCE/MENU-INT.RO/COMPILE.BAT b/SOURCE/MENU-INT.RO/COMPILE.BAT index 05508c0..68db7e6 100644 --- a/SOURCE/MENU-INT.RO/COMPILE.BAT +++ b/SOURCE/MENU-INT.RO/COMPILE.BAT @@ -1,3 +1,5 @@ +REM Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) +REM Licensed under the MIT License. See LICENSE file in project root for details. c:\progs\tp\tpc amn.pas c:\progs\tp\tpc textgraf.pas c:\progs\tp\tpc menu-int.pas diff --git a/SOURCE/MENU-INT.RO/TEXTGRAF.PAS b/SOURCE/MENU-INT.RO/TEXTGRAF.PAS index 118cd7c..7d34e78 100644 --- a/SOURCE/MENU-INT.RO/TEXTGRAF.PAS +++ b/SOURCE/MENU-INT.RO/TEXTGRAF.PAS @@ -1,29 +1,31 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } unit TextGraf; interface uses dos; type MonitorTyp = (Hercules, EGA, VGA, other); - VGAColorInfo = array[0..2] of byte; { eine VGA-Farbe: nur fr Demo } + VGAColorInfo = array[0..2] of byte; { eine VGA-Farbe: nur f�r Demo } VGAColors = array[0..255] of VGAColorInfo; { alle VGA-Farben: dito } function InitTextGraf: integer; - { Muá ganz zu Anfang des Programms, noch im Textmodus aufgerufen + { Mu� ganz zu Anfang des Programms, noch im Textmodus aufgerufen werden. Ohne das funktioniert der Rest nicht. Ergebnis 0: Alles Ok, unbekannter Videotyp: -1, zuwenig Speicher: 1 (Bedarf ca. 12Kb) } procedure SetPaletteSave(On: boolean); { Mit On = true nach InitTextGraf und im Textmodus aufrufen. Sichert die - Textpalette und reserviert Speicher fr die Grafikpalette, die dann + Textpalette und reserviert Speicher f�r die Grafikpalette, die dann automatisch verwendet werden. On = false schaltet diese Automatik - wieder ab und gibt den Speicher fr die Paletten (ca. 1.5Kb) frei.} + wieder ab und gibt den Speicher f�r die Paletten (ca. 1.5Kb) frei.} procedure ToText; { Schaltet vom Grafik- in den Testmodus. Bildspeicher etc. werden in Sicherheit gebracht } procedure ToGraph; - { Schaltet in die Grafik zurck. Vorher sollte ein Grafikmodus mit + { Schaltet in die Grafik zur�ck. Vorher sollte ein Grafikmodus mit ToText verlassen worden sein, um alle Werte zu initialisieren } procedure GrafikMode(Mode: byte); - { nur fr das Demoprogramm. Kann gel”scht werden, wenn BGI-Routinen + { nur f�r das Demoprogramm. Kann gel�scht werden, wenn BGI-Routinen (InitGraph) verwendet werden } function GetMonTyp: MonitorTyp; { dito } @@ -38,7 +40,7 @@ type ModeType = (Text, Grafik, unknown); var - regs: registers; { fr intr } + regs: registers; { f�r intr } CharGen: CharGenArray absolute $A000:0; { Adresse Zeichengenerator } BMode: byte absolute $40:$49; { Bios-Videomode } @@ -48,7 +50,7 @@ const TScreen: ^ScreenArray = nil; { zeigt in den Bildspeicher } ScrBuf: ^ScreenArray = nil; { speichert Textschirm zwischen } CGBuf: ^CharGenArray = nil; { speichert Zeichengenerator } - ModeNr: byte = $FF; { Kennung fr Init } + ModeNr: byte = $FF; { Kennung f�r Init } TMode: byte = $FF; { der zu restaurierende Textmodus } GMode: byte = $FF; { dito Grafikmodus } VGATextPal: ^VGAColors = nil; @@ -60,7 +62,7 @@ begin begin AX:= $1A00; { Display Combination abfragen } Intr($10, regs); - IsVga:= (AL = $1A); { gltiger Aufruf } + IsVga:= (AL = $1A); { g�ltiger Aufruf } end; end; @@ -71,7 +73,7 @@ begin AH:= $12; { Funktion $12 } BL:= $10; { get EGA Information } Intr($10, regs); - IsEga:= (BL <> $10); { hat sich was ge„ndert ? } + IsEga:= (BL <> $10); { hat sich was ge�ndert ? } end; end; @@ -110,10 +112,10 @@ end; procedure HercTextMode; var i: integer; ModeReg: byte absolute 0:$465; -const HData: array[0..13] of byte = { Timingdaten! Nicht ver„ndern! } +const HData: array[0..13] of byte = { Timingdaten! Nicht ver�ndern! } ($61,$50,$52,$0f,$19,$06,$19,$19,$02,$0d,$0b,$0c,0,0); begin - port[$3bf]:= 0; { Config Reg: HalfMode: eine Seite (3 fr Full Mode) } + port[$3bf]:= 0; { Config Reg: HalfMode: eine Seite (3 f�r Full Mode) } port[$3b8]:= $21; { Mode Control: Dunkel, Text, 80x25 } for i:= 0 to 13 do { die Timing-Daten komplett } begin @@ -127,10 +129,10 @@ end; procedure HercGraphMode; var i: integer; ModeReg: byte absolute 0:$465; -const HData: array[0..13] of byte = { Timingdaten! Nicht ver„ndern! } +const HData: array[0..13] of byte = { Timingdaten! Nicht ver�ndern! } ($35,$2d,$2e,$07,$5b,$02,$57,$57,$02,$03,0,0,0,0); begin - port[$3bf]:= 1; { Config Reg: HalfMode: eine Seite (3 fr Full Mode) } + port[$3bf]:= 1; { Config Reg: HalfMode: eine Seite (3 f�r Full Mode) } port[$3b8]:= 2; { Mode Control: Dunkel, Grafik, Seite 0 } for i:= 0 to 13 do { die Timing-Daten komplett } begin @@ -141,10 +143,10 @@ begin ModeReg:= $0a; { im BIOS-Ram protokollieren } end; -procedure GrafikMode(Mode: byte); { Setzt den Videomodus, nur fr Demo } +procedure GrafikMode(Mode: byte); { Setzt den Videomodus, nur f�r Demo } var i: integer; begin - if VMonitor <> Hercules then { alle auáer Hercules sind sehr einfach } + if VMonitor <> Hercules then { alle au�er Hercules sind sehr einfach } with regs do begin AX:= Mode; { AH:= 0; AL:= Mode } @@ -157,13 +159,13 @@ begin end; end; -function GetMonTyp: MonitorTyp; { Zugriffsfunktion, nur fr das Demo } +function GetMonTyp: MonitorTyp; { Zugriffsfunktion, nur f�r das Demo } begin GetMonTyp:= VMonitor; end; procedure ToTextVGA; { sichert den Teil des Grafik-Bildspeichers, der } -var b: byte; { vom Zeichengenerator berschrieben wird } +var b: byte; { vom Zeichengenerator �berschrieben wird } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } intr($10, regs); { Bildspeicher bleibt erhalten } @@ -171,10 +173,10 @@ begin b:= Port[$3cf]; { lesen } Port[$3cf]:= 2; { Plane 2 ein } CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } - Port[$3cf]:= b; { Wert zurck } + Port[$3cf]:= b; { Wert zur�ck } end; -procedure ToTextEGA; { wie oben jedoch Variante fr EGA, } +procedure ToTextEGA; { wie oben jedoch Variante f�r EGA, } var b: byte; { deren Register nicht lesbar sind } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -182,10 +184,10 @@ begin Port[$3ce]:= 4; { Read Map Select holen } Port[$3cf]:= 2; { Plane 2 ein } CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } - Port[$3cf]:= 0; { Default zurck } + Port[$3cf]:= 0; { Default zur�ck } end; -procedure ToGraphVGA; { berschreibt den Zeichengenerator mit } +procedure ToGraphVGA; { �berschreibt den Zeichengenerator mit } var b: byte; { gesicherten Grafikinhalt } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -193,11 +195,11 @@ begin Port[$3C4]:= 2; { Map Mask Register holen } b:= Port[$3c5]; { lesen } Port[$3c5]:= 4; { Plane 2 ein } - CharGen:= CGBuf^; { Zeichengenerator zurck } - Port[$3c5]:= b; { Wert zurck } + CharGen:= CGBuf^; { Zeichengenerator zur�ck } + Port[$3c5]:= b; { Wert zur�ck } end; -procedure ToGraphEGA; { wie oben jedoch Variante fr EGA, } +procedure ToGraphEGA; { wie oben jedoch Variante f�r EGA, } var b: byte; { deren Register nicht lesbar sind } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -205,7 +207,7 @@ begin Port[$3C4]:= 2; { Map Mask Register holen } Port[$3c5]:= 4; { Plane 2 ein } CharGen:= CGBuf^; { Zeichengenerator kopieren } - Port[$3c5]:= 0; { Default zurck } + Port[$3c5]:= 0; { Default zur�ck } end; function InitTextGraf: integer; { ermittelt Monitor, setzt Variablen, } @@ -229,9 +231,9 @@ begin { reserviert Speicher } if VMonitor = other then exit; { was anderes? geht nicht! } InitTextGraf:= 1; { Fehlervorgabe: kein Speicher } if VMonitor in [EGA, VGA] then - begin { Vorgaben fr EGA & VGA } + begin { Vorgaben f�r EGA & VGA } GMode:= $10; { Grafik 640x350 } - if MaxAvail >= sizeof(CGBuf) then { Speicher fr Puffer belegen } + if MaxAvail >= sizeof(CGBuf) then { Speicher f�r Puffer belegen } New(CGBuf) else exit; { raus mit Fehler 1 } @@ -270,7 +272,7 @@ begin end; end; -procedure ToText; { Schaltet in Textmodus, bringt, was berschrieben } +procedure ToText; { Schaltet in Textmodus, bringt, was �berschrieben } begin { wird in Sicherheit } if ModeNr = $FF then NoInitStop; { schon Init ? } GMode:= BMode; { Grafikmodus merken } @@ -283,10 +285,10 @@ begin { wird in Sicherheit } EGA: ToTextEGA; end; {case} if VMonitor = Hercules then - HercTextMode { Hercules Textmodus ohne Bildspeicher l”schen } + HercTextMode { Hercules Textmodus ohne Bildspeicher l�schen } else begin - regs.ax:= TMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l”schen } + regs.ax:= TMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l�schen } intr($10, regs); if (VMonitor = VGA) and (VGATextPal <> nil) then SetVGAColors(VGATextPal^); @@ -299,7 +301,7 @@ procedure ToGraph; { versucht den Grafikmodus zu restaurieren } begin if ModeNr = $FF then NoInitStop; { schon Init ? } TMode:= BMode; - TScreen^:= ScrBuf^; { Grafikinhalt zurck in Textbildschirm fllen } + TScreen^:= ScrBuf^; { Grafikinhalt zur�ck in Textbildschirm f�llen } case VMonitor of VGA: begin if VGATextPal <> nil then @@ -312,7 +314,7 @@ begin HercGraphMode { Hercules handmade Grafikmodus } else begin - regs.ax:= GMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l”schen } + regs.ax:= GMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l�schen } intr($10, regs); if (VMonitor = VGA) and (VGAGraphPal <> nil) then SetVGAColors(VGAGraphPal^); diff --git a/SOURCE/MENU-INT.RO/menu-int.PAS b/SOURCE/MENU-INT.RO/menu-int.PAS index 5944aea..232150d 100644 --- a/SOURCE/MENU-INT.RO/menu-int.PAS +++ b/SOURCE/MENU-INT.RO/menu-int.PAS @@ -1,3 +1,5 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } uses WOWCONST, WOWTPU,crt,textgraf,amn; type lpi = array[0..2] of byte; @@ -71,7 +73,7 @@ begin DirectVideo:= false; case InitTextGraf of -1: begin - writeln(' Dieses Programm l„uft auf Ihrer Grafikkarte leider nicht!'); + writeln(' Dieses Programm l�uft auf Ihrer Grafikkarte leider nicht!'); halt(1); end; 1: begin diff --git a/SOURCE/STAR-INT.RO/COMPILE.BAT b/SOURCE/STAR-INT.RO/COMPILE.BAT index c3db82f..3090dbd 100644 --- a/SOURCE/STAR-INT.RO/COMPILE.BAT +++ b/SOURCE/STAR-INT.RO/COMPILE.BAT @@ -1,2 +1,4 @@ +REM Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) +REM Licensed under the MIT License. See LICENSE file in project root for details. c:\progs\tp\tpc textgraf.pas c:\progs\tp\tpc star-int.pas \ No newline at end of file diff --git a/SOURCE/STAR-INT.RO/TEXTGRAF.PAS b/SOURCE/STAR-INT.RO/TEXTGRAF.PAS index 118cd7c..7d34e78 100644 --- a/SOURCE/STAR-INT.RO/TEXTGRAF.PAS +++ b/SOURCE/STAR-INT.RO/TEXTGRAF.PAS @@ -1,29 +1,31 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } unit TextGraf; interface uses dos; type MonitorTyp = (Hercules, EGA, VGA, other); - VGAColorInfo = array[0..2] of byte; { eine VGA-Farbe: nur fr Demo } + VGAColorInfo = array[0..2] of byte; { eine VGA-Farbe: nur f�r Demo } VGAColors = array[0..255] of VGAColorInfo; { alle VGA-Farben: dito } function InitTextGraf: integer; - { Muá ganz zu Anfang des Programms, noch im Textmodus aufgerufen + { Mu� ganz zu Anfang des Programms, noch im Textmodus aufgerufen werden. Ohne das funktioniert der Rest nicht. Ergebnis 0: Alles Ok, unbekannter Videotyp: -1, zuwenig Speicher: 1 (Bedarf ca. 12Kb) } procedure SetPaletteSave(On: boolean); { Mit On = true nach InitTextGraf und im Textmodus aufrufen. Sichert die - Textpalette und reserviert Speicher fr die Grafikpalette, die dann + Textpalette und reserviert Speicher f�r die Grafikpalette, die dann automatisch verwendet werden. On = false schaltet diese Automatik - wieder ab und gibt den Speicher fr die Paletten (ca. 1.5Kb) frei.} + wieder ab und gibt den Speicher f�r die Paletten (ca. 1.5Kb) frei.} procedure ToText; { Schaltet vom Grafik- in den Testmodus. Bildspeicher etc. werden in Sicherheit gebracht } procedure ToGraph; - { Schaltet in die Grafik zurck. Vorher sollte ein Grafikmodus mit + { Schaltet in die Grafik zur�ck. Vorher sollte ein Grafikmodus mit ToText verlassen worden sein, um alle Werte zu initialisieren } procedure GrafikMode(Mode: byte); - { nur fr das Demoprogramm. Kann gel”scht werden, wenn BGI-Routinen + { nur f�r das Demoprogramm. Kann gel�scht werden, wenn BGI-Routinen (InitGraph) verwendet werden } function GetMonTyp: MonitorTyp; { dito } @@ -38,7 +40,7 @@ type ModeType = (Text, Grafik, unknown); var - regs: registers; { fr intr } + regs: registers; { f�r intr } CharGen: CharGenArray absolute $A000:0; { Adresse Zeichengenerator } BMode: byte absolute $40:$49; { Bios-Videomode } @@ -48,7 +50,7 @@ const TScreen: ^ScreenArray = nil; { zeigt in den Bildspeicher } ScrBuf: ^ScreenArray = nil; { speichert Textschirm zwischen } CGBuf: ^CharGenArray = nil; { speichert Zeichengenerator } - ModeNr: byte = $FF; { Kennung fr Init } + ModeNr: byte = $FF; { Kennung f�r Init } TMode: byte = $FF; { der zu restaurierende Textmodus } GMode: byte = $FF; { dito Grafikmodus } VGATextPal: ^VGAColors = nil; @@ -60,7 +62,7 @@ begin begin AX:= $1A00; { Display Combination abfragen } Intr($10, regs); - IsVga:= (AL = $1A); { gltiger Aufruf } + IsVga:= (AL = $1A); { g�ltiger Aufruf } end; end; @@ -71,7 +73,7 @@ begin AH:= $12; { Funktion $12 } BL:= $10; { get EGA Information } Intr($10, regs); - IsEga:= (BL <> $10); { hat sich was ge„ndert ? } + IsEga:= (BL <> $10); { hat sich was ge�ndert ? } end; end; @@ -110,10 +112,10 @@ end; procedure HercTextMode; var i: integer; ModeReg: byte absolute 0:$465; -const HData: array[0..13] of byte = { Timingdaten! Nicht ver„ndern! } +const HData: array[0..13] of byte = { Timingdaten! Nicht ver�ndern! } ($61,$50,$52,$0f,$19,$06,$19,$19,$02,$0d,$0b,$0c,0,0); begin - port[$3bf]:= 0; { Config Reg: HalfMode: eine Seite (3 fr Full Mode) } + port[$3bf]:= 0; { Config Reg: HalfMode: eine Seite (3 f�r Full Mode) } port[$3b8]:= $21; { Mode Control: Dunkel, Text, 80x25 } for i:= 0 to 13 do { die Timing-Daten komplett } begin @@ -127,10 +129,10 @@ end; procedure HercGraphMode; var i: integer; ModeReg: byte absolute 0:$465; -const HData: array[0..13] of byte = { Timingdaten! Nicht ver„ndern! } +const HData: array[0..13] of byte = { Timingdaten! Nicht ver�ndern! } ($35,$2d,$2e,$07,$5b,$02,$57,$57,$02,$03,0,0,0,0); begin - port[$3bf]:= 1; { Config Reg: HalfMode: eine Seite (3 fr Full Mode) } + port[$3bf]:= 1; { Config Reg: HalfMode: eine Seite (3 f�r Full Mode) } port[$3b8]:= 2; { Mode Control: Dunkel, Grafik, Seite 0 } for i:= 0 to 13 do { die Timing-Daten komplett } begin @@ -141,10 +143,10 @@ begin ModeReg:= $0a; { im BIOS-Ram protokollieren } end; -procedure GrafikMode(Mode: byte); { Setzt den Videomodus, nur fr Demo } +procedure GrafikMode(Mode: byte); { Setzt den Videomodus, nur f�r Demo } var i: integer; begin - if VMonitor <> Hercules then { alle auáer Hercules sind sehr einfach } + if VMonitor <> Hercules then { alle au�er Hercules sind sehr einfach } with regs do begin AX:= Mode; { AH:= 0; AL:= Mode } @@ -157,13 +159,13 @@ begin end; end; -function GetMonTyp: MonitorTyp; { Zugriffsfunktion, nur fr das Demo } +function GetMonTyp: MonitorTyp; { Zugriffsfunktion, nur f�r das Demo } begin GetMonTyp:= VMonitor; end; procedure ToTextVGA; { sichert den Teil des Grafik-Bildspeichers, der } -var b: byte; { vom Zeichengenerator berschrieben wird } +var b: byte; { vom Zeichengenerator �berschrieben wird } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } intr($10, regs); { Bildspeicher bleibt erhalten } @@ -171,10 +173,10 @@ begin b:= Port[$3cf]; { lesen } Port[$3cf]:= 2; { Plane 2 ein } CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } - Port[$3cf]:= b; { Wert zurck } + Port[$3cf]:= b; { Wert zur�ck } end; -procedure ToTextEGA; { wie oben jedoch Variante fr EGA, } +procedure ToTextEGA; { wie oben jedoch Variante f�r EGA, } var b: byte; { deren Register nicht lesbar sind } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -182,10 +184,10 @@ begin Port[$3ce]:= 4; { Read Map Select holen } Port[$3cf]:= 2; { Plane 2 ein } CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } - Port[$3cf]:= 0; { Default zurck } + Port[$3cf]:= 0; { Default zur�ck } end; -procedure ToGraphVGA; { berschreibt den Zeichengenerator mit } +procedure ToGraphVGA; { �berschreibt den Zeichengenerator mit } var b: byte; { gesicherten Grafikinhalt } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -193,11 +195,11 @@ begin Port[$3C4]:= 2; { Map Mask Register holen } b:= Port[$3c5]; { lesen } Port[$3c5]:= 4; { Plane 2 ein } - CharGen:= CGBuf^; { Zeichengenerator zurck } - Port[$3c5]:= b; { Wert zurck } + CharGen:= CGBuf^; { Zeichengenerator zur�ck } + Port[$3c5]:= b; { Wert zur�ck } end; -procedure ToGraphEGA; { wie oben jedoch Variante fr EGA, } +procedure ToGraphEGA; { wie oben jedoch Variante f�r EGA, } var b: byte; { deren Register nicht lesbar sind } begin regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } @@ -205,7 +207,7 @@ begin Port[$3C4]:= 2; { Map Mask Register holen } Port[$3c5]:= 4; { Plane 2 ein } CharGen:= CGBuf^; { Zeichengenerator kopieren } - Port[$3c5]:= 0; { Default zurck } + Port[$3c5]:= 0; { Default zur�ck } end; function InitTextGraf: integer; { ermittelt Monitor, setzt Variablen, } @@ -229,9 +231,9 @@ begin { reserviert Speicher } if VMonitor = other then exit; { was anderes? geht nicht! } InitTextGraf:= 1; { Fehlervorgabe: kein Speicher } if VMonitor in [EGA, VGA] then - begin { Vorgaben fr EGA & VGA } + begin { Vorgaben f�r EGA & VGA } GMode:= $10; { Grafik 640x350 } - if MaxAvail >= sizeof(CGBuf) then { Speicher fr Puffer belegen } + if MaxAvail >= sizeof(CGBuf) then { Speicher f�r Puffer belegen } New(CGBuf) else exit; { raus mit Fehler 1 } @@ -270,7 +272,7 @@ begin end; end; -procedure ToText; { Schaltet in Textmodus, bringt, was berschrieben } +procedure ToText; { Schaltet in Textmodus, bringt, was �berschrieben } begin { wird in Sicherheit } if ModeNr = $FF then NoInitStop; { schon Init ? } GMode:= BMode; { Grafikmodus merken } @@ -283,10 +285,10 @@ begin { wird in Sicherheit } EGA: ToTextEGA; end; {case} if VMonitor = Hercules then - HercTextMode { Hercules Textmodus ohne Bildspeicher l”schen } + HercTextMode { Hercules Textmodus ohne Bildspeicher l�schen } else begin - regs.ax:= TMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l”schen } + regs.ax:= TMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l�schen } intr($10, regs); if (VMonitor = VGA) and (VGATextPal <> nil) then SetVGAColors(VGATextPal^); @@ -299,7 +301,7 @@ procedure ToGraph; { versucht den Grafikmodus zu restaurieren } begin if ModeNr = $FF then NoInitStop; { schon Init ? } TMode:= BMode; - TScreen^:= ScrBuf^; { Grafikinhalt zurck in Textbildschirm fllen } + TScreen^:= ScrBuf^; { Grafikinhalt zur�ck in Textbildschirm f�llen } case VMonitor of VGA: begin if VGATextPal <> nil then @@ -312,7 +314,7 @@ begin HercGraphMode { Hercules handmade Grafikmodus } else begin - regs.ax:= GMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l”schen } + regs.ax:= GMode or $80; { Text, Bit 7 = 1: Bildspeicher nicht l�schen } intr($10, regs); if (VMonitor = VGA) and (VGAGraphPal <> nil) then SetVGAColors(VGAGraphPal^); diff --git a/SOURCE/STAR-INT.RO/star-int.PAS b/SOURCE/STAR-INT.RO/star-int.PAS index 23288a0..333cf99 100644 --- a/SOURCE/STAR-INT.RO/star-int.PAS +++ b/SOURCE/STAR-INT.RO/star-int.PAS @@ -1,3 +1,5 @@ +{ Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) + Licensed under the MIT License. See LICENSE file in project root for details. } {$S-} {$R-} {$G+}