• 0

QuickBasic Mouse Driver Question


Question

I have a question on the old QuickBasic Mouse Driver.

First, here it is for refrence:

DECLARE SUB MouseDriver (AX%, bx%, CX%, DX%)
DECLARE FUNCTION MouseInit% ()
DECLARE SUB Mouseshow ()
DECLARE SUB Mousestatus (LB%, RB%, Xmouse%, Ymouse%)
DIM SHARED mouse$

RESTORE

SCREEN 13

  mouse$ = SPACE$(57)

FOR I% = 1 TO 57
  READ A$
  H$ = CHR$(VAL("&H" + A$))
  MID$(mouse$, I%, 1) = H$
NEXT I%

DATA 55,89,E5,8B,5E,0C,8B,07,50,8B,5E,0A,8B,07,50,8B
DATA 5E,08,8B,0F,8B,5E,06,8B,17,5B,58,1E,07,CD,33,53
DATA 8B,5E,0C,89,07,58,8B,5E,0A,89,07,8B,5E,08,89,0F
DATA 8B,5E,06,89,17,5D,CA,08,00
CLS

MS% = MouseInit%
IF NOT MS% THEN PRINT "Mouse not found": LET AMOUSE$ = "NO":
PRINT "Mouse found and initialized":
AMOUSE$ = "YES"

Mouseshow

LOCATE 24, 23: PRINT "any key to exit";

DO
  Mousestatus LB%, RB%, Xmouse%, Ymouse%
  LOCATE 5, 1
  PRINT "Mouse STUFF:  LB:"; LB%, "RB:"; RB%, "X:"; Xmouse%, "Y:"; Ymouse%
LOOP WHILE INKEY$ = ""

SUB MouseDriver (AX%, bx%, CX%, DX%)
  DEF SEG = VARSEG(mouse$)
  mouse% = SADD(mouse$)
  CALL Absolute(AX%, bx%, CX%, DX%, mouse%)
END SUB

SUB MouseHide
 AX% = 2
 MouseDriver AX%, 0, 0, 0
END SUB

FUNCTION MouseInit%
  AX% = 0
  MouseDriver AX%, 0, 0, 0
  MouseInit% = AX%

END FUNCTION

SUB MousePut
  AX% = 4
  CX% = X%
  DX% = Y%
  MouseDriver AX%, 0, CX%, DX%
END SUB

SUB Mouseshow
  AX% = 1
  MouseDriver AX%, 0, 0, 0
END SUB

SUB Mousestatus (LB%, RB%, Xmouse%, Ymouse%)
  AX% = 3
  MouseDriver AX%, bx%, CX%, DX%
  LB% = ((bx% AND 1) <> 0)
  RB% = ((bx% AND 2) <> 0)
  Xmouse% = CX%
  Ymouse% = DX%
END SUB

Heres my question, does anyone have any idea or remember what all the DATA is? I've been trying to figure it out myself. Im not sure if it signals a DOS interrupt or what. This really confuses me beacause I have no idea what it is supposted to represent. Anything would be great thanks.

Link to comment
https://www.neowin.net/forum/topic/133759-quickbasic-mouse-driver-question/
Share on other sites

5 answers to this question

Recommended Posts

  • 0

As for what it is, all you can hope to do is hunt down a good reference for i286 or i386.

FOR I% = 1 TO 57
 READ A$
 H$ = CHR$(VAL("&H" + A$))
 MID$(mouse$, I%, 1) = H$
NEXT I%

This is definently all you care about. I'm not sure what MID does anymore, or val.

Why do you care about such things? If you are geniunely interrrested in low-level functions of a computer assembly is much relevant. In either case, you need to download a reference.

  • 0

No, that's definitely machine code. Probably generated from assembler using MS-DOS's DEBUG.EXE.

SUB MouseDriver (AX%, bx%, CX%, DX%)

All this SUB does is load the parameters into their respective registers (AX, BX, etc) and call INT 33h.

The program doesn't set a custom mouse cursor, it just uses the default that the mouse driver provides.

MID$ extracts a substring from a string, sorta like C's substr.

&H mean hexidecimal, like 0x in C.

VAL converts a string like "-123.45" into a double (64 bit float), but it also supports &H for hex values, like this: "&H4A".

The code above the DATA statements just loads the 2 digit hex numbers as strings, prepends "&H" to them, uses VAL to convert them to numbers, and finally stores the numbers as bytes within the resulting string.

The MouseDriver SUB runs the code in the string using CALL ABSOLUTE, which is the closest thing QB has to function pointers.

This code is meant for Qbasic or maybe even QB 4.5, but I wouldn't recommend using it with QB 7.1 because it's approach won't work well with far strings. You'd be better off using a graphics library like Future.Library, UGL, or DirectQB.

