From Henrik Lohse Q. How does INT 33, AX = 9 work? How can I create my own character bitmaps to make my own cursor shapes? A. The Inputs : AX = 9 BX = rel. pos. to left corner of image CX = rel. pos. to upper corner of image ES : DX pointer to a 64 Byte-Field in memory the data in ES:DX should be stored like that : ; hand anddata dw 0f3ffh,0edffh,0e1ffh,0e1ffh,0e1ffh,0e049h,0e000h,0e000h dw 08000h,00000h,00000h,00000h,00000h,00000h,00000h,08001h ordata dw 00c00h,01200h,01200h,01200h,01200h,013b6h,01249h,01249h dw 07249h,09001h,09001h,09001h,08001h,08001h,08001h,07ffeh The ordata-part makes the shape of the cursor. Binary it looks : ordata dw 0000110000000000b ; the '1' will form the shape dw 0001001000000000b ; BX should be 4 or 5 or 6 dw 0001001000000000b ; CX should be 0 or 1 dw 0001001000000000b ; (I don't know whether it starts dw 0001001000000000b ; with 1 or 0 ... ) dw 0001001110110110b dw 0001001001001001b dw 0001001001001001b dw 0111001001001001b dw 1001000000000001b dw 1001000000000001b dw 1001000000000001b dw 1000000000000001b dw 1000000000000001b dw 1000000000000001b dw 0111111111111110b The anddata-part forms the background-mixing. Binary : anddata dw 1111001111111111b ; under a '0' there will no background be dw 1110110111111111b ; visible dw 1110000111111111b ; under the '1' you will see the bg dw 1110000111111111b dw 1110000111111111b dw 1110000001001001b dw 1110000000000000b dw 1110000000000000b ... Here are some predefined cursorshapes : ; hour-glass data dw 00000h,00000h,00000h,08001h,0c003h,0e007h,0f00fh,0e007h dw 0c003h,08001h,00000h,00000h,00000h,00000h,00000h,00000h dw 00000h,07ffeh,06006h,0300ch,01818h,00c30h,00660h,003c0h dw 00660h,00c30h,01998h,033cch,067e6h,07ffeh,00000h,00000h ; arrow data dw 03fffh,01fffh,00fffh,007ffh,003ffh,001ffh,000ffh,0007fh dw 0003fh,0001fh,001ffh,010ffh,030ffh,0f87fh,0f87fh,0fc3fh dw 00000h,04000h,06000h,07000h,07800h,07c00h,07e00h,07f00h dw 07f80h,07fc0h,07c00h,04600h,00600h,00300h,00300h,00180h ; clock data dw 0e007h,0e007h,0e007h,0e007h,0c003h,08001h,08001h,08001h dw 08001h,08001h,0c003h,0e007h,0e007h,0e007h,0e007h,0e007h dw 00ff0h,00ff0h,00ff0h,00ff0h,01008h,02084h,02084h,02086h dw 02f86h,02004h,02004h,01008h,00ff0h,00ff0h,00ff0h,00ff0h All this stuff only works with 16 x 16 b/w cursors, I don't know if or how it's possible to create bigger or colored ones. Hope I was helpful ... C'ya Henne