home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / CURSOR.ZIP / CURSOR.ASM < prev    next >
Assembly Source File  |  1988-05-27  |  2KB  |  98 lines

  1. INCLUDELIB doscalls.lib
  2. .286
  3. .model large
  4. .stack
  5.  
  6. pushc        MACRO    var            ;push macros
  7.     mov ax, var
  8.     push ax
  9.         ENDM
  10.  
  11. push_ptr    MACRO     var
  12.  
  13.     push    ds
  14.     mov ax, offset var
  15.     push ax            
  16.         ENDM    
  17.  
  18. key_status    STRUC                ;structure for kbd data
  19.  
  20. ascii_code    db    ?
  21. scan_code    db    ?
  22. char_status    db    ?
  23. nls_shift    db    ?
  24. shift_state    dw    ?
  25. time_stamp    dd    ?
  26.  
  27. key_status    ENDS
  28.  
  29. .data                
  30.  
  31. cpu_mode        dw             1 dup(?)
  32. key_status_data     key_status        <>
  33.  
  34. message        db    13,10
  35.                db    'Here Is The Large Cursor ...',13,10
  36.         db    'Now Press <ENTER> To Return To CMD.EXE  '
  37. lmessage    dw    $ - offset message
  38.  
  39. .code
  40.      
  41. EXTRN DosExit: far
  42. EXTRN KBDCHARIN: far
  43. EXTRN VioWrtTTY: far
  44. EXTRN VioScrLock: far
  45. EXTRN VioScrUnLock: far
  46. EXTRN DOSPORTACCESS: far, DOSCLIACCESS: far
  47. EXTRN large_cursor: far, DOSGETMACHINEMODE: far
  48.  
  49. set_cursor proc far
  50.  
  51. start:
  52.  
  53.         push_ptr message            ;push pointer
  54.         pushc       lmessage            ;push value
  55.         pushc 0                 ;push handle
  56.         call far ptr VioWrtTTY            ;system write to screen
  57.  
  58.         push_ptr cpu_mode            ;space for mode info
  59.         call far ptr DOSGETMACHINEMODE        ;required call for I/O
  60.  
  61.         call far ptr DOSCLIACCESS        ;allow sti/cli
  62.  
  63.         pushc    0                ;handle
  64.         pushc    0                ;get gate pass
  65.         pushc    03d4H                ;CRTC ADDR
  66.         pushc    03d5H                ;CRTC DATA
  67.         call far ptr DOSPORTACCESS        ;open gate
  68.  
  69.         call far ptr large_cursor        ;call the I/O routine
  70.  
  71.         pushc    0                ;handle
  72.         pushc    1                ;release gate pass
  73.         pushc    03d4H
  74.         pushc    03d5H
  75.         call far ptr DOSPORTACCESS        ;close gate
  76.  
  77.         push_ptr key_status_data        ;pointer to kbd data
  78.         pushc    00                ;wait for char to arrive
  79.         pushc    00                ;handle
  80.         call far ptr KBDCHARIN            ;call keyboard
  81.  
  82.         xor ax,ax                ;no_error exit
  83.  
  84.         pushc 1                 ;standard exit
  85.         pushc 0
  86.         call far ptr DosExit            ;exit application
  87.  
  88. set_cursor endp
  89.  
  90. PUBLIC set_cursor
  91.  
  92. end  start
  93.      
  94.  
  95.  
  96.      
  97. 
  98.