123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- {
- System independent low-level video interface for os/2
- $Id$
- }
- uses viocalls;
- var videobuf:Pvideobuf;
- videobufsize:cardinal;
- lastcursortype:word=crunderline;
- cell_width,cell_height:word;
- {$ASMMODE ATT}
- procedure update_cell_size;
- begin
- {This function cannot fail when you the default handle is used.}
- viogetdevicecellsize(cell_height,cell_width,0);
- end;
- procedure initvideo;
- begin
- initvideocalled:=true;
- {Get the address of the videobuffer.}
- if viogetbuf(videobuf,videobufsize,0)=0 then
- begin
- update_cell_size;
- sethighbitblink;
- setcursortype(lastcursortype);
- end
- else
- errcode:=errvioinit;
- end;
- procedure setcursorpos(newcursorx,newcursory:word);
- begin
- if viosetcurpos(newcursory,newcursorx,0)<>0 then
- {Do not set an error code; people should fix invalid newcursorx or
- newcursory values when designing, there is no need for detecting
- these errors at runtime.}
- runerror(225);
- end;
- function getcursortype:word;
- var cd:Tviocursorinfo;
- begin
- viogetcurtype(cd,0); {Never fails, because handle is default handle.}
- if cd.attr=-1 then
- getcursortype:=crhidden
- else
- {Because the cursor's start and end lines are returned, we'll have
- to guess heuristically what cursor type we have.}
- case cd.cend-cd.ystart of
- 0:
- {Propably this does not occur, but you'll never know.}
- getcursortype:=crhidden;
- 1..cell_height div 4:
- getcursortype=crunderline;
- cell_height div 4..cell_height div 2:
- getcursortype:=crhalfblock;
- else
- getcursortype:=crblock;
- end;
- end;
- procedure setcursortype;
- begin
- end;
- procedure donevideo;
- begin
- If initvideocalled then
- begin
- lastcursortype:=getcursortype;
- clearscreen;
- setcursortype(crunderline);
- setcursorpos(0,0);
- initvideocalled:=false;
- videobufsize:=0;
- end;
- end;
- function GetCapabilities: Word;
- begin
- GetCapabilities := $3F;
- end;
- procedure SetCursorPos(NewCursorX, NewCursorY: Word);
- begin
- end;
- function GetCursorType: Word;
- begin
- end;
- procedure SetCursorType(NewType: Word);
- begin
- end;
- function DefaultVideoModeSelector(const VideoMode: TVideoMode; Params: Longint): Boolean;
- begin
- end;
- procedure ClearScreen;
- begin
- end;
- procedure UpdateScreen(Force: Boolean);
- begin
- if LockUpdateScreen<>0 then
- exit;
- if not force then
- begin
- asm
- movl VideoBuf,%esi
- movl OldVideoBuf,%edi
- movl VideoBufSize,%ecx
- shrl $2,%ecx
- repe
- cmpsl
- orl %ecx,%ecx
- jz .Lno_update
- movb $1,force
- .Lno_update:
- end;
- end;
- if Force then
- begin
- dosmemput(videoseg,0,videobuf^,VideoBufSize);
- move(videobuf^,oldvideobuf^,VideoBufSize);
- end;
- end;
- procedure RegisterVideoModes;
- begin
- RegisterVideoMode(40, 25, False, DefaultVideoModeSelector, $00000000);
- RegisterVideoMode(40, 25, True, DefaultVideoModeSelector, $00000001);
- RegisterVideoMode(80, 25, False, DefaultVideoModeSelector, $00000002);
- RegisterVideoMode(80, 25, True, DefaultVideoModeSelector, $00000003);
- end;
- {
- $Log$
- Revision 1.1 2000-02-23 22:44:22 daniel
- * Video.inc for os/2
- Revision 1.4 1998/12/15 17:17:17 peter
- + cursor at 1,1 at the end
- Revision 1.3 1998/12/12 19:13:01 peter
- * keyboard updates
- * make test target, make all only makes units
- Revision 1.2 1998/12/10 11:41:50 florian
- * cursor is properly restored in DoneVideo
- Revision 1.1 1998/12/04 12:48:27 peter
- * moved some dirs
- Revision 1.4 1998/11/01 20:29:11 peter
- + lockupdatescreen counter to not let updatescreen() update
- Revision 1.3 1998/10/28 21:18:26 peter
- * more fixes
- Revision 1.2 1998/10/28 00:02:08 peter
- + mouse
- + video.clearscreen, video.videobufsize
- Revision 1.1 1998/10/26 11:31:47 peter
- + inital include files
- }
|