Path: utzoo!utgpu!watmath!watdragon!trillium!bamcpherson From: bamcpherson@trillium.waterloo.edu (Brent McPherson) Newsgroups: comp.sys.ibm.pc Subject: Cursor question, Int 0x10 service 0x03 Keywords: insert cursor, problem, certain machines Message-ID: <9821@watdragon.waterloo.edu> Date: 19 Nov 88 21:10:51 GMT Sender: daemon@watdragon.waterloo.edu Distribution: comp Lines: 40 Hi, I calculate a half-height insert cursor from the information received through interrupt 0x10, service 0x03. What I do is take the old cursors bottom scan line, divide this by two. This now becomes the new top scan line of the insert cursor. eg. regs.h.ah = 0x03; /* read cursor position */ intr( 0x10, ®s ); /* perform video interrupt */ old_cursor = regs.x.cx; /* save normal cursor */ ins_cursor = (((old_cursor & 0xff) >> 1) << 8) + (old_cursor & 0xff); The cursor is set by using interrupt 0x10, service 0x01 and the cursor (old or ins) is stored into CX. There seems to a problem on certain machines. (the plain IBM PC with a monochrome monitor I think) Basically instead of getting a half-height insert cursor you get a cursor in the middle of the character. Also a mode change using "mode" seems to correct the problem. normal desired actual cursor ins cursor ins cursor +----+ +----+ +----+ | | | | | | | | |####| |####| |####| |####| | | +----+ +----+ +----+ I do not have access to a machine where the problem occurs and cannot investigate this problem. Does anyone know if this a known bug? Am I doing something wrong? Has anyone else had this problem? This code is called from within a TSR. Thanks in advance, -- Brent