blob: d9699b79f97e820216cae874b3ce8370ad29aa73 [file] [log] [blame]
[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: