QB&MOUSE3.BAS SUB AssemblyCode (ax, bx, cx, dx) SHARED asm() asm(1) = ax: asm(2) = bx: asm(3) = cx: asm(4) = dx 'Data In DEF SEG = VARSEG(asm(1)) 'Address Of Start Of Assembly Code CALL absolute(VARPTR(asm(5))) 'NB EXECUTABLE CODE STARTS IN asm(5) DEF SEG 'Restore Address To Continue QBASIC Program ax = asm(1): bx = asm(2): cx = asm(3): dx = asm(4) 'Results Out END SUB SUB MouseLimits (left, Right, top, bottom, col, row) CALL AssemblyCode(7, 0, 8 * (left - 1), 8 * (Right - 1)) 'Column Range CALL AssemblyCode(8, 0, 8 * (top - 1), 8 * (bottom - 1)) 'Row Range CALL AssemblyCode(4, 0, 8 * (col - 1), 8 * (row - 1)) 'Place Cursor END SUB SUB PressClick (press$, click, cx, dx, presses, releases) CALL AssemblyCode(1, 0, 0, 0) 'Show Mouse Cursor DO: CALL AssemblyCode(3, bx, cx, dx) 'bx=Button cx,dx=Position click = bx: press$ = INKEY$ 'Left click=1, Right click=2 LOOP UNTIL click > 0 OR press$ <> "" 'Exit At Any Click Or Press s! = TIMER: delay = 0 'Start Of Time Delay DO: IF s! <> TIMER THEN s! = TIMER: delay = delay + 1 LOOP UNTIL delay >= 8 'Time Delay = delay/18 Seconds Approximately 'For ax = 5 & 6 Button Numbers are 1 less than click bx = click - 1: CALL AssemblyCode(5, bx, 0, 0): presses = bx bx = click - 1: CALL AssemblyCode(6, bx, 0, 0): releases = bx CALL AssemblyCode(2, 0, 0, 0) 'Hide Mouse Cursor END SUB