format ELF include "public_stdcall.inc" section '.text' executable public_stdcall _msys_get_irq_owner,4 ;arg1 - irq mov edx,ebx mov eax,41 mov ebx,[esp+4] int 0x40 mov ebx,edx ret 4 public_stdcall _msys_get_data_read_by_irq,12 ;arg1 - irq ;arg2 - *size ;arg3 - data mov edx,ebx mov eax,42 mov ebx,[esp+4] int 0x40 cmp ecx,2 jz .not_an_owner push ecx mov ecx,[esp+16] test ecx,ecx jz .ignore_data mov [ecx],bl .ignore_data: mov ecx,[esp+12] mov [ecx],eax pop eax mov ebx,edx ret 12 .not_an_owner: mov eax,2 mov ebx,edx ret public_stdcall _msys_send_data_to_device,8 ;arg1 - port ;arg2 - data mov edx,ebx mov eax,63 mov ebx,[esp+8] mov ecx,[esp+4] int 0x40 mov ebx,edx ret 8 public_stdcall _msys_receive_data_from_device,8 ;arg1 - port ;arg2 - data mov edx,ebx mov eax,43 mov ecx,[esp+4] add ecx,0x80000000 int 0x40 mov ecx,[esp+8] mov [ecx],bl mov ebx,edx ret 8 public_stdcall _msys_program_irq,8 ;arg1 - intrtable ;arg2 - irq mov edx,ebx mov eax,44 mov ebx,[esp+4] mov ecx,[esp+8] int 0x40 mov ebx,edx ret 8 public_stdcall _msys_reserve_irq,4 ;arg1 - irq mov edx,ebx mov eax,45 xor ebx,ebx mov ecx,[esp+4] int 0x40 mov ebx,edx ret 4 public_stdcall _msys_free_irq,4 ;arg1 - irq mov edx,ebx mov eax,45 xor ebx,ebx inc ebx mov ecx,[esp+4] int 0x40 mov ebx,edx ret 4 public_stdcall _msys_reserve_port_area,8 ;arg1 - start ;arg2 - end push ebx mov eax,46 xor ebx,ebx mov ecx,[esp+8] mov edx,[esp+12] int 0x40 pop ebx ret 8 public_stdcall _msys_free_port_area,8 ;arg1 - start ;arg2 - end push ebx mov eax,46 xor ebx,ebx inc ebx mov ecx,[esp+8] mov edx,[esp+12] int 0x40 pop ebx ret 8