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
|
.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:
|
copy:
|
||||||
|
mov ax, [bp-14] # ds
|
||||||
|
mov es, ax
|
||||||
|
mov ds, ax
|
||||||
|
mov cl, 4
|
||||||
|
shl si, cl
|
||||||
mov si, [bp+0] # source
|
mov si, [bp+0] # source
|
||||||
mov di, [bp+2] # destination
|
mov di, [bp+2] # destination
|
||||||
mov cx, [bp+4] # length
|
mov cx, [bp+4] # length
|
||||||
@@ -107,20 +112,36 @@ formattrack:
|
|||||||
int 0x13
|
int 0x13
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
# params: ds:fname, ds:dest
|
||||||
readfile:
|
readfile:
|
||||||
|
mov si, [bp-14] # ds
|
||||||
|
mov cl, 4
|
||||||
|
shl si, cl
|
||||||
mov ax, [bp+0]
|
mov ax, [bp+0]
|
||||||
|
add ax, si
|
||||||
mov dx, [bp+2]
|
mov dx, [bp+2]
|
||||||
|
add dx, si
|
||||||
call fat12_readfile
|
call fat12_readfile
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
# params: ds:addr, size
|
||||||
sendpara:
|
sendpara:
|
||||||
|
mov si, [bp-14] # ds
|
||||||
|
mov cl, 4
|
||||||
|
shl si, cl
|
||||||
mov ax, [bp+0]
|
mov ax, [bp+0]
|
||||||
|
add ax, si
|
||||||
mov dx, [bp+2]
|
mov dx, [bp+2]
|
||||||
call parasend
|
call parasend
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
# params: ds:addr, size
|
||||||
recvpara:
|
recvpara:
|
||||||
|
mov si, [bp-14] # ds
|
||||||
|
mov cl, 4
|
||||||
|
shl si, cl
|
||||||
mov ax, [bp+0]
|
mov ax, [bp+0]
|
||||||
|
add ax, si
|
||||||
mov dx, [bp+2]
|
mov dx, [bp+2]
|
||||||
call pararecv
|
call pararecv
|
||||||
ret
|
ret
|
||||||
@@ -144,7 +165,7 @@ int80h:
|
|||||||
mov si, ax
|
mov si, ax
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
lea bp, [bp + 16] # 10 for us, 6 for the interrupt
|
lea bp, [bp + 16] # 10 for us, 6 for the interrupt
|
||||||
call [int80h_table+si]
|
call cs:[int80h_table+si]
|
||||||
jmp 1f
|
jmp 1f
|
||||||
0:
|
0:
|
||||||
mov ax, -1
|
mov ax, -1
|
||||||
|
Reference in New Issue
Block a user