home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
For Beginners & Professional Hackers
/
cd.iso
/
hackers
/
tools
/
nsk.arj
/
COPYLOCK
/
COPYLOCK.LST
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
MacRoman (detected)
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
File List
|
1980-01-01
|
111.1 KB
|
2,840 lines
= 0012 data_1e equ 12h ; (0000:0012=70h)
= 0013 data_2e equ 13h ; (0000:0013=0)
= 0014 data_3e equ 14h ; (0000:0014=72h)
= 002C data_4e equ 2Ch ; (0000:002C=23h)
= 0038 data_5e equ 38h ; (0000:0038=57h)
= 004C data_6e equ 4Ch ; (0000:004C=92h)
= 0070 data_7e equ 70h ; (0000:0070=53h)
= 008C data_8e equ 8Ch ; (0000:008C=0F7h)
= 00E0 data_9e equ 0E0h ; (0000:00E0=45h)
= 0100 data_10e equ 100h ; (0000:0100=59h)
= 8000 data_11e equ 8000h ; (0000:8000=0F6h)
= 0108 data_12e equ 108h ; (0011:0108=0)
= 0040 data_13e equ 40h ; (0040:0040=0DDh)
= 008B data_14e equ 8Bh ; (0040:008B=0)
= 0001 data_15e equ 1 ; (011A:0001=7Fh)
= 000F data_16e equ 0Fh ; (011A:000F=74h)
= 0010 data_17e equ 10h ; (011A:0010=3)
= 0011 data_18e equ 11h ; (011A:0011=0E9h)
= 0090 data_38e equ 90h ; (7816:0090=0FBD8h)
= 00A0 data_39e equ 0A0h ; (7816:00A0=46E8h)
= 173E data_134e equ 173Eh ; (7816:173E=0)
= A9AE data_135e equ 0A9AEh ; (7816:A9AE=0)
= ACA6 data_136e equ 0ACA6h ; (7816:ACA6=0)
= E1A8 data_137e equ 0E1A8h ; (7816:E1A8=0)
= E8A8 data_138e equ 0E8A8h ; (7816:E8A8=0)
= ECA2 data_139e equ 0ECA2h ; (7816:ECA2=0)
= FB01 data_140e equ 0FB01h ; (7816:FB01=0)
= FE01 data_141e equ 0FE01h ; (7816:FE01=0)
= 0001 data_142e equ 1 ; (8813:0001=0)
= 0004 data_143e equ 4 ; (8813:0004=0)
= 0006 data_144e equ 6 ; (8813:0006=0)
= 0009 data_145e equ 9 ; (8813:0009=0)
= 000B data_146e equ 0Bh ; (8813:000B=0)
= 000D data_147e equ 0Dh ; (8813:000D=0)
= 000F data_148e equ 0Fh ; (8813:000F=0)
= 001A data_149e equ 1Ah ; (8813:001A=0)
= 001C data_150e equ 1Ch ; (8813:001C=0)
= 003A data_151e equ 3Ah ; (8813:003A=0)
= 08A6 data_152e equ 8A6h ; (8813:08A6=0)
= 0D3E data_153e equ 0D3Eh ; (8813:0D3E=0)
= 0D3F data_154e equ 0D3Fh ; (8813:0D3F=0)
= 0D41 data_155e equ 0D41h ; (8813:0D41=0)
= 0DD8 data_156e equ 0DD8h ; (8813:0DD8=0)
= 10C2 data_157e equ 10C2h ; (8813:10C2=0)
= 10C3 data_158e equ 10C3h ; (8813:10C3=0)
= 10CC data_159e equ 10CCh ; (8813:10CC=0)
= 1252 data_160e equ 1252h ; (8813:1252=0)
= 12A6 data_161e equ 12A6h ; (8813:12A6=0)
= 12A8 data_162e equ 12A8h ; (8813:12A8=0)
= 12AA data_163e equ 12AAh ; (8813:12AA=0)
= 12AC data_164e equ 12ACh ; (8813:12AC=0)
= 1D0C data_165e equ 1D0Ch ; (8813:1D0C=0)
= 0000 data_166e equ 0 ; (FF23:0000=0)
seg_a segment byte public
assume cs:seg_a, ds:seg_a
org 0
copylock proc far
7816:0000 AE BA dw 0BAAEh ; í½«¬ »áαá¼ÑΓα«ó ºáΘ¿Γδ
7816:0002 C0 FE dw 0FEC0h
7816:0004 00 00 dw 0000
7816:0006 9D E6 dw 0E69Dh
7816:0008 16 FF loc_1: dw 0FF16h
7816:000A 00 EB dw 0EB00h
7816:000C 00 E8 dw 0E800h
7816:000E 00 E2 dw 0E200h
7816:0010 00 00 dw 0000
7816:0012 00 00 dw 0000
7816:0014 00 B2 dw 0B200h
7816:0016 E8 FF dw 0FFE8h
7816:0018 00 00 dw 0000
7816:001A FF FF dw 0FFFFh
7816:001C FF FF data_32 dw 0FFFFh
7816:001E 00 00 dw 0000
7816:0020 50 push ax
7816:0021 1E push ds
7816:0022 06 push es
7816:0023 E8 00 00 call [0026h]
7816:0026 58 pop ax
7816:0027 E9 4F 0A jmp loc_110
7816:002A loc_2: ; xref 7816:0AF9
7816:002A 8F 06 10CC pop word ptr ds:data_159e ; (8813:10CC=0)
7816:002E B5 03 mov ch,3
7816:0030 BA 0000 mov dx,0
7816:0033 B8 02B0 mov ax,2B0h
7816:0036 50 push ax
7816:0037 E8 0996 call sub_18 ; (09D0)
7816:003A D0 C8 ror al,1 ; Rotate
7816:003C FB sti ; Enable interrupts
7816:003D B8 0000 mov ax,0
7816:0040 8E C0 mov es,ax
7816:0042 .BB 008C mov bx,data_8e ; (0000:008C=0F7h)
7816:0045 26: 8B 07 mov ax,es:[bx]
7816:0048 A3 12A6 mov ds:data_161e,ax ; (8813:12A6=0)
7816:004B 26: 8B 47 02 mov ax,es:[bx+2]
7816:004F A3 12A8 mov ds:data_162e,ax ; (8813:12A8=0)
7816:0052 B8 0C74 mov ax,0C74h
7816:0055 26: 89 07 mov es:[bx],ax
7816:0058 8C D8 mov ax,ds
7816:005A 26: 89 47 02 mov es:[bx+2],ax
7816:005E 80 3E 12AC C3 cmp byte ptr ds:data_164e,0C3h ; (8813:12AC=0)
7816:0063 74 10 je loc_3 ; Jump if equal
7816:0065 80 3E 1D0C 01 cmp byte ptr ds:data_165e,1 ; (8813:1D0C=0)
7816:006A 75 09 jne loc_3 ; Jump if not equal
7816:006C C6 06 10C3 01 mov byte ptr ds:data_158e,1 ; (8813:10C3=0)
7816:0071 90 nop
7816:0072 E9 0177 jmp loc_17 ; (01EC)
7816:0075 loc_3: ; xref 7816:0063, 006A
7816:0075 B8 0000 mov ax,0
7816:0078 8E C0 mov es,ax
7816:007A E9 0000 jmp loc_4 ; (007D)
7816:007D loc_4: ; xref 7816:007A
7816:007D B5 03 mov ch,3
7816:007F BA 0015 mov dx,15h
7816:0082 B8 0024 mov ax,24h
7816:0085 90 nop
7816:0086 50 push ax
7816:0087 E8 0946 call sub_18 ; (09D0)
7816:008A A1 0006 mov ax,ds:data_144e ; (8813:0006=0)
7816:008D F6 DC neg ah
7816:008F F6 D8 neg al
7816:0091 FB sti ; Enable interrupts
7816:0092 8B 1E 1252 mov bx,ds:data_160e ; (8813:1252=0)
7816:0096 26: 39 07 cmp es:[bx],ax
7816:0099 75 13 jne loc_5 ; Jump if not equal
7816:009B E8 0D65 call sub_33 ; (0E03)
7816:009E 72 0E jc loc_5 ; Jump if carry Set
7816:00A0 E8 0D46 call sub_32 ; (0DE9)
7816:00A3 72 09 jc loc_5 ; Jump if carry Set
7816:00A5 C6 06 10C2 01 mov byte ptr ds:data_157e,1 ; (8813:10C2=0)
7816:00AA 90 nop
7816:00AB E9 013E jmp loc_17 ; (01EC)
7816:00AE loc_5: ; xref 7816:0099, 009E, 00A3
7816:00AE E8 0DA4 call sub_37 ; (0E55)
7816:00B1 E8 0CCA call sub_30 ; (0D7E)
7816:00B4 C7 06 11E0 0000 mov data_120,0 ; (7816:11E0=0)
7816:00BA 80 FA 03 cmp dl,3
7816:00BD 74 02 je loc_6 ; Jump if equal
7816:00BF 73 06 jnc loc_7 ; Jump if carry=0
7816:00C1 loc_6: ; xref 7816:00BD
7816:00C1 B6 00 mov dh,0
7816:00C3 89 16 11E0 mov data_120,dx ; (7816:11E0=0)
7816:00C7 loc_7: ; xref 7816:00BF, 0108
7816:00C7 B8 0001 mov ax,1
7816:00CA A3 00D5 mov data_41,ax ; (7816:00D5=0)
7816:00CD B8 0004 mov ax,4
7816:00D0 A3 00D7 mov data_42,ax ; (7816:00D7=0)
7816:00D3 EB 04 jmp short loc_8 ; (00D9)
7816:00D5 0000 data_41 dw 0 ; xref 7816:00CA, 00F3, 00F9
7816:00D7 0000 data_42 dw 0 ; xref 7816:00D0, 00F0
7816:00D9 loc_8: ; xref 7816:00D3, 00FD
7816:00D9 B8 0201 mov ax,201h
7816:00DC 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:00E0 B5 00 mov ch,0
7816:00E2 B1 01 mov cl,1
7816:00E4 B6 00 mov dh,0
7816:00E6 8A 16 11E0 mov dl,byte ptr data_120 ; (7816:11E0=0)
7816:00EA 1E push ds
7816:00EB 07 pop es
7816:00EC CD 13 int 13h ; Disk dl=drive a ah=func 02h
; read sectors to memory es:bx
7816:00EE 73 1A jnc loc_10 ; Jump if carry=0
7816:00F0 A1 00D7 mov ax,data_42 ; (7816:00D7=0)
7816:00F3 3B 06 00D5 cmp ax,data_41 ; (7816:00D5=0)
7816:00F7 74 06 je loc_9 ; Jump if equal
7816:00F9 FF 06 00D5 inc data_41 ; (7816:00D5=0)
7816:00FD EB DA jmp short loc_8 ; (00D9)
7816:00FF loc_9: ; xref 7816:00F7, 010D
7816:00FF E8 0016 call sub_1 ; (0118)
7816:0102 C7 06 11E0 0000 mov data_120,0 ; (7816:11E0=0)
7816:0108 EB BD jmp short loc_7 ; (00C7)
7816:010A loc_10: ; xref 7816:00EE
7816:010A E8 07B9 call sub_16 ; (08C6)
7816:010D 72 F0 jc loc_9 ; Jump if carry Set
7816:010F E8 0019 call sub_2 ; (012B)
7816:0112 E8 0050 call sub_3 ; (0165)
7816:0115 E9 00D4 jmp loc_17 ; (01EC)
copylock endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; éδó«ñ ß««íΘÑ¡¿∩ "éßΓáó∞ΓÑ ¬½ετÑó«⌐ ñ¿ß¬ ..." ¿ Γ.ñ.
;
; Called from: 7816:00FF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_1 proc near
7816:0118 .BA 10DB mov dx,offset data_93 ; (7816:10DB=0Dh)
7816:011B B4 09 mov ah,9
7816:011D CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:011F .BA 1264 mov dx,offset ds:[1264h] ; (7816:1264=20h)
7816:0122 B4 09 mov ah,9
7816:0124 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:0126 B4 01 mov ah,1
7816:0128 CD 21 int 21h ; DOS Services ah=function 01h
; get keybd char al, with echo
7816:012A C3 retn
sub_1 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Åα«óÑα¬á ¬½ετá
;
; Called from: 7816:010F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_2 proc near
7816:012B 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:012F A1 0006 mov ax,word ptr ds:[6] ; (7816:0006=0E69Dh)
7816:0132 3B 07 cmp ax,[bx]
7816:0134 74 2E je loc_ret_13 ; Jump if equal
7816:0136 40 inc ax
7816:0137 75 01 jnz loc_11 ; Jump if not zero
7816:0139 C3 retn
7816:013A loc_11: ; xref 7816:0137
7816:013A .BA 0144 mov dx,offset data_43 ; (7816:0144=0Dh)
7816:013D B4 09 mov ah,9
7816:013F CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:0141 EB 1E jmp short loc_12 ; (0161)
7816:0143 90 db 90h
7816:0144 0D 0A 09 2A 2A 20 data_43 db 0Dh, 0Ah, 9, '** ìÑóÑα¡δ⌐ N ¬½ετá' ; xref 7816:013A, 013F
7816:014A 8D A5 A2 A5 E0 AD
7816:0150 EB A9 20 4E 20 AA
7816:0156 AB EE E7 A0
7816:015A 20 20 20 20 2A 2A db ' **$'
7816:0160 24
7816:0161 loc_12: ; xref 7816:0141
7816:0161 E9 0B78 jmp loc_159 ; (0CDC)
7816:0164 loc_ret_13: ; xref 7816:0134
7816:0164 C3 retn
sub_2 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; éδó«ñ ßÑα¿¿, óÑαß¿¿ ¿ Γ.ñ.
;
; Called from: 7816:0112
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_3 proc near
7816:0165 80 3E 0015 4E cmp byte ptr ds:[15h],4Eh ; (7816:0015=0B2h) 'N'
7816:016A 75 01 jne loc_14 ; Jump if not equal
7816:016C C3 retn
7816:016D loc_14: ; xref 7816:016A
7816:016D 33 D2 xor dx,dx ; Zero register
7816:016F B4 02 mov ah,2
7816:0171 B7 00 mov bh,0
7816:0173 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
7816:0175 B8 0920 mov ax,920h
7816:0178 B9 07D0 mov cx,7D0h
7816:017B BB 0007 mov bx,7
7816:017E CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
7816:0180 .BA 018C mov dx,offset data_44 ; (7816:018C=20h)
7816:0183 B4 09 mov ah,9
7816:0185 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:0187 EB 12 jmp short loc_15 ; (019B)
7816:0189 90 0D 0A db 90h, 0Dh, 0Ah
7816:018C 20 20 20 4E 20 E1 data_44 db ' N ßÑα¿¿ $' ; xref 7816:0180, 0185
7816:0192 A5 E0 A8 A8 20 20
7816:0198 20 20 24
7816:019B loc_15: ; xref 7816:0187
7816:019B 8B 16 12AA mov dx,data_132 ; (7816:12AA=14ADh)
7816:019F 83 C2 20 add dx,20h
7816:01A2 B4 09 mov ah,9
7816:01A4 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:01A6 8B 16 12AA mov dx,data_132 ; (7816:12AA=14ADh)
7816:01AA 83 C2 40 add dx,40h
7816:01AD B4 09 mov ah,9
7816:01AF CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:01B1 .BA 01BB mov dx,offset data_45 ; (7816:01BB=0Dh)
7816:01B4 B4 09 mov ah,9
7816:01B6 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:01B8 EB 12 jmp short loc_16 ; (01CC)
7816:01BA 90 db 90h
7816:01BB 0D 0A 20 20 20 82 data_45 db 0Dh, 0Ah, ' éÑαß¿∩ : $' ; xref 7816:01B1, 01B6
7816:01C1 A5 E0 E1 A8 EF 20
7816:01C7 3A 20 20 20 24
7816:01CC loc_16: ; xref 7816:01B8
7816:01CC 8B 16 12AA mov dx,data_132 ; (7816:12AA=14ADh)
7816:01D0 83 C2 60 add dx,60h
7816:01D3 B4 09 mov ah,9
7816:01D5 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:01D7 8B 16 12AA mov dx,data_132 ; (7816:12AA=14ADh)
7816:01DB .81 C2 0080 add dx,offset ds:[80h] ; (7816:0080=15h)
7816:01DF B4 09 mov ah,9
7816:01E1 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:01E3 .BA 10DB mov dx,offset data_93 ; (7816:10DB=0Dh)
7816:01E6 B4 09 mov ah,9
7816:01E8 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:01EA C3 retn
sub_3 endp
7816:01EB 90 db 90h
7816:01EC loc_17: ; xref 7816:0072, 00AB, 0115
7816:01EC B9 00D9 mov cx,0D9h
7816:01EF .BF 003A mov di,offset ds:[3Ah] ; (7816:003A=0D0h)
7816:01F2 E8 0B6E call sub_28 ; (0D63)
7816:01F5 B5 03 mov ch,3
7816:01F7 BA 0007 mov dx,7
7816:01FA B8 0482 mov ax,482h
7816:01FD 90 nop
7816:01FE 50 push ax
7816:01FF E8 07CE call sub_18 ; (09D0)
7816:0202 80 3E 10C3 01 cmp byte ptr data_75,1 ; (7816:10C3=0)
7816:0207 FB sti ; Enable interrupts
7816:0208 90 nop
7816:0209 90 nop
7816:020A 80 3E 10C2 01 cmp byte ptr data_74,1 ; (7816:10C2=0)
7816:020F 74 03 je loc_18 ; Jump if equal
7816:0211 EB 0A jmp short loc_19 ; (021D)
7816:0213 90 db 90h
7816:0214 loc_18: ; xref 7816:020F
7816:0214 C7 06 11CE 0001 mov data_111,1 ; (7816:11CE=0)
7816:021A E9 00CC jmp loc_32 ; (02E9)
7816:021D loc_19: ; xref 7816:0211
7816:021D C6 06 0D3E 81 mov byte ptr data_66,81h ; (7816:0D3E=0)
7816:0222 90 nop
7816:0223 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:0227 8B 87 00A0 mov ax,ds:data_39e[bx] ; (7816:00A0=46E8h)
7816:022B A3 10D9 mov data_92,ax ; (7816:10D9=0)
7816:022E A3 0D3F mov data_67,ax ; (7816:0D3F=0)
7816:0231 A1 1256 mov ax,word ptr ds:[1256h] ; (7816:1256=0F7h)
7816:0234 A2 10C6 mov data_78,al ; (7816:10C6=0F8h)
7816:0237 C6 06 10CB 46 mov byte ptr data_83,46h ; (7816:10CB=46h) 'F'
7816:023C C6 06 10C9 01 mov byte ptr data_81,1 ; (7816:10C9=1)
7816:0241 B0 00 mov al,0
7816:0243 A2 10C8 mov data_80,al ; (7816:10C8=0)
7816:0246 A0 1256 mov al,byte ptr ds:[1256h] ; (7816:1256=0F7h)
7816:0249 A2 10CA mov data_82,al ; (7816:10CA=0F8h)
7816:024C E8 0D1E call sub_43 ; (0F6D)
7816:024F C6 06 10C6 09 mov byte ptr data_78,9 ; (7816:10C6=0F8h)
7816:0254 90 nop
7816:0255 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:0259 A3 0D3F mov data_67,ax ; (7816:0D3F=0)
7816:025C 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:0260 .81 C3 0083 add bx,offset ds:[83h] ; (7816:0083=24h)
7816:0264 B9 0100 mov cx,100h
7816:0267 BA 0003 mov dx,3
7816:026A 8B 3E 10D9 mov di,data_92 ; (7816:10D9=0)
7816:026E E8 099B call sub_23 ; (0C0C)
7816:0271 83 F9 02 cmp cx,2
7816:0274 74 05 je loc_20 ; Jump if equal
7816:0276 72 03 jc loc_20 ; Jump if carry Set
7816:0278 E9 0A3F jmp loc_157 ; (0CBA)
7816:027B loc_20: ; xref 7816:0274, 0276
7816:027B 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:027F B9 0040 mov cx,40h
7816:0282 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:0286 E8 08D2 call sub_20 ; (0B5B)
7816:0289 8B 17 mov dx,[bx]
7816:028B FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:028F 81 FA 92F2 cmp dx,92F2h
7816:0293 74 03 je loc_21 ; Jump if equal
7816:0295 E9 0A14 jmp loc_156 ; (0CAC)
7816:0298 loc_21: ; xref 7816:0293
7816:0298 43 inc bx
7816:0299 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:029D E8 08CC call sub_21 ; (0B6C)
7816:02A0 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:02A4 B9 0013 mov cx,13h
7816:02A7 locloop_22: ; xref 7816:02AF
7816:02A7 3A 37 cmp dh,[bx]
7816:02A9 74 03 je loc_23 ; Jump if equal
7816:02AB E9 09FE jmp loc_156 ; (0CAC)
7816:02AE loc_23: ; xref 7816:02A9
7816:02AE 43 inc bx
7816:02AF E2 F6 loop locloop_22 ; Loop if cx > 0
7816:02B1 4B dec bx
7816:02B2 loc_24: ; xref 7816:02B5
7816:02B2 43 inc bx
7816:02B3 3A 37 cmp dh,[bx]
7816:02B5 74 FB je loc_24 ; Jump if equal
7816:02B7 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:02BB 43 inc bx
7816:02BC 43 inc bx
7816:02BD 8A 37 mov dh,[bx]
7816:02BF 80 FE 00 cmp dh,0
7816:02C2 74 08 je loc_25 ; Jump if equal
7816:02C4 80 FE FF cmp dh,0FFh
7816:02C7 74 03 je loc_25 ; Jump if equal
7816:02C9 EB 04 jmp short loc_26 ; (02CF)
7816:02CB 90 nop
7816:02CC loc_25: ; xref 7816:02C2, 02C7
7816:02CC EB 04 jmp short loc_27 ; (02D2)
7816:02CE 90 nop
7816:02CF loc_26: ; xref 7816:02C9
7816:02CF EB 04 jmp short loc_28 ; (02D5)
7816:02D1 90 nop
7816:02D2 loc_27: ; xref 7816:02CC
7816:02D2 EB 04 jmp short loc_29 ; (02D8)
7816:02D4 90 db 90h
7816:02D5 loc_28: ; xref 7816:02CF
7816:02D5 E9 09D4 jmp loc_156 ; (0CAC)
7816:02D8 loc_29: ; xref 7816:02D2
7816:02D8 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:02DC B9 0008 mov cx,8
7816:02DF locloop_30: ; xref 7816:02E7
7816:02DF 43 inc bx
7816:02E0 3A 37 cmp dh,[bx]
7816:02E2 74 03 je loc_31 ; Jump if equal
7816:02E4 E9 09C5 jmp loc_156 ; (0CAC)
7816:02E7 loc_31: ; xref 7816:02E2
7816:02E7 E2 F6 loop locloop_30 ; Loop if cx > 0
7816:02E9 loc_32: ; xref 7816:021A
7816:02E9 90 nop
7816:02EA B9 0074 mov cx,74h
7816:02ED .BF 0202 mov di,offset ds:[202h] ; (7816:0202=80h)
7816:02F0 E8 0A70 call sub_28 ; (0D63)
7816:02F3 E9 0000 jmp loc_33 ; (02F6)
7816:02F6 loc_33: ; xref 7816:02F3
7816:02F6 B5 03 mov ch,3
7816:02F8 BA 000A mov dx,0Ah
7816:02FB B8 0494 mov ax,494h
7816:02FE 50 push ax
7816:02FF E8 06CE call sub_18 ; (09D0)
7816:0302 C7 06 02F4 000C mov word ptr ds:[2F4h],0Ch ; (7816:02F4=0)
7816:0308 FB sti ; Enable interrupts
7816:0309 83 3E 11CE 01 cmp data_111,1 ; (7816:11CE=0)
7816:030E 75 03 jne loc_34 ; Jump if not equal
7816:0310 E9 0370 jmp loc_78 ; (0683)
7816:0313 loc_34: ; xref 7816:030E
7816:0313 C6 06 10CB 46 mov byte ptr data_83,46h ; (7816:10CB=46h) 'F'
7816:0318 C6 06 10C9 01 mov byte ptr data_81,1 ; (7816:10C9=1)
7816:031D B0 00 mov al,0
7816:031F A2 10C8 mov data_80,al ; (7816:10C8=0)
7816:0322 B0 03 mov al,3
7816:0324 A2 10CA mov data_82,al ; (7816:10CA=0F8h)
7816:0327 E8 0C43 call sub_43 ; (0F6D)
7816:032A C6 06 0D3E C1 mov byte ptr data_66,0C1h ; (7816:0D3E=0)
7816:032F 90 nop
7816:0330 C7 06 11D6 004E mov data_114,4Eh ; (7816:11D6=4Eh)
7816:0336 E8 0B48 call sub_38 ; (0E81)
7816:0339 E8 0B81 call sub_39 ; (0EBD)
7816:033C B8 0002 mov ax,2
7816:033F E8 0BEB call sub_41 ; (0F2D)
7816:0342 C7 06 10E4 0014 mov data_97,14h ; (7816:10E4=0)
7816:0348 loc_35: ; xref 7816:0359
7816:0348 FF 0E 10E4 dec data_97 ; (7816:10E4=0)
7816:034C 74 25 jz loc_36 ; Jump if zero
7816:034E E8 0B30 call sub_38 ; (0E81)
7816:0351 E8 0180 call sub_5 ; (04D4)
7816:0354 A0 11E2 mov al,data_121 ; (7816:11E2=0)
7816:0357 24 C0 and al,0C0h
7816:0359 75 ED jnz loc_35 ; Jump if not zero
7816:035B 8A 16 11E5 mov dl,data_122 ; (7816:11E5=0)
7816:035F E8 0BF3 call sub_42 ; (0F55)
7816:0362 E8 0B9C call sub_40 ; (0F01)
7816:0365 80 FA 02 cmp dl,2
7816:0368 74 10 je loc_37 ; Jump if equal
7816:036A C7 06 11D6 0059 mov data_114,59h ; (7816:11D6=4Eh)
7816:0370 EB 08 jmp short loc_37 ; (037A)
7816:0372 90 db 90h
7816:0373 loc_36: ; xref 7816:034C
7816:0373 E8 0B8B call sub_40 ; (0F01)
7816:0376 E9 0941 jmp loc_157 ; (0CBA)
7816:0379 90 db 90h
7816:037A loc_37: ; xref 7816:0368, 0370
7816:037A E8 0B40 call sub_39 ; (0EBD)
7816:037D C7 06 11B0 10FC mov data_104,10FCh ; (7816:11B0=0)
7816:0383 B9 0002 mov cx,2
7816:0386 B8 0001 mov ax,1
7816:0389 A3 0394 mov data_49,ax ; (7816:0394=0)
7816:038C B8 0002 mov ax,2
7816:038F A3 0396 mov data_50,ax ; (7816:0396=0)
7816:0392 EB 04 jmp short loc_38 ; (0398)
7816:0394 0000 data_49 dw 0 ; xref 7816:0389, 0403, 0409
7816:0396 0000 data_50 dw 0 ; xref 7816:038F, 0400
7816:0398 loc_38: ; xref 7816:0392, 040D
7816:0398 8C D8 mov ax,ds
7816:039A 8E C0 mov es,ax
7816:039C 51 push cx
7816:039D 57 push di
7816:039E B9 0024 mov cx,24h
7816:03A1 B0 00 mov al,0
7816:03A3 .BF 118C mov di,offset data_102 ; (7816:118C=0)
7816:03A6 F3/ AA rep stosb ; Rep when cx >0 Store al to es:[di]
7816:03A8 5F pop di
7816:03A9 59 pop cx
7816:03AA B8 0001 mov ax,1
7816:03AD A3 03B8 mov data_51,ax ; (7816:03B8=0)
7816:03B0 B8 0002 mov ax,2
7816:03B3 A3 03BA mov data_52,ax ; (7816:03BA=0)
7816:03B6 EB 04 jmp short loc_39 ; (03BC)
7816:03B8 0000 data_51 dw 0 ; xref 7816:03AD, 03F1, 03F7
7816:03BA 0000 data_52 dw 0 ; xref 7816:03B3, 03EE
7816:03BC loc_39: ; xref 7816:03B6, 03FB
7816:03BC A1 11B6 mov ax,data_107 ; (7816:11B6=0)
7816:03BF A3 11DE mov data_119,ax ; (7816:11DE=0)
7816:03C2 E8 0B68 call sub_41 ; (0F2D)
7816:03C5 B8 118C mov ax,118Ch
7816:03C8 A3 10E8 mov data_99,ax ; (7816:10E8=0)
7816:03CB A3 11B4 mov data_106,ax ; (7816:11B4=0)
7816:03CE E8 0062 call sub_4 ; (0433)
7816:03D1 A1 11B8 mov ax,data_108 ; (7816:11B8=0)
7816:03D4 A3 11DE mov data_119,ax ; (7816:11DE=0)
7816:03D7 E8 0B53 call sub_41 ; (0F2D)
7816:03DA B8 119E mov ax,119Eh
7816:03DD A3 10E8 mov data_99,ax ; (7816:10E8=0)
7816:03E0 A3 11B4 mov data_106,ax ; (7816:11B4=0)
7816:03E3 E8 004D call sub_4 ; (0433)
7816:03E6 E8 0164 call sub_7 ; (054D)
7816:03E9 72 03 jc loc_40 ; Jump if carry Set
7816:03EB E9 0285 jmp loc_77 ; (0673)
7816:03EE loc_40: ; xref 7816:03E9
7816:03EE A1 03BA mov ax,data_52 ; (7816:03BA=0)
7816:03F1 3B 06 03B8 cmp ax,data_51 ; (7816:03B8=0)
7816:03F5 74 06 je loc_41 ; Jump if equal
7816:03F7 FF 06 03B8 inc data_51 ; (7816:03B8=0)
7816:03FB EB BF jmp short loc_39 ; (03BC)
7816:03FD loc_41: ; xref 7816:03F5
7816:03FD E8 0B55 call sub_42 ; (0F55)
7816:0400 A1 0396 mov ax,data_50 ; (7816:0396=0)
7816:0403 3B 06 0394 cmp ax,data_49 ; (7816:0394=0)
7816:0407 74 06 je loc_42 ; Jump if equal
7816:0409 FF 06 0394 inc data_49 ; (7816:0394=0)
7816:040D EB 89 jmp short loc_38 ; (0398)
7816:040F loc_42: ; xref 7816:0407
7816:040F A1 11B8 mov ax,data_108 ; (7816:11B8=0)
7816:0412 A3 11DE mov data_119,ax ; (7816:11DE=0)
7816:0415 E8 0B15 call sub_41 ; (0F2D)
7816:0418 E8 01D1 call sub_10 ; (05EC)
7816:041B E8 012F call sub_7 ; (054D)
7816:041E 72 03 jc loc_43 ; Jump if carry Set
7816:0420 E9 0250 jmp loc_77 ; (0673)
7816:0423 loc_43: ; xref 7816:041E
7816:0423 E8 0ADB call sub_40 ; (0F01)
7816:0426 A1 10E0 mov ax,data_95 ; (7816:10E0=0)
7816:0429 A3 0D41 mov data_68,ax ; (7816:0D41=0)
7816:042C 89 0E 0D3F mov data_67,cx ; (7816:0D3F=0)
7816:0430 E9 0887 jmp loc_157 ; (0CBA)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ö«α¼¿α«óá¡¿Ñ ¼áßß¿ó«ó ñ½¿Γѽ∞¡«ßΓ¿ ºá»¿ß¿ ¡á ñ«α«ª¬π.
;
; Called from: 7816:03CE, 03E3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_4 proc near
7816:0433 A1 11DE mov ax,data_119 ; (7816:11DE=0)
7816:0436 A3 11DC mov data_118,ax ; (7816:11DC=0)
7816:0439 loc_44: ; xref 7816:04D1
7816:0439 E8 09F7 call sub_35 ; (0E33)
7816:043C C7 06 10E4 0064 mov data_97,64h ; (7816:10E4=0)
7816:0442 EB 0F jmp short loc_46 ; (0453)
7816:0444 90 db 90h
7816:0445 loc_45: ; xref 7816:0494
7816:0445 .BA 0451 mov dx,offset data_53 ; (7816:0451=2Ah)
7816:0448 B4 09 mov ah,9
7816:044A CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:044C EB 05 jmp short loc_46 ; (0453)
7816:044E 90 0D 0A db 90h, 0Dh, 0Ah
7816:0451 2A 24 data_53 db '*$' ; xref 7816:0445, 044A
7816:0453 loc_46: ; xref 7816:0442, 044C, 04AE
7816:0453 FF 0E 10E4 dec data_97 ; (7816:10E4=0)
7816:0457 75 03 jnz loc_47 ; Jump if not zero
7816:0459 E9 06E0 jmp loc_117 ; (0B3C)
7816:045C loc_47: ; xref 7816:0457
7816:045C E8 0A22 call sub_38 ; (0E81)
7816:045F E8 0072 call sub_5 ; (04D4)
7816:0462 A0 11E7 mov al,data_123 ; (7816:11E7=0)
7816:0465 A2 10E6 mov data_98,al ; (7816:10E6=0)
7816:0468 A1 10D6 mov ax,data_90 ; (7816:10D6=0)
7816:046B A3 10D4 mov data_89,ax ; (7816:10D4=0)
7816:046E B8 0001 mov ax,1
7816:0471 A3 047C mov data_54,ax ; (7816:047C=0)
7816:0474 B8 0009 mov ax,9
7816:0477 A3 047E mov data_55,ax ; (7816:047E=0)
7816:047A EB 04 jmp short loc_48 ; (0480)
7816:047C 0000 data_54 dw 0 ; xref 7816:0471, 0499, 049F
7816:047E 0000 data_55 dw 0 ; xref 7816:0477, 0496
7816:0480 loc_48: ; xref 7816:047A, 04A3
7816:0480 E8 0051 call sub_5 ; (04D4)
7816:0483 A0 11E5 mov al,data_122 ; (7816:11E5=0)
7816:0486 B4 00 mov ah,0
7816:0488 3B 06 11DC cmp ax,data_118 ; (7816:11DC=0)
7816:048C 74 03 je loc_49 ; Jump if equal
7816:048E EB 38 jmp short loc_52 ; (04C8)
7816:0490 90 db 90h
7816:0491 loc_49: ; xref 7816:048C
7816:0491 E8 0080 call sub_6 ; (0514)
7816:0494 72 AF jc loc_45 ; Jump if carry Set
7816:0496 A1 047E mov ax,data_55 ; (7816:047E=0)
7816:0499 3B 06 047C cmp ax,data_54 ; (7816:047C=0)
7816:049D 74 06 je loc_50 ; Jump if equal
7816:049F FF 06 047C inc data_54 ; (7816:047C=0)
7816:04A3 EB DB jmp short loc_48 ; (0480)
7816:04A5 loc_50: ; xref 7816:049D
7816:04A5 A0 11E7 mov al,data_123 ; (7816:11E7=0)
7816:04A8 3A 06 10E6 cmp al,data_98 ; (7816:10E6=0)
7816:04AC 74 02 je loc_51 ; Jump if equal
7816:04AE EB A3 jmp short loc_46 ; (0453)
7816:04B0 loc_51: ; xref 7816:04AC
7816:04B0 8B 3E 11B0 mov di,data_104 ; (7816:11B0=0)
7816:04B4 8B 36 11B4 mov si,data_106 ; (7816:11B4=0)
7816:04B8 B9 0009 mov cx,9
7816:04BB FC cld ; Clear direction
7816:04BC 8C D8 mov ax,ds
7816:04BE 8E C0 mov es,ax
7816:04C0 F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
7816:04C2 83 06 11B0 12 add data_104,12h ; (7816:11B0=0)
7816:04C7 C3 retn
7816:04C8 loc_52: ; xref 7816:048E
7816:04C8 E8 0A8A call sub_42 ; (0F55)
7816:04CB A1 11DC mov ax,data_118 ; (7816:11DC=0)
7816:04CE E8 0A5C call sub_41 ; (0F2D)
7816:04D1 E9 FF65 jmp loc_44 ; (0439)
sub_4 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ÅÑαÑñáτá ¬«¼á¡ñδ 4Ah ó ¬«¡Γα«½Ñα ìâîä.
;
; Called from: 7816:0351, 045F, 0480
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_5 proc near
7816:04D4 FA cli ; Disable interrupts
7816:04D5 E4 21 in al,21h ; port 21h, 8259-1 int IMR
7816:04D7 A2 11D8 mov data_115,al ; (7816:11D8=0)
7816:04DA E4 A1 in al,0A1h ; port 0A1h
7816:04DC A2 11DA mov data_117,al ; (7816:11DA=0)
7816:04DF B0 BF mov al,0BFh
7816:04E1 E6 21 out 21h,al ; port 21h, 8259-1 int comands
7816:04E3 B0 FF mov al,0FFh
7816:04E5 E6 A1 out 0A1h,al ; port 0A1h, inhibit IRQ8 RTC
; al = 0FFh, inhibit interrupts
7816:04E7 FB sti ; Enable interrupts
7816:04E8 C6 06 10D2 FF mov byte ptr data_87,0FFh ; (7816:10D2=0)
7816:04ED B4 4A mov ah,4Ah ; 'J'
7816:04EF E8 0B0C call sub_44 ; (0FFE)
7816:04F2 8A 26 11E0 mov ah,byte ptr data_120 ; (7816:11E0=0)
7816:04F6 E8 0B05 call sub_44 ; (0FFE)
7816:04F9 loc_53: ; xref 7816:04FF
7816:04F9 F4 hlt ; Halt processor
7816:04FA 80 3E 10D2 00 cmp byte ptr data_87,0 ; (7816:10D2=0)
7816:04FF 75 F8 jne loc_53 ; Jump if not equal
7816:0501 FA cli ; Disable interrupts
7816:0502 A0 11D8 mov al,data_115 ; (7816:11D8=0)
7816:0505 E6 21 out 21h,al ; port 21h, 8259-1 int comands
7816:0507 A0 11DA mov al,data_117 ; (7816:11DA=0)
7816:050A E6 A1 out 0A1h,al ; port 0A1h, inhibit IRQ8 RTC
7816:050C FB sti ; Enable interrupts
7816:050D E8 0B4C call sub_46 ; (105C)
7816:0510 E8 0B87 call sub_47 ; (109A)
7816:0513 C3 retn
sub_5 endp
; Å«ñ»α«úαá¼¼δ sub_6 ... sub_13 «íαáíáΓδóáεΓ αѺπ½∞ΓáΓδ óαѼѡ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ ºá»¿ß¿ ¡á ñ«α«ª¬π.
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:0491
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_6 proc near
7816:0514 8B 16 10D4 mov dx,data_89 ; (7816:10D4=0)
7816:0518 A1 10D6 mov ax,data_90 ; (7816:10D6=0)
7816:051B A3 10D4 mov data_89,ax ; (7816:10D4=0)
7816:051E 2B 16 10D6 sub dx,data_90 ; (7816:10D6=0)
7816:0522 .BB 11E7 mov bx,offset data_123 ; (7816:11E7=0)
7816:0525 8A 0F mov cl,[bx]
7816:0527 .BB 0000 mov bx,offset ds:[0] ; (7816:0000=0AEh)
7816:052A FE C9 dec cl
7816:052C 80 F9 08 cmp cl,8
7816:052F 74 02 je loc_54 ; Jump if equal
7816:0531 73 18 jnc loc_56 ; Jump if carry=0
7816:0533 loc_54: ; xref 7816:052F
7816:0533 B5 00 mov ch,0
7816:0535 03 C9 add cx,cx
7816:0537 03 1E 10E8 add bx,data_99 ; (7816:10E8=0)
7816:053B 03 D9 add bx,cx
7816:053D 8B 0F mov cx,[bx]
7816:053F 0B C9 or cx,cx ; Zero ?
7816:0541 74 04 jz loc_55 ; Jump if zero
7816:0543 03 D1 add dx,cx
7816:0545 D1 DA rcr dx,1 ; Rotate thru carry
7816:0547 loc_55: ; xref 7816:0541
7816:0547 89 17 mov [bx],dx
7816:0549 F8 clc ; Clear carry flag
7816:054A C3 retn
7816:054B loc_56: ; xref 7816:0531
7816:054B F9 stc ; Set carry flag
7816:054C C3 retn
sub_6 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:03E6, 041B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_7 proc near
7816:054D .BB 118C mov bx,offset data_102 ; (7816:118C=0)
7816:0550 .BE 119E mov si,offset data_103 ; (7816:119E=0)
7816:0553 .BF 10EA mov di,offset data_100 ; (7816:10EA=0)
7816:0556 E8 0044 call sub_8 ; (059D)
7816:0559 73 01 jnc loc_57 ; Jump if carry=0
7816:055B C3 retn
7816:055C loc_57: ; xref 7816:0559
7816:055C .BE 119E mov si,offset data_103 ; (7816:119E=0)
7816:055F 8B 16 125A mov dx,word ptr ds:[125Ah] ; (7816:125A=14h)
7816:0563 8B 4C 02 mov cx,[si+2]
7816:0566 81 F9 4650 cmp cx,4650h
7816:056A 73 03 jae loc_58 ; Jump if above or =
7816:056C B9 4650 mov cx,4650h
7816:056F loc_58: ; xref 7816:056A
7816:056F B8 0000 mov ax,0
7816:0572 F7 F1 div cx ; ax,dx rem=dx:ax/reg
7816:0574 8B D8 mov bx,ax
7816:0576 83 3E 11D6 59 cmp data_114,59h ; (7816:11D6=4Eh)
7816:057B 75 03 jne loc_59 ; Jump if not equal
7816:057D 83 C3 0A add bx,0Ah
7816:0580 loc_59: ; xref 7816:057B
7816:0580 89 1E 10E2 mov data_96,bx ; (7816:10E2=0)
7816:0584 .BB 11BC mov bx,offset data_110 ; (7816:11BC=0)
7816:0587 .BE 10EA mov si,offset data_100 ; (7816:10EA=0)
7816:058A B9 0009 mov cx,9
7816:058D locloop_60: ; xref 7816:0599
7816:058D E8 003A call sub_9 ; (05CA)
7816:0590 73 01 jnc loc_61 ; Jump if carry=0
7816:0592 C3 retn
7816:0593 loc_61: ; xref 7816:0590
7816:0593 83 C3 02 add bx,2
7816:0596 83 C6 02 add si,2
7816:0599 E2 F2 loop locloop_60 ; Loop if cx > 0
7816:059B F8 clc ; Clear carry flag
7816:059C C3 retn
sub_7 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:0556
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_8 proc near
7816:059D B9 0009 mov cx,9
7816:05A0 locloop_62: ; xref 7816:05C4
7816:05A0 8B 17 mov dx,[bx]
7816:05A2 2B 14 sub dx,[si]
7816:05A4 9C pushf ; Push flags
7816:05A5 79 02 jns loc_63 ; Jump if not sign
7816:05A7 F7 DA neg dx
7816:05A9 loc_63: ; xref 7816:05A5
7816:05A9 39 14 cmp [si],dx
7816:05AB 72 1A jb loc_65 ; Jump if below
7816:05AD 74 18 jz loc_65 ; Jump if zero
7816:05AF B8 0000 mov ax,0
7816:05B2 F7 34 div word ptr [si] ; ax,dxrem=dx:ax/data
7816:05B4 9D popf ; Pop flags
7816:05B5 79 02 jns loc_64 ; Jump if not sign
7816:05B7 F7 D8 neg ax
7816:05B9 loc_64: ; xref 7816:05B5
7816:05B9 89 05 mov [di],ax
7816:05BB 83 C3 02 add bx,2
7816:05BE 83 C6 02 add si,2
7816:05C1 83 C7 02 add di,2
7816:05C4 E2 DA loop locloop_62 ; Loop if cx > 0
7816:05C6 C3 retn
7816:05C7 loc_65: ; xref 7816:05AB, 05AD
7816:05C7 58 pop ax
7816:05C8 F9 stc ; Set carry flag
7816:05C9 C3 retn
sub_8 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:058D
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_9 proc near
7816:05CA 8B 14 mov dx,[si]
7816:05CC 81 FA 8000 cmp dx,8000h
7816:05D0 74 12 je loc_67 ; Jump if equal
7816:05D2 8B 07 mov ax,[bx]
7816:05D4 2B C2 sub ax,dx
7816:05D6 8B D0 mov dx,ax
7816:05D8 79 02 jns loc_66 ; Jump if not sign
7816:05DA F7 D8 neg ax
7816:05DC loc_66: ; xref 7816:05D8
7816:05DC 3B 06 10E2 cmp ax,data_96 ; (7816:10E2=0)
7816:05E0 74 02 je loc_67 ; Jump if equal
7816:05E2 73 02 jnc loc_68 ; Jump if carry=0
7816:05E4 loc_67: ; xref 7816:05D0, 05E0
7816:05E4 F8 clc ; Clear carry flag
7816:05E5 C3 retn
7816:05E6 loc_68: ; xref 7816:05E2
7816:05E6 89 16 10E0 mov data_95,dx ; (7816:10E0=0)
7816:05EA F9 stc ; Set carry flag
7816:05EB C3 retn
sub_9 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:0418
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_10 proc near
7816:05EC E8 0020 call sub_11 ; (060F)
7816:05EF E8 004C call sub_12 ; (063E)
7816:05F2 8B 3E 11B2 mov di,data_105 ; (7816:11B2=0)
7816:05F6 B1 04 mov cl,4
7816:05F8 D3 EF shr di,cl ; Shift w/zeros fill
7816:05FA 83 FF 50 cmp di,50h
7816:05FD 72 03 jb loc_69 ; Jump if below
7816:05FF BF 0050 mov di,50h
7816:0602 loc_69: ; xref 7816:05FD
7816:0602 83 FF 14 cmp di,14h
7816:0605 73 03 jae loc_70 ; Jump if above or =
7816:0607 BF 0014 mov di,14h
7816:060A loc_70: ; xref 7816:0605
7816:060A 89 3E 125A mov word ptr ds:[125Ah],di ; (7816:125A=14h)
7816:060E C3 retn
sub_10 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:05EC
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_11 proc near
7816:060F .BF 10FC mov di,offset data_101 ; (7816:10FC=0)
7816:0612 B9 0012 mov cx,12h
7816:0615 locloop_71: ; xref 7816:063B
7816:0615 BA 0000 mov dx,0
7816:0618 8B 1D mov bx,[di]
7816:061A 03 5D 24 add bx,[di+24h]
7816:061D 73 01 jnc loc_72 ; Jump if carry=0
7816:061F 42 inc dx
7816:0620 loc_72: ; xref 7816:061D
7816:0620 03 5D 48 add bx,[di+48h]
7816:0623 73 01 jnc loc_73 ; Jump if carry=0
7816:0625 42 inc dx
7816:0626 loc_73: ; xref 7816:0623
7816:0626 03 5D 6C add bx,[di+6Ch]
7816:0629 73 01 jnc loc_74 ; Jump if carry=0
7816:062B 42 inc dx
7816:062C loc_74: ; xref 7816:0629
7816:062C D1 DA rcr dx,1 ; Rotate thru carry
7816:062E D1 DB rcr bx,1 ; Rotate thru carry
7816:0630 D1 DA rcr dx,1 ; Rotate thru carry
7816:0632 D1 DB rcr bx,1 ; Rotate thru carry
7816:0634 89 9D 0090 mov ds:data_38e[di],bx ; (7816:0090=0FBD8h)
7816:0638 83 C7 02 add di,2
7816:063B E2 D8 loop locloop_71 ; Loop if cx > 0
7816:063D C3 retn
sub_11 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:05EF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_12 proc near
7816:063E .BF 10FC mov di,offset data_101 ; (7816:10FC=0)
7816:0641 BA 0000 mov dx,0
7816:0644 B9 0012 mov cx,12h
7816:0647 locloop_75: ; xref 7816:0661
7816:0647 8B 1D mov bx,[di]
7816:0649 E8 001C call sub_13 ; (0668)
7816:064C 8B 5D 24 mov bx,[di+24h]
7816:064F E8 0016 call sub_13 ; (0668)
7816:0652 8B 5D 48 mov bx,[di+48h]
7816:0655 E8 0010 call sub_13 ; (0668)
7816:0658 8B 5D 6C mov bx,[di+6Ch]
7816:065B E8 000A call sub_13 ; (0668)
7816:065E 83 C7 02 add di,2
7816:0661 E2 E4 loop locloop_75 ; Loop if cx > 0
7816:0663 89 16 11B2 mov data_105,dx ; (7816:11B2=0)
7816:0667 C3 retn
sub_12 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:0649, 064F, 0655, 065B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_13 proc near
7816:0668 2B 9D 0090 sub bx,ds:data_38e[di] ; (7816:0090=0FBD8h)
7816:066C 79 02 jns loc_76 ; Jump if not sign
7816:066E F7 DB neg bx
7816:0670 loc_76: ; xref 7816:066C
7816:0670 03 D3 add dx,bx
7816:0672 C3 retn
sub_13 endp
7816:0673 loc_77: ; xref 7816:03EB, 0420
7816:0673 80 3E 12AC C3 cmp byte ptr ds:[12ACh],0C3h ; (7816:12AC=0C3h)
7816:0678 74 09 je loc_78 ; Jump if equal
7816:067A 80 3E 10C4 4E cmp byte ptr data_76,4Eh ; (7816:10C4=4Eh) 'N'
7816:067F 74 0C je loc_79 ; Jump if equal
7816:0681 F8 clc ; Clear carry flag
7816:0682 C3 retn
7816:0683 loc_78: ; xref 7816:0310, 0678
7816:0683 F8 clc ; Clear carry flag
7816:0684 B9 0185 mov cx,185h
7816:0687 .BF 037A mov di,offset ds:[37Ah] ; (7816:037A=0E8h)
7816:068A E8 06D6 call sub_28 ; (0D63)
7816:068D loc_79: ; xref 7816:067F
7816:068D B5 03 mov ch,3
7816:068F BA 000B mov dx,0Bh
7816:0692 B8 022C mov ax,22Ch
7816:0695 90 nop
7816:0696 50 push ax
7816:0697 E8 0336 call sub_18 ; (09D0)
7816:069A D0 EC shr ah,1 ; Shift w/zeros fill
7816:069C FB sti ; Enable interrupts
7816:069D 83 3E 11CE 01 cmp data_111,1 ; (7816:11CE=0)
7816:06A2 75 03 jne loc_80 ; Jump if not equal
7816:06A4 EB 7B jmp short loc_86 ; (0721)
7816:06A6 90 db 90h
7816:06A7 loc_80: ; xref 7816:06A2
7816:06A7 C6 06 0D3E E1 mov byte ptr data_66,0E1h ; (7816:0D3E=0)
7816:06AC 90 nop
7816:06AD A1 11B8 mov ax,data_108 ; (7816:11B8=0)
7816:06B0 A3 11DC mov data_118,ax ; (7816:11DC=0)
7816:06B3 E8 006E call sub_14 ; (0724)
7816:06B6 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:06BA 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:06BE B8 0001 mov ax,1
7816:06C1 A3 06CC mov data_57,ax ; (7816:06CC=0)
7816:06C4 B8 0008 mov ax,8
7816:06C7 A3 06CE mov data_58,ax ; (7816:06CE=0)
7816:06CA EB 04 jmp short loc_81 ; (06D0)
7816:06CC 0000 data_57 dw 0 ; xref 7816:06C1, 06DF, 06E5
7816:06CE 0000 data_58 dw 0 ; xref 7816:06C7, 06DC
7816:06D0 loc_81: ; xref 7816:06CA, 06E9
7816:06D0 B9 0100 mov cx,100h
7816:06D3 E8 0485 call sub_20 ; (0B5B)
7816:06D6 BE 1231 mov si,1231h
7816:06D9 E8 050A call sub_22 ; (0BE6)
7816:06DC A1 06CE mov ax,data_58 ; (7816:06CE=0)
7816:06DF 3B 06 06CC cmp ax,data_57 ; (7816:06CC=0)
7816:06E3 74 06 je loc_82 ; Jump if equal
7816:06E5 FF 06 06CC inc data_57 ; (7816:06CC=0)
7816:06E9 EB E5 jmp short loc_81 ; (06D0)
7816:06EB loc_82: ; xref 7816:06E3
7816:06EB FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:06EF B9 0100 mov cx,100h
7816:06F2 E8 0466 call sub_20 ; (0B5B)
7816:06F5 8B 17 mov dx,[bx]
7816:06F7 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:06FB 81 FA F62B cmp dx,0F62Bh
7816:06FF 74 03 je loc_83 ; Jump if equal
7816:0701 E9 05A8 jmp loc_156 ; (0CAC)
7816:0704 loc_83: ; xref 7816:06FF
7816:0704 43 inc bx
7816:0705 FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:0709 E8 0460 call sub_21 ; (0B6C)
7816:070C FE 06 0D3E inc data_66 ; (7816:0D3E=0)
7816:0710 BE 1227 mov si,1227h
7816:0713 80 FE 4E cmp dh,4Eh ; 'N'
7816:0716 74 03 je loc_84 ; Jump if equal
7816:0718 EB 04 jmp short loc_85 ; (071E)
7816:071A 90 db 90h
7816:071B loc_84: ; xref 7816:0716
7816:071B BE 121B mov si,121Bh
7816:071E loc_85: ; xref 7816:0718
7816:071E E8 04C5 call sub_22 ; (0BE6)
7816:0721 loc_86: ; xref 7816:06A4
7816:0721 EB 73 jmp short loc_89 ; (0796)
7816:0723 90 db 90h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ùΓÑ¡¿Ñ ¿ »α«óÑα¬á ß«ñÑন¼«ú« ñ«α«ª¬¿.
;
; Called from: 7816:06B3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_14 proc near
7816:0724 B0 46 mov al,46h ; 'F'
7816:0726 B6 33 mov dh,33h ; '3'
7816:0728 B2 00 mov dl,0
7816:072A E8 03CF call sub_19 ; (0AFC)
7816:072D B4 42 mov ah,42h ; 'B'
7816:072F E8 08CC call sub_44 ; (0FFE)
7816:0732 8A 26 11E0 mov ah,byte ptr data_120 ; (7816:11E0=0)
7816:0736 E8 08C5 call sub_44 ; (0FFE)
7816:0739 8A 26 11DC mov ah,byte ptr data_118 ; (7816:11DC=0)
7816:073D E8 08BE call sub_44 ; (0FFE)
7816:0740 B4 00 mov ah,0
7816:0742 E8 08B9 call sub_44 ; (0FFE)
7816:0745 B4 01 mov ah,1
7816:0747 E8 08B4 call sub_44 ; (0FFE)
7816:074A B4 06 mov ah,6
7816:074C E8 08AF call sub_44 ; (0FFE)
7816:074F B4 09 mov ah,9
7816:0751 E8 08AA call sub_44 ; (0FFE)
7816:0754 B4 1A mov ah,1Ah
7816:0756 E8 08A5 call sub_44 ; (0FFE)
7816:0759 B4 FF mov ah,0FFh
7816:075B E8 08A0 call sub_44 ; (0FFE)
7816:075E FC cld ; Clear direction
7816:075F FB sti ; Enable interrupts
7816:0760 C6 06 10D2 FF mov byte ptr data_87,0FFh ; (7816:10D2=0)
7816:0765 loc_87: ; xref 7816:076A
7816:0765 80 3E 10D2 00 cmp byte ptr data_87,0 ; (7816:10D2=0)
7816:076A 75 F9 jne loc_87 ; Jump if not equal
7816:076C E8 08ED call sub_46 ; (105C)
7816:076F E8 0928 call sub_47 ; (109A)
7816:0772 E8 078C call sub_40 ; (0F01)
7816:0775 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:0779 .81 C3 173E add bx,data_134e ; (7816:173E=0)
7816:077D B9 0200 mov cx,200h
7816:0780 BA 0003 mov dx,3
7816:0783 8B 3E 11BA mov di,data_109 ; (7816:11BA=0)
7816:0787 E8 0482 call sub_23 ; (0C0C)
7816:078A 83 F9 02 cmp cx,2
7816:078D 74 05 je loc_ret_88 ; Jump if equal
7816:078F 72 03 jc loc_ret_88 ; Jump if carry Set
7816:0791 E9 0526 jmp loc_157 ; (0CBA)
7816:0794 loc_ret_88: ; xref 7816:078D, 078F
7816:0794 C3 retn
sub_14 endp
7816:0795 90 db 90h
7816:0796 loc_89: ; xref 7816:0721
7816:0796 B9 007E mov cx,7Eh
7816:0799 .BF 069A mov di,offset ds:[69Ah] ; (7816:069A=0D0h)
7816:079C E8 05C4 call sub_28 ; (0D63)
7816:079F B5 03 mov ch,3
7816:07A1 BA 0014 mov dx,14h
7816:07A4 B8 011A mov ax,11Ah
7816:07A7 90 nop
7816:07A8 50 push ax
7816:07A9 E8 0224 call sub_18 ; (09D0)
7816:07AC F7 D8 neg ax
7816:07AE 80 3E 10C2 01 cmp byte ptr data_74,1 ; (7816:10C2=0)
7816:07B3 FB sti ; Enable interrupts
7816:07B4 75 2F jnz loc_91 ; Jump if not zero
7816:07B6 80 3E 0015 4E cmp byte ptr ds:[15h],4Eh ; (7816:0015=0B2h) 'N'
7816:07BB 74 28 je loc_91 ; Jump if equal
7816:07BD 33 D2 xor dx,dx ; Zero register
7816:07BF B4 02 mov ah,2
7816:07C1 B7 00 mov bh,0
7816:07C3 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
7816:07C5 B8 0920 mov ax,920h
7816:07C8 B9 07D0 mov cx,7D0h
7816:07CB BB 0007 mov bx,7
7816:07CE CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
7816:07D0 .BA 07DA mov dx,offset data_59 ; (7816:07DA=0Dh)
7816:07D3 B4 09 mov ah,9
7816:07D5 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:07D7 EB 05 jmp short loc_90 ; (07DE)
7816:07D9 90 db 90h
7816:07DA 0D 0A 20 24 data_59 db 0Dh, 0Ah, ' $' ; xref 7816:07D0, 07D5
7816:07DE loc_90: ; xref 7816:07D7
7816:07DE .BA 10DB mov dx,offset data_93 ; (7816:10DB=0Dh)
7816:07E1 B4 09 mov ah,9
7816:07E3 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:07E5 loc_91: ; xref 7816:07B4, 07BB
7816:07E5 80 3E 10C2 01 cmp byte ptr data_74,1 ; (7816:10C2=0)
7816:07EA 74 0D je loc_92 ; Jump if equal
7816:07EC E8 0ABD call sub_48 ; (12AC)
7816:07EF 80 3E 0000 4C cmp byte ptr ds:[0],4Ch ; (7816:0000=0AEh) 'L'
7816:07F4 74 03 je loc_92 ; Jump if equal
7816:07F6 E8 00AD call sub_15 ; (08A6)
7816:07F9 loc_92: ; xref 7816:07EA, 07F4
7816:07F9 E8 018A call sub_17 ; (0986)
7816:07FC E8 0493 call sub_24 ; (0C92)
7816:07FF B9 040E mov cx,40Eh
7816:0802 .BF 08A6 mov di,data_152e ; (8813:08A6=0)
7816:0805 E8 055B call sub_28 ; (0D63)
7816:0808 A1 10CC mov ax,ds:data_159e ; (8813:10CC=0)
7816:080B 8E C0 mov es,ax
7816:080D 80 3E 0001 45 cmp byte ptr ds:data_142e,45h ; (8813:0001=0) 'E'
7816:0812 74 03 je loc_93 ; Jump if equal
7816:0814 EB 50 jmp short loc_96 ; (0866)
7816:0816 90 db 90h
7816:0817 loc_93: ; xref 7816:0812
7816:0817 06 push es
7816:0818 8C C2 mov dx,es
7816:081A 83 C2 10 add dx,10h
7816:081D .BB 0000 mov bx,offset ds:[0] ; (7816:0000=0AEh)
7816:0820 8B 0E 001A mov cx,ds:data_149e ; (8813:001A=0)
7816:0824 83 F9 00 cmp cx,0
7816:0827 74 18 je loc_95 ; Jump if equal
7816:0829 A1 001C mov ax,ds:data_150e ; (8813:001C=0)
7816:082C 1E push ds
7816:082D 8E D8 mov ds,ax
7816:082F locloop_94: ; xref 7816:083E
7816:082F 8B 3F mov di,[bx]
7816:0831 8B 47 02 mov ax,[bx+2]
7816:0834 03 C2 add ax,dx
7816:0836 8E C0 mov es,ax
7816:0838 26: 01 15 add es:[di],dx
7816:083B 83 C3 04 add bx,4
7816:083E E2 EF loop locloop_94 ; Loop if cx > 0
7816:0840 1F pop ds
7816:0841 loc_95: ; xref 7816:0827
7816:0841 A1 000B mov ax,ds:data_146e ; (8813:000B=0)
7816:0844 8E C0 mov es,ax
7816:0846 8B 1E 0009 mov bx,ds:data_145e ; (8813:0009=0)
7816:084A A0 000F mov al,ds:data_148e ; (8813:000F=0)
7816:084D 26: 88 07 mov es:[bx],al
7816:0850 07 pop es
7816:0851 1F pop ds
7816:0852 58 pop ax
7816:0853 FA cli ; Disable interrupts
7816:0854 2E: 8B 16 0004 mov dx,word ptr cs:[4] ; (7816:0004=0)
7816:0859 8E D2 mov ss,dx
7816:085B 2E: 8B 26 0002 mov sp,word ptr cs:[2] ; (7816:0002=0FEC0h)
7816:0860 FB sti ; Enable interrupts
7816:0861 2E: FF 2E 0009 jmp dword ptr cs:[9] ; (7816:0009=0FFh)
7816:0866 loc_96: ; xref 7816:0814
7816:0866 .BB 0100 mov bx,data_10e ; (0000:0100=59h)
7816:0869 A0 000F mov al,ds:data_16e ; (011A:000F=74h)
7816:086C 26: 88 07 mov es:[bx],al
7816:086F A0 0010 mov al,ds:data_17e ; (011A:0010=3)
7816:0872 26: 88 47 01 mov es:[bx+1],al
7816:0876 A0 0011 mov al,ds:data_18e ; (011A:0011=0E9h)
7816:0879 26: 88 47 02 mov es:[bx+2],al
7816:087D 80 3E 0001 4C cmp byte ptr ds:data_15e,4Ch ; (011A:0001=7Fh) 'L'
7816:0882 74 05 je loc_97 ; Jump if equal
7816:0884 1F pop ds
7816:0885 58 pop ax
7816:0886 E9 F77F ;* jmp loc_1 ;*(0008)
7816:0886 E9 7F F7 db 0E9h, 7Fh,0F7h
7816:0889 loc_97: ; xref 7816:0882
7816:0889 .BB 8000 mov bx,data_11e ; (0000:8000=0F6h)
7816:088C A0 0012 mov al,ds:data_1e ; (0000:0012=70h)
7816:088F 26: 88 07 mov es:[bx],al
7816:0892 A0 0013 mov al,ds:data_2e ; (0000:0013=0)
7816:0895 26: 88 47 01 mov es:[bx+1],al
7816:0899 A0 0014 mov al,ds:data_3e ; (0000:0014=72h)
7816:089C 26: 88 47 02 mov es:[bx+2],al
7816:08A0 1F pop ds
7816:08A1 58 pop ax
7816:08A2 E9 F763 jmp loc_1 ;*(0008)
7816:08A5 90 db 90h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ôßΓá¡«ó¬á «Γ¼ÑΓ«¬ ñ½∩ »«óΓ«α¡«ú« ºá»πß¬á »α«úαá¼¼δ íѺ ¬½ετÑó«ú«
; ñ¿ß¬á
;
; Called from: 7816:07F6
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_15 proc near
7816:08A6 B8 0000 mov ax,0
7816:08A9 8E C0 mov es,ax
7816:08AB A1 0006 mov ax,word ptr ds:[6] ; (7816:0006=0E69Dh)
7816:08AE F6 DC neg ah
7816:08B0 F6 D8 neg al
7816:08B2 8B 1E 1252 mov bx,word ptr ds:[1252h] ; (7816:1252=1F0h)
7816:08B6 26: 89 07 mov es:[bx],ax
7816:08B9 E8 0568 call sub_34 ; (0E24)
7816:08BC FA cli ; Disable interrupts
7816:08BD E4 21 in al,21h ; port 21h, 8259-1 int IMR
7816:08BF 24 7F and al,7Fh
7816:08C1 E6 21 out 21h,al ; port 21h, 8259-1 int comands
7816:08C3 FB sti ; Enable interrupts
7816:08C4 C3 retn
sub_15 endp
7816:08C5 90 db 90h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Å«ñßτÑΓ ¿ »α«óÑα¬á ¬.ß. ñá¡¡δσ, ßτ¿Γá¡¡δσ ß ñ¿ß¬á
;
; Called from: 7816:010A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_16 proc near
7816:08C6 E9 0000 jmp loc_98 ; (08C9)
7816:08C9 loc_98: ; xref 7816:08C6
7816:08C9 B5 03 mov ch,3
7816:08CB BA 0004 mov dx,4
7816:08CE B8 00B0 mov ax,0B0h
7816:08D1 90 nop
7816:08D2 50 push ax
7816:08D3 E8 00FA call sub_18 ; (09D0)
7816:08D6 C7 06 08C7 000D mov word ptr ds:[8C7h],0Dh ; (7816:08C7=0)
7816:08DC FB sti ; Enable interrupts
7816:08DD B8 0001 mov ax,1
7816:08E0 A3 08EB mov data_61,ax ; (7816:08EB=0)
7816:08E3 B8 0004 mov ax,4
7816:08E6 A3 08ED mov data_62,ax ; (7816:08ED=0)
7816:08E9 EB 04 jmp short loc_99 ; (08EF)
7816:08EB 0000 data_61 dw 0 ; xref 7816:08E0, 092A, 0930
7816:08ED 0000 data_62 dw 0 ; xref 7816:08E6, 0927
7816:08EF loc_99: ; xref 7816:08E9, 0934
7816:08EF C6 06 10C5 01 mov byte ptr data_77,1 ; (7816:10C5=1)
7816:08F4 90 nop
7816:08F5 A0 1250 mov al,byte ptr ds:[1250h] ; (7816:1250=0F9h)
7816:08F8 A2 10C6 mov data_78,al ; (7816:10C6=0F8h)
7816:08FB C6 06 10C7 1A mov byte ptr data_79,1Ah ; (7816:10C7=1Ah)
7816:0900 90 nop
7816:0901 C6 06 10CB 46 mov byte ptr data_83,46h ; (7816:10CB=46h) 'F'
7816:0906 C6 06 10C9 01 mov byte ptr data_81,1 ; (7816:10C9=1)
7816:090B B0 00 mov al,0
7816:090D A2 10C8 mov data_80,al ; (7816:10C8=0)
7816:0910 A0 1250 mov al,byte ptr ds:[1250h] ; (7816:1250=0F9h)
7816:0913 A2 10CA mov data_82,al ; (7816:10CA=0F8h)
7816:0916 E8 0654 call sub_43 ; (0F6D)
7816:0919 C6 06 10C5 02 mov byte ptr data_77,2 ; (7816:10C5=1)
7816:091E 90 nop
7816:091F C6 06 10C6 09 mov byte ptr data_78,9 ; (7816:10C6=0F8h)
7816:0924 90 nop
7816:0925 73 11 jnc loc_101 ; Jump if carry=0
7816:0927 A1 08ED mov ax,data_62 ; (7816:08ED=0)
7816:092A 3B 06 08EB cmp ax,data_61 ; (7816:08EB=0)
7816:092E 74 06 je loc_100 ; Jump if equal
7816:0930 FF 06 08EB inc data_61 ; (7816:08EB=0)
7816:0934 EB B9 jmp short loc_99 ; (08EF)
7816:0936 loc_100: ; xref 7816:092E
7816:0936 F9 stc ; Set carry flag
7816:0937 C3 retn
7816:0938 loc_101: ; xref 7816:0925
7816:0938 8B 36 12AA mov si,data_132 ; (7816:12AA=14ADh)
7816:093C BA 0000 mov dx,0
7816:093F 8A 3E 1250 mov bh,byte ptr ds:[1250h] ; (7816:1250=0F9h)
7816:0943 B9 00FE mov cx,0FEh
7816:0946 locloop_102: ; xref 7816:094D
7816:0946 8A 1C mov bl,[si]
7816:0948 03 D3 add dx,bx
7816:094A F6 1C neg byte ptr [si]
7816:094C 46 inc si
7816:094D E2 F7 loop locloop_102 ; Loop if cx > 0
7816:094F 39 14 cmp [si],dx
7816:0951 F9 stc ; Set carry flag
7816:0952 74 01 jz loc_103 ; Jump if zero
7816:0954 C3 retn
7816:0955 loc_103: ; xref 7816:0952
7816:0955 FC cld ; Clear direction
7816:0956 B9 000C mov cx,0Ch
7816:0959 8B 36 12AA mov si,data_132 ; (7816:12AA=14ADh)
7816:095D .81 C6 00B0 add si,offset ds:[0B0h] ; (7816:00B0=0Dh)
7816:0961 8C D8 mov ax,ds
7816:0963 8E C0 mov es,ax
7816:0965 .BF 11B6 mov di,offset data_107 ; (7816:11B6=0)
7816:0968 F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
7816:096A FC cld ; Clear direction
7816:096B 8B 36 12AA mov si,data_132 ; (7816:12AA=14ADh)
7816:096F 83 C6 20 add si,20h
7816:0972 .BF 00E0 mov di,data_9e ; (0000:00E0=45h)
7816:0975 A1 10CC mov ax,data_84 ; (7816:10CC=0)
7816:0978 8E C0 mov es,ax
7816:097A B9 001F mov cx,1Fh
7816:097D F3/ A4 rep movsb ; Rep when cx >0 Mov [si] to es:[di]
7816:097F 8C D8 mov ax,ds
7816:0981 8E C0 mov es,ax
7816:0983 F8 clc ; Clear carry flag
7816:0984 C3 retn
sub_16 endp
7816:0985 90 db 90h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; äÑΦ¿Σαᵿ∩ πτáßΓ¬á »α«úαá¼¼δ.
;
; Called from: 7816:07F9
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_17 proc near
7816:0986 B5 03 mov ch,3
7816:0988 BA 000E mov dx,0Eh
7816:098B B8 003E mov ax,3Eh
7816:098E 50 push ax
7816:098F E8 003E call sub_18 ; (09D0)
7816:0992 A1 10CC mov ax,data_84 ; (7816:10CC=0)
7816:0995 8E C0 mov es,ax
7816:0997 FB sti ; Enable interrupts
7816:0998 83 3E 1262 4E cmp word ptr ds:[1262h],4Eh ; (7816:1262=59h)
7816:099D 74 28 je loc_105 ; Jump if equal
7816:099F .BB 0108 mov bx,data_12e ; (0011:0108=0)
7816:09A2 8B 0E 0016 mov cx,word ptr ds:[16h] ; (7816:0016=0FFE8h)
7816:09A6 83 E9 40 sub cx,40h
7816:09A9 72 1C jc loc_105 ; Jump if carry Set
7816:09AB 8A D1 mov dl,cl
7816:09AD 8A 36 1250 mov dh,byte ptr ds:[1250h] ; (7816:1250=0F9h)
7816:09B1 33 16 0006 xor dx,word ptr ds:[6] ; (7816:0006=0E69Dh)
7816:09B5 1E push ds
7816:09B6 8C C0 mov ax,es
7816:09B8 05 0011 add ax,11h
7816:09BB locloop_104: ; xref 7816:09C4
7816:09BB 8E D8 mov ds,ax
7816:09BD 29 17 sub [bx],dx
7816:09BF F7 DA neg dx
7816:09C1 F6 DE neg dh
7816:09C3 40 inc ax
7816:09C4 E2 F5 loop locloop_104 ; Loop if cx > 0
7816:09C6 1F pop ds
7816:09C7 loc_105: ; xref 7816:099D, 09A9
7816:09C7 B9 001F mov cx,1Fh
7816:09CA BF 0992 mov di,992h
7816:09CD E9 0393 jmp loc_161 ; (0D63)
sub_17 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; âÑ¡Ñαᵿ∩ π¬áºá¡¡«ú« πτáßΓ¬á »α«úαá¼¼δ.
;
; Called from: 7816:0037, 0087, 01FF, 02FF, 0697, 07A9, 08D3
; 098F, 0A8F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_18 proc near
7816:09D0 FA cli
7816:09D1 FC cld
7816:09D2 B8 0000 mov ax,0
7816:09D5 8E C0 mov es,ax
7816:09D7 8C C8 mov ax,cs
7816:09D9 26: A3 0006 mov es:data_2e,ax
7816:09DD E8 0000 call sub_18a
sub_18a:
7816:09E0 8B EC mov bp,sp
7816:09E2 5F pop di
7816:09E3 .81 C7 0008 add di,offset ds:[8]
7816:09E7 90 nop
7816:09E8 loc_106: ; xref 7816:0A31
7816:09E8 BB 0074 mov bx,74h
7816:09EB 03 DF add bx,di
7816:09ED 26: 89 1E 0004 mov word ptr es:[4],bx ; (7816:0004=0)
7816:09F2 9C pushf ; Push flags
7816:09F3 81 4E 00 0100 or word ptr [bp],100h
7816:09F8 9D popf ; Pop flags
7816:09F9 8A CE mov cl,dh
7816:09FB 2E: 89 8D 005D mov cs:[di+5Dh],cx
7816:0A00 80 E1 07 and cl,7
7816:0A03 80 C1 07 add cl,7
7816:0A06 loc_107: ; xref 7816:0A1F
7816:0A06 .BB 008C mov bx,offset ds:[8Ch] ; (7816:008C=0)
7816:0A09 loc_108: ; xref 7816:0A0F
7816:0A09 2E: 33 11 xor dx,cs:[bx+di]
7816:0A0C 83 EB 02 sub bx,2
7816:0A0F 73 F8 jnc loc_108 ; Jump if carry=0
7816:0A11 .BB 0088 mov bx,offset ds:[88h] ; (7816:0088=46h)
7816:0A14 03 DF add bx,di
7816:0A16 26: 89 1E 0004 mov word ptr es:[4],bx ; (7816:0004=0)
7816:0A1B D1 CA ror dx,1 ; Rotate
7816:0A1D FE C9 dec cl
7816:0A1F 75 E5 jnz loc_107 ; Jump if not zero
7816:0A21 8C C0 mov ax,es
7816:0A23 03 D0 add dx,ax
7816:0A25 26: 89 0E 000C mov word ptr es:[0Ch],cx ; (7816:000C=0E800h)
7816:0A2A 26: 89 16 000E mov word ptr es:[0Eh],dx ; (7816:000E=0E200h)
7816:0A2F FE CD dec ch
7816:0A31 75 B5 jnz loc_106 ; Jump if not zero
7816:0A33 5B pop bx
7816:0A34 5E pop si
7816:0A35 83 EE 02 sub si,2
7816:0A38 loc_109: ; xref 7816:0A41
7816:0A38 2E: 31 10 xor cs:[bx+si],dx
7816:0A3B 42 inc dx
7816:0A3C D1 CA ror dx,1 ; Rotate
7816:0A3E 83 EE 02 sub si,2
7816:0A41 73 F5 jnc loc_109 ; Jump if carry=0
7816:0A43 FF E3 jmp bx ;*
7816:0A45 D2 01 rol byte ptr [bx+di],cl ; Rotate
7816:0A47 8B 46 00 mov ax,[bp]
7816:0A4A 25 0FC5 and ax,0FC5h
7816:0A4D 8B 76 FC mov si,[bp-4]
7816:0A50 2E: 33 04 xor ax,cs:[si]
7816:0A53 2B F7 sub si,di
7816:0A55 03 C6 add ax,si
7816:0A57 03 D0 add dx,ax
7816:0A59 D1 C2 rol dx,1 ; Rotate
7816:0A5B CF iret ; Interrupt return
sub_18 endp
7816:0A5C 8B 46 FC mov ax,[bp-4]
7816:0A5F 2B C7 sub ax,di
7816:0A61 2D 15 00 sub ax,15h
7816:0A64 75 09 jnz loc_iret
7816:0A66 B8 5F 00 mov ax,005Fh
7816:0A69 03 C7 add ax,di
7816:0A6B 26: A3 0004 mov es:[4],ax
loc_iret:
7816:0A6F CF iret
7816:0A70 .81 66 00 FEFF and [bp],0FEFFh
7816:0A75 CF iret
7816:0A76 00 00 C3 db 00h, 00h,0C3h
7816:0A79 loc_110:
7816:0A79 2D 0026 sub ax,26h
7816:0A7C B1 04 mov cl,4
7816:0A7E D3 E8 shr ax,cl ; Shift w/zeros fill
7816:0A80 8C C9 mov cx,cs
7816:0A82 03 C1 add ax,cx
7816:0A84 8E D8 mov ds,ax
7816:0A86 B5 06 mov ch,6
7816:0A88 BA 0000 mov dx,0
7816:0A8B B8 0818 mov ax,818h
7816:0A8E 50 push ax
7816:0A8F E8 FF3E call sub_18 ; (09D0)
7816:0A92 B9 0010 mov cx,10h
7816:0A95 .BB 0000 mov bx,offset ds:[0] ; (7816:0000=0AEh)
7816:0A98 FB sti ; Enable interrupts
7816:0A99 locloop_111: ; xref 7816:0A9E
7816:0A99 F7 1F neg word ptr [bx]
7816:0A9B 83 C3 02 add bx,2
7816:0A9E E2 F9 loop locloop_111 ; Loop if cx > 0
7816:0AA0 loc_112: ; xref 7816:0AD8
7816:0AA0 B1 04 mov cl,4
7816:0AA2 8B 1E 12AA mov bx,ds:data_163e ; (8813:12AA=0)
7816:0AA6 D3 EB shr bx,cl ; Shift w/zeros fill
7816:0AA8 8C D8 mov ax,ds
7816:0AAA 03 D8 add bx,ax
7816:0AAC 8B D4 mov dx,sp
7816:0AAE D3 EA shr dx,cl ; Shift w/zeros fill
7816:0AB0 8C D0 mov ax,ss
7816:0AB2 03 D0 add dx,ax
7816:0AB4 2B D3 sub dx,bx
7816:0AB6 81 FA 0200 cmp dx,200h
7816:0ABA 74 02 je loc_113 ; Jump if equal
7816:0ABC 73 06 jnc loc_114 ; Jump if carry=0
7816:0ABE loc_113: ; xref 7816:0ABA
7816:0ABE 81 06 12AA 2000 add word ptr ds:data_163e,2000h ; (8813:12AA=0)
7816:0AC4 loc_114: ; xref 7816:0ABC
7816:0AC4 8C DB mov bx,ds
7816:0AC6 D3 E3 shl bx,cl ; Shift w/zeros fill
7816:0AC8 03 1E 12AA add bx,ds:data_163e ; (8813:12AA=0)
7816:0ACC 81 C3 2000 add bx,2000h
7816:0AD0 73 08 jnc loc_115 ; Jump if carry=0
7816:0AD2 81 06 12AA 2000 add word ptr ds:data_163e,2000h ; (8813:12AA=0)
7816:0AD8 EB C6 jmp short loc_112 ; (0AA0)
7816:0ADA loc_115: ; xref 7816:0AD0
7816:0ADA 8C D8 mov ax,ds
7816:0ADC 2B 06 000D sub ax,ds:data_147e ; (8813:000D=0)
7816:0AE0 50 push ax
7816:0AE1 03 06 000B add ax,ds:data_146e ; (8813:000B=0)
7816:0AE5 A3 000B mov ds:data_146e,ax ; (8813:000B=0)
7816:0AE8 58 pop ax
7816:0AE9 03 06 0004 add ax,ds:data_143e ; (8813:0004=0)
7816:0AED A3 0004 mov ds:data_143e,ax ; (8813:0004=0)
7816:0AF0 8C D8 mov ax,ds
7816:0AF2 2B 06 001C sub ax,ds:data_150e ; (8813:001C=0)
7816:0AF6 A3 001C mov ds:data_150e,ax ; (8813:001C=0)
7816:0AF9 E9 F52E jmp loc_2 ; (002A)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ìáßΓα«⌐¬á ¼¿¬α«ßσѼδ ÅäÅ.
;
; Called from: 7816:072A, 0F84
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_19 proc near
7816:0AFC FA cli ; Disable interrupts
7816:0AFD E6 0C out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
7816:0AFF 50 push ax
7816:0B00 58 pop ax
7816:0B01 E6 0B out 0Bh,al ; port 0Bh, DMA-1 mode reg
7816:0B03 8C D8 mov ax,ds
7816:0B05 B1 04 mov cl,4
7816:0B07 D3 C0 rol ax,cl ; Rotate
7816:0B09 8A E8 mov ch,al
7816:0B0B 24 F0 and al,0F0h
7816:0B0D 03 06 12AA add ax,data_132 ; (7816:12AA=14ADh)
7816:0B11 73 02 jnc loc_116 ; Jump if carry=0
7816:0B13 FE C5 inc ch
7816:0B15 loc_116: ; xref 7816:0B11
7816:0B15 50 push ax
7816:0B16 E6 04 out 4,al ; port 4, DMA-1 bas&add ch 2
7816:0B18 8A C4 mov al,ah
7816:0B1A E6 04 out 4,al ; port 4, DMA-1 bas&add ch 2
7816:0B1C 8A C5 mov al,ch
7816:0B1E 24 0F and al,0Fh
7816:0B20 E6 81 out 81h,al ; port 81h, DMA page reg ch 2
7816:0B22 8A E6 mov ah,dh
7816:0B24 2A C0 sub al,al
7816:0B26 D1 E8 shr ax,1 ; Shift w/zeros fill
7816:0B28 8A CA mov cl,dl
7816:0B2A D3 E0 shl ax,cl ; Shift w/zeros fill
7816:0B2C 48 dec ax
7816:0B2D 50 push ax
7816:0B2E E6 05 out 5,al ; port 5, DMA-1 bas&cnt ch 2
7816:0B30 8A C4 mov al,ah
7816:0B32 E6 05 out 5,al ; port 5, DMA-1 bas&cnt ch 2
7816:0B34 FB sti ; Enable interrupts
7816:0B35 59 pop cx
7816:0B36 58 pop ax
7816:0B37 B0 02 mov al,2
7816:0B39 E6 0A out 0Ah,al ; port 0Ah, DMA-1 mask reg bit
7816:0B3B C3 retn
sub_19 endp
7816:0B3C loc_117: ; xref 7816:0459
7816:0B3C E8 03C2 call sub_40 ; (0F01)
7816:0B3F .BA 0B49 mov dx,offset data_63 ; (7816:0B49=0Dh)
7816:0B42 B4 09 mov ah,9
7816:0B44 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:0B46 EB 10 jmp short loc_118 ; (0B58)
7816:0B48 90 db 90h
7816:0B49 0D 0A 31 30 30 20 data_63 db 0Dh, 0Ah, '100 RETR ERR$' ; xref 7816:0B3F, 0B44
7816:0B4F 52 45 54 52 20 45
7816:0B55 52 52 24
7816:0B58 loc_118: ; xref 7816:0B46
7816:0B58 E9 0181 jmp loc_159 ; (0CDC)
; Å«ñ»α«úαá¼¼δ sub_20 ... sub_23 »α«óÑα∩εΓ »αáó¿½∞¡«ßΓ∞ ßτ¿Γá¡¡δσ ñá¡¡δσ.
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:0286, 06D3, 06F2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_20 proc near
7816:0B5B locloop_119: ; xref 7816:0B69
7816:0B5B 8B 17 mov dx,[bx]
7816:0B5D 83 C3 02 add bx,2
7816:0B60 81 FA F6F6 cmp dx,0F6F6h
7816:0B64 74 03 je loc_120 ; Jump if equal
7816:0B66 E9 0143 jmp loc_156 ; (0CAC)
7816:0B69 loc_120: ; xref 7816:0B64
7816:0B69 E2 F0 loop locloop_119 ; Loop if cx > 0
7816:0B6B C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: 7816:029D, 0709
sub_21:
7816:0B6C loc_121: ; xref 7816:0B70
7816:0B6C 43 inc bx
7816:0B6D 80 3F 4E cmp byte ptr [bx],4Eh ; 'N'
7816:0B70 74 FA je loc_121 ; Jump if equal
7816:0B72 80 27 F0 and byte ptr [bx],0F0h
7816:0B75 80 3F 40 cmp byte ptr [bx],40h ; '@'
7816:0B78 75 01 jne loc_122 ; Jump if not equal
7816:0B7A 43 inc bx
7816:0B7B loc_122: ; xref 7816:0B78
7816:0B7B 43 inc bx
7816:0B7C B9 0008 mov cx,8
7816:0B7F locloop_123: ; xref 7816:0BB8
7816:0B7F 8A 07 mov al,[bx]
7816:0B81 3C 00 cmp al,0
7816:0B83 74 03 je loc_124 ; Jump if equal
7816:0B85 EB 07 jmp short loc_125 ; (0B8E)
7816:0B87 90 db 90h
7816:0B88 loc_124: ; xref 7816:0B83
7816:0B88 BE 11EB mov si,11EBh
7816:0B8B EB 30 jmp short loc_132 ; (0BBD)
7816:0B8D 90 db 90h
7816:0B8E loc_125: ; xref 7816:0B85
7816:0B8E 3C FF cmp al,0FFh
7816:0B90 74 03 je loc_126 ; Jump if equal
7816:0B92 EB 07 jmp short loc_127 ; (0B9B)
7816:0B94 90 db 90h
7816:0B95 loc_126: ; xref 7816:0B90
7816:0B95 BE 1204 mov si,1204h
7816:0B98 EB 23 jmp short loc_132 ; (0BBD)
7816:0B9A 90 db 90h
7816:0B9B loc_127: ; xref 7816:0B92
7816:0B9B 3C 4E cmp al,4Eh ; 'N'
7816:0B9D 74 03 je loc_128 ; Jump if equal
7816:0B9F EB 07 jmp short loc_129 ; (0BA8)
7816:0BA1 90 db 90h
7816:0BA2 loc_128: ; xref 7816:0B9D
7816:0BA2 BE 11E9 mov si,11E9h
7816:0BA5 EB 36 jmp short loc_136 ; (0BDD)
7816:0BA7 90 db 90h
7816:0BA8 loc_129: ; xref 7816:0B9F
7816:0BA8 3C 90 cmp al,90h
7816:0BAA 74 03 je loc_130 ; Jump if equal
7816:0BAC EB 07 jmp short loc_131 ; (0BB5)
7816:0BAE 90 db 90h
7816:0BAF loc_130: ; xref 7816:0BAA
7816:0BAF BE 1202 mov si,1202h
7816:0BB2 EB 29 jmp short loc_136 ; (0BDD)
7816:0BB4 90 db 90h
7816:0BB5 loc_131: ; xref 7816:0BAC
7816:0BB5 E8 0220 call sub_31 ; (0DD8)
7816:0BB8 E2 C5 loop locloop_123 ; Loop if cx > 0
7816:0BBA E9 00EF jmp loc_156 ; (0CAC)
7816:0BBD loc_132: ; xref 7816:0B8B, 0B98, 0BC0
7816:0BBD 43 inc bx
7816:0BBE 3A 07 cmp al,[bx]
7816:0BC0 74 FB je loc_132 ; Jump if equal
7816:0BC2 B9 0008 mov cx,8
7816:0BC5 locloop_133: ; xref 7816:0BD8
7816:0BC5 8A 07 mov al,[bx]
7816:0BC7 3C C2 cmp al,0C2h
7816:0BC9 74 07 je loc_134 ; Jump if equal
7816:0BCB 3C 14 cmp al,14h
7816:0BCD 74 03 je loc_134 ; Jump if equal
7816:0BCF EB 04 jmp short loc_135 ; (0BD5)
7816:0BD1 90 nop
7816:0BD2 loc_134: ; xref 7816:0BC9, 0BCD
7816:0BD2 EB 0E jmp short loc_137 ; (0BE2)
7816:0BD4 90 db 90h
7816:0BD5 loc_135: ; xref 7816:0BCF
7816:0BD5 E8 0200 call sub_31 ; (0DD8)
7816:0BD8 E2 EB loop locloop_133 ; Loop if cx > 0
7816:0BDA E9 00CF jmp loc_156 ; (0CAC)
7816:0BDD loc_136: ; xref 7816:0BA5, 0BB2, 0BE0
7816:0BDD 43 inc bx
7816:0BDE 3A 07 cmp al,[bx]
7816:0BE0 74 FB je loc_136 ; Jump if equal
7816:0BE2 loc_137: ; xref 7816:0BD2
7816:0BE2 E8 0001 call sub_22 ; (0BE6)
7816:0BE5 C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: 7816:06D9, 071E, 0BE2
sub_22:
7816:0BE6 51 push cx
7816:0BE7 loc_138: ; xref 7816:0C02, 0C06
7816:0BE7 8B 14 mov dx,[si]
7816:0BE9 83 C6 02 add si,2
7816:0BEC FE C2 inc dl
7816:0BEE 74 18 jz loc_142 ; Jump if zero
7816:0BF0 FE CA dec dl
7816:0BF2 74 10 jz loc_141 ; Jump if zero
7816:0BF4 B5 00 mov ch,0
7816:0BF6 8A CA mov cl,dl
7816:0BF8 locloop_139: ; xref 7816:0C00
7816:0BF8 3A 37 cmp dh,[bx]
7816:0BFA 74 03 je loc_140 ; Jump if equal
7816:0BFC E9 00AD jmp loc_156 ; (0CAC)
7816:0BFF loc_140: ; xref 7816:0BFA
7816:0BFF 43 inc bx
7816:0C00 E2 F6 loop locloop_139 ; Loop if cx > 0
7816:0C02 EB E3 jmp short loc_138 ; (0BE7)
7816:0C04 loc_141: ; xref 7816:0BF2
7816:0C04 4E dec si
7816:0C05 43 inc bx
7816:0C06 EB DF jmp short loc_138 ; (0BE7)
7816:0C08 loc_142: ; xref 7816:0BEE
7816:0C08 0A C0 or al,al ; Zero ?
7816:0C0A 59 pop cx
7816:0C0B C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: 7816:026E, 0787
sub_23:
7816:0C0C locloop_143: ; xref 7816:0C2B
7816:0C0C 89 3E 0D3F mov data_67,di ; (7816:0D3F=0)
7816:0C10 8B 07 mov ax,[bx]
7816:0C12 3D 0000 cmp ax,0
7816:0C15 74 08 je loc_144 ; Jump if equal
7816:0C17 3D FFFF cmp ax,0FFFFh
7816:0C1A 74 03 je loc_144 ; Jump if equal
7816:0C1C EB 0C jmp short loc_145 ; (0C2A)
7816:0C1E 90 db 90h
7816:0C1F loc_144: ; xref 7816:0C15, 0C1A
7816:0C1F 39 47 02 cmp [bx+2],ax
7816:0C22 75 06 jne loc_145 ; Jump if not equal
7816:0C24 4A dec dx
7816:0C25 74 09 jz locloop_146 ; Jump if zero
7816:0C27 83 C3 10 add bx,10h
7816:0C2A loc_145: ; xref 7816:0C1C, 0C22
7816:0C2A 43 inc bx
7816:0C2B E2 DF loop locloop_143 ; Loop if cx > 0
7816:0C2D E9 008A jmp loc_157 ; (0CBA)
7816:0C30 locloop_146: ; xref 7816:0C25, 0C4D
7816:0C30 8A 07 mov al,[bx]
7816:0C32 3C 00 cmp al,0
7816:0C34 74 07 je loc_147 ; Jump if equal
7816:0C36 3C FF cmp al,0FFh
7816:0C38 74 03 je loc_147 ; Jump if equal
7816:0C3A EB 07 jmp short loc_148 ; (0C43)
7816:0C3C 90 db 90h
7816:0C3D loc_147: ; xref 7816:0C34, 0C38
7816:0C3D A2 10D8 mov data_91,al ; (7816:10D8=0)
7816:0C40 EB 04 jmp short loc_149 ; (0C46)
7816:0C42 90 nop
7816:0C43 loc_148: ; xref 7816:0C3A
7816:0C43 EB 04 jmp short loc_150 ; (0C49)
7816:0C45 90 nop
7816:0C46 loc_149: ; xref 7816:0C40
7816:0C46 EB 04 jmp short loc_151 ; (0C4C)
7816:0C48 90 nop
7816:0C49 loc_150: ; xref 7816:0C43
7816:0C49 EB 07 jmp short loc_152 ; (0C52)
7816:0C4B 90 db 90h
7816:0C4C loc_151: ; xref 7816:0C46
7816:0C4C 43 inc bx
7816:0C4D E2 E1 loop locloop_146 ; Loop if cx > 0
7816:0C4F EB 69 jmp short loc_157 ; (0CBA)
7816:0C51 90 db 90h
7816:0C52 loc_152: ; xref 7816:0C49
7816:0C52 32 06 10D8 xor al,data_91 ; (7816:10D8=0)
7816:0C56 BA 0000 mov dx,0
7816:0C59 loc_153: ; xref 7816:0C5E
7816:0C59 D0 E0 shl al,1 ; Shift w/zeros fill
7816:0C5B 72 03 jc loc_154 ; Jump if carry Set
7816:0C5D 42 inc dx
7816:0C5E EB F9 jmp short loc_153 ; (0C59)
7816:0C60 loc_154: ; xref 7816:0C5B
7816:0C60 D1 E1 shl cx,1 ; Shift w/zeros fill
7816:0C62 D1 E1 shl cx,1 ; Shift w/zeros fill
7816:0C64 D1 E1 shl cx,1 ; Shift w/zeros fill
7816:0C66 2B CA sub cx,dx
7816:0C68 89 0E 0D41 mov data_68,cx ; (7816:0D41=0)
7816:0C6C 2B CF sub cx,di
7816:0C6E 79 02 jns loc_ret_155 ; Jump if not sign
7816:0C70 F7 D9 neg cx
7816:0C72 loc_ret_155: ; xref 7816:0C6E
7816:0C72 C3 retn
7816:0C73 90 nop
7816:0C74 E8 00F6 call sub_29 ; (0D6D)
7816:0C77 B9 061D mov cx,61Dh
7816:0C7A .BF 003A mov di,offset ds:[3Ah] ; (7816:003A=0D0h)
7816:0C7D E8 00E3 call sub_28 ; (0D63)
7816:0C80 B9 02FD mov cx,2FDh
7816:0C83 .BF 0CAC mov di,offset ds:[0CACh] ; (7816:0CAC=8Ah)
7816:0C86 E8 00DA call sub_28 ; (0D63)
7816:0C89 E8 0006 call sub_24 ; (0C92)
7816:0C8C B4 4C mov ah,4Ch ; 'L'
7816:0C8E B0 00 mov al,0
7816:0C90 CD 21 int 21h ; DOS Services ah=function 4Ch
; terminate with al=return code
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; é«ßßΓá¡«ó½Ñ¡¿Ñ óÑ¬Γ«αá 23h.
;
; Called from: 7816:07FC, 0C89
sub_24:
7816:0C92 06 push es
7816:0C93 53 push bx
7816:0C94 B8 0000 mov ax,0
7816:0C97 8E C0 mov es,ax
7816:0C99 .BB 008C mov bx,data_8e ; (0000:008C=0F7h)
7816:0C9C A1 12A6 mov ax,ds:data_161e ; (8813:12A6=0)
7816:0C9F 26: 89 07 mov es:[bx],ax
7816:0CA2 A1 12A8 mov ax,ds:data_162e ; (8813:12A8=0)
7816:0CA5 26: 89 47 02 mov es:[bx+2],ax
7816:0CA9 5B pop bx
7816:0CAA 07 pop es
7816:0CAB C3 retn
7816:0CAC loc_156: ; xref 7816:0295, 02AB, 02D5, 02E4
; 0701, 0B66, 0BBA, 0BDA
; 0BFC
7816:0CAC 8A 17 mov dl,[bx]
7816:0CAE 2B 1E 12AA sub bx,ds:data_163e ; (8813:12AA=0)
7816:0CB2 89 1E 0D3F mov ds:data_154e,bx ; (8813:0D3F=0)
7816:0CB6 89 16 0D41 mov ds:data_155e,dx ; (8813:0D41=0)
7816:0CBA loc_157: ; xref 7816:0278, 0376, 0430, 0791
; 0C2D, 0C4F
7816:0CBA .BA 0CC4 mov dx,offset data_65 ; (7816:0CC4=0Dh)
7816:0CBD B4 09 mov ah,9
7816:0CBF CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
7816:0CC1 EB 13 jmp short loc_158 ; (0CD6)
7816:0CC3 90 db 90h
7816:0CC4 0D 0A 09 2A 8F AB data_65 db 0Dh, 0Ah, 9, '*Ž«σá∩ è«»¿∩*$' ; xref 7816:0CBA
7816:0CCA AE E5 A0 EF 20 8A
7816:0CD0 AE AF A8 EF 2A 24
7816:0CD6 loc_158: ; xref 7816:0CC1
7816:0CD6 A0 0D3E mov al,ds:data_153e ; (8813:0D3E=0)
7816:0CD9 E8 0067 call sub_25 ; (0D43)
7816:0CDC loc_159: ; xref 7816:0161, 0B58
7816:0CDC B9 0640 mov cx,640h
7816:0CDF .BF 003A mov di,data_151e ; (8813:003A=0)
7816:0CE2 E8 007E call sub_28 ; (0D63)
7816:0CE5 B9 0269 mov cx,269h
7816:0CE8 .BF 0DD8 mov di,data_156e ; (8813:0DD8=0)
7816:0CEB E8 0075 call sub_28 ; (0D63)
7816:0CEE E8 007C call sub_29 ; (0D6D)
7816:0CF1 B0 20 mov al,20h ; ' '
7816:0CF3 E8 0064 call sub_27 ; (0D5A)
7816:0CF6 8B 0E 0D41 mov cx,ds:data_155e ; (8813:0D41=0)
7816:0CFA 8B D9 mov bx,cx
7816:0CFC D1 C3 rol bx,1 ; Rotate
7816:0CFE D1 C3 rol bx,1 ; Rotate
7816:0D00 D1 C3 rol bx,1 ; Rotate
7816:0D02 D1 C3 rol bx,1 ; Rotate
7816:0D04 8A C3 mov al,bl
7816:0D06 24 F0 and al,0F0h
7816:0D08 8A E5 mov ah,ch
7816:0D0A 80 E4 0F and ah,0Fh
7816:0D0D 0A C4 or al,ah
7816:0D0F E8 0031 call sub_25 ; (0D43)
7816:0D12 B0 20 mov al,20h ; ' '
7816:0D14 E8 0043 call sub_27 ; (0D5A)
7816:0D17 8A C1 mov al,cl
7816:0D19 24 F0 and al,0F0h
7816:0D1B 8A E3 mov ah,bl
7816:0D1D 80 E4 0F and ah,0Fh
7816:0D20 0A C4 or al,ah
7816:0D22 E8 001E call sub_25 ; (0D43)
7816:0D25 B0 20 mov al,20h ; ' '
7816:0D27 E8 0030 call sub_27 ; (0D5A)
7816:0D2A 8B 1E 0D3F mov bx,ds:data_154e ; (8813:0D3F=0)
7816:0D2E 8A C7 mov al,bh
7816:0D30 E8 0010 call sub_25 ; (0D43)
7816:0D33 8A C3 mov al,bl
7816:0D35 E8 000B call sub_25 ; (0D43)
7816:0D38 B4 4C mov ah,4Ch ; 'L'
7816:0D3A B0 02 mov al,2
7816:0D3C CD 21 int 21h ; DOS Services ah=function 4Ch
; terminate with al=return code
7816:0D3E 00 data_66 db 0 ; xref 7816:021D, 0255, 0282, 028B
; 0299, 02A0, 02B7, 02D8
; 032A, 06A7, 06B6, 06EB
; 06F7, 0705, 070C
7816:0D3F 0000 data_67 dw 0 ; xref 7816:022E, 0259, 042C, 0C0C
7816:0D41 0000 data_68 dw 0 ; xref 7816:0429, 0C68
sub_20 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; éδó«ñ ß«ñÑন¼«ú« al ó 16-α¿τ¡«⌐ ß¿ßΓÑ¼Ñ ßτ¿ß½Ñ¡¿∩.
;
; Called from: 7816:0CD9, 0D0F, 0D22, 0D30, 0D35
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_25 proc near
7816:0D43 50 push ax
7816:0D44 D0 C8 ror al,1 ; Rotate
7816:0D46 D0 C8 ror al,1 ; Rotate
7816:0D48 D0 C8 ror al,1 ; Rotate
7816:0D4A D0 C8 ror al,1 ; Rotate
7816:0D4C E8 0001 call sub_26 ; (0D50)
7816:0D4F 58 pop ax
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; ÅÑαÑó«ñ τ¿ß½á ó 16_α¿τ¡πε ææ.
;
; Called from: 7816:0D4C
sub_26:
7816:0D50 24 0F and al,0Fh
7816:0D52 04 30 add al,30h ; '0'
7816:0D54 3C 39 cmp al,39h ; '9'
7816:0D56 7E 02 jle loc_160 ; Jump if < or =
7816:0D58 04 07 add al,7
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; éδó«ñ ß¿¼ó«½á ó al.
;
; Called from: 7816:0CF3, 0D14, 0D27
sub_27:
7816:0D5A loc_160: ; xref 7816:0D56
7816:0D5A 52 push dx
7816:0D5B 8A D0 mov dl,al
7816:0D5D B4 02 mov ah,2
7816:0D5F CD 21 int 21h ; DOS Services ah=function 02h
; display char dl
7816:0D61 5A pop dx
7816:0D62 C3 retn
sub_25 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; çáΓ¿αá¡¿Ñ π¬áºá¡¡«ú« πτáßΓ¬á »á¼∩Γ¿.
;
; Called from: 7816:01F2, 02F0, 068A, 079C, 0805, 0C7D, 0C86
; 0CE2, 0CEB
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_28 proc near
7816:0D63 loc_161: ; xref 7816:09CD
7816:0D63 9C pushf ; Push flags
7816:0D64 FC cld ; Clear direction
7816:0D65 8C D8 mov ax,ds
7816:0D67 8E C0 mov es,ax
7816:0D69 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
7816:0D6B 9D popf ; Pop flags
7816:0D6C C3 retn
sub_28 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; æíα«ß ¬«¡α«½½Ñαá ìâîä.
;
; Called from: 7816:0C74, 0CEE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_29 proc near
7816:0D6D B8 0000 mov ax,0
7816:0D70 CD 13 int 13h ; Disk dl=drive b ah=func 00h
; reset disk, al=return status
7816:0D72 B8 0040 mov ax,40h
7816:0D75 8E C0 mov es,ax
7816:0D77 26: C6 06 008B 00 mov byte ptr es:data_14e,0 ; (0040:008B=0)
7816:0D7D C3 retn
sub_29 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ùΓÑ¡¿Ñ ßÑ¬Γ«αá.
;
; Called from: 7816:00B1
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_30 proc near
7816:0D7E B8 0000 mov ax,0
7816:0D81 8E C0 mov es,ax
7816:0D83 .BB 004C mov bx,data_6e ; (0000:004C=92h)
7816:0D86 26: 8B 07 mov ax,es:[bx]
7816:0D89 A3 0DD3 mov data_69,ax ; (7816:0DD3=0)
7816:0D8C 26: 8B 47 02 mov ax,es:[bx+2]
7816:0D90 A3 0DD5 mov data_70,ax ; (7816:0DD5=0)
7816:0D93 B8 0DCA mov ax,0DCAh
7816:0D96 26: 89 07 mov es:[bx],ax
7816:0D99 8C D8 mov ax,ds
7816:0D9B 26: 89 47 02 mov es:[bx+2],ax
7816:0D9F 8A C2 mov al,dl
7816:0DA1 2C 41 sub al,41h ; 'A'
7816:0DA3 8B 1E 12AA mov bx,data_132 ; (7816:12AA=14ADh)
7816:0DA7 B9 0001 mov cx,1
7816:0DAA BA 0001 mov dx,1
7816:0DAD CD 25 int 25h ; Absolute disk read, drive al
7816:0DAF 9D popf ; Pop flags
7816:0DB0 B8 0000 mov ax,0
7816:0DB3 8E C0 mov es,ax
7816:0DB5 .BB 004C mov bx,data_6e ; (0000:004C=92h)
7816:0DB8 A1 0DD3 mov ax,data_69 ; (7816:0DD3=0)
7816:0DBB 26: 89 07 mov es:[bx],ax
7816:0DBE A1 0DD5 mov ax,data_70 ; (7816:0DD5=0)
7816:0DC1 26: 89 47 02 mov es:[bx+2],ax
7816:0DC5 8A 16 0DD7 mov dl,data_71 ; (7816:0DD7=0)
7816:0DC9 C3 retn
sub_30 endp
7816:0DCA 2E: 88 16 0DD7 mov cs:data_71,dl ; (7816:0DD7=0)
7816:0DCF F8 clc ; Clear carry flag
7816:0DD0 CA 0002 retf 2 ; Return far
7816:0DD3 0000 data_69 dw 0 ; xref 7816:0D89, 0DB8
7816:0DD5 0000 data_70 dw 0 ; xref 7816:0D90, 0DBE
7816:0DD7 00 data_71 db 0 ; xref 7816:0DC5, 0DCA
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; äÑΦ¿Σαᵿ∩ ßτ¿Γá¡¡«ú« ßÑ¬Γ«αá.
;
; Called from: 7816:0BB5, 0BD5
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_31 proc near
7816:0DD8 53 push bx
7816:0DD9 51 push cx
7816:0DDA FE C7 inc bh
7816:0DDC FE C7 inc bh
7816:0DDE B9 0200 mov cx,200h
7816:0DE1 locloop_162: ; xref 7816:0DE4
7816:0DE1 4B dec bx
7816:0DE2 D0 17 rcl byte ptr [bx],1 ; Rotate thru carry
7816:0DE4 E2 FB loop locloop_162 ; Loop if cx > 0
7816:0DE6 59 pop cx
7816:0DE7 5B pop bx
7816:0DE8 C3 retn
sub_31 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Åα«óÑα¬á IRQ7.
;
; Called from: 7816:00A0
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_32 proc near
7816:0DE9 E4 21 in al,21h ; port 21h, 8259-1 int IMR
7816:0DEB A8 80 test al,80h
7816:0DED 75 01 jnz loc_163 ; Jump if not zero
7816:0DEF C3 retn
7816:0DF0 loc_163: ; xref 7816:0DED
7816:0DF0 24 7F and al,7Fh
7816:0DF2 E6 21 out 21h,al ; port 21h, 8259-1 int comands
7816:0DF4 50 push ax
7816:0DF5 58 pop ax
7816:0DF6 E4 21 in al,21h ; port 21h, 8259-1 int IMR
7816:0DF8 A8 80 test al,80h
7816:0DFA 74 01 jz loc_164 ; Jump if zero
7816:0DFC C3 retn
7816:0DFD loc_164: ; xref 7816:0DFA
7816:0DFD 0C 80 or al,80h
7816:0DFF E6 21 out 21h,al ; port 21h, 8259-1 int comands
7816:0E01 F9 stc ; Set carry flag
7816:0E02 C3 retn
sub_32 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Åα«óÑα¬á »«αΓá 40h.
;
; Called from: 7816:009B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_33 proc near
7816:0E03 B9 0064 mov cx,64h
7816:0E06 52 push dx
7816:0E07 BA 0040 mov dx,40h
7816:0E0A locloop_165: ; xref 7816:0E1C
7816:0E0A EC in al,dx ; port 40h, 8253 timer 0 clock
7816:0E0B D0 E8 shr al,1 ; Shift w/zeros fill
7816:0E0D EC in al,dx ; port 40h, 8253 timer 0 clock
7816:0E0E 72 11 jc loc_167 ; Jump if carry Set
7816:0E10 EC in al,dx ; port 40h, 8253 timer 0 clock
7816:0E11 D0 E8 shr al,1 ; Shift w/zeros fill
7816:0E13 EC in al,dx ; port 40h, 8253 timer 0 clock
7816:0E14 72 0B jc loc_167 ; Jump if carry Set
7816:0E16 24 07 and al,7
7816:0E18 loc_166: ; xref 7816:0E1A
7816:0E18 FE C8 dec al
7816:0E1A 75 FC jnz loc_166 ; Jump if not zero
7816:0E1C E2 EC loop locloop_165 ; Loop if cx > 0
7816:0E1E 5A pop dx
7816:0E1F F9 stc ; Set carry flag
7816:0E20 C3 retn
7816:0E21 loc_167: ; xref 7816:0E0E, 0E14
7816:0E21 5A pop dx
7816:0E22 F8 clc ; Clear carry flag
7816:0E23 C3 retn
sub_33 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ìáτá½∞¡á∩ πßΓá¡«ó¬á ¬á¡á½á 1 Γá⌐¼Ñαá.
;
; Called from: 7816:08B9
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_34 proc near
7816:0E24 FA cli ; Disable interrupts
7816:0E25 BA 0043 mov dx,43h
7816:0E28 B0 34 mov al,34h ; '4'
7816:0E2A EE out dx,al ; port 43h, 8253 wrt timr mode
7816:0E2B B2 40 mov dl,40h ; '@'
7816:0E2D 8A C6 mov al,dh
7816:0E2F EE out dx,al ; port 40h, 8253 timer 0 clock
7816:0E30 EE out dx,al ; port 40h, 8253 timer 0 clock
7816:0E31 FB sti ; Enable interrupts
7816:0E32 C3 retn
sub_34 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ìáτá½∞¡á∩ πßΓá¡«ó¬á ¬á¡á½á 2 Γá⌐¼Ñαá.
;
; Called from: 7816:0439
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_35 proc near
7816:0E33 FA cli ; Disable interrupts
7816:0E34 BA 0043 mov dx,43h
7816:0E37 B0 B4 mov al,0B4h
7816:0E39 EE out dx,al ; port 43h, 8253 wrt timr mode
7816:0E3A B2 42 mov dl,42h ; 'B'
7816:0E3C 8A C6 mov al,dh
7816:0E3E EE out dx,al ; port 42h, 8253 timer 2 spkr
7816:0E3F EE out dx,al ; port 42h, 8253 timer 2 spkr
7816:0E40 E4 61 in al,61h ; port 61h, 8255 port B, read
7816:0E42 0C 01 or al,1
7816:0E44 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
7816:0E46 FB sti ; Enable interrupts
7816:0E47 C3 retn
sub_35 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; éαѼѡ¡á∩ ºáñÑ᪬á.
;
; Called from: 7816:0F50, 0F68, 1044, 1051
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_36 proc near
7816:0E48 locloop_168: ; xref 7816:0E4E
7816:0E48 B0 11 mov al,11h
7816:0E4A loc_169: ; xref 7816:0E4C
7816:0E4A FE C8 dec al
7816:0E4C 75 FC jnz loc_169 ; Jump if not zero
7816:0E4E E2 F8 loop locloop_168 ; Loop if cx > 0
7816:0E50 C3 retn
sub_36 endp
7816:0E51 00 00 00 00 db 0, 0, 0, 0
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Å«½πτÑ¡¿Ñ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ ¿º «¬απªÑ¡¿∩ DOS.
;
; Called from: 7816:00AE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_37 proc near
7816:0E55 A1 10CC mov ax,ds:data_159e ; (8813:10CC=0)
7816:0E58 8E C0 mov es,ax
7816:0E5A .BB 002C mov bx,data_4e ; (0000:002C=23h)
7816:0E5D 26: 8B 07 mov ax,es:[bx]
7816:0E60 8E C0 mov es,ax
7816:0E62 .BF 0000 mov di,data_166e ; (FF23:0000=0)
7816:0E65 loc_170: ; xref 7816:0E6C
7816:0E65 47 inc di
7816:0E66 26: 83 3D 00 cmp word ptr es:[di],0
7816:0E6A 74 02 je loc_171 ; Jump if equal
7816:0E6C EB F7 jmp short loc_170 ; (0E65)
7816:0E6E loc_171: ; xref 7816:0E6A
7816:0E6E 83 C7 04 add di,4
7816:0E71 26: 8A 15 mov dl,es:[di]
7816:0E74 80 E2 5F and dl,5Fh ; '_'
7816:0E77 89 3E 11D0 mov data_112,di ; (7816:11D0=0)
7816:0E7B 8C C0 mov ax,es
7816:0E7D A3 11D2 mov data_113,ax ; (7816:11D2=0FF23h)
7816:0E80 C3 retn
sub_37 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ô»αáó½Ñ¡¿Ñ ¬«¡Γα«½½Ñα«¼ ìâîä.
;
; Called from: 7816:0336, 034E, 045C, 0F6D
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_38 proc near
7816:0E81 BB 001C mov bx,1Ch
7816:0E84 83 3E 11E0 01 cmp data_120,1 ; (7816:11E0=0)
7816:0E89 74 03 je loc_172 ; Jump if equal
7816:0E8B EB 04 jmp short loc_173 ; (0E91)
7816:0E8D 90 db 90h
7816:0E8E loc_172: ; xref 7816:0E89
7816:0E8E BB 002D mov bx,2Dh
7816:0E91 loc_173: ; xref 7816:0E8B
7816:0E91 83 3E 11E0 02 cmp data_120,2 ; (7816:11E0=0)
7816:0E96 74 03 je loc_174 ; Jump if equal
7816:0E98 EB 04 jmp short loc_175 ; (0E9E)
7816:0E9A 90 db 90h
7816:0E9B loc_174: ; xref 7816:0E96
7816:0E9B BB 004E mov bx,4Eh
7816:0E9E loc_175: ; xref 7816:0E98
7816:0E9E 83 3E 11E0 03 cmp data_120,3 ; (7816:11E0=0)
7816:0EA3 74 03 je loc_176 ; Jump if equal
7816:0EA5 EB 04 jmp short loc_177 ; (0EAB)
7816:0EA7 90 db 90h
7816:0EA8 loc_176: ; xref 7816:0EA3
7816:0EA8 BB 008F mov bx,8Fh
7816:0EAB loc_177: ; xref 7816:0EA5
7816:0EAB B8 0040 mov ax,40h
7816:0EAE 8E C0 mov es,ax
7816:0EB0 26: C6 06 0040 FF mov byte ptr es:data_13e,0FFh ; (0040:0040=80h)
7816:0EB6 BA 03F2 mov dx,3F2h
7816:0EB9 8B C3 mov ax,bx
7816:0EBB EE out dx,al ; port 3F2h, dsk0 contrl output
7816:0EBC C3 retn
sub_38 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ÅÑαÑσóáΓ óÑ¬Γ«α«ó »αÑαδóá¡¿⌐ 0Eh ¿ 1Ch.
;
; Called from: 7816:0339, 037A, 0F70
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_39 proc near
7816:0EBD FA cli ; Disable interrupts
7816:0EBE 06 push es
7816:0EBF 53 push bx
7816:0EC0 B8 0000 mov ax,0
7816:0EC3 8E C0 mov es,ax
7816:0EC5 .BB 0038 mov bx,data_5e ; (0000:0038=57h)
7816:0EC8 26: 8B 07 mov ax,es:[bx]
7816:0ECB A3 10BB mov data_72,ax ; (7816:10BB=0)
7816:0ECE 26: 8B 47 02 mov ax,es:[bx+2]
7816:0ED2 A3 10BD mov data_73,ax ; (7816:10BD=0)
7816:0ED5 B8 109F mov ax,109Fh
7816:0ED8 26: 89 07 mov es:[bx],ax
7816:0EDB 8C D8 mov ax,ds
7816:0EDD 26: 89 47 02 mov es:[bx+2],ax
7816:0EE1 .BB 0070 mov bx,data_7e ; (0000:0070=53h)
7816:0EE4 26: 8B 07 mov ax,es:[bx]
7816:0EE7 A3 10CE mov data_85,ax ; (7816:10CE=0)
7816:0EEA 26: 8B 47 02 mov ax,es:[bx+2]
7816:0EEE A3 10D0 mov data_86,ax ; (7816:10D0=0)
7816:0EF1 B8 10BF mov ax,10BFh
7816:0EF4 26: 89 07 mov es:[bx],ax
7816:0EF7 8C D8 mov ax,ds
7816:0EF9 26: 89 47 02 mov es:[bx+2],ax
7816:0EFD 5B pop bx
7816:0EFE 07 pop es
7816:0EFF FB sti ; Enable interrupts
7816:0F00 C3 retn
sub_39 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; é«ßßΓá¡«ó½Ñ¡¿Ñ óÑ¬Γ«α«ó »αÑαδóá¡¿⌐ 0Eh ¿ 1Ch.
;
; Called from: 7816:0362, 0373, 0423, 0772, 0B3C, 0FF1
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_40 proc near
7816:0F01 FA cli ; Disable interrupts
7816:0F02 06 push es
7816:0F03 53 push bx
7816:0F04 B8 0000 mov ax,0
7816:0F07 8E C0 mov es,ax
7816:0F09 .BB 0038 mov bx,data_5e ; (0000:0038=57h)
7816:0F0C A1 10BB mov ax,data_72 ; (7816:10BB=0)
7816:0F0F 26: 89 07 mov es:[bx],ax
7816:0F12 A1 10BD mov ax,data_73 ; (7816:10BD=0)
7816:0F15 26: 89 47 02 mov es:[bx+2],ax
7816:0F19 .BB 0070 mov bx,data_7e ; (0000:0070=53h)
7816:0F1C A1 10CE mov ax,data_85 ; (7816:10CE=0)
7816:0F1F 26: 89 07 mov es:[bx],ax
7816:0F22 A1 10D0 mov ax,data_86 ; (7816:10D0=0)
7816:0F25 26: 89 47 02 mov es:[bx+2],ax
7816:0F29 5B pop bx
7816:0F2A 07 pop es
7816:0F2B FB sti ; Enable interrupts
7816:0F2C C3 retn
sub_40 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ôßΓá¡«ó¬á ¡á ñ«α«ª¬π.
;
; Called from: 7816:033F, 03C2, 03D7, 0415, 04CE, 0F76
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_41 proc near
7816:0F2D 83 3E 11D6 4E cmp data_114,4Eh ; (7816:11D6=4Eh)
7816:0F32 74 02 je loc_178 ; Jump if equal
7816:0F34 02 C0 add al,al
7816:0F36 loc_178: ; xref 7816:0F32
7816:0F36 8A E8 mov ch,al
7816:0F38 B4 0F mov ah,0Fh
7816:0F3A E8 00C1 call sub_44 ; (0FFE)
7816:0F3D 8A 26 11E0 mov ah,byte ptr data_120 ; (7816:11E0=0)
7816:0F41 E8 00BA call sub_44 ; (0FFE)
7816:0F44 8A E5 mov ah,ch
7816:0F46 E8 00B5 call sub_44 ; (0FFE)
7816:0F49 E8 00E8 call sub_45 ; (1034)
7816:0F4C 51 push cx
7816:0F4D B9 0190 mov cx,190h
7816:0F50 E8 FEF5 call sub_36 ; (0E48)
7816:0F53 59 pop cx
7816:0F54 C3 retn
sub_41 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ÉѬ὿íαᵿ∩ πßΓα«⌐ßΓóá.
;
; Called from: 7816:035F, 03FD, 04C8
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_42 proc near
7816:0F55 B4 07 mov ah,7
7816:0F57 E8 00A4 call sub_44 ; (0FFE)
7816:0F5A 8A 26 11E0 mov ah,byte ptr data_120 ; (7816:11E0=0)
7816:0F5E E8 009D call sub_44 ; (0FFE)
7816:0F61 E8 00D0 call sub_45 ; (1034)
7816:0F64 51 push cx
7816:0F65 B9 0BB8 mov cx,0BB8h
7816:0F68 E8 FEDD call sub_36 ; (0E48)
7816:0F6B 59 pop cx
7816:0F6C C3 retn
sub_42 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ùΓÑ¡¿Ñ/ºá»¿ß∞ í½«¬á ñá¡¡δσ τÑαѺ ÅäÅ.
;
; Called from: 7816:024C, 0327, 0916
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_43 proc near
7816:0F6D E8 FF11 call sub_38 ; (0E81)
7816:0F70 E8 FF4A call sub_39 ; (0EBD)
7816:0F73 A0 10C8 mov al,data_80 ; (7816:10C8=0)
7816:0F76 E8 FFB4 call sub_41 ; (0F2D)
7816:0F79 A0 10CB mov al,data_83 ; (7816:10CB=46h)
7816:0F7C 8A 36 10C9 mov dh,data_81 ; (7816:10C9=1)
7816:0F80 8A 16 10C5 mov dl,data_77 ; (7816:10C5=1)
7816:0F84 E8 FB75 call sub_19 ; (0AFC)
7816:0F87 80 3E 10CB 46 cmp byte ptr data_83,46h ; (7816:10CB=46h) 'F'
7816:0F8C 74 03 je loc_179 ; Jump if equal
7816:0F8E EB 03 jmp short loc_180 ; (0F93)
7816:0F90 90 db 90h
7816:0F91 loc_179: ; xref 7816:0F8C
7816:0F91 B4 E6 mov ah,0E6h
7816:0F93 loc_180: ; xref 7816:0F8E
7816:0F93 80 3E 10CB 4A cmp byte ptr data_83,4Ah ; (7816:10CB=46h) 'J'
7816:0F98 74 03 je loc_181 ; Jump if equal
7816:0F9A EB 03 jmp short loc_182 ; (0F9F)
7816:0F9C 90 db 90h
7816:0F9D loc_181: ; xref 7816:0F98
7816:0F9D B4 C5 mov ah,0C5h
7816:0F9F loc_182: ; xref 7816:0F9A
7816:0F9F E8 005C call sub_44 ; (0FFE)
7816:0FA2 8A 26 11E0 mov ah,byte ptr data_120 ; (7816:11E0=0)
7816:0FA6 B0 00 mov al,0
7816:0FA8 D0 E0 shl al,1 ; Shift w/zeros fill
7816:0FAA D0 E0 shl al,1 ; Shift w/zeros fill
7816:0FAC 0A E0 or ah,al
7816:0FAE E8 004D call sub_44 ; (0FFE)
7816:0FB1 8A 26 10C8 mov ah,data_80 ; (7816:10C8=0)
7816:0FB5 E8 0046 call sub_44 ; (0FFE)
7816:0FB8 B4 00 mov ah,0
7816:0FBA E8 0041 call sub_44 ; (0FFE)
7816:0FBD 8A 26 10CA mov ah,data_82 ; (7816:10CA=0F8h)
7816:0FC1 E8 003A call sub_44 ; (0FFE)
7816:0FC4 8A 26 10C5 mov ah,data_77 ; (7816:10C5=1)
7816:0FC8 E8 0033 call sub_44 ; (0FFE)
7816:0FCB 8A 26 10C6 mov ah,data_78 ; (7816:10C6=0F8h)
7816:0FCF E8 002C call sub_44 ; (0FFE)
7816:0FD2 8A 26 10C7 mov ah,data_79 ; (7816:10C7=1Ah)
7816:0FD6 E8 0025 call sub_44 ; (0FFE)
7816:0FD9 B4 FF mov ah,0FFh
7816:0FDB E8 0020 call sub_44 ; (0FFE)
7816:0FDE FB sti ; Enable interrupts
7816:0FDF C6 06 10D2 FF mov byte ptr data_87,0FFh ; (7816:10D2=0)
7816:0FE4 loc_183: ; xref 7816:0FE9
7816:0FE4 80 3E 10D2 00 cmp byte ptr data_87,0 ; (7816:10D2=0)
7816:0FE9 75 F9 jne loc_183 ; Jump if not equal
7816:0FEB E8 006E call sub_46 ; (105C)
7816:0FEE E8 00A9 call sub_47 ; (109A)
7816:0FF1 E8 FF0D call sub_40 ; (0F01)
7816:0FF4 A0 11E2 mov al,data_121 ; (7816:11E2=0)
7816:0FF7 24 C0 and al,0C0h
7816:0FF9 F8 clc ; Clear carry flag
7816:0FFA 74 01 jz loc_ret_184 ; Jump if zero
7816:0FFC F9 stc ; Set carry flag
7816:0FFD loc_ret_184: ; xref 7816:0FFA
7816:0FFD C3 retn
sub_43 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; éδó«ñ ah ó »«αΓ 3F5h.
;
; Called from: 7816:04EF, 04F6, 072F, 0736, 073D, 0742, 0747
; 074C, 0751, 0756, 075B, 0F3A, 0F41, 0F46
; 0F57, 0F5E, 0F9F, 0FAE, 0FB5, 0FBA, 0FC1
; 0FC8, 0FCF, 0FD6, 0FDB, 104A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_44 proc near
7816:0FFE 52 push dx
7816:0FFF 51 push cx
7816:1000 BA 03F4 mov dx,3F4h
7816:1003 33 C9 xor cx,cx ; Zero register
7816:1005 locloop_185: ; xref 7816:100A
7816:1005 EC in al,dx ; port 3F4h, dsk0 cntrlr status
7816:1006 A8 40 test al,40h ; '@'
7816:1008 74 06 jz loc_187 ; Jump if zero
7816:100A E2 F9 loop locloop_185 ; Loop if cx > 0
7816:100C loc_186: ; xref 7816:1019
7816:100C F9 stc ; Set carry flag
7816:100D 59 pop cx
7816:100E 5A pop dx
7816:100F C3 retn
7816:1010 loc_187: ; xref 7816:1008
7816:1010 33 C9 xor cx,cx ; Zero register
7816:1012 locloop_188: ; xref 7816:1017
7816:1012 EC in al,dx ; port 0Ah
7816:1013 A8 80 test al,80h
7816:1015 75 04 jnz loc_189 ; Jump if not zero
7816:1017 E2 F9 loop locloop_188 ; Loop if cx > 0
7816:1019 EB F1 jmp short loc_186 ; (100C)
7816:101B loc_189: ; xref 7816:1015
7816:101B 8A C4 mov al,ah
7816:101D BA 03F5 mov dx,3F5h
7816:1020 EE out dx,al ; port 3F5h, dsk0 controlr data
7816:1021 59 pop cx
7816:1022 5A pop dx
7816:1023 C3 retn
sub_44 endp
7816:1024 51 B9 64 00 db 51h,0B9h, 64h, 00h
7816:1028 locloop_190: ; xref 7816:1028
7816:1028 E2 FE loop locloop_190 ; Loop if cx > 0
7816:102A 59 pop cx
7816:102B 52 push dx
7816:102C 8A C4 mov al,ah
7816:102E BA 03F5 mov dx,3F5h
7816:1031 EE out dx,al ; port 3F5h, dsk0 controlr data
7816:1032 5A pop dx
7816:1033 C3 retn
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; çáóÑαΦÑ¡¿Ñ «»Ñαᵿ¿ τÑαѺ ÅäÅ.
;
; Called from: 7816:0F49, 0F61
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_45 proc near
7816:1034 C6 06 10D2 FF mov byte ptr data_87,0FFh ; (7816:10D2=0)
7816:1039 loc_191: ; xref 7816:103E
7816:1039 80 3E 10D2 00 cmp byte ptr data_87,0 ; (7816:10D2=0)
7816:103E 75 F9 jne loc_191 ; Jump if not equal
7816:1040 51 push cx
7816:1041 B9 0064 mov cx,64h
7816:1044 E8 FE01 call sub_36 ; (0E48)
7816:1047 59 pop cx
7816:1048 B4 08 mov ah,8
7816:104A E8 FFB1 call sub_44 ; (0FFE)
7816:104D 51 push cx
7816:104E B9 0064 mov cx,64h
7816:1051 E8 FDF4 call sub_36 ; (0E48)
7816:1054 59 pop cx
7816:1055 E8 0004 call sub_46 ; (105C)
7816:1058 E8 003F call sub_47 ; (109A)
7816:105B C3 retn
sub_45 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; ùΓÑ¡¿Ñ αѺπ½∞ΓáΓ«ó «»Ñαᵿ¿ óó«ñá/óδó«ñá.
;
; Called from: 7816:050D, 076C, 0FEB, 1055
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_46 proc near
7816:105C FC cld ; Clear direction
7816:105D 57 push di
7816:105E 51 push cx
7816:105F 52 push dx
7816:1060 53 push bx
7816:1061 .BF 11E2 mov di,offset data_121 ; (7816:11E2=0)
7816:1064 B3 07 mov bl,7
7816:1066 loc_192: ; xref 7816:1091
7816:1066 33 C9 xor cx,cx ; Zero register
7816:1068 BA 03F4 mov dx,3F4h
7816:106B locloop_193: ; xref 7816:1070
7816:106B EC in al,dx ; port 3F4h, dsk0 cntrlr status
7816:106C A8 80 test al,80h
7816:106E 75 08 jnz loc_195 ; Jump if not zero
7816:1070 E2 F9 loop locloop_193 ; Loop if cx > 0
7816:1072 loc_194: ; xref 7816:107D, 1093
7816:1072 F9 stc ; Set carry flag
7816:1073 5B pop bx
7816:1074 5A pop dx
7816:1075 59 pop cx
7816:1076 5F pop di
7816:1077 C3 retn
7816:1078 loc_195: ; xref 7816:106E
7816:1078 EC in al,dx ; port 0Ah
7816:1079 A8 40 test al,40h ; '@'
7816:107B 75 02 jnz loc_196 ; Jump if not zero
7816:107D EB F3 jmp short loc_194 ; (1072)
7816:107F loc_196: ; xref 7816:107B
7816:107F 42 inc dx
7816:1080 EC in al,dx ; port 0Bh
7816:1081 88 05 mov [di],al
7816:1083 47 inc di
7816:1084 B9 000A mov cx,0Ah
7816:1087 locloop_197: ; xref 7816:1087
7816:1087 E2 FE loop locloop_197 ; Loop if cx > 0
7816:1089 4A dec dx
7816:108A EC in al,dx ; port 0Ah
7816:108B A8 10 test al,10h
7816:108D 74 06 jz loc_198 ; Jump if zero
7816:108F FE CB dec bl
7816:1091 75 D3 jnz loc_192 ; Jump if not zero
7816:1093 EB DD jmp short loc_194 ; (1072)
7816:1095 loc_198: ; xref 7816:108D
7816:1095 5B pop bx
7816:1096 5A pop dx
7816:1097 59 pop cx
7816:1098 5F pop di
7816:1099 C3 retn
sub_46 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; çáóÑαΦÑ¡¿Ñ »αÑαδóá¡¿∩ IRQ6.
;
; Called from: 7816:0510, 076F, 0FEE, 1058
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_47 proc near
7816:109A B0 66 mov al,66h ; 'f'
7816:109C E6 20 out 20h,al ; port 20h, 8259-1 int command
7816:109E C3 retn
sub_47 endp
7816:109F 50 push ax
7816:10A0 B0 84 mov al,84h
7816:10A2 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
7816:10A4 53 push bx
7816:10A5 E4 42 in al,42h ; port 42h, 8253 timer 2 spkr
7816:10A7 8A D8 mov bl,al
7816:10A9 E4 42 in al,42h ; port 42h, 8253 timer 2 spkr
7816:10AB 8A F8 mov bh,al
7816:10AD 2E: 89 1E 10D6 mov cs:data_90,bx ; (7816:10D6=0)
7816:10B2 2E: C6 06 10D2 00 mov byte ptr cs:data_87,0 ; (7816:10D2=0)
7816:10B8 5B pop bx
7816:10B9 58 pop ax
7816:10BA CF iret ; Interrupt return
7816:10BB 0000 data_72 dw 0 ; xref 7816:0ECB, 0F0C
7816:10BD 0000 data_73 dw 0 ; xref 7816:0ED2, 0F12
7816:10BF FB sti
7816:10C0 CF iret
7816:10C1 90 nop
7816:10C2 00 data_74 db 0 ; xref 7816:020A, 07AE, 07E5
7816:10C3 00 data_75 db 0 ; xref 7816:0202
7816:10C4 4E data_76 db 4Eh ; xref 7816:067A
7816:10C5 01 data_77 db 1 ; xref 7816:08EF, 0919, 0F80, 0FC4
7816:10C6 F8 data_78 db 0F8h ; xref 7816:0234, 024F, 08F8, 091F
; 0FCB
7816:10C7 1A data_79 db 1Ah ; xref 7816:08FB, 0FD2
7816:10C8 00 data_80 db 0 ; xref 7816:0243, 031F, 090D, 0F73
; 0FB1
7816:10C9 01 data_81 db 1 ; xref 7816:023C, 0318, 0906, 0F7C
7816:10CA F8 data_82 db 0F8h ; xref 7816:0249, 0324, 0913, 0FBD
7816:10CB 46 data_83 db 46h ; xref 7816:0237, 0313, 0901, 0F79
; 0F87, 0F93
7816:10CC 0000 data_84 dw 0 ; xref 7816:0975, 0992
7816:10CE 0000 data_85 dw 0 ; xref 7816:0EE7, 0F1C
7816:10D0 0000 data_86 dw 0 ; xref 7816:0EEE, 0F22
7816:10D2 00 data_87 db 0 ; xref 7816:04E8, 04FA, 0760, 0765
; 0FDF, 0FE4, 1034, 1039
; 10B2
7816:10D3 00 db 0
7816:10D4 0000 data_89 dw 0 ; xref 7816:046B, 0514, 051B
7816:10D6 0000 data_90 dw 0 ; xref 7816:0468, 0518, 051E, 10AD
7816:10D8 00 data_91 db 0 ; xref 7816:0C3D, 0C52
7816:10D9 0000 data_92 dw 0 ; xref 7816:022B, 026A
7816:10DB 0D 0A 24 data_93 db 0Dh, 0Ah, '$' ; xref 7816:0118, 011D, 01E3, 01E8
; 07DE, 07E3
7816:10DE 00 00 db 0, 0
7816:10E0 0000 data_95 dw 0 ; xref 7816:0426, 05E6
7816:10E2 0000 data_96 dw 0 ; xref 7816:0580, 05DC
7816:10E4 0000 data_97 dw 0 ; xref 7816:0342, 0348, 043C, 0453
7816:10E6 00 data_98 db 0 ; xref 7816:0465, 04A8
7816:10E7 00 db 0
7816:10E8 0000 data_99 dw 0 ; xref 7816:03C8, 03DD, 0537
7816:10EA 00 data_100 db 0
7816:10EB 0011[00] db 17 dup (0)
7816:10FC 00 data_101 db 0 ; xref 7816:060F, 063E
7816:10FD 008F[00] db 143 dup (0)
7816:118C 00 data_102 db 0 ; xref 7816:03A3
7816:118D 0011[00] db 17 dup (0)
7816:119E 00 data_103 db 0 ; xref 7816:055C
7816:119F 0011[00] db 17 dup (0)
7816:11B0 0000 data_104 dw 0 ; xref 7816:037D, 04B0, 04C2
7816:11B2 0000 data_105 dw 0 ; xref 7816:05F2, 0663
7816:11B4 0000 data_106 dw 0 ; xref 7816:03CB, 03E0, 04B4
7816:11B6 0000 data_107 dw 0 ; xref 7816:03BC, 0965
7816:11B8 0000 data_108 dw 0 ; xref 7816:03D1, 040F, 06AD
7816:11BA 0000 data_109 dw 0 ; xref 7816:0783
7816:11BC 00 data_110 db 0
7816:11BD 0011[00] db 17 dup (0)
7816:11CE 0000 data_111 dw 0 ; xref 7816:0214, 0309, 069D
7816:11D0 0000 data_112 dw 0 ; xref 7816:0E77
7816:11D2 FF23 data_113 dw 0FF23h ; xref 7816:0E7D
7816:11D4 00 00 db 0, 0
7816:11D6 004E data_114 dw 4Eh ; xref 7816:0330, 036A, 0576, 0F2D
7816:11D8 00 data_115 db 0 ; xref 7816:04D7, 0502
7816:11D9 00 db 0
7816:11DA 00 data_117 db 0 ; xref 7816:04DC, 0507
7816:11DB 00 db 0
7816:11DC 0000 data_118 dw 0 ; xref 7816:0436, 0488, 04CB, 06B0
; 0739
7816:11DE 0000 data_119 dw 0 ; xref 7816:03BF, 03D4, 0412, 0433
7816:11E0 0000 data_120 dw 0 ; xref 7816:00B4, 00C3, 00E6, 0102
; 04F2, 0732, 0E84, 0E91
; 0E9E, 0F3D, 0F5A, 0FA2
7816:11E2 00 data_121 db 0 ; xref 7816:0354, 0FF4, 1061
7816:11E3 00 00 db 0, 0
7816:11E5 00 data_122 db 0 ; xref 7816:035B, 0483
7816:11E6 00 db 0
7816:11E7 00 data_123 db 0, 0 ; xref 7816:0462, 04A5, 0522
7816:11E9 0C 00 03 C2 01 db 0Ch, 00h, 03h,0C2h, 01h
7816:11EE FC 32 4E 0C 00 03 db 0FCh, 32h, 4Eh, 0Ch, 00h, 03h
7816:11F4 A1 01 FE 00 01 00 db 0A1h, 01h,0FEh, 00h, 01h, 00h
7816:11FA 01 01 01 02 00 00 db 01h, 01h, 01h, 02h, 00h, 00h
7816:1200 FF 4E 0C FF 03 14 db 0FFh, 4Eh, 0Ch,0FFh, 03h, 14h
7816:1206 01 01 32 90 0C FF db 01h, 01h, 32h, 90h, 0Ch,0FFh
7816:120C 03 0A 01 00 00 00 db 03h, 0Ah, 01h, 00h, 00h, 00h
7816:1212 01 FE 01 7C 00 00 db 01h,0FEh, 01h, 7Ch, 00h, 00h
7816:1218 00 FF
7816:121A 90
7816:121B 16
7816:121C 4E
7816:121D 0C 00
7816:121F 03 A1 FB01
7816:1223 C8 F6 FF F6
7816:1227 15 0C90
7816:122A FF 03
7816:122C 0A C8
7816:122E 00 FF
7816:1230 00 01
7816:1232 2B 01
7816:1234 F6 50 4E
7816:1237 0C 00
7816:1239 03 A1 FE01
7816:123D 00 01
7816:123F 00 00
7816:1241 01 02
7816:1243 00 00
7816:1245 16
7816:1246 4E
7816:1247 0C 00
7816:1249 03 A1 FB01
7816:124D FF F6
7816:124F 00 F9
7816:1251 00 F0
7816:1253 01 59 00
7816:1256 F7 00 0006
7816:125A 14 00
7816:125C 41
7816:125D 00 00
7816:125F 00
7816:1260 4E 00 dw 4Eh
7816:1262 59 00 dw 59h
7816:1264 20 db ' ****éßΓáó∞ΓÑ ¬½ετÑó«⌐
7816:1265 20 20 ñ¿ß¬ ó ñαá⌐ó Ç. ì᪼¿ΓÑ
7816:1267 2A 2A ½εíπε ¬½áó¿Φπ... $'
7816:1269 2A 2A
7816:126B 82 E1 E2
7816:126E A0 ECA2
7816:1271 E2 A5
7816:1273 20 AA EEAB
7816:1277 E7 A5
7816:1279 A2 A9AE
7816:127C 20 A4 E1A8
7816:1280 AA
7816:1281 20 A2 A420
7816:1285 E0 A0
7816:1287 A9 20A2
7816:128A 41
7816:128B 2C AD
7816:128D A0 ACA6
7816:1290 A8 E2
7816:1292 A5
7816:1293 20 AB A1EE
7816:1297 E3 EE
7816:1299 20 AA A0AB
7816:129D A2 E8A8
7816:12A0 E3 2E
7816:12A2 2E 2E 20 24
7816:12A6 0000 data_130 dw 0
7816:12A8 0000 data_131 dw 0
7816:12AA 14AD data_132 dw 14ADh ; xref 7816:00DC, 012B, 019B, 01A6
; 01CC, 01D7, 0223, 025C
; 027B, 06BA, 0775, 0938
; 0959, 096B, 0B0D, 0DA3
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: 7816:07EC
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_48 proc near
7816:12AC C3 retn
sub_48 endp
7816:12AD B5 03 BA db 0B5h, 03h,0BAh
seg_a ends
end start
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ CROSS REFERENCE - KEY ENTRY POINTS ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
seg:off type label
---- ---- ---- ---------------
7816:0000 far start
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Interrupt Usage Synopsis ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Interrupt 10h : set cursor location in dx
Interrupt 10h : set char al & attrib bl @curs
Interrupt 13h : reset disk, al=return status
Interrupt 13h : read sectors to memory es:bx
Interrupt 21h : get keybd char al, with echo
Interrupt 21h : display char dl
Interrupt 21h : display char string at ds:dx
Interrupt 21h : terminate with al=return code
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ I/O Port Usage Synopsis ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Port 4 : DMA-1 bas&add ch 2
Port 5 : DMA-1 bas&cnt ch 2
Port 0Ah : DMA-1 mask reg bit
Port 0Bh : DMA-1 mode reg
Port 0Ch : DMA-1 clr byte ptr
Port 20h : 8259-1 int command
Port 21h : 8259-1 int IMR
Port 21h : 8259-1 int comands
Port 40h : 8253 timer 0 clock
Port 42h : 8253 timer 2 spkr
Port 43h : 8253 wrt timr mode
Port 61h : 8255 port B, read
Port 61h : 8255 B - spkr, etc
Port 81h : DMA page reg ch 2
Port 0A1h : inhibit IRQ8 RTC
Port 3F2h : dsk0 contrl output
Port 3F4h : dsk0 cntrlr status
Port 3F5h : dsk0 controlr data
7 Ocurrences of Non-Standard I/O ports used.