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 >
Assembly Source File  |  1992-03-19  |  1KB  |  75 lines

  1.     include    masmdefs.hsm
  2.     include model.hsm
  3.     include    tinymacs.hsm
  4.  
  5. codedef WPACK
  6. datadef
  7.  
  8. cstart  WPACK
  9.  
  10.     cextrn    install_wpack
  11.     cextrn    end_wpack
  12. public    __acrtused        ; trick to force in startup
  13.     __acrtused = 9876h    ; funny value not easily matched in SYMDEB
  14.  
  15. cproc   wpack
  16.  
  17.     mov    ax, cs
  18.  
  19.     CLI                ;disable interrupts for stack switch
  20.     MOV    SS,AX
  21.     MOV    SP,OFFSET STACK        ;change to local stack
  22.     STI
  23.  
  24.     push    ds            ;save psp pointer
  25.     mov    es, ax
  26.     mov    di, offset cmdline
  27.     mov    si, 080h
  28.     mov    cl,[si]
  29.     xor    ch, ch
  30.     or    cx, cx
  31.     jz    nocmd
  32.     inc    si
  33.     rep    movsb
  34. nocmd:
  35.     mov    ds, ax
  36.     mov    ax, offset cmdline
  37.     push    ax
  38.     call    _install_wpack
  39.     add    sp, 2
  40.     pop    bx                ;get back psp pointer
  41.  
  42.     or    ax, ax                ;did it work
  43.     jz    okw
  44.     mov    ah,04Ch
  45.     int     21h
  46. okw:
  47.     mov    DX,CS
  48.     mov    AX,word ptr cs:_end_wpack        ;load all of the registers
  49.     mov    CL,4
  50.     shr    AX,CL
  51.     add    DX,AX
  52.     add    DX,2
  53.  
  54.     mov    DS,BX                ;the psp
  55.     sub    DX,BX
  56.  
  57.     push    DX
  58.     mov    SI,02Ch
  59.     mov    AX,word ptr DS:[SI]
  60.     mov    ES,AX
  61.     mov    AH,049h
  62.     int    021h
  63.     pop    DX
  64.  
  65.     mov    AL,0
  66.     mov    AH,031h
  67.     int    021h
  68.     DB    10 DUP("----------------Stack Space Here") 
  69. STACK    DW    0
  70. cmdline    DB    256 DUP (0)
  71. cendp   wpack
  72. cend    WPACK
  73.  
  74.     end    _wpack
  75.