Unit MyCrt; { Ez a junit egy CRT-ut nzat, els‹dlegesen az‚rt ¡r¢dott, mert a billentyûzetkezel‹ fggv‚nyekre volt szks‚gem. Ehhez meg nem akartam az eg‚sz Runtime error 200-as, newdelay-es m¢k z st elk”vetni. } INTERFACE Function KeyPressed: Boolean; Function ReadKey: Char; { Eddig teh t teljesen meg¡rtam, ugyan£gy haszn lhat¢, mint a CRT-beli. } Procedure GotoXY(X, Y: Byte); Function WhereX: Byte; Function WhereY: Byte; Procedure ClrScr; Procedure Delay(MS: Word); { Ezek m r igencsak nincsenek kidolgozva : - 3-as video-m¢d (sz¡nes, 80x25-”s, HGC-n nem megy) - 0- s video-lap - sz¡nkezel‚s teljes hi nya - delay nem v r semmit ;) - ablakokr¢l nem is hallott } Const WindMax : Word = 24*256+79; Var TextAttr : Byte; { Ezek is csak a tesztel‚shez kellettek. } IMPLEMENTATION Var SpecKey : Char; Function KeyPressed; Label UgordAt; Begin If (SpecKey=#0) Then Asm Mov Byte ptr [@Result],0 Mov Ah,1 Int 16h Jz UgordAt Mov Byte ptr [@Result],1 UgordAt: End else KeyPressed:=True; End; Function ReadKey; Label Non_Spec_Key; Begin If (SpecKey=#0) then Asm Sub Ah,Ah Int 16h Mov Byte ptr [@Result],Al Or Al,Al Jnz Non_Spec_Key Mov Byte ptr [SpecKey],Ah Non_Spec_Key: End else Begin ReadKey:=SpecKey; SpecKey:=#0; End; End; Procedure GotoXY; Begin Asm Mov Dh,Byte ptr [y] Dec Dh Mov Dl,Byte ptr [x] Dec Dl Mov Ah,2 Sub Bh,Bh Int 10h End End; Function WhereX; Begin WhereX:=Mem[$40:$50]+1; End; Function WhereY; Begin WhereY:=Mem[$40:$51]+1; End; Procedure ClrScr; Assembler; Asm Mov Ax,3 Int 10h End; Procedure Delay; Begin End; {############################################################################} Procedure ChgClr(TxtAttr:byte); Begin Asm Mov Ah,9 Sub Cx,Cx Sub Bx,Bx Mov Bl,Byte ptr [TxtAttr] Int 10h End End; Procedure Write; Procedure Ki(c:Char); Begin Asm Mov Al, Byte ptr [c] Int 29h End; End; Var i : byte; Begin { For i:=1 to length(s) do Ki(s[i]);} { Asm Sub Cx,Cx Mov Si,Offset(s) Cld LodsB Mov Cl,Al MegEgyet: LodsB Int 29h Loop MegEgyet End} End; BEGIN SpecKey:=#0; END.