You'll probably have better luck with qbasic-related questions at http://forum.qbasicnews.com/ . It's surprisingly active for such an old language.

Edited by Sterling Christensen
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • NWinfo 1.4.2 by Razvan Serea NWinfo is a lightweight tool designed to give a quick look at your computer's key details, from hardware to software specs, without any fuss. You don't need to install it; just download, run, and see everything you need on one screen. It displays essential info about your CPU, memory, disk drives, network, and even the system's operating details. Since it’s portable, you can carry NWinfo on a USB stick and use it on any Windows machine, making it a handy tool for both tech enthusiasts and troubleshooting. NWinfo key features: Lightweight and portable—no installation required Simple, user-friendly interface for easy navigation Displays detailed CPU information, including model and speed Shows memory (RAM) specifications and usage Provides disk information, including storage capacity and usage Lists network adapters and IP addresses Displays motherboard details, including model and manufacturer Shows system uptime and operating system version Detects graphics card information and driver details Includes battery status for laptops Provides monitor specifications, including resolution and refresh rate Displays BIOS version and other firmware details Offers a summary of active processes and services Generates detailed logs for sharing or troubleshooting Open-source and free, allowing for customization and community support NWinfo 1.4.2 changelog: Add Polish language support Add support for EFI key options Refactor EFI boot menu enumeration Add FACS table parsing Add SMBIOS support for types 37-39 and 42 Note: NWinfo might trigger a few antivirus alerts or show up with warnings on VirusTotal due to its low download frequency. If you have any concerns, you're welcome to review the full source code available on the developer’s repository. Download: NWinfo 1.4.2 | 2.2 MB (Open Source) View: NWinfo Website | NWinfo@GitHub | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • TSMC's trade secret meltdown exposed by internal monitoring by Paul Hill Taiwan Semiconductor Manufacturing Co. (TSMC) has detected unauthorized activities using “comprehensive and robust monitoring mechanisms”. The chip maker said that it believes trade secrets have been leaked as a result and has taken disciplinary action against the personnel involved and initiated legal proceedings explaining that it has a zero-tolerance policy for compromising trade secrets or harming company interests. As the case is under judicial review, it is unable to provide further details about the case. While TSMC is not speaking on the matter, the leak allegedly involves critical proprietary information on 2-nanometer chip development and production. Production of the 2-nanometer chip is among the leading-edge manufacturing processes in the semiconductor industry right now, which explains why an actor would want to steal related information. TSMC is one of the world’s leading chip makers, with companies like Apple and Nvidia being among its clients. It is also the world’s biggest chip maker and among the most advanced. After this leak, the company has reaffirmed its commitment to safeguarding its core business competitiveness and the shared interests of all its employees. The jury is still out on the motivations behind the leaking of the trade secrets, but those involved have been fired, according to Nikkei. TSMC, similarly to Nvidia, has found itself in the geopolitical struggle between China and the US in recent years. As you likely know, the last several years have seen America really go hard after Huawei over national security concerns, and in more recent years, the US has sought to limit China’s access to AI hardware. Earlier this year, Neowin reported that TSMC faces a $1 billion fine for breaching export controls against Huawei. TSMC had made a chip for the Chinese firm Sophgo, but that same chip was later discovered to be used in Huawei's high-end Ascend 910B AI processor. This discovery was made by TechInsights, a Canadian company, and as a result, TSMC stopped shipments to Sophgo, and the US added Sophgo to its blacklist to prevent further circumvention along that route. It will certainly be fascinating to learn more about the motivation for the theft of trade secrets as more information comes to light. Via: CNBC | Image via Depositphotos.com
    • Apple will probably reciprocate by advertising their home products and mocking Google Home's continued debacles.
    • Files still rely on classic windows indexing rather than methods that 'everything' uses. So search is suboptimal. The compression algorithm list is really lacking not comparable to winrar, 7zip and peazip... The gui looks nice, but windhawk is a thing. I don't understand what files brings in 2025. Just a less efficient, less customizable file explorer. https://i.imgur.com/afVKXBj.png
  • Recent Achievements

    • Week One Done
      Zojaji earned a badge
      Week One Done
    • First Post
      Soeaker4thedead earned a badge
      First Post
    • First Post
      kryptickid earned a badge
      First Post
    • First Post
      Nemesis-IV earned a badge
      First Post
    • First Post
      Aidan Helfrich earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      759
    2. 2
      ATLien_0
      187
    3. 3
      +FloatingFatMan
      151
    4. 4
      Xenon
      117
    5. 5
      wakjak
      113
  • Tell a friend

    Love Neowin? Tell a friend!