From 91bbfc05fbd57d0a6bd03f0080e4b7c2c01e58fa Mon Sep 17 00:00:00 2001 From: Stefan Koelle <50440224+skoelle@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:58:23 +0100 Subject: [PATCH] Add files via upload initial commit --- COMPILE.BAT | 1 + MOD-OBJ.OBJ | Bin 0 -> 13076 bytes PHO.EXE | Bin 0 -> 157808 bytes PHO.PAS | 431 +++++++++++++++++++++++++++++++++++++++++++++++++++ PHO.RSC | Bin 0 -> 9900 bytes PHOFNT.OBJ | Bin 0 -> 64490 bytes PHOPAL.OBJ | Bin 0 -> 824 bytes PHOPIC.OBJ | Bin 0 -> 64490 bytes PHO_U.PAS | 11 ++ PHO_U.TPU | Bin 0 -> 65376 bytes PHO_U2.PAS | 8 + PHO_U2.TPU | Bin 0 -> 64544 bytes TEXTGRAF.PAS | 323 ++++++++++++++++++++++++++++++++++++++ TEXTGRAF.TPU | Bin 0 -> 6192 bytes 14 files changed, 774 insertions(+) create mode 100644 COMPILE.BAT create mode 100644 MOD-OBJ.OBJ create mode 100644 PHO.EXE create mode 100644 PHO.PAS create mode 100644 PHO.RSC create mode 100644 PHOFNT.OBJ create mode 100644 PHOPAL.OBJ create mode 100644 PHOPIC.OBJ create mode 100644 PHO_U.PAS create mode 100644 PHO_U.TPU create mode 100644 PHO_U2.PAS create mode 100644 PHO_U2.TPU create mode 100644 TEXTGRAF.PAS create mode 100644 TEXTGRAF.TPU diff --git a/COMPILE.BAT b/COMPILE.BAT new file mode 100644 index 0000000..be68d81 --- /dev/null +++ b/COMPILE.BAT @@ -0,0 +1 @@ +c:\progs\tp\tpc pho.pas \ No newline at end of file diff --git a/MOD-OBJ.OBJ b/MOD-OBJ.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..b49430509c8ad9cdb80a2c926b8600665b0f2d29 GIT binary patch literal 13076 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 P;92lIR(;&qZ?^p({v(19 literal 0 HcmV?d00001 diff --git a/PHO.EXE b/PHO.EXE new file mode 100644 index 0000000000000000000000000000000000000000..a7c3c835f30fbefaa42b6a5dba1c26e3d1cd062e GIT binary patch literal 157808 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
  • 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�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 literal 0 HcmV?d00001 diff --git a/PHO.PAS b/PHO.PAS new file mode 100644 index 0000000..32ea494 --- /dev/null +++ b/PHO.PAS @@ -0,0 +1,431 @@ +{$A-,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S-,V-,X-} +{$M 16384,0,59360} +uses crt,textgraf,pho_u,pho_u2; +const rot:array[0..1] of integer=(1,0); + VERSION='1.3'; + FADE_SPEED=10; + TANZ=10; + text:array[1..6*TANZ] of string[30]=('PRESENTS' + ,'WELCOME' + ,'---------------' + ,'' + ,'PC INTRO BY' + ,'STEFAN KOELLE' + ,'[[[[[[[[[[' + ,'[ PHOBIA [' + ,'[ 1994 [' + ,'[ """""" [' + ,'[ BY NST [' + ,'[[[[[[[[[[' + ,'' + ,'CREDITS' + ,'------' + ,'CODING BY' + ,'STEFAN' + ,'' + ,'' + ,'CREDITS' + ,'------' + ,'GFX BY' + ,'STEFAN' + ,'' + ,'' + ,'CREDITS' + ,'------' + ,'MUSIC' + ,'RIPPED' + ,'' + ,'' + ,'CREDITS' + ,'------' + ,'IDEA FROM AN' + ,'AMIGA DEMO' + ,'' + ,'' + ,'SPECIAL GREETINGS' + ,'----------------' + ,'MAD DOC' + ,'M T L' + ,'' + ,'' + ,'NORMAL GREETINGS' + ,'---------------' + ,'SATAN CLAUS' + ,'MAJ-SOFT' + ,'' + ,'' + ,'INFO' + ,'-------' + ,'CODED 1994' + ,'ON 486 DX50' + ,'' + ,'' + ,'BYE BYE' + ,'------' + ,'PRESS ANY' + ,'KEY' + ,''); +var + dev,mix,stat,pro,loop : integer; + md : string; + i,txtz,txti,j,x,y,k:integer; + r,ri:real; + rb:boolean; + w:word; + p:vgacolors; + l:vgacolors; + cyc:array[0..2] of byte; + cy2:array[0..2,1..10] of byte; + s:string; + ch:char; + font : array[1..57,0..15,0..17] of byte; +{$L MOD-obj.OBJ} { Link in Object file } +{$F+} { force calls to be 'far'} +procedure modvolume(v1,v2,v3,v4:integer); external ; {Can do while playing} +procedure moddevice(var device:integer); external ; +procedure modsetup(var status:integer;device,mixspeed,pro,loop:integer;var str:string); external ; +procedure modstop; external ; +procedure modinit; external; +{$F-} +procedure ch_pal; +var x,y,i,j:integer; +begin + inc(k); + if k=3 then begin + k:=0; + for i:=0 to 2 do cyc[i]:=p[94,i]; + for j:=93 downto 80 do + for i:=0 to 2 do p[j+1,i]:=p[j,i]; + for i:=0 to 2 do p[80,i]:=cyc[i]; + end; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do cy2[i,x+y*5]:=p[16+x-1+y*25+20,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for j:=1 to 4 do + for i:=0 to 2 do p[35+x+y*25-j*5+5,i]:=p[35+x+y*25-j*5,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do p[16+x-1+y*25,i]:=cy2[i,(x+rot[y]*5)]; + ri:=ri+1; + if ri>372 then ri:=ri-372; + if sin(ri*6.3)*15<0 then begin + r:=r-sin(ri*6.3)*15; + rb:=FALSE; + end else begin + r:=r+sin(ri*6.3)*15; + rb:=TRUE; + end; + if r>20 then begin + r:=r-20; + if rb then begin + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do cy2[i,x+y*5]:=p[20+(x-1)*5+y*25,i]; + for y:=0 to 1 do + for j:=1 to 4 do + for x:=1 to 5 do + for i:=0 to 2 do p[20+(x-1)*5+y*25-j+1,i]:=p[20+(x-1)*5+y*25-j,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do p[20+(x-1)*5+y*25-4,i]:=cy2[i,x+rot[y]*5]; + end else begin + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do cy2[i,x+y*5]:=p[16+(x-1)*5+y*25,i]; + for y:=0 to 1 do + for j:=1 to 4 do + for x:=1 to 5 do + for i:=0 to 2 do p[16+(x-1)*5+y*25+j-1,i]:=p[16+(x-1)*5+y*25+j,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do p[20+(x-1)*5+y*25,i]:=cy2[i,x+rot[y]*5]; + end; + end; +end; +procedure writeline(wly : integer; wls : string); +var i,x,y,num,wlx:integer; +begin + wlx:=160-length(wls)*9+14; + for i:=1 to length(wls) do + for x:=0 to 15 do for y:=0 to 17 do begin + if wls[i]<>' ' then begin + case wls[i] of + 'A'..'Z':num:=ord(wls[i])-64; + '0'..'9':num:=ord(wls[i])-19; + '*':num:=39; + '"':num:=40; + '!':num:=41; + '$':num:=42; + ':':num:=43; + '.':num:=44; + ',':num:=45; + '\':num:=46; + '?':num:=47; + '-':num:=48; + '+':num:=49; + '=':num:=50; + '[':num:=51; + ']':num:=52; + '%':num:=53; + '(':num:=54; + ')':num:=55; + end; + if font[num,x,y]<>0 then mem[$A000:(wly+y)*word(320)+wlx+x+(i-1)*16]:=font[num,x,y]; + end; + end; +end; +procedure writeback(wly : integer; wls : string); +var i,x,y,num,wlx:integer; +begin + wlx:=160-length(wls)*9+14; + for i:=1 to length(wls) do + for x:=0 to 15 do for y:=0 to 17 do begin + if wls[i]<>' ' then begin + case wls[i] of + 'A'..'Z':num:=ord(wls[i])-64; + '0'..'9':num:=ord(wls[i])-19; + '*':num:=39; + '"':num:=40; + '!':num:=41; + '$':num:=42; + ':':num:=43; + '.':num:=44; + ',':num:=45; + '\':num:=46; + '?':num:=47; + '-':num:=48; + '+':num:=49; + '=':num:=50; + '[':num:=51; + ']':num:=52; + '%':num:=53; + '(':num:=54; + ')':num:=55; + end; + if (font[num,x,y]<>0) then mem[$A000:(wly+y)*word(320)+wlx+x+(i-1)*16] + :=mem[seg(phopic):ofs(phopic)+(wly+y)*word(320)+wlx+x+(i-1)*16]; + end; + end; +end; +procedure CLI; inline( $FA ); { Interrupts unterdrcken } +procedure STI; inline( $FB ); { Interrupts wieder erlauben } +begin + CLI; + modinit; + clrscr; + writeln('PHOB­A Intro'); + writeln('------------'); + writeln; + writeln('F1 -PC Speaker (10000 kHz)'); + writeln('F2 -PC Speaker (20000 kHz)'); + writeln('F3 -SoundBlaster (10000 kHz)'); + writeln('F4 -SoundBlaster (20000 kHz)'); + writeln('F5 -D/A Wandler (10000 kHz)'); + writeln('F6 -D/A Wandler (20000 kHz)'); + writeln('F7 -Disney Source (10000 kHz)'); + writeln('F8 -Disney Source (20000 kHz)'); + writeln('F9 -PC Speaker (????? kHz)'); + writeln('F10-SoundBlaster (????? kHz)'); + writeln('ESC-No Sound'); + writeln; + writeln('Press F1-F10 or ESC...'); + i:=1; + repeat + ch:=readkey; + if ch=#27 then begin + i:=0; + dev:=255; + end; + if ch='+' then begin + clrscr; + writeln('Intro by: Stefan Koelle of Phobia * Version '+VERSION); + writeln('Intro skipped !!!'); + STI; + halt(1); + end; + if ch=#0 then begin + ch:=readkey; + if (ord(ch)>58) and (ord(ch)<69) then i:=0; + end; + until i=0; + case ord(ch) of + 59:begin + dev := 0; + mix := 10000; + end; + 60:begin + dev := 0; + mix := 20000; + end; + 61:begin + dev := 7; + mix := 10000; + end; + 62:begin + dev := 7; + mix := 20000; + end; + 63:begin + dev := 1; + mix := 10000; + end; + 64:begin + dev := 1; + mix := 20000; + end; + 65:begin + dev := 11; + mix := 10000; + end; + 66:begin + dev := 11; + mix := 20000; + end; + 67:begin + dev := 0; + writeln; + write('Enter Sample-Frequence (<=44000 kHz): '); + readln(mix); + end; + 68:begin + dev := 7; + writeln; + write('Enter Sample-Frequence (<=20000 kHz): '); + readln(mix); + end; + end; + if (dev<>255) then begin + if paramcount=1 then begin + md:=paramstr(1); + end else begin + md:='pho.rsc'; + end; + pro := 0; {Leave at 0} + loop :=4; {4 means mod will play forever} + modvolume (255,255,255,255); { Full volume } + end; + case InitTextGraf of + 1: begin end; + end; + GrafikMode($13); + for w:=0 to 63999 do mem[$A000:w]:=0; + for i:=0 to 255 do for j:=0 to 2 do + l[i,j]:=0; + setvgacolors(l); + for w:=0 to 63999 do mem[$A000:w]:=mem[seg(phofnt):ofs(phofnt)+w]; + for j:=0 to 1 do for i:=0 to 18 do + for x:=0 to 15 do for y:=0 to 17 do + font[i+j*19+1,x,y]:=mem[$A000:(y+j*18+1)*word(320) + x+i*16]; + j:=2; for i:=0 to 18 do + for x:=0 to 15 do for y:=0 to 17 do + font[i+j*19+1,x,y]:=mem[$A000:(y+j*18+2)*word(320) + x+i*16]; + for w:=0 to 63999 do mem[$A000:w]:=mem[seg(phopic):ofs(phopic)+w]; + for i:=1 to 6 do + writeline(53+i*20,text[i]); + + move(mem[seg(phopal):ofs(phopal)],p,sizeof(p)); + k:=0;ri:=0;r:=0; + for x:=(40 div FADE_SPEED) downto 0 do begin + ch_pal; + for i:=0 to 255 do for j:=0 to 2 do begin + l[i,j]:=p[i,j]-x*FADE_SPEED; + if l[i,j]>p[i,j] then l[i,j]:=0; + end; + repeat until port[$3da] and 8 = 8; + setvgacolors(l); + end; + ch:='@'; + txtz:=0;txti:=0; + if (dev<>255) then modsetup ( stat, dev, mix, pro, loop, md ); + STI; + repeat + inc(txtz); + if txtz>150 then begin + txtz:=0; + j:=txti; + inc(txti); + if txti=TANZ then txti:=0; + for i:=1 to 6 do begin + ch_pal; + setvgacolors(p); + writeback(53+i*20,text[i+j*6]); + ch_pal; + setvgacolors(p); + writeline(53+i*20,text[i+txti*6]); + end; + end; + inc(k); + if k=3 then begin + k:=0; + for i:=0 to 2 do cyc[i]:=p[94,i]; + for j:=93 downto 80 do + for i:=0 to 2 do p[j+1,i]:=p[j,i]; + for i:=0 to 2 do p[80,i]:=cyc[i]; + end; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do cy2[i,x+y*5]:=p[16+x-1+y*25+20,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for j:=1 to 4 do + for i:=0 to 2 do p[35+x+y*25-j*5+5,i]:=p[35+x+y*25-j*5,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do p[16+x-1+y*25,i]:=cy2[i,(x+rot[y]*5)]; + ri:=ri+1; + if ri>372 then ri:=ri-372; + if sin(ri*6.3)*15<0 then begin + r:=r-sin(ri*6.3)*15; + rb:=FALSE; + end else begin + r:=r+sin(ri*6.3)*15; + rb:=TRUE; + end; + if r>20 then begin + r:=r-20; + if rb then begin + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do cy2[i,x+y*5]:=p[20+(x-1)*5+y*25,i]; + for y:=0 to 1 do + for j:=1 to 4 do + for x:=1 to 5 do + for i:=0 to 2 do p[20+(x-1)*5+y*25-j+1,i]:=p[20+(x-1)*5+y*25-j,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do p[20+(x-1)*5+y*25-4,i]:=cy2[i,x+rot[y]*5]; + end else begin + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do cy2[i,x+y*5]:=p[16+(x-1)*5+y*25,i]; + for y:=0 to 1 do + for j:=1 to 4 do + for x:=1 to 5 do + for i:=0 to 2 do p[16+(x-1)*5+y*25+j-1,i]:=p[16+(x-1)*5+y*25+j,i]; + for y:=0 to 1 do + for x:=1 to 5 do + for i:=0 to 2 do p[20+(x-1)*5+y*25,i]:=cy2[i,x+rot[y]*5]; + end; + end; + repeat until port[$3da] and 8 = 8; + setvgacolors(p); + until keypressed; + ch:=readkey; + CLI; + if (dev<>255) then modstop; + for x:=1 to (40 div FADE_SPEED) do begin + ch_pal; + for i:=0 to 255 do for j:=0 to 2 do begin + if p[i,j]bk7c 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 literal 0 HcmV?d00001 diff --git a/PHOFNT.OBJ b/PHOFNT.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..76954713247cc0f2fc3418683b50a1cf4b611b62 GIT binary patch literal 64490 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 aYtLVKcKGj|WYcMEMBp2LB01-{7Xu zJCA!W@7;mNFjs}Ib@)96bvS)|au_D82z<|5-)G>3=daUwe*}gf6?mc!t#Dn}LL#ZP zsfCe~8e_?c*f$ufOvhLy>no+AD2n4aNs=tf@;on!qAbg%Y1+2!`(A4;`$G;(c!pOn z%nT2P%CUIq*uG39BT3hIhaGHT10B4;6IAf%QUxqrb`F`n@sGdq0`ecin-7;?={PF^ literal 0 HcmV?d00001 diff --git a/PHOPIC.OBJ b/PHOPIC.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..c8c6eef9059027df40a75028d33ba9bb13bd7e25 GIT binary patch literal 64490 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�A95YfL~prD<PBeZT&Y7L0qiCX@*{#q1O&o1^{ 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 literal 0 HcmV?d00001 diff --git a/PHO_U2.PAS b/PHO_U2.PAS new file mode 100644 index 0000000..7c8a119 --- /dev/null +++ b/PHO_U2.PAS @@ -0,0 +1,8 @@ +unit pho_u2; +INTERFACE +procedure phofnt; +IMPLEMENTATION +procedure phofnt;external +{$L phofnt.obj}; +begin +end. \ No newline at end of file diff --git a/PHO_U2.TPU b/PHO_U2.TPU new file mode 100644 index 0000000000000000000000000000000000000000..887161a19cfa99bb51a5999c19db5a9f550e0a95 GIT binary patch literal 64544 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 literal 0 HcmV?d00001 diff --git a/TEXTGRAF.PAS b/TEXTGRAF.PAS new file mode 100644 index 0000000..118cd7c --- /dev/null +++ b/TEXTGRAF.PAS @@ -0,0 +1,323 @@ + unit TextGraf; +interface +uses dos; +type + MonitorTyp = (Hercules, EGA, VGA, other); + VGAColorInfo = array[0..2] of byte; { eine VGA-Farbe: nur fr Demo } + VGAColors = array[0..255] of VGAColorInfo; { alle VGA-Farben: dito } + + function InitTextGraf: integer; + { 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 + automatisch verwendet werden. On = false schaltet diese Automatik + wieder ab und gibt den Speicher fr 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 + ToText verlassen worden sein, um alle Werte zu initialisieren } + + procedure GrafikMode(Mode: byte); + { nur fr das Demoprogramm. Kann gel”scht werden, wenn BGI-Routinen + (InitGraph) verwendet werden } + function GetMonTyp: MonitorTyp; + { dito } + procedure SetVGAColors(var Colors: VGAColors); + { dito } +implementation + + +type + ScreenArray = array[0..3999] of word; { Bildspeicher bei 80x25 } + CharGenArray = array[0..8191] of byte; { Zeichengenerator } + ModeType = (Text, Grafik, unknown); + +var + regs: registers; { fr intr } + CharGen: CharGenArray absolute $A000:0; { Adresse Zeichengenerator } + BMode: byte absolute $40:$49; { Bios-Videomode } + +const + VModus: ModeType = unknown; + VMonitor: MonitorTyp = other; { Vorgabe: nichts gutes } + TScreen: ^ScreenArray = nil; { zeigt in den Bildspeicher } + ScrBuf: ^ScreenArray = nil; { speichert Textschirm zwischen } + CGBuf: ^CharGenArray = nil; { speichert Zeichengenerator } + ModeNr: byte = $FF; { Kennung fr Init } + TMode: byte = $FF; { der zu restaurierende Textmodus } + GMode: byte = $FF; { dito Grafikmodus } + VGATextPal: ^VGAColors = nil; + VGAGraphPal: ^VGAColors = nil; + +function IsVga: boolean; { haben wir VGA } +begin + with regs do + begin + AX:= $1A00; { Display Combination abfragen } + Intr($10, regs); + IsVga:= (AL = $1A); { gltiger Aufruf } + end; +end; + +function IsEGA: boolean; { liegt wenigstens EGA vor } +begin + with regs do + begin + AH:= $12; { Funktion $12 } + BL:= $10; { get EGA Information } + Intr($10, regs); + IsEga:= (BL <> $10); { hat sich was ge„ndert ? } + end; +end; + +procedure GetVGAColors(var Colors: VGAColors); +begin + with regs do + begin + ax:= $1017; + bx:= 0; + cx:= 255; + es:= seg(Colors); + dx:= ofs(Colors); + intr($10, regs); + end; +end; + +procedure SetVGAColors(var Colors: VGAColors); +begin + with regs do + begin + ax:= $1012; + bx:= 0; + cx:= 255; + es:= seg(Colors); + dx:= ofs(Colors); + intr($10, regs); + end; +end; + +procedure NoInitStop; +begin + writeln('TextGraph ist nicht initialisiert! Benutzen Sie InitTextGraph!'); + halt(2); +end; + +procedure HercTextMode; +var i: integer; + ModeReg: byte absolute 0:$465; +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[$3b8]:= $21; { Mode Control: Dunkel, Text, 80x25 } + for i:= 0 to 13 do { die Timing-Daten komplett } + begin + port[$3b4]:= i; { Index Laden (Register einblenden) } + port[$3b5]:= HData[i]; { Wert schreiben } + end; + port[$3b8]:= $29; { ModeControl: Hell, Text, 80x25 } + ModeReg:= $29; { im BIOS-Ram protokollieren } +end; + +procedure HercGraphMode; +var i: integer; + ModeReg: byte absolute 0:$465; +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[$3b8]:= 2; { Mode Control: Dunkel, Grafik, Seite 0 } + for i:= 0 to 13 do { die Timing-Daten komplett } + begin + port[$3b4]:= i; { Index Laden (Register einblenden) } + port[$3b5]:= HData[i]; { Wert schreiben } + end; + port[$3b8]:= $0a; { ModeControl: Hell, Grafik, Seite 0 } + ModeReg:= $0a; { im BIOS-Ram protokollieren } +end; + +procedure GrafikMode(Mode: byte); { Setzt den Videomodus, nur fr Demo } +var i: integer; +begin + if VMonitor <> Hercules then { alle auáer Hercules sind sehr einfach } + with regs do + begin + AX:= Mode; { AH:= 0; AL:= Mode } + Intr($10, regs); + end + else + begin + HercGraphMode; + fillchar(ptr($B000,0)^, $8000, 0); { Clearscreen } + end; +end; + +function GetMonTyp: MonitorTyp; { Zugriffsfunktion, nur fr das Demo } +begin + GetMonTyp:= VMonitor; +end; + +procedure ToTextVGA; { sichert den Teil des Grafik-Bildspeichers, der } +var b: byte; { vom Zeichengenerator berschrieben wird } +begin + regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } + intr($10, regs); { Bildspeicher bleibt erhalten } + Port[$3ce]:= 4; { Read Map Select holen } + b:= Port[$3cf]; { lesen } + Port[$3cf]:= 2; { Plane 2 ein } + CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } + Port[$3cf]:= b; { Wert zurck } +end; + +procedure ToTextEGA; { wie oben jedoch Variante fr EGA, } +var b: byte; { deren Register nicht lesbar sind } +begin + regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } + intr($10, regs); { Bildspeicher bleibt erhalten } + Port[$3ce]:= 4; { Read Map Select holen } + Port[$3cf]:= 2; { Plane 2 ein } + CGBuf^:= CharGen; { Grafikinhalt von Zeichengenerator sichern } + Port[$3cf]:= 0; { Default zurck } +end; + +procedure ToGraphVGA; { berschreibt den Zeichengenerator mit } +var b: byte; { gesicherten Grafikinhalt } +begin + regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } + intr($10, regs); { Bildspeicher bleibt erhalten } + 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 } +end; + +procedure ToGraphEGA; { wie oben jedoch Variante fr EGA, } +var b: byte; { deren Register nicht lesbar sind } +begin + regs.ax:= $90; { Standardmodus setzen um Zugriff sicherzustellen } + intr($10, regs); { Bildspeicher bleibt erhalten } + Port[$3C4]:= 2; { Map Mask Register holen } + Port[$3c5]:= 4; { Plane 2 ein } + CharGen:= CGBuf^; { Zeichengenerator kopieren } + Port[$3c5]:= 0; { Default zurck } +end; + +function InitTextGraf: integer; { ermittelt Monitor, setzt Variablen, } +begin { reserviert Speicher } + InitTextGraf:= 0; + if ModeNr <> $FF then exit; { wurde schon aufgerufen, alles ok } + InitTextGraf:= -1; { Fehlervorgabe: falsche Karte } + if IsEGA then VMonitor:= EGA; { EGA ? } + if IsVGA then VMonitor:= VGA; { oder VGA ? } + TMode:= BMode and $7f; + if TMode = 7 then + begin + TScreen:= ptr($B000,0); { Bildspeicheradresse Text mono setzen } + if VMonitor = other then { keines von beiden: } + begin + VMonitor:= Hercules; { dann Hercules, (evtl Probleme mit CGA-Mono)} + GMode:= 7; { Modi alle 7 } + end; + end else + TScreen:= ptr($B800,0); { Bildspeicheradresse Text farbig setzen } + 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 } + GMode:= $10; { Grafik 640x350 } + if MaxAvail >= sizeof(CGBuf) then { Speicher fr Puffer belegen } + New(CGBuf) + else + exit; { raus mit Fehler 1 } + end; + if MaxAvail >= sizeof(ScrBuf) then { noch mehr } + New(ScrBuf) + else + exit; { raus mit Fehler 1 } + ModeNr:= TMode; { Initialisierung merken } + InitTextGraf:= 0; { alles ok } +end; + +procedure SetPaletteSave(On: boolean); + { aktiviert oder deaktiviert die automatische Palettensicherung } +begin + if ModeNr = $FF then NoInitStop; { schon Init ? } + if On then + begin + if VGATextPal = nil then { gibts schon ? } + new(VGATextPal); { nein, neu } + if VGAGraphPal = nil then { dito Grafikpalette } + new(VGAGraphPal); + GetVGAColors(VGATextPal^); { Textfarben holen } + end else + begin + if VGATextPal <> nil then { was da ? } + begin + dispose(VGATextPal); { freigeben } + VGATextPal:= nil; { und kennzeichnen } + end; + if VGAGraphPal <> nil then { andere auch } + begin + dispose(VGAGraphPal); + VGAGraphPal:= nil; + end; + end; +end; + +procedure ToText; { Schaltet in Textmodus, bringt, was berschrieben } +begin { wird in Sicherheit } + if ModeNr = $FF then NoInitStop; { schon Init ? } + GMode:= BMode; { Grafikmodus merken } + case VMonitor of + VGA: begin + if VGAGraphPal <> nil then + GetVGAColors(VGAGraphPal^); + ToTextVGA; { Zeichengeneratorbereich sichern } + end; + EGA: ToTextEGA; + end; {case} + if VMonitor = Hercules then + HercTextMode { Hercules Textmodus ohne Bildspeicher l”schen } + else + begin + 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^); + end; + scrbuf^:= TScreen^; { Grafikinhalt von Textschirm sichern } + VModus:= Text; +end; + +procedure ToGraph; { versucht den Grafikmodus zu restaurieren } +begin + if ModeNr = $FF then NoInitStop; { schon Init ? } + TMode:= BMode; + TScreen^:= ScrBuf^; { Grafikinhalt zurck in Textbildschirm fllen } + case VMonitor of + VGA: begin + if VGATextPal <> nil then + GetVGAColors(VGATextPal^); + ToGraphVGA; { dito Zeichengenerator } + end; + EGA: ToGraphEGA; + end; {case} + if VMonitor = Hercules then + HercGraphMode { Hercules handmade Grafikmodus } + else + begin + 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^); + end; + VModus:= Grafik; +end; + +end. diff --git a/TEXTGRAF.TPU b/TEXTGRAF.TPU new file mode 100644 index 0000000000000000000000000000000000000000..53681bdccd40e86762280e0af2ee7b03937f427f GIT binary patch literal 6192 zcmcIoeQ;FO6+iELce6=0F(kpNY@|i3RTBnK7}NyVO=2LsdAkr(p%rbAvM_w%Zp1YFr4p9yL)nu;E z9)t6;bQp~O!0^p}^O$J5O)%5UUp5@`9W2iYYMFUala9>do0gb6+iM&a-94df;+|}) z-;yM{fB!jRT|I85CzDNVBF%-Cr!qtxkEu<&A{$ek?b(!{?MW{*-ls|mcD5kS z7?0w520-ahTf$$rX+t8zG&RyzqP2yWEb19)YqMIa*rlCR7BWm{m3>B66!dke4Jp69 zGnpCzK3d$AMQV%-STpbYbb+3cZMwpNOy>72U*%T`@s2=F=moPD7#>=J< z{dAil5qotmLxhvl-mx*Y9y=|CNY)E1Vg-gc%sYi!6ItX1Il=CrJYM7rqMnJu@?uO3 zx}6ocrP?@B?jUuz2K!8-sOVs*%DmQ{uQFG`aH60x-{nNmdgmfNEAmx%UxGO=TPM7g zc9m#um3P73?kt|M2hjoVuz4P|uCmNJKauEc@%@&b?^wv6t!e{mDuaYKFCsD#>3yI> zB)YDx#c$OzZ%ir124+)6 z^r|iW5Kz*224gv|I4HcVij=|Iy=K2pA*ol68EXM??WUxGJkzNX;=Q)-tZQXj1hfx} zG&bm{?YnGGr*Bk%$nko}@*NZy$`Iif%n`$PS_Q)$z&t~?A3=d}kkBDUHPEY_z#uNI zaoaBggOogT)PiG62?r|KY0rR%5DB9FC=S(s+)+}lc&ovTI7Nusus(7*#wdEDSolaA z_|F#kS(!mn_%8jeSd6|a=S^mbjV=%>ML38uibR)=nM{1a&O|y>e12rIDd@ikY%L|d zHOuxWpNSkO4j|Ee;D2Ne|FHWby`^uon^T1jmrtR`T;F3Ul$F(sR^iAa(@xv^mTU_O zBSgP(XC9E{psLyra`{Wp5$JNZL2{vt*a74}=NM7pU60=7p^P{qMv!-TBVv^FE^owg z&|TW)eI?LtvlZ97)Ng8!#OHpKeb!-s5qphHSRJZTB)ft7Y4NCID^;Lh540L<%|hV- z_PRi4+(1;y=25VIJdfz#OGHnI=wjqoAJww$5M�=&9Po0)uV5Ne)5|6>obA#TgJsiU+&RV@Tel zJ_DFH>vg?`0nk>-XO3}kx=Tn)HAAC@Z5pOE2 zF4&O*?7}`$89h5s`lYzD%D`1DfF_8mF}y zJ^*+%Xgs(Tcm%LUEosJuNZoq$Z3un#;WOX3JIXD~hyE?;mdtiJELNl8pv5gOCr^Fv z)>D`9PR2~ANM;h1$DHxw!-Tixuolp?Q1Chwv?vMF*+$n223_JgIubtB}Jxo(+# zMvzaIBK!H^r|(iZRiJW17TG+Zn^8Zb)J1fP)FH%pxipw z=5I71sxz3>hyC;nrVkLrIQ@aHrwS+HM5EX<>cLksqhTjTPE|F&d;D@8&k@W1MRgRx z*%^-E&xH1>kb055Oc<&SW{6sLIBc07c?fHyJQkq^j_C`-O^RW`91gVsTTQfS_~TKN ze#p}&&YN#>q^{1#(#MFd>lW%Z{KrH*Ezrq9`)OVQ4qpT;(Y5u2&6duPtuB>ywX8dj>}i|s%=SK-Yu&SL z_l|g9e=feW?|~h;c;C*xT;H~b`uh8N_v9MlYkPMNG*JRYQiccrw%2j#$LB3pBkJxw4Z3~*Vg0{ zgHz=LALnmmJ~Zhwrd67!|G*cPW!$@)OspJ&G%mt=T1o3ykf^S2EF6Hicg{TbX4#Y;uDpB;Q z1eH`Mm{_lQatjM95k)*jC30NBq|fHitue>EV#MJJ99m-z)CJ1IMHAQxZ;he+K?Z2R zVN??YqC;~#l$|#Rt_t)-l%5KRsF`|?1|gMX&L6y)*3B#X|2LVfGq%1Br`0g6V8&2i z&IGkB?N=^z7cMl*%c4XpZob94*X-^t%}oi zL2n-Zb_0$BZUKA_a2p`sQ2PLNJjO#KS%a;Qxf`$2fj-U|r4m2dtq*THjKQzggp(1lH1Wf%W+Hq3mkW_@u_8PDNiQ^r!LQ zA3Up0%`B*7Y=~p^9rQ9n^Bq3cgmywVr+eJlFsH ze#YoJ;WxN%VNWgp`U0${FX{C%ZTD?}yYZ~X^C+I6E?P0a4-ftg47p13b>H-8_*LCM zUlY1Ps!pm|7x-&P`B%+;$uG