home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / main / ipx_esr.asm < prev    next >
Assembly Source File  |  1998-06-08  |  3KB  |  137 lines

  1. ;THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  2. ;SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
  3. ;END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  4. ;ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  5. ;IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  6. ;SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  7. ;FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  8. ;CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
  9. ;AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
  10. ;COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  11. ;
  12. ; $Source: f:/miner/source/main/rcs/ipx_esr.asm $
  13. ; $Revision: 2.0 $
  14. ; $Author: john $
  15. ; $Date: 1995/02/27 11:32:31 $
  16. ; Ipx esr
  17. ; $Log: ipx_esr.asm $
  18. ; Revision 2.0  1995/02/27  11:32:31  john
  19. ; New version 2.0, which has no anonymous unions, builds with
  20. ; Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
  21. ; Revision 1.2  1994/08/04  19:17:25  john
  22. ; Inbetween version of network stuff.
  23. ; Revision 1.1  1994/08/02  11:41:09  john
  24. ; Initial revision
  25.  
  26.  
  27.  
  28. .386
  29.     option    oldstructs
  30.  
  31.     .nolist
  32.     include    types.inc
  33.     include    psmacros.inc
  34.     .list
  35.  
  36.     assume    cs:_TEXT, ds:_DATA
  37.  
  38. _DATA    segment    dword public USE32 'DATA'
  39.  
  40. rcsid    db    "$Id: ipx_esr.asm 2.0 1995/02/27 11:32:31 john Exp $"
  41.     align    4
  42.  
  43. REALREGS    STRUCT
  44.     RealEDI     dd      ?
  45.     RealESI     dd      ?
  46.     RealEBP     dd      ?
  47.     Reserved    dd      ?
  48.     RealEBX     dd      ?
  49.     RealEDX     dd      ?
  50.     RealECX     dd      ?
  51.     RealEAX     dd      ?
  52.     RealFlags   dw      ?
  53.     RealES      dw      ?
  54.     RealDS      dw      ?
  55.     RealFS      dw      ?
  56.     RealGS      dw      ?
  57.     RealIP      dw      ?
  58.     RealCS      dw      ?
  59.     RealSP      dw      ?
  60.     RealSS      dw      ?
  61. REALREGS    ENDS
  62.  
  63.  
  64. _DATA    ends
  65.  
  66. DGROUP  GROUP _DATA
  67.  
  68.  
  69. _TEXT    segment    dword public USE32 'CODE'
  70.  
  71.     public ipx_esr_
  72.  
  73. ipx_esr_:    
  74. ;    pusha
  75. ;    push ds
  76. ;    push es
  77. ;    push fs
  78. ;    push gs
  79.  
  80.  
  81.     push    eax
  82.     push    esi
  83.  
  84.     ; ds:esi = real mode ss:sp
  85.     ; es:edi = real mode call structure
  86.     ; ss:esp = locked protected mode API stack
  87.  
  88. ;    mov    eax, es:[edi].RealEAX
  89. ;    cmp    al, 0h
  90. ;    je    good
  91. ;    cmp    al, 0ffh
  92. ;    je    good
  93.  
  94.     push    ds
  95.     push    ebx
  96.     mov    bx, DGROUP
  97.     mov    ds, bx
  98.     mov    ebx, 0b0000h
  99.     mov    eax, es:[edi].RealEAX
  100.     mov    byte ptr ds:[ebx], al 
  101.     pop    ebx
  102.     pop    ds
  103.  
  104. good:
  105.     and     esi, 0ffffh    
  106.     mov    ax, ds:[esi]    
  107.     add    esi, 2
  108.     mov    es:[edi].RealIP, ax
  109.  
  110.     mov    ax, ds:[esi]    
  111.     add    esi, 2
  112.     mov    es:[edi].RealCS, ax
  113.  
  114.     mov    es:[edi].RealSP, si
  115.     
  116.     pop    esi
  117.     pop    eax
  118. ;    pop gs
  119. ;    pop fs
  120. ;    pop es
  121. ;    pop ds
  122. ;    popa
  123.     
  124.     iretd
  125.  
  126. _TEXT    ends
  127.  
  128.     end
  129.  
  130. 
  131.