home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / tsr / tsrinfo.asm < prev    next >
Assembly Source File  |  1993-06-04  |  5KB  |  262 lines

  1. ; ***************************************
  2. ; *        Autor : Robert Flogaus       *
  3. ; *        Datum : 23.2.1993            *
  4. ; *       Sprache: Turbo Assembler 2.0  *
  5. ; * Assemblierung: tasm tsrinfo         *
  6. ; *                tlink tsrinfo /t     *
  7. ; *         Zweck: Anzeige aller mit    *
  8. ; *                chktsr.exe           *
  9. ; *                veränderter TSRs im  *
  10. ; *                Speicher             *
  11. ; ***************************************
  12.  
  13. .MODEL TINY
  14. CODE SEGMENT BYTE
  15. ASSUME CS:CODE,DS:CODE
  16. ORG 100H
  17.  
  18. LOCALS
  19. Flag EQU 0
  20. OwnerPSP EQU 1
  21. BlockSize EQU 3
  22. Start:
  23.   MOV AX,3000H
  24.   INT 21H
  25.   CMP AL,3
  26.   JNB DosVersion_Ok
  27. Illegal_DosVer:
  28.   MOV DX,OFFSET DosVer_Err
  29.   CALL Display_ExitMessage
  30.   INT 20H
  31. Err_Exit:
  32.   MOV AL,01
  33.   JMP SHORT Terminate_Prog
  34. Norm_Exit:
  35.   XOR AL,AL
  36. Terminate_Prog:
  37.   CALL Display_ExitMessage
  38.   MOV AH,4CH
  39.   INT 21H
  40. DosVersion_Ok:
  41.   MOV AX,OFFSET ProgEnd+100H
  42.   CMP SP,AX
  43.   MOV DX,OFFSET Out_Of_Stack
  44.   JB Err_Exit
  45.   MOV DX,OFFSET Copyright
  46.   MOV AH,9
  47.   INT 21H
  48.   CALL CBreak_Off
  49.   CALL Get_Umb_Link_State
  50.   CALL New_Umb_Link_State
  51.   CALL Get_First_MCB_Seg
  52.   JC Illegal_DosVer
  53.   CLD
  54. @@MCB_Loop:
  55.   MOV ES,AX
  56.   INC AX
  57.   MOV DS,AX
  58.   MOV BP,ES:[OwnerPSP]
  59.   CMP BP,40H
  60.   JA @@Owner_Ok
  61.   JMP @@Next_Mcb
  62. @@Owner_Ok:
  63.   MOV BX,CS
  64.   CMP BP,BX
  65.   JNE @@We_Do_Not_Own_It
  66.   JMP @@Next_Mcb
  67. @@We_Do_Not_Own_It:
  68.   CMP WORD PTR DS:[Flag],'RF'
  69.   JNE @@Is_Not_RF
  70.   JMP SHORT @@No_Way_To_Remove
  71. @@Is_Not_RF:
  72.   CMP WORD PTR DS:[Flag],'FR'
  73.   JE @@Is_Fr
  74.   JMP SHORT @@Next_Mcb
  75. @@Is_Fr:
  76.   CALL Tst_Block_Size
  77.   JE @@FrBlock_Ok
  78.   JMP SHORT @@Next_Mcb
  79. @@FrBlock_Ok:
  80.   MOV SI,4
  81.   CLD
  82.   XOR AH,AH
  83.   LODSB
  84.   ADD SI,AX
  85.   LODSB
  86.   MOV CX,AX
  87.   JCXZ @@Ints_Ok
  88. @@ReadInts:
  89.   MOV AH,35H
  90.   LODSB
  91.   PUSH CX
  92.   PUSH ES
  93.   INT 21H
  94.   ADD SI,4
  95.   MOV DX,BP
  96.   CALL Mul16
  97.   LODSW
  98.   ADD DX,AX
  99.   ADC CX,0
  100.   MOV DI,DX
  101.   MOV AX,CX
  102.   MOV DX,ES
  103.   CALL Mul16
  104.   POP ES
  105.   ADD DX,BX
  106.   ADC CX,0
  107.   CMP DI,DX
  108.   JNE @@Error
  109.   CMP AX,CX
  110.   JNE @@Error
  111.   POP CX
  112.   LOOP @@ReadInts
  113.   JMP SHORT @@Ints_Ok
  114. @@Write_Seg:
  115.   MOV AX,DS
  116.   PUSH CS
  117.   POP DS
  118.   ADD SI,[DI]
  119.   MOV [SI],AX
  120.   ADD WORD PTR [DI],2
  121.   CMP WORD PTR [DI],254
  122.   JAE @@Finished
  123.   JMP SHORT @@Next_Mcb
  124. @@No_Way_To_Remove:
  125.   CALL Tst_Block_Size
  126.   JNE @@Next_Mcb
  127.   MOV SI,OFFSET TSRs_Not_To_Remove
  128.   MOV DI,OFFSET Not_Remove_Ptr
  129.   JMP @@Write_Seg
  130. @@Error:
  131.   POP CX
  132.   MOV SI,OFFSET Other_TSRs
  133.   MOV DI,OFFSET Other_Ptr
  134.   JMP @@Write_Seg
  135. @@Ints_Ok:
  136.   MOV SI,OFFSET TSRs_To_Remove
  137.   MOV DI,OFFSET Remove_Ptr
  138.   JMP @@Write_Seg
  139. @@Next_Mcb:
  140.   MOV DH,ES:[Flag]
  141.   PUSH CS
  142.   POP DS
  143.   CALL Test_MCBFlag
  144.   JNC @@MCB_Found
  145.   JMP Err_Exit
  146. @@MCB_Found:
  147.   JZ @@Finished
  148.   ADD AX,ES:[BlockSize]
  149.   JMP @@MCB_Loop
  150. @@Finished:
  151.   CALL Old_UMB_Link_State
  152.   CALL Old_CBreak
  153.   MOV CX,[Remove_Ptr]
  154.   JCXZ @@Test_Others
  155.   MOV BYTE PTR [Something_Found],1
  156.   MOV DX,OFFSET RemoveTxt
  157.   MOV SI,OFFSET TSRs_To_Remove
  158.   CALL Display_Progs
  159. @@Test_Others:
  160.   MOV CX,[Other_Ptr]
  161.   JCXZ @@Test_Irremovables
  162.   MOV BYTE PTR [Something_Found],1
  163.   MOV DX,OFFSET OthersTxt
  164.   MOV SI,OFFSET Other_TSRs
  165.   CALL Display_Progs
  166. @@Test_Irremovables:
  167.   MOV CX,[Not_Remove_Ptr]
  168.   JCXZ @@Eop
  169.   MOV BYTE PTR [Something_Found],1
  170.   MOV DX,OFFSET Do_Not_RemoveTxt
  171.   MOV SI,OFFSET TSRs_Not_To_Remove
  172.   CALL Display_Progs
  173. @@Eop:
  174.   CMP [Something_Found],0
  175.   JNE @@Something_Found
  176.   MOV DX,OFFSET None_Found
  177.   MOV AH,09
  178.   INT 21H
  179. @@Something_Found:
  180.   MOV DX,OFFSET This_Is_It
  181.   JMP Norm_Exit
  182.  
  183. Display_Progs PROC NEAR
  184.   CALL CRLF
  185.   MOV BX,DS
  186.   MOV AH,09
  187.   INT 21H
  188.   CALL CRLF
  189.   SHR CX,1
  190. @@Disp_Loop1:
  191.   LODSW
  192.   PUSH SI
  193.   PUSH CX
  194.   MOV DS,AX
  195.   MOV SI,4
  196.   LODSB
  197.   MOV CL,AL
  198.   CALL Space
  199. @@Disp_Loop2:
  200.   LODSB
  201.   CMP AL,32
  202.   JB @@Exit_Loop
  203.   CALL CharOut
  204.   LOOP @@Disp_Loop2
  205. @@Exit_Loop:
  206.   CALL CRLF
  207.   POP CX
  208.   POP SI
  209.   MOV DS,BX
  210.   LOOP @@Disp_Loop1
  211.   RET
  212. Display_Progs ENDP
  213.  
  214. Tst_Block_Size PROC NEAR
  215.   PUSH ES
  216.   PUSH AX
  217.   MOV AX,BP
  218.   DEC AX
  219.   MOV ES,AX ;mcb of tsr psp
  220.   MOV SI,DS:[2]
  221.   CMP ES:[BlockSize],SI
  222.   POP AX
  223.   POP ES
  224.   RET
  225. Tst_Block_Size ENDP
  226.  
  227. INCLUDE TSRINC.INC
  228.  
  229. Space PROC NEAR
  230.   MOV AL,32
  231.   REPT 6
  232.     CALL CharOut
  233.   ENDM
  234.   RET
  235. Space ENDP
  236.  
  237. Orig_UMB_Link_State DB 0FFH
  238. Not_Remove_Ptr     DW 0
  239. Remove_Ptr         DW 0
  240. Other_Ptr          DW 0
  241. TSRs_Not_To_Remove DW 128 DUP (0)
  242. TSRs_To_Remove     DW 128 DUP (0)
  243. Other_TSRs         DW 128 DUP (0)
  244. Something_Found    DB 0
  245. Copyright          DB 13,10,'TSRINFO 1.0, '
  246.                    DB '(C) Robert Flogaus,'
  247.                    DB ' 1993',13,10,'$'
  248. OthersTxt          DB 'TSR(s) which may '
  249.                    DB 'not be uninstalled yet:$'
  250. RemoveTxt          DB 'TSR(s) which may be '
  251.                    DB 'uninstalled:$'
  252. Do_Not_RemoveTxt   DB 'TSR(s) which can''t be uninstalled:$'
  253. None_Found         DB 'No relevant TSRs found.$'
  254. MemErr_Msg DB 7,'MCB destroyed.$'
  255. Out_Of_Stack DB 7,'Out of stack space.$'
  256. DosVer_Err DB 7,'DOS 3.0 or higher required.$'
  257. This_Is_It DB 'TSRINFO terminated.$'
  258. ProgEnd:
  259. CODE ENDS
  260. END Start
  261. END.
  262.