home *** CD-ROM | disk | FTP | other *** search
- PROGRAM TSRdemo;
-
- {$M $0800,0,0}
-
- USES crt,dos,tsr;
-
- CONST DemoPgmName : string[16] = 'TSR Demo Program';
-
- VAR
- lst :text;
- textfile :text;
- InsStr :string;
-
- FUNCTION ioerror :boolean;
-
- VAR i:word;
- BEGIN
- i:=ioresult;
- ioerror:=false;
- if i<>0 then begin
- writeln('I/O Error No. ',i);
- ioerror:=true;
- end;
- end;
-
- {$F+} FUNCTION DemoTasks : word; {$F-}
- const
- filename : string[14] = ' :\TSRDemo.Dat';
- endpos = 40;
- wx1 = 15; wy1 = 2; wx2 = 65; wy2 = 23;
- VAR
- key,drv : char;
- done,ioerr : boolean;
- inputpos,rownumb : integer;
- dosver : word;
- inputstring : string;
-
- procedure clearline;
- begin
- inputstring:='';inputpos:=1;
- gotoxy(1,whereY);clreol;
- end;
-
- begin
- demotasks:=0;
- window(wx1,wy1,wx2,wy2);
- textcolor(black);
- textbackground(lightgray);
- lowvideo;
- clrscr;
- writeln;
- writeln(' Example Terminate & Stay-Resident (TSR) program');
- writeln(' --written with Turbo Pascal 5.5 and uses TSRUnit.');
- window(wx1+1,wy1+4,wx2-1,wy1+12);
- textcolor(lightgray);
- textbackground(black);
- clrscr;
- writeln;
- writeln(' Function Key Definitions:');
- writeln(' [F1] Write message to TSRDEMO.DAT');
- writeln(' [F2] Write message to printer.');
- writeln(' [F3] Read from saved screen.');
- writeln(' [F8] Exit and insert text.');
- writeln(' [F10] Exit from TSR and keep it.');
- write( ' or simply echo your input.');
-
- window(wx1+1,wy1+14,wx2-1,wy2-1);
- clrscr;
- writeln('TSRUnit Version: ',hi(TSRVersion):8,'.',lo(tsrversion):2);
- writeln('Video Mode, Page:',tsrmode:4,tsrpage:4);
- writeln('Cursor Row, Col.:',tsrrow:4,tsrcolumn:4);
-
- dosver := dosversion;
- writeln('DOS Version: ',lo(dosver):8,'.',hi(dosver):2);
-
- inputstring :='';
- inputpos :=1;
- done :=false;
-
- REPEAT
- gotoxy(inputpos,wherey);
- key:=readkey;
- if key=#0 then begin
- key:=readkey;
- case key of
-
- #71: inputpos:=1;
- #75: if inputpos>1 then dec(inputpos);
- #77: if (inputpos < length(inputstring))
- or ((inputpos = length(inputstring))
- and (inputpos<endpos)) then inc(inputpos);
- #79: begin
- inputpos:=succ(length(inputstring));
- if inputpos>endpos then inputpos:=endpos;
- end;
-
- #83: begin
- delete(inputstring, inputpos, 1);
- write(copy(inputstring,inputpos,endpos), ' ');
- end;
-
- #59: begin
- clearline;
- repeat
- write('Enter disk drive: ',filename[1]);
- drv:=upcase(readkey);writeln;
- if drv<>#13 then filename[1]:=drv;
- writeln('Specifying an invalid drive will cause your ');
- write('system to crash. Use drive ',filename[1],':? [y/N] ');
- key:=upcase(readkey);writeln(key);
- until key = 'Y';
- writeln('Writing to ',filename);
- {$I-}
- assign(textfile,filename);
- if not ioerror then begin
- rewrite(textfile);
- if not ioerror then begin
- writeln(textfile,'File was written by TSRDemo.');
- ioerr:=ioerror;
- close(textfile);
- ioerr:=ioerror;
- end;
- end;
- {$I+}
- writeln('Completed file operation.');
- end;
-
- #60: begin
- clearline;
- writeln('Check printer status, then print if okay.');
- if printerokay then begin
- assign(lst,'LPT1');
- rewrite(lst);
- writeln(lst,'Printing performed from TSRDemo');
- close(lst);
- end
- else writeln('Printer is not ready.');
- writeln('Completed print operation.');
- end;
-
- #61: begin
- clearline;
- case tsrmode of
- 0..3,
- 7:begin
- {$I-}
- repeat
- writeln('Enter row number [1-25] from');
- write('which to copy characters: ');
- readln(rownumb);
- until not ioerror;
- {$I+}
- if rownumb<=0 then rownumb:=1;
- if rownumb>25 then rownumb:=25;
- writeln(screenlinestr(rownumb));
- end;
- else writeln('Not valid for graphics modes.');
- end;
- end;
- #66: begin
- clearline;
- writeln('Enter characters to insert.');
- writeln('Up to 255 characters may be inserted.');
- writeln('Terminate input string by pressing [F8].');
- insstr:='';
- repeat
- key:=readkey;
- if key=#0 then begin
- key:=readkey;
- if key=#66 then done:=true;
- end
- else begin
- if length(insstr)<pred(sizeof(insstr)) then
- begin
- if key=#13 then writeln
- else write(key);
- insstr:=insstr+key;
- end
- else done:=true
- end;
- until done;
- demotasks:=length(insstr);
- tsrchrptr:=@Insstr[1];
- end;
- #68: done:=true;
-
- end;
- end
- else begin
- case key of
-
- #08: begin
- if inputpos>1 then begin
- dec(inputpos);
- delete(inputstring,inputpos,1);
- gotoxy(inputpos,wherey);
- write(copy(inputstring,inputpos,endpos),' ');
- end;
- end;
- #13: begin
- writeln;
- inputstring:='';
- inputpos:=1;
- end;
- #27: clearline
- else
- if length(inputstring)>=endpos then
- delete(inputstring,endpos,1);
- insert(key,inputstring,inputpos);
- write(copy(inputstring,inputpos,endpos));
- if inputpos<endpos then
- inc(inputpos);
- end;
- end;
- until done;
- end;
-
- begin
- tsrinstall(demopgmname,demotasks,altkey,'E');
- end.
-