{ > If you're not using the CRT unit, that should write through the ansi > driver just fine. I don't know about the codes you used, but they > won't be written directly to video memory. If you're using the CRT > unit then he's right, it won't work without a slight modification. >My whole point behind this was that you DON'T need CRT to > clear the screen like this. You only need ANSI.SYS loaded. you don't even need ANSI.SYS if you 'cheat' like borland did -=B-) } procedure clrscr; assembler; Asm MOV AX, 0600h {BIOS Scroll Up} { <<---- !!!!!! } MOV BH, 07h {Mono Attribute} XOR CX, CX {top left = 0,0} MOV DX, 184fh {bottom right = 24,79} INT 10h {BIOS interrupt} { do the clear } MOV AH, 02h {BIOS Set Cursor Position} { now let's } XOR DX, DX {DH = Row = 00, DL = Col = 00} XOR BH, BH {Do it on Page 0} { move the cursor to } INT 10h {BIOS Interrupt} { the top left corner } End; { yeah, it's hardcoded for 25 lines and 80 columns } uses DOS; procedure clrscr; var regs : registers; Begin regs.AX := $0600; {BIOS Scroll Up} { <<---- !!!!!! } regs.BH := $07; {Mono Attribute} regs.CX := $0000; {top left = 0,0} regs.DX := $184F; {bottom right = 24,79} INTR($10, regs); {BIOS interrupt} { do the clear } regs.AH := $02; {BIOS Set Cursor Position} { now let's } regs.DX := $0000; {DH = Row = 00, DL = Col = 00} regs.BH := $0000; {Do it on Page 0} { move the cursor to } INTR($10, regs); {BIOS Interrupt} { the top left corner } End; end;