(* =========================================================================== BBS: Canada Remote Systems Date: 05-28-93 (05:36) Number: 8641 From: LOU DUCHEZ Refer#: NONE To: KURT TAN Recvd: NO Subj: CURSOR CONTROL Conf: (58) PASCAL --------------------------------------------------------------------------- KT>Can someone tell me how to make the cursor in Turbo Pascal disappear and KT>appear? Whah, sher, li'l pardner. There is *no* function to turn off the cursor per se in Pascal or among the BIOS interrupts. However, you can change the appearance of the cursor, making it span 0 pixels (as opposed to the usual 2). And to this purpose, I've included some of my favorite cursor routines, stored in a prize Unit of mine. To define a cursor, you need to store the format in a word. The standard cursor for, say, CGA is $8786 (I think); the "6" and "7" say that the cursor starts at pixel 7 and ends at pixel 6. The eights mean that there are eight pixels to be messing with -- honestly that's a guess, I've never seen it in a book anywhere. For VGA and Hercules, I'm pretty sure you have 15 pixels to work with; the normal cursor there is something like $fefc (something like that -- I'm working off CGA, so it's hard for me to test that theory). In either case, no matter the graphics system, a good way to turn off the cursor is to set it to $ffff. *) procedure cursoff; const ffff: word = $ffff; { Turns the cursor off. Stores its format for later redisplaying. } begin asm mov ah, 03h mov bh, 00h int 10h mov crstyp, cx { global variable -- for later retrieval } mov ah, 01h mov cx, ffff int 10h end; end; procedure curson; { Turns the cursor back on, using the cursor display previously stored. } begin asm mov ah, 01h mov cx, crstyp { previously-stored cursor format } int 10h end; end; function getcursor: word; { Returns the cursor format. } var tempword: word; begin asm mov ah, 03h mov bh, 00h int 10h mov tempword,cx end; getcursor := tempword; end; procedure setcursor(curstype: word); { Sets the cursor format. } var tempword: word; begin tempword := curstype; asm mov ah, 01h mov cx,tempword int 10h end; end;