{ display a grabbed screen stored at a memory location pointed to by } { [[0:38]:0], which is effectively the beginning of the segment in } { which the interrupt 9 handler is located } program Get_Grabbed_Screen; uses Dos, Crt; var ch : char; { char for pausing } Backup : array [1..4000] of byte; { temp store of screen } BufferSeg, { segment of buffer in memory } VideoSeg : word; { segment of screen in memory } begin if (Mem[$0040:$0010] and $30)=$30 { set screen segment ... } then VideoSeg:=$B000 { ... for monochrome } else VideoSeg:=$B800; { ... or other screens } Move (Mem[VideoSeg:0], Backup, 4000); { backup screen to memory buffer } BufferSeg:=MemW[0:38]; { get segment of interrupt 9 } Move (Mem[BufferSeg:0], Mem[VideoSeg:0], 4000); { show buffer } ch:=Readkey; { pause } Move (Backup, Mem[VideoSeg:0], 4000); { restore screen } end.