47,7 → 47,7 |
; first half (0x800 bytes) is page table for addresses 0 - 0x100000, |
; second half is for V86-to-linear translation. |
; Third and fourth are for I/O permission map. |
push 8000h ;page block less 8Kb are discontinuous |
push 8000h ; blocks less than 8 pages are discontinuous |
call kernel_alloc |
test eax, eax |
jz .fail2 |
170,7 → 170,7 |
; esi=handle |
; out: eax=V86 address, para-aligned (0x10 multiple) |
; destroys: nothing |
; ᠭ!!! |
; ¥¤®¯¨á !!! |
;v86_alloc: |
; push ebx ecx edx edi |
; lea ebx, [esi+V86_machine.mutex] |
390,8 → 390,8 |
jnz .nogp |
; Otherwise we can safely access byte at CS:IP |
; (because it is #GP, not #PF handler) |
; 嫮 ᪫祭 ⮫쪮 - ⥭ ⮢ , |
; 㦥 嫮⠫ 뫮 #GP |
;
᫨ ¡ë ¬ë ¬®£«¨ áå«®¯®â âì ¨áª«î票¥ ⮫쪮 ¨§-§ çâ¥¨ï ¡ ©â®¢ ª®¤ , |
; ¬ë ¡ë ¥£® 㦥 áå«®¯®â «¨ ¨ íâ® ¡ë«® ¡ë ¥ #GP |
movzx esi, word [esp+v86_regs.cs] |
shl esi, 4 |
add esi, [esp+v86_regs.eip] |
798,7 → 798,7 |
lea eax, [edi+8] |
cmp al, 10h |
jb @f |
add al, 70h-8 |
add al, 60h |
@@: |
jmp v86_exc_c.simulate_int |
.notcurrent: |
854,7 → 854,7 |
lea eax, [edi+8] |
cmp al, 10h |
jb @f |
add al, 70h-8 |
add al, 60h |
@@: |
mov cx, [eax*4] |
mov word [esi-v86_regs.size+v86_regs.eip], cx |