Fix int 0x80 from different segment
This commit is contained in:
25
polio.s
25
polio.s
@@ -40,8 +40,13 @@ dosdbt: # assumes es=0
|
||||
|
||||
.section .text.int80stuff
|
||||
|
||||
# near copy [param 2] bytes, es:[param 0] -> es:[param 1]
|
||||
# near copy [param 2] bytes, ds:[param 0] -> ds:[param 1]
|
||||
copy:
|
||||
mov ax, [bp-14] # ds
|
||||
mov es, ax
|
||||
mov ds, ax
|
||||
mov cl, 4
|
||||
shl si, cl
|
||||
mov si, [bp+0] # source
|
||||
mov di, [bp+2] # destination
|
||||
mov cx, [bp+4] # length
|
||||
@@ -107,20 +112,36 @@ formattrack:
|
||||
int 0x13
|
||||
ret
|
||||
|
||||
# params: ds:fname, ds:dest
|
||||
readfile:
|
||||
mov si, [bp-14] # ds
|
||||
mov cl, 4
|
||||
shl si, cl
|
||||
mov ax, [bp+0]
|
||||
add ax, si
|
||||
mov dx, [bp+2]
|
||||
add dx, si
|
||||
call fat12_readfile
|
||||
ret
|
||||
|
||||
# params: ds:addr, size
|
||||
sendpara:
|
||||
mov si, [bp-14] # ds
|
||||
mov cl, 4
|
||||
shl si, cl
|
||||
mov ax, [bp+0]
|
||||
add ax, si
|
||||
mov dx, [bp+2]
|
||||
call parasend
|
||||
ret
|
||||
|
||||
# params: ds:addr, size
|
||||
recvpara:
|
||||
mov si, [bp-14] # ds
|
||||
mov cl, 4
|
||||
shl si, cl
|
||||
mov ax, [bp+0]
|
||||
add ax, si
|
||||
mov dx, [bp+2]
|
||||
call pararecv
|
||||
ret
|
||||
@@ -144,7 +165,7 @@ int80h:
|
||||
mov si, ax
|
||||
mov bp, sp
|
||||
lea bp, [bp + 16] # 10 for us, 6 for the interrupt
|
||||
call [int80h_table+si]
|
||||
call cs:[int80h_table+si]
|
||||
jmp 1f
|
||||
0:
|
||||
mov ax, -1
|
||||
|
Reference in New Issue
Block a user