{ SG> Anybody know how to place a character at 80,25 in text mode without SG> scrolling the screen? TIA } USES Crt; var ScreenHeight : byte; { screen height in characters (rows) } ScreenWidth : word; { screen width in characters (columns) } Screen : pointer; { screen pointer } { some usef00l routines } Function ScrReadChar(X,Y : BYTE) : CHAR; assembler; Asm LES DI,Screen XOR AH,AH MOV AL,Y DEC AX MUL ScreenWidth SHL AX,1 XOR DH,DH MOV DL,X SHL DX,1 DEC DX DEC DX ADD AX,DX MOV DI,AX MOV AL,BYTE PTR [ES:DI] {ScrReadChar := Char(Ptr(Seg(Screen^), (Y - 1) * ScreenWidth * 2 + (X * 2) - 2)^)} End; { ScrReadChar } Procedure ScrWriteChar(X,Y : BYTE; Ch : CHAR); assembler; Asm LES DI,Screen XOR AH,AH MOV AL,Y DEC AX MUL ScreenWidth SHL AX,1 XOR DH,DH MOV DL,X SHL DX,1 DEC DX DEC DX ADD AX,DX MOV DI,AX MOV AL,Ch MOV BYTE PTR [ES:DI],AL {Char(Ptr(Seg(Screen^), (Y - 1) * ScreenWidth * 2 + (X * 2) - 2)^) := Ch} End; { ScrWriteChar } Function ScrReadAttr(X,Y : BYTE) : BYTE; assembler; Asm LES DI,Screen XOR AH,AH MOV AL,Y DEC AX MUL ScreenWidth SHL AX,1 XOR DH,DH MOV DL,X SHL DX,1 DEC DX ADD AX,DX MOV DI,AX MOV AL,BYTE PTR [ES:DI] {ScrReadAttr := TTextAttr(Ptr(Seg(Screen^), (Y - 1) * ScreenWidth * 2 + (X * 2) - 1)^)} End; { ScrReadAttr } Procedure ScrWriteAttr(X,Y,Color : BYTE); assembler; Asm LES DI,Screen XOR AH,AH MOV AL,Y DEC AX MUL ScreenWidth SHL AX,1 XOR DH,DH MOV DL,X SHL DX,1 DEC DX ADD AX,DX MOV DI,AX MOV AL,Color MOV BYTE PTR [ES:DI],AL {TTextAttr(Ptr(Seg(Screen^), (Y - 1) * ScreenWidth * 2 + (X * 2) - 1)^) := Color} End; { ScrWriteAttr } { and finally in your program... } Begin { initialize ScreenHeight, ScreenWidth and Screen... } if LastMode = Mono then Screen := Ptr($B000, 0) else Screen := Ptr($B800, 0); if (LastMode and Font8x8) <> 0 then ScreenHeight := Mem[$0040:$0084] else ScreenHeight := 25; ScreenWidth := MemW[$0040:$004A]; { do whatever you want, for example: } ScrWriteChar(ScreenWidth, ScreenHeight, 'A'); ScrWriteAttr(ScreenWidth, ScreenHeight, LightGray ); End.