home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / edos / v86api / tstwinex.asm < prev    next >
Assembly Source File  |  1992-12-07  |  3KB  |  208 lines

  1.  
  2. code segment public
  3.  
  4. assume cs:code, ds:code
  5.     org 100h
  6.  
  7. start:    jmp begin
  8.  
  9. vxd_api    dd    0
  10.  
  11. ; this test program demonstrates the getting of the VxD V86 Entry point
  12. ; and the calling of a service in that entry point.
  13. ; On entry
  14. ; AX = the function to call. 
  15. ;    where ax = 0 = get version number
  16. ;     where ax = 1 = put up message box.
  17. ;    where ax = 2 = get edos error code
  18. ;    where ax = 3 = execute windows application
  19.  
  20. begin:    
  21. ;int 3
  22.  
  23.  
  24. ; ShowWindow() Commands
  25. ;SW_HIDE            = 0
  26. ;SW_SHOWNORMAL      = 1
  27. ;SW_NORMAL          = 1
  28. ;SW_SHOWMINIMIZED   = 2
  29. ;SW_SHOWMAXIMIZED   = 3
  30. ;SW_MAXIMIZE        = 3
  31. ;SW_SHOWNOACTIVATE  = 4
  32. ;SW_SHOW            = 5
  33. ;SW_MINIMIZE        = 6
  34. ;SW_SHOWMINNOACTIVE = 7
  35. ;SW_SHOWNA          = 8
  36. ;SW_RESTORE         = 9
  37.  
  38.  
  39. ;int 3
  40.     mov dx, offset Show_msg
  41.     mov ah,9
  42.     int 21h
  43.  
  44.     mov ah,1       ;    get char, echo
  45.     int 21h    
  46.     cmp al, 031h
  47.     jl not_en
  48.     cmp al, 38h
  49.     jg not_en
  50.     mov ah,0
  51.     sub al,30h
  52.     mov [shownum],ax
  53.     jmp ok_char
  54. not_en:    
  55.     mov [shownum], 1    ; SW_NORMAL
  56.     jmp ok_char
  57.  
  58. ok_char:
  59.  
  60.     mov dx, offset Prog_msg
  61.     mov ah,9
  62.     int 21h
  63.  
  64.     mov dx, offset Prog_line
  65.     mov ah,0ah
  66.     int 21h
  67.  
  68.     mov bx, offset Prog_line
  69.     inc bx
  70.     mov cx,0
  71.     mov cl, [bx]
  72.     add bx,cx
  73.     mov byte ptr [bx+1],0
  74.  
  75.  
  76.  
  77.  
  78.     mov dx, offset Arg_msg
  79.     mov ah,9
  80.     int 21h
  81.  
  82.     mov dx, offset Arg_line
  83.     mov ah,0ah
  84.     int 21h
  85.     mov bx, offset Arg_line
  86.     inc bx
  87.     mov cx,0
  88.     mov cl, [bx]
  89.     add bx,cx
  90.     mov byte ptr [bx+2],0
  91.  
  92.  
  93.  
  94.  
  95.     push es
  96.     push ds
  97.     mov ax,0
  98.     mov es,ax    
  99.     mov di,ax
  100.  
  101.     mov ax, 1684h        ; get entry point for vxd device
  102.     mov bx, 2925h        ; VxD ID of EDOS, can not be changed
  103.     int 2fh            
  104.     mov ax,es
  105.     or ax,di
  106.     jz novxd
  107.     mov word ptr [vxd_api], di
  108.     mov word ptr [vxd_api+2],es
  109.  
  110.     mov  cx,0        ; cx should be zero
  111.     mov  ax,cs
  112.     mov [tseg],ax
  113.     mov  ax,cs
  114.     mov  ds,ax        ; ds = segment of message to use
  115.     mov  es,ax
  116. ;int 3
  117.     mov  bx, offset parm
  118.     mov  dx,offset Prog_line+2    ; dx = offset of msg to use
  119.     mov  ax,3        ; exec windows app function call
  120.     mov  cx, [Shownum]
  121.     call vxd_api
  122.     cmp ax, -1
  123.     jne badexec
  124.  
  125.     cmp bx, 32
  126.     jg exitnow
  127.     mov dx, offset badexec_msg
  128.     mov ah,9
  129.     int 21h
  130. ;int 3
  131. exitnow:
  132.     pop ds
  133.     pop es
  134.  
  135.     mov ax,4c00h        ; program exit
  136.     int 21h
  137.  
  138.     ret            ; never returns to here
  139.  
  140. badexec:
  141.     mov ax,cs
  142.     mov ds,ax
  143.     mov dx, offset badexec_msg
  144.     mov ah,9
  145.     int 21h
  146.  
  147.     jmp exitnow
  148.  
  149. novxd:
  150.     mov ax,cs
  151.     mov ds,ax
  152.     mov dx, offset dumbo_msg
  153.     mov ah,9
  154.     int 21h
  155.  
  156.     jmp exitnow
  157.  
  158.  
  159.  
  160. badexec_msg    db  13,10,'TSTWINEX: failed to load windows application',13,10,'$'
  161.  
  162. ;    Test of V86 Exec Windows App from DOS
  163. msg    db    'g:\win31\WRITE.EXE',0    ; full path to windows app
  164. Show_msg db  13,10,'Enter a number from 0-7 for SW_NORMAL, etc ',13,10, '$'
  165. Prog_msg db  13,10,'Enter the file to execute, with extension(CLOCK.EXE) ',13,10,'$'
  166. Arg_msg  db  13,10,'Enter the arguments ',13,10, '$'
  167.  
  168. Prog_line db  128
  169.       db  135 dup (32)
  170. Arg_line  db  128 
  171.       db  135 dup (32)
  172.  
  173.  
  174.  
  175. tail      db TAIL_LEN
  176.     db 'G:\WIN31\EDOS\EDOS.WRI'
  177. TAIL_LEN equ $-tail
  178.        db 13    ; carriage return
  179.        db 0
  180.  
  181.        db 126 dup (0)
  182.  
  183. parm   label byte
  184.     dw    0    ; segment of environment
  185.  
  186.     dw    offset Arg_line+1
  187. tseg    dw    0
  188. shownum    dw 0    ; offset of fcb; used for SW_NORMAL, etc
  189.     dw 0    ; seg of fcb
  190.     dd 0
  191.  
  192. dumbo_msg db 'Test Executing a Windows Application failed, Windows not running',13,10,'$'
  193.  
  194. ends
  195.  
  196. END start
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.