{ >Does anybody know how to write to disk inside a TSR using >turbo pascal? I know all about how to write a simple TSR, >cannot call Dos functions from within a hardware interrupt. Here is parts of a tsr to write to disk when a hotkey is pressed (Leftshift,left alt,right alt) } uses dos,crt; const hotkey : byte = 5; writekey : byte = 10; {write to disk when this combo comes up } var dat : file of word; {keep file definition on globals} procedure diskit; var x,y : word; begin if not cracking then begin cracking := true; {disable checking for hotkey while writing} assign(dat,'a:\dump.scr'); rewrite(Dat); display; for y := 0 to 24 do for x := 0 to 79 do write(dat,wind[X,y]); close(dat); current := 1; {Reset current to 0} cracking := false; end; end; {------------------------------------------------------------} procedure calloldint(sub:pointer); begin {calloldint} inline($9C/$FF/$5E/$06); {Assembly to pop pointer off stack and call it} end; {calloldint} {-------------------------------------------------------------} procedure tick(flags,cs,ip,ax,bx,cx,dx,si,di,ds,es,bp:word); interrupt; var regs:registers; begin calloldint(oldvec); regs.ah := $12; intr($16, regs); statflags := (regs.al and regs.ah) and hotkey; regflags := (regs.al and regs.ah) and writekey; if (statflags = hotkey) and (cnt =0) then begin cnt := 1; display; cnt := 0; end else if (regflags = writekey) and (cnt = 0) then begin cnt := 1; diskit; {write to disk if hotkey} cnt := 0; end else inline($FB); end; {tick} {-----------------------------------------------------} begin {MAIN} writeln('Saving screens function activated'); current := 1; getintvec($08,oldvec); setintvec($08,@tick); getintvec($09,oldkbdvec); setintvec($09,@keyboard); cnt := 0; Cracking := false; keep(0); end. {MAIN} { This will work for writing to disk as long as no other disk activity is being performed. }