[BITS 32] [MAP all] ; This file is loaded as a DOS .COM file. [SEGMENT _TEXT start=0 vstart=100h] ; shrink & relocate stack: mov sp, stack_ends ; NASM puts 460h here - ; 9B0h is desired. mov bx, sp mov cl, 4 shr bx, cl mov ah, 4Ah ; DOS resize mem.block int 21h [SEGMENT GATESEG align=1 follows=_TEXT vstart=0] ; label to use for copying this segment at run-time. gate0cpy: dd 0 ; 32-bit ring-0 protected mode code that interacts ; with the VMM (Win3.x/9x kernel). To be relocated ; at run-time to memory dynamically allocated with ; DPMI, and called through a call-gate from ring-3. ; vstart=0 makes some calculations easier. ; Reserve space for stack: [SEGMENT .bss follows=GATESEG align=16] resb 400h stack_ends: