function More: string; var Prompt: char; begin More:=''; if Pause and (Lines=mem[$40:$84]) then begin write('Continue - [Y]es, [N]o? '); Prompt:=ReadKey; writeln(upcase(Prompt)); if Prompt in ['N','n'] then halt(0) Lines:=0 end; inc(Lines) end; {More} Pause and Lines are both global variables. Since I call the function from many other functions/procedures I decided it would be less work then passing them through. Pause is simple a flag deciding whether or not you want pausing or not. You may not want to take the same action I did when the user doesn't want to continue. The mem command looks at memory location 0040:0084 which contains the number of lines on the screen. This prevents the need to check what mode the screen is in. Anyways, the way I used it is as follows: writeln(More,'What ever you may want to display'); Since functions are executed first, it determines wheter or not to display the line or prompt to continue. Hope that helps... (assuming you can figure out my explanations)