SHOW:
|
|
- or go back to the newest paste.
1 | - | DECLARE FUNCTION AddrOfSetUEvent& |
1 | + | UEVENT ON: ON UEVENT GOSUB EventISR |
2 | ' *** Create ISR code for events *** | |
3 | - | DEFLNG L |
3 | + | DIM iSeg AS INTEGER, iOff AS INTEGER |
4 | - | DEFINT I |
4 | + | lPev = AddrOfSetUEvent 'lib call to get ptr for qb internal func |
5 | IF lPev = 0 THEN PRINT "addr of SetUEvent failed...": END '<- safety | |
6 | - | lPev = AddrOfSetUEvent '<- asm that return seg:off of SetUEvent() |
6 | + | lSeg = (((lPev AND &HFFFF0000) \ &H10000) AND &HFFFF&) |
7 | lOff = (lPev AND &HFFFF&) | |
8 | - | 'split seg/off |
8 | + | PRINT HEX$(lSeg) + ":" + HEX$(lOff) '<-prints seg:off of SetUEvent |
9 | - | iSeg = (CINT((lPev AND &HFFFF0000) \ &H10000)) |
9 | + | lSeg = lSeg * 256&: lOff = lOff * 256& |
10 | - | iOff = (lPev AND &HFFFF&) |
10 | + | |
11 | 'inlined assembly hehe' | |
12 | - | CLS |
12 | + | lsr(0) = &H90000068 + lSeg 'push 0000h / nop |
13 | lsr(1) = &H60000068 + lOff 'push 0000h / pusha | |
14 | - | UEVENT ON |
14 | + | lsr(2) = &H5EFFEC8B 'mov bp,sp / call far [bp+10h] |
15 | - | ON UEVENT GOSUB Load |
15 | + | lsr(3) = &HE620B010 'mov al,20 / out 20,al |
16 | lsr(4) = &HC4836120 'popa / add sp, 4 | |
17 | - | DO |
17 | + | lsr(5) = &HCF04 'iret |