diff --git a/polio.s b/polio.s index 5db7ffb..49ea080 100644 --- a/polio.s +++ b/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