tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 1 PAGE 59,132 ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ;ÛÛ ÛÛ ;ÛÛ TFDED ÛÛ ;ÛÛ ÛÛ ;ÛÛ Created: 3-Feb-95 ÛÛ ;ÛÛ Passes: 5 Analysis Options on: HIOQRS ÛÛ ;ÛÛ ÛÛ ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .err Target Assembler set to NONE, re-assembly not recommended .386c ; The following equates show data references outside the range of the program. = 0000 data_1e equ 0 ; (28A6:0000=0) = 002C PSP_envirn_seg equ 2Ch ; (28A6:002C=0) = 0080 PSP_cmd_size equ 80h ; (28A6:0080=0) = 0081 data_2e equ 81h ; (28A6:0081=0) seg_a segment byte public use16 assume cs:seg_a, ds:seg_a org 100h tfded proc far 28A6:0100 start: ; Simulation segment register change due to start, using PSP DS now 28A6 ; Simulation segment register change due to start, using PSP ES now 28A6 28A6:0100 E9 0605 jmp real_start ; (0708) ; now data because: after jmp/ret 28A6:0103 90 db 90h tfded endp ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; ; External Entry Point ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 28A6:0104 int_62h_entry proc far ; xref 28A6:0773 28A6:0104 FC cld ; Clear direction 28A6:0105 2E: 8C 16 0262 mov cs:data_7,SS ; (28A6:0262=138h) 28A6:010A 2E: 89 26 0264 mov cs:data_8,SP ; (28A6:0264=0) 28A6:010F 0E push CS 28A6:0110 17 pop SS 28A6:0111 BC 0100 mov SP,100h 28A6:0114 FB sti ; Enable interrupts 28A6:0115 60 pusha ; Save all regs 28A6:0116 1E push DS tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 2 28A6:0117 06 push ES 28A6:0118 8C CE mov SI,CS 28A6:011A 8E DE mov DS,SI 28A6:011C 8E C6 mov ES,SI 28A6:011E úBE 06DC mov SI,offset data_75 ; (28A6:06DC=0) 28A6:0121 úBF 06D8 mov DI,offset data_72 ; (28A6:06D8=0) 28A6:0124 A5 movsw ; Mov [si] to es:[di] 28A6:0125 A5 movsw ; Mov [si] to es:[di] 28A6:0126 8E DB mov DS,BX ; Simulation segment register change due to instruction DS now 0000 28A6:0128 8B F0 mov SI,AX 28A6:012A AD lodsw ; String [si] to ax 28A6:012B 32 ED xor CH,CH ; Zero register 28A6:012D 8A C8 mov CL,AL 28A6:012F AD lodsw ; String [si] to ax 28A6:0130 D1 E0 shl AX,1 ; Shift w/zeros fill 28A6:0132 D1 E0 shl AX,1 ; Shift w/zeros fill 28A6:0134 D1 E0 shl AX,1 ; Shift w/zeros fill 28A6:0136 D1 E0 shl AX,1 ; Shift w/zeros fill 28A6:0138 8B F8 mov DI,AX 28A6:013A D1 E0 shl AX,1 ; Shift w/zeros fill 28A6:013C D1 E0 shl AX,1 ; Shift w/zeros fill 28A6:013E 03 F8 add DI,AX 28A6:0140 03 F9 add DI,CX 28A6:0142 81 C7 0C80 add DI,0C80h 28A6:0146 2E: 89 3E 027E mov word ptr cs:[27Eh],DI ; (28A6:027E=0) 28A6:014B 2E: 89 3E 05A5 mov word ptr cs:[5A5h],DI ; (28A6:05A5=0) 28A6:0150 AD lodsw ; String [si] to ax 28A6:0151 8B D8 mov BX,AX 28A6:0153 AD lodsw ; String [si] to ax 28A6:0154 8B F8 mov DI,AX 28A6:0156 AD lodsw ; String [si] to ax 28A6:0157 2E: A2 029D mov byte ptr cs:[29Dh],AL ; (28A6:029D=0) 28A6:015B AD lodsw ; String [si] to ax 28A6:015C 8E DB mov DS,BX ; Simulation segment register change due to instruction DS now 0004 28A6:015E 8B F7 mov SI,DI 28A6:0160 32 E4 xor AH,AH ; Zero register 28A6:0162 2E: 88 26 0251 mov byte ptr cs:[251h],AH ; (28A6:0251=0) 28A6:0167 03 C0 add AX,AX 28A6:0169 05 06C8 add AX,6C8h 28A6:016C 8B D8 mov BX,AX 28A6:016E 2E: FF 27 jmp word ptr cs:[BX] ;* ;* No entry point to code 28A6:0171 90 nop ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0172 loc_1: ; xref 28A6:0340, 035F, 06CC ; Simulation segment register change due to indexed jmp/call DS now 28A6 28A6:0172 úBF 06F8 mov DI,offset data_82 ; (28A6:06F8='TF-DCE 5.11 1994') 28A6:0175 0E push CS 28A6:0176 07 pop ES 28A6:0177 B9 0008 mov CX,8 28A6:017A F3/ A7 repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di] 28A6:017C 75 03 jnz short loc_2 ; Jump if not zero 28A6:017E E9 00CC jmp loc_10 ; (024D) tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 3 ; now data because: after jmp/ret 28A6:0181 loc_2: ; xref 28A6:017C 28A6:0181 FE C1 inc CL 28A6:0183 2E: 88 0E 0251 mov byte ptr cs:[251h],CL ; (28A6:0251=0) 28A6:0188 E9 00C2 jmp loc_10 ; (024D) ; now data because: after jmp/ret 28A6:018B 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:018C loc_3: ; xref 28A6:0340, 035F, 06C8, 06CA 28A6:018C AC lodsb ; String [si] to al 28A6:018D 32 E4 xor AH,AH ; Zero register 28A6:018F FE C8 dec AL 28A6:0191 03 F0 add SI,AX 28A6:0193 AC lodsb ; String [si] to al 28A6:0194 2E: A2 0284 mov byte ptr cs:[284h],AL ; (28A6:0284=0) 28A6:0198 2E: A3 05A9 mov word ptr cs:[5A9h],AX ; (28A6:05A9=0) 28A6:019C AC lodsb ; String [si] to al 28A6:019D 8A D0 mov DL,AL 28A6:019F AC lodsb ; String [si] to al 28A6:01A0 8A E0 mov AH,AL 28A6:01A2 8A C2 mov AL,DL 28A6:01A4 2E: A3 0281 mov word ptr cs:[281h],AX ; (28A6:0281=0) 28A6:01A8 2E: A3 066C mov word ptr cs:[66Ch],AX ; (28A6:066C=0) 28A6:01AC 2E: A3 0577 mov word ptr cs:[577h],AX ; (28A6:0577=0) 28A6:01B0 2E: A3 05F0 mov word ptr cs:[5F0h],AX ; (28A6:05F0=0) 28A6:01B4 2E: A3 05B9 mov word ptr cs:[5B9h],AX ; (28A6:05B9=0) 28A6:01B8 AD lodsw ; String [si] to ax 28A6:01B9 2E: A3 0287 mov word ptr cs:[287h],AX ; (28A6:0287=0) 28A6:01BD AC lodsb ; String [si] to al 28A6:01BE 2E: A2 0201 mov byte ptr cs:[201h],AL ; (28A6:0201=0) 28A6:01C2 AC lodsb ; String [si] to al 28A6:01C3 D0 C0 rol AL,1 ; Rotate 28A6:01C5 D0 C0 rol AL,1 ; Rotate 28A6:01C7 73 18 jnc short loc_7 ; Jump if carry=0 28A6:01C9 8A F0 mov DH,AL 28A6:01CB 2E: A0 029D mov AL,byte ptr cs:[29Dh] ; (28A6:029D=0) 28A6:01CF A8 02 test AL,2 28A6:01D1 74 09 jz short loc_5 ; Jump if zero 28A6:01D3 B9 0010 mov CX,10h 28A6:01D6 locloop_4: ; xref 28A6:01D7 28A6:01D6 AD lodsw ; String [si] to ax 28A6:01D7 E2 FD loop locloop_4 ; Loop if cx > 0 28A6:01D9 EB 04 jmp short loc_6 ; (01DF) ; now data because: after jmp/ret 28A6:01DB 90 db 90h 28A6:01DC loc_5: ; xref 28A6:01D1 28A6:01DC 83 C6 20 add SI,20h 28A6:01DF loc_6: ; xref 28A6:01D9 28A6:01DF 8A C6 mov AL,DH 28A6:01E1 loc_7: ; xref 28A6:01C7 28A6:01E1 D0 C0 rol AL,1 ; Rotate 28A6:01E3 73 11 jnc short loc_8 ; Jump if carry=0 28A6:01E5 32 FF xor BH,BH ; Zero register tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 4 28A6:01E7 AC lodsb ; String [si] to al 28A6:01E8 8A D8 mov BL,AL 28A6:01EA 02 DB add BL,BL 28A6:01EC BA 9090 mov DX,9090h 28A6:01EF 2E: 89 36 0349 mov word ptr cs:[349h],SI ; (28A6:0349=0) 28A6:01F4 03 F3 add SI,BX 28A6:01F6 loc_8: ; xref 28A6:01E3 28A6:01F6 8C C8 mov AX,CS 28A6:01F8 8E C0 mov ES,AX 28A6:01FA úBF 06F0 mov DI,offset data_78 ; (28A6:06F0=0) 28A6:01FD B9 0004 mov CX,4 28A6:0200 B2 00 mov DL,0 28A6:0202 locloop_9: ; xref 28A6:0215 28A6:0202 8A DA mov BL,DL 28A6:0204 D0 EA shr DL,1 ; Shift w/zeros fill 28A6:0206 D0 EA shr DL,1 ; Shift w/zeros fill 28A6:0208 83 E3 03 and BX,3 28A6:020B 02 DB add BL,BL 28A6:020D ú81 C3 06E8 add BX,offset data_77 ; (28A6:06E8=0) 28A6:0211 2E: 8B 07 mov AX,cs:[BX] 28A6:0214 AB stosw ; Store ax to es:[di] 28A6:0215 E2 EB loop locloop_9 ; Loop if cx > 0 28A6:0217 BA 03CE mov DX,3CEh 28A6:021A B8 0001 mov AX,1 28A6:021D EF out DX,AX ; port 3CEh, EGA graphic index ; al = 1, enable set/reset 28A6:021E B0 03 mov AL,3 28A6:0220 EF out DX,AX ; port 3CEh, EGA graphic index ; al = 3, data rotate 28A6:0221 B0 05 mov AL,5 28A6:0223 EF out DX,AX ; port 3CEh, EGA graphic index ; al = 5, mode 28A6:0224 B8 FF08 mov AX,0FF08h 28A6:0227 EF out DX,AX ; port 3CEh, EGA graphic index ; al = 8, data bit mask 28A6:0228 B0 04 mov AL,4 28A6:022A EE out DX,AL ; port 3CEh, EGA graphic index ; al = 4, read map select 28A6:022B BA 03C4 mov DX,3C4h 28A6:022E B0 02 mov AL,2 28A6:0230 EE out DX,AL ; port 3C4h, EGA sequencr index ; al = 2, map mask register 28A6:0231 2E: A1 06F0 mov AX,cs:data_78 ; (28A6:06F0=0) 28A6:0235 E8 0060 call sub_2 ; (0298) 28A6:0238 2E: A1 06F2 mov AX,cs:data_79 ; (28A6:06F2=0) 28A6:023C E8 0059 call sub_2 ; (0298) 28A6:023F 2E: A1 06F4 mov AX,cs:data_80 ; (28A6:06F4=0) 28A6:0243 E8 0052 call sub_2 ; (0298) 28A6:0246 2E: A1 06F6 mov AX,cs:data_81 ; (28A6:06F6=0) 28A6:024A E8 004B call sub_2 ; (0298) 28A6:024D loc_10: ; xref 28A6:017E, 0188 28A6:024D 07 pop ES 28A6:024E 1F pop DS 28A6:024F 61 popa ; Restore all regs 28A6:0250 B0 00 mov AL,0 tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 5 28A6:0252 FA cli ; Disable interrupts 28A6:0253 2E: 8B 26 0264 mov SP,cs:data_8 ; (28A6:0264=0) 28A6:0258 2E: 8E 16 0262 mov SS,cs:data_7 ; (28A6:0262=138h) 28A6:025D CF iret ; Interrupt return ; now data because: after jmp/ret int_62h_entry endp 28A6:025E 00 00 data_5 db 0, 0 ; xref 28A6:0745, 0768 28A6:0260 ú0000 data_6 dw 0 ; segment storage ; xref 28A6:076C 28A6:0262 ú0000 data_7 dw 0 ; segment storage ; xref 28A6:0105, 0258 28A6:0264 0000 data_8 dw 0 ; xref 28A6:010A, 0253 ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:02A4, 02AE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ 28A6:0266 sub_1 proc near 28A6:0266 2E: A2 041F mov byte ptr cs:[41Fh],AL ; (28A6:041F=0) 28A6:026A 2E: A2 0567 mov byte ptr cs:[567h],AL ; (28A6:0567=0) 28A6:026E 8A C8 mov CL,AL 28A6:0270 B0 01 mov AL,1 28A6:0272 D2 E0 shl AL,CL ; Shift w/zeros fill 28A6:0274 BA 03C5 mov DX,3C5h 28A6:0277 EE out DX,AL ; port 3C5h, EGA sequencr func 28A6:0278 B8 A000 mov AX,0A000h 28A6:027B 8E C0 mov ES,AX ; Simulation segment register change due to instruction ES now A000 28A6:027D BF 0000 mov DI,0 28A6:0280 BA 0000 mov DX,0 28A6:0283 BD 0000 mov BP,0 28A6:0286 B8 0000 mov AX,0 28A6:0289 8A D8 mov BL,AL 28A6:028B D1 E8 shr AX,1 ; Shift w/zeros fill 28A6:028D D1 E8 shr AX,1 ; Shift w/zeros fill 28A6:028F D1 E8 shr AX,1 ; Shift w/zeros fill 28A6:0291 D1 E8 shr AX,1 ; Shift w/zeros fill 28A6:0293 2E: A3 0287 mov word ptr cs:[287h],AX ; (28A6:0287=0) 28A6:0297 C3 retn ; now data because: after jmp/ret sub_1 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:0235, 023C, 0243, 024A ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ 28A6:0298 sub_2 proc near ; Simulation segment register change due to sub entry point ES now 28A6 28A6:0298 3C 03 cmp AL,3 28A6:029A 75 12 jne short loc_13 ; Jump if not equal 28A6:029C B2 00 mov DL,0 tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 6 28A6:029E F6 C2 01 test DL,1 28A6:02A1 75 01 jnz short loc_12 ; Jump if not zero ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:02A3 loc_ret_11: ; xref 28A6:0340, 035F, 06CE, 06D6 28A6:02A3 C3 retn ; now data because: after jmp/ret 28A6:02A4 loc_12: ; xref 28A6:02A1 28A6:02A4 E8 FFBF call sub_1 ; (0266) 28A6:02A7 83 E3 0F and BX,0Fh 28A6:02AA 75 08 jnz short loc_14 ; Jump if not zero 28A6:02AC EB 13 jmp short loc_16 ; (02C1) ; now data because: after jmp/ret 28A6:02AE loc_13: ; xref 28A6:029A 28A6:02AE E8 FFB5 call sub_1 ; (0266) 28A6:02B1 83 E3 0F and BX,0Fh 28A6:02B4 loc_14: ; xref 28A6:02AA 28A6:02B4 03 DB add BX,BX 28A6:02B6 ú81 C3 06CE add BX,offset data_67 ; (28A6:06CE=0A3h) 28A6:02BA 2E: FF 27 jmp word ptr cs:[BX] ;* ; now data because: after jmp/ret 28A6:02BD 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:02BE loc_15: ; xref 28A6:0340, 035F, 06D0 28A6:02BE AC lodsb ; String [si] to al 28A6:02BF 8A F8 mov BH,AL 28A6:02C1 loc_16: ; xref 28A6:02AC 28A6:02C1 8B C5 mov AX,BP 28A6:02C3 EB 27 jmp short loc_18 ; (02EC) ; now data because: after jmp/ret 28A6:02C5 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:02C6 loc_17: ; xref 28A6:0340, 035F, 06D2 28A6:02C6 AC lodsb ; String [si] to al 28A6:02C7 1E push DS 28A6:02C8 56 push SI 28A6:02C9 úBE 06F0 mov SI,offset data_78 ; (28A6:06F0=0) 28A6:02CC 32 E4 xor AH,AH ; Zero register 28A6:02CE D0 E0 shl AL,1 ; Shift w/zeros fill 28A6:02D0 03 F0 add SI,AX 28A6:02D2 2E: 8B 04 mov AX,cs:[SI] 28A6:02D5 8B F2 mov SI,DX 28A6:02D7 BA 03CF mov DX,3CFh 28A6:02DA EE out DX,AL ; port 3CFh, EGA graphic func 28A6:02DB B8 A000 mov AX,0A000h 28A6:02DE 8B D6 mov DX,SI 28A6:02E0 8E D8 mov DS,AX ; Simulation segment register change due to instruction DS now A000 28A6:02E2 8B F7 mov SI,DI 28A6:02E4 8B C5 mov AX,BP 28A6:02E6 E8 001F call sub_3 ; (0308) tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 7 28A6:02E9 5E pop SI 28A6:02EA 1F pop DS ; Simulation segment register change due to instruction DS now 28A6 28A6:02EB C3 retn ; now data because: after jmp/ret 28A6:02EC loc_18: ; xref 28A6:02C3 28A6:02EC 32 E4 xor AH,AH ; Zero register 28A6:02EE BD 0050 mov BP,50h 28A6:02F1 2B E8 sub BP,AX 28A6:02F3 8A E0 mov AH,AL 28A6:02F5 8A C7 mov AL,BH 28A6:02F7 32 ED xor CH,CH ; Zero register 28A6:02F9 loc_19: ; xref 28A6:0305 28A6:02F9 8A CC mov CL,AH 28A6:02FB 90 nop 28A6:02FC locloop_20: ; xref 28A6:0300 28A6:02FC AA stosb ; Store al to es:[di] 28A6:02FD 83 C7 00 add DI,0 28A6:0300 E2 FA loop locloop_20 ; Loop if cx > 0 28A6:0302 03 FD add DI,BP 28A6:0304 4A dec DX 28A6:0305 75 F2 jnz loc_19 ; Jump if not zero 28A6:0307 C3 retn ; now data because: after jmp/ret sub_2 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:02E6 ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ 28A6:0308 sub_3 proc near ; Simulation segment register change due to sub entry point DS now A000 28A6:0308 32 E4 xor AH,AH ; Zero register 28A6:030A BD 0050 mov BP,50h 28A6:030D 2B E8 sub BP,AX 28A6:030F 8A E0 mov AH,AL 28A6:0311 8A C7 mov AL,BH 28A6:0313 32 ED xor CH,CH ; Zero register 28A6:0315 loc_21: ; xref 28A6:0323 28A6:0315 8A CC mov CL,AH 28A6:0317 90 nop 28A6:0318 locloop_22: ; xref 28A6:031C 28A6:0318 A4 movsb ; Mov [si] to es:[di] 28A6:0319 83 C7 00 add DI,0 28A6:031C E2 FA loop locloop_22 ; Loop if cx > 0 28A6:031E 03 FD add DI,BP 28A6:0320 03 F5 add SI,BP 28A6:0322 4A dec DX 28A6:0323 75 F0 jnz loc_21 ; Jump if not zero 28A6:0325 C3 retn tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 8 ; now data because: after jmp/ret sub_3 endp ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0326 loc_23: ; xref 28A6:0340, 035F, 06D4 ; Simulation segment register change due to indexed jmp/call DS now 28A6 28A6:0326 B8 0050 mov AX,50h 28A6:0329 2E: A3 0663 mov word ptr cs:[663h],AX ; (28A6:0663=0) 28A6:032D 90 nop 28A6:032E loc_24: ; xref 28A6:03A7, 03F1, 0409, 0441 ; 0520, 0544, 054B, 05FD ; 065C 28A6:032E úAC lodsb ; String [si] to al 28A6:032F 32 E4 xor AH,AH ; Zero register 28A6:0331 8B C8 mov CX,AX 28A6:0333 D0 E8 shr AL,1 ; Shift w/zeros fill 28A6:0335 D0 E8 shr AL,1 ; Shift w/zeros fill 28A6:0337 D0 E8 shr AL,1 ; Shift w/zeros fill 28A6:0339 24 1E and AL,1Eh 28A6:033B 05 0688 add AX,688h 28A6:033E 8B D8 mov BX,AX 28A6:0340 2E: FF 27 jmp word ptr cs:[BX] ;*40 entries ; now data because: after jmp/ret 28A6:0343 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0344 loc_25: ; xref 28A6:0340, 0688, 068A 28A6:0344 8B C1 mov AX,CX 28A6:0346 02 C0 add AL,AL 28A6:0348 úBB 0000 mov BX,data_1e ; (28A6:0000=0) 28A6:034B 03 D8 add BX,AX 28A6:034D 8B 07 mov AX,[BX] 28A6:034F 8B C8 mov CX,AX 28A6:0351 D0 E8 shr AL,1 ; Shift w/zeros fill 28A6:0353 D0 E8 shr AL,1 ; Shift w/zeros fill 28A6:0355 D0 E8 shr AL,1 ; Shift w/zeros fill 28A6:0357 83 E0 3E and AX,3Eh 28A6:035A 05 06A8 add AX,6A8h 28A6:035D 8B D8 mov BX,AX 28A6:035F 2E: FF 27 jmp word ptr cs:[BX] ;*24 entries ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0362 loc_26: ; xref 28A6:0340, 035F, 06BC, 06BE ; 06C0, 06C2, 06C4, 06C6 28A6:0362 8A C5 mov AL,CH 28A6:0364 80 E9 9E sub CL,9Eh 28A6:0367 32 ED xor CH,CH ; Zero register 28A6:0369 EB 2B jmp short locloop_31 ; (0396) ; now data because: after jmp/ret 28A6:036B 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 9 28A6:036C loc_27: ; xref 28A6:0340, 035F, 06B0 28A6:036C 8A C5 mov AL,CH 28A6:036E 83 E1 0F and CX,0Fh 28A6:0371 FE C1 inc CL 28A6:0373 E9 009C jmp loc_50 ; (0412) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0376 loc_28: ; xref 28A6:0340, 035F, 06B2, 06BA 28A6:0376 8A D9 mov BL,CL 28A6:0378 8A E1 mov AH,CL 28A6:037A 80 E4 0C and AH,0Ch 28A6:037D D0 CC ror AH,1 ; Rotate 28A6:037F 86 CD xchg CL,CH 28A6:0381 80 E5 F0 and CH,0F0h 28A6:0384 1E push DS 28A6:0385 E9 0120 jmp loc_62 ; (04A8) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0388 loc_29: ; xref 28A6:0340, 035F, 06AE 28A6:0388 8A E1 mov AH,CL 28A6:038A 8A C5 mov AL,CH 28A6:038C 8A F9 mov BH,CL 28A6:038E E9 0278 jmp loc_91 ; (0609) ; now data because: after jmp/ret 28A6:0391 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0392 loc_30: ; xref 28A6:0340, 069C, 069E, 06A0 ; 06A2, 06A4, 06A6 28A6:0392 80 E9 9E sub CL,9Eh 28A6:0395 AC lodsb ; String [si] to al 28A6:0396 locloop_31: ; xref 28A6:0369, 03A5 28A6:0396 AA stosb ; Store al to es:[di] 28A6:0397 4A dec DX 28A6:0398 75 08 jnz short loc_32 ; Jump if not zero 28A6:039A E8 02C9 call sub_5 ; (0666) 28A6:039D 74 0B jz short loc_ret_34 ; Jump if zero 28A6:039F EB 04 jmp short loc_33 ; (03A5) ; now data because: after jmp/ret 28A6:03A1 90 db 90h 28A6:03A2 loc_32: ; xref 28A6:0398 28A6:03A2 E8 02BB call sub_4 ; (0660) 28A6:03A5 loc_33: ; xref 28A6:039F 28A6:03A5 E2 EF loop locloop_31 ; Loop if cx > 0 28A6:03A7 EB 85 jmp short loc_24 ; (032E) ; now data because: after jmp/ret 28A6:03A9 90 db 90h 28A6:03AA loc_ret_34: ; xref 28A6:039D, 03D7, 03E8 tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 10 28A6:03AA C3 retn ; now data because: after jmp/ret 28A6:03AB 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:03AC loc_35: ; xref 28A6:0340, 035F, 06B8 28A6:03AC 8A C5 mov AL,CH 28A6:03AE 83 E1 0F and CX,0Fh 28A6:03B1 EB 05 jmp short loc_37 ; (03B8) ; now data because: after jmp/ret 28A6:03B3 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:03B4 loc_36: ; xref 28A6:0340, 0698 28A6:03B4 80 E1 0F and CL,0Fh 28A6:03B7 AC lodsb ; String [si] to al 28A6:03B8 loc_37: ; xref 28A6:03B1 28A6:03B8 8A E0 mov AH,AL 28A6:03BA C0 C0 04 rol AL,4 ; Rotate 28A6:03BD C1 C0 04 rol AX,4 ; Rotate 28A6:03C0 EB 07 jmp short loc_39 ; (03C9) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:03C2 loc_38: ; xref 28A6:0340, 0694 28A6:03C2 80 E1 0F and CL,0Fh 28A6:03C5 AC lodsb ; String [si] to al 28A6:03C6 8A E0 mov AH,AL 28A6:03C8 AC lodsb ; String [si] to al 28A6:03C9 loc_39: ; xref 28A6:03C0 28A6:03C9 41 inc CX 28A6:03CA 2E: A2 03E0 mov byte ptr cs:[3E0h],AL ; (28A6:03E0=0) 28A6:03CE locloop_40: ; xref 28A6:03EF 28A6:03CE 8A C4 mov AL,AH 28A6:03D0 AA stosb ; Store al to es:[di] 28A6:03D1 4A dec DX 28A6:03D2 75 08 jnz short loc_41 ; Jump if not zero 28A6:03D4 E8 028F call sub_5 ; (0666) 28A6:03D7 74 D1 jz loc_ret_34 ; Jump if zero 28A6:03D9 EB 04 jmp short loc_42 ; (03DF) ; now data because: after jmp/ret 28A6:03DB 90 db 90h 28A6:03DC loc_41: ; xref 28A6:03D2 28A6:03DC E8 0281 call sub_4 ; (0660) 28A6:03DF loc_42: ; xref 28A6:03D9 28A6:03DF B0 00 mov AL,0 28A6:03E1 AA stosb ; Store al to es:[di] 28A6:03E2 4A dec DX 28A6:03E3 75 07 jnz short loc_43 ; Jump if not zero 28A6:03E5 E8 027E call sub_5 ; (0666) 28A6:03E8 74 C0 jz loc_ret_34 ; Jump if zero 28A6:03EA EB 03 jmp short loc_44 ; (03EF) ; now data because: after jmp/ret tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 11 28A6:03EC loc_43: ; xref 28A6:03E3 28A6:03EC E8 0271 call sub_4 ; (0660) 28A6:03EF loc_44: ; xref 28A6:03EA 28A6:03EF E2 DD loop locloop_40 ; Loop if cx > 0 28A6:03F1 E9 FF3A jmp loc_24 ; (032E) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:03F4 loc_45: ; xref 28A6:0340, 0696 28A6:03F4 80 E1 0F and CL,0Fh 28A6:03F7 41 inc CX 28A6:03F8 locloop_46: ; xref 28A6:0407 28A6:03F8 A4 movsb ; Mov [si] to es:[di] 28A6:03F9 4A dec DX 28A6:03FA 75 08 jnz short loc_47 ; Jump if not zero 28A6:03FC E8 0267 call sub_5 ; (0666) 28A6:03FF 74 45 jz short loc_ret_56 ; Jump if zero 28A6:0401 EB 04 jmp short loc_48 ; (0407) ; now data because: after jmp/ret 28A6:0403 90 db 90h 28A6:0404 loc_47: ; xref 28A6:03FA 28A6:0404 E8 0259 call sub_4 ; (0660) 28A6:0407 loc_48: ; xref 28A6:0401 28A6:0407 E2 EF loop locloop_46 ; Loop if cx > 0 28A6:0409 E9 FF22 jmp loc_24 ; (032E) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:040C loc_49: ; xref 28A6:0340, 0690 28A6:040C 80 E1 0F and CL,0Fh 28A6:040F FE C1 inc CL 28A6:0411 AC lodsb ; String [si] to al 28A6:0412 loc_50: ; xref 28A6:0373 28A6:0412 8B D9 mov BX,CX 28A6:0414 1E push DS 28A6:0415 56 push SI 28A6:0416 32 ED xor CH,CH ; Zero register 28A6:0418 8A C8 mov CL,AL 28A6:041A 83 C1 02 add CX,2 28A6:041D 52 push DX 28A6:041E B0 00 mov AL,0 28A6:0420 BA 03CF mov DX,3CFh 28A6:0423 EE out DX,AL ; port 3CFh, EGA graphic func 28A6:0424 5A pop DX 28A6:0425 8C C0 mov AX,ES 28A6:0427 8E D8 mov DS,AX 28A6:0429 8B F7 mov SI,DI 28A6:042B 2B F3 sub SI,BX 28A6:042D 90 nop 28A6:042E locloop_51: ; xref 28A6:043D 28A6:042E A4 movsb ; Mov [si] to es:[di] tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 12 28A6:042F 4A dec DX 28A6:0430 75 08 jnz short loc_52 ; Jump if not zero 28A6:0432 E8 0231 call sub_5 ; (0666) 28A6:0435 74 0D jz short loc_54 ; Jump if zero 28A6:0437 EB 04 jmp short loc_53 ; (043D) ; now data because: after jmp/ret 28A6:0439 90 db 90h 28A6:043A loc_52: ; xref 28A6:0430 28A6:043A E8 0233 call sub_6 ; (0670) 28A6:043D loc_53: ; xref 28A6:0437 28A6:043D E2 EF loop locloop_51 ; Loop if cx > 0 28A6:043F 5E pop SI 28A6:0440 1F pop DS 28A6:0441 E9 FEEA jmp loc_24 ; (032E) ; now data because: after jmp/ret 28A6:0444 loc_54: ; xref 28A6:0435 28A6:0444 5E pop SI 28A6:0445 loc_55: ; xref 28A6:0515, 0651 ; Simulation segment register change due to jump to label DS now A000 28A6:0445 ú1F pop DS 28A6:0446 loc_ret_56: ; xref 28A6:03FF, 0541 ; Simulation segment register change due to jump to label DS now 28A6 28A6:0446 úC3 retn ; now data because: after jmp/ret 28A6:0447 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0448 loc_57: ; xref 28A6:0340, 0692, 069A 28A6:0448 8A F9 mov BH,CL 28A6:044A 8A E1 mov AH,CL 28A6:044C 1E push DS 28A6:044D 80 E4 0C and AH,0Ch 28A6:0450 D0 CC ror AH,1 ; Rotate 28A6:0452 80 FC 06 cmp AH,6 28A6:0455 75 47 jne short loc_61 ; Jump if not equal 28A6:0457 80 E1 F0 and CL,0F0h 28A6:045A 80 E7 03 and BH,3 28A6:045D 8A E7 mov AH,BH 28A6:045F D0 C4 rol AH,1 ; Rotate 28A6:0461 AC lodsb ; String [si] to al 28A6:0462 2E: A2 0502 mov byte ptr cs:[502h],AL ; (28A6:0502=0) 28A6:0466 8A E8 mov CH,AL 28A6:0468 8A D8 mov BL,AL 28A6:046A AC lodsb ; String [si] to al 28A6:046B 86 C8 xchg CL,AL 28A6:046D 0E push CS 28A6:046E 1F pop DS 28A6:046F 86 1E 06DA xchg data_73,BL ; (28A6:06DA=0) 28A6:0473 88 1E 06DB mov data_74,BL ; (28A6:06DB=0) 28A6:0477 3C 90 cmp AL,90h 28A6:0479 BB C08B mov BX,0C08Bh 28A6:047C 74 03 jz short loc_58 ; Jump if zero 28A6:047E E9 00A3 jmp loc_70 ; (0524) ; now data because: after jmp/ret tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 13 28A6:0481 loc_58: ; xref 28A6:047C 28A6:0481 80 FD 55 cmp CH,55h ; 'U' 28A6:0484 74 05 je short loc_59 ; Jump if equal 28A6:0486 80 FD AA cmp CH,0AAh 28A6:0489 75 09 jne short loc_60 ; Jump if not equal 28A6:048B loc_59: ; xref 28A6:0484 28A6:048B 89 1E 0508 mov word ptr ds:[508h],BX ; (28A6:0508=0C08Bh) 28A6:048F BB C3D0 mov BX,0C3D0h 28A6:0492 EB 4C jmp short loc_65 ; (04E0) ; now data because: after jmp/ret 28A6:0494 loc_60: ; xref 28A6:0489 28A6:0494 BB C3D0 mov BX,0C3D0h 28A6:0497 89 1E 0508 mov word ptr ds:[508h],BX ; (28A6:0508=0C08Bh) 28A6:049B EB 43 jmp short loc_65 ; (04E0) ; now data because: after jmp/ret 28A6:049D 90 db 90h 28A6:049E loc_61: ; xref 28A6:0455 28A6:049E 8A E9 mov CH,CL 28A6:04A0 80 E5 F0 and CH,0F0h 28A6:04A3 8A D9 mov BL,CL 28A6:04A5 AC lodsb ; String [si] to al 28A6:04A6 8A C8 mov CL,AL 28A6:04A8 loc_62: ; xref 28A6:0385 28A6:04A8 83 E3 03 and BX,3 28A6:04AB ú81 C3 06D8 add BX,offset data_72 ; (28A6:06D8=0) 28A6:04AF 0E push CS 28A6:04B0 1F pop DS 28A6:04B1 8A 07 mov AL,[BX] 28A6:04B3 A2 0502 mov byte ptr ds:[502h],AL ; (28A6:0502=0) 28A6:04B6 ú81 FB 06D8 cmp BX,offset data_72 ; (28A6:06D8=0) 28A6:04BA 74 06 je short loc_63 ; Jump if equal 28A6:04BC 4B dec BX 28A6:04BD 86 07 xchg [BX],AL 28A6:04BF 88 47 01 mov [BX+1],AL 28A6:04C2 loc_63: ; xref 28A6:04BA 28A6:04C2 80 FD 90 cmp CH,90h 28A6:04C5 8A 2F mov CH,[BX] 28A6:04C7 BB C08B mov BX,0C08Bh 28A6:04CA 75 58 jnz short loc_70 ; Jump if not zero 28A6:04CC 80 FD 55 cmp CH,55h ; 'U' 28A6:04CF 74 08 je short loc_64 ; Jump if equal 28A6:04D1 80 FD AA cmp CH,0AAh 28A6:04D4 74 03 je short loc_64 ; Jump if equal 28A6:04D6 BB C3D0 mov BX,0C3D0h 28A6:04D9 loc_64: ; xref 28A6:04CF, 04D4 28A6:04D9 89 1E 0508 mov word ptr ds:[508h],BX ; (28A6:0508=0C08Bh) 28A6:04DD BB C3D0 mov BX,0C3D0h 28A6:04E0 loc_65: ; xref 28A6:0492, 049B, 0528 28A6:04E0 ú89 1E 050A mov word ptr ds:[50Ah],BX ; (28A6:050A=0C08Bh) 28A6:04E4 EB 00 jmp short $+2 ; delay for I/O 28A6:04E6 8A DC mov BL,AH 28A6:04E8 32 FF xor BH,BH ; Zero register 28A6:04EA ú81 C3 06F0 add BX,offset data_78 ; (28A6:06F0=0) 28A6:04EE 2E: 8B 07 mov AX,cs:[BX] 28A6:04F1 52 push DX 28A6:04F2 BA 03CF mov DX,3CFh 28A6:04F5 EE out DX,AL ; port 3CFh, EGA graphic func tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 14 28A6:04F6 5A pop DX 28A6:04F7 B8 A000 mov AX,0A000h 28A6:04FA 8E D8 mov DS,AX ; Simulation segment register change due to instruction DS now A000 28A6:04FC 32 ED xor CH,CH ; Zero register 28A6:04FE 83 C1 02 add CX,2 28A6:0501 B3 00 mov BL,0 28A6:0503 90 nop 28A6:0504 locloop_66: ; xref 28A6:051D 28A6:0504 8A 05 mov AL,[DI] 28A6:0506 22 C3 and AL,BL 28A6:0508 8B C0 mov AX,AX 28A6:050A 8B C0 mov AX,AX 28A6:050C AA stosb ; Store al to es:[di] 28A6:050D 4A dec DX 28A6:050E 75 0A jnz short loc_68 ; Jump if not zero 28A6:0510 E8 0153 call sub_5 ; (0666) 28A6:0513 75 03 jnz short loc_67 ; Jump if not zero 28A6:0515 E9 FF2D jmp loc_55 ; (0445) 28A6:0518 loc_67: ; xref 28A6:0513 28A6:0518 EB 03 jmp short loc_69 ; (051D) ; now data because: after jmp/ret 28A6:051A loc_68: ; xref 28A6:050E 28A6:051A E8 0143 call sub_4 ; (0660) 28A6:051D loc_69: ; xref 28A6:0518 28A6:051D E2 E5 loop locloop_66 ; Loop if cx > 0 28A6:051F 1F pop DS ; Simulation segment register change due to instruction DS now 28A6 28A6:0520 E9 FE0B jmp loc_24 ; (032E) ; now data because: after jmp/ret 28A6:0523 90 db 90h 28A6:0524 loc_70: ; xref 28A6:047E, 04CA 28A6:0524 89 1E 0508 mov word ptr ds:[508h],BX ; (28A6:0508=0C08Bh) 28A6:0528 EB B6 jmp short loc_65 ; (04E0) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:052A loc_71: ; xref 28A6:0340, 035F, 06B6 28A6:052A 8A C5 mov AL,CH 28A6:052C EB 0A jmp short loc_72 ; (0538) ;* No entry point to code 28A6:052E 80 E1 0F and CL,0Fh 28A6:0531 8A C1 mov AL,CL 28A6:0533 C0 C0 04 rol AL,4 ; Rotate 28A6:0536 0A C1 or AL,CL 28A6:0538 loc_72: ; xref 28A6:052C 28A6:0538 AA stosb ; Store al to es:[di] 28A6:0539 4A dec DX 28A6:053A 75 0C jnz short loc_74 ; Jump if not zero 28A6:053C E8 0127 call sub_5 ; (0666) 28A6:053F 75 03 jnz short loc_73 ; Jump if not zero 28A6:0541 E9 FF02 jmp loc_ret_56 ; (0446) 28A6:0544 loc_73: ; xref 28A6:053F 28A6:0544 E9 FDE7 jmp loc_24 ; (032E) tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 15 ; now data because: after jmp/ret 28A6:0547 90 db 90h 28A6:0548 loc_74: ; xref 28A6:053A 28A6:0548 E8 0115 call sub_4 ; (0660) 28A6:054B E9 FDE0 jmp loc_24 ; (032E) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:054E loc_75: ; xref 28A6:0340, 035F, 06AC 28A6:054E 8A C5 mov AL,CH 28A6:0550 EB 01 jmp short loc_77 ; (0553) ; now data because: after jmp/ret ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0552 loc_76: ; xref 28A6:0340, 068C 28A6:0552 AC lodsb ; String [si] to al 28A6:0553 loc_77: ; xref 28A6:0550 28A6:0553 83 E1 0F and CX,0Fh 28A6:0556 80 C1 03 add CL,3 28A6:0559 2E: 88 0E 05D2 mov byte ptr cs:[5D2h],CL ; (28A6:05D2=0) 28A6:055E 32 E4 xor AH,AH ; Zero register 28A6:0560 1E push DS 28A6:0561 56 push SI 28A6:0562 55 push BP 28A6:0563 52 push DX 28A6:0564 52 push DX 28A6:0565 50 push AX 28A6:0566 B0 00 mov AL,0 28A6:0568 BA 03CF mov DX,3CFh 28A6:056B EE out DX,AL ; port 3CFh, EGA graphic func 28A6:056C 58 pop AX 28A6:056D 5A pop DX 28A6:056E 8C C1 mov CX,ES 28A6:0570 8E D9 mov DS,CX 28A6:0572 8B F2 mov SI,DX 28A6:0574 33 D2 xor DX,DX ; Zero register 28A6:0576 BB 0000 mov BX,0 28A6:0579 F7 F3 div BX ; ax,dx rem=dx:ax/reg 28A6:057B 2B DE sub BX,SI 28A6:057D 3B DA cmp BX,DX 28A6:057F 72 09 jb short loc_78 ; Jump if below 28A6:0581 03 F2 add SI,DX 28A6:0583 8B D6 mov DX,SI 28A6:0585 03 E8 add BP,AX 28A6:0587 EB 06 jmp short loc_79 ; (058F) ; now data because: after jmp/ret 28A6:0589 90 db 90h 28A6:058A loc_78: ; xref 28A6:057F 28A6:058A 2B D3 sub DX,BX 28A6:058C 40 inc AX 28A6:058D 03 E8 add BP,AX 28A6:058F loc_79: ; xref 28A6:0587 28A6:058F 2E: 89 16 05D5 mov word ptr cs:[5D5h],DX ; (28A6:05D5=0) 28A6:0594 A8 01 test AL,1 28A6:0596 2E: 8B 0E 0663 mov CX,word ptr cs:[663h] ; (28A6:0663=0) tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 16 28A6:059B 74 02 jz short loc_80 ; Jump if zero 28A6:059D F7 D9 neg CX 28A6:059F loc_80: ; xref 28A6:059B 28A6:059F 2E: 89 0E 05F7 mov word ptr cs:[5F7h],CX ; (28A6:05F7=0) 28A6:05A4 BE 0000 mov SI,0 28A6:05A7 ú81 C6 0000 add SI,data_1e ; (28A6:0000=0) 28A6:05AB 2B F5 sub SI,BP 28A6:05AD 83 F9 50 cmp CX,50h 28A6:05B0 74 06 je short loc_81 ; Jump if equal 28A6:05B2 8B C2 mov AX,DX 28A6:05B4 48 dec AX 28A6:05B5 EB 06 jmp short loc_82 ; (05BD) ; now data because: after jmp/ret 28A6:05B7 90 db 90h 28A6:05B8 loc_81: ; xref 28A6:05B0 28A6:05B8 B8 0000 mov AX,0 28A6:05BB 2B C2 sub AX,DX 28A6:05BD loc_82: ; xref 28A6:05B5 28A6:05BD 03 C0 add AX,AX 28A6:05BF 03 C0 add AX,AX 28A6:05C1 03 C0 add AX,AX 28A6:05C3 03 C0 add AX,AX 28A6:05C5 8B D8 mov BX,AX 28A6:05C7 03 C0 add AX,AX 28A6:05C9 03 C0 add AX,AX 28A6:05CB 03 C3 add AX,BX 28A6:05CD 03 F0 add SI,AX 28A6:05CF 5A pop DX 28A6:05D0 5D pop BP 28A6:05D1 B9 0000 mov CX,0 28A6:05D4 BB 0000 mov BX,0 28A6:05D7 90 nop 28A6:05D8 locloop_83: ; xref 28A6:05F9 28A6:05D8 A4 movsb ; Mov [si] to es:[di] 28A6:05D9 4A dec DX 28A6:05DA 75 08 jnz short loc_84 ; Jump if not zero 28A6:05DC E8 0087 call sub_5 ; (0666) 28A6:05DF 74 1F jz short loc_89 ; Jump if zero 28A6:05E1 EB 04 jmp short loc_85 ; (05E7) ; now data because: after jmp/ret 28A6:05E3 90 db 90h 28A6:05E4 loc_84: ; xref 28A6:05DA 28A6:05E4 E8 0079 call sub_4 ; (0660) 28A6:05E7 loc_85: ; xref 28A6:05E1 28A6:05E7 4B dec BX 28A6:05E8 75 0A jnz short loc_86 ; Jump if not zero 28A6:05EA 2E: F7 1E 05F7 neg word ptr cs:[5F7h] ; (28A6:05F7=0) 28A6:05EF BB 0000 mov BX,0 28A6:05F2 EB 05 jmp short loc_87 ; (05F9) ; now data because: after jmp/ret 28A6:05F4 loc_86: ; xref 28A6:05E8 28A6:05F4 4E dec SI 28A6:05F5 ú81 C6 0000 add SI,data_1e ; (28A6:0000=0) 28A6:05F9 loc_87: ; xref 28A6:05F2 28A6:05F9 E2 DD loop locloop_83 ; Loop if cx > 0 tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 17 28A6:05FB 5E pop SI 28A6:05FC 1F pop DS ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:05FD loc_88: ; xref 28A6:0340, 035F, 06A8, 06AA ; 06B4 28A6:05FD E9 FD2E jmp loc_24 ; (032E) ; now data because: after jmp/ret 28A6:0600 loc_89: ; xref 28A6:05DF 28A6:0600 5E pop SI 28A6:0601 1F pop DS ; Simulation segment register change due to instruction DS now 0000 28A6:0602 C3 retn ; now data because: after jmp/ret ; Simulation segment register change due to reset to default DS now 28A6 28A6:0603 90 db 90h ;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 28A6:0604 loc_90: ; xref 28A6:0340, 068E 28A6:0604 8A E1 mov AH,CL 28A6:0606 8A F9 mov BH,CL 28A6:0608 AC lodsb ; String [si] to al 28A6:0609 loc_91: ; xref 28A6:038E 28A6:0609 8A C8 mov CL,AL 28A6:060B 32 ED xor CH,CH ; Zero register 28A6:060D 83 C1 02 add CX,2 28A6:0610 1E push DS 28A6:0611 81 E3 0C00 and BX,0C00h 28A6:0615 D0 CF ror BH,1 ; Rotate 28A6:0617 86 DF xchg BL,BH 28A6:0619 ú81 C3 06F0 add BX,offset data_78 ; (28A6:06F0=0) 28A6:061D 2E: 8B 1F mov BX,cs:[BX] 28A6:0620 50 push AX 28A6:0621 52 push DX 28A6:0622 BA 03CF mov DX,3CFh 28A6:0625 8A C3 mov AL,BL 28A6:0627 EE out DX,AL ; port 3CFh, EGA graphic func 28A6:0628 5A pop DX 28A6:0629 58 pop AX 28A6:062A BB A000 mov BX,0A000h 28A6:062D 8E DB mov DS,BX ; Simulation segment register change due to instruction DS now A000 28A6:062F 8A DC mov BL,AH 28A6:0631 83 E3 03 and BX,3 28A6:0634 D0 C3 rol BL,1 ; Rotate 28A6:0636 ú81 C3 06E0 add BX,offset data_76 ; (28A6:06E0=8Bh) 28A6:063A 2E: 8B 07 mov AX,cs:[BX] 28A6:063D 2E: A3 0646 mov word ptr cs:[646h],AX ; (28A6:0646=9090h) 28A6:0641 EB 01 jmp short locloop_92 ; (0644) ; now data because: after jmp/ret 28A6:0643 90 db 90h 28A6:0644 locloop_92: ; xref 28A6:0641, 0659 28A6:0644 8A 05 mov AL,[DI] 28A6:0646 90 nop tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 18 28A6:0647 90 nop 28A6:0648 AA stosb ; Store al to es:[di] 28A6:0649 4A dec DX 28A6:064A 75 0A jnz short loc_94 ; Jump if not zero 28A6:064C E8 0017 call sub_5 ; (0666) 28A6:064F 75 03 jnz short loc_93 ; Jump if not zero 28A6:0651 E9 FDF1 jmp loc_55 ; (0445) 28A6:0654 loc_93: ; xref 28A6:064F 28A6:0654 EB 03 jmp short loc_95 ; (0659) ; now data because: after jmp/ret 28A6:0656 loc_94: ; xref 28A6:064A 28A6:0656 E8 0007 call sub_4 ; (0660) 28A6:0659 loc_95: ; xref 28A6:0654 28A6:0659 E2 E9 loop locloop_92 ; Loop if cx > 0 28A6:065B 1F pop DS ; Simulation segment register change due to instruction DS now 28A6 28A6:065C E9 FCCF jmp loc_24 ; (032E) ; now data because: after jmp/ret 28A6:065F 90 db 90h ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:03A2, 03DC, 03EC, 0404, 051A, 0548, 05E4 ; 0656 ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ 28A6:0660 sub_4 proc near 28A6:0660 4F dec DI 28A6:0661 81 C7 0000 add DI,0 28A6:0665 C3 retn ; now data because: after jmp/ret sub_4 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:039A, 03D4, 03E5, 03FC, 0432, 0510, 053C ; 05DC, 064C ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ 28A6:0666 sub_5 proc near 28A6:0666 2E: F7 1E 0663 neg word ptr cs:[663h] ; (28A6:0663=0) 28A6:066B BA 0000 mov DX,0 28A6:066E 4D dec BP 28A6:066F C3 retn ; now data because: after jmp/ret sub_5 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:043A ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 19 28A6:0670 sub_6 proc near 28A6:0670 2E: A0 0663 mov AL,byte ptr cs:[663h] ; (28A6:0663=0) 28A6:0674 3C 50 cmp AL,50h ; 'P' 28A6:0676 75 08 jne short loc_96 ; Jump if not equal 28A6:0678 83 C7 4F add DI,4Fh 28A6:067B 83 C6 4F add SI,4Fh 28A6:067E C3 retn ; now data because: after jmp/ret 28A6:067F 90 db 90h 28A6:0680 loc_96: ; xref 28A6:0676 28A6:0680 83 EF 51 sub DI,51h 28A6:0683 83 EE 51 sub SI,51h 28A6:0686 C3 retn ; now data because: after jmp/ret sub_6 endp 28A6:0687 90 db 90h 28A6:0688 0344 data_32 dw offset loc_25 ; xref 28A6:0340 28A6:068A 0344 data_33 dw offset loc_25 ; xref 28A6:0340 28A6:068C 0552 data_34 dw offset loc_76 ; xref 28A6:0340 28A6:068E 0604 data_35 dw offset loc_90 ; xref 28A6:0340 28A6:0690 040C data_36 dw offset loc_49 ; xref 28A6:0340 28A6:0692 0448 data_37 dw offset loc_57 ; xref 28A6:0340 28A6:0694 03C2 data_38 dw offset loc_38 ; xref 28A6:0340 28A6:0696 03F4 data_39 dw offset loc_45 ; xref 28A6:0340 28A6:0698 03B4 data_40 dw offset loc_36 ; xref 28A6:0340 28A6:069A 0448 data_41 dw offset loc_57 ; xref 28A6:0340 28A6:069C 0392 data_42 dw offset loc_30 ; xref 28A6:0340 28A6:069E 0392 data_43 dw offset loc_30 ; xref 28A6:0340 28A6:06A0 0392 data_44 dw offset loc_30 ; xref 28A6:0340 28A6:06A2 0392 data_45 dw offset loc_30 ; xref 28A6:0340 28A6:06A4 0392 data_46 dw offset loc_30 ; xref 28A6:0340 28A6:06A6 0392 data_47 dw offset loc_30 ; xref 28A6:0340 28A6:06A8 05FD data_48 dw offset loc_88 ; xref 28A6:0340, 035F 28A6:06AA 05FD data_49 dw offset loc_88 ; xref 28A6:0340, 035F 28A6:06AC 054E data_50 dw offset loc_75 ; xref 28A6:0340, 035F 28A6:06AE 0388 data_51 dw offset loc_29 ; xref 28A6:0340, 035F 28A6:06B0 036C data_52 dw offset loc_27 ; xref 28A6:0340, 035F 28A6:06B2 0376 data_53 dw offset loc_28 ; xref 28A6:0340, 035F 28A6:06B4 05FD data_54 dw offset loc_88 ; xref 28A6:0340, 035F 28A6:06B6 052A data_55 dw offset loc_71 ; xref 28A6:0340, 035F 28A6:06B8 03AC data_56 dw offset loc_35 ; xref 28A6:0340, 035F 28A6:06BA 0376 data_57 dw offset loc_28 ; xref 28A6:0340, 035F 28A6:06BC 0362 data_58 dw offset loc_26 ; xref 28A6:0340, 035F 28A6:06BE 0362 data_59 dw offset loc_26 ; xref 28A6:0340, 035F 28A6:06C0 0362 data_60 dw offset loc_26 ; xref 28A6:0340, 035F 28A6:06C2 0362 data_61 dw offset loc_26 ; xref 28A6:0340, 035F 28A6:06C4 0362 data_62 dw offset loc_26 ; xref 28A6:0340, 035F 28A6:06C6 0362 data_63 dw offset loc_26 ; xref 28A6:0340, 035F 28A6:06C8 018C data_64 dw offset loc_3 ; xref 28A6:0340, 035F 28A6:06CA 018C data_65 dw offset loc_3 ; xref 28A6:0340, 035F 28A6:06CC 0172 data_66 dw offset loc_1 ; xref 28A6:0340, 035F 28A6:06CE 02A3 data_67 dw offset loc_ret_11 ; xref 28A6:02B6, 0340, 035F 28A6:06D0 02BE data_68 dw offset loc_15 ; xref 28A6:0340, 035F 28A6:06D2 02C6 data_69 dw offset loc_17 ; xref 28A6:0340, 035F 28A6:06D4 0326 data_70 dw offset loc_23 ; xref 28A6:0340, 035F tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 20 28A6:06D6 02A3 data_71 dw offset loc_ret_11 ; xref 28A6:0340, 035F 28A6:06D8 00 data_72 db 0 ; xref 28A6:0121, 04AB, 04B6 28A6:06D9 00 db 0 28A6:06DA 00 data_73 db 0 ; xref 28A6:046F 28A6:06DB 00 data_74 db 0 ; xref 28A6:0473 28A6:06DC 00 data_75 db 0 ; xref 28A6:011E 28A6:06DD FF 55 AA db 0FFh, 55h,0AAh 28A6:06E0 8B data_76 db 8Bh ; xref 28A6:0636 28A6:06E1 C0 F6 D0 D0 C8 D0 db 0C0h,0F6h,0D0h,0D0h,0C8h,0D0h 28A6:06E7 C0 db 0C0h 28A6:06E8 00 data_77 db 0 ; xref 28A6:020D 28A6:06E9 00 01 00 02 00 03 db 0, 1, 0, 2, 0, 3 28A6:06EF 00 db 0 28A6:06F0 0000 data_78 dw 0 ; xref 28A6:01FA, 0231, 02C9, 04EA ; 0619 28A6:06F2 0000 data_79 dw 0 ; xref 28A6:0238 28A6:06F4 0000 data_80 dw 0 ; xref 28A6:023F 28A6:06F6 0000 data_81 dw 0 ; xref 28A6:0246 28A6:06F8 54 46 2D 44 43 45 data_82 db 'TF-DCE 5.11 1994' ; xref 28A6:0172, 07D0 28A6:06FE 20 35 2E 31 31 20 28A6:0704 31 39 39 34 ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; ; External Entry Point ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 28A6:0708 real_start: ; xref 28A6:0100 28A6:0708 FC cld ; Clear direction 28A6:0709 B0 62 mov AL,62h ; 'b' 28A6:070B 2E: A2 073B mov byte ptr cs:[73Bh],AL ; (28A6:073B=62h) 28A6:070F 2E: A2 074B mov byte ptr cs:[74Bh],AL ; (28A6:074B=62h) 28A6:0713 2E: A2 075F mov byte ptr cs:[75Fh],AL ; (28A6:075F=62h) 28A6:0717 2E: A2 0771 mov byte ptr cs:[771h],AL ; (28A6:0771=62h) 28A6:071B 32 C0 xor AL,AL ; Zero register 28A6:071D 3A 06 0080 cmp AL,ds:PSP_cmd_size ; (28A6:0080=0) 28A6:0721 74 38 je short loc_99 ; Jump if equal 28A6:0723 úBE 0081 mov SI,data_2e ; (28A6:0081=0) 28A6:0726 E8 0087 call sub_7 ; (07B0) 28A6:0729 3C 0D cmp AL,0Dh 28A6:072B 74 2E je short loc_99 ; Jump if equal 28A6:072D 3C 4E cmp AL,4Eh ; 'N' 28A6:072F 74 2A je short loc_99 ; Jump if equal 28A6:0731 3C 52 cmp AL,52h ; 'R' 28A6:0733 74 05 je short loc_98 ; Jump if equal 28A6:0735 loc_97: ; xref 28A6:0742, 0754, 0766 28A6:0735 B8 4C01 mov AX,4C01h 28A6:0738 CD 21 int 21h ; DOS Services ah=function 4Ch ; terminate with al=return code ; now data because: does not return 28A6:073A loc_98: ; xref 28A6:0733 28A6:073A B8 3562 mov AX,3562h 28A6:073D CD 21 int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx 28A6:073F E8 008E call sub_8 ; (07D0) 28A6:0742 75 F1 jnz loc_97 ; Jump if not zero tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 21 28A6:0744 1E push DS 28A6:0745 26: C5 16 025E lds DX,dword ptr es:data_5 ; (28A6:025E=0) Load seg:offset ptr 28A6:074A B8 2562 mov AX,2562h 28A6:074D CD 21 int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx 28A6:074F 1F pop DS 28A6:0750 B4 49 mov AH,49h 28A6:0752 CD 21 int 21h ; DOS Services ah=function 49h ; release memory block, es=seg 28A6:0754 72 DF jc loc_97 ; Jump if carry Set 28A6:0756 B8 4C00 mov AX,4C00h 28A6:0759 CD 21 int 21h ; DOS Services ah=function 4Ch ; terminate with al=return code ; now data because: does not return 28A6:075B loc_99: ; xref 28A6:0721, 072B, 072F 28A6:075B A2 0781 mov byte ptr ds:[781h],AL ; (28A6:0781=0) 28A6:075E B8 3562 mov AX,3562h 28A6:0761 CD 21 int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx 28A6:0763 E8 006A call sub_8 ; (07D0) 28A6:0766 74 CD jz loc_97 ; Jump if zero 28A6:0768 89 1E 025E mov word ptr data_5,BX ; (28A6:025E=0) 28A6:076C 8C 06 0260 mov data_6,ES ; (28A6:0260=28A6h) 28A6:0770 B8 2562 mov AX,2562h 28A6:0773 úBA 0104 mov DX,offset int_62h_entry 28A6:0776 CD 21 int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx 28A6:0778 8E 06 002C mov ES,ds:PSP_envirn_seg ; (28A6:002C=0) ; Simulation segment register change due to instruction ES now 0000 28A6:077C B4 49 mov AH,49h 28A6:077E CD 21 int 21h ; DOS Services ah=function 49h ; release memory block, es=seg 28A6:0780 B0 00 mov AL,0 28A6:0782 3C 4E cmp AL,4Eh ; 'N' 28A6:0784 75 07 jne short loc_100 ; Jump if not equal 28A6:0786 úBA 07DB mov DX,offset data_88 ; (28A6:07DB='DOS/V Series TF-') 28A6:0789 B4 09 mov AH,9 28A6:078B CD 21 int 21h ; DOS Services ah=function 09h ; display char string at ds:dx 28A6:078D loc_100: ; xref 28A6:0784 28A6:078D 0E push CS 28A6:078E 07 pop ES ; Simulation segment register change due to instruction ES now 28A6 28A6:078F B9 001A mov CX,1Ah 28A6:0792 88 0E 0080 mov ds:PSP_cmd_size,CL ; (28A6:0080=0) 28A6:0796 D0 E9 shr CL,1 ; Shift w/zeros fill 28A6:0798 úBE 085B mov SI,offset data_89 ; (28A6:085B='TF-DED Ver1.54 /') 28A6:079B úBF 0081 mov DI,data_2e ; (28A6:0081=0) 28A6:079E F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di] 28A6:07A0 BA 0718 mov DX,718h 28A6:07A3 D1 EA shr DX,1 ; Shift w/zeros fill 28A6:07A5 D1 EA shr DX,1 ; Shift w/zeros fill 28A6:07A7 D1 EA shr DX,1 ; Shift w/zeros fill 28A6:07A9 D1 EA shr DX,1 ; Shift w/zeros fill 28A6:07AB B8 3100 mov AX,3100h 28A6:07AE CD 21 int 21h ; DOS Services ah=function 31h ; terminate & stay resident tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 22 ; al=return code,dx=paragraphs ; now data because: does not return ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:0726 ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ 28A6:07B0 sub_7 proc near 28A6:07B0 loc_101: ; xref 28A6:07B3, 07B7, 07BB, 07BF ; 07C3 28A6:07B0 AC lodsb ; String [si] to al 28A6:07B1 3C 20 cmp AL,20h ; ' ' 28A6:07B3 74 FB je loc_101 ; Jump if equal 28A6:07B5 3C 09 cmp AL,9 28A6:07B7 74 F7 je loc_101 ; Jump if equal 28A6:07B9 3C 2C cmp AL,2Ch ; ',' 28A6:07BB 74 F3 je loc_101 ; Jump if equal 28A6:07BD 3C 2D cmp AL,2Dh ; '-' 28A6:07BF 74 EF je loc_101 ; Jump if equal 28A6:07C1 3C 2F cmp AL,2Fh ; '/' 28A6:07C3 74 EB je loc_101 ; Jump if equal 28A6:07C5 3C 61 cmp AL,61h ; 'a' 28A6:07C7 72 06 jb short loc_ret_102 ; Jump if below 28A6:07C9 3C 7A cmp AL,7Ah ; 'z' 28A6:07CB 77 02 ja short loc_ret_102 ; Jump if above 28A6:07CD 2C 20 sub AL,20h ; ' ' 28A6:07CF loc_ret_102: ; xref 28A6:07C7, 07CB 28A6:07CF C3 retn sub_7 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ; ; Called from: 28A6:073F, 0763 ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ 28A6:07D0 sub_8 proc near 28A6:07D0 úBE 06F8 mov SI,offset data_82 ; (28A6:06F8='TF-DCE 5.11 1994') 28A6:07D3 8B FE mov DI,SI 28A6:07D5 B9 0008 mov CX,8 28A6:07D8 F3/ A7 repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di] 28A6:07DA C3 retn ; now data because: after jmp/ret sub_8 endp 28A6:07DB 44 4F 53 2F 56 20 data_88 db 'DOS/V Series TF-graphic Data Exp' ; xref 28A6:0786 28A6:07E1 53 65 72 69 65 73 28A6:07E7 20 54 46 2D 67 72 28A6:07ED 61 70 68 69 63 20 28A6:07F3 44 61 74 61 20 45 28A6:07F9 78 70 28A6:07FB 61 6E 64 20 44 72 db 'and Driver Ver 1.54', 0Dh, 0Ah, ' ' 28A6:0801 69 76 65 72 20 56 tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 23 28A6:0807 65 72 20 31 2E 35 28A6:080D 34 0D 0A 20 28A6:0811 50 72 6F 67 72 61 db 'Programmed by T.FUJINUMA / COPY ' 28A6:0817 6D 6D 65 64 20 62 28A6:081D 79 20 54 2E 46 55 28A6:0823 4A 49 4E 55 4D 41 28A6:0829 20 2F 20 43 4F 50 28A6:082F 59 20 28A6:0831 52 49 47 48 54 20 db 'RIGHT (C) T.FUJINUMA(TF-928) 199' 28A6:0837 28 43 29 20 54 2E 28A6:083D 46 55 4A 49 4E 55 28A6:0843 4D 41 28 54 46 2D 28A6:0849 39 32 38 29 20 31 28A6:084F 39 39 28A6:0851 33 2D 31 39 39 35 db '3-1995.', 0Dh, 0Ah, '$' 28A6:0857 2E 0D 0A 24 28A6:085B 54 46 2D 44 45 44 data_89 db 'TF-DED Ver1.54 /by TF-928', 0 ; xref 28A6:0798 28A6:0861 20 56 65 72 31 2E 28A6:0867 35 34 20 2F 62 79 28A6:086D 20 54 46 2D 39 32 28A6:0873 38 00 28A6:0875 00 db 0 28A6:0876 20 54 46 2D 44 43 db ' TF-DCE(Takayuki Fujinuma graphi' 28A6:087C 45 28 54 61 6B 61 28A6:0882 79 75 6B 69 20 46 28A6:0888 75 6A 69 6E 75 6D 28A6:088E 61 20 67 72 61 70 28A6:0894 68 69 28A6:0896 63 20 44 61 74 61 db 'c Data Compress & Expand) SYSTEM' 28A6:089C 20 43 6F 6D 70 72 28A6:08A2 65 73 73 20 26 20 28A6:08A8 45 78 70 61 6E 64 28A6:08AE 29 20 53 59 53 54 28A6:08B4 45 4D 28A6:08B6 20 56 65 72 20 35 db ' Ver 5.11 ' 28A6:08BC 2E 31 31 20 20 seg_a ends end start tfded.lst Sourcer v8.00 26-Sep-2006 11:29 am Page 24 ±±±±±±±±±±±±±±±±±±±± CROSS REFERENCE - KEY ENTRY POINTS ±±±±±±±±±±±±±±±±±±± seg:off type label ---- ---- ---- -------------------------------- 28A6:0100 far start 28A6:0104 far int_62h_entry 28A6:0708 extn real_start ±±±±±±±±±±±±±±±±±± Interrupt Usage Synopsis ±±±±±±±±±±±±±±±±±± Interrupt 21h : DOS Services ah=function xxh Interrupt 21h : ah=09h display char string at ds:dx Interrupt 21h : ah=25h set intrpt vector al to ds:dx Interrupt 21h : ah=31h terminate & stay resident Interrupt 21h : ah=35h get intrpt vector al in es:bx Interrupt 21h : ah=49h release memory block, es=seg Interrupt 21h : ah=4Ch terminate with al=return code ±±±±±±±±±±±±±±±±±± I/O Port Usage Synopsis ±±±±±±±±±±±±±±±±±± Port 3C4h : EGA sequencr index Port 3C4h : al = 2, map mask register Port 3C5h : EGA sequencr func Port 3CEh : EGA graphic index Port 3CEh : al = 1, enable set/reset Port 3CEh : al = 3, data rotate Port 3CEh : al = 4, read map select Port 3CEh : al = 5, mode Port 3CEh : al = 8, data bit mask Port 3CFh : EGA graphic func