I was working on a Interrupt bitmap viewer I found at Pete's QB site. It would load a Screen 13 bitmap fast, but failed with large images because the programmer had assigned the following trick to integer variables.
offset% = VAL("&H" + HEX$(320& * y%))
To transfer the memory offset to place a row of pixel attributes, Interrupt uses the DS register that cannot be more than a signed integer value. I changed all values to LONG as below and it worked. The example below uses the maximum 320 by 200 values and return different values:
offset& = 320& * 200& 'result over 32767 when y& = 200 max
offset& = VAL("&H" + HEX$(320& * 200&)) ' result is within Integer range (negative in this case)
So if you need to send offset values over Integer ranges, try this trick. Otherwise, QB gives an overflow error.
|Response Title||Author and Date|
|Where did you find this program?||Ben on Jan 23, 8:34 AM|
|* Interrupts are just as good as ASM buddy||on Jan 23, 11:24 PM|