home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-386-Vol-2of3.iso
/
b
/
bootp.zip
/
WPACK.ASM
< prev
next >
Wrap
Assembly Source File
|
1992-03-19
|
1KB
|
75 lines
include masmdefs.hsm
include model.hsm
include tinymacs.hsm
codedef WPACK
datadef
cstart WPACK
cextrn install_wpack
cextrn end_wpack
public __acrtused ; trick to force in startup
__acrtused = 9876h ; funny value not easily matched in SYMDEB
cproc wpack
mov ax, cs
CLI ;disable interrupts for stack switch
MOV SS,AX
MOV SP,OFFSET STACK ;change to local stack
STI
push ds ;save psp pointer
mov es, ax
mov di, offset cmdline
mov si, 080h
mov cl,[si]
xor ch, ch
or cx, cx
jz nocmd
inc si
rep movsb
nocmd:
mov ds, ax
mov ax, offset cmdline
push ax
call _install_wpack
add sp, 2
pop bx ;get back psp pointer
or ax, ax ;did it work
jz okw
mov ah,04Ch
int 21h
okw:
mov DX,CS
mov AX,word ptr cs:_end_wpack ;load all of the registers
mov CL,4
shr AX,CL
add DX,AX
add DX,2
mov DS,BX ;the psp
sub DX,BX
push DX
mov SI,02Ch
mov AX,word ptr DS:[SI]
mov ES,AX
mov AH,049h
int 021h
pop DX
mov AL,0
mov AH,031h
int 021h
DB 10 DUP("----------------Stack Space Here")
STACK DW 0
cmdline DB 256 DUP (0)
cendp wpack
cend WPACK
end _wpack