home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 11 / ldm / txtsr.asm < prev    next >
Encoding:
Assembly Source File  |  1990-10-05  |  6.9 KB  |  208 lines

  1. ;* ------------------------------------------------------- *
  2. ;*    TXTSR.ASM: Objektdatei zum Einbinden für TXTSR.PAS   *
  3. ;*                 (c) 1990 TOOLBOX                        *
  4. ;* ------------------------------------------------------- *
  5. False     EQU   0
  6. True      EQU   1
  7. MsDos     EQU   21h
  8. GetInt16  EQU   3516h
  9. SetInt16  EQU   2516h
  10.  
  11. DATA      SEGMENT    BYTE    PUBLIC
  12.  
  13.           EXTRN PopUpSS      :WORD
  14.           EXTRN PopUpSP      :WORD
  15.           EXTRN SaveSS       :WORD
  16.           EXTRN SaveSP       :WORD
  17.           EXTRN TempInt16    :DWORD
  18.           EXTRN InUse        :BYTE
  19.           EXTRN HotKey_1     :WORD        ; Ä n d e r u n g
  20.           EXTRN HotKey_2     :WORD        ; Ä n d e r u n g
  21.           EXTRN HotKey_3     :WORD        ; Ä n d e r u n g
  22.           EXTRN HotKey_4     :WORD        ; Ä n d e r u n g
  23.           EXTRN HotKey_5     :WORD        ; Ä n d e r u n g
  24.           EXTRN PopUp_1      :DWORD       ; Ä n d e r u n g
  25.           EXTRN PopUp_2      :DWORD       ; Ä n d e r u n g
  26.           EXTRN PopUp_3      :DWORD       ; Ä n d e r u n g
  27.           EXTRN PopUp_4      :DWORD       ; Ä n d e r u n g
  28.           EXTRN PopUp_5      :DWORD       ; Ä n d e r u n g
  29.           EXTRN ProgramID    :BYTE
  30.           EXTRN PrefixSeg    :WORD
  31.           EXTRN SaveHotKey   :WORD        ; Ä n d e r u n g
  32.  
  33. DATA      ENDS
  34.  
  35. CODE      SEGMENT    BYTE    PUBLIC
  36.  
  37.           ASSUME CS:CODE,DS:DATA
  38.  
  39.           PUBLIC Int16,SaveInt16
  40.  
  41. Int16     PROC FAR
  42.  
  43.           CMP     AH,0h
  44.           JE      GetKey
  45.  
  46. Identify:
  47.           CMP      AH,0F0h
  48.           JNE      GetSegment
  49.           PUSH     DS
  50.           PUSH     AX
  51.           MOV      AX,DATA
  52.           MOV      DS,AX
  53.           PUSH     CX
  54.           MOV      AX,1
  55.           MOV      CL,ProgramID
  56.           DEC      CL
  57.           CMP      CL,16
  58.           JG       UpperHalf
  59.           SHL      AX,CL
  60.           OR       BX,AX
  61.           POP      CX
  62.           JMP      SHORT   Ready
  63. UpperHalf:
  64.           SUB      CL,16
  65.           SHL      AX,CL
  66.           POP      CX
  67.           OR       CX,AX
  68. Ready:
  69.           POP      AX
  70.           POP      DS
  71. ChainInt16:
  72.           DB       0EAh
  73. SaveInt16 DD       ?
  74. GetSegment:
  75.           CMP      AH,0F1h
  76.           JNE      ChainInt16
  77.           PUSH     DS
  78.           PUSH     AX
  79.           MOV      BX,AX
  80.           MOV      AX,DATA
  81.           MOV      DS,AX
  82.           CMP      BL,ProgramID
  83.           JNE      Ready
  84.           MOV      BX,PrefixSeg
  85.           POP      AX
  86.           POP      DS
  87.           IRET
  88. GetKey:
  89.           STI
  90.           PUSH     DS
  91.           PUSH     AX
  92.           MOV      AX,DATA
  93.           MOV      DS,AX
  94.           POP      AX
  95.           CMP      InUse,True
  96.           JNE      SwitchStack
  97.           POP      DS
  98.           JMP      SHORT  ChainInt16
  99. SwitchStack:
  100.           MOV      SaveSS,SS
  101.           MOV      SaveSP,SP
  102.           CLI
  103.           MOV      SS,PopUpSS
  104.           MOV      SP,PopUpSP
  105.           STI
  106.           PUSH     BX
  107.           PUSH     CX
  108.           PUSH     DX
  109.           PUSH     SI
  110.           PUSH     DI
  111.           PUSH     BP
  112.           PUSH     ES
  113. CheckKey:
  114.           XOR      AH,AH
  115.           PUSHF
  116.           CALL     CS:SaveInt16
  117.  
  118.           CMP      AX,HOTKEY_1           ; Ä n d e r u n g
  119.           JE       OUTFWD                ; Ä n d e r u n g
  120.           CMP      AX,HOTKEY_2           ; Ä n d e r u n g
  121.           JE       OUTFWD                ; Ä n d e r u n g
  122.           CMP      AX,HOTKEY_3           ; Ä n d e r u n g
  123.           JE       OUTFWD                ; Ä n d e r u n g
  124.           CMP      AX,HOTKEY_4           ; Ä n d e r u n g
  125.           JE       OUTFWD                ; Ä n d e r u n g
  126.           CMP      AX,HOTKEY_5           ; Ä n d e r u n g
  127.           JE       OUTFWD                ; Ä n d e r u n g
  128.           JMP      EXIT                  ; Ä n d e r u n g
  129.  
  130. OUTFWD:   MOV      SaveHotKey,AX
  131.  
  132.           MOV      InUse,TRUE
  133.           MOV      AX,GetInt16
  134.           INT      MsDos
  135.           MOV      WORD PTR TempInt16,BX
  136.           MOV      WORD PTR TempInt16+2,ES
  137.           PUSH     DS
  138.           LDS      DX,CS:SaveInt16
  139.           MOV      AX,SetInt16
  140.           INT      MsDos
  141.           POP      DS
  142.  
  143.           PUSH     AX                    ; Ä n d e r u n g
  144.           MOV      AX,SaveHotKey         ; Ä n d e r u n g
  145.                                          ; Ä n d e r u n g
  146.           CMP      AX,HOTKEY_1           ; Ä n d e r u n g
  147.           JNE      L1                    ; Ä n d e r u n g
  148.           CALL     POPUP_1               ; Ä n d e r u n g
  149.           JMP      Weiter                ; Ä n d e r u n g
  150. L1:                                      ; Ä n d e r u n g
  151.           CMP      AX,HOTKEY_2           ; Ä n d e r u n g
  152.           JNE      L2                    ; Ä n d e r u n g
  153.           CALL     POPUP_2               ; Ä n d e r u n g
  154.           JMP      Weiter                ; Ä n d e r u n g
  155. L2:                                      ; Ä n d e r u n g
  156.           CMP      AX,HOTKEY_3           ; Ä n d e r u n g
  157.           JNE      L3                    ; Ä n d e r u n g
  158.           CALL     POPUP_3               ; Ä n d e r u n g
  159.           JMP      Weiter                ; Ä n d e r u n g
  160. L3:                                      ; Ä n d e r u n g
  161.           CMP      AX,HOTKEY_3           ; Ä n d e r u n g
  162.           JNE      L4                    ; Ä n d e r u n g
  163.           CALL     POPUP_3               ; Ä n d e r u n g
  164.           JMP      Weiter                ; Ä n d e r u n g
  165. L4:                                      ; Ä n d e r u n g
  166.           CMP      AX,HOTKEY_4           ; Ä n d e r u n g
  167.           JNE      L5                    ; Ä n d e r u n g
  168.           CALL     POPUP_4               ; Ä n d e r u n g
  169.           JMP      Weiter                ; Ä n d e r u n g
  170. L5:                                      ; Ä n d e r u n g
  171.           CMP      AX,HOTKEY_5           ; Ä n d e r u n g
  172.           JNE      Weiter                ; Ä n d e r u n g
  173.           CALL     POPUP_5               ; Ä n d e r u n g
  174.                                          ; Ä n d e r u n g
  175. Weiter:   POP      AX                    ; Ä n d e r u n g
  176.           PUSH     DS
  177.           POP      ES
  178.           MOV      DX,WORD PTR TempInt16
  179.           MOV      DS,WORD PTR TempInt16+2
  180.           MOV      AX,SetInt16
  181.           INT      MsDos
  182.           PUSH     ES
  183.           POP      DS
  184.           MOV      InUse,False
  185.           JMP      CheckKey
  186. Exit:
  187.           POP      ES
  188.           POP      BP
  189.           POP      DI
  190.           POP      SI
  191.           POP      DX
  192.           POP      CX
  193.           POP      BX
  194.           CLI
  195.           MOV      SS,SaveSS
  196.           MOV      SP,SaveSP
  197.           POP      DS
  198.           STI
  199.           IRET
  200.  
  201. Int16     ENDP
  202.  
  203. CODE      ENDS
  204.           END
  205. ;* ------------------------------------------------------- *
  206. ;*                 Ende von TXTSR.ASM                      *
  207.  
  208.