|
|
1.1 ! root 1: ;*** _int33h - simple program to call the mouse interput hex 33 ! 2: ;* ! 3: ;* Passed in [bp+4] is the offset in ds of a six word ! 4: ;* array containing the data to place in ax,bx,cx, and ! 5: ;* dx for the int 33h. An int 33h is then called ! 6: ;* and ax,bx,cx and dx are returned in the same array. ! 7: ;* To call from C, store the registers you wish to pass ! 8: ;* in a near array and call like this: ! 9: ;* ! 10: ;* int33h (®isters); ! 11: ;* ! 12: ; ! 13: _TEXT SEGMENT BYTE PUBLIC 'CODE' ! 14: _TEXT ENDS ! 15: _DATA SEGMENT WORD PUBLIC 'DATA' ! 16: _DATA ENDS ! 17: CONST SEGMENT WORD PUBLIC 'CONST' ! 18: CONST ENDS ! 19: _BSS SEGMENT WORD PUBLIC 'BSS' ! 20: _BSS ENDS ! 21: DGROUP GROUP CONST, _BSS, _DATA ! 22: ASSUME CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP ! 23: _TEXT SEGMENT ! 24: PUBLIC _int33h ! 25: _int33h PROC NEAR ! 26: push bp ! 27: mov bp,sp ! 28: push di ! 29: push si ! 30: mov si,WORD PTR [bp+4] ; (ds:si) = array of passed registers ! 31: mov ax,[si] ; load registers for int ! 32: mov bx,[si+2] ! 33: mov cx,[si+4] ! 34: mov dx,[si+6] ! 35: int 33h ! 36: mov [si],ax ; load in returned registers ! 37: mov [si+2],bx ! 38: mov [si+4],cx ! 39: mov [si+6],dx ! 40: pop si ! 41: pop di ! 42: mov sp,bp ; exit ! 43: pop bp ! 44: ret ! 45: _int33h ENDP ! 46: _TEXT ENDS ! 47: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.