home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wunderki.zip / WLIB.ASM < prev    next >
Assembly Source File  |  1993-08-16  |  4KB  |  86 lines

  1. ;//////////////////////////////////////////////////////
  2. ;/                                                    /
  3. ;/ Run-time Library für Borland Pascal 7.0 unter OS/2 /
  4. ;/ Startup-Routine für OS/2-DLLs.                     /
  5. ;/                                                    /
  6. ;/ 1993 Matthias Withopf / c't                        /
  7. ;/ Originalversion (c) 1988,92 Borland International  /
  8. ;/                                                    /
  9. ;//////////////////////////////////////////////////////
  10.  
  11.                 .286p                                         
  12.  
  13.                 _NOMACROS_ = 1                  ; keine Macros definieren
  14.                 INCLUDE SE.ASM
  15.                 INCLUDE OS2.ASM
  16.  
  17. DATA            SEGMENT WORD PUBLIC
  18.                 EXTRN   ExitCode:WORD,HeapAllocFlags:WORD,Test8086:BYTE
  19.                 EXTRN   Input:BYTE,Output:BYTE,SelectorInc:WORD
  20. DATA            ENDS
  21.  
  22. CODE            SEGMENT BYTE PUBLIC
  23.                 ASSUME  CS:CODE,DS:DATA
  24.                 EXTRN   DoExitProcs:NEAR,Check8086:NEAR
  25.  
  26.                 ;
  27.                 ; Startup-Code für OS/2-DLLS.
  28.                 ;
  29.  
  30.                 PUBLIC  LibEntry
  31. LibEntry        PROC    FAR
  32.                 CALL    Check8086               ; bestimme Prozessortyp
  33.                 MOV     HeapAllocFlags,SEG_GIVEABLE ; setze Heap-Allozierungsflags
  34.                 PUSH    DS                      ; erfrage
  35.                 PUSH    OFFSET SelectorInc      ; den Wert
  36.                 CALL    DosGetHugeShift         ; für AHugeShift
  37.                 MOV     AX,1                    ; berechne
  38.                 MOV     CX,SelectorInc          ; daraus den
  39.                 SHL     AX,CL                   ; SelectorInc-Wert
  40.                 MOV     SelectorInc,AX          ; (SelectorInc := 1 Shl AHugeShift)
  41.                 MOV     ExitCode,1              ; standardmäßiger Exit-Code ist 1
  42.                 RET
  43. LibEntry        ENDP
  44.  
  45.                 ;
  46.                 ; Beende OS/2-DLL.
  47.                 ;
  48.  
  49.                 PUBLIC  LibExit
  50. LibExit         PROC    FAR
  51.                 POP     AX                      ; lösche Rücksprungadresse
  52.                 POP     AX                      ; vom Stack
  53.                 MOV     AX,ExitCode             ; lese Fehlercode
  54.                 RET                             ; zurück zu OS/2
  55. LibExit         ENDP
  56.  
  57.                 ;
  58.                 ; Exit-Prozedur der DLL (WEP).
  59.                 ;
  60.  
  61.                 PUBLIC  LibExitProc
  62. LibExitProc     PROC    FAR
  63.                 ARG     A_ExitCode : WORD
  64.                 MOV     AX,DS                   ; Prolog für
  65.                 NOP                             ; exportierte Funktion
  66.                 PUSH    BP                      
  67.                 MOV     BP,SP
  68.                 PUSH    DS                      ; rette Datensegment
  69.                 PUSH    SI                      ; rette Register
  70.                 PUSH    DI                      ; auf Stack
  71.                 MOV     DS,AX                   ; setze Datensegment der DLL
  72.                 MOV     AX,A_ExitCode           ; lese ExitCode
  73.                 MOV     ExitCode,AX             ; speichern
  74.                 CALL    DoExitProcs             ; führe Exit-Prozeduren aus
  75.                 MOV     AX,1                    ; setze Flag für ok
  76.                 POP     DI                      ; hole Register
  77.                 POP     SI                      ; vom Stack
  78.                 POP     DS                      ; hole Datensegment zurück
  79.                 POP     BP
  80.                 RET
  81. LibExitProc     ENDP
  82.  
  83. CODE            ENDS
  84.  
  85.                 END
  86.