seg000:0000 ; seg000:0000 ; -=========================================================================¬ seg000:0000 ; ¦ This file is generated by The Interactive Disassembler (IDA) ¦ seg000:0000 ; ¦ Copyright (c) 2010 by Hex-Rays SA, <support@hex-rays.com> ¦ seg000:0000 ; ¦ Licensed to: Freeware version ¦ seg000:0000 ; L=========================================================================- seg000:0000 ; seg000:0000 ; Input MD5 : 60ADAF7E26AAC0C3FD48E6F4E2774E73 seg000:0000 seg000:0000 ; File Name : D:\Documents and Settings\Erdoan Tan\Desktop\FDISK70.COM seg000:0000 ; Format : MS-DOS executable (EXE) seg000:0000 ; Base Address: 0h Range: 0h-11CE0h Loaded length: E210h seg000:0000 ; Entry Point : 0:6CAA seg000:0000 seg000:0000 .386 seg000:0000 .model large seg000:0000 seg000:0000 ; =========================================================================== seg000:0000 seg000:0000 ; Segment type: Pure code seg000:0000 seg000 segment byte public 'CODE' use16 seg000:0000 assume cs:seg000 seg000:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing seg000:0000 byte_0 db 2 dup(0) ; CODE XREF: seg000:6D3Fp seg000:0002 word_2 dw 0 ; DATA XREF: seg000:6D15w seg000:0004 algn_4: seg000:0004 align 10h seg000:0010 seg000:0010 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0010 seg000:0010 seg000:0010 _setenvp proc near ; CODE XREF: seg000:_@Fp seg000:0010 retn seg000:0010 _setenvp endp seg000:0010 seg000:0011 seg000:0011 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0011 seg000:0011 seg000:0011 _nullcheck proc near ; CODE XREF: _exit_+4Fp seg000:0011 sub ax, ax seg000:0013 retn seg000:0013 _nullcheck endp seg000:0013 seg000:0014 seg000:0014 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0014 seg000:0014 seg000:0014 _fptrap proc near ; CODE XREF: _cinit+42j seg000:0014 ; _output+275p ... seg000:0014 retn seg000:0014 _fptrap endp seg000:0014 seg000:0015 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0015 retn seg000:0016 seg000:0016 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0016 seg000:0016 seg000:0016 _FF_MSGBANNER proc near ; CODE XREF: seg000:6CD5p seg000:0016 ; _chkstk-EA7p seg000:0016 retn seg000:0016 _FF_MSGBANNER endp seg000:0016 seg000:0017 seg000:0017 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0017 seg000:0017 seg000:0017 _NMSG_WRITE proc near ; CODE XREF: seg000:6CDBp seg000:0017 ; _chkstk-EA4p seg000:0017 retn seg000:0017 _NMSG_WRITE endp seg000:0017 seg000:0018 seg000:0018 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0018 seg000:0018 ; Attributes: bp-based frame seg000:0018 seg000:0018 main proc far ; CODE XREF: seg000:6D5Ap seg000:0018 seg000:0018 var_6 = word ptr -6 seg000:0018 var_4 = byte ptr -4 seg000:0018 var_2 = word ptr -2 seg000:0018 arg_0 = word ptr 6 seg000:0018 seg000:0018 push bp seg000:0019 mov bp, sp seg000:001B sub sp, 6 seg000:001E seg000:001E loc_1E: seg000:001E push ds seg000:001F push cs seg000:0020 pop ds seg000:0021 assume ds:seg000 seg000:0021 mov dx, offset int23h seg000:0024 seg000:0024 loc_24: seg000:0024 mov ax, 2523h seg000:0027 int 21h ; DOS - SET INTERRUPT VECTOR seg000:0027 ; AL = interrupt number seg000:0027 ; DS:DX = new vector to be used for specified interrupt seg000:0029 pop ds seg000:002A assume ds:nothing seg000:002A seg000:002A loc_2A: seg000:002A jmp short _main_00 seg000:002C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:002C seg000:002C int23h: ; DATA XREF: main+9o seg000:002C iret seg000:002D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:002D seg000:002D _main_00: ; CODE XREF: main:loc_2Aj seg000:002D mov ds:no_fatal_error, 1 seg000:0032 call preload_messages seg000:0035 or al, al seg000:0037 jz short loc_4F seg000:0039 seg000:0039 loc_39: seg000:0039 call get_yes_no_values seg000:003C or al, al seg000:003E jz short loc_4F seg000:0040 seg000:0040 _main_01: seg000:0040 push [bp+arg_0] seg000:0043 push word ptr [bp+4] seg000:0046 seg000:0046 loc_46: seg000:0046 call parse_command_line seg000:0049 pop bx seg000:004A seg000:004A loc_4A: seg000:004A pop bx seg000:004B or al, al seg000:004D seg000:004D loc_4D: seg000:004D jnz short loc_52 seg000:004F seg000:004F loc_4F: ; CODE XREF: main+1Fj seg000:004F ; main+26j seg000:004F jmp _main_33 seg000:0052 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0052 seg000:0052 loc_52: ; CODE XREF: main:loc_4Dj seg000:0052 cmp ds:primary_flag, 0 seg000:0057 seg000:0057 loc_57: seg000:0057 jz short loc_5C seg000:0059 seg000:0059 loc_59: seg000:0059 jmp loc_103 seg000:005C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:005C seg000:005C loc_5C: ; CODE XREF: main:loc_57j seg000:005C cmp ds:extended_flag, 0 seg000:0061 seg000:0061 loc_61: seg000:0061 jnz short loc_78 seg000:0063 cmp ds:logical_flag, 0 seg000:0068 jnz short loc_78 seg000:006A seg000:006A loc_6A: seg000:006A cmp ds:disk_flag, 0 seg000:006F jnz short loc_78 seg000:0071 seg000:0071 loc_71: seg000:0071 cmp ds:mbr_flag, 0 seg000:0076 jz short loc_7B seg000:0078 seg000:0078 loc_78: ; CODE XREF: main:loc_61j seg000:0078 ; main+50j ... seg000:0078 jmp loc_103 seg000:007B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:007B seg000:007B loc_7B: ; CODE XREF: main+5Ej seg000:007B mov ds:reboot_flag, 0 seg000:0080 call check_valid_environment seg000:0083 or al, al seg000:0085 jnz short _main_02 seg000:0087 jmp _main_33 seg000:008A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:008A seg000:008A _main_02: ; CODE XREF: main+6Dj seg000:008A call init_video_information seg000:008D mov ax, 79 seg000:0090 push ax seg000:0091 mov ax, 24 seg000:0094 push ax seg000:0095 sub ax, ax seg000:0097 push ax seg000:0098 push ax seg000:0099 call clear_screen seg000:009C add sp, 8 seg000:009F mov [bp+var_6], 0 seg000:00A4 seg000:00A4 _main_03: ; CODE XREF: main+9Bj seg000:00A4 mov bx, [bp+var_6] seg000:00A7 mov ds:good_disk[bx], 1 seg000:00AC inc [bp+var_6] seg000:00AF cmp [bp+var_6], 8 seg000:00B3 jb short _main_03 seg000:00B5 call get_disk_info seg000:00B8 or al, al seg000:00BA jz short _main_07 seg000:00BC call init_partition_tables seg000:00BF mov ds:cur_disk, 0 seg000:00C4 cmp ds:status_flag, 1 seg000:00C9 jnz short _main_06 seg000:00CB call change_current_drive seg000:00CE jmp short _main_07 seg000:00D0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:00D0 seg000:00D0 _main_06: ; CODE XREF: main+B1j seg000:00D0 call do_main_menu seg000:00D3 call write_info_to_disk seg000:00D6 seg000:00D6 _main_07: ; CODE XREF: main+A2j seg000:00D6 ; main+B6j seg000:00D6 cmp ds:status_flag, 0 seg000:00DB jz short _main_08 seg000:00DD jmp _main_33 seg000:00E0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:00E0 seg000:00E0 _main_08: ; CODE XREF: main+C3j seg000:00E0 cmp ds:reboot_flag, 0 seg000:00E5 jz short _main_09 seg000:00E7 call reboot_system seg000:00EA sub ax, ax seg000:00EC push ax seg000:00ED push ax seg000:00EE call DOSEXIT seg000:00F3 seg000:00F3 _main_09: ; CODE XREF: main+CDj seg000:00F3 cmp ds:no_fatal_error, 0 seg000:00F8 jnz short _main_10 seg000:00FA jmp _main_33 seg000:00FD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:00FD seg000:00FD _main_10: ; CODE XREF: main+E0j seg000:00FD call reset_video_information seg000:0100 jmp _main_33 seg000:0103 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0103 seg000:0103 loc_103: ; CODE XREF: main:loc_59j seg000:0103 ; main:loc_78j seg000:0103 cmp ds:primary_flag, 0 seg000:0108 jnz short _main_11 seg000:010A cmp ds:extended_flag, 0 seg000:010F jnz short _main_11 seg000:0111 cmp ds:logical_flag, 0 seg000:0116 jz short loc_11F seg000:0118 seg000:0118 _main_11: ; CODE XREF: main+F0j seg000:0118 ; main+F7j seg000:0118 cmp ds:disk_flag, 0 seg000:011D jnz short _main_14 seg000:011F seg000:011F loc_11F: ; CODE XREF: main+FEj seg000:011F cmp ds:mbr_flag, 0 seg000:0124 jnz short _main_14 seg000:0126 seg000:0126 _main_12: ; CODE XREF: main+15Bj seg000:0126 mov al, -1 seg000:0128 push ax seg000:0129 sub al, al seg000:012B push ax seg000:012C sub ax, ax seg000:012E push ax seg000:012F push ax seg000:0130 mov ax, 2 seg000:0133 push ax seg000:0134 mov ax, 8 seg000:0137 seg000:0137 _main_13: ; CODE XREF: main+18Cj seg000:0137 push ax seg000:0138 call display_msg seg000:013B add sp, 12 seg000:013E jmp _main_33 seg000:0141 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0141 seg000:0141 _main_14: ; CODE XREF: main+105j seg000:0141 ; main+10Cj seg000:0141 mov ds:reboot_flag, 0 seg000:0146 mov [bp+var_6], 0 seg000:014B seg000:014B _main_15: ; CODE XREF: main+142j seg000:014B mov bx, [bp+var_6] seg000:014E mov ds:good_disk[bx], 1 seg000:0153 inc [bp+var_6] seg000:0156 cmp [bp+var_6], 8 seg000:015A jb short _main_15 seg000:015C call get_disk_info seg000:015F or al, al seg000:0161 jnz short _main_16 seg000:0163 jmp _main_33 seg000:0166 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0166 seg000:0166 _main_16: ; CODE XREF: main+149j seg000:0166 mov al, ds:cur_disk_buff seg000:0169 cbw seg000:016A inc ax seg000:016B mov cl, ds:number_of_drives seg000:016F sub ch, ch seg000:0171 cmp ax, cx seg000:0173 jg short _main_12 seg000:0175 cmp ds:mbr_flag, 1 seg000:017A jz short loc_17F seg000:017C jmp _main_22 seg000:017F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:017F seg000:017F loc_17F: ; CODE XREF: main+162j seg000:017F mov al, 1 seg000:0181 push ax seg000:0182 sub al, al seg000:0184 push ax seg000:0185 push ax seg000:0186 sub ax, ax seg000:0188 push ax seg000:0189 call read_boot_record seg000:018C add sp, 8 seg000:018F or al, al seg000:0191 jnz short _main_18 seg000:0193 seg000:0193 _main_17: ; CODE XREF: main:loc_1FEj seg000:0193 mov al, -1 seg000:0195 push ax seg000:0196 sub al, al seg000:0198 push ax seg000:0199 sub ax, ax seg000:019B push ax seg000:019C push ax seg000:019D mov ax, 2 seg000:01A0 push ax seg000:01A1 mov ax, 11 seg000:01A4 jmp short _main_13 seg000:01A6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:01A6 seg000:01A6 _main_18: ; CODE XREF: main+179j seg000:01A6 cmp ds:boot_record+1FEh, 55h seg000:01AB jnz short loc_1D2 seg000:01AD cmp ds:boot_record+1FFh, 0AAh seg000:01B2 jnz short loc_1D2 seg000:01B4 mov [bp+var_6], 0 seg000:01B9 jmp short loc_1BE seg000:01BB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:01BB seg000:01BB _main_20: ; CODE XREF: main+1B8j seg000:01BB inc [bp+var_6] seg000:01BE seg000:01BE loc_1BE: ; CODE XREF: main+1A1j seg000:01BE cmp [bp+var_6], 1BDh seg000:01C3 ja short loc_1EC seg000:01C5 mov bx, [bp+var_6] seg000:01C8 mov al, ds:master_boot_record[bx] seg000:01CC mov ds:boot_record[bx], al seg000:01D0 jmp short _main_20 seg000:01D2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:01D2 seg000:01D2 loc_1D2: ; CODE XREF: main+193j seg000:01D2 ; main+19Aj seg000:01D2 mov [bp+var_6], 0 seg000:01D7 seg000:01D7 loc_1D7: ; CODE XREF: main+1D2j seg000:01D7 mov bx, [bp+var_6] seg000:01DA mov al, ds:master_boot_record[bx] seg000:01DE mov ds:boot_record[bx], al seg000:01E2 inc [bp+var_6] seg000:01E5 cmp [bp+var_6], 1FFh seg000:01EA jbe short loc_1D7 seg000:01EC seg000:01EC loc_1EC: ; CODE XREF: main+1ABj seg000:01EC sub al, al seg000:01EE push ax seg000:01EF sub ax, ax seg000:01F1 push ax seg000:01F2 call write_boot_record seg000:01F5 pop bx seg000:01F6 pop bx seg000:01F7 or al, al seg000:01F9 jz short loc_1FE seg000:01FB jmp _main_33 seg000:01FE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:01FE seg000:01FE loc_1FE: ; CODE XREF: main+1E1j seg000:01FE jmp short _main_17 seg000:0200 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0200 seg000:0200 _main_22: ; CODE XREF: main+164j seg000:0200 call init_partition_tables seg000:0203 mov al, ds:cur_disk_buff seg000:0206 mov ds:cur_disk, al seg000:0209 cmp ds:primary_flag, 1 seg000:020E jnz short _main_25 seg000:0210 mov al, 1 seg000:0212 push ax seg000:0213 call find_partition_type seg000:0216 pop bx seg000:0217 or al, al seg000:0219 jnz short _main_25 seg000:021B mov al, 4 seg000:021D push ax seg000:021E call find_partition_type seg000:0221 pop bx seg000:0222 or al, al seg000:0224 jnz short _main_25 seg000:0226 mov al, 6 seg000:0228 push ax seg000:0229 call find_partition_type seg000:022C pop bx seg000:022D or al, al seg000:022F jnz short _main_25 seg000:0231 push ax seg000:0232 call find_part_free_space seg000:0235 pop bx seg000:0236 mov [bp+var_4], al seg000:0239 mov al, 22 seg000:023B imul [bp+var_4] seg000:023E mov bx, ax seg000:0240 mov ax, ds:primary_buff seg000:0243 cmp ds:free_space_mbytes_unused[bx], ax seg000:0247 ja short _main_23 seg000:0249 mov ax, ds:free_space_space[bx] seg000:024D jmp short _main_24 seg000:024F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:024F seg000:024F _main_23: ; CODE XREF: main+22Fj seg000:024F mov al, ds:cur_disk_buff seg000:0252 push ax seg000:0253 push ds:primary_buff seg000:0257 call mbytes_to_cylinders seg000:025A pop bx seg000:025B pop bx seg000:025C seg000:025C _main_24: ; CODE XREF: main+235j seg000:025C mov [bp+var_2], ax seg000:025F sub al, al seg000:0261 push ax seg000:0262 mov al, 80h seg000:0264 push ax seg000:0265 mov al, [bp+var_4] seg000:0268 push ax seg000:0269 push [bp+var_2] seg000:026C call make_partition seg000:026F add sp, 8 seg000:0272 seg000:0272 _main_25: ; CODE XREF: main+1F6j seg000:0272 ; main+201j ... seg000:0272 cmp ds:extended_flag, 1 seg000:0277 jnz short _main_29 seg000:0279 cmp ds:cur_disk, 1 seg000:027E jge short _main_26 seg000:0280 mov al, 1 seg000:0282 push ax seg000:0283 call find_partition_type seg000:0286 pop bx seg000:0287 or al, al seg000:0289 jnz short _main_26 seg000:028B mov al, 4 seg000:028D push ax seg000:028E call find_partition_type seg000:0291 pop bx seg000:0292 or al, al seg000:0294 jnz short _main_26 seg000:0296 mov al, 6 seg000:0298 push ax seg000:0299 call find_partition_type seg000:029C pop bx seg000:029D or al, al seg000:029F jz short _main_29 seg000:02A1 seg000:02A1 _main_26: ; CODE XREF: main+266j seg000:02A1 ; main+271j ... seg000:02A1 mov al, 5 seg000:02A3 push ax seg000:02A4 call find_partition_type seg000:02A7 pop bx seg000:02A8 or al, al seg000:02AA jnz short _main_29 seg000:02AC mov al, 5 seg000:02AE push ax seg000:02AF call find_part_free_space seg000:02B2 pop bx seg000:02B3 mov [bp+var_4], al seg000:02B6 mov al, 22 seg000:02B8 imul [bp+var_4] seg000:02BB mov bx, ax seg000:02BD mov ax, ds:extended_buff seg000:02C0 cmp ds:free_space_mbytes_unused[bx], ax seg000:02C4 ja short _main_27 seg000:02C6 mov ax, ds:free_space_space[bx] seg000:02CA jmp short _main_28 seg000:02CC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:02CC seg000:02CC _main_27: ; CODE XREF: main+2ACj seg000:02CC mov al, ds:cur_disk_buff seg000:02CF push ax seg000:02D0 push ds:extended_buff seg000:02D4 call mbytes_to_cylinders seg000:02D7 pop bx seg000:02D8 pop bx seg000:02D9 seg000:02D9 _main_28: ; CODE XREF: main+2B2j seg000:02D9 mov [bp+var_2], ax seg000:02DC mov al, 5 seg000:02DE push ax seg000:02DF sub al, al seg000:02E1 push ax seg000:02E2 mov al, [bp+var_4] seg000:02E5 push ax seg000:02E6 push [bp+var_2] seg000:02E9 call make_partition seg000:02EC add sp, 8 seg000:02EF seg000:02EF _main_29: ; CODE XREF: main+25Fj seg000:02EF ; main+287j ... seg000:02EF cmp ds:logical_flag, 1 seg000:02F4 jnz short _main_32 seg000:02F6 mov al, 5 seg000:02F8 push ax seg000:02F9 call find_partition_type seg000:02FC pop bx seg000:02FD or al, al seg000:02FF jz short _main_32 seg000:0301 call find_ext_free_space seg000:0304 mov [bp+var_4], al seg000:0307 mov al, 22 seg000:0309 imul [bp+var_4] seg000:030C mov bx, ax seg000:030E mov ax, ds:logical_buff seg000:0311 cmp ds:free_space_mbytes_unused[bx], ax seg000:0315 ja short _main_30 seg000:0317 mov ax, ds:free_space_space[bx] seg000:031B jmp short _main_31 seg000:031D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:031D seg000:031D _main_30: ; CODE XREF: main+2FDj seg000:031D mov al, ds:cur_disk_buff seg000:0320 push ax seg000:0321 push ds:logical_buff seg000:0325 call mbytes_to_cylinders seg000:0328 pop bx seg000:0329 pop bx seg000:032A seg000:032A _main_31: ; CODE XREF: main+303j seg000:032A mov [bp+var_2], ax seg000:032D mov al, [bp+var_4] seg000:0330 push ax seg000:0331 push [bp+var_2] seg000:0334 call make_volume seg000:0337 pop bx seg000:0338 pop bx seg000:0339 seg000:0339 _main_32: ; CODE XREF: main+2DCj seg000:0339 ; main+2E7j seg000:0339 call write_info_to_disk seg000:033C seg000:033C _main_33: ; CODE XREF: main:loc_4Fj seg000:033C ; main+6Fj ... seg000:033C mov ds:cur_disk, 0 seg000:0341 cmp ds:quiet_flag, 1 seg000:0346 jnz short _main_34 seg000:0348 mov al, 1 seg000:034A push ax seg000:034B call find_partition_type seg000:034E pop bx seg000:034F or al, al seg000:0351 jnz short _main_34 seg000:0353 mov al, 4 seg000:0355 push ax seg000:0356 call find_partition_type seg000:0359 pop bx seg000:035A or al, al seg000:035C jnz short _main_34 seg000:035E mov al, 6 seg000:0360 push ax seg000:0361 call find_partition_type seg000:0364 pop bx seg000:0365 or al, al seg000:0367 jnz short _main_34 seg000:0369 mov ax, 1 seg000:036C jmp short _main_36 seg000:036E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:036E seg000:036E _main_34: ; CODE XREF: main+32Ej seg000:036E ; main+339j ... seg000:036E cmp ds:quiet_flag, 1 seg000:0373 jnz short _main_35 seg000:0375 cmp ds:primary_flag, 0 seg000:037A jnz short _main_35 seg000:037C cmp ds:extended_flag, 0 seg000:0381 jnz short _main_35 seg000:0383 cmp ds:logical_flag, 0 seg000:0388 jnz short _main_35 seg000:038A mov ax, 2 seg000:038D jmp short _main_36 seg000:038F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:038F seg000:038F _main_35: ; CODE XREF: main+35Bj seg000:038F ; main+362j ... seg000:038F sub ax, ax seg000:0391 seg000:0391 _main_36: ; CODE XREF: main+354j seg000:0391 ; main+375j seg000:0391 push ax seg000:0392 call _exit seg000:0395 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0395 pop bx seg000:0396 mov sp, bp seg000:0398 pop bp seg000:0399 retn seg000:0399 main endp seg000:0399 seg000:039A seg000:039A ; --------------- S U B R O U T I N E --------------------------------------- seg000:039A seg000:039A ; Attributes: bp-based frame seg000:039A seg000:039A do_main_menu proc near ; CODE XREF: main:_main_06p seg000:039A seg000:039A mm_err_switch = byte ptr -0Ah seg000:039A mm_i = word ptr -8 seg000:039A mm_temp = word ptr -6 seg000:039A mm_max_input = byte ptr -4 seg000:039A mm_input = byte ptr -2 seg000:039A seg000:039A push bp seg000:039B mov bp, sp seg000:039D sub sp, 10 seg000:03A0 sub al, al seg000:03A2 mov [bp+mm_input], al seg000:03A5 mov ds:PercentFlag, al seg000:03A8 mov ds:cur_disk, al seg000:03AB cmp ds:good_disk, al seg000:03AF jnz short mainmenu_01 seg000:03B1 mov ds:cur_disk, 1 seg000:03B6 seg000:03B6 mainmenu_01: ; CODE XREF: do_main_menu+15j seg000:03B6 sub ax, ax seg000:03B8 mov [bp+mm_temp], ax seg000:03BB mov [bp+mm_i], ax seg000:03BE jmp short mainmenu_04 seg000:03C0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:03C0 seg000:03C0 mainmenu_02: ; CODE XREF: do_main_menu+40j seg000:03C0 mov bx, [bp+mm_i] seg000:03C3 cmp ds:good_disk[bx], 0 seg000:03C8 jz short mainmenu_03 seg000:03CA mov [bp+mm_temp], 1 seg000:03CF seg000:03CF mainmenu_03: ; CODE XREF: do_main_menu+2Ej seg000:03CF inc [bp+mm_i] seg000:03D2 seg000:03D2 mainmenu_04: ; CODE XREF: do_main_menu+24j seg000:03D2 mov al, ds:number_of_drives seg000:03D5 sub ah, ah seg000:03D7 cmp ax, [bp+mm_i] seg000:03DA ja short mainmenu_02 seg000:03DC cmp [bp+mm_temp], 1 seg000:03E0 jz short mainmenu_05 seg000:03E2 jmp mainmenu_27 seg000:03E5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:03E5 seg000:03E5 mainmenu_05: ; CODE XREF: do_main_menu+46j seg000:03E5 mov ax, 79 seg000:03E8 seg000:03E8 loc_3E8: seg000:03E8 push ax seg000:03E9 seg000:03E9 loc_3E9: seg000:03E9 mov ax, 24 seg000:03EC seg000:03EC loc_3EC: seg000:03EC push ax seg000:03ED seg000:03ED loc_3ED: seg000:03ED sub ax, ax seg000:03EF push ax seg000:03F0 seg000:03F0 loc_3F0: seg000:03F0 push ax seg000:03F1 seg000:03F1 loc_3F1: seg000:03F1 call clear_screen seg000:03F4 seg000:03F4 loc_3F4: seg000:03F4 add sp, 8 seg000:03F7 seg000:03F7 loc_3F7: seg000:03F7 push ds:menu_1_segment seg000:03FB seg000:03FB loc_3FB: seg000:03FB push ds:menu_1_offset seg000:03FF seg000:03FF loc_3FF: seg000:03FF call display seg000:0402 seg000:0402 loc_402: ; DATA XREF: seg000:6CBAr seg000:0402 pop bx seg000:0403 pop bx seg000:0404 seg000:0404 loc_404: seg000:0404 mov [bp+mm_i], 0 seg000:0409 seg000:0409 loc_409: seg000:0409 jmp short mainmenu_08 seg000:040B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:040B seg000:040B mainmenu_06: ; CODE XREF: do_main_menu+A3j seg000:040B mov bx, [bp+mm_i] seg000:040E seg000:040E loc_40E: seg000:040E cmp ds:good_disk[bx], 0 seg000:0413 jnz short mainmenu_07 seg000:0415 cmp [bp+mm_err_switch], 0 ; DATA XREF: reboot+1Bw seg000:0419 jnz short mainmenu_07 seg000:041B lea ax, [bx+'1'] seg000:041E mov ds:insert, al seg000:0421 push ds:error_30_seg seg000:0425 push ds:error_30_off seg000:0429 call display seg000:042C pop bx seg000:042D pop bx seg000:042E mov [bp+mm_err_switch], 1 seg000:0432 seg000:0432 mainmenu_07: ; CODE XREF: do_main_menu+79j seg000:0432 ; do_main_menu+7Fj seg000:0432 inc [bp+mm_i] seg000:0435 seg000:0435 mainmenu_08: ; CODE XREF: do_main_menu:loc_409j seg000:0435 mov al, ds:number_of_drives seg000:0438 sub ah, ah seg000:043A cmp ax, [bp+mm_i] seg000:043D ja short mainmenu_06 seg000:043F mov [bp+mm_input], ah seg000:0442 seg000:0442 mainmenu_10: ; CODE XREF: do_main_menu+17Dj seg000:0442 ; do_main_menu:mainmenu_21j ... seg000:0442 cmp [bp+mm_input], 1Bh seg000:0446 jnz short mainmenu_11 seg000:0448 jmp mainmenu_28 seg000:044B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:044B seg000:044B mainmenu_11: ; CODE XREF: do_main_menu+ACj seg000:044B push ds:menu_2_segment seg000:044F push ds:menu_2_offset seg000:0453 call display seg000:0456 pop bx seg000:0457 pop bx seg000:0458 push ds:menu_3_segment seg000:045C push ds:menu_3_offset seg000:0460 call display seg000:0463 pop bx seg000:0464 pop bx seg000:0465 push ds:menu_7_segment seg000:0469 push ds:menu_7_offset seg000:046D call display seg000:0470 pop bx seg000:0471 pop bx seg000:0472 seg000:0472 mainmenu_12: ; DATA XREF: reboot+5w seg000:0472 mov al, ds:cur_disk seg000:0475 add al, '1' seg000:0477 mov ds:insert, al seg000:047A push ds:menu_5_segment seg000:047E push ds:menu_5_offset seg000:0482 call display seg000:0485 pop bx seg000:0486 pop bx seg000:0487 sub ax, ax seg000:0489 mov [bp+mm_temp], ax seg000:048C mov [bp+mm_i], ax seg000:048F jmp short mainmenu_14 seg000:0491 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0491 seg000:0491 mainmenu_13: ; CODE XREF: do_main_menu+119j seg000:0491 mov al, ds:cur_disk seg000:0494 cbw seg000:0495 shl ax, 1 seg000:0497 shl ax, 1 seg000:0499 add ax, [bp+mm_i] seg000:049C mov cx, 46 seg000:049F mul cx seg000:04A1 mov bx, ax seg000:04A3 mov al, ds:part_table_sys_id[bx] seg000:04A7 sub ah, ah seg000:04A9 or [bp+mm_temp], ax seg000:04AC inc [bp+mm_i] seg000:04AF seg000:04AF mainmenu_14: ; CODE XREF: do_main_menu+F5j seg000:04AF cmp [bp+mm_i], 4 seg000:04B3 jb short mainmenu_13 seg000:04B5 cmp [bp+mm_temp], 0 seg000:04B9 jz short mainmenu_15 seg000:04BB call find_active_partition seg000:04BE or al, al seg000:04C0 jnz short mainmenu_15 seg000:04C2 cmp ds:cur_disk, al seg000:04C6 jnz short mainmenu_15 seg000:04C8 push ds:menu_6_segment seg000:04CC push ds:menu_6_offset seg000:04D0 call display seg000:04D3 pop bx seg000:04D4 pop bx seg000:04D5 seg000:04D5 mainmenu_15: ; CODE XREF: do_main_menu+11Fj seg000:04D5 ; do_main_menu+126j ... seg000:04D5 cmp ds:number_of_drives, 1 seg000:04DA jbe short mainmenu_16 seg000:04DC push ds:menu_4_segment seg000:04E0 push ds:menu_4_offset seg000:04E4 call display seg000:04E7 pop bx seg000:04E8 pop bx seg000:04E9 mov [bp+mm_max_input], 5 seg000:04ED jmp short mainmenu_17 seg000:04EF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:04EF seg000:04EF mainmenu_16: ; CODE XREF: do_main_menu+140j seg000:04EF mov [bp+mm_max_input], 4 seg000:04F3 seg000:04F3 mainmenu_17: ; CODE XREF: do_main_menu+153j seg000:04F3 push ds:input_col seg000:04F7 push ds:input_row seg000:04FB mov al, [bp+mm_max_input] seg000:04FE push ax seg000:04FF seg000:04FF loc_4FF: seg000:04FF mov al, 1 seg000:0501 push ax seg000:0502 call get_num_input seg000:0505 add sp, 8 seg000:0508 seg000:0508 switch_input1: seg000:0508 mov [bp+mm_input], al seg000:050B cbw seg000:050C cmp ax, '5' seg000:050F jz short case_5 seg000:0511 ja short case_DEF seg000:0513 sub al, 1Bh seg000:0515 jnz short mainmenu_19 seg000:0517 jmp mainmenu_10 seg000:051A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:051A seg000:051A mainmenu_19: ; CODE XREF: do_main_menu+17Bj seg000:051A sub al, 16h seg000:051C jz short case_1 seg000:051E dec al seg000:0520 jz short case_2 seg000:0522 dec al seg000:0524 jz short case_3 seg000:0526 dec al seg000:0528 jz short case_4 seg000:052A seg000:052A case_DEF: ; CODE XREF: do_main_menu+177j seg000:052A call internal_program_error seg000:052D seg000:052D mainmenu_21: seg000:052D jmp mainmenu_10 seg000:0530 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0530 seg000:0530 case_1: ; CODE XREF: do_main_menu+182j seg000:0530 call create_partition seg000:0533 jmp mainmenu_10 seg000:0536 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0536 seg000:0536 case_2: ; CODE XREF: do_main_menu+186j seg000:0536 call change_active_partition seg000:0539 jmp mainmenu_10 seg000:053C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:053C seg000:053C case_3: ; CODE XREF: do_main_menu+18Aj seg000:053C call delete_partition seg000:053F jmp mainmenu_10 seg000:0542 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0542 seg000:0542 case_4: ; CODE XREF: do_main_menu+18Ej seg000:0542 call display_partition_information seg000:0545 jmp mainmenu_10 seg000:0548 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0548 seg000:0548 case_5: ; CODE XREF: do_main_menu+175j seg000:0548 call change_current_drive seg000:054B jmp mainmenu_10 seg000:054E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:054E seg000:054E mainmenu_27: ; CODE XREF: do_main_menu+48j seg000:054E mov ds:no_fatal_error, 0 seg000:0553 push ds:error_2_seg seg000:0557 push ds:error_2_off seg000:055B call display seg000:055E pop bx seg000:055F pop bx seg000:0560 seg000:0560 mainmenu_28: ; CODE XREF: do_main_menu+AEj seg000:0560 mov sp, bp seg000:0562 pop bp seg000:0563 retn seg000:0563 do_main_menu endp seg000:0563 seg000:0564 seg000:0564 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0564 seg000:0564 ; Attributes: bp-based frame seg000:0564 seg000:0564 delete_partition proc near ; CODE XREF: do_main_menu:case_3p seg000:0564 seg000:0564 dp_i = word ptr -8 seg000:0564 temp = byte ptr -6 seg000:0564 seg000:0564 push bp seg000:0565 mov bp, sp seg000:0567 sub sp, 8 seg000:056A mov ax, 79 seg000:056D push ax seg000:056E mov ax, 24 seg000:0571 push ax seg000:0572 sub ax, ax seg000:0574 push ax seg000:0575 push ax seg000:0576 call clear_screen seg000:0579 add sp, 8 seg000:057C push ds:menu_25_segment seg000:0580 push ds:menu_25_offset seg000:0584 call display seg000:0587 pop bx seg000:0588 pop bx seg000:0589 mov al, ds:cur_disk seg000:058C add al, '1' seg000:058E mov ds:insert, al seg000:0591 push ds:menu_5_segment seg000:0595 push ds:menu_5_offset seg000:0599 call display seg000:059C pop bx seg000:059D pop bx seg000:059E sub al, al seg000:05A0 mov [bp+temp], al seg000:05A3 mov [bp+dp_i], 0 seg000:05A8 seg000:05A8 dp_1: ; CODE XREF: delete_partition+64j seg000:05A8 mov al, ds:cur_disk seg000:05AB cbw seg000:05AC shl ax, 1 seg000:05AE shl ax, 1 seg000:05B0 add ax, [bp+dp_i] seg000:05B3 mov cx, 46 seg000:05B6 mul cx seg000:05B8 mov bx, ax seg000:05BA mov al, ds:part_table_sys_id[bx] seg000:05BE or [bp+temp], al seg000:05C1 inc [bp+dp_i] seg000:05C4 cmp [bp+dp_i], 4 seg000:05C8 jb short dp_1 seg000:05CA cmp [bp+temp], 0 seg000:05CE jnz short dp_2 seg000:05D0 jmp dp_16 seg000:05D3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:05D3 seg000:05D3 dp_2: ; CODE XREF: delete_partition+6Aj seg000:05D3 push ds:menu_3_segment seg000:05D7 push ds:menu_3_offset seg000:05DB call display seg000:05DE pop bx seg000:05DF pop bx seg000:05E0 push ds:menu_25_segment seg000:05E4 push ds:menu_25_offset seg000:05E8 call display seg000:05EB pop bx seg000:05EC pop bx seg000:05ED push ds:menu_26_segment seg000:05F1 push ds:menu_26_offset seg000:05F5 call display seg000:05F8 pop bx seg000:05F9 pop bx seg000:05FA push ds:menu_7_segment seg000:05FE push ds:menu_7_offset seg000:0602 call display seg000:0605 pop bx seg000:0606 pop bx seg000:0607 push ds:menu_11_segment seg000:060B push ds:menu_11_offset seg000:060F call display seg000:0612 pop bx seg000:0613 pop bx seg000:0614 push ds:menu_27_segment seg000:0618 push ds:menu_27_offset seg000:061C call display seg000:061F pop bx seg000:0620 pop bx seg000:0621 push ds:menu_57_segment seg000:0625 push ds:menu_57_offset seg000:0629 call display seg000:062C pop bx seg000:062D pop bx seg000:062E push ds:input_col seg000:0632 push ds:input_row seg000:0636 mov al, 4 seg000:0638 push ax seg000:0639 sub al, al seg000:063B push ax seg000:063C call get_num_input seg000:063F add sp, 8 seg000:0642 seg000:0642 switch_input2: seg000:0642 cbw seg000:0643 cmp ax, '4' seg000:0646 jnz short dp_4 seg000:0648 jmp case_delete_4 seg000:064B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:064B seg000:064B dp_4: ; CODE XREF: delete_partition+E2j seg000:064B ja short dp_6 seg000:064D sub al, 1Bh seg000:064F jnz short dp_5 seg000:0651 jmp case_delete_ESC seg000:0654 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0654 seg000:0654 dp_5: ; CODE XREF: delete_partition+EBj seg000:0654 sub al, 16h seg000:0656 jz short case_delete_1 seg000:0658 dec al seg000:065A jz short case_delete_2 seg000:065C dec al seg000:065E jz short case_delete_3 seg000:0660 seg000:0660 dp_6: ; CODE XREF: delete_partition:dp_4j seg000:0660 call internal_program_error seg000:0663 jmp case_delete_ESC seg000:0666 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0666 seg000:0666 case_delete_1: ; CODE XREF: delete_partition+F2j seg000:0666 mov al, 1 seg000:0668 push ax seg000:0669 call find_partition_type seg000:066C pop bx seg000:066D or al, al seg000:066F jnz short dp_8 seg000:0671 mov al, 4 seg000:0673 push ax seg000:0674 call find_partition_type seg000:0677 pop bx seg000:0678 or al, al seg000:067A jnz short dp_8 seg000:067C mov al, 6 seg000:067E push ax seg000:067F call find_partition_type seg000:0682 pop bx seg000:0683 or al, al seg000:0685 jz short dp_9 seg000:0687 seg000:0687 dp_8: ; CODE XREF: delete_partition+10Bj seg000:0687 ; delete_partition+116j seg000:0687 call dos_delete seg000:068A jmp case_delete_ESC seg000:068D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:068D seg000:068D dp_9: ; CODE XREF: delete_partition+121j seg000:068D mov ax, 79 seg000:0690 push ax seg000:0691 mov ax, 17 seg000:0694 push ax seg000:0695 sub cx, cx seg000:0697 push cx seg000:0698 push ax seg000:0699 call clear_screen seg000:069C add sp, 8 seg000:069F push ds:error_6_seg seg000:06A3 push ds:error_6_off seg000:06A7 jmp dp_17 seg000:06AA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:06AA seg000:06AA case_delete_2: ; CODE XREF: delete_partition+F6j seg000:06AA mov al, 5 seg000:06AC push ax seg000:06AD call find_partition_type seg000:06B0 pop bx seg000:06B1 or al, al seg000:06B3 jz short dp_11 seg000:06B5 call ext_delete seg000:06B8 jmp case_delete_ESC seg000:06BB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:06BB seg000:06BB dp_11: ; CODE XREF: delete_partition+14Fj seg000:06BB mov ax, 79 seg000:06BE push ax seg000:06BF mov ax, 17 seg000:06C2 push ax seg000:06C3 sub cx, cx seg000:06C5 push cx seg000:06C6 push ax seg000:06C7 call clear_screen seg000:06CA add sp, 8 seg000:06CD push ds:error_7_seg seg000:06D1 push ds:error_7_off seg000:06D5 jmp short dp_17 seg000:06D7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:06D7 seg000:06D7 case_delete_3: ; CODE XREF: delete_partition+FAj seg000:06D7 mov al, 5 seg000:06D9 push ax seg000:06DA call find_partition_type seg000:06DD pop bx seg000:06DE or al, al seg000:06E0 jz short dp_13 seg000:06E2 call find_logical_drive seg000:06E5 or al, al seg000:06E7 jz short dp_13 seg000:06E9 call volume_delete seg000:06EC jmp short case_delete_ESC seg000:06EE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:06EE seg000:06EE dp_13: ; CODE XREF: delete_partition+17Cj seg000:06EE ; delete_partition+183j seg000:06EE mov ax, 79 seg000:06F1 push ax seg000:06F2 mov ax, 17 seg000:06F5 push ax seg000:06F6 sub cx, cx seg000:06F8 push cx seg000:06F9 push ax seg000:06FA call clear_screen seg000:06FD add sp, 8 seg000:0700 push ds:error_36_seg seg000:0704 push ds:error_36_off seg000:0708 jmp short dp_17 seg000:070A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:070A seg000:070A case_delete_4: ; CODE XREF: delete_partition+E4j seg000:070A call find_non_dos_partition seg000:070D or al, al seg000:070F jz short dp_15 seg000:0711 call non_dos_delete seg000:0714 jmp short case_delete_ESC seg000:0716 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0716 seg000:0716 dp_15: ; CODE XREF: delete_partition+1ABj seg000:0716 mov ax, 79 seg000:0719 push ax seg000:071A mov ax, 17 seg000:071D push ax seg000:071E sub cx, cx seg000:0720 push cx seg000:0721 push ax seg000:0722 call clear_screen seg000:0725 add sp, 8 seg000:0728 push ds:error_38_seg seg000:072C push ds:error_38_off seg000:0730 jmp short dp_17 seg000:0732 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0732 seg000:0732 dp_16: ; CODE XREF: delete_partition+6Cj seg000:0732 push ds:error_14_seg seg000:0736 push ds:error_14_off seg000:073A seg000:073A dp_17: ; CODE XREF: delete_partition+143j seg000:073A ; delete_partition+171j ... seg000:073A call display seg000:073D pop bx seg000:073E pop bx seg000:073F call wait_for_ESC seg000:0742 seg000:0742 case_delete_ESC: ; CODE XREF: delete_partition+EDj seg000:0742 ; delete_partition+FFj ... seg000:0742 mov ax, 79 seg000:0745 push ax seg000:0746 mov ax, 24 seg000:0749 push ax seg000:074A sub ax, ax seg000:074C push ax seg000:074D push ax seg000:074E call clear_screen seg000:0751 mov sp, bp seg000:0753 pop bp seg000:0754 retn seg000:0754 delete_partition endp seg000:0754 seg000:0755 seg000:0755 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0755 seg000:0755 ; Attributes: bp-based frame seg000:0755 seg000:0755 dos_delete proc near ; CODE XREF: delete_partition:dp_8p seg000:0755 seg000:0755 ddp_pri = word ptr -1Ah seg000:0755 ddp_j = word ptr -18h seg000:0755 ddp_i = word ptr -16h seg000:0755 ddp_str_input = word ptr -14h seg000:0755 ddp_cnt = word ptr -8 seg000:0755 ddp_ext = word ptr -6 seg000:0755 ddp_input = byte ptr -4 seg000:0755 ddp_pnum = word ptr -2 seg000:0755 seg000:0755 push bp seg000:0756 mov bp, sp seg000:0758 sub sp, 26 seg000:075B mov [bp+ddp_input], 0 seg000:075F mov ax, 79 seg000:0762 push ax seg000:0763 mov ax, 24 seg000:0766 push ax seg000:0767 sub ax, ax seg000:0769 push ax seg000:076A push ax seg000:076B call clear_screen seg000:076E add sp, 8 seg000:0771 push ds:menu_28_segment seg000:0775 push ds:menu_28_offset seg000:0779 call display seg000:077C pop bx seg000:077D pop bx seg000:077E mov al, ds:cur_disk seg000:0781 add al, '1' seg000:0783 mov ds:insert, al seg000:0786 push ds:menu_5_segment seg000:078A push ds:menu_5_offset seg000:078E call display seg000:0791 pop bx seg000:0792 pop bx seg000:0793 push ds:menu_11_segment seg000:0797 push ds:menu_11_offset seg000:079B call display seg000:079E pop bx seg000:079F pop bx seg000:07A0 call table_display seg000:07A3 or al, al seg000:07A5 jnz short ddp_1 seg000:07A7 jmp case_dos_del_DEF seg000:07AA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:07AA seg000:07AA ddp_1: ; CODE XREF: dos_delete+50j seg000:07AA mov al, ds:cur_disk seg000:07AD cbw seg000:07AE mov bx, ax seg000:07B0 shl bx, 1 seg000:07B2 push ds:total_mbytes[bx] seg000:07B6 mov ax, offset disk_size_format ; "%4.1d" seg000:07B9 push ax seg000:07BA mov ax, offset insert seg000:07BD push ax seg000:07BE call sprintf seg000:07C1 add sp, 6 seg000:07C4 push ds:menu_15_segment seg000:07C8 push ds:menu_15_offset seg000:07CC call display seg000:07CF pop bx seg000:07D0 pop bx seg000:07D1 sub ax, ax seg000:07D3 mov [bp+ddp_cnt], ax seg000:07D6 mov [bp+ddp_pri], ax seg000:07D9 mov [bp+ddp_ext], ax seg000:07DC mov [bp+ddp_i], ax seg000:07DF jmp short ddp_4 seg000:07E1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:07E1 seg000:07E1 ddp_2: ; CODE XREF: dos_delete+DFj seg000:07E1 mov al, ds:cur_disk seg000:07E4 cbw seg000:07E5 shl ax, 1 seg000:07E7 shl ax, 1 seg000:07E9 add ax, [bp+ddp_i] seg000:07EC mul cx seg000:07EE mov bx, ax seg000:07F0 cmp ds:part_table_sys_id[bx], 5 seg000:07F5 jnz short ddp_3 seg000:07F7 mov [bp+ddp_ext], 1 seg000:07FC seg000:07FC ddp_3: ; CODE XREF: dos_delete+A0j seg000:07FC ; dos_delete+C7j ... seg000:07FC inc [bp+ddp_i] seg000:07FF seg000:07FF ddp_4: ; CODE XREF: dos_delete+8Aj seg000:07FF cmp [bp+ddp_i], 4 seg000:0803 jnb short ddp_6 seg000:0805 mov al, ds:cur_disk seg000:0808 cbw seg000:0809 shl ax, 1 seg000:080B shl ax, 1 seg000:080D add ax, [bp+ddp_i] seg000:0810 mov cx, 46 seg000:0813 mul cx seg000:0815 mov bx, ax seg000:0817 cmp ds:part_table_sys_id[bx], 0 seg000:081C jz short ddp_3 seg000:081E inc [bp+ddp_cnt] seg000:0821 cmp ds:part_table_sys_id[bx], 1 seg000:0826 jz short ddp_5 seg000:0828 cmp ds:part_table_sys_id[bx], 4 seg000:082D jz short ddp_5 seg000:082F cmp ds:part_table_sys_id[bx], 6 seg000:0834 jnz short ddp_2 seg000:0836 seg000:0836 ddp_5: ; CODE XREF: dos_delete+D1j seg000:0836 ; dos_delete+D8j seg000:0836 inc [bp+ddp_pri] seg000:0839 jmp short ddp_3 seg000:083B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:083B seg000:083B ddp_6: ; CODE XREF: dos_delete+AEj seg000:083B cmp [bp+ddp_pri], 1 seg000:083F jg short ddp_10 seg000:0841 jnz short ddp_7 seg000:0843 cmp ds:cur_disk, 0 seg000:0848 jnz short ddp_10 seg000:084A seg000:084A ddp_7: ; CODE XREF: dos_delete+ECj seg000:084A cmp [bp+ddp_pri], 1 seg000:084E jz short ddp_8 seg000:0850 jmp ddp_21 seg000:0853 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0853 seg000:0853 ddp_8: ; CODE XREF: dos_delete+F9j seg000:0853 cmp ds:cur_disk, 0 seg000:0858 jnz short ddp_9 seg000:085A cmp [bp+ddp_ext], 0 seg000:085E jz short ddp_10 seg000:0860 seg000:0860 ddp_9: ; CODE XREF: dos_delete+103j seg000:0860 jmp ddp_21 seg000:0863 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0863 seg000:0863 ddp_10: ; CODE XREF: dos_delete+EAj seg000:0863 ; dos_delete+F3j ... seg000:0863 push ds:menu_55_segment seg000:0867 push ds:menu_55_offset seg000:086B call display seg000:086E pop bx seg000:086F pop bx seg000:0870 push ds:input_col seg000:0874 push ds:input_row seg000:0878 mov al, byte ptr [bp+ddp_cnt] seg000:087B push ax seg000:087C mov al, 1 seg000:087E push ax seg000:087F call get_num_input seg000:0882 add sp, 8 seg000:0885 mov [bp+ddp_input], al seg000:0888 cmp al, 1Bh seg000:088A jnz short ddp_11 seg000:088C jmp dos_del_break seg000:088F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:088F seg000:088F ddp_11: ; CODE XREF: dos_delete+135j seg000:088F cbw seg000:0890 sub ax, '0' seg000:0893 mov [bp+ddp_pnum], ax seg000:0896 mov [bp+ddp_j], 0 seg000:089B mov [bp+ddp_i], 0 seg000:08A0 jmp short ddp_13 seg000:08A2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:08A2 seg000:08A2 ddp_12: ; CODE XREF: dos_delete+176j seg000:08A2 ; dos_delete+181j seg000:08A2 inc [bp+ddp_i] seg000:08A5 seg000:08A5 ddp_13: ; CODE XREF: dos_delete+14Bj seg000:08A5 cmp [bp+ddp_i], 4 seg000:08A9 jnb short ddp_14 seg000:08AB mov al, ds:cur_disk seg000:08AE cbw seg000:08AF shl ax, 1 seg000:08B1 shl ax, 1 seg000:08B3 mov bx, [bp+ddp_i] seg000:08B6 mov cx, ax seg000:08B8 mov al, ds:sort[bx] seg000:08BC cbw seg000:08BD add ax, cx seg000:08BF mov cx, 46 seg000:08C2 imul cx seg000:08C4 mov bx, ax seg000:08C6 cmp ds:part_table_sys_id[bx], 0 seg000:08CB jz short ddp_12 seg000:08CD mov ax, [bp+ddp_pnum] seg000:08D0 inc [bp+ddp_j] seg000:08D3 cmp [bp+ddp_j], ax seg000:08D6 jnz short ddp_12 seg000:08D8 seg000:08D8 ddp_14: ; CODE XREF: dos_delete+154j seg000:08D8 mov al, ds:cur_disk seg000:08DB cbw seg000:08DC shl ax, 1 seg000:08DE shl ax, 1 seg000:08E0 mov bx, [bp+ddp_i] seg000:08E3 mov cx, ax seg000:08E5 mov al, ds:sort[bx] seg000:08E9 cbw seg000:08EA mov [bp+ddp_i], ax seg000:08ED add ax, cx seg000:08EF mov cx, 46 seg000:08F2 mul cx seg000:08F4 mov bx, ax seg000:08F6 cmp ds:part_table_sys_id[bx], 1 seg000:08FB jz short ddp_15 seg000:08FD cmp ds:part_table_sys_id[bx], 4 seg000:0902 jz short ddp_15 seg000:0904 cmp ds:part_table_sys_id[bx], 6 seg000:0909 jz short ddp_15 seg000:090B jmp ddp_20 seg000:090E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:090E seg000:090E ddp_15: ; CODE XREF: dos_delete+1A6j seg000:090E ; dos_delete+1ADj ... seg000:090E mov byte ptr [bp+ddp_str_input], 0 seg000:0912 push ds:menu_41_segment seg000:0916 push ds:menu_41_offset seg000:091A call display seg000:091D pop bx seg000:091E pop bx seg000:091F lea ax, [bp+ddp_str_input] seg000:0922 push ss seg000:0923 push ax seg000:0924 push ds:input_col seg000:0928 push ds:input_row seg000:092C call get_string_input seg000:092F add sp, 8 seg000:0932 cmp byte ptr [bp+ddp_str_input], 1Bh seg000:0936 jnz short ddp_16 seg000:0938 jmp dos_del_break seg000:093B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:093B seg000:093B ddp_16: ; CODE XREF: dos_delete+1E1j seg000:093B lea ax, [bp+ddp_str_input] seg000:093E push ax seg000:093F mov al, ds:cur_disk seg000:0942 cbw seg000:0943 shl ax, 1 seg000:0945 shl ax, 1 seg000:0947 add ax, [bp+ddp_i] seg000:094A mov cx, 46 seg000:094D mul cx seg000:094F add ax, offset part_table_vol_label seg000:0952 push ax seg000:0953 call strcmp seg000:0956 pop bx seg000:0957 pop bx seg000:0958 or ax, ax seg000:095A jnz short ddp_19 seg000:095C push ds:menu_34_segment seg000:0960 push ds:menu_34_offset seg000:0964 call display seg000:0967 pop bx seg000:0968 pop bx seg000:0969 push ds:input_col seg000:096D push ds:input_row seg000:0971 mov al, byte ptr ds:No seg000:0974 push ax seg000:0975 call get_yn_input seg000:0978 add sp, 6 seg000:097B seg000:097B ddp_17: seg000:097B mov [bp+ddp_input], al seg000:097E cbw seg000:097F cmp ax, 1Bh seg000:0982 jz short dos_del_break seg000:0984 ja short case_dos_del_DEF seg000:0986 or al, al seg000:0988 jz short dos_del_break seg000:098A dec al seg000:098C jnz short case_dos_del_DEF seg000:098E seg000:098E case_dos_del_1: seg000:098E push [bp+ddp_i] seg000:0991 mov al, ds:cur_disk seg000:0994 push ax seg000:0995 call remove_partition seg000:0998 pop bx seg000:0999 pop bx seg000:099A call table_display seg000:099D mov ax, 79 seg000:09A0 push ax seg000:09A1 mov ax, 23 seg000:09A4 push ax seg000:09A5 sub ax, ax seg000:09A7 push ax seg000:09A8 mov ax, 16 seg000:09AB push ax seg000:09AC call clear_screen seg000:09AF add sp, 8 seg000:09B2 mov ds:reboot_flag, 1 seg000:09B7 push ds:status_1_seg seg000:09BB push ds:status_1_off seg000:09BF seg000:09BF ddp_18: ; CODE XREF: dos_delete+27Cj seg000:09BF ; dos_delete+286j ... seg000:09BF call display seg000:09C2 pop bx seg000:09C3 pop bx seg000:09C4 call wait_for_ESC seg000:09C7 jmp short dos_del_break seg000:09C9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:09C9 seg000:09C9 ddp_19: ; CODE XREF: dos_delete+205j seg000:09C9 push ds:error_34_seg seg000:09CD push ds:error_34_off seg000:09D1 jmp short ddp_18 seg000:09D3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:09D3 seg000:09D3 ddp_20: ; CODE XREF: dos_delete+1B6j seg000:09D3 push ds:error_37_seg seg000:09D7 push ds:error_37_off seg000:09DB jmp short ddp_18 seg000:09DD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:09DD seg000:09DD ddp_21: ; CODE XREF: dos_delete+FBj seg000:09DD ; dos_delete:ddp_9j seg000:09DD push ds:error_32_seg seg000:09E1 push ds:error_32_off seg000:09E5 jmp short ddp_18 seg000:09E7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:09E7 seg000:09E7 case_dos_del_DEF: ; CODE XREF: dos_delete+52j seg000:09E7 ; dos_delete+22Fj ... seg000:09E7 call internal_program_error seg000:09EA seg000:09EA dos_del_break: ; CODE XREF: dos_delete+137j seg000:09EA ; dos_delete+1E3j ... seg000:09EA mov ax, 79 seg000:09ED push ax seg000:09EE mov ax, 24 seg000:09F1 push ax seg000:09F2 sub ax, ax seg000:09F4 push ax seg000:09F5 push ax seg000:09F6 call clear_screen seg000:09F9 mov sp, bp seg000:09FB pop bp seg000:09FC retn seg000:09FC dos_delete endp seg000:09FC seg000:09FD seg000:09FD ; --------------- S U B R O U T I N E --------------------------------------- seg000:09FD seg000:09FD ; Attributes: bp-based frame seg000:09FD seg000:09FD ext_delete proc near ; CODE XREF: delete_partition+151p seg000:09FD seg000:09FD ed_i = word ptr -4 seg000:09FD seg000:09FD push bp seg000:09FE mov bp, sp seg000:0A00 sub sp, 4 seg000:0A03 mov ax, 79 seg000:0A06 push ax seg000:0A07 mov ax, 24 seg000:0A0A push ax seg000:0A0B sub ax, ax seg000:0A0D push ax seg000:0A0E push ax seg000:0A0F call clear_screen seg000:0A12 add sp, 8 seg000:0A15 push ds:menu_30_segment seg000:0A19 push ds:menu_30_offset seg000:0A1D call display seg000:0A20 pop bx seg000:0A21 pop bx seg000:0A22 mov al, ds:cur_disk seg000:0A25 add al, '1' seg000:0A27 mov ds:insert, al seg000:0A2A push ds:menu_5_segment seg000:0A2E push ds:menu_5_offset seg000:0A32 call display seg000:0A35 pop bx seg000:0A36 pop bx seg000:0A37 push ds:menu_11_segment seg000:0A3B push ds:menu_11_offset seg000:0A3F call display seg000:0A42 pop bx seg000:0A43 pop bx seg000:0A44 call table_display seg000:0A47 mov al, ds:cur_disk seg000:0A4A cbw seg000:0A4B mov bx, ax seg000:0A4D shl bx, 1 seg000:0A4F push ds:total_mbytes[bx] seg000:0A53 mov ax, offset extd_size_format ; "%4.1d" seg000:0A56 push ax seg000:0A57 mov ax, offset insert seg000:0A5A push ax seg000:0A5B call sprintf seg000:0A5E add sp, 6 seg000:0A61 push ds:menu_15_segment seg000:0A65 push ds:menu_15_offset seg000:0A69 call display seg000:0A6C pop bx seg000:0A6D pop bx seg000:0A6E call find_logical_drive seg000:0A71 or al, al seg000:0A73 jz short ed_1 seg000:0A75 jmp ed_7 seg000:0A78 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0A78 seg000:0A78 ed_1: ; CODE XREF: ext_delete+76j seg000:0A78 push ds:menu_31_segment seg000:0A7C push ds:menu_31_offset seg000:0A80 call display seg000:0A83 pop bx seg000:0A84 pop bx seg000:0A85 push ds:input_col seg000:0A89 push ds:input_row seg000:0A8D mov al, byte ptr ds:No seg000:0A90 push ax seg000:0A91 call get_yn_input seg000:0A94 add sp, 6 seg000:0A97 seg000:0A97 switch_input4: seg000:0A97 cbw seg000:0A98 cmp ax, 1Bh seg000:0A9B jz short case_ext_del_break seg000:0A9D ja short ed_3 seg000:0A9F or al, al seg000:0AA1 jz short case_ext_del_break seg000:0AA3 dec al seg000:0AA5 jz short case_ext_del_1 seg000:0AA7 seg000:0AA7 ed_3: ; CODE XREF: ext_delete+A0j seg000:0AA7 call internal_program_error seg000:0AAA jmp short case_ext_del_break seg000:0AAC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0AAC seg000:0AAC case_ext_del_1: ; CODE XREF: ext_delete+A8j seg000:0AAC mov [bp+ed_i], 0 seg000:0AB1 seg000:0AB1 ed_5: ; CODE XREF: ext_delete+10Aj seg000:0AB1 mov al, ds:cur_disk seg000:0AB4 cbw seg000:0AB5 shl ax, 1 seg000:0AB7 shl ax, 1 seg000:0AB9 add ax, [bp+ed_i] seg000:0ABC mov cx, 46 seg000:0ABF mul cx seg000:0AC1 mov bx, ax seg000:0AC3 cmp ds:part_table_sys_id[bx], 5 seg000:0AC8 jnz short ed_6 seg000:0ACA push [bp+ed_i] seg000:0ACD mov al, ds:cur_disk seg000:0AD0 push ax seg000:0AD1 call remove_partition seg000:0AD4 pop bx seg000:0AD5 pop bx seg000:0AD6 call table_display seg000:0AD9 mov ax, 79 seg000:0ADC push ax seg000:0ADD mov ax, 23 seg000:0AE0 push ax seg000:0AE1 sub ax, ax seg000:0AE3 push ax seg000:0AE4 mov ax, 17 seg000:0AE7 push ax seg000:0AE8 call clear_screen seg000:0AEB add sp, 8 seg000:0AEE push ds:status_2_seg seg000:0AF2 push ds:status_2_off seg000:0AF6 call display seg000:0AF9 pop bx seg000:0AFA pop bx seg000:0AFB mov ds:reboot_flag, 1 seg000:0B00 seg000:0B00 ed_6: ; CODE XREF: ext_delete+CBj seg000:0B00 inc [bp+ed_i] seg000:0B03 cmp [bp+ed_i], 4 seg000:0B07 jb short ed_5 seg000:0B09 jmp short ed_8 seg000:0B0B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0B0B seg000:0B0B ed_7: ; CODE XREF: ext_delete+78j seg000:0B0B push ds:error_21_seg seg000:0B0F push ds:error_21_off seg000:0B13 call display seg000:0B16 pop bx seg000:0B17 pop bx seg000:0B18 seg000:0B18 ed_8: ; CODE XREF: ext_delete+10Cj seg000:0B18 call wait_for_ESC seg000:0B1B seg000:0B1B case_ext_del_break: ; CODE XREF: ext_delete+9Ej seg000:0B1B ; ext_delete+A4j ... seg000:0B1B mov ax, 79 seg000:0B1E push ax seg000:0B1F mov ax, 24 seg000:0B22 push ax seg000:0B23 sub ax, ax seg000:0B25 push ax seg000:0B26 push ax seg000:0B27 call clear_screen seg000:0B2A mov sp, bp seg000:0B2C pop bp seg000:0B2D retn seg000:0B2D ext_delete endp seg000:0B2D seg000:0B2E seg000:0B2E ; --------------- S U B R O U T I N E --------------------------------------- seg000:0B2E seg000:0B2E ; Attributes: bp-based frame seg000:0B2E seg000:0B2E volume_delete proc near ; CODE XREF: delete_partition+185p seg000:0B2E seg000:0B2E vdel_drv_temp = byte ptr -62h seg000:0B2E vdel_column = word ptr -60h seg000:0B2E vdel_del_drive = byte ptr -5Eh seg000:0B2E vdel_low_drive = byte ptr -5Ch seg000:0B2E vdel_j = word ptr -5Ah seg000:0B2E vdel_point = word ptr -58h seg000:0B2E vdel_drive_input= byte ptr -56h seg000:0B2E vdel_high_drive = byte ptr -54h seg000:0B2E vdel_i = word ptr -52h seg000:0B2E vdel_drives_exist= byte ptr -50h seg000:0B2E vdel_row = word ptr -4Eh seg000:0B2E vdel_temp = byte ptr -4Ch seg000:0B2E vdel_string_input= word ptr -4Ah seg000:0B2E vdel_drive_list = byte ptr -3Eh seg000:0B2E vdel_drive_list1= byte ptr -3Dh seg000:0B2E vdel_vol_matches= byte ptr -10h seg000:0B2E error_low_drive = byte ptr -0Eh seg000:0B2E vdel_list_index = word ptr -0Ch seg000:0B2E vdel_s = dword ptr -0Ah seg000:0B2E error_high_drive= byte ptr -6 seg000:0B2E drives_reassigned= byte ptr -4 seg000:0B2E vdel_input = byte ptr -2 seg000:0B2E seg000:0B2E push bp seg000:0B2F mov bp, sp seg000:0B31 sub sp, 98 seg000:0B34 push si seg000:0B35 mov [bp+vdel_input], 0 seg000:0B39 mov byte ptr [bp+vdel_string_input], 0 seg000:0B3D mov ax, 79 seg000:0B40 push ax seg000:0B41 mov ax, 24 seg000:0B44 push ax seg000:0B45 sub ax, ax seg000:0B47 push ax seg000:0B48 push ax seg000:0B49 call clear_screen seg000:0B4C add sp, 8 seg000:0B4F push ds:menu_32_segment seg000:0B53 push ds:menu_32_offset seg000:0B57 call display seg000:0B5A pop bx seg000:0B5B pop bx seg000:0B5C push ds:menu_11_segment seg000:0B60 push ds:menu_11_offset seg000:0B64 call display seg000:0B67 pop bx seg000:0B68 pop bx seg000:0B69 call volume_display seg000:0B6C mov [bp+vdel_high_drive], al seg000:0B6F call get_num_logical_dos_drives seg000:0B72 sub al, [bp+vdel_high_drive] seg000:0B75 neg al seg000:0B77 inc al seg000:0B79 mov [bp+vdel_low_drive], al seg000:0B7C cmp al, 'Z' seg000:0B7E jle short vdel_1 seg000:0B80 jmp vdel_47 seg000:0B83 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0B83 seg000:0B83 vdel_1: ; CODE XREF: volume_delete+50j seg000:0B83 cmp [bp+vdel_high_drive], 'Z' seg000:0B87 jle short vdel_2 seg000:0B89 mov [bp+vdel_high_drive], 'Z' seg000:0B8D seg000:0B8D vdel_2: ; CODE XREF: volume_delete+59j seg000:0B8D mov al, [bp+vdel_low_drive] seg000:0B90 mov [bp+vdel_temp], al seg000:0B93 mov [bp+vdel_i], 0 seg000:0B98 jmp short vdel_5 seg000:0B9A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0B9A seg000:0B9A vdel_3: ; CODE XREF: volume_delete+8Bj seg000:0B9A mov si, [bp+vdel_i] seg000:0B9D shl si, 1 seg000:0B9F mov [bp+si+vdel_drive_list], 0 seg000:0BA3 seg000:0BA3 vdel_4: ; CODE XREF: volume_delete+95j seg000:0BA3 mov [bp+si+vdel_drive_list1], 0FFh seg000:0BA7 inc [bp+vdel_temp] seg000:0BAA inc [bp+vdel_i] seg000:0BAD seg000:0BAD vdel_5: ; CODE XREF: volume_delete+6Aj seg000:0BAD cmp [bp+vdel_i], 23 seg000:0BB1 jge short vdel_6 seg000:0BB3 mov al, [bp+vdel_temp] seg000:0BB6 cmp [bp+vdel_high_drive], al seg000:0BB9 jl short vdel_3 seg000:0BBB mov si, [bp+vdel_i] seg000:0BBE shl si, 1 seg000:0BC0 mov [bp+si+vdel_drive_list], al seg000:0BC3 jmp short vdel_4 seg000:0BC5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0BC5 seg000:0BC5 vdel_6: ; CODE XREF: volume_delete+83j seg000:0BC5 mov al, 5 seg000:0BC7 push ax seg000:0BC8 call get_partition_size seg000:0BCB pop bx seg000:0BCC push ax seg000:0BCD mov ax, offset ld_p_size_format ; "%4.1d" seg000:0BD0 push ax seg000:0BD1 mov ax, offset insert seg000:0BD4 push ax seg000:0BD5 call sprintf seg000:0BD8 add sp, 6 seg000:0BDB push ds:menu_21_segment seg000:0BDF push ds:menu_21_offset seg000:0BE3 call display seg000:0BE6 pop bx seg000:0BE7 pop bx seg000:0BE8 mov [bp+drives_reassigned], 0 seg000:0BEC jmp vdel_39 seg000:0BEF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0BEF seg000:0BEF vdel_7: ; CODE XREF: volume_delete+3FBj seg000:0BEF sub al, al seg000:0BF1 mov [bp+vdel_drives_exist], al seg000:0BF4 mov [bp+error_low_drive], al seg000:0BF7 mov [bp+error_high_drive], al seg000:0BFA mov [bp+vdel_i], 0 seg000:0BFF seg000:0BFF vdel_8: ; CODE XREF: volume_delete+FDj seg000:0BFF mov si, [bp+vdel_i] seg000:0C02 shl si, 1 seg000:0C04 mov al, [bp+si+vdel_drive_list] seg000:0C07 mov [bp+vdel_drv_temp], al seg000:0C0A or al, al seg000:0C0C jz short vdel_9 seg000:0C0E cmp [bp+si+vdel_drive_list1], 0FEh seg000:0C12 jz short vdel_9 seg000:0C14 mov [bp+vdel_drives_exist], 1 seg000:0C18 mov [bp+error_high_drive], al seg000:0C1B cmp [bp+error_low_drive], 0 seg000:0C1F jnz short vdel_9 seg000:0C21 mov [bp+error_low_drive], al seg000:0C24 seg000:0C24 vdel_9: ; CODE XREF: volume_delete+DEj seg000:0C24 ; volume_delete+E4j ... seg000:0C24 inc [bp+vdel_i] seg000:0C27 cmp [bp+vdel_i], 23 seg000:0C2B jl short vdel_8 seg000:0C2D cmp [bp+vdel_drives_exist], 0 seg000:0C31 jnz short vdel_10 seg000:0C33 jmp vdel_38 seg000:0C36 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0C36 seg000:0C36 vdel_10: ; CODE XREF: volume_delete+103j seg000:0C36 mov ds:valid_input, 0 seg000:0C3B seg000:0C3B vdel_11: ; CODE XREF: volume_delete+1AEj seg000:0C3B cmp [bp+vdel_input], 1Bh seg000:0C3F jnz short vdel_12 seg000:0C41 jmp vdel_16 seg000:0C44 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0C44 seg000:0C44 vdel_12: ; CODE XREF: volume_delete+111j seg000:0C44 push ds:menu_33_segment seg000:0C48 push ds:menu_33_offset seg000:0C4C call display seg000:0C4F pop bx seg000:0C50 pop bx seg000:0C51 mov ax, 79 seg000:0C54 push ax seg000:0C55 mov ax, 21 seg000:0C58 push ax seg000:0C59 sub cx, cx seg000:0C5B push cx seg000:0C5C push ax seg000:0C5D call clear_screen seg000:0C60 add sp, 8 seg000:0C63 mov al, [bp+error_high_drive] seg000:0C66 push ax seg000:0C67 mov al, [bp+error_low_drive] seg000:0C6A push ax seg000:0C6B push ds:input_col seg000:0C6F push ds:input_row seg000:0C73 mov al, [bp+vdel_high_drive] seg000:0C76 push ax seg000:0C77 mov al, [bp+vdel_low_drive] seg000:0C7A push ax seg000:0C7B call get_alpha_input seg000:0C7E add sp, 12 seg000:0C81 mov [bp+vdel_input], al seg000:0C84 mov [bp+vdel_drive_input], al seg000:0C87 mov [bp+vdel_drives_exist], 0 seg000:0C8B mov [bp+vdel_i], 0 seg000:0C90 seg000:0C90 vdel_13: ; CODE XREF: volume_delete+1A5j seg000:0C90 mov al, [bp+vdel_drive_input] seg000:0C93 mov si, [bp+vdel_i] seg000:0C96 shl si, 1 seg000:0C98 cmp [bp+si+vdel_drive_list], al seg000:0C9B jnz short vdel_14 seg000:0C9D cmp [bp+si+vdel_drive_list1], 0FEh seg000:0CA1 jz short vdel_14 seg000:0CA3 mov [bp+vdel_drives_exist], 1 seg000:0CA7 mov ax, [bp+vdel_i] seg000:0CAA mov [bp+vdel_list_index], ax seg000:0CAD seg000:0CAD vdel_14: ; CODE XREF: volume_delete+16Dj seg000:0CAD ; volume_delete+173j seg000:0CAD mov al, 24 seg000:0CAF imul ds:cur_disk seg000:0CB3 add ax, [bp+vdel_i] seg000:0CB6 mov cx, 46 seg000:0CB9 imul cx seg000:0CBB mov bx, ax seg000:0CBD mov al, [bp+vdel_drive_input] seg000:0CC0 cmp ds:ext_table_drive_letter[bx], al seg000:0CC4 jnz short vdel_15 seg000:0CC6 mov ax, [bp+vdel_i] seg000:0CC9 mov [bp+vdel_point], ax seg000:0CCC seg000:0CCC vdel_15: ; CODE XREF: volume_delete+196j seg000:0CCC inc [bp+vdel_i] seg000:0CCF cmp [bp+vdel_i], 23 seg000:0CD3 jl short vdel_13 seg000:0CD5 cmp ds:valid_input, 0 seg000:0CDA jnz short vdel_16 seg000:0CDC jmp vdel_11 seg000:0CDF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0CDF seg000:0CDF vdel_16: ; CODE XREF: volume_delete+113j seg000:0CDF ; volume_delete+1ACj seg000:0CDF mov [bp+vdel_vol_matches], 0 seg000:0CE3 cmp [bp+vdel_input], 1Bh seg000:0CE7 jnz short vdel_17 seg000:0CE9 jmp vdel_22 seg000:0CEC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0CEC seg000:0CEC vdel_17: ; CODE XREF: volume_delete+1B9j seg000:0CEC cmp [bp+vdel_drives_exist], 0 seg000:0CF0 jz short vdel_20 seg000:0CF2 mov byte ptr [bp+vdel_string_input], 0 seg000:0CF6 mov ax, 79 seg000:0CF9 push ax seg000:0CFA mov ax, 23 seg000:0CFD push ax seg000:0CFE sub ax, ax seg000:0D00 push ax seg000:0D01 mov ax, 22 seg000:0D04 push ax seg000:0D05 call clear_screen seg000:0D08 add sp, 8 seg000:0D0B push ds:menu_41_segment seg000:0D0F push ds:menu_41_offset seg000:0D13 call display seg000:0D16 pop bx seg000:0D17 pop bx seg000:0D18 lea ax, [bp+vdel_string_input] seg000:0D1B push ss seg000:0D1C push ax seg000:0D1D push ds:input_col seg000:0D21 push ds:input_row seg000:0D25 call get_string_input seg000:0D28 add sp, 8 seg000:0D2B cmp byte ptr [bp+vdel_string_input], 1Bh seg000:0D2F jnz short vdel_18 seg000:0D31 mov [bp+vdel_input], 1Bh seg000:0D35 seg000:0D35 vdel_18: ; CODE XREF: volume_delete+201j seg000:0D35 lea ax, [bp+vdel_string_input] seg000:0D38 push ax seg000:0D39 mov al, 24 seg000:0D3B imul ds:cur_disk seg000:0D3F add ax, [bp+vdel_point] seg000:0D42 mov cx, 46 seg000:0D45 imul cx seg000:0D47 add ax, offset ext_table_vol_label seg000:0D4A push ax seg000:0D4B call strcmp seg000:0D4E pop bx seg000:0D4F pop bx seg000:0D50 or ax, ax seg000:0D52 jnz short vdel_19 seg000:0D54 mov [bp+vdel_vol_matches], 1 seg000:0D58 jmp short vdel_22 seg000:0D5A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0D5A seg000:0D5A vdel_19: ; CODE XREF: volume_delete+224j seg000:0D5A cmp [bp+vdel_input], 1Bh seg000:0D5E jz short vdel_22 seg000:0D60 push ds:error_34_seg seg000:0D64 push ds:error_34_off seg000:0D68 jmp short vdel_21 seg000:0D6A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0D6A seg000:0D6A vdel_20: ; CODE XREF: volume_delete+1C2j seg000:0D6A mov al, [bp+vdel_drive_input] seg000:0D6D push ax seg000:0D6E call dos_upper seg000:0D71 pop bx seg000:0D72 mov ds:insert, al seg000:0D75 mov ds:insert+1, ':' seg000:0D7A mov ax, 79 seg000:0D7D push ax seg000:0D7E mov ax, 22 seg000:0D81 push ax seg000:0D82 sub ax, ax seg000:0D84 push ax seg000:0D85 mov ax, 21 seg000:0D88 push ax seg000:0D89 call clear_screen seg000:0D8C add sp, 8 seg000:0D8F push ds:error_29_seg seg000:0D93 push ds:error_29_off seg000:0D97 seg000:0D97 vdel_21: ; CODE XREF: volume_delete+23Aj seg000:0D97 call display seg000:0D9A pop bx seg000:0D9B pop bx seg000:0D9C seg000:0D9C vdel_22: ; CODE XREF: volume_delete+1BBj seg000:0D9C ; volume_delete+22Aj ... seg000:0D9C cmp [bp+vdel_input], 1Bh seg000:0DA0 jnz short vdel_23 seg000:0DA2 jmp vdel_39 seg000:0DA5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0DA5 seg000:0DA5 vdel_23: ; CODE XREF: volume_delete+272j seg000:0DA5 cmp [bp+vdel_drives_exist], 0 seg000:0DA9 jz short vdel_24 seg000:0DAB cmp [bp+vdel_vol_matches], 0 seg000:0DAF jnz short vdel_25 seg000:0DB1 seg000:0DB1 vdel_24: ; CODE XREF: volume_delete+27Bj seg000:0DB1 jmp vdel_39 seg000:0DB4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0DB4 seg000:0DB4 vdel_25: ; CODE XREF: volume_delete+281j seg000:0DB4 mov ds:valid_input, 1 seg000:0DB9 mov al, [bp+vdel_drive_input] seg000:0DBC sub al, [bp+vdel_low_drive] seg000:0DBF push ax seg000:0DC0 call find_ext_drive seg000:0DC3 pop bx seg000:0DC4 mov [bp+vdel_del_drive], al seg000:0DC7 push ds:menu_34_segment seg000:0DCB push ds:menu_34_offset seg000:0DCF call display seg000:0DD2 pop bx seg000:0DD3 pop bx seg000:0DD4 push ds:input_col seg000:0DD8 push ds:input_row seg000:0DDC mov al, byte ptr ds:No seg000:0DDF push ax seg000:0DE0 call get_yn_input seg000:0DE3 add sp, 6 seg000:0DE6 mov [bp+vdel_input], al seg000:0DE9 mov ax, 79 seg000:0DEC push ax seg000:0DED mov ax, 23 seg000:0DF0 push ax seg000:0DF1 sub cx, cx seg000:0DF3 push cx seg000:0DF4 push ax seg000:0DF5 call clear_screen seg000:0DF8 add sp, 8 seg000:0DFB seg000:0DFB switch_input5: seg000:0DFB mov al, [bp+vdel_input] seg000:0DFE cbw seg000:0DFF cmp ax, 1Bh seg000:0E02 jnz short vdel_27 seg000:0E04 jmp case_vol_del_break seg000:0E07 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0E07 seg000:0E07 vdel_27: ; CODE XREF: volume_delete+2D4j seg000:0E07 ja short case_vol_del_DEF seg000:0E09 or al, al seg000:0E0B jnz short vdel_28 seg000:0E0D jmp case_vol_del_break seg000:0E10 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0E10 seg000:0E10 vdel_28: ; CODE XREF: volume_delete+2DDj seg000:0E10 dec al seg000:0E12 jz short case_vol_del_1 seg000:0E14 seg000:0E14 case_vol_del_DEF: ; CODE XREF: volume_delete:vdel_27j seg000:0E14 call internal_program_error seg000:0E17 jmp vdel_39 seg000:0E1A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0E1A seg000:0E1A case_vol_del_1: ; CODE XREF: volume_delete+2E4j seg000:0E1A mov si, [bp+vdel_list_index] seg000:0E1D shl si, 1 seg000:0E1F mov [bp+si+vdel_drive_list1], 0FEh seg000:0E23 mov [bp+drives_reassigned], 1 seg000:0E27 mov [bp+vdel_i], 0 seg000:0E2C jmp short vdel_34 seg000:0E2E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0E2E seg000:0E2E vdel_31: ; CODE XREF: volume_delete+395j seg000:0E2E mov [bp+vdel_column], 45 seg000:0E33 mov ax, [bp+vdel_i] seg000:0E36 sub ax, 8 seg000:0E39 mov [bp+vdel_row], ax seg000:0E3C mov cx, 79 seg000:0E3F push cx seg000:0E40 push ax seg000:0E41 mov cx, 45 seg000:0E44 seg000:0E44 vdel_32: ; CODE XREF: volume_delete+3AEj seg000:0E44 push cx seg000:0E45 push ax seg000:0E46 call clear_screen seg000:0E49 add sp, 8 seg000:0E4C mov ax, [bp+vdel_row] seg000:0E4F mov cx, 10 seg000:0E52 cwd seg000:0E53 idiv cx seg000:0E55 add al, '0' seg000:0E57 les bx, dword ptr ds:status_3_off seg000:0E5B inc bx seg000:0E5C mov word ptr [bp+vdel_s], bx seg000:0E5F mov word ptr [bp+vdel_s+2], es seg000:0E62 mov es:[bx], al seg000:0E65 mov ax, [bp+vdel_row] seg000:0E68 cwd seg000:0E69 idiv cx seg000:0E6B add dl, '0' seg000:0E6E inc word ptr [bp+vdel_s] seg000:0E71 les bx, [bp+vdel_s] seg000:0E74 mov es:[bx], dl seg000:0E77 mov ax, [bp+vdel_column] seg000:0E7A cwd seg000:0E7B idiv cx seg000:0E7D add al, '0' seg000:0E7F inc bx seg000:0E80 mov word ptr [bp+vdel_s], bx seg000:0E83 mov word ptr [bp+vdel_s+2], es seg000:0E86 mov es:[bx], al seg000:0E89 mov ax, [bp+vdel_column] seg000:0E8C cwd seg000:0E8D idiv cx seg000:0E8F add dl, '0' seg000:0E92 inc bx seg000:0E93 mov word ptr [bp+vdel_s], bx seg000:0E96 mov word ptr [bp+vdel_s+2], es seg000:0E99 mov es:[bx], dl seg000:0E9C push ds:status_3_seg seg000:0EA0 push ds:status_3_off seg000:0EA4 call display seg000:0EA7 pop bx seg000:0EA8 pop bx seg000:0EA9 seg000:0EA9 vdel_33: ; CODE XREF: volume_delete+38Dj seg000:0EA9 inc [bp+vdel_i] seg000:0EAC seg000:0EAC vdel_34: ; CODE XREF: volume_delete+2FEj seg000:0EAC cmp [bp+vdel_i], 23 seg000:0EB0 jge short vdel_36 seg000:0EB2 mov si, [bp+vdel_i] seg000:0EB5 shl si, 1 seg000:0EB7 cmp [bp+si+vdel_drive_list1], 0FEh seg000:0EBB jnz short vdel_33 seg000:0EBD cmp [bp+vdel_i], 12 seg000:0EC1 jl short vdel_35 seg000:0EC3 jmp vdel_31 seg000:0EC6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0EC6 seg000:0EC6 vdel_35: ; CODE XREF: volume_delete+393j seg000:0EC6 mov [bp+vdel_column], 4 seg000:0ECB mov ax, [bp+vdel_i] seg000:0ECE add ax, 4 seg000:0ED1 mov [bp+vdel_row], ax seg000:0ED4 mov cx, 39 seg000:0ED7 push cx seg000:0ED8 push ax seg000:0ED9 mov cx, 4 seg000:0EDC jmp vdel_32 seg000:0EDF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0EDF seg000:0EDF vdel_36: ; CODE XREF: volume_delete+382j seg000:0EDF mov ds:reboot_flag, 1 seg000:0EE4 seg000:0EE4 case_vol_del_break: ; CODE XREF: volume_delete+2D6j seg000:0EE4 ; volume_delete+2DFj seg000:0EE4 mov ax, 79 seg000:0EE7 push ax seg000:0EE8 mov ax, 23 seg000:0EEB push ax seg000:0EEC sub ax, ax seg000:0EEE push ax seg000:0EEF mov ax, 21 seg000:0EF2 push ax seg000:0EF3 call clear_screen seg000:0EF6 add sp, 8 seg000:0EF9 jmp short vdel_39 seg000:0EFB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0EFB seg000:0EFB vdel_38: ; CODE XREF: volume_delete+105j seg000:0EFB mov ax, 79 seg000:0EFE push ax seg000:0EFF mov ax, 21 seg000:0F02 push ax seg000:0F03 sub ax, ax seg000:0F05 push ax seg000:0F06 mov ax, 16 seg000:0F09 push ax seg000:0F0A call clear_screen seg000:0F0D add sp, 8 seg000:0F10 push ds:error_22_seg seg000:0F14 push ds:error_22_off seg000:0F18 call display seg000:0F1B pop bx seg000:0F1C pop bx seg000:0F1D call wait_for_ESC seg000:0F20 mov [bp+vdel_input], al seg000:0F23 seg000:0F23 vdel_39: ; CODE XREF: volume_delete+BEj seg000:0F23 ; volume_delete+274j ... seg000:0F23 cmp [bp+vdel_input], 1Bh seg000:0F27 jz short vdel_40 seg000:0F29 jmp vdel_7 seg000:0F2C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0F2C seg000:0F2C vdel_40: ; CODE XREF: volume_delete+3F9j seg000:0F2C cmp [bp+drives_reassigned], 0 seg000:0F30 jnz short vol_del_for_1 seg000:0F32 jmp vdel_49 seg000:0F35 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0F35 seg000:0F35 vol_del_for_1: ; CODE XREF: volume_delete+402j seg000:0F35 mov [bp+vdel_i], 0 seg000:0F3A seg000:0F3A vol_del_for_1_next: ; CODE XREF: volume_delete+45Bj seg000:0F3A mov si, [bp+vdel_i] seg000:0F3D shl si, 1 seg000:0F3F cmp [bp+si+vdel_drive_list1], 0FEh seg000:0F43 jnz short vol_del_for_1_condition seg000:0F45 seg000:0F45 vol_del_for_2: seg000:0F45 mov [bp+vdel_j], 0 seg000:0F4A seg000:0F4A vol_del_for_2_next: ; CODE XREF: volume_delete+452j seg000:0F4A mov al, 24 seg000:0F4C imul ds:cur_disk seg000:0F50 add ax, [bp+vdel_j] seg000:0F53 mov cx, 46 seg000:0F56 imul cx seg000:0F58 mov bx, ax seg000:0F5A mov al, ds:ext_table_drive_letter[bx] seg000:0F5E cbw seg000:0F5F mov si, [bp+vdel_i] seg000:0F62 shl si, 1 seg000:0F64 mov cl, [bp+si+vdel_drive_list] seg000:0F67 sub ch, ch seg000:0F69 cmp ax, cx seg000:0F6B jnz short vol_del_for_2_condition seg000:0F6D push [bp+vdel_i] seg000:0F70 mov al, ds:cur_disk seg000:0F73 push ax seg000:0F74 call remove_volume seg000:0F77 pop bx seg000:0F78 pop bx seg000:0F79 seg000:0F79 vol_del_for_2_condition: ; CODE XREF: volume_delete+43Dj seg000:0F79 inc [bp+vdel_j] seg000:0F7C cmp [bp+vdel_j], 23 seg000:0F80 jl short vol_del_for_2_next seg000:0F82 seg000:0F82 vol_del_for_1_condition: ; CODE XREF: volume_delete+415j seg000:0F82 inc [bp+vdel_i] seg000:0F85 cmp [bp+vdel_i], 23 seg000:0F89 jl short vol_del_for_1_next seg000:0F8B call volume_display seg000:0F8E mov ax, 79 seg000:0F91 push ax seg000:0F92 mov ax, 23 seg000:0F95 push ax seg000:0F96 sub ax, ax seg000:0F98 push ax seg000:0F99 mov ax, 16 seg000:0F9C push ax seg000:0F9D call clear_screen seg000:0FA0 add sp, 8 seg000:0FA3 push ds:status_10_seg seg000:0FA7 push ds:status_10_off seg000:0FAB jmp short vdel_48 seg000:0FAD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:0FAD seg000:0FAD vdel_47: ; CODE XREF: volume_delete+52j seg000:0FAD mov ax, 79 seg000:0FB0 push ax seg000:0FB1 mov ax, 21 seg000:0FB4 push ax seg000:0FB5 sub ax, ax seg000:0FB7 push ax seg000:0FB8 mov ax, 16 seg000:0FBB push ax seg000:0FBC call clear_screen seg000:0FBF add sp, 8 seg000:0FC2 push ds:error_36_seg seg000:0FC6 push ds:error_36_off seg000:0FCA seg000:0FCA vdel_48: ; CODE XREF: volume_delete+47Dj seg000:0FCA call display seg000:0FCD pop bx seg000:0FCE pop bx seg000:0FCF call wait_for_ESC seg000:0FD2 seg000:0FD2 vdel_49: ; CODE XREF: volume_delete+404j seg000:0FD2 mov ax, 79 seg000:0FD5 push ax seg000:0FD6 mov ax, 24 seg000:0FD9 push ax seg000:0FDA sub ax, ax seg000:0FDC push ax seg000:0FDD push ax seg000:0FDE call clear_screen seg000:0FE1 add sp, 8 seg000:0FE4 pop si seg000:0FE5 mov sp, bp seg000:0FE7 pop bp seg000:0FE8 retn seg000:0FE8 volume_delete endp seg000:0FE8 seg000:0FE9 seg000:0FE9 ; --------------- S U B R O U T I N E --------------------------------------- seg000:0FE9 seg000:0FE9 ; Attributes: bp-based frame seg000:0FE9 seg000:0FE9 non_dos_delete proc near ; CODE XREF: delete_partition+1ADp seg000:0FE9 seg000:0FE9 ndd_j = word ptr -0Ah seg000:0FE9 ndd_i = word ptr -8 seg000:0FE9 ndd_cnt = word ptr -6 seg000:0FE9 ndd_pnum = word ptr -2 seg000:0FE9 seg000:0FE9 push bp seg000:0FEA mov bp, sp seg000:0FEC sub sp, 10 seg000:0FEF mov ax, 79 seg000:0FF2 push ax seg000:0FF3 mov ax, 24 seg000:0FF6 push ax seg000:0FF7 sub ax, ax seg000:0FF9 push ax seg000:0FFA push ax seg000:0FFB call clear_screen seg000:0FFE add sp, 8 seg000:1001 push ds:menu_58_segment seg000:1005 push ds:menu_58_offset seg000:1009 call display seg000:100C pop bx seg000:100D pop bx seg000:100E mov al, ds:cur_disk seg000:1011 add al, '1' seg000:1013 mov ds:insert, al seg000:1016 push ds:menu_5_segment seg000:101A push ds:menu_5_offset seg000:101E call display seg000:1021 pop bx seg000:1022 pop bx seg000:1023 push ds:menu_11_segment seg000:1027 push ds:menu_11_offset seg000:102B call display seg000:102E pop bx seg000:102F pop bx seg000:1030 call table_display seg000:1033 or al, al seg000:1035 jnz short ndd_1 seg000:1037 jmp case_nondos_del_DEF seg000:103A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:103A seg000:103A ndd_1: ; CODE XREF: non_dos_delete+4Cj seg000:103A mov al, ds:cur_disk seg000:103D cbw seg000:103E mov bx, ax seg000:1040 shl bx, 1 seg000:1042 push ds:total_mbytes[bx] seg000:1046 mov ax, offset nd_p_size_format ; "%4.1d" seg000:1049 push ax seg000:104A mov ax, offset insert seg000:104D push ax seg000:104E call sprintf seg000:1051 add sp, 6 seg000:1054 push ds:menu_15_segment seg000:1058 push ds:menu_15_offset seg000:105C call display seg000:105F pop bx seg000:1060 pop bx seg000:1061 mov [bp+ndd_cnt], 0 seg000:1066 mov [bp+ndd_i], 0 seg000:106B seg000:106B ndd_2: ; CODE XREF: non_dos_delete+A5j seg000:106B mov al, ds:cur_disk seg000:106E cbw seg000:106F shl ax, 1 seg000:1071 shl ax, 1 seg000:1073 add ax, [bp+ndd_i] seg000:1076 mov cx, 46 seg000:1079 mul cx seg000:107B mov bx, ax seg000:107D cmp ds:part_table_sys_id[bx], 0 seg000:1082 jz short ndd_3 seg000:1084 inc [bp+ndd_cnt] seg000:1087 seg000:1087 ndd_3: ; CODE XREF: non_dos_delete+99j seg000:1087 inc [bp+ndd_i] seg000:108A cmp [bp+ndd_i], 4 seg000:108E jb short ndd_2 seg000:1090 push ds:menu_59_segment seg000:1094 push ds:menu_59_offset seg000:1098 call display seg000:109B pop bx seg000:109C pop bx seg000:109D push ds:input_col seg000:10A1 push ds:input_row seg000:10A5 mov al, byte ptr [bp+ndd_cnt] seg000:10A8 push ax seg000:10A9 mov al, 1 seg000:10AB push ax seg000:10AC call get_num_input seg000:10AF add sp, 8 seg000:10B2 cmp al, 1Bh seg000:10B4 jnz short ndd_4 seg000:10B6 jmp case_nondos_del_break seg000:10B9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:10B9 seg000:10B9 ndd_4: ; CODE XREF: non_dos_delete+CBj seg000:10B9 cbw seg000:10BA sub ax, '0' seg000:10BD mov [bp+ndd_pnum], ax seg000:10C0 mov [bp+ndd_j], 0 seg000:10C5 seg000:10C5 loc_10C5: seg000:10C5 mov [bp+ndd_i], 0 seg000:10CA jmp short ndd_6 seg000:10CC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:10CC seg000:10CC ndd_5: ; CODE XREF: non_dos_delete+10Cj seg000:10CC ; non_dos_delete+117j seg000:10CC inc [bp+ndd_i] seg000:10CF seg000:10CF ndd_6: ; CODE XREF: non_dos_delete+E1j seg000:10CF cmp [bp+ndd_i], 4 seg000:10D3 jnb short ndd_7 seg000:10D5 mov al, ds:cur_disk seg000:10D8 cbw seg000:10D9 shl ax, 1 seg000:10DB shl ax, 1 seg000:10DD mov bx, [bp+ndd_i] seg000:10E0 mov cx, ax seg000:10E2 mov al, ds:sort[bx] seg000:10E6 cbw seg000:10E7 add ax, cx seg000:10E9 mov cx, 46 seg000:10EC imul cx seg000:10EE mov bx, ax seg000:10F0 cmp ds:part_table_sys_id[bx], 0 seg000:10F5 jz short ndd_5 seg000:10F7 mov ax, [bp+ndd_pnum] seg000:10FA inc [bp+ndd_j] seg000:10FD cmp [bp+ndd_j], ax seg000:1100 jnz short ndd_5 seg000:1102 seg000:1102 ndd_7: ; CODE XREF: non_dos_delete+EAj seg000:1102 mov al, ds:cur_disk seg000:1105 cbw seg000:1106 shl ax, 1 seg000:1108 shl ax, 1 seg000:110A mov bx, [bp+ndd_i] seg000:110D mov cx, ax seg000:110F mov al, ds:sort[bx] seg000:1113 cbw seg000:1114 mov [bp+ndd_i], ax seg000:1117 add ax, cx seg000:1119 mov cx, 46 seg000:111C mul cx seg000:111E mov bx, ax seg000:1120 cmp ds:part_table_sys_id[bx], 1 seg000:1125 jz short ndd_11 seg000:1127 cmp ds:part_table_sys_id[bx], 4 seg000:112C jz short ndd_11 seg000:112E cmp ds:part_table_sys_id[bx], 6 seg000:1133 jz short ndd_11 seg000:1135 cmp ds:part_table_sys_id[bx], 5 seg000:113A jz short ndd_11 seg000:113C push ds:menu_56_segment seg000:1140 push ds:menu_56_offset seg000:1144 call display seg000:1147 pop bx seg000:1148 pop bx seg000:1149 push ds:input_col seg000:114D push ds:input_row seg000:1151 mov al, byte ptr ds:No seg000:1154 push ax seg000:1155 call get_yn_input seg000:1158 add sp, 6 seg000:115B seg000:115B switch_input6: seg000:115B cbw seg000:115C cmp ax, 1Bh seg000:115F jz short case_nondos_del_break seg000:1161 ja short case_nondos_del_DEF seg000:1163 or al, al seg000:1165 jz short case_nondos_del_break seg000:1167 dec al seg000:1169 jnz short case_nondos_del_DEF seg000:116B seg000:116B case_nondos_del_1: seg000:116B push [bp+ndd_i] seg000:116E mov al, ds:cur_disk seg000:1171 push ax seg000:1172 call remove_partition seg000:1175 pop bx seg000:1176 pop bx seg000:1177 call table_display seg000:117A mov ax, 79 seg000:117D push ax seg000:117E mov ax, 23 seg000:1181 push ax seg000:1182 sub ax, ax seg000:1184 push ax seg000:1185 mov ax, 16 seg000:1188 push ax seg000:1189 call clear_screen seg000:118C add sp, 8 seg000:118F mov ds:reboot_flag, 1 seg000:1194 push ds:status_13_seg seg000:1198 push ds:status_13_off seg000:119C seg000:119C ndd_10: ; CODE XREF: non_dos_delete+1C5j seg000:119C call display seg000:119F pop bx seg000:11A0 pop bx seg000:11A1 call wait_for_ESC seg000:11A4 jmp short case_nondos_del_break seg000:11A6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:11A6 seg000:11A6 ndd_11: ; CODE XREF: non_dos_delete+13Cj seg000:11A6 ; non_dos_delete+143j ... seg000:11A6 push ds:error_39_seg seg000:11AA push ds:error_39_off seg000:11AE jmp short ndd_10 seg000:11B0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:11B0 seg000:11B0 case_nondos_del_DEF: ; CODE XREF: non_dos_delete+4Ej seg000:11B0 ; non_dos_delete+178j ... seg000:11B0 call internal_program_error seg000:11B3 seg000:11B3 case_nondos_del_break: ; CODE XREF: non_dos_delete+CDj seg000:11B3 ; non_dos_delete+176j ... seg000:11B3 mov ax, 79 seg000:11B6 push ax seg000:11B7 mov ax, 24 seg000:11BA push ax seg000:11BB sub ax, ax seg000:11BD push ax seg000:11BE push ax seg000:11BF call clear_screen seg000:11C2 mov sp, bp seg000:11C4 pop bp seg000:11C5 retn seg000:11C5 non_dos_delete endp seg000:11C5 seg000:11C6 seg000:11C6 ; --------------- S U B R O U T I N E --------------------------------------- seg000:11C6 seg000:11C6 ; Attributes: bp-based frame seg000:11C6 seg000:11C6 create_partition proc near ; CODE XREF: do_main_menu:case_1p seg000:11C6 seg000:11C6 cp_input = byte ptr -2 seg000:11C6 seg000:11C6 push bp seg000:11C7 mov bp, sp seg000:11C9 sub sp, 6 seg000:11CC mov ax, 79 seg000:11CF push ax seg000:11D0 mov ax, 24 seg000:11D3 push ax seg000:11D4 sub ax, ax seg000:11D6 push ax seg000:11D7 push ax seg000:11D8 call clear_screen seg000:11DB add sp, 8 seg000:11DE push ds:menu_8_segment seg000:11E2 push ds:menu_8_offset seg000:11E6 call display seg000:11E9 pop bx seg000:11EA pop bx seg000:11EB push ds:menu_11_segment seg000:11EF push ds:menu_11_offset seg000:11F3 call display seg000:11F6 pop bx seg000:11F7 pop bx seg000:11F8 mov al, ds:cur_disk seg000:11FB add al, '1' seg000:11FD mov ds:insert, al seg000:1200 push ds:menu_5_segment seg000:1204 push ds:menu_5_offset seg000:1208 call display seg000:120B pop bx seg000:120C pop bx seg000:120D push ds:menu_3_segment seg000:1211 push ds:menu_3_offset seg000:1215 call display seg000:1218 pop bx seg000:1219 pop bx seg000:121A push ds:menu_9_segment seg000:121E push ds:menu_9_offset seg000:1222 call display seg000:1225 pop bx seg000:1226 pop bx seg000:1227 mov ds:insert, '1' seg000:122C push ds:menu_7_segment seg000:1230 push ds:menu_7_offset seg000:1234 call display seg000:1237 pop bx seg000:1238 pop bx seg000:1239 push ds:menu_10_segment seg000:123D push ds:menu_10_offset seg000:1241 call display seg000:1244 pop bx seg000:1245 pop bx seg000:1246 push ds:input_col seg000:124A push ds:input_row seg000:124E mov al, 3 seg000:1250 push ax seg000:1251 mov al, 1 seg000:1253 push ax seg000:1254 call get_num_input seg000:1257 add sp, 8 seg000:125A mov [bp+cp_input], al seg000:125D cmp al, '3' seg000:125F jnz short cp_2 seg000:1261 mov al, 5 seg000:1263 push ax seg000:1264 call find_partition_type seg000:1267 pop bx seg000:1268 or al, al seg000:126A jz short cp_1 seg000:126C call volume_create seg000:126F jmp case_crea_part_break seg000:1272 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1272 seg000:1272 cp_1: ; CODE XREF: create_partition+A4j seg000:1272 push ds:error_35_seg seg000:1276 push ds:error_35_off seg000:127A jmp short cp_9 seg000:127C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:127C seg000:127C cp_2: ; CODE XREF: create_partition+99j seg000:127C call find_free_partition seg000:127F inc al seg000:1281 jz short cp_10 seg000:1283 seg000:1283 switch_input7: seg000:1283 mov al, [bp+cp_input] seg000:1286 cbw seg000:1287 cmp ax, '2' seg000:128A jz short case_crea_part_2 seg000:128C ja short case_crea_part_DEF seg000:128E sub al, 1Bh seg000:1290 jz short case_crea_part_break seg000:1292 sub al, 16h seg000:1294 jz short case_crea_part_1 seg000:1296 seg000:1296 case_crea_part_DEF: ; CODE XREF: create_partition+C6j seg000:1296 call internal_program_error seg000:1299 jmp short case_crea_part_break seg000:129B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:129B seg000:129B case_crea_part_1: ; CODE XREF: create_partition+CEj seg000:129B call dos_create_partition seg000:129E jmp short case_crea_part_break seg000:12A0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:12A0 seg000:12A0 case_crea_part_2: ; CODE XREF: create_partition+C4j seg000:12A0 cmp ds:cur_disk, 1 seg000:12A5 jge short cp_7 seg000:12A7 mov al, 1 seg000:12A9 push ax seg000:12AA call find_partition_type seg000:12AD pop bx seg000:12AE or al, al seg000:12B0 jnz short cp_7 seg000:12B2 mov al, 4 seg000:12B4 push ax seg000:12B5 call find_partition_type seg000:12B8 pop bx seg000:12B9 or al, al seg000:12BB jnz short cp_7 seg000:12BD mov al, 6 seg000:12BF push ax seg000:12C0 call find_partition_type seg000:12C3 pop bx seg000:12C4 or al, al seg000:12C6 jz short cp_8 seg000:12C8 seg000:12C8 cp_7: ; CODE XREF: create_partition+DFj seg000:12C8 ; create_partition+EAj ... seg000:12C8 call ext_create_partition seg000:12CB jmp short case_crea_part_break seg000:12CD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:12CD seg000:12CD cp_8: ; CODE XREF: create_partition+100j seg000:12CD push ds:error_19_seg seg000:12D1 push ds:error_19_off seg000:12D5 seg000:12D5 cp_9: ; CODE XREF: create_partition+B4j seg000:12D5 call display seg000:12D8 pop bx seg000:12D9 pop bx seg000:12DA mov ax, 79 seg000:12DD push ax seg000:12DE mov ax, 17 seg000:12E1 push ax seg000:12E2 sub cx, cx seg000:12E4 push cx seg000:12E5 push ax seg000:12E6 call clear_screen seg000:12E9 add sp, 8 seg000:12EC jmp short cp_11 seg000:12EE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:12EE seg000:12EE cp_10: ; CODE XREF: create_partition+BBj seg000:12EE push ds:error_10_seg seg000:12F2 push ds:error_10_off seg000:12F6 call display seg000:12F9 pop bx seg000:12FA pop bx seg000:12FB seg000:12FB cp_11: ; CODE XREF: create_partition+126j seg000:12FB call wait_for_ESC seg000:12FE seg000:12FE case_crea_part_break: ; CODE XREF: create_partition+A9j seg000:12FE ; create_partition+CAj ... seg000:12FE mov ax, 79 seg000:1301 push ax seg000:1302 mov ax, 24 seg000:1305 push ax seg000:1306 sub ax, ax seg000:1308 push ax seg000:1309 push ax seg000:130A call clear_screen seg000:130D mov sp, bp seg000:130F pop bp seg000:1310 retn seg000:1310 create_partition endp seg000:1310 seg000:1311 seg000:1311 ; --------------- S U B R O U T I N E --------------------------------------- seg000:1311 seg000:1311 ; Attributes: bp-based frame seg000:1311 seg000:1311 dos_create_partition proc near ; CODE XREF: create_partition:case_crea_part_1p seg000:1311 seg000:1311 second_disk_flag= byte ptr -10h seg000:1311 defined_drives = byte ptr -0Eh seg000:1311 cdp_i = byte ptr -0Ch seg000:1311 temp_cur_disk = byte ptr -0Ah seg000:1311 cdp_temp = byte ptr -8 seg000:1311 seg000:1311 push bp seg000:1312 mov bp, sp seg000:1314 sub sp, 16 seg000:1317 push si seg000:1318 sub al, al seg000:131A mov [bp+second_disk_flag], al seg000:131D mov ax, 79 seg000:1320 push ax seg000:1321 mov ax, 24 seg000:1324 push ax seg000:1325 sub ax, ax seg000:1327 push ax seg000:1328 push ax seg000:1329 call clear_screen seg000:132C add sp, 8 seg000:132F push ds:menu_12_segment seg000:1333 push ds:menu_12_offset seg000:1337 call display seg000:133A pop bx seg000:133B pop bx seg000:133C mov al, ds:cur_disk seg000:133F add al, '1' seg000:1341 mov ds:insert, al seg000:1344 push ds:menu_5_segment seg000:1348 push ds:menu_5_offset seg000:134C call display seg000:134F pop bx seg000:1350 pop bx seg000:1351 push ds:menu_11_segment seg000:1355 push ds:menu_11_offset seg000:1359 call display seg000:135C pop bx seg000:135D pop bx seg000:135E mov al, 1 seg000:1360 push ax seg000:1361 call find_partition_type seg000:1364 pop bx seg000:1365 or al, al seg000:1367 jnz short cdp_1 seg000:1369 mov al, 4 seg000:136B push ax seg000:136C call find_partition_type seg000:136F pop bx seg000:1370 or al, al seg000:1372 jnz short cdp_1 seg000:1374 mov al, 6 seg000:1376 push ax seg000:1377 call find_partition_type seg000:137A pop bx seg000:137B or al, al seg000:137D jz short cdp_2 seg000:137F seg000:137F cdp_1: ; CODE XREF: dos_create_partition+56j seg000:137F ; dos_create_partition+61j seg000:137F jmp cdp_19 seg000:1382 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1382 seg000:1382 cdp_2: ; CODE XREF: dos_create_partition+6Cj seg000:1382 push ax seg000:1383 call find_part_free_space seg000:1386 pop bx seg000:1387 mov [bp+cdp_temp], al seg000:138A mov al, ds:cur_disk seg000:138D cbw seg000:138E mov bx, ax seg000:1390 mov al, ds:max_sector[bx] seg000:1394 sub ah, ah seg000:1396 sub dx, dx seg000:1398 push dx seg000:1399 push ax seg000:139A mov al, 22 seg000:139C imul [bp+cdp_temp] seg000:139F mov si, ax seg000:13A1 mov ax, ds:free_space_space[si] seg000:13A5 shl bx, 1 seg000:13A7 mul ds:max_head[bx] seg000:13AB push dx seg000:13AC push ax seg000:13AD call mul32 seg000:13B0 or dx, dx seg000:13B2 jnz short cdp_3 seg000:13B4 cmp ax, 64 seg000:13B7 jnb short cdp_3 seg000:13B9 push ds:error_10_seg seg000:13BD push ds:error_10_off seg000:13C1 jmp cdp_20 seg000:13C4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:13C4 seg000:13C4 cdp_3: ; CODE XREF: dos_create_partition+A1j seg000:13C4 ; dos_create_partition+A6j seg000:13C4 mov [bp+defined_drives], 0 seg000:13C8 mov al, ds:cur_disk seg000:13CB mov [bp+temp_cur_disk], al seg000:13CE mov [bp+cdp_i], 0 seg000:13D2 jmp short cdp_8 seg000:13D4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:13D4 seg000:13D4 cdp_4: ; CODE XREF: dos_create_partition+107j seg000:13D4 mov al, [bp+cdp_i] seg000:13D7 mov ds:cur_disk, al seg000:13DA mov al, 1 seg000:13DC push ax seg000:13DD call find_partition_type seg000:13E0 pop bx seg000:13E1 or al, al seg000:13E3 jnz short cdp_5 seg000:13E5 mov al, 4 seg000:13E7 push ax seg000:13E8 call find_partition_type seg000:13EB pop bx seg000:13EC or al, al seg000:13EE jnz short cdp_5 seg000:13F0 mov al, 6 seg000:13F2 push ax seg000:13F3 call find_partition_type seg000:13F6 pop bx seg000:13F7 or al, al seg000:13F9 jz short cdp_6 seg000:13FB seg000:13FB cdp_5: ; CODE XREF: dos_create_partition+D2j seg000:13FB ; dos_create_partition+DDj seg000:13FB inc [bp+defined_drives] seg000:13FE seg000:13FE cdp_6: ; CODE XREF: dos_create_partition+E8j seg000:13FE mov al, 5 seg000:1400 push ax seg000:1401 call find_partition_type seg000:1404 pop bx seg000:1405 or al, al seg000:1407 jz short cdp_7 seg000:1409 call get_num_logical_dos_drives seg000:140C add [bp+defined_drives], al seg000:140F seg000:140F cdp_7: ; CODE XREF: dos_create_partition+F6j seg000:140F inc [bp+cdp_i] seg000:1412 seg000:1412 cdp_8: ; CODE XREF: dos_create_partition+C1j seg000:1412 mov al, ds:number_of_drives seg000:1415 cmp [bp+cdp_i], al seg000:1418 jb short cdp_4 seg000:141A mov al, [bp+temp_cur_disk] seg000:141D mov ds:cur_disk, al seg000:1420 cmp [bp+defined_drives], 23 seg000:1424 jle short cdp_9 seg000:1426 mov ax, 79 seg000:1429 push ax seg000:142A mov ax, 23 seg000:142D push ax seg000:142E sub ax, ax seg000:1430 push ax seg000:1431 mov ax, 16 seg000:1434 push ax seg000:1435 call clear_screen seg000:1438 add sp, 8 seg000:143B push ds:error_27_seg seg000:143F push ds:error_27_off seg000:1443 jmp cdp_20 seg000:1446 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1446 seg000:1446 cdp_9: ; CODE XREF: dos_create_partition+113j seg000:1446 cmp ds:cur_disk, 0 seg000:144B jnz short cdp_10 seg000:144D push ds:menu_13_segment seg000:1451 push ds:menu_13_offset seg000:1455 jmp short cdp_11 seg000:1457 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1457 seg000:1457 cdp_10: ; CODE XREF: dos_create_partition+13Aj seg000:1457 mov [bp+second_disk_flag], 1 seg000:145B push ds:menu_45_segment seg000:145F push ds:menu_45_offset seg000:1463 seg000:1463 cdp_11: ; CODE XREF: dos_create_partition+144j seg000:1463 call display seg000:1466 pop bx seg000:1467 pop bx seg000:1468 push ds:input_col seg000:146C push ds:input_row seg000:1470 mov al, ds:Yes seg000:1473 push ax seg000:1474 call get_yn_input seg000:1477 add sp, 6 seg000:147A seg000:147A switch_input8: seg000:147A cbw seg000:147B cmp ax, 1Bh seg000:147E jnz short cdp_13 seg000:1480 jmp case_dos_create_break seg000:1483 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1483 seg000:1483 cdp_13: ; CODE XREF: dos_create_partition+16Dj seg000:1483 ja short case_dos_create_DEF seg000:1485 or al, al seg000:1487 jnz short cdp_14 seg000:1489 jmp case_dos_create_0 seg000:148C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:148C seg000:148C cdp_14: ; CODE XREF: dos_create_partition+176j seg000:148C dec al seg000:148E jz short case_dos_create_1 seg000:1490 seg000:1490 case_dos_create_DEF: ; CODE XREF: dos_create_partition:cdp_13j seg000:1490 call internal_program_error seg000:1493 jmp case_dos_create_break seg000:1496 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1496 seg000:1496 case_dos_create_1: ; CODE XREF: dos_create_partition+17Dj seg000:1496 cmp [bp+second_disk_flag], 0 seg000:149A jnz short cdp_17 seg000:149C sub al, al seg000:149E push ax seg000:149F call find_part_free_space seg000:14A2 pop bx seg000:14A3 mov [bp+cdp_temp], al seg000:14A6 sub al, al seg000:14A8 push ax seg000:14A9 mov al, 80h seg000:14AB push ax seg000:14AC mov al, [bp+cdp_temp] seg000:14AF push ax seg000:14B0 mov cl, 22 seg000:14B2 imul cl seg000:14B4 mov bx, ax seg000:14B6 push ds:free_space_space[bx] seg000:14BA call make_partition seg000:14BD add sp, 8 seg000:14C0 mov ds:reboot_flag, 1 seg000:14C5 seg000:14C5 loc_14C5: seg000:14C5 cmp ds:number_of_drives, 1 seg000:14CA jnz short cdp_18 seg000:14CC seg000:14CC loc_14CC: seg000:14CC call write_info_to_disk seg000:14CF call reboot_system seg000:14D2 jmp short cdp_18 seg000:14D4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:14D4 seg000:14D4 cdp_17: ; CODE XREF: dos_create_partition+189j seg000:14D4 sub al, al seg000:14D6 push ax seg000:14D7 call find_part_free_space seg000:14DA pop bx seg000:14DB mov [bp+cdp_temp], al seg000:14DE sub al, al seg000:14E0 push ax seg000:14E1 push ax seg000:14E2 mov al, [bp+cdp_temp] seg000:14E5 push ax seg000:14E6 mov cl, 22 seg000:14E8 imul cl seg000:14EA mov bx, ax seg000:14EC push ds:free_space_space[bx] seg000:14F0 call make_partition seg000:14F3 add sp, 8 seg000:14F6 mov ds:reboot_flag, 1 seg000:14FB seg000:14FB cdp_18: ; CODE XREF: dos_create_partition+1B9j seg000:14FB ; dos_create_partition+1C1j seg000:14FB mov ax, 79 seg000:14FE push ax seg000:14FF mov ax, 23 seg000:1502 push ax seg000:1503 sub ax, ax seg000:1505 push ax seg000:1506 mov ax, 16 seg000:1509 push ax seg000:150A call clear_screen seg000:150D add sp, 8 seg000:1510 push ds:status_12_seg seg000:1514 push ds:status_12_off seg000:1518 jmp short cdp_20 seg000:151A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:151A seg000:151A case_dos_create_0: ; CODE XREF: dos_create_partition+178j seg000:151A call input_dos_create seg000:151D jmp short case_dos_create_break seg000:151F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:151F seg000:151F cdp_19: ; CODE XREF: dos_create_partition:cdp_1j seg000:151F call table_display seg000:1522 push ds:error_8_seg seg000:1526 push ds:error_8_off seg000:152A seg000:152A cdp_20: ; CODE XREF: dos_create_partition+B0j seg000:152A ; dos_create_partition+132j ... seg000:152A call display seg000:152D pop bx seg000:152E pop bx seg000:152F call wait_for_ESC seg000:1532 seg000:1532 case_dos_create_break: ; CODE XREF: dos_create_partition+16Fj seg000:1532 ; dos_create_partition+182j ... seg000:1532 pop si seg000:1533 mov sp, bp seg000:1535 pop bp seg000:1536 retn seg000:1536 dos_create_partition endp seg000:1536 seg000:1537 seg000:1537 ; --------------- S U B R O U T I N E --------------------------------------- seg000:1537 seg000:1537 ; Attributes: bp-based frame seg000:1537 seg000:1537 input_dos_create proc near ; CODE XREF: dos_create_partition:case_dos_create_0p seg000:1537 seg000:1537 idc_def_entry = word ptr -6 seg000:1537 idc_temp = byte ptr -4 seg000:1537 idc_input = word ptr -2 seg000:1537 seg000:1537 push bp seg000:1538 mov bp, sp seg000:153A sub sp, 6 seg000:153D push si seg000:153E mov ax, 79 seg000:1541 push ax seg000:1542 mov ax, 24 seg000:1545 push ax seg000:1546 sub ax, ax seg000:1548 mov [bp+idc_input], ax seg000:154B push ax seg000:154C push ax seg000:154D call clear_screen seg000:1550 add sp, 8 seg000:1553 push ds:menu_12_segment seg000:1557 push ds:menu_12_offset seg000:155B call display seg000:155E pop bx seg000:155F pop bx seg000:1560 mov al, ds:cur_disk seg000:1563 add al, '1' seg000:1565 mov ds:insert, al seg000:1568 push ds:menu_5_segment seg000:156C push ds:menu_5_offset seg000:1570 call display seg000:1573 pop bx seg000:1574 pop bx seg000:1575 push ds:menu_11_segment seg000:1579 push ds:menu_11_offset seg000:157D call display seg000:1580 pop bx seg000:1581 pop bx seg000:1582 call table_display seg000:1585 mov al, ds:cur_disk seg000:1588 cbw seg000:1589 mov bx, ax seg000:158B shl bx, 1 seg000:158D push ds:total_mbytes[bx] seg000:1591 mov ax, offset idc_totmb_format ; "%4.1d" seg000:1594 push ax seg000:1595 mov ax, offset insert seg000:1598 push ax seg000:1599 call sprintf seg000:159C add sp, 6 seg000:159F push ds:menu_15_segment seg000:15A3 push ds:menu_15_offset seg000:15A7 call display seg000:15AA pop bx seg000:15AB pop bx seg000:15AC sub al, al seg000:15AE push ax seg000:15AF call find_part_free_space seg000:15B2 pop bx seg000:15B3 mov [bp+idc_temp], al seg000:15B6 mov cl, 22 seg000:15B8 imul cl seg000:15BA mov bx, ax seg000:15BC cmp ds:free_space_mbytes_unused[bx], 0 seg000:15C1 jnz short idc_1 seg000:15C3 jmp idc_12 seg000:15C6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:15C6 seg000:15C6 idc_1: ; CODE XREF: input_dos_create+8Aj seg000:15C6 mov al, ds:cur_disk seg000:15C9 cbw seg000:15CA mov si, ax seg000:15CC shl si, 1 seg000:15CE push ds:total_mbytes[si] seg000:15D2 mov ax, offset idc_tot_mb_format ; "%4.1d" seg000:15D5 push ax seg000:15D6 mov ax, offset insert seg000:15D9 push ax seg000:15DA mov si, bx seg000:15DC call sprintf seg000:15DF add sp, 6 seg000:15E2 push ds:menu_15_segment seg000:15E6 push ds:menu_15_offset seg000:15EA call display seg000:15ED pop bx seg000:15EE pop bx seg000:15EF push ds:free_space_percent_unused[si] seg000:15F3 push ds:free_space_mbytes_unused[si] seg000:15F7 mov ax, offset idc_mb_pcent_format ; "%4.1d%3.1d%%" seg000:15FA push ax seg000:15FB mov ax, offset insert seg000:15FE push ax seg000:15FF call sprintf seg000:1602 add sp, 8 seg000:1605 push ds:menu_16_segment seg000:1609 push ds:menu_16_offset seg000:160D call display seg000:1610 pop bx seg000:1611 pop bx seg000:1612 mov ax, ds:free_space_mbytes_unused[si] seg000:1616 mov [bp+idc_def_entry], ax seg000:1619 mov ds:valid_input, 0 seg000:161E seg000:161E idc_2: ; CODE XREF: input_dos_create+150j seg000:161E push [bp+idc_def_entry] seg000:1621 mov ax, offset idc_def_entry_format ; "%4.1d" seg000:1624 push ax seg000:1625 mov ax, offset insert seg000:1628 push ax seg000:1629 call sprintf seg000:162C add sp, 6 seg000:162F push ds:menu_39_segment seg000:1633 push ds:menu_39_offset seg000:1637 call display seg000:163A pop bx seg000:163B pop bx seg000:163C push ds:error_13_seg seg000:1640 push ds:error_13_off seg000:1644 sub ax, ax seg000:1646 push ax seg000:1647 push ds:menu_39_segment seg000:164B push ds:menu_39_offset seg000:164F mov al, 22 seg000:1651 imul [bp+idc_temp] seg000:1654 mov bx, ax seg000:1656 push ds:free_space_percent_unused[bx] seg000:165A push ds:free_space_mbytes_unused[bx] seg000:165E push [bp+idc_def_entry] seg000:1661 call get_large_num_input seg000:1664 add sp, 16 seg000:1667 mov [bp+idc_input], ax seg000:166A mov [bp+idc_def_entry], ax seg000:166D mov ax, 79 seg000:1670 push ax seg000:1671 mov ax, 23 seg000:1674 push ax seg000:1675 sub ax, ax seg000:1677 push ax seg000:1678 mov ax, 19 seg000:167B push ax seg000:167C call clear_screen seg000:167F add sp, 8 seg000:1682 cmp ds:valid_input, 0 seg000:1687 jz short idc_2 seg000:1689 cmp [bp+idc_input], 0FFFEh seg000:168D jnz short idc_3 seg000:168F jmp idc_14 seg000:1692 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1692 seg000:1692 idc_3: ; CODE XREF: input_dos_create+156j seg000:1692 cmp ds:PercentFlag, 0 seg000:1697 jz short idc_6 seg000:1699 mov al, 22 seg000:169B imul [bp+idc_temp] seg000:169E mov bx, ax seg000:16A0 mov ax, [bp+idc_input] seg000:16A3 cmp ds:free_space_percent_unused[bx], ax seg000:16A7 jnz short idc_5 seg000:16A9 seg000:16A9 idc_4: ; CODE XREF: input_dos_create+19Aj seg000:16A9 mov ax, ds:free_space_space[bx] seg000:16AD jmp short idc_8 seg000:16AF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:16AF seg000:16AF idc_5: ; CODE XREF: input_dos_create+170j seg000:16AF mov al, ds:cur_disk seg000:16B2 cbw seg000:16B3 mov bx, ax seg000:16B5 shl bx, 1 seg000:16B7 push ds:total_disk[bx] seg000:16BB push [bp+idc_input] seg000:16BE call percent_to_cylinders seg000:16C1 jmp short idc_7 seg000:16C3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:16C3 seg000:16C3 idc_6: ; CODE XREF: input_dos_create+160j seg000:16C3 mov al, 22 seg000:16C5 imul [bp+idc_temp] seg000:16C8 mov bx, ax seg000:16CA mov ax, [bp+idc_input] seg000:16CD cmp ds:free_space_mbytes_unused[bx], ax seg000:16D1 jz short idc_4 seg000:16D3 mov al, ds:cur_disk seg000:16D6 push ax seg000:16D7 push [bp+idc_input] seg000:16DA call mbytes_to_cylinders seg000:16DD seg000:16DD idc_7: ; CODE XREF: input_dos_create+18Aj seg000:16DD pop bx seg000:16DE pop bx seg000:16DF seg000:16DF idc_8: ; CODE XREF: input_dos_create+176j seg000:16DF mov [bp+idc_input], ax seg000:16E2 mov ds:PercentFlag, 0 seg000:16E7 or ax, ax seg000:16E9 jnz short idc_9 seg000:16EB push ds:error_28_seg seg000:16EF push ds:error_28_off seg000:16F3 jmp short idc_13 seg000:16F5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:16F5 seg000:16F5 idc_9: ; CODE XREF: input_dos_create+1B2j seg000:16F5 sub al, al seg000:16F7 push ax seg000:16F8 push ax seg000:16F9 mov al, [bp+idc_temp] seg000:16FC push ax seg000:16FD push [bp+idc_input] seg000:1700 call make_partition seg000:1703 add sp, 8 seg000:1706 mov ax, 79 seg000:1709 push ax seg000:170A mov ax, 19 seg000:170D push ax seg000:170E sub ax, ax seg000:1710 push ax seg000:1711 mov ax, 13 seg000:1714 push ax seg000:1715 call clear_screen seg000:1718 add sp, 8 seg000:171B call table_display seg000:171E cmp ds:number_of_drives, 1 seg000:1723 jnz short idc_10 seg000:1725 push ds:status_5_seg seg000:1729 push ds:status_5_off seg000:172D jmp short idc_11 seg000:172F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:172F seg000:172F idc_10: ; CODE XREF: input_dos_create+1ECj seg000:172F mov ax, 79 seg000:1732 push ax seg000:1733 mov ax, 23 seg000:1736 push ax seg000:1737 sub ax, ax seg000:1739 push ax seg000:173A mov ax, 16 seg000:173D push ax seg000:173E call clear_screen seg000:1741 add sp, 8 seg000:1744 push ds:status_12_seg seg000:1748 push ds:status_12_off seg000:174C seg000:174C idc_11: ; CODE XREF: input_dos_create+1F6j seg000:174C call display seg000:174F pop bx seg000:1750 pop bx seg000:1751 call wait_for_ESC seg000:1754 mov ds:reboot_flag, 1 seg000:1759 jmp short idc_14 seg000:175B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:175B seg000:175B idc_12: ; CODE XREF: input_dos_create+8Cj seg000:175B push ds:error_10_seg seg000:175F push ds:error_10_off seg000:1763 seg000:1763 idc_13: ; CODE XREF: input_dos_create+1BCj seg000:1763 call display seg000:1766 pop bx seg000:1767 pop bx seg000:1768 call wait_for_ESC seg000:176B seg000:176B idc_14: ; CODE XREF: input_dos_create+158j seg000:176B ; input_dos_create+222j seg000:176B pop si seg000:176C mov sp, bp seg000:176E pop bp seg000:176F retn seg000:176F input_dos_create endp seg000:176F seg000:1770 seg000:1770 ; --------------- S U B R O U T I N E --------------------------------------- seg000:1770 seg000:1770 ; Attributes: bp-based frame seg000:1770 seg000:1770 ext_create_partition proc near ; CODE XREF: create_partition:cp_7p seg000:1770 seg000:1770 ecp_default_entry= word ptr -6 seg000:1770 ecp_temp = byte ptr -4 seg000:1770 ecp_input = word ptr -2 seg000:1770 seg000:1770 push bp seg000:1771 mov bp, sp seg000:1773 sub sp, 6 seg000:1776 push si seg000:1777 mov ax, 79 seg000:177A push ax seg000:177B mov ax, 24 seg000:177E push ax seg000:177F sub ax, ax seg000:1781 mov [bp+ecp_input], ax seg000:1784 push ax seg000:1785 push ax seg000:1786 call clear_screen seg000:1789 add sp, 8 seg000:178C push ds:menu_17_segment seg000:1790 push ds:menu_17_offset seg000:1794 call display seg000:1797 pop bx seg000:1798 pop bx seg000:1799 mov al, ds:cur_disk seg000:179C add al, '1' seg000:179E mov ds:insert, al seg000:17A1 push ds:menu_5_segment seg000:17A5 push ds:menu_5_offset seg000:17A9 call display seg000:17AC pop bx seg000:17AD pop bx seg000:17AE push ds:menu_11_segment seg000:17B2 push ds:menu_11_offset seg000:17B6 call display seg000:17B9 pop bx seg000:17BA pop bx seg000:17BB call table_display seg000:17BE cmp ds:cur_disk, 1 seg000:17C3 jge short ecp_1 seg000:17C5 mov al, 1 seg000:17C7 push ax seg000:17C8 call find_partition_type seg000:17CB pop bx seg000:17CC or al, al seg000:17CE jnz short ecp_1 seg000:17D0 mov al, 4 seg000:17D2 push ax seg000:17D3 call find_partition_type seg000:17D6 pop bx seg000:17D7 or al, al seg000:17D9 jnz short ecp_1 seg000:17DB mov al, 6 seg000:17DD push ax seg000:17DE call find_partition_type seg000:17E1 pop bx seg000:17E2 or al, al seg000:17E4 jnz short ecp_1 seg000:17E6 jmp ecp_19 seg000:17E9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:17E9 seg000:17E9 ecp_1: ; CODE XREF: ext_create_partition+53j seg000:17E9 ; ext_create_partition+5Ej ... seg000:17E9 mov al, 5 seg000:17EB push ax seg000:17EC call find_partition_type seg000:17EF pop bx seg000:17F0 or al, al seg000:17F2 jz short ecp_2 seg000:17F4 jmp ecp_18 seg000:17F7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:17F7 seg000:17F7 ecp_2: ; CODE XREF: ext_create_partition+82j seg000:17F7 mov al, 5 seg000:17F9 push ax seg000:17FA call find_part_free_space seg000:17FD pop bx seg000:17FE mov [bp+ecp_temp], al seg000:1801 mov cl, 22 seg000:1803 imul cl seg000:1805 mov bx, ax seg000:1807 cmp ds:free_space_space[bx], 0 seg000:180C jnz short ecp_3 seg000:180E jmp ecp_17 seg000:1811 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1811 seg000:1811 ecp_3: ; CODE XREF: ext_create_partition+9Cj seg000:1811 cmp ds:free_space_percent_unused[bx], 0 seg000:1816 jnz short ecp_4 seg000:1818 cmp ds:free_space_mbytes_unused[bx], 0 seg000:181D jnz short ecp_4 seg000:181F jmp ecp_17 seg000:1822 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1822 seg000:1822 ecp_4: ; CODE XREF: ext_create_partition+A6j seg000:1822 ; ext_create_partition+ADj seg000:1822 mov al, ds:cur_disk seg000:1825 cbw seg000:1826 mov bx, ax seg000:1828 shl bx, 1 seg000:182A push ds:total_mbytes[bx] seg000:182E mov ax, offset ecp_size_format ; "%4.1d" seg000:1831 push ax seg000:1832 mov ax, offset insert seg000:1835 push ax seg000:1836 call sprintf seg000:1839 add sp, 6 seg000:183C push ds:menu_15_segment seg000:1840 push ds:menu_15_offset seg000:1844 call display seg000:1847 pop bx seg000:1848 pop bx seg000:1849 mov al, 22 seg000:184B imul [bp+ecp_temp] seg000:184E mov bx, ax seg000:1850 push ds:free_space_percent_unused[bx] seg000:1854 push ds:free_space_mbytes_unused[bx] seg000:1858 mov ax, offset ecp_mb_pcent_format ; "%4.1d%3.1d%%" seg000:185B push ax seg000:185C mov ax, offset insert seg000:185F push ax seg000:1860 mov si, bx seg000:1862 call sprintf seg000:1865 add sp, 8 seg000:1868 push ds:menu_16_segment seg000:186C push ds:menu_16_offset seg000:1870 call display seg000:1873 pop bx seg000:1874 pop bx seg000:1875 cmp ds:free_space_mbytes_unused[si], 0 seg000:187A jnz short ecp_5 seg000:187C mov ax, ds:free_space_percent_unused[si] seg000:1880 mov [bp+ecp_default_entry], ax seg000:1883 mov ds:PercentFlag, 1 seg000:1888 jmp short ecp_6 seg000:188A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:188A seg000:188A ecp_5: ; CODE XREF: ext_create_partition+10Aj seg000:188A mov al, 22 seg000:188C imul [bp+ecp_temp] seg000:188F mov bx, ax seg000:1891 mov ax, ds:free_space_mbytes_unused[bx] seg000:1895 mov [bp+ecp_default_entry], ax seg000:1898 mov ds:PercentFlag, 0 seg000:189D seg000:189D ecp_6: ; CODE XREF: ext_create_partition+118j seg000:189D mov ds:valid_input, 0 seg000:18A2 seg000:18A2 ecp_7: ; CODE XREF: ext_create_partition+1AAj seg000:18A2 cmp ds:PercentFlag, 0 seg000:18A7 jnz short ecp_8 seg000:18A9 push [bp+ecp_default_entry] seg000:18AC mov ax, offset ecp_mb_format ; "%4.1d" seg000:18AF jmp short ecp_9 seg000:18B1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:18B1 seg000:18B1 ecp_8: ; CODE XREF: ext_create_partition+137j seg000:18B1 push [bp+ecp_default_entry] seg000:18B4 mov ax, offset ecp_pcent_format ; "%3.1d%%" seg000:18B7 seg000:18B7 ecp_9: ; CODE XREF: ext_create_partition+13Fj seg000:18B7 push ax seg000:18B8 mov ax, offset insert seg000:18BB push ax seg000:18BC call sprintf seg000:18BF add sp, 6 seg000:18C2 push ds:menu_42_segment seg000:18C6 push ds:menu_42_offset seg000:18CA call display seg000:18CD pop bx seg000:18CE pop bx seg000:18CF push ds:error_13_seg seg000:18D3 push ds:error_13_off seg000:18D7 sub ax, ax seg000:18D9 push ax seg000:18DA push ds:menu_42_segment seg000:18DE push ds:menu_42_offset seg000:18E2 mov al, 22 seg000:18E4 imul [bp+ecp_temp] seg000:18E7 mov bx, ax seg000:18E9 push ds:free_space_percent_unused[bx] seg000:18ED push ds:free_space_mbytes_unused[bx] seg000:18F1 push [bp+ecp_default_entry] seg000:18F4 call get_large_num_input seg000:18F7 add sp, 16 seg000:18FA mov [bp+ecp_input], ax seg000:18FD mov [bp+ecp_default_entry], ax seg000:1900 mov ax, 79 seg000:1903 push ax seg000:1904 mov ax, 23 seg000:1907 push ax seg000:1908 sub ax, ax seg000:190A push ax seg000:190B mov ax, 19 seg000:190E push ax seg000:190F call clear_screen seg000:1912 add sp, 8 seg000:1915 cmp ds:valid_input, 0 seg000:191A jz short ecp_7 seg000:191C cmp [bp+ecp_input], 0FFFEh seg000:1920 jnz short ecp_10 seg000:1922 jmp ecp_21 seg000:1925 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1925 seg000:1925 ecp_10: ; CODE XREF: ext_create_partition+1B0j seg000:1925 cmp ds:PercentFlag, 0 seg000:192A jz short ecp_13 seg000:192C mov al, 22 seg000:192E imul [bp+ecp_temp] seg000:1931 mov bx, ax seg000:1933 mov ax, [bp+ecp_input] seg000:1936 cmp ds:free_space_percent_unused[bx], ax seg000:193A jnz short ecp_12 seg000:193C seg000:193C ecp_11: ; CODE XREF: ext_create_partition+1F4j seg000:193C mov ax, ds:free_space_space[bx] seg000:1940 jmp short ecp_15 seg000:1942 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1942 seg000:1942 ecp_12: ; CODE XREF: ext_create_partition+1CAj seg000:1942 mov al, ds:cur_disk seg000:1945 cbw seg000:1946 mov bx, ax seg000:1948 shl bx, 1 seg000:194A push ds:total_disk[bx] seg000:194E push [bp+ecp_input] seg000:1951 call percent_to_cylinders seg000:1954 jmp short ecp_14 seg000:1956 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1956 seg000:1956 ecp_13: ; CODE XREF: ext_create_partition+1BAj seg000:1956 mov al, 22 seg000:1958 imul [bp+ecp_temp] seg000:195B mov bx, ax seg000:195D mov ax, [bp+ecp_input] seg000:1960 cmp ds:free_space_mbytes_unused[bx], ax seg000:1964 jz short ecp_11 seg000:1966 mov al, ds:cur_disk seg000:1969 push ax seg000:196A push [bp+ecp_input] seg000:196D call mbytes_to_cylinders seg000:1970 seg000:1970 ecp_14: ; CODE XREF: ext_create_partition+1E4j seg000:1970 pop bx seg000:1971 pop bx seg000:1972 seg000:1972 ecp_15: ; CODE XREF: ext_create_partition+1D0j seg000:1972 mov [bp+ecp_input], ax seg000:1975 mov ds:PercentFlag, 0 seg000:197A or ax, ax seg000:197C jnz short ecp_16 seg000:197E push ds:error_28_seg seg000:1982 push ds:error_28_off seg000:1986 jmp short ecp_20 seg000:1988 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1988 seg000:1988 ecp_16: ; CODE XREF: ext_create_partition+20Cj seg000:1988 mov al, 5 seg000:198A push ax seg000:198B sub al, al seg000:198D push ax seg000:198E mov al, [bp+ecp_temp] seg000:1991 push ax seg000:1992 push [bp+ecp_input] seg000:1995 call make_partition seg000:1998 add sp, 8 seg000:199B mov ax, 79 seg000:199E push ax seg000:199F mov ax, 19 seg000:19A2 push ax seg000:19A3 sub ax, ax seg000:19A5 push ax seg000:19A6 mov ax, 13 seg000:19A9 push ax seg000:19AA call clear_screen seg000:19AD add sp, 8 seg000:19B0 call table_display seg000:19B3 push ds:status_6_seg seg000:19B7 push ds:status_6_off seg000:19BB call display seg000:19BE pop bx seg000:19BF pop bx seg000:19C0 call wait_for_ESC seg000:19C3 mov ds:reboot_flag, 1 seg000:19C8 call volume_create seg000:19CB jmp short ecp_21 seg000:19CD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:19CD seg000:19CD ecp_17: ; CODE XREF: ext_create_partition+9Ej seg000:19CD ; ext_create_partition+AFj seg000:19CD push ds:error_10_seg seg000:19D1 push ds:error_10_off seg000:19D5 jmp short ecp_20 seg000:19D7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:19D7 seg000:19D7 ecp_18: ; CODE XREF: ext_create_partition+84j seg000:19D7 push ds:error_9_seg seg000:19DB push ds:error_9_off seg000:19DF jmp short ecp_20 seg000:19E1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:19E1 seg000:19E1 ecp_19: ; CODE XREF: ext_create_partition+76j seg000:19E1 push ds:error_19_seg seg000:19E5 push ds:error_19_off seg000:19E9 seg000:19E9 ecp_20: ; CODE XREF: ext_create_partition+216j seg000:19E9 ; ext_create_partition+265j ... seg000:19E9 call display seg000:19EC pop bx seg000:19ED pop bx seg000:19EE call wait_for_ESC seg000:19F1 seg000:19F1 ecp_21: ; CODE XREF: ext_create_partition+1B2j seg000:19F1 ; ext_create_partition+25Bj seg000:19F1 pop si seg000:19F2 mov sp, bp seg000:19F4 pop bp seg000:19F5 retn seg000:19F5 ext_create_partition endp seg000:19F5 seg000:19F6 seg000:19F6 ; --------------- S U B R O U T I N E --------------------------------------- seg000:19F6 seg000:19F6 ; Attributes: bp-based frame seg000:19F6 seg000:19F6 volume_create proc near ; CODE XREF: create_partition+A6p seg000:19F6 ; ext_create_partition+258p seg000:19F6 seg000:19F6 vc_defined_drives= byte ptr -14h seg000:19F6 vc_ext_part_pcent_unused= word ptr -12h seg000:19F6 vc_location = byte ptr -0Eh seg000:19F6 vc_i = byte ptr -0Ah seg000:19F6 vc_temp_cur_disk= byte ptr -8 seg000:19F6 vc_default_entry= word ptr -6 seg000:19F6 vc_ext_part_num = word ptr -4 seg000:19F6 vc_input = word ptr -2 seg000:19F6 seg000:19F6 push bp seg000:19F7 mov bp, sp seg000:19F9 sub sp, 20 seg000:19FC push si seg000:19FD mov ax, 79 seg000:1A00 push ax seg000:1A01 mov ax, 24 seg000:1A04 push ax seg000:1A05 sub ax, ax seg000:1A07 push ax seg000:1A08 push ax seg000:1A09 call clear_screen seg000:1A0C add sp, 8 seg000:1A0F push ds:menu_18_segment seg000:1A13 push ds:menu_18_offset seg000:1A17 call display seg000:1A1A pop bx seg000:1A1B pop bx seg000:1A1C push ds:menu_11_segment seg000:1A20 push ds:menu_11_offset seg000:1A24 call display seg000:1A27 pop bx seg000:1A28 pop bx seg000:1A29 call volume_display seg000:1A2C mov [bp+vc_input], 0 seg000:1A31 seg000:1A31 vc_1: ; CODE XREF: volume_create+30Aj seg000:1A31 mov [bp+vc_defined_drives], 0 seg000:1A35 mov al, ds:cur_disk seg000:1A38 mov [bp+vc_temp_cur_disk], al seg000:1A3B mov [bp+vc_i], 0 seg000:1A3F jmp short vc_6 seg000:1A41 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1A41 seg000:1A41 vc_2: ; CODE XREF: volume_create+8Fj seg000:1A41 mov al, [bp+vc_i] seg000:1A44 mov ds:cur_disk, al seg000:1A47 mov al, 1 seg000:1A49 push ax seg000:1A4A call find_partition_type seg000:1A4D pop bx seg000:1A4E or al, al seg000:1A50 jnz short vc_3 seg000:1A52 mov al, 4 seg000:1A54 push ax seg000:1A55 call find_partition_type seg000:1A58 pop bx seg000:1A59 or al, al seg000:1A5B jnz short vc_3 seg000:1A5D mov al, 6 seg000:1A5F push ax seg000:1A60 call find_partition_type seg000:1A63 pop bx seg000:1A64 or al, al seg000:1A66 jz short vc_4 seg000:1A68 seg000:1A68 vc_3: ; CODE XREF: volume_create+5Aj seg000:1A68 ; volume_create+65j seg000:1A68 inc [bp+vc_defined_drives] seg000:1A6B seg000:1A6B vc_4: ; CODE XREF: volume_create+70j seg000:1A6B mov al, 5 seg000:1A6D push ax seg000:1A6E call find_partition_type seg000:1A71 pop bx seg000:1A72 or al, al seg000:1A74 jz short vc_5 seg000:1A76 call get_num_logical_dos_drives seg000:1A79 add [bp+vc_defined_drives], al seg000:1A7C seg000:1A7C vc_5: ; CODE XREF: volume_create+7Ej seg000:1A7C inc [bp+vc_i] seg000:1A7F seg000:1A7F vc_6: ; CODE XREF: volume_create+49j seg000:1A7F mov al, ds:number_of_drives seg000:1A82 cmp [bp+vc_i], al seg000:1A85 jb short vc_2 seg000:1A87 mov al, [bp+vc_temp_cur_disk] seg000:1A8A mov ds:cur_disk, al seg000:1A8D cmp [bp+vc_defined_drives], 24 seg000:1A91 jge short vc_7 seg000:1A93 call get_num_logical_dos_drives seg000:1A96 cmp al, 23 seg000:1A98 jl short vc_8 seg000:1A9A seg000:1A9A vc_7: ; CODE XREF: volume_create+9Bj seg000:1A9A jmp vc_24 seg000:1A9D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1A9D seg000:1A9D vc_8: ; CODE XREF: volume_create+A2j seg000:1A9D call find_ext_free_space seg000:1AA0 mov [bp+vc_location], al seg000:1AA3 mov al, 5 seg000:1AA5 push ax seg000:1AA6 call find_partition_location seg000:1AA9 pop bx seg000:1AAA cbw seg000:1AAB mov [bp+vc_ext_part_num], ax seg000:1AAE mov al, ds:cur_disk seg000:1AB1 cbw seg000:1AB2 shl ax, 1 seg000:1AB4 shl ax, 1 seg000:1AB6 add ax, [bp+vc_ext_part_num] seg000:1AB9 mov cx, 46 seg000:1ABC mul cx seg000:1ABE mov bx, ax seg000:1AC0 mov ax, ds:part_table_end_cyl[bx] seg000:1AC4 sub ax, ds:part_table_start_cyl[bx] seg000:1AC8 inc ax seg000:1AC9 push ax seg000:1ACA mov al, 22 seg000:1ACC imul [bp+vc_location] seg000:1ACF mov bx, ax seg000:1AD1 push ds:free_space_space[bx] seg000:1AD5 mov si, bx seg000:1AD7 call cylinders_to_percent seg000:1ADA pop bx seg000:1ADB pop bx seg000:1ADC mov [bp+vc_ext_part_pcent_unused], ax seg000:1ADF cmp ds:free_space_space[si], 0 seg000:1AE4 jnz short vc_9 seg000:1AE6 jmp vc_23 seg000:1AE9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1AE9 seg000:1AE9 vc_9: ; CODE XREF: volume_create+EEj seg000:1AE9 cmp ds:free_space_percent_unused[si], 0 seg000:1AEE jnz short vc_10 seg000:1AF0 cmp ds:free_space_mbytes_unused[si], 0 seg000:1AF5 jnz short vc_10 seg000:1AF7 jmp vc_23 seg000:1AFA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1AFA seg000:1AFA vc_10: ; CODE XREF: volume_create+F8j seg000:1AFA ; volume_create+FFj seg000:1AFA mov al, 5 seg000:1AFC push ax seg000:1AFD call get_partition_size seg000:1B00 pop bx seg000:1B01 push ax seg000:1B02 mov ax, offset v_psize_format ; "%4.1d" seg000:1B05 push ax seg000:1B06 mov ax, offset insert seg000:1B09 push ax seg000:1B0A call sprintf seg000:1B0D add sp, 6 seg000:1B10 push ds:menu_21_segment seg000:1B14 push ds:menu_21_offset seg000:1B18 call display seg000:1B1B pop bx seg000:1B1C pop bx seg000:1B1D push [bp+vc_ext_part_pcent_unused] seg000:1B20 mov al, 22 seg000:1B22 imul [bp+vc_location] seg000:1B25 mov bx, ax seg000:1B27 push ds:free_space_mbytes_unused[bx] seg000:1B2B mov ax, offset v_mb_percent_format ; "%4.1d%3.1d%%" seg000:1B2E push ax seg000:1B2F mov ax, offset insert seg000:1B32 push ax seg000:1B33 mov si, bx seg000:1B35 call sprintf seg000:1B38 add sp, 8 seg000:1B3B push ds:menu_22_segment seg000:1B3F push ds:menu_22_offset seg000:1B43 call display seg000:1B46 pop bx seg000:1B47 pop bx seg000:1B48 cmp ds:free_space_mbytes_unused[si], 0 seg000:1B4D jnz short vc_11 seg000:1B4F mov ax, [bp+vc_ext_part_pcent_unused] seg000:1B52 mov [bp+vc_default_entry], ax seg000:1B55 mov ds:PercentFlag, 1 seg000:1B5A jmp short vc_12 seg000:1B5C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1B5C seg000:1B5C vc_11: ; CODE XREF: volume_create+157j seg000:1B5C mov al, 22 seg000:1B5E imul [bp+vc_location] seg000:1B61 mov bx, ax seg000:1B63 mov ax, ds:free_space_mbytes_unused[bx] seg000:1B67 mov [bp+vc_default_entry], ax seg000:1B6A mov ds:PercentFlag, 0 seg000:1B6F seg000:1B6F vc_12: ; CODE XREF: volume_create+164j seg000:1B6F mov ds:valid_input, 0 seg000:1B74 seg000:1B74 vc_13: ; CODE XREF: volume_create+1F5j seg000:1B74 cmp ds:PercentFlag, 0 seg000:1B79 jnz short vc_14 seg000:1B7B push [bp+vc_default_entry] seg000:1B7E mov ax, offset v_mbytes_format ; "%4.1d" seg000:1B81 jmp short vc_15 seg000:1B83 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1B83 seg000:1B83 vc_14: ; CODE XREF: volume_create+183j seg000:1B83 push [bp+vc_default_entry] seg000:1B86 mov ax, offset v_percent_format ; "%3.1d%%" seg000:1B89 seg000:1B89 vc_15: ; CODE XREF: volume_create+18Bj seg000:1B89 push ax seg000:1B8A mov ax, offset insert seg000:1B8D push ax seg000:1B8E call sprintf seg000:1B91 add sp, 6 seg000:1B94 push ds:menu_40_segment seg000:1B98 push ds:menu_40_offset seg000:1B9C call display seg000:1B9F pop bx seg000:1BA0 pop bx seg000:1BA1 push ds:error_12_seg seg000:1BA5 push ds:error_12_off seg000:1BA9 sub ax, ax seg000:1BAB push ax seg000:1BAC push ds:menu_40_segment seg000:1BB0 push ds:menu_40_offset seg000:1BB4 push [bp+vc_ext_part_pcent_unused] seg000:1BB7 mov al, 22 seg000:1BB9 imul [bp+vc_location] seg000:1BBC mov bx, ax seg000:1BBE push ds:free_space_mbytes_unused[bx] seg000:1BC2 push [bp+vc_default_entry] seg000:1BC5 call get_large_num_input seg000:1BC8 add sp, 16 seg000:1BCB mov [bp+vc_input], ax seg000:1BCE mov [bp+vc_default_entry], ax seg000:1BD1 mov ax, 79 seg000:1BD4 push ax seg000:1BD5 mov ax, 23 seg000:1BD8 push ax seg000:1BD9 sub ax, ax seg000:1BDB push ax seg000:1BDC mov ax, 19 seg000:1BDF push ax seg000:1BE0 call clear_screen seg000:1BE3 add sp, 8 seg000:1BE6 cmp ds:valid_input, 0 seg000:1BEB jz short vc_13 seg000:1BED cmp [bp+vc_input], 0FFFEh seg000:1BF1 jnz short vc_16 seg000:1BF3 jmp vc_26 seg000:1BF6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1BF6 seg000:1BF6 vc_16: ; CODE XREF: volume_create+1FBj seg000:1BF6 cmp ds:PercentFlag, 0 seg000:1BFB jz short vc_19 seg000:1BFD mov ax, [bp+vc_input] seg000:1C00 cmp [bp+vc_ext_part_pcent_unused], ax seg000:1C03 jnz short vc_18 seg000:1C05 mov al, 22 seg000:1C07 imul [bp+vc_location] seg000:1C0A mov bx, ax seg000:1C0C seg000:1C0C vc_17: ; CODE XREF: volume_create+24Ej seg000:1C0C mov ax, ds:free_space_space[bx] seg000:1C10 jmp short vc_21 seg000:1C12 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1C12 seg000:1C12 vc_18: ; CODE XREF: volume_create+20Dj seg000:1C12 mov al, ds:cur_disk seg000:1C15 cbw seg000:1C16 shl ax, 1 seg000:1C18 shl ax, 1 seg000:1C1A add ax, [bp+vc_ext_part_num] seg000:1C1D mov cx, 46 seg000:1C20 mul cx seg000:1C22 mov bx, ax seg000:1C24 mov ax, ds:part_table_end_cyl[bx] seg000:1C28 sub ax, ds:part_table_start_cyl[bx] seg000:1C2C inc ax seg000:1C2D push ax seg000:1C2E push [bp+vc_input] seg000:1C31 call percent_to_cylinders seg000:1C34 jmp short vc_20 seg000:1C36 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1C36 seg000:1C36 vc_19: ; CODE XREF: volume_create+205j seg000:1C36 mov al, 22 seg000:1C38 imul [bp+vc_location] seg000:1C3B mov bx, ax seg000:1C3D mov ax, [bp+vc_input] seg000:1C40 cmp ds:free_space_mbytes_unused[bx], ax seg000:1C44 jz short vc_17 seg000:1C46 mov al, ds:cur_disk seg000:1C49 push ax seg000:1C4A push [bp+vc_input] seg000:1C4D call mbytes_to_cylinders seg000:1C50 seg000:1C50 vc_20: ; CODE XREF: volume_create+23Ej seg000:1C50 pop bx seg000:1C51 pop bx seg000:1C52 seg000:1C52 vc_21: ; CODE XREF: volume_create+21Aj seg000:1C52 mov [bp+vc_input], ax seg000:1C55 mov ds:PercentFlag, 0 seg000:1C5A or ax, ax seg000:1C5C jnz short vc_22 seg000:1C5E push ds:error_28_seg seg000:1C62 push ds:error_28_off seg000:1C66 call display seg000:1C69 pop bx seg000:1C6A pop bx seg000:1C6B call wait_for_ESC seg000:1C6E jmp vc_26 seg000:1C71 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1C71 seg000:1C71 vc_22: ; CODE XREF: volume_create+266j seg000:1C71 mov al, [bp+vc_location] seg000:1C74 push ax seg000:1C75 push [bp+vc_input] seg000:1C78 call make_volume seg000:1C7B pop bx seg000:1C7C pop bx seg000:1C7D mov ax, 79 seg000:1C80 push ax seg000:1C81 mov ax, 19 seg000:1C84 push ax seg000:1C85 sub ax, ax seg000:1C87 push ax seg000:1C88 mov ax, 15 seg000:1C8B push ax seg000:1C8C call clear_screen seg000:1C8F add sp, 8 seg000:1C92 mov ds:reboot_flag, 1 seg000:1C97 call volume_display seg000:1C9A push ds:status_7_seg seg000:1C9E push ds:status_7_off seg000:1CA2 call display seg000:1CA5 pop bx seg000:1CA6 pop bx seg000:1CA7 jmp short vc_26 seg000:1CA9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1CA9 seg000:1CA9 vc_23: ; CODE XREF: volume_create+F0j seg000:1CA9 ; volume_create+101j seg000:1CA9 mov ax, 79 seg000:1CAC push ax seg000:1CAD mov ax, 21 seg000:1CB0 push ax seg000:1CB1 sub ax, ax seg000:1CB3 push ax seg000:1CB4 mov ax, 17 seg000:1CB7 push ax seg000:1CB8 call clear_screen seg000:1CBB add sp, 8 seg000:1CBE push ds:error_20_seg seg000:1CC2 push ds:error_20_off seg000:1CC6 call display seg000:1CC9 pop bx seg000:1CCA pop bx seg000:1CCB call volume_display seg000:1CCE jmp short vc_25 seg000:1CD0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1CD0 seg000:1CD0 vc_24: ; CODE XREF: volume_create:vc_7j seg000:1CD0 mov ax, 79 seg000:1CD3 push ax seg000:1CD4 mov ax, 21 seg000:1CD7 push ax seg000:1CD8 sub ax, ax seg000:1CDA push ax seg000:1CDB mov ax, 17 seg000:1CDE push ax seg000:1CDF call clear_screen seg000:1CE2 add sp, 8 seg000:1CE5 push ds:error_27_seg seg000:1CE9 push ds:error_27_off seg000:1CED call display seg000:1CF0 pop bx seg000:1CF1 pop bx seg000:1CF2 seg000:1CF2 vc_25: ; CODE XREF: volume_create+2D8j seg000:1CF2 call wait_for_ESC seg000:1CF5 mov [bp+vc_input], 0FFFEh seg000:1CFA seg000:1CFA vc_26: ; CODE XREF: volume_create+1FDj seg000:1CFA ; volume_create+278j ... seg000:1CFA cmp [bp+vc_input], 0FFFEh seg000:1CFE jz short vc_27 seg000:1D00 jmp vc_1 seg000:1D03 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1D03 seg000:1D03 vc_27: ; CODE XREF: volume_create+308j seg000:1D03 mov ax, 79 seg000:1D06 push ax seg000:1D07 mov ax, 24 seg000:1D0A push ax seg000:1D0B sub ax, ax seg000:1D0D push ax seg000:1D0E push ax seg000:1D0F call clear_screen seg000:1D12 add sp, 8 seg000:1D15 pop si seg000:1D16 mov sp, bp seg000:1D18 pop bp seg000:1D19 retn seg000:1D19 volume_create endp seg000:1D19 seg000:1D1A seg000:1D1A ; --------------- S U B R O U T I N E --------------------------------------- seg000:1D1A seg000:1D1A ; Attributes: bp-based frame seg000:1D1A seg000:1D1A change_active_partition proc near ; CODE XREF: do_main_menu:case_2p seg000:1D1A seg000:1D1A cap_valid_input = byte ptr -10h seg000:1D1A cap_num_partitions= byte ptr -0Eh seg000:1D1A cap_valid_partitions= byte ptr -0Ch seg000:1D1A cap_i = word ptr -0Ah seg000:1D1A cap_x = word ptr -8 seg000:1D1A cap_num_boot_partitions= byte ptr -6 seg000:1D1A cap_input_default= byte ptr -4 seg000:1D1A cap_input = byte ptr -2 seg000:1D1A seg000:1D1A push bp seg000:1D1B mov bp, sp seg000:1D1D sub sp, 16 seg000:1D20 mov [bp+cap_input], 0 seg000:1D24 mov ax, 79 seg000:1D27 push ax seg000:1D28 mov ax, 24 seg000:1D2B push ax seg000:1D2C sub ax, ax seg000:1D2E push ax seg000:1D2F push ax seg000:1D30 call clear_screen seg000:1D33 add sp, 8 seg000:1D36 push ds:menu_23_segment seg000:1D3A push ds:menu_23_offset seg000:1D3E call display seg000:1D41 pop bx seg000:1D42 pop bx seg000:1D43 mov al, ds:cur_disk seg000:1D46 add al, '1' seg000:1D48 mov ds:insert, al seg000:1D4B push ds:menu_5_segment seg000:1D4F push ds:menu_5_offset seg000:1D53 call display seg000:1D56 pop bx seg000:1D57 pop bx seg000:1D58 seg000:1D58 cap_if1: seg000:1D58 cmp ds:cur_disk, 0 seg000:1D5D jz short cap_01_if2 seg000:1D5F jmp cap_29 seg000:1D62 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1D62 seg000:1D62 cap_01_if2: ; CODE XREF: change_active_partition+43j seg000:1D62 call table_display seg000:1D65 or al, al seg000:1D67 jnz short cap_02_for1 seg000:1D69 jmp cap_28 seg000:1D6C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1D6C seg000:1D6C cap_02_for1: ; CODE XREF: change_active_partition+4Dj seg000:1D6C mov [bp+cap_i], 0 seg000:1D71 seg000:1D71 cap_03_for1_next2: ; CODE XREF: change_active_partition+99j seg000:1D71 mov al, ds:cur_disk seg000:1D74 cbw seg000:1D75 shl ax, 1 seg000:1D77 shl ax, 1 seg000:1D79 add ax, [bp+cap_i] seg000:1D7C mov cx, 46 seg000:1D7F mul cx seg000:1D81 mov bx, ax seg000:1D83 seg000:1D83 cap_if3: seg000:1D83 cmp ds:part_table_sys_id[bx], 0 seg000:1D88 jz short cap_05_for1_next1 seg000:1D8A cmp ds:part_table_boot_ind[bx], 80h seg000:1D8F jnz short cap_05_for1_next1 seg000:1D91 seg000:1D91 cap_if4: seg000:1D91 cmp ds:part_table_sys_id[bx], 0FFh seg000:1D96 jz short cap_04 seg000:1D98 cmp ds:part_table_sys_id[bx], 5 seg000:1D9D jnz short cap_05_for1_next1 seg000:1D9F seg000:1D9F cap_04: ; CODE XREF: change_active_partition+7Cj seg000:1D9F push ds:error_24_seg seg000:1DA3 push ds:error_24_off seg000:1DA7 call display seg000:1DAA pop bx seg000:1DAB pop bx seg000:1DAC seg000:1DAC cap_05_for1_next1: ; CODE XREF: change_active_partition+6Ej seg000:1DAC ; change_active_partition+75j ... seg000:1DAC inc [bp+cap_i] seg000:1DAF cmp [bp+cap_i], 4 seg000:1DB3 jb short cap_03_for1_next2 seg000:1DB5 sub al, al seg000:1DB7 mov [bp+cap_num_partitions], al seg000:1DBA mov [bp+cap_num_boot_partitions], al seg000:1DBD seg000:1DBD cap_for2: seg000:1DBD mov [bp+cap_i], 0 seg000:1DC2 seg000:1DC2 cap_06_for2_next2: ; CODE XREF: change_active_partition+DCj seg000:1DC2 mov al, ds:cur_disk seg000:1DC5 cbw seg000:1DC6 shl ax, 1 seg000:1DC8 shl ax, 1 seg000:1DCA add ax, [bp+cap_i] seg000:1DCD mov cx, 46 seg000:1DD0 mul cx seg000:1DD2 mov bx, ax seg000:1DD4 seg000:1DD4 cap_if5: seg000:1DD4 cmp ds:part_table_sys_id[bx], 0 seg000:1DD9 jz short cap_07_for2_next1 seg000:1DDB inc [bp+cap_num_partitions] seg000:1DDE seg000:1DDE cap_if6: seg000:1DDE cmp ds:part_table_sys_id[bx], 0FFh seg000:1DE3 jz short cap_07_for2_next1 seg000:1DE5 cmp ds:part_table_sys_id[bx], 5 seg000:1DEA jz short cap_07_for2_next1 seg000:1DEC inc [bp+cap_num_boot_partitions] seg000:1DEF seg000:1DEF cap_07_for2_next1: ; CODE XREF: change_active_partition+BFj seg000:1DEF ; change_active_partition+C9j ... seg000:1DEF inc [bp+cap_i] seg000:1DF2 cmp [bp+cap_i], 4 seg000:1DF6 jb short cap_06_for2_next2 seg000:1DF8 seg000:1DF8 cap_if7: seg000:1DF8 cmp [bp+cap_num_boot_partitions], 1 seg000:1DFC jnz short cap_12_if10 seg000:1DFE seg000:1DFE cap_for3: seg000:1DFE mov [bp+cap_i], 0 seg000:1E03 jmp short cap_09_for3_next1 seg000:1E05 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1E05 seg000:1E05 cap_08_for3_next2: ; CODE XREF: change_active_partition+108j seg000:1E05 ; change_active_partition+10Fj ... seg000:1E05 inc [bp+cap_i] seg000:1E08 seg000:1E08 cap_09_for3_next1: ; CODE XREF: change_active_partition+E9j seg000:1E08 cmp [bp+cap_i], 4 seg000:1E0C jnb short cap_12_if10 seg000:1E0E mov al, ds:cur_disk seg000:1E11 cbw seg000:1E12 shl ax, 1 seg000:1E14 shl ax, 1 seg000:1E16 add ax, [bp+cap_i] seg000:1E19 mul cx seg000:1E1B mov bx, ax seg000:1E1D cmp ds:part_table_sys_id[bx], 0 seg000:1E22 jz short cap_08_for3_next2 seg000:1E24 cmp ds:part_table_boot_ind[bx], 80h seg000:1E29 jnz short cap_08_for3_next2 seg000:1E2B cmp ds:part_table_sys_id[bx], 0FFh seg000:1E30 jz short cap_08_for3_next2 seg000:1E32 cmp ds:part_table_sys_id[bx], 5 seg000:1E37 jz short cap_08_for3_next2 seg000:1E39 push ds:error_15_seg seg000:1E3D push ds:error_15_off seg000:1E41 call display seg000:1E44 pop bx seg000:1E45 pop bx seg000:1E46 seg000:1E46 cap_10: ; CODE XREF: change_active_partition:cap_32j seg000:1E46 call wait_for_ESC seg000:1E49 seg000:1E49 cap_11: ; CODE XREF: change_active_partition+308j seg000:1E49 mov ax, 79 seg000:1E4C push ax seg000:1E4D mov ax, 24 seg000:1E50 push ax seg000:1E51 sub ax, ax seg000:1E53 push ax seg000:1E54 push ax seg000:1E55 call clear_screen seg000:1E58 add sp, 8 seg000:1E5B jmp cap_33 seg000:1E5E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1E5E seg000:1E5E cap_12_if10: ; CODE XREF: change_active_partition+E2j seg000:1E5E ; change_active_partition+F2j seg000:1E5E cmp [bp+cap_num_boot_partitions], 0 seg000:1E62 jnz short cap_13_if10_else seg000:1E64 seg000:1E64 cap_12: seg000:1E64 push ds:error_25_seg seg000:1E68 push ds:error_25_off seg000:1E6C jmp cap_30 seg000:1E6F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1E6F seg000:1E6F cap_13_if10_else: ; CODE XREF: change_active_partition+148j seg000:1E6F sub ax, ax seg000:1E71 push ax seg000:1E72 mov al, ds:cur_disk seg000:1E75 cbw seg000:1E76 mov bx, ax seg000:1E78 shl bx, 1 seg000:1E7A push ds:total_mbytes[bx] seg000:1E7E call number_in_msg seg000:1E81 pop bx seg000:1E82 pop bx seg000:1E83 push ds:menu_15_segment seg000:1E87 push ds:menu_15_offset seg000:1E8B call display seg000:1E8E pop bx seg000:1E8F pop bx seg000:1E90 push ds:menu_11_segment seg000:1E94 push ds:menu_11_offset seg000:1E98 call display seg000:1E9B pop bx seg000:1E9C pop bx seg000:1E9D push ds:menu_24_segment seg000:1EA1 push ds:menu_24_offset seg000:1EA5 call display seg000:1EA8 pop bx seg000:1EA9 pop bx seg000:1EAA mov al, [bp+cap_num_partitions] seg000:1EAD mov [bp+cap_valid_partitions], al seg000:1EB0 sub al, al seg000:1EB2 mov [bp+cap_valid_input], al seg000:1EB5 mov [bp+cap_input_default], al seg000:1EB8 jmp cap_26_while seg000:1EBB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1EBB seg000:1EBB cap_14: ; CODE XREF: change_active_partition+2E6j seg000:1EBB push ds:input_col seg000:1EBF push ds:input_row seg000:1EC3 mov al, [bp+cap_num_partitions] seg000:1EC6 push ax seg000:1EC7 mov al, [bp+cap_input_default] seg000:1ECA push ax seg000:1ECB call get_num_input seg000:1ECE add sp, 8 seg000:1ED1 mov [bp+cap_input], al seg000:1ED4 sub al, '0' seg000:1ED6 mov [bp+cap_input_default], al seg000:1ED9 mov ax, 79 seg000:1EDC push ax seg000:1EDD mov ax, 23 seg000:1EE0 push ax seg000:1EE1 sub ax, ax seg000:1EE3 push ax seg000:1EE4 mov cx, 18 seg000:1EE7 push cx seg000:1EE8 call clear_screen seg000:1EEB add sp, 8 seg000:1EEE seg000:1EEE cap_if11: seg000:1EEE cmp [bp+cap_input], 1Bh seg000:1EF2 jnz short cap_15 seg000:1EF4 jmp cap_25_if11_else seg000:1EF7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1EF7 seg000:1EF7 cap_15: ; CODE XREF: change_active_partition+1D8j seg000:1EF7 mov [bp+cap_valid_partitions], 0 seg000:1EFB mov al, 4 seg000:1EFD push ax seg000:1EFE call sort_part_table seg000:1F01 pop bx seg000:1F02 seg000:1F02 cap_15_for4: seg000:1F02 mov [bp+cap_i], 0 seg000:1F07 jmp short cap_20_for4_next1 seg000:1F09 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1F09 seg000:1F09 cap_16_if14_else: ; CODE XREF: change_active_partition+24Cj seg000:1F09 ; change_active_partition+253j seg000:1F09 mov al, [bp+cap_input] seg000:1F0C mov ds:insert, al seg000:1F0F push ds:error_17_seg seg000:1F13 push ds:error_17_off seg000:1F17 seg000:1F17 cap_17: ; CODE XREF: change_active_partition+2D9j seg000:1F17 call display seg000:1F1A pop bx seg000:1F1B pop bx seg000:1F1C jmp cap_26_while seg000:1F1F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1F1F seg000:1F1F cap_18: ; CODE XREF: change_active_partition+245j seg000:1F1F inc [bp+cap_valid_partitions] seg000:1F22 seg000:1F22 cap_19: ; CODE XREF: change_active_partition+234j seg000:1F22 inc [bp+cap_i] seg000:1F25 seg000:1F25 cap_20_for4_next1: ; CODE XREF: change_active_partition+1EDj seg000:1F25 cmp [bp+cap_i], 4 seg000:1F29 jb short cap_21_for4_next2 seg000:1F2B jmp cap_26_while seg000:1F2E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1F2E seg000:1F2E cap_21_for4_next2: ; CODE XREF: change_active_partition+20Fj seg000:1F2E mov al, ds:cur_disk seg000:1F31 cbw seg000:1F32 shl ax, 1 seg000:1F34 shl ax, 1 seg000:1F36 mov bx, [bp+cap_i] seg000:1F39 mov cx, ax seg000:1F3B mov al, ds:sort[bx] seg000:1F3F cbw seg000:1F40 add ax, cx seg000:1F42 mov cx, 46 seg000:1F45 imul cx seg000:1F47 mov bx, ax seg000:1F49 seg000:1F49 cap_if12: seg000:1F49 cmp ds:part_table_sys_id[bx], 0 seg000:1F4E jz short cap_19 seg000:1F50 seg000:1F50 cap_if13: seg000:1F50 mov al, [bp+cap_valid_partitions] seg000:1F53 cbw seg000:1F54 mov cx, ax seg000:1F56 mov al, [bp+cap_input] seg000:1F59 cbw seg000:1F5A sub ax, cx seg000:1F5C cmp ax, '1' seg000:1F5F jnz short cap_18 seg000:1F61 seg000:1F61 cap_if14: seg000:1F61 cmp ds:part_table_sys_id[bx], 0FFh seg000:1F66 jz short cap_16_if14_else seg000:1F68 cmp ds:part_table_sys_id[bx], 5 seg000:1F6D jz short cap_16_if14_else seg000:1F6F mov [bp+cap_valid_input], 1 seg000:1F73 seg000:1F73 cap_for5: seg000:1F73 mov [bp+cap_x], 0 seg000:1F78 seg000:1F78 cap_22_for5_next2: ; CODE XREF: change_active_partition+288j seg000:1F78 mov al, ds:cur_disk seg000:1F7B cbw seg000:1F7C shl ax, 1 seg000:1F7E shl ax, 1 seg000:1F80 add ax, [bp+cap_x] seg000:1F83 mov cx, 46 seg000:1F86 mul cx seg000:1F88 mov bx, ax seg000:1F8A seg000:1F8A cap_if15: seg000:1F8A cmp ds:part_table_boot_ind[bx], 80h seg000:1F8F jnz short cap_24_for5_next1 seg000:1F91 mov ds:part_table_changed[bx], 1 seg000:1F96 mov ds:part_table_boot_ind[bx], 0 seg000:1F9B seg000:1F9B cap_24_for5_next1: ; CODE XREF: change_active_partition+275j seg000:1F9B inc [bp+cap_x] seg000:1F9E cmp [bp+cap_x], 4 seg000:1FA2 jb short cap_22_for5_next2 seg000:1FA4 mov al, ds:cur_disk seg000:1FA7 cbw seg000:1FA8 shl ax, 1 seg000:1FAA shl ax, 1 seg000:1FAC mov bx, [bp+cap_i] seg000:1FAF mov cx, ax seg000:1FB1 mov al, ds:sort[bx] seg000:1FB5 cbw seg000:1FB6 add ax, cx seg000:1FB8 mov cx, 46 seg000:1FBB imul cx seg000:1FBD mov bx, ax seg000:1FBF mov ds:part_table_boot_ind[bx], 80h seg000:1FC4 mov al, 1 seg000:1FC6 mov ds:part_table_changed[bx], al seg000:1FCA mov ds:reboot_flag, al seg000:1FCD call table_display seg000:1FD0 mov ax, 79 seg000:1FD3 push ax seg000:1FD4 mov ax, 21 seg000:1FD7 push ax seg000:1FD8 sub ax, ax seg000:1FDA push ax seg000:1FDB mov ax, 16 seg000:1FDE push ax seg000:1FDF call clear_screen seg000:1FE2 add sp, 8 seg000:1FE5 mov al, [bp+cap_input] seg000:1FE8 mov ds:insert, al seg000:1FEB push ds:status_4_seg seg000:1FEF push ds:status_4_off seg000:1FF3 jmp cap_17 seg000:1FF6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:1FF6 seg000:1FF6 cap_25_if11_else: ; CODE XREF: change_active_partition+1DAj seg000:1FF6 mov [bp+cap_valid_input], 1 seg000:1FFA seg000:1FFA cap_26_while: ; CODE XREF: change_active_partition+19Ej seg000:1FFA ; change_active_partition+202j ... seg000:1FFA cmp [bp+cap_valid_input], 0 seg000:1FFE jnz short cap_if9 seg000:2000 jmp cap_14 seg000:2003 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2003 seg000:2003 cap_if9: ; CODE XREF: change_active_partition+2E4j seg000:2003 jmp short cap_31 seg000:2005 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2005 seg000:2005 cap_28: ; CODE XREF: change_active_partition+4Fj seg000:2005 push ds:error_16_seg seg000:2009 push ds:error_16_off seg000:200D jmp short cap_30 seg000:200F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:200F seg000:200F cap_29: ; CODE XREF: change_active_partition+45j seg000:200F push ds:error_26_seg seg000:2013 push ds:error_26_off seg000:2017 seg000:2017 cap_30: ; CODE XREF: change_active_partition+152j seg000:2017 ; change_active_partition+2F3j seg000:2017 call display seg000:201A pop bx seg000:201B pop bx seg000:201C seg000:201C cap_31: ; CODE XREF: change_active_partition:cap_if9j seg000:201C cmp [bp+cap_input], 1Bh seg000:2020 jnz short cap_32 seg000:2022 jmp cap_11 seg000:2025 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2025 seg000:2025 cap_32: ; CODE XREF: change_active_partition+306j seg000:2025 jmp cap_10 seg000:2028 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2028 seg000:2028 cap_33: ; CODE XREF: change_active_partition+141j seg000:2028 mov sp, bp seg000:202A pop bp seg000:202B retn seg000:202B change_active_partition endp seg000:202B seg000:202C seg000:202C ; --------------- S U B R O U T I N E --------------------------------------- seg000:202C seg000:202C ; Attributes: bp-based frame seg000:202C seg000:202C display_partition_information proc near ; CODE XREF: do_main_menu:case_4p seg000:202C push bp seg000:202D mov bp, sp seg000:202F sub sp, 2 seg000:2032 mov ax, 79 seg000:2035 push ax seg000:2036 mov ax, 24 seg000:2039 push ax seg000:203A sub ax, ax seg000:203C push ax seg000:203D push ax seg000:203E call clear_screen seg000:2041 add sp, 8 seg000:2044 push ds:menu_35_segment seg000:2048 push ds:menu_35_offset seg000:204C call display seg000:204F pop bx seg000:2050 pop bx seg000:2051 mov al, ds:cur_disk seg000:2054 add al, '1' seg000:2056 mov ds:insert, al seg000:2059 push ds:menu_5_segment seg000:205D push ds:menu_5_offset seg000:2061 call display seg000:2064 pop bx seg000:2065 pop bx seg000:2066 call table_display seg000:2069 or al, al seg000:206B jz short disp_wait_for_esc seg000:206D sub ax, ax seg000:206F push ax seg000:2070 mov al, ds:cur_disk seg000:2073 cbw seg000:2074 mov bx, ax seg000:2076 shl bx, 1 seg000:2078 push ds:total_mbytes[bx] seg000:207C call number_in_msg seg000:207F pop bx seg000:2080 pop bx seg000:2081 push ds:menu_15_segment seg000:2085 push ds:menu_15_offset seg000:2089 call display seg000:208C pop bx seg000:208D pop bx seg000:208E mov al, 5 seg000:2090 push ax seg000:2091 call find_partition_type seg000:2094 pop bx seg000:2095 or al, al seg000:2097 jz short disp_wait_for_esc seg000:2099 call find_logical_drive seg000:209C or al, al seg000:209E jz short disp_wait_for_esc seg000:20A0 push ds:menu_11_segment seg000:20A4 push ds:menu_11_offset seg000:20A8 call display seg000:20AB pop bx seg000:20AC pop bx seg000:20AD push ds:menu_36_segment seg000:20B1 push ds:menu_36_offset seg000:20B5 call display seg000:20B8 pop bx seg000:20B9 pop bx seg000:20BA push ds:input_col seg000:20BE push ds:input_row seg000:20C2 mov al, ds:Yes seg000:20C5 push ax seg000:20C6 call get_yn_input seg000:20C9 add sp, 6 seg000:20CC seg000:20CC switch_input9: seg000:20CC cbw seg000:20CD cmp ax, 1Bh seg000:20D0 jz short case_disp_pinf_break seg000:20D2 ja short case_disp_pinf_DEF seg000:20D4 or al, al seg000:20D6 jz short case_disp_pinf_break seg000:20D8 dec al seg000:20DA jz short case_disp_pinf_1 seg000:20DC seg000:20DC case_disp_pinf_DEF: ; CODE XREF: display_partition_information+A6j seg000:20DC call internal_program_error seg000:20DF jmp short case_disp_pinf_break seg000:20E1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:20E1 seg000:20E1 case_disp_pinf_1: ; CODE XREF: display_partition_information+AEj seg000:20E1 call display_volume_information seg000:20E4 jmp short case_disp_pinf_break seg000:20E6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:20E6 seg000:20E6 disp_wait_for_esc: ; CODE XREF: display_partition_information+3Fj seg000:20E6 ; display_partition_information+6Bj ... seg000:20E6 call wait_for_ESC seg000:20E9 seg000:20E9 case_disp_pinf_break: ; CODE XREF: display_partition_information+A4j seg000:20E9 ; display_partition_information+AAj ... seg000:20E9 mov ax, 79 seg000:20EC push ax seg000:20ED mov ax, 24 seg000:20F0 push ax seg000:20F1 sub ax, ax seg000:20F3 push ax seg000:20F4 push ax seg000:20F5 call clear_screen seg000:20F8 mov sp, bp seg000:20FA pop bp seg000:20FB retn seg000:20FB display_partition_information endp seg000:20FB seg000:20FC seg000:20FC ; --------------- S U B R O U T I N E --------------------------------------- seg000:20FC seg000:20FC seg000:20FC display_volume_information proc near ; CODE XREF: display_partition_information:case_disp_pinf_1p seg000:20FC mov ax, 79 seg000:20FF push ax seg000:2100 mov ax, 24 seg000:2103 push ax seg000:2104 sub ax, ax seg000:2106 push ax seg000:2107 push ax seg000:2108 call clear_screen seg000:210B add sp, 8 seg000:210E push ds:menu_37_segment seg000:2112 push ds:menu_37_offset seg000:2116 call display seg000:2119 pop bx seg000:211A pop bx seg000:211B call volume_display seg000:211E mov al, 5 seg000:2120 push ax seg000:2121 call get_partition_size seg000:2124 pop bx seg000:2125 push ax seg000:2126 mov ax, offset p_size_format ; "%4.1d" seg000:2129 push ax seg000:212A mov ax, offset insert seg000:212D push ax seg000:212E call sprintf seg000:2131 add sp, 6 seg000:2134 push ds:menu_21_segment seg000:2138 push ds:menu_21_offset seg000:213C call display seg000:213F pop bx seg000:2140 pop bx seg000:2141 push ds:menu_11_segment seg000:2145 push ds:menu_11_offset seg000:2149 call display seg000:214C pop bx seg000:214D pop bx seg000:214E jmp wait_for_ESC seg000:214E display_volume_information endp seg000:214E seg000:2151 seg000:2151 ; --------------- S U B R O U T I N E --------------------------------------- seg000:2151 seg000:2151 seg000:2151 check_valid_environment proc near ; CODE XREF: main+68p seg000:2151 mov ds:regs_x_ax, 0B800h seg000:2157 mov ax, offset regs_x_ax seg000:215A push ax seg000:215B push ax seg000:215C mov cx, 2Fh seg000:215F push cx seg000:2160 call int86 seg000:2163 add sp, 6 seg000:2166 cmp byte ptr ds:regs_x_ax, 0 seg000:216B jz short cve_true seg000:216D test byte ptr ds:regs_x_bx, 40h seg000:2172 jz short cve_true seg000:2174 mov al, 0FFh seg000:2176 push ax seg000:2177 sub al, al seg000:2179 mov ds:no_fatal_error, al seg000:217C push ax seg000:217D sub ax, ax seg000:217F push ax seg000:2180 push ax seg000:2181 mov ax, 2 seg000:2184 push ax seg000:2185 mov ax, 4 seg000:2188 push ax seg000:2189 call display_msg seg000:218C add sp, 12 seg000:218F seg000:218F cve_false: seg000:218F sub al, al seg000:2191 retn seg000:2192 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2192 seg000:2192 cve_true: ; CODE XREF: check_valid_environment+1Aj seg000:2192 ; check_valid_environment+21j seg000:2192 mov al, 1 seg000:2194 retn seg000:2194 check_valid_environment endp seg000:2194 seg000:2195 seg000:2195 ; --------------- S U B R O U T I N E --------------------------------------- seg000:2195 seg000:2195 ; Attributes: bp-based frame seg000:2195 seg000:2195 init_partition_tables proc near ; CODE XREF: main+A4p seg000:2195 ; main:_main_22p seg000:2195 seg000:2195 pt_num_sec_lw = word ptr -1Ah seg000:2195 pt_num_sec_hw = word ptr -18h seg000:2195 pt_rel_sec_temp_lw= word ptr -16h seg000:2195 pt_rel_sec_temp_hw= word ptr -14h seg000:2195 more_drives_exist= byte ptr -12h seg000:2195 char_j = byte ptr -10h seg000:2195 unsigned_i = word ptr -0Eh seg000:2195 active_primary_count= byte ptr -0Ah seg000:2195 num_logical_drives= byte ptr -6 seg000:2195 partition_location= word ptr -4 seg000:2195 char_pri_part = byte ptr -2 seg000:2195 seg000:2195 push bp seg000:2196 mov bp, sp seg000:2198 sub sp, 26 seg000:219B push di seg000:219C push si seg000:219D mov ds:next_letter, 'C' seg000:21A2 seg000:21A2 ipt_for1_0: seg000:21A2 mov [bp+char_j], 0 seg000:21A6 jmp ipt_for1_1 seg000:21A9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:21A9 seg000:21A9 ipt_for1_next: ; CODE XREF: init_partition_tables+2A2j seg000:21A9 mov ds:primary_partition_count, 0 seg000:21AE mov [bp+char_pri_part], 0FFh seg000:21B2 mov ds:cur_disk, al seg000:21B5 mov cl, 1 seg000:21B7 push cx seg000:21B8 sub cl, cl seg000:21BA mov [bp+active_primary_count], cl seg000:21BD push cx seg000:21BE push ax seg000:21BF sub ax, ax seg000:21C1 push ax seg000:21C2 call read_boot_record seg000:21C5 add sp, 8 seg000:21C8 or al, al seg000:21CA jnz short ipt_1 seg000:21CC jmp ipt_26 seg000:21CF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:21CF seg000:21CF ipt_1: ; CODE XREF: init_partition_tables+35j seg000:21CF cmp ds:boot_record+1FEh, 55h seg000:21D4 jnz short ipt_3 seg000:21D6 cmp ds:boot_record+1FFh, 0AAh seg000:21DB jnz short ipt_3 seg000:21DD mov [bp+unsigned_i], 0 seg000:21E2 seg000:21E2 ipt_2: ; CODE XREF: init_partition_tables+6Bj seg000:21E2 mov bx, [bp+unsigned_i] seg000:21E5 mov al, ds:boot_record[bx] seg000:21E9 mov cl, 9 seg000:21EB mov dl, [bp+char_j] seg000:21EE sub dh, dh seg000:21F0 mov si, dx seg000:21F2 shl si, cl seg000:21F4 mov ds:master_boot_record[bx+si], al seg000:21F8 inc [bp+unsigned_i] seg000:21FB cmp [bp+unsigned_i], 512 seg000:2200 jb short ipt_2 seg000:2202 seg000:2202 ipt_3: ; CODE XREF: init_partition_tables+3Fj seg000:2202 ; init_partition_tables+46j seg000:2202 mov [bp+unsigned_i], 0 seg000:2207 seg000:2207 ipt_4: ; CODE XREF: init_partition_tables+261j seg000:2207 mov al, [bp+char_j] seg000:220A sub ah, ah seg000:220C mov cl, 9 seg000:220E mov dx, ax seg000:2210 shl ax, cl seg000:2212 mov cl, 4 seg000:2214 mov bx, [bp+unsigned_i] seg000:2217 shl bx, cl seg000:2219 add bx, ax seg000:221B mov al, ds:(master_boot_record+1BEh)[bx] seg000:221F mov cx, ax seg000:2221 mov ax, dx seg000:2223 shl ax, 1 seg000:2225 shl ax, 1 seg000:2227 add ax, [bp+unsigned_i] seg000:222A mov si, 46 seg000:222D mul si seg000:222F mov si, ax seg000:2231 mov ds:part_table_boot_ind[si], cl seg000:2235 mov al, ds:(master_boot_record+1BFh)[bx] seg000:2239 mov ds:part_table_start_head[si], al seg000:223D mov al, ds:(master_boot_record+1C0h)[bx] seg000:2241 mov cx, ax seg000:2243 and al, 3Fh seg000:2245 mov ds:part_table_start_sector[si], al seg000:2249 mov al, ds:(master_boot_record+1C1h)[bx] seg000:224D sub ah, ah seg000:224F and cx, 0C0h seg000:2253 shl cx, 1 seg000:2255 shl cx, 1 seg000:2257 add cx, ax seg000:2259 mov ds:part_table_start_cyl[si], cx seg000:225D mov al, ds:(master_boot_record+1C2h)[bx] seg000:2261 mov ds:part_table_sys_id[si], al seg000:2265 mov al, ds:(master_boot_record+1C3h)[bx] seg000:2269 mov ds:part_table_end_head[si], al seg000:226D mov al, ds:(master_boot_record+1C4h)[bx] seg000:2271 mov cx, ax seg000:2273 and al, 3Fh seg000:2275 mov ds:part_table_end_sector[si], al seg000:2279 mov al, ds:(master_boot_record+1C5h)[bx] seg000:227D and cx, 0C0h seg000:2281 shl cx, 1 seg000:2283 shl cx, 1 seg000:2285 add cx, ax seg000:2287 mov ds:part_table_end_cyl[si], cx seg000:228B mov al, ds:(master_boot_record+1C9h)[bx] seg000:228F mov ah, al seg000:2291 sub al, al seg000:2293 sub cx, cx seg000:2295 mov ds:part_table_rel_sec_lw[si], cx seg000:2299 mov ds:part_table_rel_sec_hw[si], ax seg000:229D mov dl, ds:(master_boot_record+1C8h)[bx] seg000:22A1 sub dh, dh seg000:22A3 sub di, di seg000:22A5 add cx, di seg000:22A7 adc ax, dx seg000:22A9 mov ds:part_table_rel_sec_lw[si], cx seg000:22AD mov ds:part_table_rel_sec_hw[si], ax seg000:22B1 mov dx, ax seg000:22B3 mov al, ds:(master_boot_record+1C7h)[bx] seg000:22B7 sub ah, ah seg000:22B9 mov di, dx seg000:22BB sub dx, dx seg000:22BD mov [bp+pt_rel_sec_temp_lw], cx seg000:22C0 mov [bp+pt_rel_sec_temp_hw], di seg000:22C3 mov cl, 8 seg000:22C5 mov di, bx seg000:22C7 call shl32 seg000:22CA add ax, [bp+pt_rel_sec_temp_lw] seg000:22CD adc dx, [bp+pt_rel_sec_temp_hw] seg000:22D0 mov ds:part_table_rel_sec_lw[si], ax seg000:22D4 mov ds:part_table_rel_sec_hw[si], dx seg000:22D8 mov cl, ds:(master_boot_record+1C6h)[di] seg000:22DC sub ch, ch seg000:22DE add ax, cx seg000:22E0 adc dx, 0 seg000:22E3 mov ds:part_table_rel_sec_lw[si], ax seg000:22E7 mov ds:part_table_rel_sec_hw[si], dx seg000:22EB mov al, ds:(master_boot_record+1CDh)[di] seg000:22EF mov ah, al seg000:22F1 sub al, al seg000:22F3 sub cx, cx seg000:22F5 mov ds:part_table_num_sec_lw[si], cx seg000:22F9 mov ds:part_table_num_sec_hw[si], ax seg000:22FD mov dl, ds:(master_boot_record+1CCh)[di] seg000:2301 sub dh, dh seg000:2303 sub bx, bx seg000:2305 add cx, bx seg000:2307 adc ax, dx seg000:2309 mov ds:part_table_num_sec_lw[si], cx seg000:230D mov ds:part_table_num_sec_hw[si], ax seg000:2311 mov dx, ax seg000:2313 mov al, ds:(master_boot_record+1CBh)[di] seg000:2317 sub ah, ah seg000:2319 mov bx, dx seg000:231B sub dx, dx seg000:231D mov [bp+pt_num_sec_lw], cx seg000:2320 mov [bp+pt_num_sec_hw], bx seg000:2323 mov cl, 8 seg000:2325 call shl32 seg000:2328 add ax, [bp+pt_num_sec_lw] seg000:232B adc dx, [bp+pt_num_sec_hw] seg000:232E mov ds:part_table_num_sec_lw[si], ax seg000:2332 mov ds:part_table_num_sec_hw[si], dx seg000:2336 mov cl, ds:(master_boot_record+1CAh)[di] seg000:233A sub ch, ch seg000:233C add ax, cx seg000:233E adc dx, 0 seg000:2341 mov ds:part_table_num_sec_lw[si], ax seg000:2345 mov ds:part_table_num_sec_hw[si], dx seg000:2349 push dx seg000:234A push ds:part_table_num_sec_lw[si] seg000:234E call numsecs_to_mbytes seg000:2351 pop bx seg000:2352 pop bx seg000:2353 mov ds:part_table_mbytes_used[si], ax seg000:2357 mov al, ds:cur_disk seg000:235A cbw seg000:235B mov bx, ax seg000:235D shl bx, 1 seg000:235F push ds:total_mbytes[bx] seg000:2363 push ds:part_table_mbytes_used[si] seg000:2367 call mbytes_to_percent seg000:236A pop bx seg000:236B pop bx seg000:236C mov ds:part_table_percent_used[si], ax seg000:2370 cmp ds:part_table_sys_id[si], 1 seg000:2375 jz short ipt_5 seg000:2377 cmp ds:part_table_sys_id[si], 4 seg000:237C jz short ipt_5 seg000:237E cmp ds:part_table_sys_id[si], 6 seg000:2383 jnz short ipt_9 seg000:2385 seg000:2385 ipt_5: ; CODE XREF: init_partition_tables+1E0j seg000:2385 ; init_partition_tables+1E7j seg000:2385 mov al, [bp+char_j] seg000:2388 sub ah, ah seg000:238A shl ax, 1 seg000:238C shl ax, 1 seg000:238E add ax, [bp+unsigned_i] seg000:2391 mov cx, 46 seg000:2394 mul cx seg000:2396 mov bx, ax seg000:2398 mov ds:part_table_drive_letter[bx], ' ' seg000:239D cmp ds:primary_partition_count, 0 seg000:23A2 jz short ipt_6 seg000:23A4 cmp ds:part_table_boot_ind[bx], 80h seg000:23A9 jnz short ipt_7 seg000:23AB cmp [bp+active_primary_count], 0 seg000:23AF jnz short ipt_7 seg000:23B1 seg000:23B1 ipt_6: ; CODE XREF: init_partition_tables+20Dj seg000:23B1 mov al, byte ptr [bp+unsigned_i] seg000:23B4 mov [bp+char_pri_part], al seg000:23B7 seg000:23B7 ipt_7: ; CODE XREF: init_partition_tables+214j seg000:23B7 ; init_partition_tables+21Aj seg000:23B7 mov al, [bp+char_j] seg000:23BA sub ah, ah seg000:23BC shl ax, 1 seg000:23BE shl ax, 1 seg000:23C0 add ax, [bp+unsigned_i] seg000:23C3 mul cx seg000:23C5 mov bx, ax seg000:23C7 cmp ds:part_table_boot_ind[bx], 80h seg000:23CC jnz short ipt_8 seg000:23CE inc [bp+active_primary_count] seg000:23D1 seg000:23D1 ipt_8: ; CODE XREF: init_partition_tables+237j seg000:23D1 inc ds:primary_partition_count seg000:23D5 seg000:23D5 ipt_9: ; CODE XREF: init_partition_tables+1EEj seg000:23D5 mov al, [bp+char_j] seg000:23D8 sub ah, ah seg000:23DA shl ax, 1 seg000:23DC shl ax, 1 seg000:23DE add ax, [bp+unsigned_i] seg000:23E1 mov cx, 46 seg000:23E4 mul cx seg000:23E6 mov bx, ax seg000:23E8 mov ds:part_table_changed[bx], 0 seg000:23ED inc [bp+unsigned_i] seg000:23F0 cmp [bp+unsigned_i], 4 seg000:23F4 jnb short ipt_10 seg000:23F6 jmp ipt_4 seg000:23F9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:23F9 seg000:23F9 ipt_10: ; CODE XREF: init_partition_tables+25Fj seg000:23F9 cmp [bp+char_pri_part], 0FFh seg000:23FD jz short ipt_11 seg000:23FF mov al, [bp+char_j] seg000:2402 sub ah, ah seg000:2404 shl ax, 1 seg000:2406 shl ax, 1 seg000:2408 mov cl, [bp+char_pri_part] seg000:240B sub ch, ch seg000:240D add ax, cx seg000:240F mov bx, 46 seg000:2412 imul bx seg000:2414 mov bx, ax seg000:2416 mov al, ds:next_letter seg000:2419 inc ds:next_letter seg000:241D mov ds:part_table_drive_letter[bx], al seg000:2421 push cx seg000:2422 mov al, [bp+char_j] seg000:2425 push ax seg000:2426 call get_volume seg000:2429 pop bx seg000:242A pop bx seg000:242B seg000:242B ipt_11: ; CODE XREF: init_partition_tables+268j seg000:242B inc [bp+char_j] seg000:242E seg000:242E ipt_for1_1: ; CODE XREF: init_partition_tables+11j seg000:242E mov al, [bp+char_j] seg000:2431 cmp ds:number_of_drives, al seg000:2435 jbe short ipt_for2_0 seg000:2437 jmp ipt_for1_next seg000:243A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:243A seg000:243A ipt_for2_0: ; CODE XREF: init_partition_tables+2A0j seg000:243A mov [bp+char_j], 0 seg000:243E jmp short ipt_for2_1 seg000:2440 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2440 seg000:2440 ipt_12: ; CODE XREF: init_partition_tables+2C3j seg000:2440 inc [bp+unsigned_i] seg000:2443 seg000:2443 ipt_in_while_for_1: ; CODE XREF: init_partition_tables+42Ej seg000:2443 cmp [bp+unsigned_i], 4 seg000:2447 jb short ipt_in_while_for_next seg000:2449 jmp ipt_while_more_drives_exist seg000:244C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:244C seg000:244C ipt_in_while_for_next: ; CODE XREF: init_partition_tables+2B2j seg000:244C mov cl, 4 seg000:244E mov bx, [bp+unsigned_i] seg000:2451 shl bx, cl seg000:2453 cmp ds:(boot_record+1C2h)[bx], 5 seg000:2458 jnz short ipt_12 seg000:245A mov al, ds:(boot_record+1C0h)[bx] seg000:245E and ax, 0C0h seg000:2461 shl ax, 1 seg000:2463 shl ax, 1 seg000:2465 mov cl, ds:(boot_record+1C1h)[bx] seg000:2469 sub ch, ch seg000:246B add ax, cx seg000:246D mov [bp+partition_location], ax seg000:2470 mov [bp+more_drives_exist], 1 seg000:2474 mov al, [bp+num_logical_drives] seg000:2477 cbw seg000:2478 mov cx, ax seg000:247A mov al, 24 seg000:247C mul [bp+char_j] seg000:247F add ax, cx seg000:2481 mov cx, 46 seg000:2484 imul cx seg000:2486 mov bx, ax seg000:2488 cmp ds:ext_table_sys_id[bx], 0 seg000:248D jnz short ipt_13 seg000:248F jmp ipt_while_more_drives_exist seg000:2492 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2492 seg000:2492 ipt_13: ; CODE XREF: init_partition_tables+2F8j seg000:2492 inc [bp+num_logical_drives] seg000:2495 jmp ipt_while_more_drives_exist seg000:2498 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2498 seg000:2498 ipt_while_end: ; CODE XREF: init_partition_tables+327j seg000:2498 ; init_partition_tables+332j ... seg000:2498 inc [bp+char_j] seg000:249B seg000:249B ipt_for2_1: ; CODE XREF: init_partition_tables+2A9j seg000:249B mov al, [bp+char_j] seg000:249E cmp ds:number_of_drives, al seg000:24A2 ja short ipt_for2_next seg000:24A4 jmp ipt_16 seg000:24A7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:24A7 seg000:24A7 ipt_for2_next: ; CODE XREF: init_partition_tables+30Dj seg000:24A7 mov ds:cur_disk, al seg000:24AA mov cl, 1 seg000:24AC push cx seg000:24AD sub cl, cl seg000:24AF push cx seg000:24B0 push ax seg000:24B1 sub ax, ax seg000:24B3 push ax seg000:24B4 call read_boot_record seg000:24B7 add sp, 8 seg000:24BA or al, al seg000:24BC jz short ipt_while_end seg000:24BE mov al, 5 seg000:24C0 push ax seg000:24C1 call find_partition_type seg000:24C4 pop bx seg000:24C5 or al, al seg000:24C7 jz short ipt_while_end seg000:24C9 mov [bp+unsigned_i], 0 seg000:24CE seg000:24CE ipt_14: ; CODE XREF: init_partition_tables+3CCj seg000:24CE mov al, 24 seg000:24D0 mul [bp+char_j] seg000:24D3 add ax, [bp+unsigned_i] seg000:24D6 mov cx, 46 seg000:24D9 mul cx seg000:24DB mov bx, ax seg000:24DD sub al, al seg000:24DF mov ds:ext_table_boot_ind[bx], al seg000:24E3 mov ds:ext_table_start_head[bx], al seg000:24E7 mov ds:ext_table_start_sector[bx], al seg000:24EB mov ds:ext_table_start_cyl[bx], 0 seg000:24F1 mov ds:ext_table_sys_id[bx], al seg000:24F5 mov ds:ext_table_end_head[bx], al seg000:24F9 mov ds:ext_table_end_sector[bx], al seg000:24FD mov ds:ext_table_end_cyl[bx], 0 seg000:2503 sub ax, ax seg000:2505 mov ds:ext_table_rel_sec_hw[bx], ax seg000:2509 mov ds:ext_table_rel_sec_lw[bx], ax seg000:250D mov ds:ext_table_num_sec_hw[bx], ax seg000:2511 mov ds:ext_table_num_sec_lw[bx], ax seg000:2515 mov ds:ext_table_mbytes_used[bx], ax seg000:2519 mov ds:ext_table_percent_used[bx], ax seg000:251D sub al, al seg000:251F mov ds:ext_table_changed[bx], al seg000:2523 mov ds:ext_table_drive_letter[bx], al seg000:2527 sub ax, ax seg000:2529 push ax seg000:252A mov al, 24 seg000:252C imul ds:cur_disk seg000:2530 add ax, [bp+unsigned_i] seg000:2533 mul cx seg000:2535 add ax, offset ext_table_system seg000:2538 push ax seg000:2539 call strcpy seg000:253C pop bx seg000:253D pop bx seg000:253E sub ax, ax seg000:2540 push ax seg000:2541 mov al, 24 seg000:2543 imul ds:cur_disk seg000:2547 add ax, [bp+unsigned_i] seg000:254A mov cx, 46 seg000:254D mul cx seg000:254F add ax, offset ext_table_vol_label seg000:2552 push ax seg000:2553 call strcpy seg000:2556 pop bx seg000:2557 pop bx seg000:2558 inc [bp+unsigned_i] seg000:255B cmp [bp+unsigned_i], 24 seg000:255F jnb short ipt_15 seg000:2561 jmp ipt_14 seg000:2564 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2564 seg000:2564 ipt_15: ; CODE XREF: init_partition_tables+3CAj seg000:2564 mov al, 5 seg000:2566 push ax seg000:2567 call find_partition_location seg000:256A pop bx seg000:256B cbw seg000:256C mov cl, [bp+char_j] seg000:256F sub ch, ch seg000:2571 shl cx, 1 seg000:2573 shl cx, 1 seg000:2575 add ax, cx seg000:2577 mov cx, 46 seg000:257A imul cx seg000:257C mov bx, ax seg000:257E mov ax, ds:part_table_start_cyl[bx] seg000:2582 mov [bp+partition_location], ax seg000:2585 mov [bp+more_drives_exist], 1 seg000:2589 mov [bp+num_logical_drives], 0 seg000:258D seg000:258D ipt_while_more_drives_exist: ; CODE XREF: init_partition_tables+2B4j seg000:258D ; init_partition_tables+2FAj ... seg000:258D cmp [bp+more_drives_exist], 0 seg000:2591 jnz short ipt_in_while seg000:2593 jmp ipt_while_end seg000:2596 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2596 seg000:2596 ipt_in_while: ; CODE XREF: init_partition_tables+3FCj seg000:2596 mov [bp+more_drives_exist], 0 seg000:259A mov al, 1 seg000:259C push ax seg000:259D sub al, al seg000:259F push ax seg000:25A0 mov al, [bp+char_j] seg000:25A3 push ax seg000:25A4 push [bp+partition_location] seg000:25A7 call read_boot_record seg000:25AA add sp, 8 seg000:25AD or al, al seg000:25AF jz short ipt_while_more_drives_exist seg000:25B1 mov al, [bp+char_j] seg000:25B4 push ax seg000:25B5 mov al, [bp+num_logical_drives] seg000:25B8 push ax seg000:25B9 call load_logical_drive seg000:25BC pop bx seg000:25BD pop bx seg000:25BE seg000:25BE ipt_in_while_for: seg000:25BE mov [bp+unsigned_i], 0 seg000:25C3 jmp ipt_in_while_for_1 seg000:25C6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:25C6 seg000:25C6 ipt_16: ; CODE XREF: init_partition_tables+30Fj seg000:25C6 mov [bp+char_j], 0 seg000:25CA jmp short ipt_22 seg000:25CC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:25CC seg000:25CC ipt_17: ; CODE XREF: init_partition_tables+466j seg000:25CC ; init_partition_tables+47Dj ... seg000:25CC inc [bp+unsigned_i] seg000:25CF seg000:25CF ipt_18: ; CODE XREF: init_partition_tables+51Bj seg000:25CF cmp [bp+unsigned_i], 4 seg000:25D3 jnb short ipt_21 seg000:25D5 seg000:25D5 ipt_19: seg000:25D5 mov al, [bp+char_j] seg000:25D8 sub ah, ah seg000:25DA shl ax, 1 seg000:25DC shl ax, 1 seg000:25DE add ax, [bp+unsigned_i] seg000:25E1 mov cx, 46 seg000:25E4 mul cx seg000:25E6 mov bx, ax seg000:25E8 cmp ds:part_table_sys_id[bx], 1 seg000:25ED jz short ipt_20 seg000:25EF cmp ds:part_table_sys_id[bx], 4 seg000:25F4 jz short ipt_20 seg000:25F6 cmp ds:part_table_sys_id[bx], 6 seg000:25FB jnz short ipt_17 seg000:25FD seg000:25FD ipt_20: ; CODE XREF: init_partition_tables+458j seg000:25FD ; init_partition_tables+45Fj seg000:25FD mov al, [bp+char_j] seg000:2600 sub ah, ah seg000:2602 shl ax, 1 seg000:2604 shl ax, 1 seg000:2606 add ax, [bp+unsigned_i] seg000:2609 mul cx seg000:260B mov bx, ax seg000:260D cmp ds:part_table_boot_ind[bx], 80h seg000:2612 jz short ipt_17 seg000:2614 cmp ds:part_table_drive_letter[bx], ' ' seg000:2619 jnz short ipt_17 seg000:261B mov al, ds:next_letter seg000:261E inc ds:next_letter seg000:2622 mov ds:part_table_drive_letter[bx], al seg000:2626 push [bp+unsigned_i] seg000:2629 mov al, [bp+char_j] seg000:262C push ax seg000:262D call get_volume seg000:2630 pop bx seg000:2631 pop bx seg000:2632 jmp short ipt_17 seg000:2634 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2634 seg000:2634 ipt_21: ; CODE XREF: init_partition_tables+43Ej seg000:2634 inc [bp+char_j] seg000:2637 seg000:2637 ipt_22: ; CODE XREF: init_partition_tables+435j seg000:2637 mov al, [bp+char_j] seg000:263A cmp ds:number_of_drives, al seg000:263E jbe short ipt_26 seg000:2640 mov [bp+unsigned_i], 0 seg000:2645 seg000:2645 ipt_23: ; CODE XREF: init_partition_tables+514j seg000:2645 mov al, [bp+char_j] seg000:2648 sub ah, ah seg000:264A shl ax, 1 seg000:264C shl ax, 1 seg000:264E add ax, [bp+unsigned_i] seg000:2651 mov cx, 46 seg000:2654 mul cx seg000:2656 mov bx, ax seg000:2658 cmp ds:part_table_sys_id[bx], 1 seg000:265D jz short ipt_24 seg000:265F cmp ds:part_table_sys_id[bx], 4 seg000:2664 jz short ipt_24 seg000:2666 cmp ds:part_table_sys_id[bx], 6 seg000:266B jnz short ipt_25 seg000:266D seg000:266D ipt_24: ; CODE XREF: init_partition_tables+4C8j seg000:266D ; init_partition_tables+4CFj seg000:266D mov al, [bp+char_j] seg000:2670 sub ah, ah seg000:2672 shl ax, 1 seg000:2674 shl ax, 1 seg000:2676 add ax, [bp+unsigned_i] seg000:2679 mul cx seg000:267B mov bx, ax seg000:267D cmp ds:part_table_boot_ind[bx], 80h seg000:2682 jnz short ipt_25 seg000:2684 cmp ds:part_table_drive_letter[bx], ' ' seg000:2689 jnz short ipt_25 seg000:268B mov al, ds:next_letter seg000:268E inc ds:next_letter seg000:2692 mov ds:part_table_drive_letter[bx], al seg000:2696 push [bp+unsigned_i] seg000:2699 mov al, [bp+char_j] seg000:269C push ax seg000:269D call get_volume seg000:26A0 pop bx seg000:26A1 pop bx seg000:26A2 seg000:26A2 ipt_25: ; CODE XREF: init_partition_tables+4D6j seg000:26A2 ; init_partition_tables+4EDj ... seg000:26A2 inc [bp+unsigned_i] seg000:26A5 cmp [bp+unsigned_i], 4 seg000:26A9 jb short ipt_23 seg000:26AB mov [bp+unsigned_i], 0 seg000:26B0 jmp ipt_18 seg000:26B3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:26B3 seg000:26B3 ipt_26: ; CODE XREF: init_partition_tables+37j seg000:26B3 ; init_partition_tables+4A9j seg000:26B3 pop si seg000:26B4 pop di seg000:26B5 mov sp, bp seg000:26B7 pop bp seg000:26B8 retn seg000:26B8 init_partition_tables endp seg000:26B8 seg000:26B9 seg000:26B9 ; --------------- S U B R O U T I N E --------------------------------------- seg000:26B9 seg000:26B9 ; Attributes: bp-based frame seg000:26B9 seg000:26B9 get_volume proc near ; CODE XREF: init_partition_tables+291p seg000:26B9 ; init_partition_tables+498p ... seg000:26B9 seg000:26B9 _k_ = word ptr -12h seg000:26B9 vol_label = word ptr -10h seg000:26B9 _length_ = word ptr -2 seg000:26B9 j_disk = byte ptr 4 seg000:26B9 i_partition = word ptr 6 seg000:26B9 seg000:26B9 push bp seg000:26BA mov bp, sp seg000:26BC sub sp, 18 seg000:26BF push si seg000:26C0 mov al, [bp+j_disk] seg000:26C3 sub ah, ah seg000:26C5 shl ax, 1 seg000:26C7 shl ax, 1 seg000:26C9 add ax, [bp+i_partition] seg000:26CC mov cx, 46 seg000:26CF mul cx seg000:26D1 mov bx, ax seg000:26D3 mov al, ds:part_table_drive_letter[bx] seg000:26D7 push ax seg000:26D8 call check_format seg000:26DB pop bx seg000:26DC dec al seg000:26DE jz short gv_1 seg000:26E0 jmp gv_11 seg000:26E3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:26E3 seg000:26E3 gv_1: ; CODE XREF: get_volume+25j seg000:26E3 mov [bp+_k_], 0 seg000:26E8 seg000:26E8 gv_2: ; CODE XREF: get_volume+51j seg000:26E8 mov al, [bp+j_disk] seg000:26EB sub ah, ah seg000:26ED shl ax, 1 seg000:26EF shl ax, 1 seg000:26F1 add ax, [bp+i_partition] seg000:26F4 mov cx, 46 seg000:26F7 mul cx seg000:26F9 mov si, ax seg000:26FB mov bx, [bp+_k_] seg000:26FE mov ds:part_table_vol_label[bx+si], 0 seg000:2703 inc [bp+_k_] seg000:2706 cmp [bp+_k_], 12 seg000:270A jb short gv_2 seg000:270C mov [bp+_k_], 0 seg000:2711 seg000:2711 gv_3: ; CODE XREF: get_volume+77j seg000:2711 mov al, [bp+j_disk] seg000:2714 sub ah, ah seg000:2716 shl ax, 1 seg000:2718 shl ax, 1 seg000:271A add ax, [bp+i_partition] seg000:271D mul cx seg000:271F mov si, ax seg000:2721 mov bx, [bp+_k_] seg000:2724 mov ds:part_table_system[bx+si], 0 seg000:2729 inc [bp+_k_] seg000:272C cmp [bp+_k_], 9 seg000:2730 jb short gv_3 seg000:2732 lea ax, [bp+vol_label] seg000:2735 push ax seg000:2736 mov al, [bp+j_disk] seg000:2739 sub ah, ah seg000:273B shl ax, 1 seg000:273D shl ax, 1 seg000:273F add ax, [bp+i_partition] seg000:2742 mov cx, 46 seg000:2745 mul cx seg000:2747 mov bx, ax seg000:2749 mov al, ds:part_table_drive_letter[bx] seg000:274D push ax seg000:274E call get_volume_string seg000:2751 pop bx seg000:2752 pop bx seg000:2753 mov [bp+_k_], 0 seg000:2758 jmp short gv_5 seg000:275A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:275A seg000:275A gv_4: ; CODE XREF: get_volume+CEj seg000:275A mov si, [bp+_k_] seg000:275D mov al, byte ptr [bp+si+vol_label] seg000:2760 mov cx, ax seg000:2762 mov al, [bp+j_disk] seg000:2765 sub ah, ah seg000:2767 shl ax, 1 seg000:2769 shl ax, 1 seg000:276B add ax, [bp+i_partition] seg000:276E mov bx, 46 seg000:2771 mul bx seg000:2773 mov bx, ax seg000:2775 mov ds:part_table_vol_label[bx+si], cl seg000:2779 inc [bp+_k_] seg000:277C seg000:277C gv_5: ; CODE XREF: get_volume+9Fj seg000:277C lea ax, [bp+vol_label] seg000:277F push ax seg000:2780 call strlen seg000:2783 pop bx seg000:2784 cmp ax, [bp+_k_] seg000:2787 ja short gv_4 seg000:2789 mov al, [bp+j_disk] seg000:278C sub ah, ah seg000:278E shl ax, 1 seg000:2790 shl ax, 1 seg000:2792 add ax, [bp+i_partition] seg000:2795 mov cx, 46 seg000:2798 mul cx seg000:279A mov bx, ax seg000:279C mov al, ds:part_table_drive_letter[bx] seg000:27A0 push ax seg000:27A1 call get_fs_and_vol seg000:27A4 pop bx seg000:27A5 or al, al seg000:27A7 jz short gv_8 seg000:27A9 mov [bp+_k_], 0 seg000:27AE seg000:27AE gv_6: ; CODE XREF: get_volume+10Cj seg000:27AE mov bx, [bp+_k_] seg000:27B1 cmp ds:dx_buff_file_system[bx], ' ' seg000:27B6 jz short gv_7 seg000:27B8 lea ax, [bx+1] seg000:27BB mov [bp+_length_], ax seg000:27BE seg000:27BE gv_7: ; CODE XREF: get_volume+FDj seg000:27BE inc [bp+_k_] seg000:27C1 cmp [bp+_k_], 8 seg000:27C5 jb short gv_6 seg000:27C7 push [bp+_length_] seg000:27CA mov ax, offset dx_buff_file_system seg000:27CD push ax seg000:27CE mov al, [bp+j_disk] seg000:27D1 sub ah, ah seg000:27D3 shl ax, 1 seg000:27D5 shl ax, 1 seg000:27D7 add ax, [bp+i_partition] seg000:27DA mov cx, 46 seg000:27DD mul cx seg000:27DF add ax, offset part_table_system seg000:27E2 push ax seg000:27E3 call strncpy seg000:27E6 add sp, 6 seg000:27E9 jmp short gv_13 seg000:27EB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:27EB seg000:27EB gv_8: ; CODE XREF: get_volume+EEj seg000:27EB mov al, [bp+j_disk] seg000:27EE sub ah, ah seg000:27F0 shl ax, 1 seg000:27F2 shl ax, 1 seg000:27F4 add ax, [bp+i_partition] seg000:27F7 mov cx, 46 seg000:27FA mul cx seg000:27FC mov bx, ax seg000:27FE cmp ds:part_table_num_sec_hw[bx], 0 seg000:2803 jnz short gv_9 seg000:2805 cmp ds:part_table_num_sec_lw[bx], 32680 seg000:280B jbe short gv_10 seg000:280D seg000:280D gv_9: ; CODE XREF: get_volume+14Aj seg000:280D mov ax, offset FAT16 ; "FAT16 " seg000:2810 push ax seg000:2811 add bx, offset part_table_system seg000:2815 push bx seg000:2816 jmp short gv_12 seg000:2818 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2818 seg000:2818 gv_10: ; CODE XREF: get_volume+152j seg000:2818 mov ax, offset FAT12 ; "FAT12 " seg000:281B push ax seg000:281C mov al, [bp+j_disk] seg000:281F sub ah, ah seg000:2821 shl ax, 1 seg000:2823 shl ax, 1 seg000:2825 add ax, [bp+i_partition] seg000:2828 mul cx seg000:282A add ax, offset part_table_system seg000:282D push ax seg000:282E jmp short gv_12 seg000:2830 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2830 seg000:2830 gv_11: ; CODE XREF: get_volume+27j seg000:2830 mov ax, offset NOVOLUME seg000:2833 push ax seg000:2834 mov al, [bp+j_disk] seg000:2837 sub ah, ah seg000:2839 shl ax, 1 seg000:283B shl ax, 1 seg000:283D add ax, [bp+i_partition] seg000:2840 mov cx, 46 seg000:2843 mul cx seg000:2845 mov cx, ax seg000:2847 add ax, offset part_table_vol_label seg000:284A push ax seg000:284B mov si, cx seg000:284D call strcpy seg000:2850 pop bx seg000:2851 pop bx seg000:2852 mov ax, offset UNKNOWN ; "UNKNOWN " seg000:2855 push ax seg000:2856 add si, offset part_table_system seg000:285A push si seg000:285B seg000:285B gv_12: ; CODE XREF: get_volume+15Dj seg000:285B ; get_volume+175j seg000:285B call strcpy seg000:285E pop bx seg000:285F pop bx seg000:2860 seg000:2860 gv_13: ; CODE XREF: get_volume+130j seg000:2860 pop si seg000:2861 mov sp, bp seg000:2863 pop bp seg000:2864 retn seg000:2864 get_volume endp seg000:2864 seg000:2865 seg000:2865 ; --------------- S U B R O U T I N E --------------------------------------- seg000:2865 seg000:2865 ; Attributes: bp-based frame seg000:2865 seg000:2865 load_logical_drive proc near ; CODE XREF: init_partition_tables+424p seg000:2865 seg000:2865 tempnumsec_lw = word ptr -22h seg000:2865 tempnumsec_hw = word ptr -20h seg000:2865 temprelsec_lw = word ptr -1Eh seg000:2865 temprelsec_hw = word ptr -1Ch seg000:2865 _int_k = word ptr -1Ah seg000:2865 _int_i = word ptr -18h seg000:2865 _int_index_ = word ptr -16h seg000:2865 _char_vol_label_= word ptr -14h seg000:2865 ext_part_num = word ptr -6 seg000:2865 _int_length_ = word ptr -4 seg000:2865 _partition_location_= word ptr -2 seg000:2865 _point_ = byte ptr 4 seg000:2865 _drive_ = byte ptr 6 seg000:2865 seg000:2865 push bp seg000:2866 mov bp, sp seg000:2868 sub sp, 34 seg000:286B push di seg000:286C push si seg000:286D cmp ds:boot_record+1FEh, 55h seg000:2872 jnz short lld_1 seg000:2874 cmp ds:boot_record+1FFh, 0AAh seg000:2879 jz short lld_for1 seg000:287B seg000:287B lld_1: ; CODE XREF: load_logical_drive+Dj seg000:287B jmp lld_17 seg000:287E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:287E seg000:287E lld_for1: ; CODE XREF: load_logical_drive+14j seg000:287E mov [bp+_int_i], 0 seg000:2883 jmp lld_for1_1 seg000:2886 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2886 seg000:2886 lld_2: ; CODE XREF: load_logical_drive+45Fj seg000:2886 mov al, [bp+_point_] seg000:2889 cbw seg000:288A mov cx, ax seg000:288C mov al, 24 seg000:288E mul [bp+_drive_] seg000:2891 add ax, cx seg000:2893 mov cx, 46 seg000:2896 imul cx seg000:2898 mov bx, ax seg000:289A mov ds:ext_table_drive_letter[bx], ' ' seg000:289F seg000:289F lld_3: ; CODE XREF: load_logical_drive+481j seg000:289F mov al, [bp+_point_] seg000:28A2 cbw seg000:28A3 mov cx, ax seg000:28A5 mov al, 24 seg000:28A7 mul [bp+_drive_] seg000:28AA add ax, cx seg000:28AC mov cx, 46 seg000:28AF imul cx seg000:28B1 mov bx, ax seg000:28B3 mov ax, ds:ext_table_start_cyl[bx] seg000:28B7 mov [bp+_partition_location_], ax seg000:28BA mov cl, ds:ext_table_start_sector[bx] seg000:28BE push cx seg000:28BF mov cl, ds:ext_table_start_head[bx] seg000:28C3 push cx seg000:28C4 mov cl, [bp+_drive_] seg000:28C7 push cx seg000:28C8 push ax seg000:28C9 call read_boot_record seg000:28CC add sp, 8 seg000:28CF seg000:28CF lld_for1_if_chk_format: seg000:28CF mov al, [bp+_point_] seg000:28D2 cbw seg000:28D3 mov cx, ax seg000:28D5 mov al, 24 seg000:28D7 mul [bp+_drive_] seg000:28DA add ax, cx seg000:28DC mov cx, 46 seg000:28DF imul cx seg000:28E1 mov bx, ax seg000:28E3 mov al, ds:ext_table_drive_letter[bx] seg000:28E7 push ax seg000:28E8 call check_format seg000:28EB pop bx seg000:28EC dec al seg000:28EE jz short lld_for1_if_chk_format_true seg000:28F0 jmp lld_for1_if_chk_format_false seg000:28F3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:28F3 seg000:28F3 lld_for1_if_chk_format_true: ; CODE XREF: load_logical_drive+89j seg000:28F3 mov [bp+_int_k], 0 seg000:28F8 seg000:28F8 lld_4: ; CODE XREF: load_logical_drive+B6j seg000:28F8 mov al, [bp+_point_] seg000:28FB cbw seg000:28FC mov cx, ax seg000:28FE mov al, 24 seg000:2900 mul [bp+_drive_] seg000:2903 add ax, cx seg000:2905 mov cx, 46 seg000:2908 mul cx seg000:290A mov si, ax seg000:290C mov bx, [bp+_int_k] seg000:290F mov ds:ext_table_vol_label[bx+si], 0 seg000:2914 inc [bp+_int_k] seg000:2917 cmp [bp+_int_k], 12 seg000:291B jb short lld_4 seg000:291D mov [bp+_int_k], 0 seg000:2922 seg000:2922 lld_5: ; CODE XREF: load_logical_drive+E0j seg000:2922 mov al, [bp+_point_] seg000:2925 cbw seg000:2926 mov cx, ax seg000:2928 mov al, 24 seg000:292A mul [bp+_drive_] seg000:292D add ax, cx seg000:292F mov cx, 46 seg000:2932 mul cx seg000:2934 mov si, ax seg000:2936 mov bx, [bp+_int_k] seg000:2939 mov ds:ext_table_system[bx+si], 0 seg000:293E inc [bp+_int_k] seg000:2941 cmp [bp+_int_k], 9 seg000:2945 jb short lld_5 seg000:2947 lea ax, [bp+_char_vol_label_] seg000:294A push ax seg000:294B mov al, [bp+_point_] seg000:294E cbw seg000:294F mov cx, ax seg000:2951 mov al, 24 seg000:2953 mul [bp+_drive_] seg000:2956 add ax, cx seg000:2958 mov cx, 46 seg000:295B imul cx seg000:295D mov bx, ax seg000:295F mov al, ds:ext_table_drive_letter[bx] seg000:2963 push ax seg000:2964 call get_volume_string seg000:2967 pop bx seg000:2968 pop bx seg000:2969 mov [bp+_int_k], 0 seg000:296E jmp short lld_7 seg000:2970 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2970 seg000:2970 lld_6: ; CODE XREF: load_logical_drive+139j seg000:2970 mov si, [bp+_int_k] seg000:2973 mov al, byte ptr [bp+si+_char_vol_label_] seg000:2976 mov cx, ax seg000:2978 mov al, [bp+_point_] seg000:297B cbw seg000:297C mov dx, ax seg000:297E mov al, 24 seg000:2980 mul [bp+_drive_] seg000:2983 add ax, dx seg000:2985 mov bx, 46 seg000:2988 mul bx seg000:298A mov bx, ax seg000:298C mov ds:ext_table_vol_label[bx+si], cl seg000:2990 inc [bp+_int_k] seg000:2993 seg000:2993 lld_7: ; CODE XREF: load_logical_drive+109j seg000:2993 lea ax, [bp+_char_vol_label_] seg000:2996 push ax seg000:2997 call strlen seg000:299A pop bx seg000:299B cmp ax, [bp+_int_k] seg000:299E ja short lld_6 seg000:29A0 mov al, [bp+_point_] seg000:29A3 cbw seg000:29A4 mov cx, ax seg000:29A6 mov al, 24 seg000:29A8 mul [bp+_drive_] seg000:29AB add ax, cx seg000:29AD mov cx, 46 seg000:29B0 imul cx seg000:29B2 mov bx, ax seg000:29B4 mov al, ds:ext_table_drive_letter[bx] seg000:29B8 push ax seg000:29B9 call get_fs_and_vol seg000:29BC pop bx seg000:29BD or al, al seg000:29BF jz short lld_10 seg000:29C1 mov [bp+_int_k], 0 seg000:29C6 seg000:29C6 lld_8: ; CODE XREF: load_logical_drive+178j seg000:29C6 mov bx, [bp+_int_k] seg000:29C9 cmp ds:dx_buff_file_system[bx], ' ' seg000:29CE jz short lld_9 seg000:29D0 lea ax, [bx+1] seg000:29D3 mov [bp+_int_length_], ax seg000:29D6 seg000:29D6 lld_9: ; CODE XREF: load_logical_drive+169j seg000:29D6 inc [bp+_int_k] seg000:29D9 cmp [bp+_int_k], 8 seg000:29DD jb short lld_8 seg000:29DF push [bp+_int_length_] seg000:29E2 mov ax, offset dx_buff_file_system seg000:29E5 push ax seg000:29E6 mov al, [bp+_point_] seg000:29E9 cbw seg000:29EA mov cx, ax seg000:29EC mov al, 24 seg000:29EE mul [bp+_drive_] seg000:29F1 add ax, cx seg000:29F3 mov cx, 46 seg000:29F6 imul cx seg000:29F8 add ax, offset ext_table_system seg000:29FB push ax seg000:29FC call strncpy seg000:29FF add sp, 6 seg000:2A02 jmp short lld_14 seg000:2A04 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2A04 seg000:2A04 lld_10: ; CODE XREF: load_logical_drive+15Aj seg000:2A04 mov al, [bp+_point_] seg000:2A07 cbw seg000:2A08 mov cx, ax seg000:2A0A mov al, 24 seg000:2A0C mul [bp+_drive_] seg000:2A0F add ax, cx seg000:2A11 mov cx, 46 seg000:2A14 imul cx seg000:2A16 mov bx, ax seg000:2A18 cmp ds:ext_table_num_sec_hw[bx], 0 seg000:2A1D jnz short lld_11 seg000:2A1F cmp ds:ext_table_num_sec_lw[bx], 32680 seg000:2A25 jbe short lld_12 seg000:2A27 seg000:2A27 lld_11: ; CODE XREF: load_logical_drive+1B8j seg000:2A27 mov ax, offset extFAT16 ; "FAT16 " seg000:2A2A push ax seg000:2A2B add bx, offset ext_table_system seg000:2A2F push bx seg000:2A30 jmp short lld_13 seg000:2A32 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2A32 seg000:2A32 lld_12: ; CODE XREF: load_logical_drive+1C0j seg000:2A32 mov ax, offset extFAT12 ; "FAT12 " seg000:2A35 push ax seg000:2A36 mov al, [bp+_point_] seg000:2A39 cbw seg000:2A3A mov cx, ax seg000:2A3C mov al, 24 seg000:2A3E mul [bp+_drive_] seg000:2A41 add ax, cx seg000:2A43 mov cx, 46 seg000:2A46 imul cx seg000:2A48 add ax, offset ext_table_system seg000:2A4B push ax seg000:2A4C jmp short lld_13 seg000:2A4E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2A4E seg000:2A4E lld_for1_if_chk_format_false: ; CODE XREF: load_logical_drive+8Bj seg000:2A4E mov ax, offset extNOVOLUME seg000:2A51 push ax seg000:2A52 mov al, [bp+_point_] seg000:2A55 cbw seg000:2A56 mov cx, ax seg000:2A58 mov al, 24 seg000:2A5A mul [bp+_drive_] seg000:2A5D add ax, cx seg000:2A5F mov cx, 46 seg000:2A62 imul cx seg000:2A64 mov cx, ax seg000:2A66 add ax, offset ext_table_vol_label seg000:2A69 push ax seg000:2A6A mov si, cx seg000:2A6C call strcpy seg000:2A6F pop bx seg000:2A70 pop bx seg000:2A71 mov ax, offset extUNKNOWN ; "UNKNOWN " seg000:2A74 push ax seg000:2A75 add si, offset ext_table_system seg000:2A79 push si seg000:2A7A seg000:2A7A lld_13: ; CODE XREF: load_logical_drive+1CBj seg000:2A7A ; load_logical_drive+1E7j seg000:2A7A call strcpy seg000:2A7D pop bx seg000:2A7E pop bx seg000:2A7F seg000:2A7F lld_14: ; CODE XREF: load_logical_drive+19Dj seg000:2A7F mov ds:regs_x_dx, 0 seg000:2A85 mov ds:regs_x_ax, 4409h seg000:2A8B mov al, [bp+_point_] seg000:2A8E cbw seg000:2A8F mov cx, ax seg000:2A91 mov al, 24 seg000:2A93 mul [bp+_drive_] seg000:2A96 add ax, cx seg000:2A98 mov cx, 46 seg000:2A9B imul cx seg000:2A9D mov bx, ax seg000:2A9F mov al, ds:ext_table_drive_letter[bx] seg000:2AA3 sub al, 40h seg000:2AA5 mov byte ptr ds:regs_x_bx, al seg000:2AA8 mov ax, offset regs_x_ax seg000:2AAB push ax seg000:2AAC push ax seg000:2AAD mov si, bx seg000:2AAF call intdos seg000:2AB2 pop bx seg000:2AB3 pop bx seg000:2AB4 test byte ptr ds:regs_x_dx+1, 10h seg000:2AB9 jz short lld_15 seg000:2ABB push ds:REMOTE seg000:2ABF add si, offset ext_table_vol_label seg000:2AC3 push si seg000:2AC4 call strcpy seg000:2AC7 pop bx seg000:2AC8 pop bx seg000:2AC9 seg000:2AC9 lld_15: ; CODE XREF: load_logical_drive+254j seg000:2AC9 mov al, 1 seg000:2ACB push ax seg000:2ACC sub al, al seg000:2ACE push ax seg000:2ACF mov al, [bp+_drive_] seg000:2AD2 push ax seg000:2AD3 mov al, [bp+_point_] seg000:2AD6 cbw seg000:2AD7 mov cx, ax seg000:2AD9 mov al, 24 seg000:2ADB mul [bp+_drive_] seg000:2ADE add ax, cx seg000:2AE0 mov cx, 46 seg000:2AE3 imul cx seg000:2AE5 mov bx, ax seg000:2AE7 push ds:ext_table_start_cyl[bx] seg000:2AEB call read_boot_record seg000:2AEE add sp, 8 seg000:2AF1 seg000:2AF1 lld_for1_if_false: ; CODE XREF: load_logical_drive+2A7j seg000:2AF1 ; load_logical_drive+2AEj seg000:2AF1 inc [bp+_int_i] seg000:2AF4 seg000:2AF4 lld_for1_1: ; CODE XREF: load_logical_drive+1Ej seg000:2AF4 cmp [bp+_int_i], 4 seg000:2AF8 jb short lld_for1_next seg000:2AFA jmp lld_17 seg000:2AFD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2AFD seg000:2AFD lld_for1_next: ; CODE XREF: load_logical_drive+293j seg000:2AFD mov cl, 4 seg000:2AFF mov bx, [bp+_int_i] seg000:2B02 shl bx, cl seg000:2B04 mov [bp+_int_index_], bx seg000:2B07 seg000:2B07 lld_for1_if: seg000:2B07 cmp ds:(boot_record+1C2h)[bx], 0 seg000:2B0C jz short lld_for1_if_false seg000:2B0E cmp ds:(boot_record+1C2h)[bx], 5 seg000:2B13 jz short lld_for1_if_false seg000:2B15 seg000:2B15 lld_for1_if_true: seg000:2B15 mov al, [bp+_point_] seg000:2B18 cbw seg000:2B19 mov cx, 24 seg000:2B1C mov dx, ax seg000:2B1E mov al, [bp+_drive_] seg000:2B21 sub ah, ah seg000:2B23 mov si, dx seg000:2B25 mov di, 46 seg000:2B28 mov bx, ax seg000:2B2A mul cx seg000:2B2C add ax, si seg000:2B2E imul di seg000:2B30 mov si, ax seg000:2B32 mov di, [bp+_int_index_] seg000:2B35 mov al, ds:(boot_record+1BEh)[di] seg000:2B39 mov ds:ext_table_boot_ind[si], al seg000:2B3D mov al, ds:(boot_record+1BFh)[di] seg000:2B41 mov ds:ext_table_start_head[si], al seg000:2B45 mov al, ds:(boot_record+1C0h)[di] seg000:2B49 mov cx, ax seg000:2B4B and al, 3Fh seg000:2B4D mov ds:ext_table_start_sector[si], al seg000:2B51 and cx, 0C0h seg000:2B55 shl cx, 1 seg000:2B57 shl cx, 1 seg000:2B59 mov al, ds:(boot_record+1C1h)[di] seg000:2B5D sub ah, ah seg000:2B5F add cx, ax seg000:2B61 mov ds:ext_table_start_cyl[si], cx seg000:2B65 mov al, ds:(boot_record+1C2h)[di] seg000:2B69 mov ds:ext_table_sys_id[si], al seg000:2B6D mov al, ds:(boot_record+1C3h)[di] seg000:2B71 mov ds:ext_table_end_head[si], al seg000:2B75 mov al, ds:(boot_record+1C4h)[di] seg000:2B79 mov cx, ax seg000:2B7B and al, 3Fh seg000:2B7D mov ds:ext_table_end_sector[si], al seg000:2B81 and cx, 0C0h seg000:2B85 shl cx, 1 seg000:2B87 shl cx, 1 seg000:2B89 mov al, ds:(boot_record+1C5h)[di] seg000:2B8D add cx, ax seg000:2B8F mov ds:ext_table_end_cyl[si], cx seg000:2B93 mov al, ds:(boot_record+1C9h)[di] seg000:2B97 mov ah, al seg000:2B99 sub al, al seg000:2B9B sub cx, cx seg000:2B9D mov ds:ext_table_rel_sec_lw[si], cx seg000:2BA1 mov ds:ext_table_rel_sec_hw[si], ax seg000:2BA5 mov dl, ds:(boot_record+1C8h)[di] seg000:2BA9 sub dh, dh seg000:2BAB sub di, di seg000:2BAD add cx, di seg000:2BAF adc ax, dx seg000:2BB1 mov ds:ext_table_rel_sec_lw[si], cx seg000:2BB5 mov ds:ext_table_rel_sec_hw[si], ax seg000:2BB9 mov di, [bp+_int_index_] seg000:2BBC mov dx, ax seg000:2BBE mov al, ds:(boot_record+1C7h)[di] seg000:2BC2 sub ah, ah seg000:2BC4 mov di, dx seg000:2BC6 sub dx, dx seg000:2BC8 mov [bp+temprelsec_lw], cx seg000:2BCB mov [bp+temprelsec_hw], di seg000:2BCE mov cl, 8 seg000:2BD0 mov di, bx seg000:2BD2 call shl32 seg000:2BD5 add ax, [bp+temprelsec_lw] seg000:2BD8 adc dx, [bp+temprelsec_hw] seg000:2BDB mov ds:ext_table_rel_sec_lw[si], ax seg000:2BDF mov ds:ext_table_rel_sec_hw[si], dx seg000:2BE3 mov bx, [bp+_int_index_] seg000:2BE6 mov cl, ds:(boot_record+1C6h)[bx] seg000:2BEA sub ch, ch seg000:2BEC add ax, cx seg000:2BEE adc dx, 0 seg000:2BF1 mov ds:ext_table_rel_sec_lw[si], ax seg000:2BF5 mov ds:ext_table_rel_sec_hw[si], dx seg000:2BF9 mov al, ds:(boot_record+1CDh)[bx] seg000:2BFD mov ah, al seg000:2BFF sub al, al seg000:2C01 sub cx, cx seg000:2C03 mov ds:ext_table_num_sec_lw[si], cx seg000:2C07 mov ds:ext_table_num_sec_hw[si], ax seg000:2C0B mov dl, ds:(boot_record+1CCh)[bx] seg000:2C0F sub dh, dh seg000:2C11 sub bx, bx seg000:2C13 add cx, bx seg000:2C15 adc ax, dx seg000:2C17 mov ds:ext_table_num_sec_lw[si], cx seg000:2C1B mov ds:ext_table_num_sec_hw[si], ax seg000:2C1F mov bx, [bp+_int_index_] seg000:2C22 mov dx, ax seg000:2C24 mov al, ds:(boot_record+1CBh)[bx] seg000:2C28 sub ah, ah seg000:2C2A mov bx, dx seg000:2C2C sub dx, dx seg000:2C2E mov [bp+tempnumsec_lw], cx seg000:2C31 mov [bp+tempnumsec_hw], bx seg000:2C34 mov cl, 8 seg000:2C36 call shl32 seg000:2C39 add ax, [bp+tempnumsec_lw] seg000:2C3C adc dx, [bp+tempnumsec_hw] seg000:2C3F mov ds:ext_table_num_sec_lw[si], ax seg000:2C43 mov ds:ext_table_num_sec_hw[si], dx seg000:2C47 mov bx, [bp+_int_index_] seg000:2C4A mov cl, ds:(boot_record+1CAh)[bx] seg000:2C4E sub ch, ch seg000:2C50 add ax, cx seg000:2C52 adc dx, 0 seg000:2C55 mov ds:ext_table_num_sec_lw[si], ax seg000:2C59 mov ds:ext_table_num_sec_hw[si], dx seg000:2C5D mov al, ds:cur_disk seg000:2C60 push ax seg000:2C61 mov ax, ds:ext_table_end_cyl[si] seg000:2C65 sub ax, ds:ext_table_start_cyl[si] seg000:2C69 inc ax seg000:2C6A push ax seg000:2C6B call cylinders_to_mbytes seg000:2C6E pop bx seg000:2C6F pop bx seg000:2C70 mov ds:ext_table_mbytes_used[si], ax seg000:2C74 mov al, 5 seg000:2C76 push ax seg000:2C77 call find_partition_location seg000:2C7A pop bx seg000:2C7B cbw seg000:2C7C mov [bp+ext_part_num], ax seg000:2C7F mov ax, di seg000:2C81 shl ax, 1 seg000:2C83 shl ax, 1 seg000:2C85 add ax, [bp+ext_part_num] seg000:2C88 mov cx, 46 seg000:2C8B mul cx seg000:2C8D mov bx, ax seg000:2C8F mov ax, ds:part_table_end_cyl[bx] seg000:2C93 sub ax, ds:part_table_start_cyl[bx] seg000:2C97 inc ax seg000:2C98 push ax seg000:2C99 mov ax, ds:ext_table_end_cyl[si] seg000:2C9D sub ax, ds:ext_table_start_cyl[si] seg000:2CA1 inc ax seg000:2CA2 push ax seg000:2CA3 call cylinders_to_percent seg000:2CA6 pop bx seg000:2CA7 pop bx seg000:2CA8 mov ds:ext_table_percent_used[si], ax seg000:2CAC mov bx, [bp+_int_index_] seg000:2CAF cmp ds:(boot_record+1C2h)[bx], 1 seg000:2CB4 jz short lld_16 seg000:2CB6 cmp ds:(boot_record+1C2h)[bx], 4 seg000:2CBB jz short lld_16 seg000:2CBD cmp ds:(boot_record+1C2h)[bx], 6 seg000:2CC2 jz short lld_16 seg000:2CC4 jmp lld_2 seg000:2CC7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2CC7 seg000:2CC7 lld_16: ; CODE XREF: load_logical_drive+44Fj seg000:2CC7 ; load_logical_drive+456j ... seg000:2CC7 mov al, [bp+_point_] seg000:2CCA cbw seg000:2CCB mov cx, ax seg000:2CCD mov al, 24 seg000:2CCF mul [bp+_drive_] seg000:2CD2 add ax, cx seg000:2CD4 mov cx, 46 seg000:2CD7 imul cx seg000:2CD9 mov bx, ax seg000:2CDB mov al, ds:next_letter seg000:2CDE inc ds:next_letter seg000:2CE2 mov ds:ext_table_drive_letter[bx], al seg000:2CE6 jmp lld_3 seg000:2CE9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2CE9 seg000:2CE9 lld_17: ; CODE XREF: load_logical_drive:lld_1j seg000:2CE9 ; load_logical_drive+295j seg000:2CE9 pop si seg000:2CEA pop di seg000:2CEB mov sp, bp seg000:2CED pop bp seg000:2CEE retn seg000:2CEE load_logical_drive endp seg000:2CEE seg000:2CEF seg000:2CEF ; --------------- S U B R O U T I N E --------------------------------------- seg000:2CEF seg000:2CEF ; Attributes: bp-based frame seg000:2CEF seg000:2CEF reboot_system proc near ; CODE XREF: main+CFp seg000:2CEF ; dos_create_partition+1BEp seg000:2CEF seg000:2CEF r_boot_drive = dword ptr -0Ch seg000:2CEF r_boot_changed = byte ptr -8 seg000:2CEF r_i = byte ptr -6 seg000:2CEF r_j = byte ptr -4 seg000:2CEF r_boot_letter = byte ptr -2 seg000:2CEF seg000:2CEF push bp seg000:2CF0 mov bp, sp seg000:2CF2 sub sp, 12 seg000:2CF5 mov ax, 79 seg000:2CF8 push ax seg000:2CF9 mov ax, 24 seg000:2CFC push ax seg000:2CFD sub ax, ax seg000:2CFF push ax seg000:2D00 push ax seg000:2D01 call clear_screen seg000:2D04 add sp, 8 seg000:2D07 cmp ds:quiet_flag, 0 seg000:2D0C jz short rebootsys_0 seg000:2D0E jmp rebootsys_8 seg000:2D11 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2D11 seg000:2D11 rebootsys_0: ; CODE XREF: reboot_system+1Dj seg000:2D11 mov byte ptr ds:regs_x_ax+1, 52h seg000:2D16 mov ax, offset segregs_es seg000:2D19 push ax seg000:2D1A mov cx, offset regs_x_ax seg000:2D1D push cx seg000:2D1E push cx seg000:2D1F call intdosx seg000:2D22 add sp, 6 seg000:2D25 mov ax, ds:segregs_es seg000:2D28 mov word ptr [bp+r_boot_drive+2], ax seg000:2D2B mov ax, ds:regs_x_bx seg000:2D2E add ax, 67 seg000:2D31 mov word ptr [bp+r_boot_drive], ax seg000:2D34 les bx, [bp+r_boot_drive] seg000:2D37 mov al, es:[bx] seg000:2D3A add al, 40h seg000:2D3C mov [bp+r_boot_letter], al seg000:2D3F cmp al, 'A' seg000:2D41 jz short rebootsys_6 seg000:2D43 mov [bp+r_boot_changed], 1 seg000:2D47 mov [bp+r_j], 0 seg000:2D4B jmp short rebootsys_4 seg000:2D4D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2D4D seg000:2D4D rebootsys_1: ; CODE XREF: reboot_system+85j seg000:2D4D ; reboot_system+8Ej seg000:2D4D inc [bp+r_i] seg000:2D50 seg000:2D50 rebootsys_2: ; CODE XREF: reboot_system+A4j seg000:2D50 cmp [bp+r_i], 4 seg000:2D54 jge short rebootsys_3 seg000:2D56 mov al, [bp+r_j] seg000:2D59 cbw seg000:2D5A shl ax, 1 seg000:2D5C shl ax, 1 seg000:2D5E mov cx, ax seg000:2D60 mov al, [bp+r_i] seg000:2D63 cbw seg000:2D64 add ax, cx seg000:2D66 mov cx, 46 seg000:2D69 imul cx seg000:2D6B mov bx, ax seg000:2D6D mov al, [bp+r_boot_letter] seg000:2D70 cmp ds:part_table_drive_letter[bx], al seg000:2D74 jnz short rebootsys_1 seg000:2D76 mov al, ds:part_table_changed[bx] seg000:2D7A mov [bp+r_boot_changed], al seg000:2D7D jmp short rebootsys_1 seg000:2D7F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2D7F seg000:2D7F rebootsys_3: ; CODE XREF: reboot_system+65j seg000:2D7F inc [bp+r_j] seg000:2D82 seg000:2D82 rebootsys_4: ; CODE XREF: reboot_system+5Cj seg000:2D82 mov al, [bp+r_j] seg000:2D85 cbw seg000:2D86 mov cl, ds:number_of_drives seg000:2D8A sub ch, ch seg000:2D8C cmp ax, cx seg000:2D8E jge short rebootsys_5 seg000:2D90 mov [bp+r_i], ch seg000:2D93 jmp short rebootsys_2 seg000:2D95 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2D95 seg000:2D95 rebootsys_5: ; CODE XREF: reboot_system+9Fj seg000:2D95 cmp [bp+r_boot_changed], 0 seg000:2D99 jnz short rebootsys_6 seg000:2D9B push ds:menu_60_segment seg000:2D9F push ds:menu_60_offset seg000:2DA3 jmp short rebootsys_7 seg000:2DA5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2DA5 seg000:2DA5 rebootsys_6: ; CODE XREF: reboot_system+52j seg000:2DA5 ; reboot_system+AAj seg000:2DA5 push ds:menu_38_segment seg000:2DA9 push ds:menu_38_offset seg000:2DAD seg000:2DAD rebootsys_7: ; CODE XREF: reboot_system+B4j seg000:2DAD call display seg000:2DB0 pop bx seg000:2DB1 pop bx seg000:2DB2 call getch seg000:2DB5 call reboot seg000:2DB8 jmp short rebootsys_12 seg000:2DBA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2DBA seg000:2DBA rebootsys_8: ; CODE XREF: reboot_system+1Fj seg000:2DBA mov ds:cur_disk, 0 seg000:2DBF call reset_video_information seg000:2DC2 mov al, 1 seg000:2DC4 push ax seg000:2DC5 call find_partition_type seg000:2DC8 pop bx seg000:2DC9 or al, al seg000:2DCB jnz short rebootsys_9 seg000:2DCD mov al, 4 seg000:2DCF push ax seg000:2DD0 call find_partition_type seg000:2DD3 pop bx seg000:2DD4 or al, al seg000:2DD6 jnz short rebootsys_9 seg000:2DD8 mov al, 6 seg000:2DDA push ax seg000:2DDB call find_partition_type seg000:2DDE pop bx seg000:2DDF or al, al seg000:2DE1 jz short rebootsys_10 seg000:2DE3 seg000:2DE3 rebootsys_9: ; CODE XREF: reboot_system+DCj seg000:2DE3 ; reboot_system+E7j seg000:2DE3 sub ax, ax seg000:2DE5 jmp short rebootsys_11 seg000:2DE7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2DE7 seg000:2DE7 rebootsys_10: ; CODE XREF: reboot_system+F2j seg000:2DE7 mov ax, 1 seg000:2DEA seg000:2DEA rebootsys_11: ; CODE XREF: reboot_system+F6j seg000:2DEA push ax seg000:2DEB call _exit seg000:2DEE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2DEE pop bx seg000:2DEF seg000:2DEF rebootsys_12: ; CODE XREF: reboot_system+C9j seg000:2DEF mov sp, bp seg000:2DF1 pop bp seg000:2DF2 retn seg000:2DF2 reboot_system endp seg000:2DF2 seg000:2DF3 seg000:2DF3 ; --------------- S U B R O U T I N E --------------------------------------- seg000:2DF3 seg000:2DF3 seg000:2DF3 internal_program_error proc near ; CODE XREF: do_main_menu:case_DEFp seg000:2DF3 ; delete_partition:dp_6p ... seg000:2DF3 push ds:inter_err_seg seg000:2DF7 push ds:inter_err_off seg000:2DFB call display seg000:2DFE pop bx seg000:2DFF pop bx seg000:2E00 sub ax, ax seg000:2E02 push ax seg000:2E03 push ax seg000:2E04 call DOSEXIT seg000:2E09 retn seg000:2E09 internal_program_error endp seg000:2E09 seg000:2E0A seg000:2E0A ; --------------- S U B R O U T I N E --------------------------------------- seg000:2E0A seg000:2E0A seg000:2E0A reboot proc near ; CODE XREF: reboot_system+C6p seg000:2E0A mov ax, 40h seg000:2E0D mov ds, ax seg000:2E0F assume ds:nothing seg000:2E0F mov word ptr ds:72h, 1234h seg000:2E15 mov ax, 3515h seg000:2E18 int 21h ; DOS - 2+ - GET INTERRUPT VECTOR seg000:2E18 ; AL = interrupt number seg000:2E18 ; Return: ES:BX = value of interrupt vector seg000:2E1A mov ax, es seg000:2E1C or ax, bx seg000:2E1E jz short reboot_0 seg000:2E20 mov ax, 40h seg000:2E23 mov ds, ax seg000:2E25 mov byte ptr ds:17h, 0Ch seg000:2E2A mov ax, 4F53h seg000:2E2D int 15h ; OS HOOK - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS) seg000:2E2D ; AL = scan code, CF set seg000:2E2D ; Return: CF set - AL = scan code seg000:2E2D ; CF clear - scan code should be ignored seg000:2E2F seg000:2E2F reboot_0: ; CODE XREF: reboot+14j seg000:2E2F jmp far ptr 0FFFFh:0 seg000:2E2F reboot endp seg000:2E2F seg000:2E34 seg000:2E34 ; --------------- S U B R O U T I N E --------------------------------------- seg000:2E34 seg000:2E34 ; Attributes: bp-based frame seg000:2E34 seg000:2E34 display proc near ; CODE XREF: do_main_menu:loc_3FFp seg000:2E34 ; do_main_menu+8Fp ... seg000:2E34 seg000:2E34 temp_off = word ptr -10h seg000:2E34 temp_seg = word ptr -0Eh seg000:2E34 col = word ptr -0Ch seg000:2E34 insert_count = word ptr -0Ah seg000:2E34 attribute_ptr = word ptr -8 seg000:2E34 attribute_ptr_2 = word ptr -6 seg000:2E34 row = word ptr -4 seg000:2E34 attribute = word ptr -2 seg000:2E34 _s_ = byte ptr 4 seg000:2E34 seg000:2E34 push bp seg000:2E35 mov bp, sp seg000:2E37 sub sp, 18 seg000:2E3A lea ax, [bp+attribute] seg000:2E3D mov [bp+attribute_ptr], ax seg000:2E40 mov [bp+attribute_ptr_2], ss seg000:2E43 sub ax, ax seg000:2E45 mov [bp+row], ax seg000:2E48 mov [bp+col], ax seg000:2E4B mov [bp+insert_count], ax seg000:2E4E les bx, dword ptr [bp+_s_] seg000:2E51 cmp byte ptr es:[bx], 0 seg000:2E55 jnz short display_1 seg000:2E57 mov ds:insert, '1' seg000:2E5C push ds:debug_msg_seg seg000:2E60 push ds:debug_msg_off seg000:2E64 call display seg000:2E67 pop bx seg000:2E68 pop bx seg000:2E69 jmp display_43 seg000:2E6C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2E6C seg000:2E6C display_1: ; CODE XREF: display+21j seg000:2E6C cmp ds:status_flag, 1 seg000:2E71 jnz short display_2 seg000:2E73 mov al, ds:video_attribute seg000:2E76 mov byte ptr [bp+attribute], al seg000:2E79 jmp short display_3 seg000:2E7B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2E7B seg000:2E7B display_2: ; CODE XREF: display+3Dj seg000:2E7B mov byte ptr [bp+attribute], 0 seg000:2E7F seg000:2E7F display_3: ; CODE XREF: display+45j seg000:2E7F ; display+AAj ... seg000:2E7F les bx, dword ptr [bp+_s_] seg000:2E82 cmp byte ptr es:[bx], 0 seg000:2E86 jnz short display_4 seg000:2E88 jmp display_43 seg000:2E8B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2E8B seg000:2E8B display_4: ; CODE XREF: display+52j seg000:2E8B mov al, es:[bx] seg000:2E8E cbw seg000:2E8F sub ax, 6 seg000:2E92 jnz short sc_default seg000:2E94 jmp display_36 seg000:2E97 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2E97 seg000:2E97 sc_default: ; CODE XREF: display+5Ej seg000:2E97 sub ax, '6' seg000:2E9A jz short display_7 seg000:2E9C cmp ds:mono_flag, 0 seg000:2EA1 jnz short display_5 seg000:2EA3 cmp byte ptr [bp+attribute], 0 seg000:2EA7 jnz short display_5 seg000:2EA9 mov byte ptr [bp+attribute], 17h seg000:2EAD seg000:2EAD display_5: ; CODE XREF: display+6Dj seg000:2EAD ; display+73j seg000:2EAD cmp ds:mono_flag, 1 seg000:2EB2 jnz short display_6 seg000:2EB4 cmp byte ptr [bp+attribute], 0 seg000:2EB8 jnz short display_6 seg000:2EBA mov byte ptr [bp+attribute], 7 seg000:2EBE seg000:2EBE display_6: ; CODE XREF: display+7Ej seg000:2EBE ; display+84j seg000:2EBE push es seg000:2EBF push bx seg000:2EC0 inc word ptr [bp+_s_] seg000:2EC3 mov ax, 1 seg000:2EC6 push ax seg000:2EC7 push [bp+row] seg000:2ECA push [bp+col] seg000:2ECD inc [bp+col] seg000:2ED0 push [bp+attribute_ptr_2] seg000:2ED3 push [bp+attribute_ptr] seg000:2ED6 sub ax, ax seg000:2ED8 push ax seg000:2ED9 call VIOWRTCHARSTRATT seg000:2EDE jmp short display_3 seg000:2EE0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2EE0 seg000:2EE0 display_7: ; CODE XREF: display+66j seg000:2EE0 inc word ptr [bp+_s_] seg000:2EE3 seg000:2EE3 sc_break: ; CODE XREF: display+127j seg000:2EE3 ; display+14Aj ... seg000:2EE3 les bx, dword ptr [bp+_s_] seg000:2EE6 cmp byte ptr es:[bx], '>' seg000:2EEA jnz short display_8 seg000:2EEC jmp display_35 seg000:2EEF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2EEF seg000:2EEF display_8: ; CODE XREF: display+B6j seg000:2EEF cmp byte ptr es:[bx], 0 seg000:2EF3 jnz short display_9 seg000:2EF5 jmp display_35 seg000:2EF8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2EF8 seg000:2EF8 display_9: ; CODE XREF: display+BFj seg000:2EF8 mov [bp+temp_off], bx seg000:2EFB mov [bp+temp_seg], es seg000:2EFE inc word ptr [bp+_s_] seg000:2F01 mov al, es:[bx] seg000:2F04 cbw seg000:2F05 cmp ax, 'Y' seg000:2F08 jnz short display_10 seg000:2F0A jmp case_Y seg000:2F0D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F0D seg000:2F0D display_10: ; CODE XREF: display+D4j seg000:2F0D ja short display_17 seg000:2F0F or al, al seg000:2F11 jnz short display_11 seg000:2F13 jmp case_0 seg000:2F16 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F16 seg000:2F16 display_11: ; CODE XREF: display+DDj seg000:2F16 sub al, 'B' seg000:2F18 jnz short display_12 seg000:2F1A jmp display_25 seg000:2F1D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F1D seg000:2F1D display_12: ; CODE XREF: display+E4j seg000:2F1D dec al seg000:2F1F jnz short display_13 seg000:2F21 jmp case_C seg000:2F24 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F24 seg000:2F24 display_13: ; CODE XREF: display+EBj seg000:2F24 sub al, 5 seg000:2F26 jz short case_H seg000:2F28 dec al seg000:2F2A jnz short display_14 seg000:2F2C jmp case_I seg000:2F2F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F2F seg000:2F2F display_14: ; CODE XREF: display+F6j seg000:2F2F sub al, 5 seg000:2F31 jnz short display_15 seg000:2F33 jmp case_N seg000:2F36 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F36 seg000:2F36 display_15: ; CODE XREF: display+FDj seg000:2F36 dec al seg000:2F38 jz short display_26 seg000:2F3A sub al, 3 seg000:2F3C jz short display_23 seg000:2F3E dec al seg000:2F40 jnz short display_16 seg000:2F42 jmp case_S seg000:2F45 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F45 seg000:2F45 display_16: ; CODE XREF: display+10Cj seg000:2F45 sub al, 4 seg000:2F47 jz short case_W seg000:2F49 seg000:2F49 display_17: ; CODE XREF: display:display_10j seg000:2F49 mov ds:insert, '6' seg000:2F4E seg000:2F4E display_18: ; CODE XREF: display+269j seg000:2F4E push ds:debug_msg_seg seg000:2F52 push ds:debug_msg_off seg000:2F56 call display seg000:2F59 pop bx seg000:2F5A pop bx seg000:2F5B jmp short sc_break seg000:2F5D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F5D seg000:2F5D case_H: ; CODE XREF: display+F2j seg000:2F5D cmp ds:status_flag, 0 seg000:2F62 jnz short display_22 seg000:2F64 cmp ds:mono_flag, 1 seg000:2F69 jnz short display_20 seg000:2F6B mov al, byte ptr [bp+attribute] seg000:2F6E and al, 8Fh seg000:2F70 or al, 0Fh seg000:2F72 jmp short display_21 seg000:2F74 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F74 seg000:2F74 display_20: ; CODE XREF: display+135j seg000:2F74 mov al, byte ptr [bp+attribute] seg000:2F77 and al, 9Fh seg000:2F79 or al, 1Fh seg000:2F7B seg000:2F7B display_21: ; CODE XREF: display+13Ej seg000:2F7B ; display+156j ... seg000:2F7B mov byte ptr [bp+attribute], al seg000:2F7E jmp sc_break seg000:2F81 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F81 seg000:2F81 display_22: ; CODE XREF: display+12Ej seg000:2F81 ; display+15Dj seg000:2F81 mov al, byte ptr [bp+attribute] seg000:2F84 and al, 80h seg000:2F86 or al, ds:video_attribute seg000:2F8A jmp short display_21 seg000:2F8C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2F8C seg000:2F8C display_23: ; CODE XREF: display+108j seg000:2F8C cmp ds:status_flag, 0 seg000:2F91 jnz short display_22 seg000:2F93 cmp ds:mono_flag, 1 seg000:2F98 jnz short display_24 seg000:2F9A mov al, byte ptr [bp+attribute] seg000:2F9D and al, 87h seg000:2F9F or al, 7 seg000:2FA1 jmp short display_21 seg000:2FA3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2FA3 seg000:2FA3 display_24: ; CODE XREF: display+164j seg000:2FA3 mov al, byte ptr [bp+attribute] seg000:2FA6 and al, 97h seg000:2FA8 or al, 17h seg000:2FAA jmp short display_21 seg000:2FAC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2FAC seg000:2FAC display_25: ; CODE XREF: display+E6j seg000:2FAC or byte ptr [bp+attribute], 80h seg000:2FB0 jmp sc_break seg000:2FB3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2FB3 seg000:2FB3 display_26: ; CODE XREF: display+104j seg000:2FB3 and byte ptr [bp+attribute], 7Fh seg000:2FB7 jmp sc_break seg000:2FBA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2FBA seg000:2FBA case_W: ; CODE XREF: display+113j seg000:2FBA mov ax, 900 seg000:2FBD push ax seg000:2FBE mov ax, 400 seg000:2FC1 push ax seg000:2FC2 call DOSBEEP seg000:2FC7 jmp sc_break seg000:2FCA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2FCA seg000:2FCA case_I: ; CODE XREF: display+F8j seg000:2FCA cmp ds:status_flag, 1 seg000:2FCF jnz short display_27 seg000:2FD1 mov al, ds:video_attribute seg000:2FD4 mov byte ptr [bp+attribute], al seg000:2FD7 jmp short display_29 seg000:2FD9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:2FD9 seg000:2FD9 display_27: ; CODE XREF: display+19Bj seg000:2FD9 cmp ds:mono_flag, 1 seg000:2FDE jnz short display_28 seg000:2FE0 cmp byte ptr [bp+attribute], 0 seg000:2FE4 jnz short display_28 seg000:2FE6 mov byte ptr [bp+attribute], 7 seg000:2FEA seg000:2FEA display_28: ; CODE XREF: display+1AAj seg000:2FEA ; display+1B0j seg000:2FEA cmp ds:mono_flag, 0 seg000:2FEF jnz short display_29 seg000:2FF1 cmp byte ptr [bp+attribute], 0 seg000:2FF5 jnz short display_29 seg000:2FF7 mov byte ptr [bp+attribute], 17h seg000:2FFB seg000:2FFB display_29: ; CODE XREF: display+1A3j seg000:2FFB ; display+1BBj ... seg000:2FFB mov ax, [bp+insert_count] seg000:2FFE inc [bp+insert_count] seg000:3001 add ax, ds:pinsert seg000:3005 jmp short display_34 seg000:3007 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3007 seg000:3007 case_Y: ; CODE XREF: display+D6j seg000:3007 cmp ds:mono_flag, 1 seg000:300C jnz short display_30 seg000:300E cmp byte ptr [bp+attribute], 0 seg000:3012 jnz short display_30 seg000:3014 mov byte ptr [bp+attribute], 7 seg000:3018 seg000:3018 display_30: ; CODE XREF: display+1D8j seg000:3018 ; display+1DEj seg000:3018 cmp ds:mono_flag, 0 seg000:301D jnz short display_31 seg000:301F cmp byte ptr [bp+attribute], 0 seg000:3023 jnz short display_31 seg000:3025 mov byte ptr [bp+attribute], 17h seg000:3029 seg000:3029 display_31: ; CODE XREF: display+1E9j seg000:3029 ; display+1EFj seg000:3029 mov ax, offset Yes seg000:302C jmp short display_34 seg000:302E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:302E seg000:302E case_N: ; CODE XREF: display+FFj seg000:302E cmp ds:mono_flag, 1 seg000:3033 jnz short display_32 seg000:3035 cmp byte ptr [bp+attribute], 0 seg000:3039 jnz short display_32 seg000:303B mov byte ptr [bp+attribute], 7 seg000:303F seg000:303F display_32: ; CODE XREF: display+1FFj seg000:303F ; display+205j seg000:303F cmp ds:mono_flag, 0 seg000:3044 jnz short display_33 seg000:3046 cmp byte ptr [bp+attribute], 0 seg000:304A jnz short display_33 seg000:304C mov byte ptr [bp+attribute], 17h seg000:3050 seg000:3050 display_33: ; CODE XREF: display+210j seg000:3050 ; display+216j seg000:3050 mov ax, offset No seg000:3053 seg000:3053 display_34: ; CODE XREF: display+1D1j seg000:3053 ; display+1F8j seg000:3053 push ds seg000:3054 push ax seg000:3055 mov ax, 1 seg000:3058 push ax seg000:3059 push [bp+row] seg000:305C push [bp+col] seg000:305F inc [bp+col] seg000:3062 push [bp+attribute_ptr_2] seg000:3065 push [bp+attribute_ptr] seg000:3068 sub ax, ax seg000:306A push ax seg000:306B call VIOWRTCHARSTRATT seg000:3070 jmp sc_break seg000:3073 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3073 seg000:3073 case_S: ; CODE XREF: display+10Ej seg000:3073 mov ax, [bp+row] seg000:3076 mov ds:input_row, ax seg000:3079 mov ax, [bp+col] seg000:307C mov ds:input_col, ax seg000:307F jmp sc_break seg000:3082 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3082 seg000:3082 case_C: ; CODE XREF: display+EDj seg000:3082 mov ax, 79 seg000:3085 push ax seg000:3086 push [bp+row] seg000:3089 push [bp+col] seg000:308C push [bp+row] seg000:308F call clear_screen seg000:3092 add sp, 8 seg000:3095 jmp sc_break seg000:3098 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3098 seg000:3098 case_0: ; CODE XREF: display+DFj seg000:3098 mov ds:insert, '7' seg000:309D jmp display_18 seg000:30A0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:30A0 seg000:30A0 display_35: ; CODE XREF: display+B8j seg000:30A0 ; display+C1j seg000:30A0 inc word ptr [bp+_s_] seg000:30A3 jmp display_3 seg000:30A6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:30A6 seg000:30A6 display_36: ; CODE XREF: display+60j seg000:30A6 inc word ptr [bp+_s_] seg000:30A9 mov bx, word ptr [bp+_s_] seg000:30AC mov al, es:[bx] seg000:30AF cbw seg000:30B0 mov bx, ax seg000:30B2 test ds:isdigit[bx], 4 seg000:30B7 jz short display_37 seg000:30B9 mov bx, word ptr [bp+_s_] seg000:30BC inc word ptr [bp+_s_] seg000:30BF mov al, 10 seg000:30C1 imul byte ptr es:[bx] seg000:30C4 sub ax, 1E0h seg000:30C7 add [bp+row], ax seg000:30CA mov bx, word ptr [bp+_s_] seg000:30CD mov al, es:[bx] seg000:30D0 cbw seg000:30D1 mov bx, ax seg000:30D3 test ds:isdigit[bx], 4 seg000:30D8 jnz short display_38 seg000:30DA seg000:30DA display_37: ; CODE XREF: display+283j seg000:30DA mov ds:insert, '2' seg000:30DF jmp short display_40 seg000:30E1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:30E1 seg000:30E1 display_38: ; CODE XREF: display+2A4j seg000:30E1 mov bx, word ptr [bp+_s_] seg000:30E4 inc word ptr [bp+_s_] seg000:30E7 mov al, es:[bx] seg000:30EA cbw seg000:30EB sub ax, '0' seg000:30EE add [bp+row], ax seg000:30F1 mov bx, word ptr [bp+_s_] seg000:30F4 mov al, es:[bx] seg000:30F7 cbw seg000:30F8 mov bx, ax seg000:30FA test ds:isdigit[bx], 4 seg000:30FF jz short display_39 seg000:3101 mov bx, word ptr [bp+_s_] seg000:3104 inc word ptr [bp+_s_] seg000:3107 mov al, es:[bx] seg000:310A cbw seg000:310B sub ax, '0' seg000:310E mov [bp+col], ax seg000:3111 mov bx, word ptr [bp+_s_] seg000:3114 mov al, es:[bx] seg000:3117 cbw seg000:3118 mov bx, ax seg000:311A test ds:isdigit[bx], 4 seg000:311F jnz short display_41 seg000:3121 seg000:3121 display_39: ; CODE XREF: display+2CBj seg000:3121 mov ds:insert, '3' seg000:3126 seg000:3126 display_40: ; CODE XREF: display+2ABj seg000:3126 ; display+330j seg000:3126 push ds:debug_msg_seg seg000:312A push ds:debug_msg_off seg000:312E call display seg000:3131 pop bx seg000:3132 pop bx seg000:3133 jmp display_3 seg000:3136 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3136 seg000:3136 display_41: ; CODE XREF: display+2EBj seg000:3136 mov ax, 10 seg000:3139 mul [bp+col] seg000:313C mov bx, word ptr [bp+_s_] seg000:313F inc word ptr [bp+_s_] seg000:3142 mov cx, ax seg000:3144 mov al, es:[bx] seg000:3147 cbw seg000:3148 add cx, ax seg000:314A sub cx, '0' seg000:314D mov [bp+col], cx seg000:3150 mov bx, word ptr [bp+_s_] seg000:3153 inc word ptr [bp+_s_] seg000:3156 cmp byte ptr es:[bx], 6 seg000:315A jnz short display_42 seg000:315C jmp display_3 seg000:315F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:315F seg000:315F display_42: ; CODE XREF: display+326j seg000:315F mov ds:insert, '4' seg000:3164 jmp short display_40 seg000:3166 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3166 seg000:3166 display_43: ; CODE XREF: display+35j seg000:3166 ; display+54j seg000:3166 mov sp, bp seg000:3168 pop bp seg000:3169 retn seg000:3169 display endp seg000:3169 seg000:316A seg000:316A ; --------------- S U B R O U T I N E --------------------------------------- seg000:316A seg000:316A ; Attributes: bp-based frame seg000:316A seg000:316A number_in_msg proc near ; CODE XREF: change_active_partition+164p seg000:316A ; display_partition_information+50p ... seg000:316A seg000:316A numinmsg_mb = word ptr -20h seg000:316A numinmsg_mb2 = byte ptr -1Eh seg000:316A numinmsg_mb3 = byte ptr -1Dh seg000:316A numinmsg_num = word ptr 4 seg000:316A numinmsg_start = byte ptr 6 seg000:316A seg000:316A push bp seg000:316B mov bp, sp seg000:316D sub sp, 32 seg000:3170 push [bp+numinmsg_num] seg000:3173 mov ax, offset numinmsg_format ; "%4.1d" seg000:3176 push ax seg000:3177 lea ax, [bp+numinmsg_mb] seg000:317A push ax seg000:317B call sprintf seg000:317E mov al, byte ptr [bp+numinmsg_mb] seg000:3181 mov bx, word ptr [bp+numinmsg_start] seg000:3184 mov ds:insert[bx], al seg000:3188 mov al, byte ptr [bp+numinmsg_mb+1] seg000:318B mov ds:(insert+1)[bx], al seg000:318F mov al, [bp+numinmsg_mb2] seg000:3192 mov ds:(insert+2)[bx], al seg000:3196 mov al, [bp+numinmsg_mb3] seg000:3199 mov ds:(insert+3)[bx], al seg000:319D mov sp, bp seg000:319F pop bp seg000:31A0 retn seg000:31A0 number_in_msg endp seg000:31A0 seg000:31A1 seg000:31A1 ; --------------- S U B R O U T I N E --------------------------------------- seg000:31A1 seg000:31A1 ; Attributes: bp-based frame seg000:31A1 seg000:31A1 percent_in_msg proc near seg000:31A1 seg000:31A1 var_20 = word ptr -20h seg000:31A1 var_1E = byte ptr -1Eh seg000:31A1 var_1D = byte ptr -1Dh seg000:31A1 arg_0 = word ptr 4 seg000:31A1 arg_2 = word ptr 6 seg000:31A1 seg000:31A1 push bp seg000:31A2 mov bp, sp seg000:31A4 sub sp, 20h seg000:31A7 push [bp+arg_0] seg000:31AA mov ax, offset a3_1d_1 ; "%3.1d%%" seg000:31AD push ax seg000:31AE lea ax, [bp+var_20] seg000:31B1 push ax seg000:31B2 call sprintf seg000:31B5 mov al, byte ptr [bp+var_20] seg000:31B8 mov bx, [bp+arg_2] seg000:31BB mov ds:insert[bx], al seg000:31BF mov al, byte ptr [bp+var_20+1] seg000:31C2 mov ds:(insert+1)[bx], al seg000:31C6 mov al, [bp+var_1E] seg000:31C9 mov ds:(insert+2)[bx], al seg000:31CD mov al, [bp+var_1D] seg000:31D0 mov ds:(insert+3)[bx], al seg000:31D4 mov sp, bp seg000:31D6 pop bp seg000:31D7 retn seg000:31D7 percent_in_msg endp seg000:31D7 seg000:31D8 seg000:31D8 ; --------------- S U B R O U T I N E --------------------------------------- seg000:31D8 seg000:31D8 ; Attributes: bp-based frame seg000:31D8 seg000:31D8 string_in_msg proc near seg000:31D8 seg000:31D8 var_2 = word ptr -2 seg000:31D8 arg_0 = dword ptr 4 seg000:31D8 arg_4 = word ptr 8 seg000:31D8 seg000:31D8 push bp seg000:31D9 mov bp, sp seg000:31DB sub sp, 2 seg000:31DE push si seg000:31DF mov [bp+var_2], 0 seg000:31E4 seg000:31E4 strinmsg_0: ; CODE XREF: string_in_msg+1Ej seg000:31E4 mov si, [bp+arg_4] seg000:31E7 mov bx, [bp+var_2] seg000:31EA mov ds:insert[bx+si], ' ' seg000:31EF inc [bp+var_2] seg000:31F2 cmp [bp+var_2], 8 seg000:31F6 jb short strinmsg_0 seg000:31F8 les bx, [bp+arg_0] seg000:31FB mov al, es:[bx] seg000:31FE mov si, [bp+arg_4] seg000:3201 mov ds:insert[si], al seg000:3205 mov al, es:[bx+1] seg000:3209 mov ds:(insert+1)[si], al seg000:320D mov al, es:[bx+2] seg000:3211 mov ds:(insert+2)[si], al seg000:3215 mov al, es:[bx+3] seg000:3219 mov ds:(insert+3)[si], al seg000:321D mov al, es:[bx+4] seg000:3221 mov ds:(insert+4)[si], al seg000:3225 mov al, es:[bx+5] seg000:3229 mov ds:(insert+5)[si], al seg000:322D mov al, es:[bx+6] seg000:3231 mov ds:(insert+6)[si], al seg000:3235 mov al, es:[bx+7] seg000:3239 mov ds:(insert+7)[si], al seg000:323D pop si seg000:323E mov sp, bp seg000:3240 pop bp seg000:3241 retn seg000:3241 string_in_msg endp seg000:3241 seg000:3242 seg000:3242 ; --------------- S U B R O U T I N E --------------------------------------- seg000:3242 seg000:3242 ; Attributes: bp-based frame seg000:3242 seg000:3242 volume_in_msg proc near seg000:3242 seg000:3242 var_2 = word ptr -2 seg000:3242 arg_0 = dword ptr 4 seg000:3242 arg_4 = word ptr 8 seg000:3242 seg000:3242 push bp seg000:3243 mov bp, sp seg000:3245 sub sp, 2 seg000:3248 push si seg000:3249 mov [bp+var_2], 0 seg000:324E seg000:324E volinmsg_0: ; CODE XREF: volume_in_msg+1Ej seg000:324E mov si, [bp+var_2] seg000:3251 mov bx, [bp+arg_4] seg000:3254 mov ds:insert[bx+si], ' ' seg000:3259 inc [bp+var_2] seg000:325C cmp [bp+var_2], 11 seg000:3260 jb short volinmsg_0 seg000:3262 les bx, [bp+arg_0] seg000:3265 mov al, es:[bx] seg000:3268 mov si, [bp+arg_4] seg000:326B mov ds:insert[si], al seg000:326F mov al, es:[bx+1] seg000:3273 mov ds:(insert+1)[si], al seg000:3277 mov al, es:[bx+2] seg000:327B mov ds:(insert+2)[si], al seg000:327F mov al, es:[bx+3] seg000:3283 mov ds:(insert+3)[si], al seg000:3287 mov al, es:[bx+4] seg000:328B mov ds:(insert+4)[si], al seg000:328F mov al, es:[bx+5] seg000:3293 mov ds:(insert+5)[si], al seg000:3297 mov al, es:[bx+6] seg000:329B mov ds:(insert+6)[si], al seg000:329F mov al, es:[bx+7] seg000:32A3 mov ds:(insert+7)[si], al seg000:32A7 mov al, es:[bx+8] seg000:32AB mov ds:(insert+8)[si], al seg000:32AF mov al, es:[bx+9] seg000:32B3 mov ds:(insert+9)[si], al seg000:32B7 mov al, es:[bx+10] seg000:32BB mov ds:(insert+0Ah)[si], al seg000:32BF pop si seg000:32C0 mov sp, bp seg000:32C2 pop bp seg000:32C3 retn seg000:32C3 volume_in_msg endp seg000:32C3 seg000:32C4 seg000:32C4 ; --------------- S U B R O U T I N E --------------------------------------- seg000:32C4 seg000:32C4 ; Attributes: bp-based frame seg000:32C4 seg000:32C4 get_num_input proc near ; CODE XREF: do_main_menu+168p seg000:32C4 ; delete_partition+D8p ... seg000:32C4 seg000:32C4 input_value = byte ptr -10h seg000:32C4 gni_attr_ptr = word ptr -0Eh seg000:32C4 gni_attr_ptr_2 = word ptr -0Ch seg000:32C4 default_used = byte ptr -0Ah seg000:32C4 gni_input_ptr = word ptr -8 seg000:32C4 gni_input_ptr_2 = word ptr -6 seg000:32C4 gni_attribute = word ptr -4 seg000:32C4 gni_input = word ptr -2 seg000:32C4 input_default = byte ptr 4 seg000:32C4 gni_max_num = byte ptr 6 seg000:32C4 gni_row = word ptr 8 seg000:32C4 gni_col = byte ptr 0Ah seg000:32C4 seg000:32C4 push bp seg000:32C5 mov bp, sp seg000:32C7 sub sp, 16 seg000:32CA mov [bp+default_used], 0 seg000:32CE lea ax, [bp+gni_attribute] seg000:32D1 mov [bp+gni_attr_ptr], ax seg000:32D4 mov [bp+gni_attr_ptr_2], ss seg000:32D7 lea cx, [bp+gni_input] seg000:32DA mov [bp+gni_input_ptr], cx seg000:32DD mov [bp+gni_input_ptr_2], ss seg000:32E0 cmp ds:mono_flag, 1 seg000:32E5 jnz short gni_1 seg000:32E7 mov byte ptr [bp+gni_attribute], 0Fh seg000:32EB jmp short gni_2 seg000:32ED ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:32ED seg000:32ED gni_1: ; CODE XREF: get_num_input+21j seg000:32ED mov byte ptr [bp+gni_attribute], 1Fh seg000:32F1 seg000:32F1 gni_2: ; CODE XREF: get_num_input+27j seg000:32F1 cmp [bp+input_default], 0 seg000:32F5 jz short gni_3 seg000:32F7 mov [bp+default_used], 1 seg000:32FB push [bp+gni_row] seg000:32FE push word ptr [bp+gni_col] seg000:3301 sub ax, ax seg000:3303 push ax seg000:3304 call VIOSETCURPOS seg000:3309 mov al, [bp+input_default] seg000:330C add al, '0' seg000:330E mov byte ptr [bp+gni_input], al seg000:3311 push [bp+gni_input_ptr_2] seg000:3314 push [bp+gni_input_ptr] seg000:3317 mov ax, 1 seg000:331A push ax seg000:331B push [bp+gni_row] seg000:331E push word ptr [bp+gni_col] seg000:3321 push [bp+gni_attr_ptr_2] seg000:3324 push [bp+gni_attr_ptr] seg000:3327 sub ax, ax seg000:3329 push ax seg000:332A call VIOWRTCHARSTRATT seg000:332F seg000:332F gni_3: ; CODE XREF: get_num_input+31j seg000:332F mov ds:valid_input, 0 seg000:3334 seg000:3334 gni_4: ; CODE XREF: get_num_input+1E6j seg000:3334 push [bp+gni_row] seg000:3337 push word ptr [bp+gni_col] seg000:333A sub ax, ax seg000:333C push ax seg000:333D call VIOSETCURPOS seg000:3342 call get_char_input seg000:3345 mov byte ptr [bp+gni_input], al seg000:3348 push ax seg000:3349 call dos_upper seg000:334C pop bx seg000:334D mov byte ptr [bp+gni_input], al seg000:3350 seg000:3350 switch_gni_input: seg000:3350 cbw seg000:3351 sub ax, 0Dh seg000:3354 jz short case_gni_CR seg000:3356 sub ax, 0Eh seg000:3359 jz short case_gni_ESC seg000:335B mov al, byte ptr [bp+gni_input] seg000:335E cbw seg000:335F mov bx, ax seg000:3361 test ds:isdigit[bx], 4 seg000:3366 jz short gni_not_digit seg000:3368 mov al, [bp+gni_max_num] seg000:336B cbw seg000:336C add ax, '0' seg000:336F cmp ax, bx seg000:3371 jl short gni_not_digit seg000:3373 cmp byte ptr [bp+gni_input], '0' seg000:3377 jnz short gni_5 seg000:3379 seg000:3379 gni_not_digit: ; CODE XREF: get_num_input+A2j seg000:3379 ; get_num_input+ADj seg000:3379 jmp gni_11 seg000:337C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:337C seg000:337C gni_5: ; CODE XREF: get_num_input+B3j seg000:337C mov ax, 79 seg000:337F push ax seg000:3380 mov ax, 23 seg000:3383 push ax seg000:3384 sub cx, cx seg000:3386 push cx seg000:3387 push ax seg000:3388 call clear_screen seg000:338B add sp, 8 seg000:338E jmp gni_14 seg000:3391 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3391 seg000:3391 case_gni_ESC: ; CODE XREF: get_num_input+95j seg000:3391 mov ds:valid_input, 1 seg000:3396 jmp case_gni_break seg000:3399 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3399 seg000:3399 case_gni_CR: ; CODE XREF: get_num_input+90j seg000:3399 cmp [bp+default_used], 0 seg000:339D jz short gni_7 seg000:339F cmp [bp+input_default], 0 seg000:33A3 jz short gni_6 seg000:33A5 mov al, [bp+input_default] seg000:33A8 add al, '0' seg000:33AA mov [bp+input_value], al seg000:33AD jmp short gni_7 seg000:33AF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:33AF seg000:33AF gni_6: ; CODE XREF: get_num_input+DFj seg000:33AF mov [bp+input_value], ' ' seg000:33B3 seg000:33B3 gni_7: ; CODE XREF: get_num_input+D9j seg000:33B3 ; get_num_input+E9j seg000:33B3 mov al, [bp+input_value] seg000:33B6 cbw seg000:33B7 mov bx, ax seg000:33B9 test ds:isdigit[bx], 4 seg000:33BE jz short gni_8 seg000:33C0 mov al, [bp+gni_max_num] seg000:33C3 cbw seg000:33C4 add ax, '0' seg000:33C7 cmp ax, bx seg000:33C9 jl short gni_8 seg000:33CB cmp [bp+input_value], '0' seg000:33CF jz short gni_8 seg000:33D1 mov ds:valid_input, 1 seg000:33D6 mov al, [bp+input_value] seg000:33D9 mov byte ptr [bp+gni_input], al seg000:33DC jmp case_gni_break seg000:33DF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:33DF seg000:33DF gni_8: ; CODE XREF: get_num_input+FAj seg000:33DF ; get_num_input+105j ... seg000:33DF mov al, [bp+input_value] seg000:33E2 cbw seg000:33E3 mov bx, ax seg000:33E5 test ds:isdigit[bx], 4 seg000:33EA jz short gni_9 seg000:33EC mov ds:insert, al seg000:33EF mov ds:insert+1, '1' seg000:33F4 mov ds:insert+2, '-' seg000:33F9 mov al, [bp+gni_max_num] seg000:33FC add al, '0' seg000:33FE mov ds:insert+3, al seg000:3401 push ds:error_23_seg seg000:3405 push ds:error_23_off seg000:3409 jmp short gni_10 seg000:340B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:340B seg000:340B gni_9: ; CODE XREF: get_num_input+126j seg000:340B mov ds:insert, '1' seg000:3410 mov ds:insert+1, '-' seg000:3415 mov al, [bp+gni_max_num] seg000:3418 add al, '0' seg000:341A mov ds:insert+2, al seg000:341D push ds:error_31_seg seg000:3421 push ds:error_31_off seg000:3425 seg000:3425 gni_10: ; CODE XREF: get_num_input+145j seg000:3425 call display seg000:3428 pop bx seg000:3429 pop bx seg000:342A jmp short case_gni_break seg000:342C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:342C seg000:342C gni_11: ; CODE XREF: get_num_input:gni_not_digitj seg000:342C mov al, byte ptr [bp+gni_input] seg000:342F cbw seg000:3430 mov bx, ax seg000:3432 test ds:isdigit[bx], 4 seg000:3437 jz short gni_12 seg000:3439 mov ds:insert, al seg000:343C mov ds:insert+1, '1' seg000:3441 mov ds:insert+2, '-' seg000:3446 mov al, [bp+gni_max_num] seg000:3449 add al, '0' seg000:344B mov ds:insert+3, al seg000:344E push ds:error_23_seg seg000:3452 push ds:error_23_off seg000:3456 jmp short gni_13 seg000:3458 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3458 seg000:3458 gni_12: ; CODE XREF: get_num_input+173j seg000:3458 mov ds:insert, '1' seg000:345D mov ds:insert+1, '-' seg000:3462 mov al, [bp+gni_max_num] seg000:3465 add al, '0' seg000:3467 mov ds:insert+2, al seg000:346A push ds:error_31_seg seg000:346E push ds:error_31_off seg000:3472 seg000:3472 gni_13: ; CODE XREF: get_num_input+192j seg000:3472 call display seg000:3475 pop bx seg000:3476 pop bx seg000:3477 mov byte ptr [bp+gni_input], ' ' seg000:347B seg000:347B gni_14: ; CODE XREF: get_num_input+CAj seg000:347B push [bp+gni_input_ptr_2] seg000:347E push [bp+gni_input_ptr] seg000:3481 mov ax, 1 seg000:3484 push ax seg000:3485 push [bp+gni_row] seg000:3488 push word ptr [bp+gni_col] seg000:348B push [bp+gni_attr_ptr_2] seg000:348E push [bp+gni_attr_ptr] seg000:3491 sub ax, ax seg000:3493 push ax seg000:3494 call VIOWRTCHARSTRATT seg000:3499 mov [bp+default_used], 0 seg000:349D mov al, byte ptr [bp+gni_input] seg000:34A0 mov [bp+input_value], al seg000:34A3 seg000:34A3 case_gni_break: ; CODE XREF: get_num_input+D2j seg000:34A3 ; get_num_input+118j ... seg000:34A3 cmp ds:valid_input, 0 seg000:34A8 jnz short gni_15 seg000:34AA jmp gni_4 seg000:34AD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:34AD seg000:34AD gni_15: ; CODE XREF: get_num_input+1E4j seg000:34AD mov al, byte ptr [bp+gni_input] seg000:34B0 mov sp, bp seg000:34B2 pop bp seg000:34B3 retn seg000:34B3 get_num_input endp seg000:34B3 seg000:34B4 seg000:34B4 ; --------------- S U B R O U T I N E --------------------------------------- seg000:34B4 seg000:34B4 ; Attributes: bp-based frame seg000:34B4 seg000:34B4 get_yn_input proc near ; CODE XREF: dos_delete+220p seg000:34B4 ; ext_delete+94p ... seg000:34B4 seg000:34B4 gyn_input_val = byte ptr -10h seg000:34B4 gyn_attr_ptr = word ptr -0Eh seg000:34B4 gyn_attr_ptr_2 = word ptr -0Ch seg000:34B4 gyn_def_used = byte ptr -0Ah seg000:34B4 gyn_input_ptr = word ptr -8 seg000:34B4 gyn_input_ptr_2 = word ptr -6 seg000:34B4 gyn_attribute = word ptr -4 seg000:34B4 gyn_input = word ptr -2 seg000:34B4 gyn_input_def = byte ptr 4 seg000:34B4 gyn_row = word ptr 6 seg000:34B4 gyn_column = byte ptr 8 seg000:34B4 seg000:34B4 push bp seg000:34B5 mov bp, sp seg000:34B7 sub sp, 16 seg000:34BA lea ax, [bp+gyn_attribute] seg000:34BD mov [bp+gyn_attr_ptr], ax seg000:34C0 mov [bp+gyn_attr_ptr_2], ss seg000:34C3 lea cx, [bp+gyn_input] seg000:34C6 mov [bp+gyn_input_ptr], cx seg000:34C9 mov [bp+gyn_input_ptr_2], ss seg000:34CC cmp ds:mono_flag, 1 seg000:34D1 jnz short gyni_1 seg000:34D3 mov byte ptr [bp+gyn_attribute], 0Fh seg000:34D7 jmp short gyni_2 seg000:34D9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:34D9 seg000:34D9 gyni_1: ; CODE XREF: get_yn_input+1Dj seg000:34D9 mov byte ptr [bp+gyn_attribute], 1Fh seg000:34DD seg000:34DD gyni_2: ; CODE XREF: get_yn_input+23j seg000:34DD cmp [bp+gyn_input_def], 0 seg000:34E1 jz short gyni_3 seg000:34E3 mov [bp+gyn_def_used], 1 seg000:34E7 push [bp+gyn_row] seg000:34EA push word ptr [bp+gyn_column] seg000:34ED sub ax, ax seg000:34EF push ax seg000:34F0 call VIOSETCURPOS seg000:34F5 mov al, [bp+gyn_input_def] seg000:34F8 mov byte ptr [bp+gyn_input], al seg000:34FB push [bp+gyn_input_ptr_2] seg000:34FE push [bp+gyn_input_ptr] seg000:3501 mov ax, 1 seg000:3504 push ax seg000:3505 push [bp+gyn_row] seg000:3508 push word ptr [bp+gyn_column] seg000:350B push [bp+gyn_attr_ptr_2] seg000:350E push [bp+gyn_attr_ptr] seg000:3511 sub ax, ax seg000:3513 push ax seg000:3514 call VIOWRTCHARSTRATT seg000:3519 seg000:3519 gyni_3: ; CODE XREF: get_yn_input+2Dj seg000:3519 mov ds:valid_input, 0 seg000:351E seg000:351E gyni_4: ; CODE XREF: get_yn_input+15Fj seg000:351E push [bp+gyn_row] seg000:3521 push word ptr [bp+gyn_column] seg000:3524 sub ax, ax seg000:3526 push ax seg000:3527 call VIOSETCURPOS seg000:352C call get_char_input seg000:352F mov byte ptr [bp+gyn_input], al seg000:3532 push ax seg000:3533 call dos_upper seg000:3536 pop bx seg000:3537 mov byte ptr [bp+gyn_input], al seg000:353A seg000:353A switch_input11: seg000:353A cbw seg000:353B sub ax, 0Dh seg000:353E jz short case_gyni_CR seg000:3540 sub ax, 0Eh seg000:3543 jz short case_gyni_ESC seg000:3545 seg000:3545 case_gyni_DEF: seg000:3545 mov al, byte ptr [bp+gyn_input] seg000:3548 push ax seg000:3549 call check_yn_input seg000:354C pop bx seg000:354D dec al seg000:354F jz short gyni_7 seg000:3551 mov al, byte ptr [bp+gyn_input] seg000:3554 push ax seg000:3555 call check_yn_input seg000:3558 pop bx seg000:3559 or al, al seg000:355B jnz short gyni_13 seg000:355D seg000:355D gyni_7: ; CODE XREF: get_yn_input+9Bj seg000:355D mov ax, 79 seg000:3560 push ax seg000:3561 mov ax, 23 seg000:3564 push ax seg000:3565 sub cx, cx seg000:3567 push cx seg000:3568 push ax seg000:3569 call clear_screen seg000:356C add sp, 8 seg000:356F jmp short gyni_14 seg000:3571 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3571 seg000:3571 case_gyni_CR: ; CODE XREF: get_yn_input+8Aj seg000:3571 cmp [bp+gyn_def_used], 0 seg000:3575 jz short gyni_10 seg000:3577 cmp [bp+gyn_input_def], 0 seg000:357B jz short gyni_9 seg000:357D mov al, [bp+gyn_input_def] seg000:3580 mov [bp+gyn_input_val], al seg000:3583 jmp short gyni_10 seg000:3585 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3585 seg000:3585 gyni_9: ; CODE XREF: get_yn_input+C7j seg000:3585 call internal_program_error seg000:3588 seg000:3588 gyni_10: ; CODE XREF: get_yn_input+C1j seg000:3588 ; get_yn_input+CFj seg000:3588 mov al, [bp+gyn_input_val] seg000:358B push ax seg000:358C call check_yn_input seg000:358F pop bx seg000:3590 mov byte ptr [bp+gyn_input], al seg000:3593 cmp al, 1 seg000:3595 jz short case_gyni_ESC seg000:3597 or al, al seg000:3599 jnz short gyni_12 seg000:359B seg000:359B case_gyni_ESC: ; CODE XREF: get_yn_input+8Fj seg000:359B ; get_yn_input+E1j seg000:359B mov ds:valid_input, 1 seg000:35A0 jmp short gyni_15 seg000:35A2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:35A2 seg000:35A2 gyni_12: ; CODE XREF: get_yn_input+E5j seg000:35A2 mov al, ds:Yes seg000:35A5 mov ds:insert, al seg000:35A8 mov ds:insert+1, '-' seg000:35AD mov al, byte ptr ds:No seg000:35B0 mov ds:insert+2, al seg000:35B3 push ds:error_31_seg seg000:35B7 push ds:error_31_off seg000:35BB call display seg000:35BE pop bx seg000:35BF pop bx seg000:35C0 jmp short gyni_15 seg000:35C2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:35C2 seg000:35C2 gyni_13: ; CODE XREF: get_yn_input+A7j seg000:35C2 mov al, ds:Yes seg000:35C5 mov ds:insert, al seg000:35C8 mov ds:insert+1, '-' seg000:35CD mov al, byte ptr ds:No seg000:35D0 mov ds:insert+2, al seg000:35D3 push ds:error_31_seg seg000:35D7 push ds:error_31_off seg000:35DB call display seg000:35DE pop bx seg000:35DF pop bx seg000:35E0 mov byte ptr [bp+gyn_input], ' ' seg000:35E4 seg000:35E4 gyni_14: ; CODE XREF: get_yn_input+BBj seg000:35E4 push [bp+gyn_input_ptr_2] seg000:35E7 push [bp+gyn_input_ptr] seg000:35EA mov ax, 1 seg000:35ED push ax seg000:35EE push [bp+gyn_row] seg000:35F1 push word ptr [bp+gyn_column] seg000:35F4 push [bp+gyn_attr_ptr_2] seg000:35F7 push [bp+gyn_attr_ptr] seg000:35FA sub ax, ax seg000:35FC push ax seg000:35FD call VIOWRTCHARSTRATT seg000:3602 mov [bp+gyn_def_used], 0 seg000:3606 mov al, byte ptr [bp+gyn_input] seg000:3609 mov [bp+gyn_input_val], al seg000:360C seg000:360C gyni_15: ; CODE XREF: get_yn_input+ECj seg000:360C ; get_yn_input+10Cj seg000:360C cmp ds:valid_input, 0 seg000:3611 jnz short gyni_16 seg000:3613 jmp gyni_4 seg000:3616 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3616 seg000:3616 gyni_16: ; CODE XREF: get_yn_input+15Dj seg000:3616 mov al, byte ptr [bp+gyn_input] seg000:3619 mov sp, bp seg000:361B pop bp seg000:361C retn seg000:361C get_yn_input endp seg000:361C seg000:361D seg000:361D ; --------------- S U B R O U T I N E --------------------------------------- seg000:361D seg000:361D ; Attributes: bp-based frame seg000:361D seg000:361D wait_for_ESC proc near ; CODE XREF: delete_partition+1DBp seg000:361D ; dos_delete+26Fp ... seg000:361D seg000:361D wfesc_input = byte ptr -2 seg000:361D seg000:361D push bp seg000:361E mov bp, sp seg000:3620 sub sp, 2 seg000:3623 mov ax, 79 seg000:3626 push ax seg000:3627 mov ax, 24 seg000:362A push ax seg000:362B sub cx, cx seg000:362D push cx seg000:362E push ax seg000:362F call clear_screen seg000:3632 add sp, 8 seg000:3635 push ds:menu_46_segment seg000:3639 push ds:menu_46_offset seg000:363D call display seg000:3640 pop bx seg000:3641 pop bx seg000:3642 jmp short wfesc_2 seg000:3644 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3644 seg000:3644 wfesc_1: ; CODE XREF: wait_for_ESC+41j seg000:3644 push ds:input_row seg000:3648 push ds:input_col seg000:364C sub ax, ax seg000:364E push ax seg000:364F call VIOSETCURPOS seg000:3654 call get_char_input seg000:3657 mov [bp+wfesc_input], al seg000:365A seg000:365A wfesc_2: ; CODE XREF: wait_for_ESC+25j seg000:365A cmp [bp+wfesc_input], 1Bh seg000:365E jnz short wfesc_1 seg000:3660 mov al, 1Bh seg000:3662 mov sp, bp seg000:3664 pop bp seg000:3665 retn seg000:3665 wait_for_ESC endp seg000:3665 seg000:3666 seg000:3666 ; --------------- S U B R O U T I N E --------------------------------------- seg000:3666 seg000:3666 ; Attributes: bp-based frame seg000:3666 seg000:3666 get_large_num_input proc near ; CODE XREF: input_dos_create+12Ap seg000:3666 ; ext_create_partition+184p ... seg000:3666 seg000:3666 large_input = word ptr -8 seg000:3666 glni_enter_flag = byte ptr -6 seg000:3666 glni_def_used = byte ptr -4 seg000:3666 glni_input = byte ptr -2 seg000:3666 glni_input_def = word ptr 4 seg000:3666 glni_max_num = word ptr 6 seg000:3666 glni_max_pc = word ptr 8 seg000:3666 glni_input_msg = word ptr 0Ah seg000:3666 glni_input_msg_seg= word ptr 0Ch seg000:3666 glni_prompt_loc = word ptr 0Eh seg000:3666 glni_err_msg = word ptr 10h seg000:3666 glni_err_msg_seg= word ptr 12h seg000:3666 seg000:3666 push bp seg000:3667 mov bp, sp seg000:3669 sub sp, 8 seg000:366C mov [bp+glni_def_used], 1 seg000:3670 sub al, al seg000:3672 mov ds:valid_input, al seg000:3675 mov [bp+glni_enter_flag], al seg000:3678 mov [bp+large_input], 0 seg000:367D jmp glni_29 seg000:3680 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3680 seg000:3680 glni_1: ; CODE XREF: get_large_num_input+1DCj seg000:3680 push ds:input_row seg000:3684 push ds:input_col seg000:3688 sub ax, ax seg000:368A push ax seg000:368B call VIOSETCURPOS seg000:3690 call get_char_input seg000:3693 mov [bp+glni_input], al seg000:3696 seg000:3696 switch_input12: seg000:3696 cbw seg000:3697 sub ax, 8 seg000:369A jnz short glni_3 seg000:369C jmp case_gln_backspace seg000:369F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:369F seg000:369F glni_3: ; CODE XREF: get_large_num_input+34j seg000:369F sub ax, 5 seg000:36A2 jz short case_gln_CR seg000:36A4 sub ax, 0Eh seg000:36A7 jz short case_gln_ESC seg000:36A9 sub ax, 0Ah seg000:36AC jnz short glni_4 seg000:36AE jmp case_gln_percent seg000:36B1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:36B1 seg000:36B1 glni_4: ; CODE XREF: get_large_num_input+46j seg000:36B1 sub ax, 11 seg000:36B4 jl short case_gln_default seg000:36B6 sub ax, 9 seg000:36B9 jg short case_gln_default seg000:36BB jmp case_gln_dec_digits seg000:36BE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:36BE seg000:36BE case_gln_default: ; CODE XREF: get_large_num_input+4Ej seg000:36BE ; get_large_num_input+53j seg000:36BE cmp ds:PercentFlag, 0 seg000:36C3 jnz short glni_6 seg000:36C5 cmp [bp+large_input], 1000 seg000:36CA jb short glni_7 seg000:36CC seg000:36CC glni_6: ; CODE XREF: get_large_num_input+5Dj seg000:36CC jmp glni_27 seg000:36CF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:36CF seg000:36CF glni_7: ; CODE XREF: get_large_num_input+64j seg000:36CF mov ds:insert, '0' seg000:36D4 mov ds:insert+1, '-' seg000:36D9 mov ds:insert+2, '9' seg000:36DE push ds:error_31_seg seg000:36E2 push ds:error_31_off seg000:36E6 jmp glni_28 seg000:36E9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:36E9 seg000:36E9 case_gln_ESC: ; CODE XREF: get_large_num_input+41j seg000:36E9 mov ds:valid_input, 1 seg000:36EE mov [bp+large_input], 0FFFEh seg000:36F3 jmp glni_29 seg000:36F6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:36F6 seg000:36F6 case_gln_CR: ; CODE XREF: get_large_num_input+3Cj seg000:36F6 cmp ds:PercentFlag, 0 seg000:36FB jz short glni_15 seg000:36FD cmp [bp+glni_input_def], 0 seg000:3701 jz short glini_10 seg000:3703 cmp [bp+glni_def_used], 0 seg000:3707 jz short glini_10 seg000:3709 mov ax, [bp+glni_input_def] seg000:370C mov [bp+large_input], ax seg000:370F seg000:370F glini_10: ; CODE XREF: get_large_num_input+9Bj seg000:370F ; get_large_num_input+A1j seg000:370F mov ax, [bp+glni_max_pc] seg000:3712 cmp [bp+large_input], ax seg000:3715 ja short glni_12 seg000:3717 cmp [bp+large_input], 0 seg000:371B jz short glni_17 seg000:371D seg000:371D glni_11: ; CODE XREF: get_large_num_input+EEj seg000:371D mov ds:valid_input, 1 seg000:3722 jmp short glni_14 seg000:3724 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3724 seg000:3724 glni_12: ; CODE XREF: get_large_num_input+AFj seg000:3724 ; get_large_num_input+E8j seg000:3724 push [bp+glni_err_msg_seg] seg000:3727 push [bp+glni_err_msg] seg000:372A seg000:372A glni_13: ; CODE XREF: get_large_num_input+F8j seg000:372A call display seg000:372D pop bx seg000:372E pop bx seg000:372F seg000:372F glni_14: ; CODE XREF: get_large_num_input+BCj seg000:372F mov [bp+glni_enter_flag], 1 seg000:3733 jmp glni_29 seg000:3736 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3736 seg000:3736 glni_15: ; CODE XREF: get_large_num_input+95j seg000:3736 cmp [bp+glni_input_def], 0 seg000:373A jz short glni_16 seg000:373C cmp [bp+glni_def_used], 0 seg000:3740 jz short glni_16 seg000:3742 mov ax, [bp+glni_input_def] seg000:3745 mov [bp+large_input], ax seg000:3748 seg000:3748 glni_16: ; CODE XREF: get_large_num_input+D4j seg000:3748 ; get_large_num_input+DAj seg000:3748 mov ax, [bp+glni_max_num] seg000:374B cmp [bp+large_input], ax seg000:374E ja short glni_12 seg000:3750 cmp [bp+large_input], 0 seg000:3754 jnz short glni_11 seg000:3756 seg000:3756 glni_17: ; CODE XREF: get_large_num_input+B5j seg000:3756 push ds:error_28_seg seg000:375A push ds:error_28_off seg000:375E jmp short glni_13 seg000:3760 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3760 seg000:3760 case_gln_backspace: ; CODE XREF: get_large_num_input+36j seg000:3760 cmp ds:PercentFlag, 0 seg000:3765 jz short glni_19 seg000:3767 mov ds:PercentFlag, 0 seg000:376C jmp short glni_20 seg000:376E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:376E seg000:376E glni_19: ; CODE XREF: get_large_num_input+FFj seg000:376E mov cx, 10 seg000:3771 mov ax, [bp+large_input] seg000:3774 sub dx, dx seg000:3776 div cx seg000:3778 mov [bp+large_input], ax seg000:377B seg000:377B glni_20: ; CODE XREF: get_large_num_input+106j seg000:377B mov [bp+glni_def_used], 0 seg000:377F push [bp+large_input] seg000:3782 mov ax, offset glni_num_format ; "%4.1d" seg000:3785 push ax seg000:3786 mov ax, [bp+glni_prompt_loc] seg000:3789 add ax, offset insert seg000:378C push ax seg000:378D call sprintf seg000:3790 add sp, 6 seg000:3793 jmp short glni_24 seg000:3795 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3795 seg000:3795 case_gln_percent: ; CODE XREF: get_large_num_input+48j seg000:3795 cmp ds:PercentFlag, 0 seg000:379A jz short glni_22 seg000:379C jmp glni_27 seg000:379F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:379F seg000:379F glni_22: ; CODE XREF: get_large_num_input+134j seg000:379F mov ds:PercentFlag, 1 seg000:37A4 cmp [bp+large_input], 999 seg000:37A9 jbe short glni_23 seg000:37AB mov cx, 1000 seg000:37AE mov ax, [bp+large_input] seg000:37B1 sub dx, dx seg000:37B3 div cx seg000:37B5 mov [bp+large_input], dx seg000:37B8 seg000:37B8 glni_23: ; CODE XREF: get_large_num_input+143j seg000:37B8 push [bp+large_input] seg000:37BB mov ax, offset percent_format ; "%3.1d%%" seg000:37BE push ax seg000:37BF mov ax, [bp+glni_prompt_loc] seg000:37C2 add ax, offset insert seg000:37C5 push ax seg000:37C6 call sprintf seg000:37C9 add sp, 6 seg000:37CC mov [bp+glni_def_used], 0 seg000:37D0 seg000:37D0 glni_24: ; CODE XREF: get_large_num_input+12Dj seg000:37D0 push [bp+glni_input_msg_seg] seg000:37D3 push [bp+glni_input_msg] seg000:37D6 jmp short glni_28 seg000:37D8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:37D8 seg000:37D8 case_gln_dec_digits: ; CODE XREF: get_large_num_input+55j seg000:37D8 cmp [bp+glni_enter_flag], 1 seg000:37DC jnz short glni_26 seg000:37DE mov [bp+large_input], 0 seg000:37E3 sub al, al seg000:37E5 mov [bp+glni_def_used], al seg000:37E8 mov ds:PercentFlag, al seg000:37EB mov [bp+glni_enter_flag], al seg000:37EE seg000:37EE glni_26: ; CODE XREF: get_large_num_input+176j seg000:37EE cmp ds:PercentFlag, 0 seg000:37F3 jnz short glni_27 seg000:37F5 cmp [bp+large_input], 1000 seg000:37FA jnb short glni_27 seg000:37FC push [bp+glni_prompt_loc] seg000:37FF mov al, [bp+glni_input] seg000:3802 cbw seg000:3803 mov cx, ax seg000:3805 mov ax, 10 seg000:3808 mul [bp+large_input] seg000:380B add ax, cx seg000:380D sub ax, '0' seg000:3810 mov [bp+large_input], ax seg000:3813 push ax seg000:3814 call number_in_msg seg000:3817 pop bx seg000:3818 pop bx seg000:3819 push [bp+glni_input_msg_seg] seg000:381C push [bp+glni_input_msg] seg000:381F call display seg000:3822 pop bx seg000:3823 pop bx seg000:3824 sub al, al seg000:3826 mov [bp+glni_def_used], al seg000:3829 mov ds:PercentFlag, al seg000:382C jmp short glni_29 seg000:382E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:382E seg000:382E glni_27: ; CODE XREF: get_large_num_input:glni_6j seg000:382E ; get_large_num_input+136j ... seg000:382E push ds:error_33_seg seg000:3832 push ds:error_33_off seg000:3836 seg000:3836 glni_28: ; CODE XREF: get_large_num_input+80j seg000:3836 ; get_large_num_input+170j seg000:3836 call display seg000:3839 pop bx seg000:383A pop bx seg000:383B seg000:383B glni_29: ; CODE XREF: get_large_num_input+17j seg000:383B ; get_large_num_input+8Dj ... seg000:383B cmp ds:valid_input, 0 seg000:3840 jnz short glni_30 seg000:3842 jmp glni_1 seg000:3845 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3845 seg000:3845 glni_30: ; CODE XREF: get_large_num_input+1DAj seg000:3845 mov ax, [bp+large_input] seg000:3848 mov sp, bp seg000:384A pop bp seg000:384B retn seg000:384B get_large_num_input endp seg000:384B seg000:384C seg000:384C ; --------------- S U B R O U T I N E --------------------------------------- seg000:384C seg000:384C ; Attributes: bp-based frame seg000:384C seg000:384C get_alpha_input proc near ; CODE XREF: volume_delete+14Dp seg000:384C seg000:384C gai_input_value = byte ptr -10h seg000:384C gai_attributeptr= word ptr -0Eh seg000:384C gai_attributeptr2= word ptr -0Ch seg000:384C gai_default_used= byte ptr -0Ah seg000:384C gai_input_ptr = word ptr -8 seg000:384C gai_input_ptr2 = word ptr -6 seg000:384C gai_attribute = word ptr -4 seg000:384C gai_input = word ptr -2 seg000:384C ga_i_low_letter = byte ptr 4 seg000:384C ga_i_high_letter= byte ptr 6 seg000:384C ga_i_row = word ptr 8 seg000:384C ga_i_col = word ptr 0Ah seg000:384C ga_i_err_low_lett= byte ptr 0Ch seg000:384C ga_i_err_high_lett= byte ptr 0Eh seg000:384C seg000:384C push bp seg000:384D mov bp, sp seg000:384F sub sp, 16 seg000:3852 lea ax, [bp+gai_attribute] seg000:3855 mov [bp+gai_attributeptr], ax seg000:3858 mov [bp+gai_attributeptr2], ss seg000:385B lea cx, [bp+gai_input] seg000:385E mov [bp+gai_input_ptr], cx seg000:3861 mov [bp+gai_input_ptr2], ss seg000:3864 cmp ds:mono_flag, 1 seg000:3869 jnz short gai_1 seg000:386B mov byte ptr [bp+gai_attribute], 0Fh seg000:386F jmp short gai_2 seg000:3871 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3871 seg000:3871 gai_1: ; CODE XREF: get_alpha_input+1Dj seg000:3871 mov byte ptr [bp+gai_attribute], 1Fh seg000:3875 seg000:3875 gai_2: ; CODE XREF: get_alpha_input+23j seg000:3875 sub al, al seg000:3877 mov ds:valid_input, al seg000:387A seg000:387A gai_3: ; CODE XREF: get_alpha_input+198j seg000:387A mov [bp+gai_input_value], al seg000:387D seg000:387D gai_4: ; CODE XREF: get_alpha_input+A3j seg000:387D ; get_alpha_input+123j seg000:387D cmp ds:valid_input, 0 seg000:3882 jz short gai_5 seg000:3884 jmp gai_17 seg000:3887 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3887 seg000:3887 gai_5: ; CODE XREF: get_alpha_input+36j seg000:3887 push [bp+ga_i_row] seg000:388A push [bp+ga_i_col] seg000:388D sub ax, ax seg000:388F push ax seg000:3890 call VIOSETCURPOS seg000:3895 call get_char_input seg000:3898 mov byte ptr [bp+gai_input], al seg000:389B push ax seg000:389C call dos_upper seg000:389F pop bx seg000:38A0 mov byte ptr [bp+gai_input], al seg000:38A3 cbw seg000:38A4 sub ax, 0Dh seg000:38A7 jz short gai_9 seg000:38A9 sub ax, 0Eh seg000:38AC jz short gai_8 seg000:38AE mov al, byte ptr [bp+gai_input] seg000:38B1 cbw seg000:38B2 mov bx, ax seg000:38B4 test ds:isdigit[bx], 3 seg000:38B9 jz short gai_6 seg000:38BB push ax seg000:38BC call dos_upper seg000:38BF pop bx seg000:38C0 cmp al, [bp+ga_i_low_letter] seg000:38C3 jl short gai_6 seg000:38C5 mov al, byte ptr [bp+gai_input] seg000:38C8 push ax seg000:38C9 call dos_upper seg000:38CC pop bx seg000:38CD cmp al, [bp+ga_i_high_letter] seg000:38D0 jle short gai_7 seg000:38D2 seg000:38D2 gai_6: ; CODE XREF: get_alpha_input+6Dj seg000:38D2 ; get_alpha_input+77j seg000:38D2 jmp gai_13 seg000:38D5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:38D5 seg000:38D5 gai_7: ; CODE XREF: get_alpha_input+84j seg000:38D5 mov ax, 79 seg000:38D8 push ax seg000:38D9 mov ax, 23 seg000:38DC push ax seg000:38DD sub cx, cx seg000:38DF push cx seg000:38E0 push ax seg000:38E1 call clear_screen seg000:38E4 add sp, 8 seg000:38E7 jmp gai_16 seg000:38EA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:38EA seg000:38EA gai_8: ; CODE XREF: get_alpha_input+60j seg000:38EA ; get_alpha_input+D5j seg000:38EA mov ds:valid_input, 1 seg000:38EF jmp short gai_4 seg000:38F1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:38F1 seg000:38F1 gai_9: ; CODE XREF: get_alpha_input+5Bj seg000:38F1 mov al, [bp+gai_input_value] seg000:38F4 push ax seg000:38F5 call dos_upper seg000:38F8 pop bx seg000:38F9 mov byte ptr [bp+gai_input], al seg000:38FC cbw seg000:38FD mov bx, ax seg000:38FF test ds:isdigit[bx], 3 seg000:3904 jz short gai_10 seg000:3906 mov al, [bp+ga_i_low_letter] seg000:3909 cmp byte ptr [bp+gai_input], al seg000:390C jl short gai_10 seg000:390E mov al, [bp+ga_i_high_letter] seg000:3911 cmp byte ptr [bp+gai_input], al seg000:3914 jg short gai_10 seg000:3916 mov al, [bp+gai_input_value] seg000:3919 cbw seg000:391A mov bx, ax seg000:391C test ds:isdigit[bx], 3 seg000:3921 jnz short gai_8 seg000:3923 seg000:3923 gai_10: ; CODE XREF: get_alpha_input+B8j seg000:3923 ; get_alpha_input+C0j ... seg000:3923 mov al, [bp+gai_input_value] seg000:3926 cbw seg000:3927 mov bx, ax seg000:3929 test ds:isdigit[bx], 3 seg000:392E jz short gai_11 seg000:3930 mov al, byte ptr [bp+gai_input] seg000:3933 mov ds:insert, al seg000:3936 mov al, [bp+ga_i_err_low_lett] seg000:3939 mov ds:insert+1, al seg000:393C mov ds:insert+2, '-' seg000:3941 mov al, [bp+ga_i_err_high_lett] seg000:3944 mov ds:insert+3, al seg000:3947 push ds:error_23_seg seg000:394B push ds:error_23_off seg000:394F jmp short gai_12 seg000:3951 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3951 seg000:3951 gai_11: ; CODE XREF: get_alpha_input+E2j seg000:3951 mov al, [bp+ga_i_err_low_lett] seg000:3954 mov ds:insert, al seg000:3957 mov ds:insert+1, '-' seg000:395C mov al, [bp+ga_i_err_high_lett] seg000:395F mov ds:insert+2, al seg000:3962 push ds:error_31_seg seg000:3966 push ds:error_31_off seg000:396A seg000:396A gai_12: ; CODE XREF: get_alpha_input+103j seg000:396A call display seg000:396D pop bx seg000:396E pop bx seg000:396F jmp gai_4 seg000:3972 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3972 seg000:3972 gai_13: ; CODE XREF: get_alpha_input:gai_6j seg000:3972 mov al, byte ptr [bp+gai_input] seg000:3975 cbw seg000:3976 mov bx, ax seg000:3978 test ds:isdigit[bx], 3 seg000:397D jz short gai_14 seg000:397F mov ds:insert, al seg000:3982 mov al, [bp+ga_i_err_low_lett] seg000:3985 mov ds:insert+1, al seg000:3988 mov ds:insert+2, '-' seg000:398D mov al, [bp+ga_i_err_high_lett] seg000:3990 mov ds:insert+3, al seg000:3993 push ds:error_23_seg seg000:3997 push ds:error_23_off seg000:399B jmp short gai_15 seg000:399D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:399D seg000:399D gai_14: ; CODE XREF: get_alpha_input+131j seg000:399D mov al, [bp+ga_i_err_low_lett] seg000:39A0 mov ds:insert, al seg000:39A3 mov ds:insert+1, '-' seg000:39A8 mov al, [bp+ga_i_err_high_lett] seg000:39AB mov ds:insert+2, al seg000:39AE push ds:error_31_seg seg000:39B2 push ds:error_31_off seg000:39B6 seg000:39B6 gai_15: ; CODE XREF: get_alpha_input+14Fj seg000:39B6 call display seg000:39B9 pop bx seg000:39BA pop bx seg000:39BB mov byte ptr [bp+gai_input], ' ' seg000:39BF seg000:39BF gai_16: ; CODE XREF: get_alpha_input+9Bj seg000:39BF push [bp+gai_input_ptr2] seg000:39C2 push [bp+gai_input_ptr] seg000:39C5 mov ax, 1 seg000:39C8 push ax seg000:39C9 push [bp+ga_i_row] seg000:39CC push [bp+ga_i_col] seg000:39CF push [bp+gai_attributeptr2] seg000:39D2 push [bp+gai_attributeptr] seg000:39D5 sub ax, ax seg000:39D7 push ax seg000:39D8 call VIOWRTCHARSTRATT seg000:39DD mov [bp+gai_default_used], 0 seg000:39E1 mov al, byte ptr [bp+gai_input] seg000:39E4 jmp gai_3 seg000:39E7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:39E7 seg000:39E7 gai_17: ; CODE XREF: get_alpha_input+38j seg000:39E7 mov al, byte ptr [bp+gai_input] seg000:39EA mov sp, bp seg000:39EC pop bp seg000:39ED retn seg000:39ED get_alpha_input endp seg000:39ED seg000:39EE seg000:39EE ; --------------- S U B R O U T I N E --------------------------------------- seg000:39EE seg000:39EE seg000:39EE get_char_input proc near ; CODE XREF: get_num_input+7Ep seg000:39EE ; get_yn_input+78p ... seg000:39EE mov byte ptr ds:regs_x_ax+1, 0Ch seg000:39F3 mov byte ptr ds:regs_x_ax, 7 seg000:39F8 mov ax, offset regs_x_ax seg000:39FB push ax seg000:39FC push ax seg000:39FD call intdos seg000:3A00 pop bx seg000:3A01 pop bx seg000:3A02 cmp byte ptr ds:regs_x_ax, 0 seg000:3A07 jnz short gci_1 seg000:3A09 mov ax, 900 seg000:3A0C push ax seg000:3A0D mov ax, 400 seg000:3A10 push ax seg000:3A11 call DOSBEEP seg000:3A16 seg000:3A16 gci_1: ; CODE XREF: get_char_input+19j seg000:3A16 mov al, byte ptr ds:regs_x_ax seg000:3A19 retn seg000:3A19 get_char_input endp seg000:3A19 seg000:3A1A seg000:3A1A ; --------------- S U B R O U T I N E --------------------------------------- seg000:3A1A seg000:3A1A ; Attributes: bp-based frame seg000:3A1A seg000:3A1A get_string_input proc near ; CODE XREF: dos_delete+1D7p seg000:3A1A ; volume_delete+1F7p seg000:3A1A seg000:3A1A gsi_col = word ptr -1Ah seg000:3A1A gsi_deleteptr = dword ptr -18h seg000:3A1A gsi_attribute_ptr= word ptr -14h seg000:3A1A gsi_attribute_ptr2= word ptr -12h seg000:3A1A gsi_row = word ptr -10h seg000:3A1A gsi_workingptr = dword ptr -0Eh seg000:3A1A gsi_done = byte ptr -0Ah seg000:3A1A gsi_input_ptr = word ptr -8 seg000:3A1A gsi_input_ptr2 = word ptr -6 seg000:3A1A gsi_attribute = word ptr -4 seg000:3A1A gsi_input = word ptr -2 seg000:3A1A gs_i_startrow = word ptr 4 seg000:3A1A gs_i_startcol = word ptr 6 seg000:3A1A gs_i_stringptr = dword ptr 8 seg000:3A1A seg000:3A1A push bp seg000:3A1B mov bp, sp seg000:3A1D sub sp, 26 seg000:3A20 lea ax, [bp+gsi_attribute] seg000:3A23 mov [bp+gsi_attribute_ptr], ax seg000:3A26 mov [bp+gsi_attribute_ptr2], ss seg000:3A29 lea cx, [bp+gsi_input] seg000:3A2C mov [bp+gsi_input_ptr], cx seg000:3A2F mov [bp+gsi_input_ptr2], ss seg000:3A32 cmp ds:mono_flag, 1 seg000:3A37 jnz short gsi_1 seg000:3A39 mov byte ptr [bp+gsi_attribute], 0Fh seg000:3A3D jmp short gsi_2 seg000:3A3F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3A3F seg000:3A3F gsi_1: ; CODE XREF: get_string_input+1Dj seg000:3A3F mov byte ptr [bp+gsi_attribute], 1Fh seg000:3A43 seg000:3A43 gsi_2: ; CODE XREF: get_string_input+23j seg000:3A43 mov ax, word ptr [bp+gs_i_stringptr] seg000:3A46 mov dx, word ptr [bp+gs_i_stringptr+2] seg000:3A49 mov word ptr [bp+gsi_workingptr], ax seg000:3A4C mov word ptr [bp+gsi_workingptr+2], dx seg000:3A4F mov ax, [bp+gs_i_startrow] seg000:3A52 mov [bp+gsi_row], ax seg000:3A55 mov cx, [bp+gs_i_startcol] seg000:3A58 mov [bp+gsi_col], cx seg000:3A5B push ax seg000:3A5C push cx seg000:3A5D jmp short gsi_4 seg000:3A5F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3A5F seg000:3A5F gsi_3: ; CODE XREF: get_string_input+7Aj seg000:3A5F push es seg000:3A60 push bx seg000:3A61 mov ax, 1 seg000:3A64 push ax seg000:3A65 push [bp+gsi_row] seg000:3A68 push [bp+gsi_col] seg000:3A6B push [bp+gsi_attribute_ptr2] seg000:3A6E push [bp+gsi_attribute_ptr] seg000:3A71 sub cx, cx seg000:3A73 push cx seg000:3A74 call VIOWRTCHARSTRATT seg000:3A79 inc word ptr [bp+gsi_workingptr] seg000:3A7C push [bp+gsi_row] seg000:3A7F inc [bp+gsi_col] seg000:3A82 push [bp+gsi_col] seg000:3A85 seg000:3A85 gsi_4: ; CODE XREF: get_string_input+43j seg000:3A85 sub ax, ax seg000:3A87 push ax seg000:3A88 call VIOSETCURPOS seg000:3A8D les bx, [bp+gsi_workingptr] seg000:3A90 cmp byte ptr es:[bx], 0 seg000:3A94 jnz short gsi_3 seg000:3A96 mov byte ptr ds:regs_x_ax+1, 0Ch seg000:3A9B mov byte ptr ds:regs_x_ax, 7 seg000:3AA0 mov ax, offset regs_x_ax seg000:3AA3 push ax seg000:3AA4 push ax seg000:3AA5 call intdos seg000:3AA8 pop bx seg000:3AA9 pop bx seg000:3AAA mov al, byte ptr ds:regs_x_ax seg000:3AAD mov byte ptr [bp+gsi_input], al seg000:3AB0 mov [bp+gsi_done], 0 seg000:3AB4 seg000:3AB4 gsi_5: ; CODE XREF: get_string_input+2FEj seg000:3AB4 cmp byte ptr [bp+gsi_input], 32 seg000:3AB8 jb short gsi_6 seg000:3ABA jmp gsi_26 seg000:3ABD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3ABD seg000:3ABD gsi_6: ; CODE XREF: get_string_input+9Ej seg000:3ABD mov al, byte ptr [bp+gsi_input] seg000:3AC0 sub ah, ah seg000:3AC2 cmp ax, 1Bh seg000:3AC5 jz short gsi_9 seg000:3AC7 jbe short gsi_7 seg000:3AC9 jmp gsi_29 seg000:3ACC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3ACC seg000:3ACC gsi_7: ; CODE XREF: get_string_input+ADj seg000:3ACC or al, al seg000:3ACE jnz short gsi_8 seg000:3AD0 jmp gsi_15 seg000:3AD3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3AD3 seg000:3AD3 gsi_8: ; CODE XREF: get_string_input+B4j seg000:3AD3 sub al, 8 seg000:3AD5 jz short gsi_11 seg000:3AD7 sub al, 5 seg000:3AD9 jz short gsi_10 seg000:3ADB jmp gsi_29 seg000:3ADE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3ADE seg000:3ADE gsi_9: ; CODE XREF: get_string_input+ABj seg000:3ADE mov [bp+gsi_done], 1 seg000:3AE2 les bx, [bp+gs_i_stringptr] seg000:3AE5 inc word ptr [bp+gs_i_stringptr] seg000:3AE8 mov byte ptr es:[bx], 1Bh seg000:3AEC les bx, [bp+gs_i_stringptr] seg000:3AEF inc word ptr [bp+gs_i_stringptr] seg000:3AF2 mov byte ptr es:[bx], 0 seg000:3AF6 jmp gsi_30 seg000:3AF9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3AF9 seg000:3AF9 gsi_10: ; CODE XREF: get_string_input+BFj seg000:3AF9 mov [bp+gsi_done], 1 seg000:3AFD jmp gsi_30 seg000:3B00 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3B00 seg000:3B00 gsi_11: ; CODE XREF: get_string_input+BBj seg000:3B00 mov ax, [bp+gs_i_startcol] seg000:3B03 cmp [bp+gsi_col], ax seg000:3B06 ja short gsi_12 seg000:3B08 jmp gsi_29 seg000:3B0B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3B0B seg000:3B0B gsi_12: ; CODE XREF: get_string_input+ECj seg000:3B0B push [bp+gsi_row] seg000:3B0E dec [bp+gsi_col] seg000:3B11 mov ax, [bp+gsi_col] seg000:3B14 push ax seg000:3B15 sub cx, cx seg000:3B17 push cx seg000:3B18 call VIOSETCURPOS seg000:3B1D mov byte ptr [bp+gsi_input], ' ' seg000:3B21 push [bp+gsi_input_ptr2] seg000:3B24 push [bp+gsi_input_ptr] seg000:3B27 mov ax, 1 seg000:3B2A push ax seg000:3B2B push [bp+gsi_row] seg000:3B2E push [bp+gsi_col] seg000:3B31 push [bp+gsi_attribute_ptr2] seg000:3B34 push [bp+gsi_attribute_ptr] seg000:3B37 sub ax, ax seg000:3B39 push ax seg000:3B3A call VIOWRTCHARSTRATT seg000:3B3F push [bp+gsi_row] seg000:3B42 push [bp+gsi_col] seg000:3B45 sub ax, ax seg000:3B47 push ax seg000:3B48 call VIOSETCURPOS seg000:3B4D dec word ptr [bp+gsi_workingptr] seg000:3B50 mov ax, word ptr [bp+gsi_workingptr] seg000:3B53 mov dx, word ptr [bp+gsi_workingptr+2] seg000:3B56 mov word ptr [bp+gsi_deleteptr], ax seg000:3B59 mov word ptr [bp+gsi_deleteptr+2], dx seg000:3B5C jmp short gsi_14 seg000:3B5E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3B5E seg000:3B5E gsi_13: ; CODE XREF: get_string_input+177j seg000:3B5E mov al, es:[bx+1] seg000:3B62 mov es:[bx], al seg000:3B65 push es seg000:3B66 push bx seg000:3B67 mov ax, 1 seg000:3B6A push ax seg000:3B6B push [bp+gsi_row] seg000:3B6E push [bp+gsi_col] seg000:3B71 push [bp+gsi_attribute_ptr2] seg000:3B74 push [bp+gsi_attribute_ptr] seg000:3B77 sub ax, ax seg000:3B79 push ax seg000:3B7A call VIOWRTCHARSTRATT seg000:3B7F mov ax, word ptr [bp+gsi_deleteptr] seg000:3B82 mov dx, word ptr [bp+gsi_deleteptr+2] seg000:3B85 inc ax seg000:3B86 mov word ptr [bp+gsi_deleteptr], ax seg000:3B89 seg000:3B89 gsi_14: ; CODE XREF: get_string_input+142j seg000:3B89 les bx, [bp+gsi_deleteptr] seg000:3B8C cmp byte ptr es:[bx+1], 0 seg000:3B91 jnz short gsi_13 seg000:3B93 mov byte ptr es:[bx], 0 seg000:3B97 mov byte ptr [bp+gsi_input], ' ' seg000:3B9B push [bp+gsi_input_ptr2] seg000:3B9E push [bp+gsi_input_ptr] seg000:3BA1 mov ax, 1 seg000:3BA4 push ax seg000:3BA5 push [bp+gsi_row] seg000:3BA8 add ax, [bp+gsi_col] seg000:3BAB push ax seg000:3BAC push [bp+gsi_attribute_ptr2] seg000:3BAF push [bp+gsi_attribute_ptr] seg000:3BB2 sub ax, ax seg000:3BB4 push ax seg000:3BB5 call VIOWRTCHARSTRATT seg000:3BBA jmp gsi_28 seg000:3BBD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3BBD seg000:3BBD gsi_15: ; CODE XREF: get_string_input+B6j seg000:3BBD mov byte ptr ds:regs_x_ax+1, 7 seg000:3BC2 mov ax, offset regs_x_ax seg000:3BC5 push ax seg000:3BC6 push ax seg000:3BC7 call intdos seg000:3BCA pop bx seg000:3BCB pop bx seg000:3BCC mov al, byte ptr ds:regs_x_ax seg000:3BCF mov byte ptr [bp+gsi_input], al seg000:3BD2 sub ah, ah seg000:3BD4 cmp ax, 79 seg000:3BD7 jz short gsi_19 seg000:3BD9 jbe short gsi_16 seg000:3BDB jmp gsi_29 seg000:3BDE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3BDE seg000:3BDE gsi_16: ; CODE XREF: get_string_input+1BFj seg000:3BDE sub al, 71 seg000:3BE0 jz short gsi_17 seg000:3BE2 sub al, 4 seg000:3BE4 jz short gsi_21 seg000:3BE6 sub al, 2 seg000:3BE8 jz short gsi_23 seg000:3BEA jmp gsi_29 seg000:3BED ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3BED seg000:3BED gsi_17: ; CODE XREF: get_string_input+1C6j seg000:3BED mov ax, word ptr [bp+gs_i_stringptr] seg000:3BF0 mov dx, word ptr [bp+gs_i_stringptr+2] seg000:3BF3 mov word ptr [bp+gsi_workingptr], ax seg000:3BF6 mov word ptr [bp+gsi_workingptr+2], dx seg000:3BF9 mov ax, [bp+gs_i_startrow] seg000:3BFC mov [bp+gsi_row], ax seg000:3BFF mov cx, [bp+gs_i_startcol] seg000:3C02 mov [bp+gsi_col], cx seg000:3C05 push ax seg000:3C06 push cx seg000:3C07 seg000:3C07 gsi_18: ; CODE XREF: get_string_input+248j seg000:3C07 sub ax, ax seg000:3C09 push ax seg000:3C0A call VIOSETCURPOS seg000:3C0F jmp gsi_30 seg000:3C12 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3C12 seg000:3C12 gsi_19: ; CODE XREF: get_string_input+1BDj seg000:3C12 ; get_string_input+218j seg000:3C12 les bx, [bp+gsi_workingptr] seg000:3C15 cmp byte ptr es:[bx], 0 seg000:3C19 jnz short gsi_20 seg000:3C1B jmp gsi_30 seg000:3C1E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3C1E seg000:3C1E gsi_20: ; CODE XREF: get_string_input+1FFj seg000:3C1E inc word ptr [bp+gsi_workingptr] seg000:3C21 push [bp+gsi_row] seg000:3C24 inc [bp+gsi_col] seg000:3C27 push [bp+gsi_col] seg000:3C2A sub ax, ax seg000:3C2C push ax seg000:3C2D call VIOSETCURPOS seg000:3C32 jmp short gsi_19 seg000:3C34 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3C34 seg000:3C34 gsi_21: ; CODE XREF: get_string_input+1CAj seg000:3C34 mov ax, [bp+gs_i_startcol] seg000:3C37 cmp [bp+gsi_col], ax seg000:3C3A ja short gsi_22 seg000:3C3C jmp gsi_29 seg000:3C3F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3C3F seg000:3C3F gsi_22: ; CODE XREF: get_string_input+220j seg000:3C3F dec word ptr [bp+gsi_workingptr] seg000:3C42 push [bp+gsi_row] seg000:3C45 dec [bp+gsi_col] seg000:3C48 jmp short gsi_25 seg000:3C4A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3C4A seg000:3C4A gsi_23: ; CODE XREF: get_string_input+1CEj seg000:3C4A les bx, [bp+gsi_workingptr] seg000:3C4D cmp byte ptr es:[bx], 0 seg000:3C51 jnz short gsi_24 seg000:3C53 jmp gsi_29 seg000:3C56 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3C56 seg000:3C56 gsi_24: ; CODE XREF: get_string_input+237j seg000:3C56 inc word ptr [bp+gsi_workingptr] seg000:3C59 push [bp+gsi_row] seg000:3C5C inc [bp+gsi_col] seg000:3C5F seg000:3C5F gsi_25: ; CODE XREF: get_string_input+22Ej seg000:3C5F ; get_string_input+2CDj seg000:3C5F push [bp+gsi_col] seg000:3C62 jmp short gsi_18 seg000:3C64 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3C64 seg000:3C64 gsi_26: ; CODE XREF: get_string_input+A0j seg000:3C64 mov al, byte ptr [bp+gsi_input] seg000:3C67 push ax seg000:3C68 call dos_upper seg000:3C6B pop bx seg000:3C6C mov byte ptr [bp+gsi_input], al seg000:3C6F sub ah, ah seg000:3C71 push ax seg000:3C72 mov ax, offset invstrchars ; ".\"/\\[]:|<>+=;," seg000:3C75 push ax seg000:3C76 call strchr seg000:3C79 pop bx seg000:3C7A pop bx seg000:3C7B or ax, ax seg000:3C7D jnz short gsi_29 seg000:3C7F mov ax, [bp+gs_i_startcol] seg000:3C82 add ax, 11 seg000:3C85 cmp ax, [bp+gsi_col] seg000:3C88 jbe short gsi_29 seg000:3C8A cmp byte ptr [bp+gsi_input], 3 seg000:3C8E jnz short gsi_27 seg000:3C90 mov ax, 900 seg000:3C93 push ax seg000:3C94 mov ax, 400 seg000:3C97 push ax seg000:3C98 call DOSBEEP seg000:3C9D mov byte ptr [bp+gsi_input], ' ' seg000:3CA1 seg000:3CA1 gsi_27: ; CODE XREF: get_string_input+274j seg000:3CA1 push [bp+gsi_input_ptr2] seg000:3CA4 push [bp+gsi_input_ptr] seg000:3CA7 mov ax, 1 seg000:3CAA push ax seg000:3CAB push [bp+gsi_row] seg000:3CAE push [bp+gsi_col] seg000:3CB1 push [bp+gsi_attribute_ptr2] seg000:3CB4 push [bp+gsi_attribute_ptr] seg000:3CB7 sub ax, ax seg000:3CB9 push ax seg000:3CBA call VIOWRTCHARSTRATT seg000:3CBF mov al, byte ptr [bp+gsi_input] seg000:3CC2 les bx, [bp+gsi_workingptr] seg000:3CC5 mov es:[bx], al seg000:3CC8 mov byte ptr es:[bx+1], 0 seg000:3CCD mov ax, [bp+gs_i_startcol] seg000:3CD0 add ax, 10 seg000:3CD3 cmp ax, [bp+gsi_col] seg000:3CD6 jbe short gsi_28 seg000:3CD8 inc [bp+gsi_col] seg000:3CDB lea ax, [bx+1] seg000:3CDE mov word ptr [bp+gsi_workingptr], ax seg000:3CE1 mov word ptr [bp+gsi_workingptr+2], es seg000:3CE4 seg000:3CE4 gsi_28: ; CODE XREF: get_string_input+1A0j seg000:3CE4 ; get_string_input+2BCj seg000:3CE4 push [bp+gsi_row] seg000:3CE7 jmp gsi_25 seg000:3CEA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3CEA seg000:3CEA gsi_29: ; CODE XREF: get_string_input+AFj seg000:3CEA ; get_string_input+C1j ... seg000:3CEA mov ax, 900 seg000:3CED push ax seg000:3CEE mov ax, 400 seg000:3CF1 push ax seg000:3CF2 call DOSBEEP seg000:3CF7 seg000:3CF7 gsi_30: ; CODE XREF: get_string_input+DCj seg000:3CF7 ; get_string_input+E3j ... seg000:3CF7 cmp [bp+gsi_done], 0 seg000:3CFB jnz short gsi_31 seg000:3CFD mov byte ptr ds:regs_x_ax+1, 7 seg000:3D02 mov ax, offset regs_x_ax seg000:3D05 push ax seg000:3D06 push ax seg000:3D07 call intdos seg000:3D0A pop bx seg000:3D0B pop bx seg000:3D0C mov al, byte ptr ds:regs_x_ax seg000:3D0F mov byte ptr [bp+gsi_input], al seg000:3D12 seg000:3D12 gsi_31: ; CODE XREF: get_string_input+2E1j seg000:3D12 cmp [bp+gsi_done], 0 seg000:3D16 jnz short gsi_32 seg000:3D18 jmp gsi_5 seg000:3D1B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3D1B seg000:3D1B gsi_32: ; CODE XREF: get_string_input+2FCj seg000:3D1B mov sp, bp seg000:3D1D pop bp seg000:3D1E retn seg000:3D1E get_string_input endp seg000:3D1E seg000:3D1E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3D1F align 2 seg000:3D20 seg000:3D20 ; --------------- S U B R O U T I N E --------------------------------------- seg000:3D20 seg000:3D20 ; Attributes: bp-based frame seg000:3D20 seg000:3D20 table_display proc near ; CODE XREF: dos_delete+4Bp seg000:3D20 ; dos_delete+245p ... seg000:3D20 seg000:3D20 td_i = word ptr -0Eh seg000:3D20 partition_num = byte ptr -0Ch seg000:3D20 td_io = word ptr -0Ah seg000:3D20 partition_found = byte ptr -8 seg000:3D20 ThisPartitionType= word ptr -6 seg000:3D20 ThisPartitionLetter= word ptr -4 seg000:3D20 seg000:3D20 push bp seg000:3D21 mov bp, sp seg000:3D23 sub sp, 14 seg000:3D26 push si seg000:3D27 mov ax, 152 seg000:3D2A push ax seg000:3D2B mov ax, ' ' seg000:3D2E push ax seg000:3D2F mov ax, offset insert seg000:3D32 push ax seg000:3D33 call memset seg000:3D36 add sp, 6 seg000:3D39 call get_letters seg000:3D3C mov al, 4 seg000:3D3E push ax seg000:3D3F call sort_part_table seg000:3D42 pop bx seg000:3D43 sub al, al seg000:3D45 mov [bp+partition_found], al seg000:3D48 mov [bp+partition_num], al seg000:3D4B sub ax, ax seg000:3D4D mov [bp+td_io], ax seg000:3D50 mov [bp+td_i], ax seg000:3D53 jmp td_16 seg000:3D56 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3D56 seg000:3D56 td_ptype_PRIDOS: ; CODE XREF: table_display+168j seg000:3D56 ; table_display+17Aj ... seg000:3D56 mov ax, ds:PRIDOS seg000:3D59 mov [bp+ThisPartitionType], ax seg000:3D5C mov al, ds:cur_disk seg000:3D5F cbw seg000:3D60 shl ax, 1 seg000:3D62 shl ax, 1 seg000:3D64 mov bx, [bp+td_i] seg000:3D67 mov cx, ax seg000:3D69 mov al, ds:sort[bx] seg000:3D6D cbw seg000:3D6E add ax, cx seg000:3D70 mov cx, 46 seg000:3D73 imul cx seg000:3D75 mov bx, ax seg000:3D77 cmp ds:part_table_drive_letter[bx], ' ' seg000:3D7C jnz short td_02 seg000:3D7E mov ax, ' ' seg000:3D81 jmp short td_03 seg000:3D83 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3D83 seg000:3D83 td_02: ; CODE XREF: table_display+5Cj seg000:3D83 mov ax, ':' seg000:3D86 seg000:3D86 td_03: ; CODE XREF: table_display+61j seg000:3D86 push ax seg000:3D87 mov al, ds:part_table_drive_letter[bx] seg000:3D8B cbw seg000:3D8C push ax seg000:3D8D mov ax, offset twochars ; "%c%c" seg000:3D90 push ax seg000:3D91 lea ax, [bp+ThisPartitionLetter] seg000:3D94 push ax seg000:3D95 call sprintf seg000:3D98 add sp, 8 seg000:3D9B seg000:3D9B td_04: ; CODE XREF: table_display+BEj seg000:3D9B mov al, ds:cur_disk seg000:3D9E cbw seg000:3D9F shl ax, 1 seg000:3DA1 shl ax, 1 seg000:3DA3 mov bx, [bp+td_i] seg000:3DA6 mov cx, ax seg000:3DA8 mov al, ds:sort[bx] seg000:3DAC cbw seg000:3DAD add ax, cx seg000:3DAF mov cx, 46 seg000:3DB2 imul cx seg000:3DB4 mov bx, ax seg000:3DB6 push ds:part_table_percent_used[bx] seg000:3DBA add bx, offset part_table_system seg000:3DBE push bx seg000:3DBF mov bx, ax seg000:3DC1 push ds:part_table_mbytes_used[bx] seg000:3DC5 add ax, offset part_table_vol_label seg000:3DC8 push ax seg000:3DC9 push [bp+ThisPartitionType] seg000:3DCC cmp ds:part_table_boot_ind[bx], 80h seg000:3DD1 jnz short td_13 seg000:3DD3 mov ax, 'A' seg000:3DD6 jmp short td_14 seg000:3DD8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DD8 seg000:3DD8 td_ptype_EXTENDED: ; CODE XREF: table_display+180j seg000:3DD8 mov ax, ds:EXTDOS seg000:3DDB seg000:3DDB td_06: ; CODE XREF: table_display+C3j seg000:3DDB ; table_display+C8j ... seg000:3DDB mov [bp+ThisPartitionType], ax seg000:3DDE jmp short td_04 seg000:3DE0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DE0 seg000:3DE0 td_ptype_TABLE: ; CODE XREF: table_display+1ACj seg000:3DE0 mov ax, ds:TABLE seg000:3DE3 jmp short td_06 seg000:3DE5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DE5 seg000:3DE5 td_ptype_XENIX: ; CODE XREF: table_display+16Ej seg000:3DE5 ; table_display+174j seg000:3DE5 mov ax, ds:XENIX seg000:3DE8 jmp short td_06 seg000:3DEA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DEA seg000:3DEA td_ptype_PCIX: ; CODE XREF: table_display+19Cj seg000:3DEA mov ax, ds:PCIX seg000:3DED jmp short td_06 seg000:3DEF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DEF seg000:3DEF td_ptype_HPFS: ; CODE XREF: table_display+18Cj seg000:3DEF mov ax, ds:HPFS seg000:3DF2 jmp short td_06 seg000:3DF4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DF4 seg000:3DF4 td_ptype_NOVELL: ; CODE XREF: table_display+194j seg000:3DF4 mov ax, ds:NOVELL seg000:3DF7 jmp short td_06 seg000:3DF9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DF9 seg000:3DF9 td_ptype_CPM: ; CODE XREF: table_display+1A4j seg000:3DF9 mov ax, ds:CPM seg000:3DFC jmp short td_06 seg000:3DFE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3DFE seg000:3DFE td_13: ; CODE XREF: table_display+B1j seg000:3DFE mov ax, ' ' seg000:3E01 seg000:3E01 td_14: ; CODE XREF: table_display+B6j seg000:3E01 push ax seg000:3E02 mov al, [bp+partition_num] seg000:3E05 cbw seg000:3E06 add ax, '1' seg000:3E09 push ax seg000:3E0A lea ax, [bp+ThisPartitionLetter] seg000:3E0D push ax seg000:3E0E mov ax, offset ptbl_row_format ; "%-2.2s%c%c%-7.7s%-11.11s%4.1d%-8.8s%3.1"... seg000:3E11 push ax seg000:3E12 mov ax, [bp+td_io] seg000:3E15 add ax, offset insert seg000:3E18 push ax seg000:3E19 call sprintf seg000:3E1C add sp, 20 seg000:3E1F add [bp+td_io], ax seg000:3E22 inc [bp+partition_num] seg000:3E25 seg000:3E25 td_15: ; CODE XREF: table_display+131j seg000:3E25 inc [bp+td_i] seg000:3E28 seg000:3E28 td_16: ; CODE XREF: table_display+33j seg000:3E28 cmp [bp+td_i], 4 seg000:3E2C jb short td_17 seg000:3E2E jmp td_29 seg000:3E31 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3E31 seg000:3E31 td_17: ; CODE XREF: table_display+10Cj seg000:3E31 mov al, ds:cur_disk seg000:3E34 cbw seg000:3E35 shl ax, 1 seg000:3E37 shl ax, 1 seg000:3E39 mov bx, [bp+td_i] seg000:3E3C mov cx, ax seg000:3E3E mov al, ds:sort[bx] seg000:3E42 cbw seg000:3E43 add ax, cx seg000:3E45 mov cx, 46 seg000:3E48 imul cx seg000:3E4A mov si, ax seg000:3E4C cmp ds:part_table_sys_id[si], 0 seg000:3E51 jz short td_15 seg000:3E53 mov [bp+partition_found], 1 seg000:3E57 mov ax, offset twospace ; " " seg000:3E5A push ax seg000:3E5B lea ax, [bp+ThisPartitionLetter] seg000:3E5E push ax seg000:3E5F call strcpy seg000:3E62 pop bx seg000:3E63 pop bx seg000:3E64 mov al, ds:cur_disk seg000:3E67 cbw seg000:3E68 shl ax, 1 seg000:3E6A shl ax, 1 seg000:3E6C mov bx, [bp+td_i] seg000:3E6F mov cx, ax seg000:3E71 mov al, ds:sort[bx] seg000:3E75 cbw seg000:3E76 add ax, cx seg000:3E78 mov cx, 46 seg000:3E7B imul cx seg000:3E7D mov bx, ax seg000:3E7F mov al, ds:part_table_sys_id[bx] seg000:3E83 sub ah, ah seg000:3E85 dec ax seg000:3E86 jnz short td_18 seg000:3E88 jmp td_ptype_PRIDOS seg000:3E8B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3E8B seg000:3E8B td_18: ; CODE XREF: table_display+166j seg000:3E8B dec ax seg000:3E8C jnz short td_19 seg000:3E8E jmp td_ptype_XENIX seg000:3E91 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3E91 seg000:3E91 td_19: ; CODE XREF: table_display+16Cj seg000:3E91 dec ax seg000:3E92 jnz short td_20 seg000:3E94 jmp td_ptype_XENIX seg000:3E97 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3E97 seg000:3E97 td_20: ; CODE XREF: table_display+172j seg000:3E97 dec ax seg000:3E98 jnz short td_21 seg000:3E9A jmp td_ptype_PRIDOS seg000:3E9D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3E9D seg000:3E9D td_21: ; CODE XREF: table_display+178j seg000:3E9D dec ax seg000:3E9E jnz short td_22 seg000:3EA0 jmp td_ptype_EXTENDED seg000:3EA3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3EA3 seg000:3EA3 td_22: ; CODE XREF: table_display+17Ej seg000:3EA3 dec ax seg000:3EA4 jnz short td_23 seg000:3EA6 jmp td_ptype_PRIDOS seg000:3EA9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3EA9 seg000:3EA9 td_23: ; CODE XREF: table_display+184j seg000:3EA9 dec ax seg000:3EAA jnz short td_24 seg000:3EAC jmp td_ptype_HPFS seg000:3EAF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3EAF seg000:3EAF td_24: ; CODE XREF: table_display+18Aj seg000:3EAF sub ax, 5Dh seg000:3EB2 jnz short td_25 seg000:3EB4 jmp td_ptype_NOVELL seg000:3EB7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3EB7 seg000:3EB7 td_25: ; CODE XREF: table_display+192j seg000:3EB7 sub ax, 11h seg000:3EBA jnz short td_26 seg000:3EBC jmp td_ptype_PCIX seg000:3EBF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3EBF seg000:3EBF td_26: ; CODE XREF: table_display+19Aj seg000:3EBF sub ax, 66h seg000:3EC2 jnz short td_27 seg000:3EC4 jmp td_ptype_CPM seg000:3EC7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3EC7 seg000:3EC7 td_27: ; CODE XREF: table_display+1A2j seg000:3EC7 sub ax, 24h seg000:3ECA jnz short td_28 seg000:3ECC jmp td_ptype_TABLE seg000:3ECF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3ECF seg000:3ECF td_28: ; CODE XREF: table_display+1AAj seg000:3ECF mov ax, ds:NONDOS seg000:3ED2 jmp td_06 seg000:3ED5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3ED5 seg000:3ED5 td_29: ; CODE XREF: table_display+10Ej seg000:3ED5 mov ax, 79 seg000:3ED8 push ax seg000:3ED9 mov ax, 12 seg000:3EDC push ax seg000:3EDD sub ax, ax seg000:3EDF push ax seg000:3EE0 mov ax, 8 seg000:3EE3 push ax seg000:3EE4 call clear_screen seg000:3EE7 add sp, 8 seg000:3EEA cmp [bp+partition_found], 0 seg000:3EEE jz short td_30 seg000:3EF0 push ds:menu_14_segment seg000:3EF4 push ds:menu_14_offset seg000:3EF8 jmp short td_31 seg000:3EFA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3EFA seg000:3EFA td_30: ; CODE XREF: table_display+1CEj seg000:3EFA push ds:status_8_seg seg000:3EFE push ds:status_8_off seg000:3F02 seg000:3F02 td_31: ; CODE XREF: table_display+1D8j seg000:3F02 call display seg000:3F05 pop bx seg000:3F06 pop bx seg000:3F07 cmp [bp+partition_found], 0 seg000:3F0B jz short td_32 seg000:3F0D mov al, 1 seg000:3F0F jmp short td_33 seg000:3F11 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3F11 seg000:3F11 td_32: ; CODE XREF: table_display+1EBj seg000:3F11 sub al, al seg000:3F13 seg000:3F13 td_33: ; CODE XREF: table_display+1EFj seg000:3F13 pop si seg000:3F14 mov sp, bp seg000:3F16 pop bp seg000:3F17 retn seg000:3F17 table_display endp seg000:3F17 seg000:3F18 seg000:3F18 ; --------------- S U B R O U T I N E --------------------------------------- seg000:3F18 seg000:3F18 ; Attributes: bp-based frame seg000:3F18 seg000:3F18 get_letters proc near ; CODE XREF: table_display+19p seg000:3F18 ; volume_display+7p ... seg000:3F18 seg000:3F18 gdl_j = byte ptr -8 seg000:3F18 gdl_i = byte ptr -6 seg000:3F18 a_primary_count = byte ptr -4 seg000:3F18 p_part = byte ptr -2 seg000:3F18 seg000:3F18 push bp seg000:3F19 mov bp, sp seg000:3F1B sub sp, 8 seg000:3F1E mov ds:next_letter, 'C' seg000:3F23 mov [bp+gdl_j], 0 seg000:3F27 jmp gdl_10 seg000:3F2A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3F2A seg000:3F2A gdl_1: ; CODE XREF: get_letters+A2j seg000:3F2A mov al, [bp+gdl_j] seg000:3F2D sub ah, ah seg000:3F2F shl ax, 1 seg000:3F31 shl ax, 1 seg000:3F33 mov cl, [bp+gdl_i] seg000:3F36 sub ch, ch seg000:3F38 add ax, cx seg000:3F3A mov cx, 46 seg000:3F3D imul cx seg000:3F3F mov bx, ax seg000:3F41 cmp ds:part_table_sys_id[bx], 1 seg000:3F46 jz short gdl_2 seg000:3F48 cmp ds:part_table_sys_id[bx], 4 seg000:3F4D jz short gdl_2 seg000:3F4F cmp ds:part_table_sys_id[bx], 6 seg000:3F54 jnz short gdl_6 seg000:3F56 seg000:3F56 gdl_2: ; CODE XREF: get_letters+2Ej seg000:3F56 ; get_letters+35j seg000:3F56 mov al, [bp+gdl_j] seg000:3F59 sub ah, ah seg000:3F5B shl ax, 1 seg000:3F5D shl ax, 1 seg000:3F5F mov cl, [bp+gdl_i] seg000:3F62 sub ch, ch seg000:3F64 add ax, cx seg000:3F66 mov cx, 46 seg000:3F69 imul cx seg000:3F6B mov bx, ax seg000:3F6D mov ds:part_table_drive_letter[bx], ' ' seg000:3F72 cmp ds:primary_partition_count, 0 seg000:3F77 jz short gdl_3 seg000:3F79 cmp ds:part_table_boot_ind[bx], 80h seg000:3F7E jnz short gdl_4 seg000:3F80 cmp [bp+a_primary_count], 0 seg000:3F84 jnz short gdl_4 seg000:3F86 seg000:3F86 gdl_3: ; CODE XREF: get_letters+5Fj seg000:3F86 mov al, [bp+gdl_i] seg000:3F89 mov [bp+p_part], al seg000:3F8C seg000:3F8C gdl_4: ; CODE XREF: get_letters+66j seg000:3F8C ; get_letters+6Cj seg000:3F8C mov al, [bp+gdl_j] seg000:3F8F sub ah, ah seg000:3F91 shl ax, 1 seg000:3F93 shl ax, 1 seg000:3F95 mov cl, [bp+gdl_i] seg000:3F98 sub ch, ch seg000:3F9A add ax, cx seg000:3F9C mov cx, 46 seg000:3F9F imul cx seg000:3FA1 mov bx, ax seg000:3FA3 cmp ds:part_table_boot_ind[bx], 80h seg000:3FA8 jnz short gdl_5 seg000:3FAA inc [bp+a_primary_count] seg000:3FAD seg000:3FAD gdl_5: ; CODE XREF: get_letters+90j seg000:3FAD inc ds:primary_partition_count seg000:3FB1 seg000:3FB1 gdl_6: ; CODE XREF: get_letters+3Cj seg000:3FB1 inc [bp+gdl_i] seg000:3FB4 seg000:3FB4 gdl_7: ; CODE XREF: get_letters+F0j seg000:3FB4 cmp [bp+gdl_i], 4 seg000:3FB8 jnb short gdl_8 seg000:3FBA jmp gdl_1 seg000:3FBD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:3FBD seg000:3FBD gdl_8: ; CODE XREF: get_letters+A0j seg000:3FBD cmp [bp+p_part], 0FFh seg000:3FC1 jz short gdl_9 seg000:3FC3 cmp ds:next_letter, 'Z' seg000:3FC8 jg short gdl_9 seg000:3FCA mov al, [bp+gdl_j] seg000:3FCD sub ah, ah seg000:3FCF shl ax, 1 seg000:3FD1 shl ax, 1 seg000:3FD3 mov cl, [bp+p_part] seg000:3FD6 sub ch, ch seg000:3FD8 add ax, cx seg000:3FDA mov cx, 46 seg000:3FDD imul cx seg000:3FDF mov bx, ax seg000:3FE1 mov al, ds:next_letter seg000:3FE4 mov ds:part_table_drive_letter[bx], al seg000:3FE8 inc ds:next_letter seg000:3FEC seg000:3FEC gdl_9: ; CODE XREF: get_letters+A9j seg000:3FEC ; get_letters+B0j seg000:3FEC inc [bp+gdl_j] seg000:3FEF seg000:3FEF gdl_10: ; CODE XREF: get_letters+Fj seg000:3FEF mov al, ds:number_of_drives seg000:3FF2 cmp [bp+gdl_j], al seg000:3FF5 jnb short gdl_11 seg000:3FF7 mov ds:primary_partition_count, 0 seg000:3FFC mov [bp+p_part], 0FFh seg000:4000 sub al, al seg000:4002 mov [bp+a_primary_count], al seg000:4005 mov [bp+gdl_i], al seg000:4008 jmp short gdl_7 seg000:400A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:400A seg000:400A gdl_11: ; CODE XREF: get_letters+DDj seg000:400A mov [bp+gdl_j], 0 seg000:400E jmp short gdl_17 seg000:4010 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4010 seg000:4010 gdl_12: ; CODE XREF: get_letters+146j seg000:4010 mov al, 24 seg000:4012 mul [bp+gdl_j] seg000:4015 mov cl, [bp+gdl_i] seg000:4018 sub ch, ch seg000:401A add ax, cx seg000:401C mov cx, 46 seg000:401F imul cx seg000:4021 mov bx, ax seg000:4023 mov ds:ext_table_drive_letter[bx], ' ' seg000:4028 seg000:4028 gdl_13: ; CODE XREF: get_letters+13Fj seg000:4028 ; get_letters+166j seg000:4028 inc [bp+gdl_i] seg000:402B seg000:402B gdl_14: ; CODE XREF: get_letters+177j seg000:402B cmp [bp+gdl_i], 23 seg000:402F jnb short gdl_16 seg000:4031 mov al, 24 seg000:4033 mul [bp+gdl_j] seg000:4036 mov cl, [bp+gdl_i] seg000:4039 sub ch, ch seg000:403B add ax, cx seg000:403D mov cx, 46 seg000:4040 imul cx seg000:4042 mov bx, ax seg000:4044 cmp ds:ext_table_sys_id[bx], 1 seg000:4049 jz short gdl_15 seg000:404B cmp ds:ext_table_sys_id[bx], 4 seg000:4050 jz short gdl_15 seg000:4052 cmp ds:ext_table_sys_id[bx], 6 seg000:4057 jnz short gdl_13 seg000:4059 seg000:4059 gdl_15: ; CODE XREF: get_letters+131j seg000:4059 ; get_letters+138j seg000:4059 cmp ds:next_letter, 'Z' seg000:405E jg short gdl_12 seg000:4060 mov al, 24 seg000:4062 mul [bp+gdl_j] seg000:4065 mov cl, [bp+gdl_i] seg000:4068 sub ch, ch seg000:406A add ax, cx seg000:406C mov cx, 46 seg000:406F imul cx seg000:4071 mov bx, ax seg000:4073 mov al, ds:next_letter seg000:4076 mov ds:ext_table_drive_letter[bx], al seg000:407A inc ds:next_letter seg000:407E jmp short gdl_13 seg000:4080 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4080 seg000:4080 gdl_16: ; CODE XREF: get_letters+117j seg000:4080 inc [bp+gdl_j] seg000:4083 seg000:4083 gdl_17: ; CODE XREF: get_letters+F6j seg000:4083 mov al, ds:number_of_drives seg000:4086 cmp [bp+gdl_j], al seg000:4089 jnb short gdl_18 seg000:408B mov [bp+gdl_i], 0 seg000:408F jmp short gdl_14 seg000:4091 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4091 seg000:4091 gdl_18: ; CODE XREF: get_letters+171j seg000:4091 mov [bp+gdl_j], 0 seg000:4095 jmp short gdl_23 seg000:4097 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4097 seg000:4097 gdl_19: ; CODE XREF: get_letters+1B2j seg000:4097 ; get_letters+1D0j ... seg000:4097 inc [bp+gdl_i] seg000:409A seg000:409A gdl_20: ; CODE XREF: get_letters+26Cj seg000:409A cmp [bp+gdl_i], 4 seg000:409E jnb short gdl_22 seg000:40A0 mov al, [bp+gdl_j] seg000:40A3 sub ah, ah seg000:40A5 shl ax, 1 seg000:40A7 shl ax, 1 seg000:40A9 mov cl, [bp+gdl_i] seg000:40AC sub ch, ch seg000:40AE add ax, cx seg000:40B0 mov cx, 46 seg000:40B3 imul cx seg000:40B5 mov bx, ax seg000:40B7 cmp ds:part_table_sys_id[bx], 1 seg000:40BC jz short gdl_21 seg000:40BE cmp ds:part_table_sys_id[bx], 4 seg000:40C3 jz short gdl_21 seg000:40C5 cmp ds:part_table_sys_id[bx], 6 seg000:40CA jnz short gdl_19 seg000:40CC seg000:40CC gdl_21: ; CODE XREF: get_letters+1A4j seg000:40CC ; get_letters+1ABj seg000:40CC mov al, [bp+gdl_j] seg000:40CF sub ah, ah seg000:40D1 shl ax, 1 seg000:40D3 shl ax, 1 seg000:40D5 mov cl, [bp+gdl_i] seg000:40D8 sub ch, ch seg000:40DA add ax, cx seg000:40DC mov cx, 46 seg000:40DF imul cx seg000:40E1 mov bx, ax seg000:40E3 cmp ds:part_table_boot_ind[bx], 80h seg000:40E8 jz short gdl_19 seg000:40EA cmp ds:part_table_drive_letter[bx], ' ' seg000:40EF jnz short gdl_19 seg000:40F1 cmp ds:next_letter, 'Z' seg000:40F6 jg short gdl_19 seg000:40F8 mov al, ds:next_letter seg000:40FB mov ds:part_table_drive_letter[bx], al seg000:40FF inc ds:next_letter seg000:4103 jmp short gdl_19 seg000:4105 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4105 seg000:4105 gdl_22: ; CODE XREF: get_letters+186j seg000:4105 inc [bp+gdl_j] seg000:4108 seg000:4108 gdl_23: ; CODE XREF: get_letters+17Dj seg000:4108 mov al, ds:number_of_drives seg000:410B cmp [bp+gdl_j], al seg000:410E jnb short gdl_27 seg000:4110 mov [bp+gdl_i], 0 seg000:4114 seg000:4114 gdl_24: ; CODE XREF: get_letters+266j seg000:4114 mov al, [bp+gdl_j] seg000:4117 sub ah, ah seg000:4119 shl ax, 1 seg000:411B shl ax, 1 seg000:411D mov cl, [bp+gdl_i] seg000:4120 sub ch, ch seg000:4122 add ax, cx seg000:4124 mov cx, 46 seg000:4127 imul cx seg000:4129 mov bx, ax seg000:412B cmp ds:part_table_sys_id[bx], 1 seg000:4130 jz short gdl_25 seg000:4132 cmp ds:part_table_sys_id[bx], 4 seg000:4137 jz short gdl_25 seg000:4139 cmp ds:part_table_sys_id[bx], 6 seg000:413E jnz short gdl_26 seg000:4140 seg000:4140 gdl_25: ; CODE XREF: get_letters+218j seg000:4140 ; get_letters+21Fj seg000:4140 mov al, [bp+gdl_j] seg000:4143 sub ah, ah seg000:4145 shl ax, 1 seg000:4147 shl ax, 1 seg000:4149 mov cl, [bp+gdl_i] seg000:414C sub ch, ch seg000:414E add ax, cx seg000:4150 mov cx, 46 seg000:4153 imul cx seg000:4155 mov bx, ax seg000:4157 cmp ds:part_table_boot_ind[bx], 80h seg000:415C jnz short gdl_26 seg000:415E cmp ds:part_table_drive_letter[bx], ' ' seg000:4163 jnz short gdl_26 seg000:4165 cmp ds:next_letter, 'Z' seg000:416A jg short gdl_26 seg000:416C mov al, ds:next_letter seg000:416F mov ds:part_table_drive_letter[bx], al seg000:4173 inc ds:next_letter seg000:4177 seg000:4177 gdl_26: ; CODE XREF: get_letters+226j seg000:4177 ; get_letters+244j ... seg000:4177 inc [bp+gdl_i] seg000:417A cmp [bp+gdl_i], 4 seg000:417E jb short gdl_24 seg000:4180 mov [bp+gdl_i], 0 seg000:4184 jmp gdl_20 seg000:4187 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4187 seg000:4187 gdl_27: ; CODE XREF: get_letters+1F6j seg000:4187 mov sp, bp seg000:4189 pop bp seg000:418A retn seg000:418A get_letters endp seg000:418A seg000:418A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:418B align 2 seg000:418C seg000:418C ; --------------- S U B R O U T I N E --------------------------------------- seg000:418C seg000:418C ; Attributes: bp-based frame seg000:418C seg000:418C volume_display proc near ; CODE XREF: volume_delete+3Bp seg000:418C ; volume_delete+45Dp ... seg000:418C seg000:418C vd_first_display= byte ptr -12h seg000:418C vd_insert_offset= word ptr -0Eh seg000:418C vd_i = word ptr -0Ch seg000:418C vd_drive_letter = byte ptr -0Ah seg000:418C vd_drive_num = byte ptr -8 seg000:418C vd_drive_found = byte ptr -6 seg000:418C seg000:418C push bp seg000:418D mov bp, sp seg000:418F sub sp, 18 seg000:4192 push si seg000:4193 call get_letters seg000:4196 mov al, 23 seg000:4198 push ax seg000:4199 call sort_ext_table seg000:419C pop bx seg000:419D mov ax, 696 seg000:41A0 push ax seg000:41A1 mov ax, ' ' seg000:41A4 push ax seg000:41A5 mov ax, offset insert seg000:41A8 push ax seg000:41A9 call memset seg000:41AC add sp, 6 seg000:41AF sub al, al seg000:41B1 mov [bp+vd_drive_num], al seg000:41B4 mov [bp+vd_drive_found], al seg000:41B7 mov [bp+vd_first_display], 1 seg000:41BB sub ax, ax seg000:41BD mov [bp+vd_insert_offset], ax seg000:41C0 mov [bp+vd_i], ax seg000:41C3 jmp short vd_05 seg000:41C5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:41C5 seg000:41C5 vd_01: ; CODE XREF: volume_display+E8j seg000:41C5 mov ax, ':' seg000:41C8 seg000:41C8 vd_02: ; CODE XREF: volume_display+EEj seg000:41C8 push ax seg000:41C9 mov al, ds:ext_table_drive_letter[si] seg000:41CD cbw seg000:41CE push ax seg000:41CF mov ax, offset eptbl_row_format ; "%c%c%-11.11s%4.1d%-8.8s%3.1d%%" seg000:41D2 push ax seg000:41D3 mov ax, [bp+vd_insert_offset] seg000:41D6 add ax, offset insert seg000:41D9 push ax seg000:41DA call sprintf seg000:41DD add sp, 16 seg000:41E0 add [bp+vd_insert_offset], ax seg000:41E3 mov al, 24 seg000:41E5 imul ds:cur_disk seg000:41E9 mov bx, [bp+vd_i] seg000:41EC mov cx, ax seg000:41EE mov al, ds:sort[bx] seg000:41F2 cbw seg000:41F3 add ax, cx seg000:41F5 mov cx, 46 seg000:41F8 imul cx seg000:41FA mov bx, ax seg000:41FC mov al, ds:ext_table_drive_letter[bx] seg000:4200 seg000:4200 vd_03: seg000:4200 mov [bp+vd_drive_letter], al seg000:4203 inc [bp+vd_drive_num] seg000:4206 seg000:4206 vd_04: ; CODE XREF: volume_display+AFj seg000:4206 inc [bp+vd_i] seg000:4209 seg000:4209 vd_05: ; CODE XREF: volume_display+37j seg000:4209 cmp [bp+vd_i], 23 seg000:420D jnb short vd_08 seg000:420F mov al, 24 seg000:4211 imul ds:cur_disk seg000:4215 mov bx, [bp+vd_i] seg000:4218 mov cx, ax seg000:421A mov al, ds:sort[bx] seg000:421E cbw seg000:421F add ax, cx seg000:4221 mov cx, 46 seg000:4224 imul cx seg000:4226 mov bx, ax seg000:4228 cmp ds:ext_table_sys_id[bx], 1 seg000:422D jz short vd_06 seg000:422F cmp ds:ext_table_sys_id[bx], 4 seg000:4234 jz short vd_06 seg000:4236 cmp ds:ext_table_sys_id[bx], 6 seg000:423B jnz short vd_04 seg000:423D seg000:423D vd_06: ; CODE XREF: volume_display+A1j seg000:423D ; volume_display+A8j seg000:423D mov [bp+vd_drive_found], 1 seg000:4241 mov al, 24 seg000:4243 imul ds:cur_disk seg000:4247 mov bx, [bp+vd_i] seg000:424A mov cx, ax seg000:424C mov al, ds:sort[bx] seg000:4250 cbw seg000:4251 add ax, cx seg000:4253 mov cx, 46 seg000:4256 imul cx seg000:4258 mov si, ax seg000:425A push ds:ext_table_percent_used[si] seg000:425E add si, offset ext_table_system seg000:4262 push si seg000:4263 mov si, ax seg000:4265 push ds:ext_table_mbytes_used[si] seg000:4269 add ax, offset ext_table_vol_label seg000:426C push ax seg000:426D cmp ds:ext_table_drive_letter[si], ' ' seg000:4272 jz short vd_07 seg000:4274 jmp vd_01 seg000:4277 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4277 seg000:4277 vd_07: ; CODE XREF: volume_display+E6j seg000:4277 mov ax, ' ' seg000:427A jmp vd_02 seg000:427D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:427D seg000:427D vd_08: ; CODE XREF: volume_display+81j seg000:427D cmp [bp+vd_drive_found], 0 seg000:4281 jnz short vd_09 seg000:4283 jmp vd_14 seg000:4286 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4286 seg000:4286 vd_09: ; CODE XREF: volume_display+F5j seg000:4286 mov ax, 79 seg000:4289 push ax seg000:428A mov ax, 15 seg000:428D push ax seg000:428E sub ax, ax seg000:4290 push ax seg000:4291 mov ax, 2 seg000:4294 push ax seg000:4295 call clear_screen seg000:4298 add sp, 8 seg000:429B cmp [bp+vd_drive_num], 0 seg000:429F jle short vd_10 seg000:42A1 mov ds:pinsert, offset insert seg000:42A7 push ds:menu_19_segment seg000:42AB push ds:menu_19_offset seg000:42AF call display seg000:42B2 pop bx seg000:42B3 pop bx seg000:42B4 seg000:42B4 vd_10: ; CODE XREF: volume_display+113j seg000:42B4 cmp [bp+vd_drive_num], 6 seg000:42B8 jle short vd_11 seg000:42BA mov ds:pinsert, (offset insert+0AEh) seg000:42C0 push ds:menu_43_segment seg000:42C4 push ds:menu_43_offset seg000:42C8 call display seg000:42CB pop bx seg000:42CC pop bx seg000:42CD seg000:42CD vd_11: ; CODE XREF: volume_display+12Cj seg000:42CD cmp [bp+vd_drive_num], 12 seg000:42D1 jle short vd_12 seg000:42D3 mov ds:pinsert, (offset insert+15Ch) seg000:42D9 push ds:menu_20_segment seg000:42DD push ds:menu_20_offset seg000:42E1 call display seg000:42E4 pop bx seg000:42E5 pop bx seg000:42E6 seg000:42E6 vd_12: ; CODE XREF: volume_display+145j seg000:42E6 cmp [bp+vd_drive_num], 18 seg000:42EA jle short vd_13 seg000:42EC mov ds:pinsert, (offset insert+20Ah) seg000:42F2 push ds:menu_44_segment seg000:42F6 push ds:menu_44_offset seg000:42FA call display seg000:42FD pop bx seg000:42FE pop bx seg000:42FF seg000:42FF vd_13: ; CODE XREF: volume_display+15Ej seg000:42FF mov ds:pinsert, offset insert seg000:4305 jmp short vd_15 seg000:4307 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4307 seg000:4307 vd_14: ; CODE XREF: volume_display+F7j seg000:4307 cmp [bp+vd_first_display], 0 seg000:430B jz short vd_15 seg000:430D mov ax, 79 seg000:4310 push ax seg000:4311 mov ax, 15 seg000:4314 push ax seg000:4315 sub ax, ax seg000:4317 push ax seg000:4318 mov ax, 2 seg000:431B push ax seg000:431C call clear_screen seg000:431F add sp, 8 seg000:4322 push ds:status_9_seg seg000:4326 push ds:status_9_off seg000:432A call display seg000:432D pop bx seg000:432E pop bx seg000:432F seg000:432F vd_15: ; CODE XREF: volume_display+179j seg000:432F ; volume_display+17Fj seg000:432F mov al, [bp+vd_drive_letter] seg000:4332 pop si seg000:4333 mov sp, bp seg000:4335 pop bp seg000:4336 retn seg000:4336 volume_display endp seg000:4336 seg000:4337 seg000:4337 ; --------------- S U B R O U T I N E --------------------------------------- seg000:4337 seg000:4337 ; Attributes: bp-based frame seg000:4337 seg000:4337 change_current_drive proc near ; CODE XREF: main+B3p seg000:4337 ; do_main_menu:case_5p seg000:4337 seg000:4337 k = word ptr -14h seg000:4337 insert_offset = word ptr -12h seg000:4337 i = word ptr -10h seg000:4337 drive_num = byte ptr -0Eh seg000:4337 temp = byte ptr -0Ah seg000:4337 mbytes_free = word ptr -8 seg000:4337 max_input = byte ptr -6 seg000:4337 percent_used = word ptr -4 seg000:4337 input = word ptr -2 seg000:4337 seg000:4337 push bp seg000:4338 mov bp, sp seg000:433A sub sp, 20 seg000:433D push si seg000:433E mov [bp+drive_num], 0 seg000:4342 call get_letters seg000:4345 mov ax, 79 seg000:4348 push ax seg000:4349 mov ax, 24 seg000:434C push ax seg000:434D sub ax, ax seg000:434F mov [bp+insert_offset], ax seg000:4352 push ax seg000:4353 push ax seg000:4354 call clear_screen seg000:4357 add sp, 8 seg000:435A mov ax, 480 seg000:435D push ax seg000:435E mov ax, ' ' seg000:4361 push ax seg000:4362 mov ax, offset insert seg000:4365 push ax seg000:4366 call memset seg000:4369 add sp, 6 seg000:436C mov al, ds:cur_disk seg000:436F mov [bp+temp], al seg000:4372 cmp ds:status_flag, 0 seg000:4377 jnz short ccd_1 seg000:4379 push ds:menu_47_segment seg000:437D push ds:menu_47_offset seg000:4381 jmp short ccd_2 seg000:4383 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4383 seg000:4383 ccd_1: ; CODE XREF: change_current_drive+40j seg000:4383 push ds:menu_54_segment seg000:4387 push ds:menu_54_offset seg000:438B seg000:438B ccd_2: ; CODE XREF: change_current_drive+4Aj seg000:438B call display seg000:438E pop bx seg000:438F pop bx seg000:4390 mov [bp+i], 0 seg000:4395 jmp ccd_20 seg000:4398 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4398 seg000:4398 ccd_3: ; CODE XREF: change_current_drive+221j seg000:4398 mov [bp+mbytes_free], 0 seg000:439D seg000:439D ccd_4: ; CODE XREF: change_current_drive+22Dj seg000:439D mov al, ds:cur_disk seg000:43A0 cbw seg000:43A1 imul cx seg000:43A3 mov bx, ax seg000:43A5 mov ax, ds:part_table_percent_used[bx] seg000:43A9 add ax, ds:pt_part4_percent_used[bx] seg000:43AD add ax, ds:pt_part3_percent_used[bx] seg000:43B1 add ax, ds:pt_part2_percent_used[bx] seg000:43B5 cmp ax, 100 seg000:43B8 jnb short ccd_5 seg000:43BA mov [bp+percent_used], ax seg000:43BD jmp short ccd_6 seg000:43BF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:43BF seg000:43BF ccd_5: ; CODE XREF: change_current_drive+81j seg000:43BF mov [bp+percent_used], 100 seg000:43C4 seg000:43C4 ccd_6: ; CODE XREF: change_current_drive+86j seg000:43C4 push [bp+percent_used] seg000:43C7 push [bp+mbytes_free] seg000:43CA mov al, ds:cur_disk seg000:43CD cbw seg000:43CE mov bx, ax seg000:43D0 shl bx, 1 seg000:43D2 push ds:total_mbytes[bx] seg000:43D6 mov cx, ' ' seg000:43D9 push cx seg000:43DA push cx seg000:43DB inc ax seg000:43DC push ax seg000:43DD mov ax, offset cd_pt_row_format ; "%1.0d%c%c%4.1d%4.1d%3.1d%%" seg000:43E0 push ax seg000:43E1 mov ax, [bp+insert_offset] seg000:43E4 add ax, offset insert seg000:43E7 push ax seg000:43E8 call sprintf seg000:43EB add sp, 16 seg000:43EE add [bp+insert_offset], ax seg000:43F1 inc [bp+drive_num] seg000:43F4 mov al, 4 seg000:43F6 push ax seg000:43F7 call sort_part_table seg000:43FA pop bx seg000:43FB mov [bp+k], 0 seg000:4400 jmp short ccd_10 seg000:4402 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4402 seg000:4402 ccd_7: ; CODE XREF: change_current_drive+153j seg000:4402 mov ax, ':' seg000:4405 seg000:4405 ccd_8: ; CODE XREF: change_current_drive+159j seg000:4405 push ax seg000:4406 mov al, ds:part_table_drive_letter[bx] seg000:440A cbw seg000:440B push ax seg000:440C mov ax, ' ' seg000:440F push ax seg000:4410 mov ax, offset drv_mb_row_format ; "%c%c%c%4.1d%8c" seg000:4413 push ax seg000:4414 mov ax, [bp+insert_offset] seg000:4417 add ax, offset insert seg000:441A push ax seg000:441B call sprintf seg000:441E add sp, 14 seg000:4421 add [bp+insert_offset], ax seg000:4424 inc [bp+drive_num] seg000:4427 seg000:4427 ccd_9: ; CODE XREF: change_current_drive+127j seg000:4427 inc [bp+k] seg000:442A seg000:442A ccd_10: ; CODE XREF: change_current_drive+C9j seg000:442A cmp [bp+k], 4 seg000:442E jnb short ccd_13 seg000:4430 mov al, ds:cur_disk seg000:4433 cbw seg000:4434 shl ax, 1 seg000:4436 shl ax, 1 seg000:4438 mov bx, [bp+k] seg000:443B mov cx, ax seg000:443D mov al, ds:sort[bx] seg000:4441 cbw seg000:4442 add ax, cx seg000:4444 mov cx, 46 seg000:4447 imul cx seg000:4449 mov bx, ax seg000:444B cmp ds:part_table_sys_id[bx], 6 seg000:4450 jz short ccd_11 seg000:4452 cmp ds:part_table_sys_id[bx], 4 seg000:4457 jz short ccd_11 seg000:4459 cmp ds:part_table_sys_id[bx], 1 seg000:445E jnz short ccd_9 seg000:4460 seg000:4460 ccd_11: ; CODE XREF: change_current_drive+119j seg000:4460 ; change_current_drive+120j seg000:4460 mov ax, ' ' seg000:4463 push ax seg000:4464 mov al, ds:cur_disk seg000:4467 cbw seg000:4468 shl ax, 1 seg000:446A shl ax, 1 seg000:446C mov bx, [bp+k] seg000:446F mov cx, ax seg000:4471 mov al, ds:sort[bx] seg000:4475 cbw seg000:4476 add ax, cx seg000:4478 mov cx, 46 seg000:447B imul cx seg000:447D mov bx, ax seg000:447F push ds:part_table_mbytes_used[bx] seg000:4483 cmp ds:part_table_drive_letter[bx], ' ' seg000:4488 jz short ccd_12 seg000:448A jmp ccd_7 seg000:448D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:448D seg000:448D ccd_12: ; CODE XREF: change_current_drive+151j seg000:448D mov ax, ' ' seg000:4490 jmp ccd_8 seg000:4493 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4493 seg000:4493 ccd_13: ; CODE XREF: change_current_drive+F7j seg000:4493 mov al, 23 seg000:4495 push ax seg000:4496 call sort_ext_table seg000:4499 pop bx seg000:449A mov [bp+k], 0 seg000:449F jmp short ccd_17 seg000:44A1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:44A1 seg000:44A1 ccd_14: ; CODE XREF: change_current_drive+1E5j seg000:44A1 mov ax, ':' seg000:44A4 seg000:44A4 ccd_15: ; CODE XREF: change_current_drive+1EAj seg000:44A4 push ax seg000:44A5 mov al, ds:ext_table_drive_letter[bx] seg000:44A9 cbw seg000:44AA push ax seg000:44AB mov ax, ' ' seg000:44AE push ax seg000:44AF mov ax, offset cdrv_mb_format ; "%c%c%c%4.1d%8c" seg000:44B2 push ax seg000:44B3 mov ax, [bp+insert_offset] seg000:44B6 add ax, offset insert seg000:44B9 push ax seg000:44BA call sprintf seg000:44BD add sp, 14 seg000:44C0 add [bp+insert_offset], ax seg000:44C3 inc [bp+drive_num] seg000:44C6 seg000:44C6 ccd_16: ; CODE XREF: change_current_drive+1BDj seg000:44C6 inc [bp+k] seg000:44C9 seg000:44C9 ccd_17: ; CODE XREF: change_current_drive+168j seg000:44C9 cmp [bp+k], 23 seg000:44CD jnb short ccd_19 seg000:44CF mov al, 24 seg000:44D1 imul ds:cur_disk seg000:44D5 mov bx, [bp+k] seg000:44D8 mov cx, ax seg000:44DA mov al, ds:sort[bx] seg000:44DE cbw seg000:44DF add ax, cx seg000:44E1 mov cx, 46 seg000:44E4 imul cx seg000:44E6 mov bx, ax seg000:44E8 cmp ds:ext_table_mbytes_used[bx], 0 seg000:44ED jnz short ccd_18 seg000:44EF cmp ds:ext_table_percent_used[bx], 0 seg000:44F4 jz short ccd_16 seg000:44F6 seg000:44F6 ccd_18: ; CODE XREF: change_current_drive+1B6j seg000:44F6 mov ax, ' ' seg000:44F9 push ax seg000:44FA mov al, 24 seg000:44FC imul ds:cur_disk seg000:4500 mov bx, [bp+k] seg000:4503 mov cx, ax seg000:4505 mov al, ds:sort[bx] seg000:4509 cbw seg000:450A add ax, cx seg000:450C mov cx, 46 seg000:450F imul cx seg000:4511 mov bx, ax seg000:4513 push ds:ext_table_mbytes_used[bx] seg000:4517 cmp ds:ext_table_drive_letter[bx], ' ' seg000:451C jnz short ccd_14 seg000:451E mov ax, ' ' seg000:4521 jmp short ccd_15 seg000:4523 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4523 seg000:4523 ccd_19: ; CODE XREF: change_current_drive+196j seg000:4523 inc [bp+i] seg000:4526 seg000:4526 ccd_20: ; CODE XREF: change_current_drive+5Ej seg000:4526 mov al, ds:number_of_drives seg000:4529 sub ah, ah seg000:452B cmp ax, [bp+i] seg000:452E jbe short ccd_22 seg000:4530 mov al, byte ptr [bp+i] seg000:4533 mov ds:cur_disk, al seg000:4536 cbw seg000:4537 mov cx, 184 seg000:453A mov bx, ax seg000:453C imul cx seg000:453E mov si, ax seg000:4540 mov ax, ds:part_table_mbytes_used[si] seg000:4544 add ax, ds:pt_part4_mbytes_used[si] seg000:4548 add ax, ds:pt_part3_mbytes_used[si] seg000:454C add ax, ds:pt_part2_mbytes_used[si] seg000:4550 shl bx, 1 seg000:4552 cmp ax, ds:total_mbytes[bx] seg000:4556 jb short ccd_21 seg000:4558 jmp ccd_3 seg000:455B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:455B seg000:455B ccd_21: ; CODE XREF: change_current_drive+21Fj seg000:455B sub ax, ds:total_mbytes[bx] seg000:455F neg ax seg000:4561 mov [bp+mbytes_free], ax seg000:4564 jmp ccd_4 seg000:4567 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4567 seg000:4567 ccd_22: ; CODE XREF: change_current_drive+1F7j seg000:4567 cmp [bp+drive_num], 0 seg000:456B jle short ccd_23 seg000:456D mov ds:pinsert, offset insert seg000:4573 push ds:menu_48_segment seg000:4577 push ds:menu_48_offset seg000:457B call display seg000:457E pop bx seg000:457F pop bx seg000:4580 seg000:4580 ccd_23: ; CODE XREF: change_current_drive+234j seg000:4580 cmp [bp+drive_num], 8 seg000:4584 jle short ccd_24 seg000:4586 mov ds:pinsert, (offset insert+78h) seg000:458C push ds:menu_49_segment seg000:4590 push ds:menu_49_offset seg000:4594 call display seg000:4597 pop bx seg000:4598 pop bx seg000:4599 seg000:4599 ccd_24: ; CODE XREF: change_current_drive+24Dj seg000:4599 cmp [bp+drive_num], 16 seg000:459D jle short ccd_25 seg000:459F mov ds:pinsert, (offset insert+0F0h) seg000:45A5 push ds:menu_50_segment seg000:45A9 push ds:menu_50_offset seg000:45AD call display seg000:45B0 pop bx seg000:45B1 pop bx seg000:45B2 seg000:45B2 ccd_25: ; CODE XREF: change_current_drive+266j seg000:45B2 cmp [bp+drive_num], 24 seg000:45B6 jle short ccd_26 seg000:45B8 mov ds:pinsert, (offset insert+168h) seg000:45BE push ds:menu_51_segment seg000:45C2 push ds:menu_51_offset seg000:45C6 call display seg000:45C9 pop bx seg000:45CA pop bx seg000:45CB seg000:45CB ccd_26: ; CODE XREF: change_current_drive+27Fj seg000:45CB mov ds:pinsert, offset insert seg000:45D1 push ds:menu_52_segment seg000:45D5 push ds:menu_52_offset seg000:45D9 call display seg000:45DC pop bx seg000:45DD pop bx seg000:45DE mov al, [bp+temp] seg000:45E1 mov ds:cur_disk, al seg000:45E4 cmp ds:status_flag, 0 seg000:45E9 jz short ccd_27 seg000:45EB jmp ccd_30 seg000:45EE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:45EE seg000:45EE ccd_27: ; CODE XREF: change_current_drive+2B2j seg000:45EE cbw seg000:45EF inc ax seg000:45F0 push ax seg000:45F1 mov al, ds:number_of_drives seg000:45F4 sub ah, ah seg000:45F6 push ax seg000:45F7 mov ax, offset cdrive_format ; "%1.0d%1.0d" seg000:45FA push ax seg000:45FB mov ax, offset insert seg000:45FE push ax seg000:45FF call sprintf seg000:4602 add sp, 8 seg000:4605 push ds:menu_53_segment seg000:4609 push ds:menu_53_offset seg000:460D call display seg000:4610 pop bx seg000:4611 pop bx seg000:4612 push ds:menu_11_segment seg000:4616 push ds:menu_11_offset seg000:461A call display seg000:461D pop bx seg000:461E pop bx seg000:461F mov al, ds:number_of_drives seg000:4622 mov [bp+max_input], al seg000:4625 mov ds:valid_input, 0 seg000:462A seg000:462A ccd_28: ; CODE XREF: change_current_drive+337j seg000:462A push ds:input_col seg000:462E push ds:input_row seg000:4632 mov al, [bp+max_input] seg000:4635 push ax seg000:4636 mov al, ds:cur_disk seg000:4639 inc al seg000:463B push ax seg000:463C call get_num_input seg000:463F add sp, 8 seg000:4642 cbw seg000:4643 mov [bp+input], ax seg000:4646 mov ax, 79 seg000:4649 push ax seg000:464A mov ax, 23 seg000:464D push ax seg000:464E sub ax, ax seg000:4650 push ax seg000:4651 mov ax, 21 seg000:4654 push ax seg000:4655 call clear_screen seg000:4658 add sp, 8 seg000:465B cmp [bp+input], 1Bh seg000:465F jz short ccd_29 seg000:4661 mov al, byte ptr [bp+input] seg000:4664 sub al, '1' seg000:4666 mov ds:cur_disk, al seg000:4669 seg000:4669 ccd_29: ; CODE XREF: change_current_drive+328j seg000:4669 cmp ds:valid_input, 0 seg000:466E jz short ccd_28 seg000:4670 mov ax, 79 seg000:4673 push ax seg000:4674 mov ax, 24 seg000:4677 push ax seg000:4678 sub ax, ax seg000:467A push ax seg000:467B push ax seg000:467C call clear_screen seg000:467F add sp, 8 seg000:4682 seg000:4682 ccd_30: ; CODE XREF: change_current_drive+2B4j seg000:4682 pop si seg000:4683 mov sp, bp seg000:4685 pop bp seg000:4686 retn seg000:4686 change_current_drive endp seg000:4686 seg000:4686 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4687 align 2 seg000:4688 seg000:4688 ; --------------- S U B R O U T I N E --------------------------------------- seg000:4688 seg000:4688 ; Attributes: bp-based frame seg000:4688 seg000:4688 find_part_free_space proc near ; CODE XREF: main+21Ap seg000:4688 ; main+297p ... seg000:4688 seg000:4688 fpfs_i = byte ptr -0Eh seg000:4688 last_found_partition= byte ptr -0Ch seg000:4688 fpfs_temp = word ptr -0Ah seg000:4688 freespace_count = byte ptr -8 seg000:4688 fpfs_partition_count= byte ptr -6 seg000:4688 fpfs_anypartition= byte ptr -4 seg000:4688 fpfs_type = byte ptr 4 seg000:4688 seg000:4688 push bp seg000:4689 mov bp, sp seg000:468B sub sp, 14 seg000:468E push di seg000:468F push si seg000:4690 mov al, 4 seg000:4692 push ax seg000:4693 call sort_part_table seg000:4696 pop bx seg000:4697 mov [bp+fpfs_i], 0 seg000:469B seg000:469B fpfs_1: ; CODE XREF: find_part_free_space+37j seg000:469B mov al, 22 seg000:469D imul [bp+fpfs_i] seg000:46A0 mov bx, ax seg000:46A2 sub ax, ax seg000:46A4 mov ds:free_space_space[bx], ax seg000:46A8 mov ds:free_space_start[bx], ax seg000:46AC mov ds:free_space_end[bx], ax seg000:46B0 mov ds:free_space_mbytes_unused[bx], ax seg000:46B4 mov ds:free_space_percent_unused[bx], ax seg000:46B8 inc [bp+fpfs_i] seg000:46BB cmp [bp+fpfs_i], 5 seg000:46BF jl short fpfs_1 seg000:46C1 sub al, al seg000:46C3 mov [bp+fpfs_partition_count], al seg000:46C6 mov [bp+fpfs_anypartition], al seg000:46C9 mov [bp+fpfs_i], al seg000:46CC jmp short fpfs_3 seg000:46CE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:46CE seg000:46CE fpfs_2: ; CODE XREF: find_part_free_space+75j seg000:46CE inc [bp+fpfs_i] seg000:46D1 seg000:46D1 fpfs_3: ; CODE XREF: find_part_free_space+44j seg000:46D1 cmp [bp+fpfs_i], 4 seg000:46D5 jl short fpfs_4 seg000:46D7 jmp fpfs_7 seg000:46DA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:46DA seg000:46DA fpfs_4: ; CODE XREF: find_part_free_space+4Dj seg000:46DA mov al, ds:cur_disk seg000:46DD cbw seg000:46DE shl ax, 1 seg000:46E0 shl ax, 1 seg000:46E2 mov cx, ax seg000:46E4 mov al, [bp+fpfs_i] seg000:46E7 cbw seg000:46E8 mov bx, ax seg000:46EA mov al, ds:sort[bx] seg000:46EE cbw seg000:46EF add ax, cx seg000:46F1 mov cx, 46 seg000:46F4 imul cx seg000:46F6 mov bx, ax seg000:46F8 cmp ds:part_table_sys_id[bx], 0 seg000:46FD jz short fpfs_2 seg000:46FF mov ds:free_space_start, 0 seg000:4705 cmp [bp+fpfs_type], 5 seg000:4709 jnz short fpfs_5 seg000:470B mov ds:free_space_start, 1 seg000:4711 seg000:4711 fpfs_5: ; CODE XREF: find_part_free_space+81j seg000:4711 mov al, ds:cur_disk seg000:4714 cbw seg000:4715 shl ax, 1 seg000:4717 shl ax, 1 seg000:4719 mov cx, ax seg000:471B mov al, [bp+fpfs_i] seg000:471E cbw seg000:471F mov bx, ax seg000:4721 mov al, ds:sort[bx] seg000:4725 cbw seg000:4726 add ax, cx seg000:4728 mov cx, 46 seg000:472B imul cx seg000:472D mov bx, ax seg000:472F cmp ds:part_table_start_cyl[bx], 0 seg000:4734 jz short fpfs_6 seg000:4736 mov ax, ds:part_table_start_cyl[bx] seg000:473A mov cx, ax seg000:473C dec ax seg000:473D mov ds:free_space_end, ax seg000:4740 sub cx, ds:free_space_start seg000:4744 mov ds:free_space_space, cx seg000:4748 seg000:4748 fpfs_6: ; CODE XREF: find_part_free_space+ACj seg000:4748 mov al, ds:cur_disk seg000:474B push ax seg000:474C push ds:free_space_space seg000:4750 call cylinders_to_mbytes seg000:4753 pop bx seg000:4754 pop bx seg000:4755 mov ds:free_space_mbytes_unused, ax seg000:4758 mov al, ds:cur_disk seg000:475B cbw seg000:475C mov bx, ax seg000:475E shl bx, 1 seg000:4760 push ds:total_disk[bx] seg000:4764 push ds:free_space_space seg000:4768 call cylinders_to_percent seg000:476B pop bx seg000:476C pop bx seg000:476D mov ds:free_space_percent_unused, ax seg000:4770 mov al, [bp+fpfs_i] seg000:4773 mov [bp+fpfs_partition_count], al seg000:4776 cbw seg000:4777 mov bx, ax seg000:4779 mov al, ds:sort[bx] seg000:477D mov [bp+last_found_partition], al seg000:4780 mov [bp+fpfs_anypartition], 1 seg000:4784 seg000:4784 fpfs_7: ; CODE XREF: find_part_free_space+4Fj seg000:4784 cmp [bp+fpfs_anypartition], 0 seg000:4788 jnz short fpfs_8 seg000:478A jmp fpfs_16 seg000:478D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:478D seg000:478D fpfs_8: ; CODE XREF: find_part_free_space+100j seg000:478D mov [bp+freespace_count], 1 seg000:4791 mov al, [bp+fpfs_partition_count] seg000:4794 inc al seg000:4796 mov [bp+fpfs_i], al seg000:4799 jmp fpfs_13 seg000:479C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:479C seg000:479C fpfs_9: ; CODE XREF: find_part_free_space+1E4j seg000:479C mov al, ds:cur_disk seg000:479F cbw seg000:47A0 shl ax, 1 seg000:47A2 shl ax, 1 seg000:47A4 mov cx, ax seg000:47A6 mov al, [bp+fpfs_i] seg000:47A9 cbw seg000:47AA mov bx, ax seg000:47AC mov al, ds:sort[bx] seg000:47B0 cbw seg000:47B1 add ax, cx seg000:47B3 mov bx, 46 seg000:47B6 imul bx seg000:47B8 mov si, ax seg000:47BA cmp ds:part_table_sys_id[si], 0 seg000:47BF jnz short fpfs_10 seg000:47C1 jmp fpfs_12 seg000:47C4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:47C4 seg000:47C4 fpfs_10: ; CODE XREF: find_part_free_space+137j seg000:47C4 mov al, [bp+last_found_partition] seg000:47C7 cbw seg000:47C8 add ax, cx seg000:47CA imul bx seg000:47CC mov bx, ax seg000:47CE mov ax, ds:part_table_end_cyl[bx] seg000:47D2 cmp ds:part_table_start_cyl[si], ax seg000:47D6 jz short fpfs_11 seg000:47D8 sub ax, ds:part_table_start_cyl[si] seg000:47DC neg ax seg000:47DE dec ax seg000:47DF mov dx, ax seg000:47E1 mov al, 22 seg000:47E3 imul [bp+freespace_count] seg000:47E6 mov bx, ax seg000:47E8 mov ds:free_space_space[bx], dx seg000:47EC seg000:47EC fpfs_11: ; CODE XREF: find_part_free_space+14Ej seg000:47EC mov al, ds:cur_disk seg000:47EF cbw seg000:47F0 shl ax, 1 seg000:47F2 shl ax, 1 seg000:47F4 mov cx, ax seg000:47F6 mov al, [bp+last_found_partition] seg000:47F9 cbw seg000:47FA add ax, cx seg000:47FC mov bx, 46 seg000:47FF imul bx seg000:4801 mov si, ax seg000:4803 mov ax, ds:part_table_end_cyl[si] seg000:4807 inc ax seg000:4808 mov dx, ax seg000:480A mov al, 22 seg000:480C imul [bp+freespace_count] seg000:480F mov si, ax seg000:4811 mov ds:free_space_start[si], dx seg000:4815 mov al, [bp+fpfs_i] seg000:4818 cbw seg000:4819 mov di, ax seg000:481B mov al, ds:sort[di] seg000:481F cbw seg000:4820 add ax, cx seg000:4822 imul bx seg000:4824 mov bx, ax seg000:4826 mov ax, ds:part_table_start_cyl[bx] seg000:482A dec ax seg000:482B mov ds:free_space_end[si], ax seg000:482F mov al, ds:cur_disk seg000:4832 push ax seg000:4833 push ds:free_space_space[si] seg000:4837 call cylinders_to_mbytes seg000:483A pop bx seg000:483B pop bx seg000:483C mov ds:free_space_mbytes_unused[si], ax seg000:4840 mov al, ds:cur_disk seg000:4843 cbw seg000:4844 mov bx, ax seg000:4846 shl bx, 1 seg000:4848 push ds:total_disk[bx] seg000:484C push ds:free_space_space[si] seg000:4850 call cylinders_to_percent seg000:4853 pop bx seg000:4854 pop bx seg000:4855 mov ds:free_space_percent_unused[si], ax seg000:4859 mov al, ds:sort[di] seg000:485D mov [bp+last_found_partition], al seg000:4860 inc [bp+freespace_count] seg000:4863 seg000:4863 fpfs_12: ; CODE XREF: find_part_free_space+139j seg000:4863 inc [bp+fpfs_i] seg000:4866 seg000:4866 fpfs_13: ; CODE XREF: find_part_free_space+111j seg000:4866 cmp [bp+fpfs_i], 4 seg000:486A jge short fpfs_14 seg000:486C jmp fpfs_9 seg000:486F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:486F seg000:486F fpfs_14: ; CODE XREF: find_part_free_space+1E2j seg000:486F mov al, ds:cur_disk seg000:4872 cbw seg000:4873 mov bx, ax seg000:4875 mov al, [bp+last_found_partition] seg000:4878 cbw seg000:4879 mov cx, bx seg000:487B shl bx, 1 seg000:487D shl bx, 1 seg000:487F add ax, bx seg000:4881 mov bx, 46 seg000:4884 imul bx seg000:4886 mov bx, ax seg000:4888 mov si, cx seg000:488A shl si, 1 seg000:488C mov ax, ds:total_disk[si] seg000:4890 cmp ds:part_table_end_cyl[bx], ax seg000:4894 jb short fpfs_15 seg000:4896 jmp fpfs_18 seg000:4899 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4899 seg000:4899 fpfs_15: ; CODE XREF: find_part_free_space+20Cj seg000:4899 mov cx, ax seg000:489B sub ax, ds:part_table_end_cyl[bx] seg000:489F dec ax seg000:48A0 mov dx, ax seg000:48A2 mov al, 22 seg000:48A4 imul [bp+freespace_count] seg000:48A7 mov si, ax seg000:48A9 mov ds:free_space_space[si], dx seg000:48AD mov ax, ds:part_table_end_cyl[bx] seg000:48B1 inc ax seg000:48B2 mov ds:free_space_start[si], ax seg000:48B6 dec cx seg000:48B7 mov ds:free_space_end[si], cx seg000:48BB mov al, ds:cur_disk seg000:48BE push ax seg000:48BF push ds:free_space_space[si] seg000:48C3 call cylinders_to_mbytes seg000:48C6 pop bx seg000:48C7 pop bx seg000:48C8 mov ds:free_space_mbytes_unused[si], ax seg000:48CC mov al, ds:cur_disk seg000:48CF cbw seg000:48D0 mov bx, ax seg000:48D2 shl bx, 1 seg000:48D4 push ds:total_disk[bx] seg000:48D8 push ds:free_space_space[si] seg000:48DC call cylinders_to_percent seg000:48DF pop bx seg000:48E0 pop bx seg000:48E1 mov ds:free_space_percent_unused[si], ax seg000:48E5 jmp short fpfs_18 seg000:48E7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:48E7 seg000:48E7 fpfs_16: ; CODE XREF: find_part_free_space+102j seg000:48E7 mov ds:free_space_start, 0 seg000:48ED cmp [bp+fpfs_type], 5 seg000:48F1 jnz short fpfs_17 seg000:48F3 mov ds:free_space_start, 1 seg000:48F9 seg000:48F9 fpfs_17: ; CODE XREF: find_part_free_space+269j seg000:48F9 mov al, ds:cur_disk seg000:48FC cbw seg000:48FD mov bx, ax seg000:48FF shl bx, 1 seg000:4901 mov ax, ds:total_disk[bx] seg000:4905 dec ax seg000:4906 mov ds:free_space_end, ax seg000:4909 sub ax, ds:free_space_start seg000:490D inc ax seg000:490E mov ds:free_space_space, ax seg000:4911 mov cl, ds:cur_disk seg000:4915 push cx seg000:4916 push ax seg000:4917 call cylinders_to_mbytes seg000:491A pop bx seg000:491B pop bx seg000:491C mov ds:free_space_mbytes_unused, ax seg000:491F mov al, ds:cur_disk seg000:4922 cbw seg000:4923 mov bx, ax seg000:4925 shl bx, 1 seg000:4927 push ds:total_disk[bx] seg000:492B push ds:free_space_space seg000:492F call cylinders_to_percent seg000:4932 pop bx seg000:4933 pop bx seg000:4934 mov ds:free_space_percent_unused, ax seg000:4937 seg000:4937 fpfs_18: ; CODE XREF: find_part_free_space+20Ej seg000:4937 ; find_part_free_space+25Dj ... seg000:4937 mov [bp+fpfs_temp], 0 seg000:493C mov [bp+fpfs_i], 0 seg000:4940 seg000:4940 fpfs_19: ; CODE XREF: find_part_free_space+2DCj seg000:4940 mov al, 22 seg000:4942 imul [bp+fpfs_i] seg000:4945 mov bx, ax seg000:4947 mov ax, [bp+fpfs_temp] seg000:494A cmp ds:free_space_space[bx], ax seg000:494E jbe short fpfs_20 seg000:4950 mov ax, ds:free_space_space[bx] seg000:4954 mov [bp+fpfs_temp], ax seg000:4957 mov al, [bp+fpfs_i] seg000:495A mov [bp+last_found_partition], al seg000:495D seg000:495D fpfs_20: ; CODE XREF: find_part_free_space+2C6j seg000:495D inc [bp+fpfs_i] seg000:4960 cmp [bp+fpfs_i], 5 seg000:4964 jl short fpfs_19 seg000:4966 mov [bp+fpfs_temp], 0 seg000:496B mov al, 22 seg000:496D imul [bp+last_found_partition] seg000:4970 mov bx, ax seg000:4972 cmp ds:free_space_space[bx], 0 seg000:4977 jz short fpfs_21 seg000:4979 sub al, al seg000:497B push ax seg000:497C mov al, [bp+last_found_partition] seg000:497F push ax seg000:4980 call verify_tracks seg000:4983 pop bx seg000:4984 pop bx seg000:4985 mov [bp+fpfs_temp], ax seg000:4988 seg000:4988 fpfs_21: ; CODE XREF: find_part_free_space+2EFj seg000:4988 mov al, 22 seg000:498A imul [bp+last_found_partition] seg000:498D mov bx, ax seg000:498F mov ax, [bp+fpfs_temp] seg000:4992 add ds:free_space_start[bx], ax seg000:4996 mov cl, ds:cur_disk seg000:499A push cx seg000:499B sub ds:free_space_space[bx], ax seg000:499F push ds:free_space_space[bx] seg000:49A3 mov si, bx seg000:49A5 call cylinders_to_mbytes seg000:49A8 pop bx seg000:49A9 pop bx seg000:49AA mov ds:free_space_mbytes_unused[si], ax seg000:49AE mov al, ds:cur_disk seg000:49B1 cbw seg000:49B2 mov bx, ax seg000:49B4 shl bx, 1 seg000:49B6 push ds:total_disk[bx] seg000:49BA push ds:free_space_space[si] seg000:49BE call cylinders_to_percent seg000:49C1 pop bx seg000:49C2 pop bx seg000:49C3 mov ds:free_space_percent_unused[si], ax seg000:49C7 cmp [bp+fpfs_temp], 0 seg000:49CB jz short fpfs_22 seg000:49CD mov al, 22 seg000:49CF imul [bp+last_found_partition] seg000:49D2 mov bx, ax seg000:49D4 cmp ds:free_space_space[bx], 0 seg000:49D9 jz short fpfs_22 seg000:49DB jmp fpfs_18 seg000:49DE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:49DE seg000:49DE fpfs_22: ; CODE XREF: find_part_free_space+343j seg000:49DE ; find_part_free_space+351j seg000:49DE cmp [bp+fpfs_type], 0 seg000:49E2 jnz short fpfs_23 seg000:49E4 mov al, 22 seg000:49E6 imul [bp+last_found_partition] seg000:49E9 mov bx, ax seg000:49EB cmp ds:free_space_mbytes_unused[bx], 2048 seg000:49F1 jbe short fpfs_23 seg000:49F3 mov al, ds:cur_disk seg000:49F6 push ax seg000:49F7 mov ax, 2048 seg000:49FA push ax seg000:49FB mov si, bx seg000:49FD call mbytes_to_cylinders seg000:4A00 pop bx seg000:4A01 pop bx seg000:4A02 dec ax seg000:4A03 mov ds:free_space_space[si], ax seg000:4A07 mov ax, ds:free_space_start[si] seg000:4A0B add ax, ds:free_space_space[si] seg000:4A0F dec ax seg000:4A10 mov ds:free_space_end[si], ax seg000:4A14 mov al, ds:cur_disk seg000:4A17 push ax seg000:4A18 push ds:free_space_space[si] seg000:4A1C call cylinders_to_mbytes seg000:4A1F pop bx seg000:4A20 pop bx seg000:4A21 mov ds:free_space_mbytes_unused[si], ax seg000:4A25 mov al, ds:cur_disk seg000:4A28 cbw seg000:4A29 mov bx, ax seg000:4A2B shl bx, 1 seg000:4A2D push ds:total_disk[bx] seg000:4A31 push ds:free_space_space[si] seg000:4A35 call cylinders_to_percent seg000:4A38 pop bx seg000:4A39 pop bx seg000:4A3A mov ds:free_space_percent_unused[si], ax seg000:4A3E seg000:4A3E fpfs_23: ; CODE XREF: find_part_free_space+35Aj seg000:4A3E ; find_part_free_space+369j seg000:4A3E mov al, [bp+last_found_partition] seg000:4A41 pop si seg000:4A42 pop di seg000:4A43 mov sp, bp seg000:4A45 pop bp seg000:4A46 retn seg000:4A46 find_part_free_space endp seg000:4A46 seg000:4A47 seg000:4A47 ; --------------- S U B R O U T I N E --------------------------------------- seg000:4A47 seg000:4A47 ; Attributes: bp-based frame seg000:4A47 seg000:4A47 sort_part_table proc near ; CODE XREF: change_active_partition+1E4p seg000:4A47 ; table_display+1Fp ... seg000:4A47 seg000:4A47 sort_changed = byte ptr -6 seg000:4A47 sort_i = byte ptr -4 seg000:4A47 sort_temp = byte ptr -2 seg000:4A47 sort_count = byte ptr 4 seg000:4A47 seg000:4A47 push bp seg000:4A48 mov bp, sp seg000:4A4A sub sp, 6 seg000:4A4D push di seg000:4A4E push si seg000:4A4F mov [bp+sort_i], 0 seg000:4A53 jmp short sortpt_2 seg000:4A55 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4A55 seg000:4A55 sortpt_1: ; CODE XREF: sort_part_table+21j seg000:4A55 mov al, [bp+sort_i] seg000:4A58 cbw seg000:4A59 mov bx, ax seg000:4A5B mov ds:sort[bx], al seg000:4A5F inc [bp+sort_i] seg000:4A62 seg000:4A62 sortpt_2: ; CODE XREF: sort_part_table+Cj seg000:4A62 mov al, [bp+sort_count] seg000:4A65 cmp [bp+sort_i], al seg000:4A68 jl short sortpt_1 seg000:4A6A mov [bp+sort_changed], 1 seg000:4A6E seg000:4A6E sortpt_3: ; CODE XREF: sort_part_table+43j seg000:4A6E cmp [bp+sort_changed], 0 seg000:4A72 jnz short sortpt_4 seg000:4A74 jmp sortpt_8 seg000:4A77 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4A77 seg000:4A77 sortpt_4: ; CODE XREF: sort_part_table+2Bj seg000:4A77 mov [bp+sort_changed], 0 seg000:4A7B mov [bp+sort_i], 1 seg000:4A7F jmp short sortpt_6 seg000:4A81 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4A81 seg000:4A81 sortpt_5: ; CODE XREF: sort_part_table+84j seg000:4A81 ; sort_part_table+8Ej ... seg000:4A81 inc [bp+sort_i] seg000:4A84 seg000:4A84 sortpt_6: ; CODE XREF: sort_part_table+38j seg000:4A84 mov al, [bp+sort_count] seg000:4A87 cmp [bp+sort_i], al seg000:4A8A jge short sortpt_3 seg000:4A8C mov al, ds:cur_disk seg000:4A8F cbw seg000:4A90 shl ax, 1 seg000:4A92 shl ax, 1 seg000:4A94 mov cx, ax seg000:4A96 mov al, [bp+sort_i] seg000:4A99 cbw seg000:4A9A mov bx, ax seg000:4A9C mov al, ds:sort[bx] seg000:4AA0 cbw seg000:4AA1 add ax, cx seg000:4AA3 mov si, 46 seg000:4AA6 imul si seg000:4AA8 mov di, ax seg000:4AAA mov ax, ds:part_table_end_cyl[di] seg000:4AAE mov dx, ax seg000:4AB0 mov al, ds:sort_1[bx] seg000:4AB4 cbw seg000:4AB5 add ax, cx seg000:4AB7 mov cx, dx seg000:4AB9 imul si seg000:4ABB mov bx, ax seg000:4ABD cmp ds:part_table_end_cyl[bx], cx seg000:4AC1 ja short sortpt_7 seg000:4AC3 mov ax, ds:part_table_num_sec_hw[di] seg000:4AC7 or ax, ds:part_table_num_sec_lw[di] seg000:4ACB jnz short sortpt_5 seg000:4ACD mov ax, ds:part_table_num_sec_hw[bx] seg000:4AD1 or ax, ds:part_table_num_sec_lw[bx] seg000:4AD5 jz short sortpt_5 seg000:4AD7 seg000:4AD7 sortpt_7: ; CODE XREF: sort_part_table+7Aj seg000:4AD7 mov al, [bp+sort_i] seg000:4ADA cbw seg000:4ADB mov bx, ax seg000:4ADD mov al, ds:sort_1[bx] seg000:4AE1 mov [bp+sort_temp], al seg000:4AE4 mov al, ds:sort[bx] seg000:4AE8 mov ds:sort_1[bx], al seg000:4AEC mov al, [bp+sort_temp] seg000:4AEF mov ds:sort[bx], al seg000:4AF3 mov [bp+sort_changed], 1 seg000:4AF7 jmp short sortpt_5 seg000:4AF9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4AF9 seg000:4AF9 sortpt_8: ; CODE XREF: sort_part_table+2Dj seg000:4AF9 pop si seg000:4AFA pop di seg000:4AFB mov sp, bp seg000:4AFD pop bp seg000:4AFE retn seg000:4AFE sort_part_table endp seg000:4AFE seg000:4AFF seg000:4AFF ; --------------- S U B R O U T I N E --------------------------------------- seg000:4AFF seg000:4AFF ; Attributes: bp-based frame seg000:4AFF seg000:4AFF find_ext_free_space proc near ; CODE XREF: main+2E9p seg000:4AFF ; volume_create:vc_8p seg000:4AFF seg000:4AFF fefs_i = byte ptr -0Eh seg000:4AFF fefs_ext_location= byte ptr -0Ch seg000:4AFF fefs_last_found_part= byte ptr -0Ah seg000:4AFF fefs_temp = word ptr -8 seg000:4AFF fefs_freespace_count= byte ptr -6 seg000:4AFF fefs_partition_count= byte ptr -4 seg000:4AFF fefs_any_partition= byte ptr -2 seg000:4AFF seg000:4AFF push bp seg000:4B00 mov bp, sp seg000:4B02 sub sp, 14 seg000:4B05 push di seg000:4B06 push si seg000:4B07 mov al, 23 seg000:4B09 push ax seg000:4B0A call sort_ext_table seg000:4B0D pop bx seg000:4B0E mov [bp+fefs_i], 0 seg000:4B12 seg000:4B12 fefs_1: ; CODE XREF: find_ext_free_space+37j seg000:4B12 mov al, 22 seg000:4B14 imul [bp+fefs_i] seg000:4B17 mov bx, ax seg000:4B19 sub ax, ax seg000:4B1B mov ds:free_space_space[bx], ax seg000:4B1F mov ds:free_space_start[bx], ax seg000:4B23 mov ds:free_space_end[bx], ax seg000:4B27 mov ds:free_space_mbytes_unused[bx], ax seg000:4B2B mov ds:free_space_percent_unused[bx], ax seg000:4B2F inc [bp+fefs_i] seg000:4B32 cmp [bp+fefs_i], 24 seg000:4B36 jl short fefs_1 seg000:4B38 mov al, 5 seg000:4B3A push ax seg000:4B3B call find_partition_location seg000:4B3E pop bx seg000:4B3F mov [bp+fefs_ext_location], al seg000:4B42 sub al, al seg000:4B44 mov [bp+fefs_partition_count], al seg000:4B47 mov [bp+fefs_any_partition], al seg000:4B4A mov [bp+fefs_i], al seg000:4B4D jmp short fefs_3 seg000:4B4F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4B4F seg000:4B4F fefs_2: ; CODE XREF: find_ext_free_space+82j seg000:4B4F inc [bp+fefs_i] seg000:4B52 seg000:4B52 fefs_3: ; CODE XREF: find_ext_free_space+4Ej seg000:4B52 cmp [bp+fefs_i], 23 seg000:4B56 jl short fefs_4 seg000:4B58 jmp fefs_5 seg000:4B5B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4B5B seg000:4B5B fefs_4: ; CODE XREF: find_ext_free_space+57j seg000:4B5B mov al, ds:cur_disk seg000:4B5E cbw seg000:4B5F mov cx, 24 seg000:4B62 mov bx, ax seg000:4B64 imul cx seg000:4B66 mov cx, ax seg000:4B68 mov al, [bp+fefs_i] seg000:4B6B cbw seg000:4B6C mov si, ax seg000:4B6E mov al, ds:sort[si] seg000:4B72 cbw seg000:4B73 add ax, cx seg000:4B75 mov cx, 46 seg000:4B78 imul cx seg000:4B7A mov di, ax seg000:4B7C cmp ds:ext_table_sys_id[di], 0 seg000:4B81 jz short fefs_2 seg000:4B83 shl bx, 1 seg000:4B85 shl bx, 1 seg000:4B87 mov al, [bp+fefs_ext_location] seg000:4B8A cbw seg000:4B8B add ax, bx seg000:4B8D imul cx seg000:4B8F mov bx, ax seg000:4B91 mov ax, ds:part_table_start_cyl[bx] seg000:4B95 mov ds:free_space_start, ax seg000:4B98 mov cx, ds:ext_table_start_cyl[di] seg000:4B9C mov dx, cx seg000:4B9E dec cx seg000:4B9F mov ds:free_space_end, cx seg000:4BA3 mov cl, ds:cur_disk seg000:4BA7 push cx seg000:4BA8 sub dx, ax seg000:4BAA mov ds:free_space_space, dx seg000:4BAE push dx seg000:4BAF call cylinders_to_mbytes seg000:4BB2 pop bx seg000:4BB3 pop bx seg000:4BB4 mov ds:free_space_mbytes_unused, ax seg000:4BB7 mov al, ds:cur_disk seg000:4BBA cbw seg000:4BBB mov bx, ax seg000:4BBD shl bx, 1 seg000:4BBF push ds:total_disk[bx] seg000:4BC3 push ds:free_space_space seg000:4BC7 call cylinders_to_percent seg000:4BCA pop bx seg000:4BCB pop bx seg000:4BCC mov ds:free_space_percent_unused, ax seg000:4BCF mov al, [bp+fefs_i] seg000:4BD2 mov [bp+fefs_partition_count], al seg000:4BD5 mov al, ds:sort[si] seg000:4BD9 mov [bp+fefs_last_found_part], al seg000:4BDC mov [bp+fefs_any_partition], 1 seg000:4BE0 seg000:4BE0 fefs_5: ; CODE XREF: find_ext_free_space+59j seg000:4BE0 cmp [bp+fefs_any_partition], 0 seg000:4BE4 jnz short fefs_6 seg000:4BE6 jmp fefs_11 seg000:4BE9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4BE9 seg000:4BE9 fefs_6: ; CODE XREF: find_ext_free_space+E5j seg000:4BE9 mov [bp+fefs_freespace_count], 1 seg000:4BED mov al, [bp+fefs_partition_count] seg000:4BF0 inc al seg000:4BF2 mov [bp+fefs_i], al seg000:4BF5 jmp fefs_9 seg000:4BF8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4BF8 seg000:4BF8 fefs_7: ; CODE XREF: find_ext_free_space+18Ej seg000:4BF8 mov al, 24 seg000:4BFA imul ds:cur_disk seg000:4BFE mov cx, ax seg000:4C00 mov al, [bp+fefs_i] seg000:4C03 cbw seg000:4C04 mov bx, ax seg000:4C06 mov al, ds:sort[bx] seg000:4C0A cbw seg000:4C0B add ax, cx seg000:4C0D mov si, 46 seg000:4C10 imul si seg000:4C12 mov di, ax seg000:4C14 cmp ds:ext_table_sys_id[di], 0 seg000:4C19 jz short fefs_8 seg000:4C1B mov al, [bp+fefs_last_found_part] seg000:4C1E cbw seg000:4C1F add ax, cx seg000:4C21 imul si seg000:4C23 mov si, ax seg000:4C25 mov ax, ds:ext_table_start_cyl[di] seg000:4C29 mov cx, ax seg000:4C2B sub ax, ds:ext_table_end_cyl[si] seg000:4C2F dec ax seg000:4C30 mov [bp+fefs_temp], ax seg000:4C33 mov dx, ax seg000:4C35 mov al, 22 seg000:4C37 imul [bp+fefs_freespace_count] seg000:4C3A mov di, ax seg000:4C3C mov ds:free_space_space[di], dx seg000:4C40 mov ax, ds:ext_table_end_cyl[si] seg000:4C44 inc ax seg000:4C45 mov ds:free_space_start[di], ax seg000:4C49 dec cx seg000:4C4A mov ds:free_space_end[di], cx seg000:4C4E mov al, ds:cur_disk seg000:4C51 push ax seg000:4C52 push ds:free_space_space[di] seg000:4C56 mov si, bx seg000:4C58 call cylinders_to_mbytes seg000:4C5B pop bx seg000:4C5C pop bx seg000:4C5D mov ds:free_space_mbytes_unused[di], ax seg000:4C61 mov al, ds:cur_disk seg000:4C64 cbw seg000:4C65 mov bx, ax seg000:4C67 shl bx, 1 seg000:4C69 push ds:total_disk[bx] seg000:4C6D push ds:free_space_space[di] seg000:4C71 call cylinders_to_percent seg000:4C74 pop bx seg000:4C75 pop bx seg000:4C76 mov ds:free_space_percent_unused[di], ax seg000:4C7A mov al, ds:sort[si] seg000:4C7E mov [bp+fefs_last_found_part], al seg000:4C81 inc [bp+fefs_freespace_count] seg000:4C84 seg000:4C84 fefs_8: ; CODE XREF: find_ext_free_space+11Aj seg000:4C84 inc [bp+fefs_i] seg000:4C87 seg000:4C87 fefs_9: ; CODE XREF: find_ext_free_space+F6j seg000:4C87 cmp [bp+fefs_i], 23 seg000:4C8B jge short fefs_10 seg000:4C8D jmp fefs_7 seg000:4C90 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4C90 seg000:4C90 fefs_10: ; CODE XREF: find_ext_free_space+18Cj seg000:4C90 mov al, [bp+fefs_last_found_part] seg000:4C93 cbw seg000:4C94 mov cx, 24 seg000:4C97 mov dx, ax seg000:4C99 mov al, ds:cur_disk seg000:4C9C cbw seg000:4C9D mov bx, dx seg000:4C9F mov si, ax seg000:4CA1 imul cx seg000:4CA3 add ax, bx seg000:4CA5 mov cx, 46 seg000:4CA8 imul cx seg000:4CAA mov bx, ax seg000:4CAC mov al, [bp+fefs_ext_location] seg000:4CAF cbw seg000:4CB0 shl si, 1 seg000:4CB2 shl si, 1 seg000:4CB4 add ax, si seg000:4CB6 imul cx seg000:4CB8 mov si, ax seg000:4CBA mov ax, ds:part_table_end_cyl[si] seg000:4CBE mov cx, ax seg000:4CC0 sub ax, ds:ext_table_end_cyl[bx] seg000:4CC4 mov [bp+fefs_temp], ax seg000:4CC7 mov dx, ax seg000:4CC9 mov al, 22 seg000:4CCB imul [bp+fefs_freespace_count] seg000:4CCE mov si, ax seg000:4CD0 mov ds:free_space_space[si], dx seg000:4CD4 mov ax, ds:ext_table_end_cyl[bx] seg000:4CD8 inc ax seg000:4CD9 mov ds:free_space_start[si], ax seg000:4CDD mov ds:free_space_end[si], cx seg000:4CE1 mov al, ds:cur_disk seg000:4CE4 push ax seg000:4CE5 push ds:free_space_space[si] seg000:4CE9 call cylinders_to_mbytes seg000:4CEC pop bx seg000:4CED pop bx seg000:4CEE mov ds:free_space_mbytes_unused[si], ax seg000:4CF2 mov al, ds:cur_disk seg000:4CF5 cbw seg000:4CF6 mov bx, ax seg000:4CF8 shl bx, 1 seg000:4CFA push ds:total_disk[bx] seg000:4CFE push ds:free_space_space[si] seg000:4D02 call cylinders_to_percent seg000:4D05 pop bx seg000:4D06 pop bx seg000:4D07 mov ds:free_space_percent_unused[si], ax seg000:4D0B jmp short fefs_12 seg000:4D0D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4D0D seg000:4D0D fefs_11: ; CODE XREF: find_ext_free_space+E7j seg000:4D0D mov al, ds:cur_disk seg000:4D10 cbw seg000:4D11 shl ax, 1 seg000:4D13 shl ax, 1 seg000:4D15 mov cx, ax seg000:4D17 mov al, [bp+fefs_ext_location] seg000:4D1A cbw seg000:4D1B add ax, cx seg000:4D1D mov cx, 46 seg000:4D20 imul cx seg000:4D22 mov bx, ax seg000:4D24 mov ax, ds:part_table_end_cyl[bx] seg000:4D28 mov cx, ax seg000:4D2A sub ax, ds:part_table_start_cyl[bx] seg000:4D2E inc ax seg000:4D2F mov ds:free_space_space, ax seg000:4D32 mov dx, ds:part_table_start_cyl[bx] seg000:4D36 mov ds:free_space_start, dx seg000:4D3A mov ds:free_space_end, cx seg000:4D3E mov cl, ds:cur_disk seg000:4D42 push cx seg000:4D43 push ax seg000:4D44 call cylinders_to_mbytes seg000:4D47 pop bx seg000:4D48 pop bx seg000:4D49 mov ds:free_space_mbytes_unused, ax seg000:4D4C mov al, ds:cur_disk seg000:4D4F cbw seg000:4D50 mov bx, ax seg000:4D52 shl bx, 1 seg000:4D54 push ds:total_disk[bx] seg000:4D58 push ds:free_space_space seg000:4D5C call cylinders_to_percent seg000:4D5F pop bx seg000:4D60 pop bx seg000:4D61 mov ds:free_space_percent_unused, ax seg000:4D64 seg000:4D64 fefs_12: ; CODE XREF: find_ext_free_space+20Cj seg000:4D64 mov [bp+fefs_temp], 0 seg000:4D69 seg000:4D69 fefs_13: ; CODE XREF: find_ext_free_space+30Ej seg000:4D69 mov [bp+fefs_temp], 0 seg000:4D6E mov [bp+fefs_i], 0 seg000:4D72 seg000:4D72 fefs_14: ; CODE XREF: find_ext_free_space+297j seg000:4D72 mov al, 22 seg000:4D74 imul [bp+fefs_i] seg000:4D77 mov bx, ax seg000:4D79 mov ax, [bp+fefs_temp] seg000:4D7C cmp ds:free_space_space[bx], ax seg000:4D80 jbe short fefs_15 seg000:4D82 mov ax, ds:free_space_space[bx] seg000:4D86 mov [bp+fefs_temp], ax seg000:4D89 mov al, [bp+fefs_i] seg000:4D8C mov [bp+fefs_last_found_part], al seg000:4D8F seg000:4D8F fefs_15: ; CODE XREF: find_ext_free_space+281j seg000:4D8F inc [bp+fefs_i] seg000:4D92 cmp [bp+fefs_i], 24 seg000:4D96 jl short fefs_14 seg000:4D98 mov [bp+fefs_temp], 0 seg000:4D9D mov al, 22 seg000:4D9F imul [bp+fefs_last_found_part] seg000:4DA2 mov bx, ax seg000:4DA4 cmp ds:free_space_space[bx], 0 seg000:4DA9 jz short fefs_16 seg000:4DAB mov al, 5 seg000:4DAD push ax seg000:4DAE mov al, [bp+fefs_last_found_part] seg000:4DB1 push ax seg000:4DB2 call verify_tracks seg000:4DB5 pop bx seg000:4DB6 pop bx seg000:4DB7 mov [bp+fefs_temp], ax seg000:4DBA seg000:4DBA fefs_16: ; CODE XREF: find_ext_free_space+2AAj seg000:4DBA mov al, 22 seg000:4DBC imul [bp+fefs_last_found_part] seg000:4DBF mov bx, ax seg000:4DC1 mov ax, [bp+fefs_temp] seg000:4DC4 add ds:free_space_start[bx], ax seg000:4DC8 mov cl, ds:cur_disk seg000:4DCC push cx seg000:4DCD sub ds:free_space_space[bx], ax seg000:4DD1 push ds:free_space_space[bx] seg000:4DD5 mov si, bx seg000:4DD7 call cylinders_to_mbytes seg000:4DDA pop bx seg000:4DDB pop bx seg000:4DDC mov ds:free_space_mbytes_unused[si], ax seg000:4DE0 mov al, ds:cur_disk seg000:4DE3 cbw seg000:4DE4 mov bx, ax seg000:4DE6 shl bx, 1 seg000:4DE8 push ds:total_disk[bx] seg000:4DEC push ds:free_space_space[si] seg000:4DF0 call cylinders_to_percent seg000:4DF3 pop bx seg000:4DF4 pop bx seg000:4DF5 mov ds:free_space_percent_unused[si], ax seg000:4DF9 cmp [bp+fefs_temp], 0 seg000:4DFD jz short fefs_17 seg000:4DFF mov al, 22 seg000:4E01 imul [bp+fefs_last_found_part] seg000:4E04 mov bx, ax seg000:4E06 cmp ds:free_space_space[bx], 0 seg000:4E0B jz short fefs_17 seg000:4E0D jmp fefs_13 seg000:4E10 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4E10 seg000:4E10 fefs_17: ; CODE XREF: find_ext_free_space+2FEj seg000:4E10 ; find_ext_free_space+30Cj seg000:4E10 mov al, 22 seg000:4E12 imul [bp+fefs_last_found_part] seg000:4E15 mov bx, ax seg000:4E17 cmp ds:free_space_mbytes_unused[bx], 2048 seg000:4E1D jbe short fefs_18 seg000:4E1F mov al, ds:cur_disk seg000:4E22 push ax seg000:4E23 mov ax, 2048 seg000:4E26 push ax seg000:4E27 mov si, bx seg000:4E29 call mbytes_to_cylinders seg000:4E2C pop bx seg000:4E2D pop bx seg000:4E2E dec ax seg000:4E2F mov ds:free_space_space[si], ax seg000:4E33 mov ax, ds:free_space_start[si] seg000:4E37 add ax, ds:free_space_space[si] seg000:4E3B dec ax seg000:4E3C mov ds:free_space_end[si], ax seg000:4E40 mov al, ds:cur_disk seg000:4E43 push ax seg000:4E44 push ds:free_space_space[si] seg000:4E48 call cylinders_to_mbytes seg000:4E4B pop bx seg000:4E4C pop bx seg000:4E4D mov ds:free_space_mbytes_unused[si], ax seg000:4E51 mov al, ds:cur_disk seg000:4E54 cbw seg000:4E55 mov bx, ax seg000:4E57 shl bx, 1 seg000:4E59 push ds:total_disk[bx] seg000:4E5D push ds:free_space_space[si] seg000:4E61 call cylinders_to_percent seg000:4E64 pop bx seg000:4E65 pop bx seg000:4E66 mov ds:free_space_percent_unused[si], ax seg000:4E6A seg000:4E6A fefs_18: ; CODE XREF: find_ext_free_space+31Ej seg000:4E6A mov al, [bp+fefs_last_found_part] seg000:4E6D pop si seg000:4E6E pop di seg000:4E6F mov sp, bp seg000:4E71 pop bp seg000:4E72 retn seg000:4E72 find_ext_free_space endp seg000:4E72 seg000:4E73 seg000:4E73 ; --------------- S U B R O U T I N E --------------------------------------- seg000:4E73 seg000:4E73 ; Attributes: bp-based frame seg000:4E73 seg000:4E73 sort_ext_table proc near ; CODE XREF: volume_display+Dp seg000:4E73 ; change_current_drive+15Fp ... seg000:4E73 seg000:4E73 swptemp2 = word ptr -0Ah seg000:4E73 swptemp1 = word ptr -8 seg000:4E73 sortex_changed = byte ptr -6 seg000:4E73 sortex_i = byte ptr -4 seg000:4E73 sortex_temp = byte ptr -2 seg000:4E73 sortex_count = byte ptr 4 seg000:4E73 seg000:4E73 push bp seg000:4E74 mov bp, sp seg000:4E76 sub sp, 10 seg000:4E79 push di seg000:4E7A push si seg000:4E7B mov [bp+sortex_i], 0 seg000:4E7F jmp short sortept_2 seg000:4E81 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4E81 seg000:4E81 sortept_1: ; CODE XREF: sort_ext_table+21j seg000:4E81 mov al, [bp+sortex_i] seg000:4E84 cbw seg000:4E85 mov bx, ax seg000:4E87 mov ds:sort[bx], al seg000:4E8B inc [bp+sortex_i] seg000:4E8E seg000:4E8E sortept_2: ; CODE XREF: sort_ext_table+Cj seg000:4E8E mov al, [bp+sortex_count] seg000:4E91 cmp [bp+sortex_i], al seg000:4E94 jl short sortept_1 seg000:4E96 mov [bp+sortex_changed], 1 seg000:4E9A seg000:4E9A sortept_3: ; CODE XREF: sort_ext_table+40j seg000:4E9A cmp [bp+sortex_changed], 0 seg000:4E9E jz short sortept_6 seg000:4EA0 mov [bp+sortex_changed], 0 seg000:4EA4 mov [bp+sortex_i], 1 seg000:4EA8 jmp short sortept_5 seg000:4EAA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4EAA seg000:4EAA sortept_4: ; CODE XREF: sort_ext_table+84j seg000:4EAA ; sort_ext_table+9Ej seg000:4EAA inc [bp+sortex_i] seg000:4EAD seg000:4EAD sortept_5: ; CODE XREF: sort_ext_table+35j seg000:4EAD mov al, [bp+sortex_count] seg000:4EB0 cmp [bp+sortex_i], al seg000:4EB3 jge short sortept_3 seg000:4EB5 mov al, 24 seg000:4EB7 imul ds:cur_disk seg000:4EBB mov cx, ax seg000:4EBD mov al, [bp+sortex_i] seg000:4EC0 cbw seg000:4EC1 mov bx, ax seg000:4EC3 mov al, ds:sort[bx] seg000:4EC7 mov dx, ax seg000:4EC9 cbw seg000:4ECA add ax, cx seg000:4ECC mov si, ax seg000:4ECE mov al, ds:sort_1[bx] seg000:4ED2 mov di, 46 seg000:4ED5 mov [bp+swptemp1], ax seg000:4ED8 mov ax, si seg000:4EDA mov [bp+swptemp2], dx seg000:4EDD imul di seg000:4EDF mov si, ax seg000:4EE1 mov ax, ds:ext_table_start_cyl[si] seg000:4EE5 mov dx, ax seg000:4EE7 mov al, byte ptr [bp+swptemp1] seg000:4EEA cbw seg000:4EEB add ax, cx seg000:4EED mov cx, dx seg000:4EEF imul di seg000:4EF1 mov si, ax seg000:4EF3 cmp ds:ext_table_start_cyl[si], cx seg000:4EF7 jbe short sortept_4 seg000:4EF9 mov al, byte ptr [bp+swptemp1] seg000:4EFC mov [bp+sortex_temp], al seg000:4EFF mov al, byte ptr [bp+swptemp2] seg000:4F02 mov ds:sort_1[bx], al seg000:4F06 mov al, [bp+sortex_temp] seg000:4F09 mov ds:sort[bx], al seg000:4F0D mov [bp+sortex_changed], 1 seg000:4F11 jmp short sortept_4 seg000:4F13 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4F13 seg000:4F13 sortept_6: ; CODE XREF: sort_ext_table+2Bj seg000:4F13 pop si seg000:4F14 pop di seg000:4F15 mov sp, bp seg000:4F17 pop bp seg000:4F18 retn seg000:4F18 sort_ext_table endp seg000:4F18 seg000:4F18 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4F19 align 2 seg000:4F1A seg000:4F1A ; --------------- S U B R O U T I N E --------------------------------------- seg000:4F1A seg000:4F1A ; Attributes: bp-based frame seg000:4F1A seg000:4F1A find_free_partition proc near ; CODE XREF: create_partition:cp_2p seg000:4F1A ; make_partition+8p seg000:4F1A seg000:4F1A ffp_i = byte ptr -2 seg000:4F1A seg000:4F1A push bp seg000:4F1B mov bp, sp seg000:4F1D sub sp, 2 seg000:4F20 mov [bp+ffp_i], 0 seg000:4F24 jmp short ffp_2 seg000:4F26 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4F26 seg000:4F26 ffp_1: ; CODE XREF: find_free_partition+34j seg000:4F26 inc [bp+ffp_i] seg000:4F29 seg000:4F29 ffp_2: ; CODE XREF: find_free_partition+Aj seg000:4F29 cmp [bp+ffp_i], 4 seg000:4F2D jge short ffp_3 seg000:4F2F mov al, ds:cur_disk seg000:4F32 cbw seg000:4F33 shl ax, 1 seg000:4F35 shl ax, 1 seg000:4F37 mov cx, ax seg000:4F39 mov al, [bp+ffp_i] seg000:4F3C cbw seg000:4F3D add ax, cx seg000:4F3F mov cx, 46 seg000:4F42 imul cx seg000:4F44 mov bx, ax seg000:4F46 mov ax, ds:part_table_num_sec_hw[bx] seg000:4F4A or ax, ds:part_table_num_sec_lw[bx] seg000:4F4E jnz short ffp_1 seg000:4F50 mov al, [bp+ffp_i] seg000:4F53 jmp short ffp_4 seg000:4F55 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4F55 seg000:4F55 ffp_3: ; CODE XREF: find_free_partition+13j seg000:4F55 mov al, 0FFh seg000:4F57 seg000:4F57 ffp_4: ; CODE XREF: find_free_partition+39j seg000:4F57 mov sp, bp seg000:4F59 pop bp seg000:4F5A retn seg000:4F5A find_free_partition endp seg000:4F5A seg000:4F5B seg000:4F5B ; --------------- S U B R O U T I N E --------------------------------------- seg000:4F5B seg000:4F5B ; Attributes: bp-based frame seg000:4F5B seg000:4F5B find_partition_type proc near ; CODE XREF: main+1FBp seg000:4F5B ; main+206p ... seg000:4F5B seg000:4F5B var_2 = byte ptr -2 seg000:4F5B arg_0 = byte ptr 4 seg000:4F5B seg000:4F5B push bp seg000:4F5C mov bp, sp seg000:4F5E sub sp, 2 seg000:4F61 mov [bp+var_2], 0 seg000:4F65 jmp short fpt_2 seg000:4F67 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4F67 seg000:4F67 fpt_1: ; CODE XREF: find_partition_type+33j seg000:4F67 inc [bp+var_2] seg000:4F6A seg000:4F6A fpt_2: ; CODE XREF: find_partition_type+Aj seg000:4F6A cmp [bp+var_2], 4 seg000:4F6E jge short fpt_3 seg000:4F70 mov al, ds:cur_disk seg000:4F73 cbw seg000:4F74 shl ax, 1 seg000:4F76 shl ax, 1 seg000:4F78 mov cx, ax seg000:4F7A mov al, [bp+var_2] seg000:4F7D cbw seg000:4F7E add ax, cx seg000:4F80 mov cx, 46 seg000:4F83 imul cx seg000:4F85 mov bx, ax seg000:4F87 mov al, [bp+arg_0] seg000:4F8A cmp ds:part_table_sys_id[bx], al seg000:4F8E jnz short fpt_1 seg000:4F90 mov al, 1 seg000:4F92 jmp short fpt_4 seg000:4F94 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4F94 seg000:4F94 fpt_3: ; CODE XREF: find_partition_type+13j seg000:4F94 sub al, al seg000:4F96 seg000:4F96 fpt_4: ; CODE XREF: find_partition_type+37j seg000:4F96 mov sp, bp seg000:4F98 pop bp seg000:4F99 retn seg000:4F99 find_partition_type endp seg000:4F99 seg000:4F9A seg000:4F9A ; --------------- S U B R O U T I N E --------------------------------------- seg000:4F9A seg000:4F9A ; Attributes: bp-based frame seg000:4F9A seg000:4F9A find_non_dos_partition proc near ; CODE XREF: delete_partition:case_delete_4p seg000:4F9A seg000:4F9A var_2 = byte ptr -2 seg000:4F9A seg000:4F9A push bp seg000:4F9B mov bp, sp seg000:4F9D sub sp, 2 seg000:4FA0 mov [bp+var_2], 0 seg000:4FA4 jmp short fndp_2 seg000:4FA6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4FA6 seg000:4FA6 fndp_1: ; CODE XREF: find_non_dos_partition+31j seg000:4FA6 ; find_non_dos_partition+38j ... seg000:4FA6 inc [bp+var_2] seg000:4FA9 seg000:4FA9 fndp_2: ; CODE XREF: find_non_dos_partition+Aj seg000:4FA9 cmp [bp+var_2], 4 seg000:4FAD jge short fndp_3 seg000:4FAF mov al, ds:cur_disk seg000:4FB2 cbw seg000:4FB3 shl ax, 1 seg000:4FB5 shl ax, 1 seg000:4FB7 mov cx, ax seg000:4FB9 mov al, [bp+var_2] seg000:4FBC cbw seg000:4FBD add ax, cx seg000:4FBF mov cx, 46 seg000:4FC2 imul cx seg000:4FC4 mov bx, ax seg000:4FC6 cmp ds:part_table_sys_id[bx], 0 seg000:4FCB jz short fndp_1 seg000:4FCD cmp ds:part_table_sys_id[bx], 1 seg000:4FD2 jz short fndp_1 seg000:4FD4 cmp ds:part_table_sys_id[bx], 4 seg000:4FD9 jz short fndp_1 seg000:4FDB cmp ds:part_table_sys_id[bx], 6 seg000:4FE0 jz short fndp_1 seg000:4FE2 cmp ds:part_table_sys_id[bx], 5 seg000:4FE7 jz short fndp_1 seg000:4FE9 mov al, 1 seg000:4FEB jmp short fndp_4 seg000:4FED ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4FED seg000:4FED fndp_3: ; CODE XREF: find_non_dos_partition+13j seg000:4FED sub al, al seg000:4FEF seg000:4FEF fndp_4: ; CODE XREF: find_non_dos_partition+51j seg000:4FEF mov sp, bp seg000:4FF1 pop bp seg000:4FF2 retn seg000:4FF2 find_non_dos_partition endp seg000:4FF2 seg000:4FF3 seg000:4FF3 ; --------------- S U B R O U T I N E --------------------------------------- seg000:4FF3 seg000:4FF3 ; Attributes: bp-based frame seg000:4FF3 seg000:4FF3 get_partition_size proc near ; CODE XREF: volume_delete+9Ap seg000:4FF3 ; volume_create+107p ... seg000:4FF3 seg000:4FF3 gpz_i = byte ptr -2 seg000:4FF3 gpz_type = byte ptr 4 seg000:4FF3 seg000:4FF3 push bp seg000:4FF4 mov bp, sp seg000:4FF6 sub sp, 2 seg000:4FF9 mov [bp+gpz_i], 0 seg000:4FFD jmp short gpz_2 seg000:4FFF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:4FFF seg000:4FFF gpz_1: ; CODE XREF: get_partition_size+33j seg000:4FFF inc [bp+gpz_i] seg000:5002 seg000:5002 gpz_2: ; CODE XREF: get_partition_size+Aj seg000:5002 cmp [bp+gpz_i], 4 seg000:5006 jge short gpz_3 seg000:5008 mov al, ds:cur_disk seg000:500B cbw seg000:500C shl ax, 1 seg000:500E shl ax, 1 seg000:5010 mov cx, ax seg000:5012 mov al, [bp+gpz_i] seg000:5015 cbw seg000:5016 add ax, cx seg000:5018 mov cx, 46 seg000:501B imul cx seg000:501D mov bx, ax seg000:501F mov al, [bp+gpz_type] seg000:5022 cmp ds:part_table_sys_id[bx], al seg000:5026 jnz short gpz_1 seg000:5028 mov ax, ds:part_table_mbytes_used[bx] seg000:502C jmp short gpz_4 seg000:502E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:502E seg000:502E gpz_3: ; CODE XREF: get_partition_size+13j seg000:502E call internal_program_error seg000:5031 seg000:5031 gpz_4: ; CODE XREF: get_partition_size+39j seg000:5031 mov sp, bp seg000:5033 pop bp seg000:5034 retn seg000:5034 get_partition_size endp seg000:5034 seg000:5035 seg000:5035 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5035 seg000:5035 ; Attributes: bp-based frame seg000:5035 seg000:5035 find_active_partition proc near ; CODE XREF: do_main_menu+121p seg000:5035 seg000:5035 fap_i = byte ptr -2 seg000:5035 seg000:5035 push bp seg000:5036 mov bp, sp seg000:5038 sub sp, 2 seg000:503B mov [bp+fap_i], 0 seg000:503F jmp short fap_2 seg000:5041 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5041 seg000:5041 fap_1: ; CODE XREF: find_active_partition+30j seg000:5041 inc [bp+fap_i] seg000:5044 seg000:5044 fap_2: ; CODE XREF: find_active_partition+Aj seg000:5044 cmp [bp+fap_i], 4 seg000:5048 jnb short fap_3 seg000:504A mov al, ds:cur_disk seg000:504D cbw seg000:504E shl ax, 1 seg000:5050 shl ax, 1 seg000:5052 mov cl, [bp+fap_i] seg000:5055 sub ch, ch seg000:5057 add ax, cx seg000:5059 mov cx, 46 seg000:505C imul cx seg000:505E mov bx, ax seg000:5060 cmp ds:part_table_boot_ind[bx], 80h seg000:5065 jnz short fap_1 seg000:5067 mov al, 1 seg000:5069 jmp short fap_4 seg000:506B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:506B seg000:506B fap_3: ; CODE XREF: find_active_partition+13j seg000:506B sub al, al seg000:506D seg000:506D fap_4: ; CODE XREF: find_active_partition+34j seg000:506D mov sp, bp seg000:506F pop bp seg000:5070 retn seg000:5070 find_active_partition endp seg000:5070 seg000:5071 seg000:5071 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5071 seg000:5071 ; Attributes: bp-based frame seg000:5071 seg000:5071 find_partition_location proc near ; CODE XREF: volume_create+B0p seg000:5071 ; init_partition_tables+3D2p ... seg000:5071 seg000:5071 var_2 = byte ptr -2 seg000:5071 arg_0 = byte ptr 4 seg000:5071 seg000:5071 push bp seg000:5072 mov bp, sp seg000:5074 sub sp, 2 seg000:5077 mov [bp+var_2], 0 seg000:507B jmp short fdl_2 seg000:507D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:507D seg000:507D fdl_1: ; CODE XREF: find_partition_location+33j seg000:507D inc [bp+var_2] seg000:5080 seg000:5080 fdl_2: ; CODE XREF: find_partition_location+Aj seg000:5080 cmp [bp+var_2], 4 seg000:5084 jge short fdl_3 seg000:5086 mov al, ds:cur_disk seg000:5089 cbw seg000:508A shl ax, 1 seg000:508C shl ax, 1 seg000:508E mov cx, ax seg000:5090 mov al, [bp+var_2] seg000:5093 cbw seg000:5094 add ax, cx seg000:5096 mov cx, 46 seg000:5099 imul cx seg000:509B mov bx, ax seg000:509D mov al, [bp+arg_0] seg000:50A0 cmp ds:part_table_sys_id[bx], al seg000:50A4 jnz short fdl_1 seg000:50A6 mov al, [bp+var_2] seg000:50A9 jmp short fdl_4 seg000:50AB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:50AB seg000:50AB fdl_3: ; CODE XREF: find_partition_location+13j seg000:50AB mov al, 0FFh seg000:50AD seg000:50AD fdl_4: ; CODE XREF: find_partition_location+38j seg000:50AD mov sp, bp seg000:50AF pop bp seg000:50B0 retn seg000:50B0 find_partition_location endp seg000:50B0 seg000:50B1 seg000:50B1 ; --------------- S U B R O U T I N E --------------------------------------- seg000:50B1 seg000:50B1 ; Attributes: bp-based frame seg000:50B1 seg000:50B1 find_free_ext proc near ; CODE XREF: make_volume+8p seg000:50B1 seg000:50B1 ffe_i = byte ptr -2 seg000:50B1 seg000:50B1 push bp seg000:50B2 mov bp, sp seg000:50B4 sub sp, 2 seg000:50B7 mov [bp+ffe_i], 0 seg000:50BB jmp short ffe_2 seg000:50BD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:50BD seg000:50BD ffe_1: ; CODE XREF: find_free_ext+2Fj seg000:50BD inc [bp+ffe_i] seg000:50C0 seg000:50C0 ffe_2: ; CODE XREF: find_free_ext+Aj seg000:50C0 cmp [bp+ffe_i], 23 seg000:50C4 jge short ffe_3 seg000:50C6 mov al, [bp+ffe_i] seg000:50C9 cbw seg000:50CA mov cx, ax seg000:50CC mov al, 24 seg000:50CE imul ds:cur_disk seg000:50D2 add ax, cx seg000:50D4 mov cx, 46 seg000:50D7 imul cx seg000:50D9 mov bx, ax seg000:50DB cmp ds:ext_table_sys_id[bx], 0 seg000:50E0 jnz short ffe_1 seg000:50E2 mov al, [bp+ffe_i] seg000:50E5 jmp short ffe_4 seg000:50E7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:50E7 seg000:50E7 ffe_3: ; CODE XREF: find_free_ext+13j seg000:50E7 mov al, 0FFh seg000:50E9 seg000:50E9 ffe_4: ; CODE XREF: find_free_ext+34j seg000:50E9 mov sp, bp seg000:50EB pop bp seg000:50EC retn seg000:50EC find_free_ext endp seg000:50EC seg000:50ED seg000:50ED ; --------------- S U B R O U T I N E --------------------------------------- seg000:50ED seg000:50ED ; Attributes: bp-based frame seg000:50ED seg000:50ED find_logical_drive proc near ; CODE XREF: delete_partition+17Ep seg000:50ED ; ext_delete+71p ... seg000:50ED seg000:50ED findlogdrv_i = byte ptr -2 seg000:50ED seg000:50ED push bp seg000:50EE mov bp, sp seg000:50F0 sub sp, 2 seg000:50F3 mov [bp+findlogdrv_i], 0 seg000:50F7 jmp short findlogdrv_2 seg000:50F9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:50F9 seg000:50F9 findlogdrv_1: ; CODE XREF: find_logical_drive+2Ej seg000:50F9 inc [bp+findlogdrv_i] seg000:50FC seg000:50FC findlogdrv_2: ; CODE XREF: find_logical_drive+Aj seg000:50FC cmp [bp+findlogdrv_i], 23 seg000:5100 jnb short findlogdrv_3 seg000:5102 mov al, 24 seg000:5104 imul ds:cur_disk seg000:5108 mov cl, [bp+findlogdrv_i] seg000:510B sub ch, ch seg000:510D add ax, cx seg000:510F mov cx, 46 seg000:5112 imul cx seg000:5114 mov bx, ax seg000:5116 cmp ds:ext_table_sys_id[bx], 0 seg000:511B jz short findlogdrv_1 seg000:511D mov al, 1 seg000:511F jmp short findlogdrv_4 seg000:5121 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5121 seg000:5121 findlogdrv_3: ; CODE XREF: find_logical_drive+13j seg000:5121 sub al, al seg000:5123 seg000:5123 findlogdrv_4: ; CODE XREF: find_logical_drive+32j seg000:5123 mov sp, bp seg000:5125 pop bp seg000:5126 retn seg000:5126 find_logical_drive endp seg000:5126 seg000:5127 seg000:5127 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5127 seg000:5127 ; Attributes: bp-based frame seg000:5127 seg000:5127 get_num_logical_dos_drives proc near ; CODE XREF: volume_delete+41p seg000:5127 ; dos_create_partition+F8p ... seg000:5127 seg000:5127 gnldd_i = byte ptr -4 seg000:5127 gnldd_number = byte ptr -2 seg000:5127 seg000:5127 push bp seg000:5128 mov bp, sp seg000:512A sub sp, 4 seg000:512D sub al, al seg000:512F mov [bp+gnldd_number], al seg000:5132 mov [bp+gnldd_i], al seg000:5135 jmp short gnldd_4 seg000:5137 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5137 seg000:5137 gnldd_1: ; CODE XREF: get_num_logical_dos_drives+44j seg000:5137 mov al, [bp+gnldd_i] seg000:513A cbw seg000:513B mov cx, ax seg000:513D mov al, 24 seg000:513F imul ds:cur_disk seg000:5143 add ax, cx seg000:5145 mov cx, 46 seg000:5148 imul cx seg000:514A mov bx, ax seg000:514C cmp ds:ext_table_sys_id[bx], 1 seg000:5151 jz short gnldd_2 seg000:5153 cmp ds:ext_table_sys_id[bx], 4 seg000:5158 jz short gnldd_2 seg000:515A cmp ds:ext_table_sys_id[bx], 6 seg000:515F jnz short gnldd_3 seg000:5161 seg000:5161 gnldd_2: ; CODE XREF: get_num_logical_dos_drives+2Aj seg000:5161 ; get_num_logical_dos_drives+31j seg000:5161 inc [bp+gnldd_number] seg000:5164 seg000:5164 gnldd_3: ; CODE XREF: get_num_logical_dos_drives+38j seg000:5164 inc [bp+gnldd_i] seg000:5167 seg000:5167 gnldd_4: ; CODE XREF: get_num_logical_dos_drives+Ej seg000:5167 cmp [bp+gnldd_i], 23 seg000:516B jl short gnldd_1 seg000:516D mov al, [bp+gnldd_number] seg000:5170 mov sp, bp seg000:5172 pop bp seg000:5173 retn seg000:5173 get_num_logical_dos_drives endp seg000:5173 seg000:5174 seg000:5174 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5174 seg000:5174 ; Attributes: bp-based frame seg000:5174 seg000:5174 find_ext_drive proc near ; CODE XREF: volume_delete+292p seg000:5174 seg000:5174 fed_number_found= byte ptr -4 seg000:5174 fed_i = byte ptr -2 seg000:5174 fed_offset = byte ptr 4 seg000:5174 seg000:5174 push bp seg000:5175 mov bp, sp seg000:5177 sub sp, 4 seg000:517A sub al, al seg000:517C mov [bp+fed_i], al seg000:517F mov [bp+fed_number_found], al seg000:5182 jmp short fed_3 seg000:5184 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5184 seg000:5184 fed_1: ; CODE XREF: find_ext_drive+4Cj seg000:5184 inc [bp+fed_i] seg000:5187 seg000:5187 fed_2: ; CODE XREF: find_ext_drive+44j seg000:5187 inc [bp+fed_number_found] seg000:518A seg000:518A fed_3: ; CODE XREF: find_ext_drive+Ej seg000:518A cmp [bp+fed_number_found], 23 seg000:518E jge short fed_5 seg000:5190 mov al, [bp+fed_number_found] seg000:5193 cbw seg000:5194 mov cx, ax seg000:5196 mov al, 24 seg000:5198 imul ds:cur_disk seg000:519C add ax, cx seg000:519E mov cx, 46 seg000:51A1 imul cx seg000:51A3 mov bx, ax seg000:51A5 cmp ds:ext_table_sys_id[bx], 1 seg000:51AA jz short fed_4 seg000:51AC cmp ds:ext_table_sys_id[bx], 4 seg000:51B1 jz short fed_4 seg000:51B3 cmp ds:ext_table_sys_id[bx], 6 seg000:51B8 jnz short fed_2 seg000:51BA seg000:51BA fed_4: ; CODE XREF: find_ext_drive+36j seg000:51BA ; find_ext_drive+3Dj seg000:51BA mov al, [bp+fed_offset] seg000:51BD cmp [bp+fed_i], al seg000:51C0 jnz short fed_1 seg000:51C2 mov al, [bp+fed_number_found] seg000:51C5 jmp short fed_6 seg000:51C7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:51C7 seg000:51C7 fed_5: ; CODE XREF: find_ext_drive+1Aj seg000:51C7 call internal_program_error seg000:51CA mov al, 0FFh seg000:51CC seg000:51CC fed_6: ; CODE XREF: find_ext_drive+51j seg000:51CC mov sp, bp seg000:51CE pop bp seg000:51CF retn seg000:51CF find_ext_drive endp seg000:51CF seg000:51D0 seg000:51D0 ; --------------- S U B R O U T I N E --------------------------------------- seg000:51D0 seg000:51D0 ; Attributes: bp-based frame seg000:51D0 seg000:51D0 find_previous_drive proc near seg000:51D0 seg000:51D0 var_6 = byte ptr -6 seg000:51D0 var_4 = byte ptr -4 seg000:51D0 var_2 = byte ptr -2 seg000:51D0 arg_0 = byte ptr 4 seg000:51D0 seg000:51D0 push bp seg000:51D1 mov bp, sp seg000:51D3 sub sp, 6 seg000:51D6 sub al, al seg000:51D8 mov [bp+var_2], al seg000:51DB mov [bp+var_6], al seg000:51DE mov [bp+var_4], al seg000:51E1 jmp short loc_51EF seg000:51E3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:51E3 seg000:51E3 loc_51E3: ; CODE XREF: find_previous_drive+47j seg000:51E3 mov al, [bp+var_4] seg000:51E6 mov [bp+var_6], al seg000:51E9 inc [bp+var_2] seg000:51EC seg000:51EC loc_51EC: ; CODE XREF: find_previous_drive+3Fj seg000:51EC inc [bp+var_4] seg000:51EF seg000:51EF loc_51EF: ; CODE XREF: find_previous_drive+11j seg000:51EF cmp [bp+var_4], 23 seg000:51F3 jge short loc_521E seg000:51F5 mov al, [bp+var_4] seg000:51F8 cbw seg000:51F9 mov cx, ax seg000:51FB mov al, 24 seg000:51FD imul ds:cur_disk seg000:5201 add ax, cx seg000:5203 mov cx, 46 seg000:5206 imul cx seg000:5208 mov bx, ax seg000:520A cmp ds:ext_table_sys_id[bx], 0 seg000:520F jz short loc_51EC seg000:5211 mov al, [bp+arg_0] seg000:5214 cmp [bp+var_2], al seg000:5217 jnz short loc_51E3 seg000:5219 mov al, [bp+var_6] seg000:521C jmp short loc_5223 seg000:521E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:521E seg000:521E loc_521E: ; CODE XREF: find_previous_drive+23j seg000:521E call internal_program_error seg000:5221 mov al, 0FFh seg000:5223 seg000:5223 loc_5223: ; CODE XREF: find_previous_drive+4Cj seg000:5223 mov sp, bp seg000:5225 pop bp seg000:5226 retn seg000:5226 find_previous_drive endp seg000:5226 seg000:5226 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5227 align 2 seg000:5228 seg000:5228 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5228 seg000:5228 ; Attributes: bp-based frame seg000:5228 seg000:5228 clear_screen proc near ; CODE XREF: main+81p seg000:5228 ; do_main_menu:loc_3F1p ... seg000:5228 seg000:5228 var_4 = word ptr -4 seg000:5228 var_2 = word ptr -2 seg000:5228 arg_0 = word ptr 4 seg000:5228 arg_2 = word ptr 6 seg000:5228 arg_4 = word ptr 8 seg000:5228 arg_6 = word ptr 0Ah seg000:5228 seg000:5228 push bp seg000:5229 mov bp, sp seg000:522B sub sp, 4 seg000:522E lea ax, [bp+var_2] seg000:5231 mov [bp+var_4], ax seg000:5234 cmp ds:status_flag, 1 seg000:5239 jnz short clscr_1 seg000:523B mov cl, ds:video_attribute seg000:523F mov byte ptr [bp+var_2], cl seg000:5242 jmp short clscr_3 seg000:5244 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5244 seg000:5244 clscr_1: ; CODE XREF: clear_screen+11j seg000:5244 cmp ds:mono_flag, 1 seg000:5249 jnz short clscr_2 seg000:524B mov byte ptr [bp+var_2], 7 seg000:524F jmp short clscr_3 seg000:5251 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5251 seg000:5251 clscr_2: ; CODE XREF: clear_screen+21j seg000:5251 mov byte ptr [bp+var_2], 17h seg000:5255 seg000:5255 clscr_3: ; CODE XREF: clear_screen+1Aj seg000:5255 ; clear_screen+27j seg000:5255 push [bp+arg_0] seg000:5258 push [bp+arg_2] seg000:525B push [bp+arg_4] seg000:525E push [bp+arg_6] seg000:5261 sub ax, ax seg000:5263 push ax seg000:5264 push ds seg000:5265 push [bp+var_4] seg000:5268 push ax seg000:5269 call VIOSCROLLUP seg000:526E mov sp, bp seg000:5270 pop bp seg000:5271 retn seg000:5271 clear_screen endp seg000:5271 seg000:5272 seg000:5272 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5272 seg000:5272 seg000:5272 init_video_information proc near ; CODE XREF: main:_main_02p seg000:5272 mov ds:mono_flag, 0 seg000:5277 mov byte ptr ds:regs_x_ax+1, 0Fh seg000:527C mov ax, offset regs_x_ax seg000:527F push ax seg000:5280 push ax seg000:5281 mov cx, 10h seg000:5284 push cx seg000:5285 call int86 seg000:5288 add sp, 6 seg000:528B mov al, byte ptr ds:regs_x_ax seg000:528E mov ds:video_mode, al seg000:5291 mov al, byte ptr ds:regs_x_bx+1 seg000:5294 mov ds:display_page, al seg000:5297 call get_video_attribute seg000:529A cmp ds:status_flag, 0 seg000:529F jnz short ivi_3 seg000:52A1 mov byte ptr ds:regs_x_ax, 3 seg000:52A6 cmp ds:video_mode, 7 seg000:52AB jz short ivi_1 seg000:52AD cmp ds:video_mode, 0Fh seg000:52B2 jnz short ivi_2 seg000:52B4 seg000:52B4 ivi_1: ; CODE XREF: init_video_information+39j seg000:52B4 mov byte ptr ds:regs_x_ax, 2 seg000:52B9 mov ds:mono_flag, 1 seg000:52BE seg000:52BE ivi_2: ; CODE XREF: init_video_information+40j seg000:52BE mov byte ptr ds:regs_x_ax+1, 0 seg000:52C3 mov ax, offset regs_x_ax seg000:52C6 push ax seg000:52C7 push ax seg000:52C8 mov cx, 10h seg000:52CB push cx seg000:52CC call int86 seg000:52CF add sp, 6 seg000:52D2 mov byte ptr ds:regs_x_ax+1, 5 seg000:52D7 mov byte ptr ds:regs_x_ax, 0 seg000:52DC mov ax, offset regs_x_ax seg000:52DF push ax seg000:52E0 push ax seg000:52E1 mov ax, 10h seg000:52E4 push ax seg000:52E5 call int86 seg000:52E8 add sp, 6 seg000:52EB seg000:52EB ivi_3: ; CODE XREF: init_video_information+2Dj seg000:52EB retn seg000:52EB init_video_information endp seg000:52EB seg000:52EC seg000:52EC ; --------------- S U B R O U T I N E --------------------------------------- seg000:52EC seg000:52EC ; Attributes: bp-based frame seg000:52EC seg000:52EC reset_video_information proc near ; CODE XREF: main:_main_10p seg000:52EC ; reboot_system+D0p seg000:52EC push bp seg000:52ED mov bp, sp seg000:52EF sub sp, 2 seg000:52F2 cmp ds:status_flag, 0 seg000:52F7 jnz short rvi_ret seg000:52F9 sub ax, ax seg000:52FB push ax seg000:52FC push ax seg000:52FD mov cx, 24 seg000:5300 push cx seg000:5301 mov cx, 79 seg000:5304 push cx seg000:5305 push ax seg000:5306 mov cx, offset video_attribute seg000:5309 push ds seg000:530A push cx seg000:530B push ax seg000:530C call VIOSCROLLUP seg000:5311 mov byte ptr ds:regs_x_ax+1, 0 seg000:5316 mov al, ds:video_mode seg000:5319 mov byte ptr ds:regs_x_ax, al seg000:531C mov ax, offset regs_x_ax seg000:531F push ax seg000:5320 push ax seg000:5321 mov cx, 10h seg000:5324 push cx seg000:5325 call int86 seg000:5328 add sp, 6 seg000:532B mov byte ptr ds:regs_x_ax+1, 5 seg000:5330 mov al, ds:display_page seg000:5333 mov byte ptr ds:regs_x_ax, al seg000:5336 mov ax, offset regs_x_ax seg000:5339 push ax seg000:533A push ax seg000:533B mov ax, 10h seg000:533E push ax seg000:533F call int86 seg000:5342 seg000:5342 rvi_ret: ; CODE XREF: reset_video_information+Bj seg000:5342 mov sp, bp seg000:5344 pop bp seg000:5345 retn seg000:5345 reset_video_information endp seg000:5345 seg000:5346 seg000:5346 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5346 seg000:5346 seg000:5346 get_video_attribute proc near ; CODE XREF: init_video_information+25p seg000:5346 mov byte ptr ds:regs_x_ax+1, 8 seg000:534B mov al, ds:display_page seg000:534E mov byte ptr ds:regs_x_bx+1, al seg000:5351 mov ax, offset regs_x_ax seg000:5354 push ax seg000:5355 push ax seg000:5356 mov ax, 10h seg000:5359 push ax seg000:535A call int86 seg000:535D add sp, 6 seg000:5360 mov al, byte ptr ds:regs_x_ax+1 seg000:5363 mov ds:video_attribute, al seg000:5366 retn seg000:5366 get_video_attribute endp seg000:5366 seg000:5366 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5367 align 2 seg000:5368 seg000:5368 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5368 seg000:5368 ; Attributes: bp-based frame seg000:5368 seg000:5368 make_partition proc near ; CODE XREF: main+254p seg000:5368 ; main+2D1p ... seg000:5368 seg000:5368 mp_temp4_lw = word ptr -1Ah seg000:5368 mp_temp4_hw = word ptr -18h seg000:5368 mp_temp3_lw = word ptr -16h seg000:5368 mp_temp3_hw = word ptr -14h seg000:5368 mp_temp2_lw = word ptr -12h seg000:5368 mp_temp2_hw = word ptr -10h seg000:5368 mp_temp1_lw = word ptr -0Eh seg000:5368 mp_temp1_hw = word ptr -0Ch seg000:5368 mp_i = word ptr -0Ah seg000:5368 mp_table_ptr = byte ptr -8 seg000:5368 mp_temp = byte ptr -6 seg000:5368 mp_total_sectors_lw= word ptr -4 seg000:5368 mp_total_sectors_hw= word ptr -2 seg000:5368 mp_size = word ptr 4 seg000:5368 mp_free_ptr = byte ptr 6 seg000:5368 mp_bootable = byte ptr 8 seg000:5368 mp_type = byte ptr 0Ah seg000:5368 seg000:5368 push bp seg000:5369 mov bp, sp seg000:536B sub sp, 26 seg000:536E push di seg000:536F push si seg000:5370 call find_free_partition seg000:5373 mov [bp+mp_table_ptr], al seg000:5376 inc al seg000:5378 jnz short mp_1 seg000:537A jmp mp_13 seg000:537D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:537D seg000:537D mp_1: ; CODE XREF: make_partition+10j seg000:537D cmp [bp+mp_bootable], 80h seg000:5381 jnz short mp_4 seg000:5383 mov [bp+mp_i], 0 seg000:5388 seg000:5388 mp_2: ; CODE XREF: make_partition+4Aj seg000:5388 mov al, ds:cur_disk seg000:538B cbw seg000:538C shl ax, 1 seg000:538E shl ax, 1 seg000:5390 add ax, [bp+mp_i] seg000:5393 mov cx, 46 seg000:5396 mul cx seg000:5398 mov bx, ax seg000:539A cmp ds:part_table_boot_ind[bx], 80h seg000:539F jnz short mp_3 seg000:53A1 mov ds:part_table_changed[bx], 1 seg000:53A6 mov ds:part_table_boot_ind[bx], 0 seg000:53AB seg000:53AB mp_3: ; CODE XREF: make_partition+37j seg000:53AB inc [bp+mp_i] seg000:53AE cmp [bp+mp_i], 4 seg000:53B2 jb short mp_2 seg000:53B4 mov al, ds:cur_disk seg000:53B7 cbw seg000:53B8 shl ax, 1 seg000:53BA shl ax, 1 seg000:53BC mov cx, ax seg000:53BE mov al, [bp+mp_table_ptr] seg000:53C1 cbw seg000:53C2 add ax, cx seg000:53C4 mov cx, 46 seg000:53C7 imul cx seg000:53C9 mov bx, ax seg000:53CB mov ds:part_table_boot_ind[bx], 80h seg000:53D0 jmp short mp_5 seg000:53D2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:53D2 seg000:53D2 mp_4: ; CODE XREF: make_partition+19j seg000:53D2 mov al, ds:cur_disk seg000:53D5 cbw seg000:53D6 shl ax, 1 seg000:53D8 shl ax, 1 seg000:53DA mov cx, ax seg000:53DC mov al, [bp+mp_table_ptr] seg000:53DF cbw seg000:53E0 add ax, cx seg000:53E2 mov cx, 46 seg000:53E5 imul cx seg000:53E7 mov bx, ax seg000:53E9 mov ds:part_table_boot_ind[bx], 0 seg000:53EE seg000:53EE mp_5: ; CODE XREF: make_partition+68j seg000:53EE mov al, 22 seg000:53F0 imul [bp+mp_free_ptr] seg000:53F3 mov bx, ax seg000:53F5 mov ax, ds:free_space_start[bx] seg000:53F9 mov cx, ax seg000:53FB mov al, ds:cur_disk seg000:53FE cbw seg000:53FF mov dx, ax seg000:5401 shl ax, 1 seg000:5403 shl ax, 1 seg000:5405 mov bx, ax seg000:5407 mov al, [bp+mp_table_ptr] seg000:540A cbw seg000:540B add ax, bx seg000:540D mov bx, 46 seg000:5410 mov si, dx seg000:5412 imul bx seg000:5414 mov bx, ax seg000:5416 mov ds:part_table_start_cyl[bx], cx seg000:541A add cx, [bp+mp_size] seg000:541D dec cx seg000:541E mov ds:part_table_end_cyl[bx], cx seg000:5422 mov ds:part_table_start_sector[bx], 1 seg000:5427 mov al, ds:max_sector[si] seg000:542B mov ds:part_table_end_sector[bx], al seg000:542F shl si, 1 seg000:5431 mov al, byte ptr ds:max_head[si] seg000:5435 dec al seg000:5437 mov ds:part_table_end_head[bx], al seg000:543B mov [bp+mp_temp], 0 seg000:543F cmp ds:part_table_start_cyl[bx], 0 seg000:5444 jnz short mp_6 seg000:5446 mov [bp+mp_temp], 1 seg000:544A seg000:544A mp_6: ; CODE XREF: make_partition+DCj seg000:544A mov al, ds:cur_disk seg000:544D cbw seg000:544E mov cx, ax seg000:5450 shl ax, 1 seg000:5452 shl ax, 1 seg000:5454 mov dx, ax seg000:5456 mov al, [bp+mp_table_ptr] seg000:5459 cbw seg000:545A add ax, dx seg000:545C mov bx, 46 seg000:545F imul bx seg000:5461 mov bx, ax seg000:5463 mov al, [bp+mp_temp] seg000:5466 mov ds:part_table_start_head[bx], al seg000:546A sub ah, ah seg000:546C sub dx, dx seg000:546E push dx seg000:546F push ax seg000:5470 mov si, cx seg000:5472 mov al, ds:max_sector[si] seg000:5476 push dx seg000:5477 push ax seg000:5478 mov di, ax seg000:547A mov [bp+mp_temp1_lw], di seg000:547D mov [bp+mp_temp1_hw], dx seg000:5480 mov di, bx seg000:5482 call mul32 seg000:5485 push [bp+mp_temp1_hw] seg000:5488 push [bp+mp_temp1_lw] seg000:548B shl si, 1 seg000:548D mov cx, ds:max_head[si] seg000:5491 sub bx, bx seg000:5493 push bx seg000:5494 push cx seg000:5495 mov si, ax seg000:5497 mov [bp+mp_temp2_lw], si seg000:549A mov [bp+mp_temp2_hw], dx seg000:549D call mul32 seg000:54A0 push dx seg000:54A1 push ax seg000:54A2 mov cx, ds:part_table_end_cyl[di] seg000:54A6 sub cx, ds:part_table_start_cyl[di] seg000:54AA inc cx seg000:54AB sub bx, bx seg000:54AD push bx seg000:54AE push cx seg000:54AF mov si, ax seg000:54B1 mov [bp+mp_temp3_lw], si seg000:54B4 mov [bp+mp_temp3_hw], dx seg000:54B7 call mul32 seg000:54BA sub ax, [bp+mp_temp2_lw] seg000:54BD sbb dx, [bp+mp_temp2_hw] seg000:54C0 mov ds:part_table_num_sec_lw[di], ax seg000:54C4 mov ds:part_table_num_sec_hw[di], dx seg000:54C8 push [bp+mp_temp1_hw] seg000:54CB push [bp+mp_temp1_lw] seg000:54CE mov al, ds:part_table_start_head[di] seg000:54D2 sub ah, ah seg000:54D4 sub dx, dx seg000:54D6 push dx seg000:54D7 push ax seg000:54D8 call mul32 seg000:54DB mov cx, ds:part_table_start_cyl[di] seg000:54DF sub bx, bx seg000:54E1 push bx seg000:54E2 push cx seg000:54E3 push [bp+mp_temp3_hw] seg000:54E6 push [bp+mp_temp3_lw] seg000:54E9 mov si, ax seg000:54EB mov [bp+mp_temp4_lw], si seg000:54EE mov [bp+mp_temp4_hw], dx seg000:54F1 call mul32 seg000:54F4 add ax, [bp+mp_temp4_lw] seg000:54F7 adc dx, [bp+mp_temp4_hw] seg000:54FA mov [bp+mp_total_sectors_lw], ax seg000:54FD mov [bp+mp_total_sectors_hw], dx seg000:5500 mov ds:part_table_rel_sec_lw[di], ax seg000:5504 mov ds:part_table_rel_sec_hw[di], dx seg000:5508 cmp [bp+mp_type], 5 seg000:550C jnz short mp_7 seg000:550E mov [bp+mp_temp], 5 seg000:5512 jmp short mp_12 seg000:5514 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5514 seg000:5514 mp_7: ; CODE XREF: make_partition+1A4j seg000:5514 cmp [bp+mp_type], 0 seg000:5518 jnz short mp_11 seg000:551A mov al, ds:cur_disk seg000:551D cbw seg000:551E shl ax, 1 seg000:5520 shl ax, 1 seg000:5522 mov cx, ax seg000:5524 mov al, [bp+mp_table_ptr] seg000:5527 cbw seg000:5528 add ax, cx seg000:552A mov cx, 46 seg000:552D imul cx seg000:552F mov bx, ax seg000:5531 mov ax, ds:part_table_num_sec_lw[bx] seg000:5535 mov dx, ds:part_table_num_sec_hw[bx] seg000:5539 add [bp+mp_total_sectors_lw], ax seg000:553C adc [bp+mp_total_sectors_hw], dx seg000:553F jz short mp_8 seg000:5541 mov [bp+mp_temp], 6 seg000:5545 jmp short mp_12 seg000:5547 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5547 seg000:5547 mp_8: ; CODE XREF: make_partition+1D7j seg000:5547 mov al, ds:cur_disk seg000:554A cbw seg000:554B shl ax, 1 seg000:554D shl ax, 1 seg000:554F mov cx, ax seg000:5551 mov al, [bp+mp_table_ptr] seg000:5554 cbw seg000:5555 add ax, cx seg000:5557 mov cx, 46 seg000:555A imul cx seg000:555C mov bx, ax seg000:555E cmp ds:part_table_num_sec_hw[bx], 0 seg000:5563 jnz short mp_9 seg000:5565 cmp ds:part_table_num_sec_lw[bx], 32680 seg000:556B jbe short mp_10 seg000:556D seg000:556D mp_9: ; CODE XREF: make_partition+1FBj seg000:556D mov [bp+mp_temp], 4 seg000:5571 jmp short mp_12 seg000:5573 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5573 seg000:5573 mp_10: ; CODE XREF: make_partition+203j seg000:5573 mov [bp+mp_temp], 1 seg000:5577 jmp short mp_12 seg000:5579 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5579 seg000:5579 mp_11: ; CODE XREF: make_partition+1B0j seg000:5579 call internal_program_error seg000:557C seg000:557C mp_12: ; CODE XREF: make_partition+1AAj seg000:557C ; make_partition+1DDj ... seg000:557C mov al, [bp+mp_table_ptr] seg000:557F cbw seg000:5580 mov cx, ax seg000:5582 mov al, ds:cur_disk seg000:5585 cbw seg000:5586 shl ax, 1 seg000:5588 shl ax, 1 seg000:558A add ax, cx seg000:558C mov bx, 46 seg000:558F imul bx seg000:5591 mov si, ax seg000:5593 mov al, [bp+mp_temp] seg000:5596 mov ds:part_table_sys_id[si], al seg000:559A mov ds:part_table_changed[si], 1 seg000:559F mov al, ds:cur_disk seg000:55A2 push ax seg000:55A3 push [bp+mp_size] seg000:55A6 mov di, cx seg000:55A8 call cylinders_to_mbytes seg000:55AB pop bx seg000:55AC pop bx seg000:55AD mov ds:part_table_mbytes_used[si], ax seg000:55B1 mov al, ds:cur_disk seg000:55B4 cbw seg000:55B5 mov bx, ax seg000:55B7 shl bx, 1 seg000:55B9 push ds:total_disk[bx] seg000:55BD shl ax, 1 seg000:55BF shl ax, 1 seg000:55C1 add ax, di seg000:55C3 mov cx, 46 seg000:55C6 imul cx seg000:55C8 mov bx, ax seg000:55CA mov ax, ds:part_table_end_cyl[bx] seg000:55CE sub ax, ds:part_table_start_cyl[bx] seg000:55D2 inc ax seg000:55D3 push ax seg000:55D4 mov si, bx seg000:55D6 call cylinders_to_percent seg000:55D9 pop bx seg000:55DA pop bx seg000:55DB mov ds:part_table_percent_used[si], ax seg000:55DF mov ax, offset NO_FORMAT ; "UNKNOWN " seg000:55E2 push ax seg000:55E3 mov al, ds:cur_disk seg000:55E6 cbw seg000:55E7 shl ax, 1 seg000:55E9 shl ax, 1 seg000:55EB add ax, di seg000:55ED mov cx, 46 seg000:55F0 imul cx seg000:55F2 add ax, offset part_table_system seg000:55F5 push ax seg000:55F6 call strcpy seg000:55F9 pop bx seg000:55FA pop bx seg000:55FB mov ax, offset NO_VOLUME seg000:55FE push ax seg000:55FF mov al, ds:cur_disk seg000:5602 cbw seg000:5603 shl ax, 1 seg000:5605 shl ax, 1 seg000:5607 add ax, di seg000:5609 mov cx, 46 seg000:560C imul cx seg000:560E add ax, offset part_table_vol_label seg000:5611 push ax seg000:5612 call strcpy seg000:5615 pop bx seg000:5616 pop bx seg000:5617 jmp short mp_14 seg000:5619 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5619 seg000:5619 mp_13: ; CODE XREF: make_partition+12j seg000:5619 call internal_program_error seg000:561C seg000:561C mp_14: ; CODE XREF: make_partition+2AFj seg000:561C pop si seg000:561D pop di seg000:561E mov sp, bp seg000:5620 pop bp seg000:5621 retn seg000:5621 make_partition endp seg000:5621 seg000:5622 seg000:5622 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5622 seg000:5622 ; Attributes: bp-based frame seg000:5622 seg000:5622 make_volume proc near ; CODE XREF: main+31Cp seg000:5622 ; volume_create+282p seg000:5622 seg000:5622 mv_total_secs_lw= word ptr -0Eh seg000:5622 mv_total_secs_hw= word ptr -0Ch seg000:5622 mv_table_ptr = byte ptr -0Ah seg000:5622 mv_ext_part_num = word ptr -8 seg000:5622 mv_temp = byte ptr -6 seg000:5622 mv_size = word ptr 4 seg000:5622 mv_free_ptr = byte ptr 6 seg000:5622 seg000:5622 push bp seg000:5623 mov bp, sp seg000:5625 sub sp, 14 seg000:5628 push di seg000:5629 push si seg000:562A call find_free_ext seg000:562D mov [bp+mv_table_ptr], al seg000:5630 inc al seg000:5632 jnz short mv_1 seg000:5634 jmp mv_8 seg000:5637 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5637 seg000:5637 mv_1: ; CODE XREF: make_volume+10j seg000:5637 mov al, ds:cur_disk seg000:563A cbw seg000:563B mov cx, 24 seg000:563E mov bx, ax seg000:5640 imul cx seg000:5642 mov cx, ax seg000:5644 mov al, [bp+mv_table_ptr] seg000:5647 cbw seg000:5648 add ax, cx seg000:564A mov cx, 46 seg000:564D imul cx seg000:564F mov si, ax seg000:5651 mov ds:ext_table_boot_ind[si], 0 seg000:5656 mov al, 22 seg000:5658 imul [bp+mv_free_ptr] seg000:565B mov di, ax seg000:565D mov ax, ds:free_space_start[di] seg000:5661 mov ds:ext_table_start_cyl[si], ax seg000:5665 add ax, [bp+mv_size] seg000:5668 dec ax seg000:5669 mov ds:ext_table_end_cyl[si], ax seg000:566D mov ds:ext_table_start_sector[si], 1 seg000:5672 mov al, ds:max_sector[bx] seg000:5676 mov ds:ext_table_end_sector[si], al seg000:567A shl bx, 1 seg000:567C mov cl, byte ptr ds:max_head[bx] seg000:5680 dec cl seg000:5682 mov ds:ext_table_end_head[si], cl seg000:5686 mov ds:ext_table_start_head[si], 1 seg000:568B sub ah, ah seg000:568D mov cx, ax seg000:568F sub dx, dx seg000:5691 push dx seg000:5692 push ax seg000:5693 mov di, cx seg000:5695 mov ax, ds:ext_table_end_cyl[si] seg000:5699 sub ax, ds:ext_table_start_cyl[si] seg000:569D inc ax seg000:569E mov [bp+mv_total_secs_lw], di seg000:56A1 mov [bp+mv_total_secs_hw], dx seg000:56A4 mul ds:max_head[bx] seg000:56A8 push dx seg000:56A9 push ax seg000:56AA call mul32 seg000:56AD mov cx, ax seg000:56AF mov ax, di seg000:56B1 mov bx, dx seg000:56B3 cwd seg000:56B4 sub cx, ax seg000:56B6 sbb bx, dx seg000:56B8 mov ax, cx seg000:56BA mov dx, bx seg000:56BC mov ds:ext_table_num_sec_lw[si], ax seg000:56C0 mov ds:ext_table_num_sec_hw[si], dx seg000:56C4 mov ax, [bp+mv_total_secs_lw] seg000:56C7 mov dx, [bp+mv_total_secs_hw] seg000:56CA mov ds:ext_table_rel_sec_lw[si], ax seg000:56CE mov ds:ext_table_rel_sec_hw[si], dx seg000:56D2 seg000:56D2 mkvol_chk_fat16_limit: seg000:56D2 cmp ds:ext_table_num_sec_hw[si], 1 seg000:56D7 jb short mkvol_chk_fat12_limit seg000:56D9 ja short mkvol_fat16big seg000:56DB cmp ds:ext_table_num_sec_lw[si], 0 seg000:56E0 jz short mkvol_chk_fat12_limit seg000:56E2 seg000:56E2 mkvol_fat16big: ; CODE XREF: make_volume+B7j seg000:56E2 mov [bp+mv_temp], 6 seg000:56E6 jmp short mv_7 seg000:56E8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:56E8 seg000:56E8 mkvol_chk_fat12_limit: ; CODE XREF: make_volume+B5j seg000:56E8 ; make_volume+BEj seg000:56E8 mov al, [bp+mv_table_ptr] seg000:56EB cbw seg000:56EC mov cx, ax seg000:56EE mov al, 24 seg000:56F0 imul ds:cur_disk seg000:56F4 add ax, cx seg000:56F6 mov cx, 46 seg000:56F9 imul cx seg000:56FB mov bx, ax seg000:56FD cmp ds:ext_table_num_sec_hw[bx], 0 seg000:5702 jnz short mkvol_fat16 seg000:5704 cmp ds:ext_table_num_sec_lw[bx], 32680 seg000:570A jbe short mkvol_fat12 seg000:570C seg000:570C mkvol_fat16: ; CODE XREF: make_volume+E0j seg000:570C mov [bp+mv_temp], 4 seg000:5710 jmp short mv_7 seg000:5712 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5712 seg000:5712 mkvol_fat12: ; CODE XREF: make_volume+E8j seg000:5712 mov [bp+mv_temp], 1 seg000:5716 seg000:5716 mv_7: ; CODE XREF: make_volume+C4j seg000:5716 ; make_volume+EEj seg000:5716 mov al, [bp+mv_table_ptr] seg000:5719 cbw seg000:571A mov cx, ax seg000:571C mov al, 24 seg000:571E imul ds:cur_disk seg000:5722 add ax, cx seg000:5724 mov bx, 46 seg000:5727 imul bx seg000:5729 mov si, ax seg000:572B mov al, [bp+mv_temp] seg000:572E mov ds:ext_table_sys_id[si], al seg000:5732 mov ds:ext_table_changed[si], 1 seg000:5737 mov al, ds:cur_disk seg000:573A push ax seg000:573B push [bp+mv_size] seg000:573E mov di, cx seg000:5740 call cylinders_to_mbytes seg000:5743 pop bx seg000:5744 pop bx seg000:5745 mov ds:ext_table_mbytes_used[si], ax seg000:5749 mov al, 5 seg000:574B push ax seg000:574C call find_partition_location seg000:574F pop bx seg000:5750 cbw seg000:5751 mov [bp+mv_ext_part_num], ax seg000:5754 mov al, ds:cur_disk seg000:5757 cbw seg000:5758 mov cx, ax seg000:575A shl ax, 1 seg000:575C shl ax, 1 seg000:575E add ax, [bp+mv_ext_part_num] seg000:5761 mov bx, 46 seg000:5764 mul bx seg000:5766 mov bx, ax seg000:5768 mov ax, ds:part_table_end_cyl[bx] seg000:576C sub ax, ds:part_table_start_cyl[bx] seg000:5770 inc ax seg000:5771 push ax seg000:5772 mov bx, 24 seg000:5775 mov ax, cx seg000:5777 imul bx seg000:5779 add ax, di seg000:577B mov cx, 46 seg000:577E imul cx seg000:5780 mov si, ax seg000:5782 mov ax, ds:ext_table_end_cyl[si] seg000:5786 sub ax, ds:ext_table_start_cyl[si] seg000:578A inc ax seg000:578B push ax seg000:578C call cylinders_to_percent seg000:578F pop bx seg000:5790 pop bx seg000:5791 mov ds:ext_table_percent_used[si], ax seg000:5795 mov ax, offset _NOFORMAT ; "UNKNOWN " seg000:5798 push ax seg000:5799 mov al, 24 seg000:579B imul ds:cur_disk seg000:579F add ax, di seg000:57A1 mov cx, 46 seg000:57A4 imul cx seg000:57A6 add ax, offset ext_table_system seg000:57A9 push ax seg000:57AA call strcpy seg000:57AD pop bx seg000:57AE pop bx seg000:57AF mov ax, offset _NOVOLUME seg000:57B2 push ax seg000:57B3 mov al, 24 seg000:57B5 imul ds:cur_disk seg000:57B9 add ax, di seg000:57BB mov cx, 46 seg000:57BE imul cx seg000:57C0 add ax, offset ext_table_vol_label seg000:57C3 push ax seg000:57C4 call strcpy seg000:57C7 pop bx seg000:57C8 pop bx seg000:57C9 jmp short mv_9 seg000:57CB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:57CB seg000:57CB mv_8: ; CODE XREF: make_volume+12j seg000:57CB call internal_program_error seg000:57CE seg000:57CE mv_9: ; CODE XREF: make_volume+1A7j seg000:57CE mov al, [bp+mv_table_ptr] seg000:57D1 pop si seg000:57D2 pop di seg000:57D3 mov sp, bp seg000:57D5 pop bp seg000:57D6 retn seg000:57D6 make_volume endp seg000:57D6 seg000:57D6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:57D7 align 2 seg000:57D8 seg000:57D8 ; --------------- S U B R O U T I N E --------------------------------------- seg000:57D8 seg000:57D8 ; Attributes: bp-based frame seg000:57D8 seg000:57D8 remove_partition proc near ; CODE XREF: dos_delete+240p seg000:57D8 ; ext_delete+D4p ... seg000:57D8 seg000:57D8 rmp_drive = byte ptr 4 seg000:57D8 rmp_entry = word ptr 6 seg000:57D8 seg000:57D8 push bp seg000:57D9 mov bp, sp seg000:57DB push si seg000:57DC mov al, [bp+rmp_drive] seg000:57DF cbw seg000:57E0 shl ax, 1 seg000:57E2 shl ax, 1 seg000:57E4 add ax, [bp+rmp_entry] seg000:57E7 mov cx, 46 seg000:57EA mul cx seg000:57EC mov bx, ax seg000:57EE sub al, al seg000:57F0 mov ds:part_table_boot_ind[bx], al seg000:57F4 mov ds:part_table_start_head[bx], al seg000:57F8 mov ds:part_table_start_sector[bx], al seg000:57FC mov ds:part_table_start_cyl[bx], 0 seg000:5802 mov ds:part_table_sys_id[bx], al seg000:5806 mov ds:part_table_end_head[bx], al seg000:580A mov ds:part_table_end_sector[bx], al seg000:580E mov ds:part_table_end_cyl[bx], 0 seg000:5814 sub ax, ax seg000:5816 mov ds:part_table_rel_sec_hw[bx], ax seg000:581A mov ds:part_table_rel_sec_lw[bx], ax seg000:581E mov ds:part_table_num_sec_hw[bx], ax seg000:5822 mov ds:part_table_num_sec_lw[bx], ax seg000:5826 mov ds:part_table_changed[bx], 1 seg000:582B mov ds:part_table_mbytes_used[bx], ax seg000:582F mov ds:part_table_percent_used[bx], ax seg000:5833 push ax seg000:5834 mov cx, bx seg000:5836 add bx, offset part_table_system seg000:583A push bx seg000:583B mov si, cx seg000:583D call strcpy seg000:5840 pop bx seg000:5841 pop bx seg000:5842 sub ax, ax seg000:5844 push ax seg000:5845 add si, offset part_table_vol_label seg000:5849 push si seg000:584A call strcpy seg000:584D pop bx seg000:584E pop bx seg000:584F pop si seg000:5850 mov sp, bp seg000:5852 pop bp seg000:5853 retn seg000:5853 remove_partition endp seg000:5853 seg000:5854 seg000:5854 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5854 seg000:5854 ; Attributes: bp-based frame seg000:5854 seg000:5854 remove_volume proc near ; CODE XREF: volume_delete+446p seg000:5854 seg000:5854 rmv_drive = byte ptr 4 seg000:5854 rmv_entry = word ptr 6 seg000:5854 seg000:5854 push bp seg000:5855 mov bp, sp seg000:5857 push si seg000:5858 mov al, 24 seg000:585A imul [bp+rmv_drive] seg000:585D add ax, [bp+rmv_entry] seg000:5860 mov cx, 46 seg000:5863 mul cx seg000:5865 mov bx, ax seg000:5867 sub al, al seg000:5869 mov ds:ext_table_boot_ind[bx], al seg000:586D mov ds:ext_table_start_head[bx], al seg000:5871 mov ds:ext_table_start_sector[bx], al seg000:5875 mov ds:ext_table_start_cyl[bx], 0 seg000:587B mov ds:ext_table_sys_id[bx], al seg000:587F mov ds:ext_table_end_head[bx], al seg000:5883 mov ds:ext_table_end_sector[bx], al seg000:5887 mov ds:ext_table_end_cyl[bx], 0 seg000:588D sub ax, ax seg000:588F mov ds:ext_table_rel_sec_hw[bx], ax seg000:5893 mov ds:ext_table_rel_sec_lw[bx], ax seg000:5897 mov ds:ext_table_num_sec_hw[bx], ax seg000:589B mov ds:ext_table_num_sec_lw[bx], ax seg000:589F mov ds:ext_table_mbytes_used[bx], ax seg000:58A3 mov ds:ext_table_percent_used[bx], ax seg000:58A7 mov ds:ext_table_changed[bx], 1 seg000:58AC mov ds:ext_table_drive_letter[bx], 0 seg000:58B1 push ax seg000:58B2 mov cx, bx seg000:58B4 add bx, offset ext_table_system seg000:58B8 push bx seg000:58B9 mov si, cx seg000:58BB call strcpy seg000:58BE pop bx seg000:58BF pop bx seg000:58C0 sub ax, ax seg000:58C2 push ax seg000:58C3 add si, offset ext_table_vol_label seg000:58C7 push si seg000:58C8 call strcpy seg000:58CB pop bx seg000:58CC pop bx seg000:58CD pop si seg000:58CE mov sp, bp seg000:58D0 pop bp seg000:58D1 retn seg000:58D1 remove_volume endp seg000:58D1 seg000:58D2 seg000:58D2 ; --------------- S U B R O U T I N E --------------------------------------- seg000:58D2 seg000:58D2 ; Attributes: bp-based frame seg000:58D2 seg000:58D2 get_disk_info proc near ; CODE XREF: main+9Dp seg000:58D2 ; main+144p seg000:58D2 seg000:58D2 var_2 = byte ptr -2 seg000:58D2 seg000:58D2 push bp seg000:58D3 mov bp, sp seg000:58D5 sub sp, 2 seg000:58D8 push si seg000:58D9 sub al, al seg000:58DB mov ds:number_of_drives, al seg000:58DE mov [bp+var_2], al seg000:58E1 jmp short gdi_2 seg000:58E3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:58E3 seg000:58E3 gdi_1: ; CODE XREF: get_disk_info+31j seg000:58E3 mov bl, [bp+var_2] seg000:58E6 sub bh, bh seg000:58E8 mov ds:max_sector[bx], bh seg000:58EC sub ax, ax seg000:58EE shl bx, 1 seg000:58F0 mov ds:total_disk[bx], ax seg000:58F4 mov ds:total_mbytes[bx], ax seg000:58F8 mov ds:max_head[bx], ax seg000:58FC inc [bp+var_2] seg000:58FF seg000:58FF gdi_2: ; CODE XREF: get_disk_info+Fj seg000:58FF cmp [bp+var_2], 8 seg000:5903 jb short gdi_1 seg000:5905 mov al, 80h seg000:5907 push ax seg000:5908 call get_drive_parameters seg000:590B pop bx seg000:590C or al, al seg000:590E jz short gdi_7 seg000:5910 mov [bp+var_2], 0 seg000:5914 jmp short gdi_4 seg000:5916 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5916 seg000:5916 gdi_3: ; CODE XREF: get_disk_info+9Cj seg000:5916 inc [bp+var_2] seg000:5919 seg000:5919 gdi_4: ; CODE XREF: get_disk_info+42j seg000:5919 mov al, [bp+var_2] seg000:591C cmp ds:number_of_drives, al seg000:5920 jbe short gdi_6 seg000:5922 add al, 80h seg000:5924 push ax seg000:5925 call get_drive_parameters seg000:5928 pop bx seg000:5929 or al, al seg000:592B jz short gdi_5 seg000:592D mov al, byte ptr ds:regs_x_cx seg000:5930 and al, 3Fh seg000:5932 mov bl, [bp+var_2] seg000:5935 sub bh, bh seg000:5937 mov ds:max_sector[bx], al seg000:593B mov al, byte ptr ds:regs_x_dx+1 seg000:593E sub ah, ah seg000:5940 inc ax seg000:5941 shl bx, 1 seg000:5943 mov ds:max_head[bx], ax seg000:5947 mov al, byte ptr ds:regs_x_cx seg000:594A and ax, 0C0h seg000:594D shl ax, 1 seg000:594F shl ax, 1 seg000:5951 mov cl, byte ptr ds:regs_x_cx+1 seg000:5955 sub ch, ch seg000:5957 or ax, cx seg000:5959 inc ax seg000:595A mov ds:total_disk[bx], ax seg000:595E mov cl, [bp+var_2] seg000:5961 push cx seg000:5962 push ax seg000:5963 mov si, bx seg000:5965 call cylinders_to_mbytes seg000:5968 pop bx seg000:5969 pop bx seg000:596A mov ds:total_mbytes[si], ax seg000:596E jmp short gdi_3 seg000:5970 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5970 seg000:5970 gdi_5: ; CODE XREF: get_disk_info+59j seg000:5970 sub al, al seg000:5972 mov bl, [bp+var_2] seg000:5975 sub bh, bh seg000:5977 mov ds:good_disk[bx], al seg000:597B jmp short gdi_8 seg000:597D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:597D seg000:597D gdi_6: ; CODE XREF: get_disk_info+4Ej seg000:597D mov al, 1 seg000:597F jmp short gdi_8 seg000:5981 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5981 seg000:5981 gdi_7: ; CODE XREF: get_disk_info+3Cj seg000:5981 sub al, al seg000:5983 mov ds:no_fatal_error, al seg000:5986 seg000:5986 gdi_8: ; CODE XREF: get_disk_info+A9j seg000:5986 ; get_disk_info+ADj seg000:5986 pop si seg000:5987 mov sp, bp seg000:5989 pop bp seg000:598A retn seg000:598A get_disk_info endp seg000:598A seg000:598B seg000:598B ; --------------- S U B R O U T I N E --------------------------------------- seg000:598B seg000:598B ; Attributes: bp-based frame seg000:598B seg000:598B write_boot_record proc near ; CODE XREF: main+1DAp seg000:598B ; write_master_boot_to_disk+158p ... seg000:598B seg000:598B w_buf_pointer = word ptr -4 seg000:598B w_buf_pointer2 = word ptr -2 seg000:598B w_cylinder = word ptr 4 seg000:598B w_which_disk = byte ptr 6 seg000:598B seg000:598B push bp seg000:598C mov bp, sp seg000:598E sub sp, 4 seg000:5991 mov [bp+w_buf_pointer], offset boot_record seg000:5996 mov [bp+w_buf_pointer2], ds seg000:5999 mov byte ptr ds:regs_x_ax+1, 3 seg000:599E mov byte ptr ds:regs_x_ax, 1 seg000:59A3 mov byte ptr ds:regs_x_dx+1, 0 seg000:59A8 mov byte ptr ds:regs_x_cx, 1 seg000:59AD mov al, [bp+w_which_disk] seg000:59B0 add al, 80h seg000:59B2 mov byte ptr ds:regs_x_dx, al seg000:59B5 cmp [bp+w_cylinder], 255 seg000:59BA jbe short write_bs_1 seg000:59BC mov ax, [bp+w_cylinder] seg000:59BF shr ax, 1 seg000:59C1 shr ax, 1 seg000:59C3 and al, 0C0h seg000:59C5 or byte ptr ds:regs_x_cx, al seg000:59C9 seg000:59C9 write_bs_1: ; CODE XREF: write_boot_record+2Fj seg000:59C9 mov al, byte ptr [bp+w_cylinder] seg000:59CC mov byte ptr ds:regs_x_cx+1, al seg000:59CF mov ax, [bp+w_buf_pointer] seg000:59D2 mov ds:regs_x_bx, ax seg000:59D5 mov ax, [bp+w_buf_pointer2] seg000:59D8 mov ds:segregs_es, ax seg000:59DB mov ax, offset segregs_es seg000:59DE push ax seg000:59DF mov ax, offset regs_x_ax seg000:59E2 push ax seg000:59E3 push ax seg000:59E4 call DiskIo seg000:59E7 add sp, 6 seg000:59EA mov al, ds:regs_x_cflag seg000:59ED and al, 1 seg000:59EF cmp al, 1 seg000:59F1 jz short write_bs_2 seg000:59F3 mov al, 1 seg000:59F5 jmp short write_bs_3 seg000:59F7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:59F7 seg000:59F7 write_bs_2: ; CODE XREF: write_boot_record+66j seg000:59F7 mov ax, 79 seg000:59FA push ax seg000:59FB mov ax, 24 seg000:59FE push ax seg000:59FF sub ax, ax seg000:5A01 push ax seg000:5A02 push ax seg000:5A03 call clear_screen seg000:5A06 add sp, 8 seg000:5A09 push ds:error_2_seg seg000:5A0D push ds:error_2_off seg000:5A11 call display seg000:5A14 pop bx seg000:5A15 pop bx seg000:5A16 sub al, al seg000:5A18 mov ds:no_fatal_error, al seg000:5A1B seg000:5A1B write_bs_3: ; CODE XREF: write_boot_record+6Aj seg000:5A1B mov sp, bp seg000:5A1D pop bp seg000:5A1E retn seg000:5A1E write_boot_record endp seg000:5A1E seg000:5A1F seg000:5A1F ; --------------- S U B R O U T I N E --------------------------------------- seg000:5A1F seg000:5A1F ; Attributes: bp-based frame seg000:5A1F seg000:5A1F verify_tracks proc near ; CODE XREF: find_part_free_space+2F8p seg000:5A1F ; find_ext_free_space+2B3p seg000:5A1F seg000:5A1F var_1A = word ptr -1Ah seg000:5A1F var_18 = byte ptr -18h seg000:5A1F var_14 = word ptr -14h seg000:5A1F var_12 = word ptr -12h seg000:5A1F var_10 = word ptr -10h seg000:5A1F var_E = word ptr -0Eh seg000:5A1F var_C = word ptr -0Ch seg000:5A1F var_A = word ptr -0Ah seg000:5A1F var_8 = byte ptr -8 seg000:5A1F var_4 = word ptr -4 seg000:5A1F var_2 = byte ptr -2 seg000:5A1F arg_0 = byte ptr 4 seg000:5A1F arg_2 = byte ptr 6 seg000:5A1F seg000:5A1F push bp seg000:5A20 mov bp, sp seg000:5A22 sub sp, 28 seg000:5A25 push di seg000:5A26 push si seg000:5A27 mov [bp+var_14], offset boot_record seg000:5A2C mov [bp+var_12], ds seg000:5A2F mov [bp+var_10], 0 seg000:5A34 seg000:5A34 loc_5A34: ; CODE XREF: verify_tracks+25j seg000:5A34 mov bx, [bp+var_10] seg000:5A37 mov ds:boot_record[bx], 0F6h seg000:5A3C inc [bp+var_10] seg000:5A3F cmp [bp+var_10], 512 seg000:5A44 jb short loc_5A34 seg000:5A46 mov al, 22 seg000:5A48 imul [bp+arg_0] seg000:5A4B mov bx, ax seg000:5A4D mov ax, ds:free_space_start[bx] seg000:5A51 mov [bp+var_4], ax seg000:5A54 mov [bp+var_1A], ax seg000:5A57 mov [bp+var_18], 0 seg000:5A5B cmp [bp+arg_2], 0 seg000:5A5F jnz short loc_5A65 seg000:5A61 or ax, ax seg000:5A63 jz short loc_5A6B seg000:5A65 seg000:5A65 loc_5A65: ; CODE XREF: verify_tracks+40j seg000:5A65 cmp [bp+arg_2], 5 seg000:5A69 jnz short loc_5A6F seg000:5A6B seg000:5A6B loc_5A6B: ; CODE XREF: verify_tracks+44j seg000:5A6B mov [bp+var_18], 1 seg000:5A6F seg000:5A6F loc_5A6F: ; CODE XREF: verify_tracks+4Aj seg000:5A6F mov al, ds:cur_disk seg000:5A72 cbw seg000:5A73 mov bx, ax seg000:5A75 mov al, ds:max_sector[bx] seg000:5A79 sub ah, ah seg000:5A7B sub dx, dx seg000:5A7D push dx seg000:5A7E push ax seg000:5A7F mov cx, ax seg000:5A81 mov al, 22 seg000:5A83 imul [bp+arg_0] seg000:5A86 mov si, ax seg000:5A88 shl bx, 1 seg000:5A8A mov ax, ds:max_head[bx] seg000:5A8E mov bx, dx seg000:5A90 mul ds:free_space_space[si] seg000:5A94 push dx seg000:5A95 push ax seg000:5A96 mov si, cx seg000:5A98 mov di, bx seg000:5A9A call mul32 seg000:5A9D mov [bp+var_C], ax seg000:5AA0 mov [bp+var_A], dx seg000:5AA3 cmp [bp+var_18], 1 seg000:5AA7 jnz short loc_5AB3 seg000:5AA9 sub ax, si seg000:5AAB sbb dx, di seg000:5AAD mov [bp+var_C], ax seg000:5AB0 mov [bp+var_A], dx seg000:5AB3 seg000:5AB3 loc_5AB3: ; CODE XREF: verify_tracks+88j seg000:5AB3 cmp dx, di seg000:5AB5 jnz short loc_5ABC seg000:5AB7 cmp ax, 32680 seg000:5ABA jbe short loc_5ACD seg000:5ABC seg000:5ABC loc_5ABC: ; CODE XREF: verify_tracks+96j seg000:5ABC mov ax, 1026 seg000:5ABF cwd seg000:5AC0 push dx seg000:5AC1 push ax seg000:5AC2 mov ax, [bp+var_C] seg000:5AC5 mov dx, [bp+var_A] seg000:5AC8 add ax, 992 seg000:5ACB jmp short loc_5ADC seg000:5ACD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5ACD seg000:5ACD loc_5ACD: ; CODE XREF: verify_tracks+9Bj seg000:5ACD mov ax, 2733 seg000:5AD0 cwd seg000:5AD1 push dx seg000:5AD2 push ax seg000:5AD3 mov ax, [bp+var_C] seg000:5AD6 mov dx, [bp+var_A] seg000:5AD9 add ax, 2699 seg000:5ADC seg000:5ADC loc_5ADC: ; CODE XREF: verify_tracks+ACj seg000:5ADC adc dx, di seg000:5ADE push dx seg000:5ADF push ax seg000:5AE0 call div32 seg000:5AE3 shl ax, 1 seg000:5AE5 add ax, 33 seg000:5AE8 mov [bp+var_E], ax seg000:5AEB cmp [bp+arg_2], 0 seg000:5AEF jnz short loc_5AFE seg000:5AF1 cmp ds:cur_disk, 0 seg000:5AF6 jnz short loc_5AFE seg000:5AF8 add ax, 250 seg000:5AFB mov [bp+var_E], ax seg000:5AFE seg000:5AFE loc_5AFE: ; CODE XREF: verify_tracks+D0j seg000:5AFE ; verify_tracks+D7j seg000:5AFE mov al, ds:cur_disk seg000:5B01 cbw seg000:5B02 mov bx, ax seg000:5B04 mov cl, ds:max_sector[bx] seg000:5B08 sub ch, ch seg000:5B0A mov ax, [bp+var_E] seg000:5B0D sub dx, dx seg000:5B0F div cx seg000:5B11 or dx, dx seg000:5B13 jz short loc_5B18 seg000:5B15 add [bp+var_E], cx seg000:5B18 seg000:5B18 loc_5B18: ; CODE XREF: verify_tracks+F4j seg000:5B18 mov al, ds:cur_disk seg000:5B1B cbw seg000:5B1C mov bx, ax seg000:5B1E mov cl, ds:max_sector[bx] seg000:5B22 sub ch, ch seg000:5B24 mov ax, [bp+var_E] seg000:5B27 sub dx, dx seg000:5B29 div cx seg000:5B2B mov [bp+var_E], ax seg000:5B2E cmp [bp+var_18], ch seg000:5B31 jnz short loc_5B36 seg000:5B33 inc [bp+var_E] seg000:5B36 seg000:5B36 loc_5B36: ; CODE XREF: verify_tracks+112j seg000:5B36 mov [bp+var_2], 0 seg000:5B3A seg000:5B3A loc_5B3A: ; CODE XREF: verify_tracks+25Ej seg000:5B3A mov [bp+var_10], 0 seg000:5B3F jmp short loc_5B44 seg000:5B41 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5B41 seg000:5B41 loc_5B41: ; CODE XREF: verify_tracks:loc_5C50j seg000:5B41 inc [bp+var_10] seg000:5B44 seg000:5B44 loc_5B44: ; CODE XREF: verify_tracks+120j seg000:5B44 mov ax, [bp+var_10] seg000:5B47 cmp [bp+var_E], ax seg000:5B4A ja short loc_5B4F seg000:5B4C jmp loc_5C77 seg000:5B4F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5B4F seg000:5B4F loc_5B4F: ; CODE XREF: verify_tracks+12Bj seg000:5B4F mov [bp+var_8], 0 seg000:5B53 seg000:5B53 loc_5B53: ; CODE XREF: verify_tracks+192j seg000:5B53 inc [bp+var_8] seg000:5B56 mov byte ptr ds:regs_x_ax+1, 4 seg000:5B5B mov al, ds:cur_disk seg000:5B5E cbw seg000:5B5F mov bx, ax seg000:5B61 mov al, ds:max_sector[bx] seg000:5B65 mov byte ptr ds:regs_x_ax, al seg000:5B68 mov byte ptr ds:regs_x_cx, 1 seg000:5B6D cmp [bp+var_4], 255 seg000:5B72 jbe short loc_5B82 seg000:5B74 mov ax, [bp+var_4] seg000:5B77 shr ax, 1 seg000:5B79 shr ax, 1 seg000:5B7B and al, 0C1h seg000:5B7D or al, 1 seg000:5B7F mov byte ptr ds:regs_x_cx, al seg000:5B82 seg000:5B82 loc_5B82: ; CODE XREF: verify_tracks+153j seg000:5B82 mov al, byte ptr [bp+var_4] seg000:5B85 mov byte ptr ds:regs_x_cx+1, al seg000:5B88 mov al, ds:cur_disk seg000:5B8B add al, 80h seg000:5B8D mov byte ptr ds:regs_x_dx, al seg000:5B90 mov al, [bp+var_18] seg000:5B93 mov byte ptr ds:regs_x_dx+1, al seg000:5B96 mov ax, offset regs_x_ax seg000:5B99 push ax seg000:5B9A push ax seg000:5B9B mov ax, 13h seg000:5B9E push ax seg000:5B9F call int86 seg000:5BA2 add sp, 6 seg000:5BA5 mov al, ds:regs_x_cflag seg000:5BA8 and ax, 1 seg000:5BAB jz short loc_5BB3 seg000:5BAD cmp [bp+var_8], 3 seg000:5BB1 jnz short loc_5B53 seg000:5BB3 seg000:5BB3 loc_5BB3: ; CODE XREF: verify_tracks+18Cj seg000:5BB3 or ax, ax seg000:5BB5 jnz short loc_5C1D seg000:5BB7 mov [bp+var_8], 0 seg000:5BBB seg000:5BBB loc_5BBB: ; CODE XREF: verify_tracks+1FCj seg000:5BBB inc [bp+var_8] seg000:5BBE mov byte ptr ds:regs_x_ax+1, 3 seg000:5BC3 mov al, 1 seg000:5BC5 mov byte ptr ds:regs_x_ax, al seg000:5BC8 mov byte ptr ds:regs_x_cx, al seg000:5BCB cmp [bp+var_4], 255 seg000:5BD0 jbe short loc_5BE0 seg000:5BD2 mov ax, [bp+var_4] seg000:5BD5 shr ax, 1 seg000:5BD7 shr ax, 1 seg000:5BD9 and al, 0C1h seg000:5BDB or al, 1 seg000:5BDD mov byte ptr ds:regs_x_cx, al seg000:5BE0 seg000:5BE0 loc_5BE0: ; CODE XREF: verify_tracks+1B1j seg000:5BE0 mov al, byte ptr [bp+var_4] seg000:5BE3 mov byte ptr ds:regs_x_cx+1, al seg000:5BE6 mov al, ds:cur_disk seg000:5BE9 add al, 80h seg000:5BEB mov byte ptr ds:regs_x_dx, al seg000:5BEE mov al, [bp+var_18] seg000:5BF1 mov byte ptr ds:regs_x_dx+1, al seg000:5BF4 mov ax, [bp+var_14] seg000:5BF7 mov ds:regs_x_bx, ax seg000:5BFA mov ax, [bp+var_12] seg000:5BFD mov ds:segregs_es, ax seg000:5C00 mov ax, offset segregs_es seg000:5C03 push ax seg000:5C04 mov ax, offset regs_x_ax seg000:5C07 push ax seg000:5C08 push ax seg000:5C09 call DiskIo seg000:5C0C add sp, 6 seg000:5C0F mov al, ds:regs_x_cflag seg000:5C12 and ax, 1 seg000:5C15 jz short loc_5C1D seg000:5C17 cmp [bp+var_8], 3 seg000:5C1B jnz short loc_5BBB seg000:5C1D seg000:5C1D loc_5C1D: ; CODE XREF: verify_tracks+196j seg000:5C1D ; verify_tracks+1F6j seg000:5C1D or ax, ax seg000:5C1F jnz short loc_5C59 seg000:5C21 mov [bp+var_2], 1 seg000:5C25 mov al, ds:cur_disk seg000:5C28 cbw seg000:5C29 mov bx, ax seg000:5C2B shl bx, 1 seg000:5C2D inc [bp+var_18] seg000:5C30 mov al, [bp+var_18] seg000:5C33 cmp byte ptr ds:max_head[bx], al seg000:5C37 jnz short loc_5C50 seg000:5C39 mov [bp+var_18], 0 seg000:5C3D mov al, 22 seg000:5C3F imul [bp+arg_0] seg000:5C42 mov bx, ax seg000:5C44 inc [bp+var_4] seg000:5C47 mov ax, [bp+var_4] seg000:5C4A cmp ds:free_space_end[bx], ax seg000:5C4E jb short loc_5C53 seg000:5C50 seg000:5C50 loc_5C50: ; CODE XREF: verify_tracks+218j seg000:5C50 jmp loc_5B41 seg000:5C53 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5C53 seg000:5C53 loc_5C53: ; CODE XREF: verify_tracks+22Fj seg000:5C53 ; verify_tracks+24Fj seg000:5C53 mov ax, ds:free_space_space[bx] seg000:5C57 jmp short loc_5C8E seg000:5C59 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5C59 seg000:5C59 loc_5C59: ; CODE XREF: verify_tracks+200j seg000:5C59 mov [bp+var_2], 0 seg000:5C5D mov al, 22 seg000:5C5F imul [bp+arg_0] seg000:5C62 mov bx, ax seg000:5C64 inc [bp+var_4] seg000:5C67 mov ax, [bp+var_4] seg000:5C6A cmp ds:free_space_end[bx], ax seg000:5C6E jb short loc_5C53 seg000:5C70 mov [bp+var_18], 0 seg000:5C74 mov [bp+var_1A], ax seg000:5C77 seg000:5C77 loc_5C77: ; CODE XREF: verify_tracks+12Dj seg000:5C77 cmp [bp+var_2], 0 seg000:5C7B jnz short loc_5C80 seg000:5C7D jmp loc_5B3A seg000:5C80 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5C80 seg000:5C80 loc_5C80: ; CODE XREF: verify_tracks+25Cj seg000:5C80 mov al, 22 seg000:5C82 imul [bp+arg_0] seg000:5C85 mov bx, ax seg000:5C87 mov ax, [bp+var_1A] seg000:5C8A sub ax, ds:free_space_start[bx] seg000:5C8E seg000:5C8E loc_5C8E: ; CODE XREF: verify_tracks+238j seg000:5C8E pop si seg000:5C8F pop di seg000:5C90 mov sp, bp seg000:5C92 pop bp seg000:5C93 retn seg000:5C93 verify_tracks endp seg000:5C93 seg000:5C94 seg000:5C94 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5C94 seg000:5C94 ; Attributes: bp-based frame seg000:5C94 seg000:5C94 get_drive_parameters proc near ; CODE XREF: get_disk_info+36p seg000:5C94 ; get_disk_info+53p seg000:5C94 seg000:5C94 arg_0 = byte ptr 4 seg000:5C94 seg000:5C94 push bp seg000:5C95 mov bp, sp seg000:5C97 mov byte ptr ds:regs_x_ax+1, 8 seg000:5C9C mov al, [bp+arg_0] seg000:5C9F mov byte ptr ds:regs_x_dx, al seg000:5CA2 mov ax, offset segregs_es seg000:5CA5 push ax seg000:5CA6 mov ax, offset regs_x_ax seg000:5CA9 push ax seg000:5CAA push ax seg000:5CAB call DiskIo seg000:5CAE mov sp, bp seg000:5CB0 cmp byte ptr ds:regs_x_dx, 0 seg000:5CB5 jz short gdprm_1 seg000:5CB7 mov al, ds:regs_x_cflag seg000:5CBA and al, 1 seg000:5CBC cmp al, 1 seg000:5CBE jnz short gdprm_2 seg000:5CC0 seg000:5CC0 gdprm_1: ; CODE XREF: get_drive_parameters+21j seg000:5CC0 push ds:error_1_seg seg000:5CC4 push ds:error_1_off seg000:5CC8 call display seg000:5CCB pop bx seg000:5CCC pop bx seg000:5CCD sub al, al seg000:5CCF jmp short gdprm_4 seg000:5CD1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5CD1 seg000:5CD1 gdprm_2: ; CODE XREF: get_drive_parameters+2Aj seg000:5CD1 mov al, byte ptr ds:regs_x_dx seg000:5CD4 mov ds:number_of_drives, al seg000:5CD7 cmp al, 8 seg000:5CD9 jbe short gdprm_3 seg000:5CDB mov ds:number_of_drives, 8 seg000:5CE0 seg000:5CE0 gdprm_3: ; CODE XREF: get_drive_parameters+45j seg000:5CE0 mov al, 1 seg000:5CE2 seg000:5CE2 gdprm_4: ; CODE XREF: get_drive_parameters+3Bj seg000:5CE2 mov sp, bp seg000:5CE4 pop bp seg000:5CE5 retn seg000:5CE5 get_drive_parameters endp seg000:5CE5 seg000:5CE6 seg000:5CE6 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5CE6 seg000:5CE6 ; Attributes: bp-based frame seg000:5CE6 seg000:5CE6 read_boot_record proc near ; CODE XREF: main+171p seg000:5CE6 ; init_partition_tables+2Dp ... seg000:5CE6 seg000:5CE6 rbs_buffer = word ptr -4 seg000:5CE6 rbs_segment = word ptr -2 seg000:5CE6 rbs_cylinder = word ptr 4 seg000:5CE6 rbs_disk = byte ptr 6 seg000:5CE6 rbs_head = byte ptr 8 seg000:5CE6 rbs_sector = byte ptr 0Ah seg000:5CE6 seg000:5CE6 push bp seg000:5CE7 mov bp, sp seg000:5CE9 sub sp, 4 seg000:5CEC mov [bp+rbs_buffer], offset boot_record seg000:5CF1 mov [bp+rbs_segment], ds seg000:5CF4 mov byte ptr ds:regs_x_ax+1, 2 seg000:5CF9 mov byte ptr ds:regs_x_ax, 1 seg000:5CFE mov al, [bp+rbs_head] seg000:5D01 mov byte ptr ds:regs_x_dx+1, al seg000:5D04 mov al, [bp+rbs_sector] seg000:5D07 mov byte ptr ds:regs_x_cx, al seg000:5D0A mov al, [bp+rbs_disk] seg000:5D0D add al, 80h seg000:5D0F mov byte ptr ds:regs_x_dx, al seg000:5D12 cmp [bp+rbs_cylinder], 255 seg000:5D17 jbe short read_bs_1 seg000:5D19 mov ax, [bp+rbs_cylinder] seg000:5D1C shr ax, 1 seg000:5D1E shr ax, 1 seg000:5D20 and al, 0C0h seg000:5D22 or byte ptr ds:regs_x_cx, al seg000:5D26 seg000:5D26 read_bs_1: ; CODE XREF: read_boot_record+31j seg000:5D26 mov al, byte ptr [bp+rbs_cylinder] seg000:5D29 mov byte ptr ds:regs_x_cx+1, al seg000:5D2C mov ax, [bp+rbs_buffer] seg000:5D2F mov ds:regs_x_bx, ax seg000:5D32 mov ax, [bp+rbs_segment] seg000:5D35 mov ds:segregs_es, ax seg000:5D38 mov ax, offset segregs_es seg000:5D3B push ax seg000:5D3C mov ax, offset regs_x_ax seg000:5D3F push ax seg000:5D40 push ax seg000:5D41 call DiskIo seg000:5D44 add sp, 6 seg000:5D47 mov al, ds:regs_x_cflag seg000:5D4A and al, 1 seg000:5D4C cmp al, 1 seg000:5D4E jz short read_bs_2 seg000:5D50 mov al, 1 seg000:5D52 jmp short read_bs_3 seg000:5D54 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5D54 seg000:5D54 read_bs_2: ; CODE XREF: read_boot_record+68j seg000:5D54 mov bl, [bp+rbs_disk] seg000:5D57 sub bh, bh seg000:5D59 mov ds:good_disk[bx], bh seg000:5D5D mov ax, 79 seg000:5D60 push ax seg000:5D61 mov ax, 24 seg000:5D64 push ax seg000:5D65 sub ax, ax seg000:5D67 push ax seg000:5D68 push ax seg000:5D69 call clear_screen seg000:5D6C sub al, al seg000:5D6E seg000:5D6E read_bs_3: ; CODE XREF: read_boot_record+6Cj seg000:5D6E mov sp, bp seg000:5D70 pop bp seg000:5D71 retn seg000:5D71 read_boot_record endp seg000:5D71 seg000:5D72 seg000:5D72 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5D72 seg000:5D72 ; Attributes: bp-based frame seg000:5D72 seg000:5D72 DiskIo proc near ; CODE XREF: write_boot_record+59p seg000:5D72 ; verify_tracks+1EAp ... seg000:5D72 seg000:5D72 arg_0 = word ptr 4 seg000:5D72 arg_2 = word ptr 6 seg000:5D72 arg_4 = word ptr 8 seg000:5D72 seg000:5D72 push bp seg000:5D73 mov bp, sp seg000:5D75 push [bp+arg_4] seg000:5D78 push [bp+arg_2] seg000:5D7B push [bp+arg_0] seg000:5D7E mov ax, 13h seg000:5D81 push ax seg000:5D82 call int86x seg000:5D85 mov sp, bp seg000:5D87 pop bp seg000:5D88 retn seg000:5D88 DiskIo endp seg000:5D88 seg000:5D88 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5D89 align 2 seg000:5D8A seg000:5D8A ; --------------- S U B R O U T I N E --------------------------------------- seg000:5D8A seg000:5D8A ; Attributes: bp-based frame seg000:5D8A seg000:5D8A write_info_to_disk proc near ; CODE XREF: main+BBp seg000:5D8A ; main:_main_32p ... seg000:5D8A seg000:5D8A witd_j = byte ptr -0Eh seg000:5D8A witd_i = byte ptr -0Ch seg000:5D8A witd_extd_location= word ptr -0Ah seg000:5D8A witd_extd_index = byte ptr -8 seg000:5D8A witd_temp = byte ptr -6 seg000:5D8A witd_changed_flag= byte ptr -4 seg000:5D8A witd_temp_disk = byte ptr -2 seg000:5D8A seg000:5D8A push bp seg000:5D8B mov bp, sp seg000:5D8D sub sp, 14 seg000:5D90 push si seg000:5D91 mov [bp+witd_temp], 0FFh seg000:5D95 mov al, ds:cur_disk seg000:5D98 mov [bp+witd_temp_disk], al seg000:5D9B mov [bp+witd_j], 0 seg000:5D9F jmp witd_16 seg000:5DA2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5DA2 seg000:5DA2 witd_1: ; CODE XREF: write_info_to_disk+3Cj seg000:5DA2 inc [bp+witd_i] seg000:5DA5 seg000:5DA5 witd_2: ; CODE XREF: write_info_to_disk+1B1j seg000:5DA5 cmp [bp+witd_i], 4 seg000:5DA9 jge short witd_3 seg000:5DAB mov al, [bp+witd_i] seg000:5DAE cbw seg000:5DAF mov cl, [bp+witd_j] seg000:5DB2 sub ch, ch seg000:5DB4 shl cx, 1 seg000:5DB6 shl cx, 1 seg000:5DB8 add ax, cx seg000:5DBA mov cx, 46 seg000:5DBD imul cx seg000:5DBF mov bx, ax seg000:5DC1 cmp ds:part_table_changed[bx], 0 seg000:5DC6 jz short witd_1 seg000:5DC8 mov al, [bp+witd_j] seg000:5DCB push ax seg000:5DCC call write_master_boot_to_disk seg000:5DCF pop bx seg000:5DD0 seg000:5DD0 witd_3: ; CODE XREF: write_info_to_disk+1Fj seg000:5DD0 mov al, 5 seg000:5DD2 push ax seg000:5DD3 call find_partition_type seg000:5DD6 pop bx seg000:5DD7 or al, al seg000:5DD9 jnz short witd_4 seg000:5DDB jmp witd_15 seg000:5DDE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5DDE seg000:5DDE witd_4: ; CODE XREF: write_info_to_disk+4Fj seg000:5DDE sub al, al seg000:5DE0 mov [bp+witd_changed_flag], al seg000:5DE3 mov [bp+witd_i], al seg000:5DE6 jmp short witd_6 seg000:5DE8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5DE8 seg000:5DE8 witd_5: ; CODE XREF: write_info_to_disk+80j seg000:5DE8 inc [bp+witd_i] seg000:5DEB seg000:5DEB witd_6: ; CODE XREF: write_info_to_disk+5Cj seg000:5DEB cmp [bp+witd_i], 23 seg000:5DEF jge short witd_7 seg000:5DF1 mov al, [bp+witd_i] seg000:5DF4 cbw seg000:5DF5 mov cx, ax seg000:5DF7 mov al, 24 seg000:5DF9 mul [bp+witd_j] seg000:5DFC add ax, cx seg000:5DFE mov cx, 46 seg000:5E01 imul cx seg000:5E03 mov bx, ax seg000:5E05 cmp ds:ext_table_changed[bx], 0 seg000:5E0A jz short witd_5 seg000:5E0C mov [bp+witd_changed_flag], 1 seg000:5E10 seg000:5E10 witd_7: ; CODE XREF: write_info_to_disk+65j seg000:5E10 cmp [bp+witd_changed_flag], 0 seg000:5E14 jnz short witd_8 seg000:5E16 jmp witd_15 seg000:5E19 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5E19 seg000:5E19 witd_8: ; CODE XREF: write_info_to_disk+8Aj seg000:5E19 mov al, 23 seg000:5E1B push ax seg000:5E1C call sort_ext_table seg000:5E1F pop bx seg000:5E20 mov [bp+witd_i], 0 seg000:5E24 seg000:5E24 witd_9: ; CODE XREF: write_info_to_disk+D0j seg000:5E24 mov al, 24 seg000:5E26 mul [bp+witd_j] seg000:5E29 mov cx, ax seg000:5E2B mov al, [bp+witd_i] seg000:5E2E cbw seg000:5E2F mov bx, ax seg000:5E31 mov al, ds:sort[bx] seg000:5E35 cbw seg000:5E36 add ax, cx seg000:5E38 mov cx, 46 seg000:5E3B imul cx seg000:5E3D mov bx, ax seg000:5E3F cmp ds:ext_table_sys_id[bx], 0 seg000:5E44 jz short witd_10 seg000:5E46 mov al, [bp+witd_j] seg000:5E49 push ax seg000:5E4A mov al, [bp+witd_i] seg000:5E4D push ax seg000:5E4E call write_ext_boot_to_disk seg000:5E51 pop bx seg000:5E52 pop bx seg000:5E53 seg000:5E53 witd_10: ; CODE XREF: write_info_to_disk+BAj seg000:5E53 inc [bp+witd_i] seg000:5E56 cmp [bp+witd_i], 23 seg000:5E5A jl short witd_9 seg000:5E5C mov al, 5 seg000:5E5E push ax seg000:5E5F call find_partition_location seg000:5E62 pop bx seg000:5E63 mov [bp+witd_extd_index], al seg000:5E66 cbw seg000:5E67 mov cl, [bp+witd_j] seg000:5E6A sub ch, ch seg000:5E6C shl cx, 1 seg000:5E6E shl cx, 1 seg000:5E70 add ax, cx seg000:5E72 mov cx, 46 seg000:5E75 imul cx seg000:5E77 mov bx, ax seg000:5E79 mov ax, ds:part_table_start_cyl[bx] seg000:5E7D mov [bp+witd_extd_location], ax seg000:5E80 mov [bp+witd_i], 0 seg000:5E84 jmp short witd_12 seg000:5E86 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5E86 seg000:5E86 witd_11: ; CODE XREF: write_info_to_disk+129j seg000:5E86 inc [bp+witd_i] seg000:5E89 seg000:5E89 witd_12: ; CODE XREF: write_info_to_disk+FAj seg000:5E89 cmp [bp+witd_i], 23 seg000:5E8D jge short witd_13 seg000:5E8F mov al, 24 seg000:5E91 mul [bp+witd_j] seg000:5E94 mov cx, ax seg000:5E96 mov al, [bp+witd_i] seg000:5E99 cbw seg000:5E9A mov bx, ax seg000:5E9C mov al, ds:sort[bx] seg000:5EA0 mov dx, ax seg000:5EA2 cbw seg000:5EA3 add ax, cx seg000:5EA5 mov cx, 46 seg000:5EA8 mov bx, dx seg000:5EAA imul cx seg000:5EAC mov si, ax seg000:5EAE cmp ds:ext_table_sys_id[si], 0 seg000:5EB3 jz short witd_11 seg000:5EB5 mov [bp+witd_temp], bl seg000:5EB8 seg000:5EB8 witd_13: ; CODE XREF: write_info_to_disk+103j seg000:5EB8 cmp [bp+witd_temp], 0FFh seg000:5EBC jz short witd_14 seg000:5EBE mov al, [bp+witd_temp] seg000:5EC1 cbw seg000:5EC2 mov cx, ax seg000:5EC4 mov al, 24 seg000:5EC6 mul [bp+witd_j] seg000:5EC9 add ax, cx seg000:5ECB mov cx, 46 seg000:5ECE imul cx seg000:5ED0 mov bx, ax seg000:5ED2 mov ax, [bp+witd_extd_location] seg000:5ED5 cmp ds:ext_table_start_cyl[bx], ax seg000:5ED9 jz short witd_15 seg000:5EDB seg000:5EDB witd_14: ; CODE XREF: write_info_to_disk+132j seg000:5EDB mov al, [bp+witd_j] seg000:5EDE sub ah, ah seg000:5EE0 mov cx, 1104 seg000:5EE3 mov bx, ax seg000:5EE5 imul cx seg000:5EE7 mov si, ax seg000:5EE9 mov ds:ep0_lp23_sys_id[si], 0 seg000:5EEE mov al, [bp+witd_extd_index] seg000:5EF1 cbw seg000:5EF2 shl bx, 1 seg000:5EF4 shl bx, 1 seg000:5EF6 add ax, bx seg000:5EF8 mov cx, 46 seg000:5EFB imul cx seg000:5EFD mov bx, ax seg000:5EFF mov ax, ds:part_table_start_cyl[bx] seg000:5F03 mov ds:ep0_lp23_start_cyl[si], ax seg000:5F07 mov ds:ep0_lp23_start_head[si], 0 seg000:5F0C mov ds:ep0_lp23_start_sector[si], 1 seg000:5F11 mov al, [bp+witd_j] seg000:5F14 push ax seg000:5F15 mov al, 23 seg000:5F17 push ax seg000:5F18 call write_ext_boot_to_disk seg000:5F1B pop bx seg000:5F1C pop bx seg000:5F1D seg000:5F1D witd_15: ; CODE XREF: write_info_to_disk+51j seg000:5F1D ; write_info_to_disk+8Cj ... seg000:5F1D inc [bp+witd_j] seg000:5F20 seg000:5F20 witd_16: ; CODE XREF: write_info_to_disk+15j seg000:5F20 mov al, ds:number_of_drives seg000:5F23 cmp [bp+witd_j], al seg000:5F26 jnb short witd_17 seg000:5F28 mov al, [bp+witd_j] seg000:5F2B mov ds:cur_disk, al seg000:5F2E mov bl, al seg000:5F30 sub bh, bh seg000:5F32 cmp ds:good_disk[bx], bh seg000:5F36 jz short witd_15 seg000:5F38 mov [bp+witd_i], bh seg000:5F3B jmp witd_2 seg000:5F3E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5F3E seg000:5F3E witd_17: ; CODE XREF: write_info_to_disk+19Cj seg000:5F3E mov al, [bp+witd_temp_disk] seg000:5F41 mov ds:cur_disk, al seg000:5F44 pop si seg000:5F45 mov sp, bp seg000:5F47 pop bp seg000:5F48 retn seg000:5F48 write_info_to_disk endp seg000:5F48 seg000:5F49 seg000:5F49 ; --------------- S U B R O U T I N E --------------------------------------- seg000:5F49 seg000:5F49 ; Attributes: bp-based frame seg000:5F49 seg000:5F49 write_master_boot_to_disk proc near ; CODE XREF: write_info_to_disk+42p seg000:5F49 seg000:5F49 wmbr_long_temp = word ptr -0Eh seg000:5F49 wmbr_j = word ptr -0Ah seg000:5F49 wmbr_i = byte ptr -8 seg000:5F49 wmbr_index = word ptr -6 seg000:5F49 wmbr_disk = byte ptr 4 seg000:5F49 seg000:5F49 push bp seg000:5F4A mov bp, sp seg000:5F4C sub sp, 14 seg000:5F4F push di seg000:5F50 push si seg000:5F51 mov [bp+wmbr_j], 0 seg000:5F56 seg000:5F56 wmbr_0: ; CODE XREF: write_master_boot_to_disk+1Dj seg000:5F56 mov bx, [bp+wmbr_j] seg000:5F59 mov ds:boot_record[bx], 0 seg000:5F5E inc [bp+wmbr_j] seg000:5F61 cmp [bp+wmbr_j], 512 seg000:5F66 jb short wmbr_0 seg000:5F68 mov [bp+wmbr_j], 0 seg000:5F6D seg000:5F6D wmbr_1: ; CODE XREF: write_master_boot_to_disk+42j seg000:5F6D mov cl, 9 seg000:5F6F mov al, [bp+wmbr_disk] seg000:5F72 sub ah, ah seg000:5F74 mov si, ax seg000:5F76 shl si, cl seg000:5F78 mov bx, [bp+wmbr_j] seg000:5F7B mov al, ds:master_boot_record[bx+si] seg000:5F7F mov ds:boot_record[bx], al seg000:5F83 inc [bp+wmbr_j] seg000:5F86 cmp [bp+wmbr_j], 512 seg000:5F8B jb short wmbr_1 seg000:5F8D mov [bp+wmbr_i], ah seg000:5F90 seg000:5F90 wmbr_2: ; CODE XREF: write_master_boot_to_disk+144j seg000:5F90 mov cl, 4 seg000:5F92 mov al, [bp+wmbr_i] seg000:5F95 sub ah, ah seg000:5F97 mov dx, ax seg000:5F99 shl ax, cl seg000:5F9B mov [bp+wmbr_index], ax seg000:5F9E mov al, [bp+wmbr_disk] seg000:5FA1 sub ah, ah seg000:5FA3 shl ax, 1 seg000:5FA5 shl ax, 1 seg000:5FA7 add ax, dx seg000:5FA9 mov cx, 46 seg000:5FAC imul cx seg000:5FAE mov bx, ax seg000:5FB0 cmp ds:part_table_changed[bx], 0 seg000:5FB5 jnz short wmbr_3 seg000:5FB7 jmp wmbr_4 seg000:5FBA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:5FBA seg000:5FBA wmbr_3: ; CODE XREF: write_master_boot_to_disk+6Cj seg000:5FBA mov al, ds:part_table_boot_ind[bx] seg000:5FBE mov si, [bp+wmbr_index] seg000:5FC1 mov ds:(boot_record+1BEh)[si], al seg000:5FC5 mov al, ds:part_table_start_head[bx] seg000:5FC9 mov ds:(boot_record+1BFh)[si], al seg000:5FCD mov ax, ds:part_table_start_cyl[bx] seg000:5FD1 mov cx, ax seg000:5FD3 shr ax, 1 seg000:5FD5 shr ax, 1 seg000:5FD7 mov dx, ax seg000:5FD9 xor al, ds:part_table_start_sector[bx] seg000:5FDD and al, 3Fh seg000:5FDF xor dl, al seg000:5FE1 mov ds:(boot_record+1C0h)[si], dl seg000:5FE5 mov ds:(boot_record+1C1h)[si], cl seg000:5FE9 mov al, ds:part_table_sys_id[bx] seg000:5FED mov ds:(boot_record+1C2h)[si], al seg000:5FF1 mov al, ds:part_table_end_head[bx] seg000:5FF5 mov ds:(boot_record+1C3h)[si], al seg000:5FF9 mov ax, ds:part_table_end_cyl[bx] seg000:5FFD mov cx, ax seg000:5FFF shr ax, 1 seg000:6001 shr ax, 1 seg000:6003 mov dx, ax seg000:6005 xor al, ds:part_table_end_sector[bx] seg000:6009 and al, 3Fh seg000:600B xor dl, al seg000:600D mov ds:(boot_record+1C4h)[si], dl seg000:6011 mov ds:(boot_record+1C5h)[si], cl seg000:6015 mov ax, ds:part_table_rel_sec_lw[bx] seg000:6019 mov dx, ds:part_table_rel_sec_hw[bx] seg000:601D mov cx, ax seg000:601F mov di, dx seg000:6021 mov dl, dh seg000:6023 sub dh, dh seg000:6025 mov ds:(boot_record+1C9h)[si], dl seg000:6029 mov si, di seg000:602B mov ax, si seg000:602D mov di, [bp+wmbr_index] seg000:6030 mov ds:(boot_record+1C8h)[di], al seg000:6034 mov ax, cx seg000:6036 mov dx, si seg000:6038 mov cl, 8 seg000:603A mov si, bx seg000:603C mov [bp+wmbr_long_temp], ax seg000:603F call shr32 seg000:6042 mov bx, [bp+wmbr_index] seg000:6045 mov ds:(boot_record+1C7h)[bx], al seg000:6049 mov al, byte ptr [bp+wmbr_long_temp] seg000:604C mov ds:(boot_record+1C6h)[bx], al seg000:6050 mov ax, ds:part_table_num_sec_lw[si] seg000:6054 mov dx, ds:part_table_num_sec_hw[si] seg000:6058 mov cx, ax seg000:605A mov si, dx seg000:605C mov dl, dh seg000:605E sub dh, dh seg000:6060 mov ds:(boot_record+1CDh)[bx], dl seg000:6064 mov di, si seg000:6066 mov ax, di seg000:6068 mov ds:(boot_record+1CCh)[bx], al seg000:606C mov ax, cx seg000:606E mov dx, si seg000:6070 mov cl, 8 seg000:6072 mov si, ax seg000:6074 call shr32 seg000:6077 mov bx, [bp+wmbr_index] seg000:607A mov ds:(boot_record+1CBh)[bx], al seg000:607E mov ax, si seg000:6080 mov ds:(boot_record+1CAh)[bx], al seg000:6084 seg000:6084 wmbr_4: ; CODE XREF: write_master_boot_to_disk+6Ej seg000:6084 inc [bp+wmbr_i] seg000:6087 cmp [bp+wmbr_i], 4 seg000:608B jnb short wmbr_5 seg000:608D jmp wmbr_2 seg000:6090 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6090 seg000:6090 wmbr_5: ; CODE XREF: write_master_boot_to_disk+142j seg000:6090 mov ds:boot_record+1FEh, 55h seg000:6095 mov ds:boot_record+1FFh, 0AAh seg000:609A mov al, [bp+wmbr_disk] seg000:609D push ax seg000:609E sub ax, ax seg000:60A0 push ax seg000:60A1 call write_boot_record seg000:60A4 pop bx seg000:60A5 pop bx seg000:60A6 pop si seg000:60A7 pop di seg000:60A8 mov sp, bp seg000:60AA pop bp seg000:60AB retn seg000:60AB write_master_boot_to_disk endp seg000:60AB seg000:60AC seg000:60AC ; --------------- S U B R O U T I N E --------------------------------------- seg000:60AC seg000:60AC ; Attributes: bp-based frame seg000:60AC seg000:60AC write_ext_boot_to_disk proc near ; CODE XREF: write_info_to_disk+C4p seg000:60AC ; write_info_to_disk+18Ep seg000:60AC seg000:60AC webr_temp3 = word ptr -22h seg000:60AC webr_multiplicand_lw= word ptr -1Eh seg000:60AC webr_multiplicand_hw= word ptr -1Ch seg000:60AC webr_multiplier_lw= word ptr -1Ah seg000:60AC webr_multiplier_hw= word ptr -18h seg000:60AC webr_temp2 = word ptr -16h seg000:60AC webr_temp1 = word ptr -14h seg000:60AC webr_j = word ptr -0Eh seg000:60AC webr_i = byte ptr -0Ch seg000:60AC webr_location = byte ptr -0Ah seg000:60AC webr_next_drive = byte ptr -8 seg000:60AC webr_longtemp = word ptr -6 seg000:60AC webr_longtemp_2 = word ptr -4 seg000:60AC webr_pointer = byte ptr -2 seg000:60AC webr_entry = byte ptr 4 seg000:60AC webr_disk = byte ptr 6 seg000:60AC seg000:60AC push bp seg000:60AD mov bp, sp seg000:60AF sub sp, 34 seg000:60B2 push di seg000:60B3 push si seg000:60B4 mov [bp+webr_j], 0 seg000:60B9 seg000:60B9 webr_1: ; CODE XREF: write_ext_boot_to_disk+1Dj seg000:60B9 mov bx, [bp+webr_j] seg000:60BC mov ds:boot_record[bx], 0 seg000:60C1 inc [bp+webr_j] seg000:60C4 cmp [bp+webr_j], 512 seg000:60C9 jb short webr_1 seg000:60CB cmp [bp+webr_entry], 23 seg000:60CF jnz short webr_2 seg000:60D1 jmp webr_4 seg000:60D4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:60D4 seg000:60D4 webr_2: ; CODE XREF: write_ext_boot_to_disk+23j seg000:60D4 mov al, 24 seg000:60D6 mul [bp+webr_disk] seg000:60D9 mov cx, ax seg000:60DB mov al, [bp+webr_entry] seg000:60DE cbw seg000:60DF mov bx, ax seg000:60E1 mov al, ds:sort[bx] seg000:60E5 cbw seg000:60E6 add ax, cx seg000:60E8 mov cx, 46 seg000:60EB imul cx seg000:60ED mov bx, ax seg000:60EF cmp ds:ext_table_sys_id[bx], 0 seg000:60F4 jnz short webr_3 seg000:60F6 jmp webr_4 seg000:60F9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:60F9 seg000:60F9 webr_3: ; CODE XREF: write_ext_boot_to_disk+48j seg000:60F9 mov al, ds:ext_table_boot_ind[bx] seg000:60FD mov ds:boot_record+1BEh, al seg000:6100 mov al, ds:ext_table_start_head[bx] seg000:6104 mov ds:boot_record+1BFh, al seg000:6107 mov ax, ds:ext_table_start_cyl[bx] seg000:610B mov cx, ax seg000:610D shr ax, 1 seg000:610F shr ax, 1 seg000:6111 mov dx, ax seg000:6113 xor al, ds:ext_table_start_sector[bx] seg000:6117 and al, 3Fh seg000:6119 xor dl, al seg000:611B mov ds:boot_record+1C0h, dl seg000:611F mov ds:boot_record+1C1h, cl seg000:6123 mov al, ds:ext_table_sys_id[bx] seg000:6127 mov ds:boot_record+1C2h, al seg000:612A mov al, ds:ext_table_end_head[bx] seg000:612E mov ds:boot_record+1C3h, al seg000:6131 mov ax, ds:ext_table_end_cyl[bx] seg000:6135 mov cx, ax seg000:6137 shr ax, 1 seg000:6139 shr ax, 1 seg000:613B mov dx, ax seg000:613D xor al, ds:ext_table_end_sector[bx] seg000:6141 and al, 3Fh seg000:6143 xor dl, al seg000:6145 mov ds:boot_record+1C4h, dl seg000:6149 mov ds:boot_record+1C5h, cl seg000:614D mov ax, ds:ext_table_rel_sec_lw[bx] seg000:6151 mov dx, ds:ext_table_rel_sec_hw[bx] seg000:6155 mov cx, ax seg000:6157 mov si, dx seg000:6159 mov dl, dh seg000:615B sub dh, dh seg000:615D mov ds:boot_record+1C9h, dl seg000:6161 mov di, si seg000:6163 mov ax, si seg000:6165 mov ds:boot_record+1C8h, al seg000:6168 mov ax, cx seg000:616A mov dx, di seg000:616C mov cl, 8 seg000:616E mov si, bx seg000:6170 mov [bp+webr_temp1], ax seg000:6173 call shr32 seg000:6176 mov ds:boot_record+1C7h, al seg000:6179 mov al, byte ptr [bp+webr_temp1] seg000:617C mov ds:boot_record+1C6h, al seg000:617F mov ax, ds:ext_table_num_sec_lw[si] seg000:6183 mov dx, ds:ext_table_num_sec_hw[si] seg000:6187 mov [bp+webr_longtemp], ax seg000:618A mov [bp+webr_longtemp_2], dx seg000:618D mov cx, ax seg000:618F mov bx, dx seg000:6191 mov dl, dh seg000:6193 sub dh, dh seg000:6195 mov ds:boot_record+1CDh, dl seg000:6199 mov si, bx seg000:619B mov ds:boot_record+1CCh, bl seg000:619F mov dx, bx seg000:61A1 mov cl, 8 seg000:61A3 mov di, ax seg000:61A5 call shr32 seg000:61A8 mov ds:boot_record+1CBh, al seg000:61AB mov ax, di seg000:61AD mov ds:boot_record+1CAh, al seg000:61B0 seg000:61B0 webr_4: ; CODE XREF: write_ext_boot_to_disk+25j seg000:61B0 ; write_ext_boot_to_disk+4Aj seg000:61B0 cmp [bp+webr_entry], 22 seg000:61B4 jnz short webr_5 seg000:61B6 jmp webr_11 seg000:61B9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:61B9 seg000:61B9 webr_5: ; CODE XREF: write_ext_boot_to_disk+108j seg000:61B9 mov al, [bp+webr_entry] seg000:61BC inc al seg000:61BE mov [bp+webr_pointer], al seg000:61C1 cmp [bp+webr_entry], 23 seg000:61C5 jnz short webr_6 seg000:61C7 mov [bp+webr_pointer], 0 seg000:61CB seg000:61CB webr_6: ; CODE XREF: write_ext_boot_to_disk+119j seg000:61CB mov al, [bp+webr_pointer] seg000:61CE mov [bp+webr_i], al seg000:61D1 jmp short webr_8 seg000:61D3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:61D3 seg000:61D3 webr_7: ; CODE XREF: write_ext_boot_to_disk+158j seg000:61D3 inc [bp+webr_i] seg000:61D6 seg000:61D6 webr_8: ; CODE XREF: write_ext_boot_to_disk+125j seg000:61D6 cmp [bp+webr_i], 23 seg000:61DA jge short webr_9 seg000:61DC mov [bp+webr_next_drive], 0FFh seg000:61E0 mov al, 24 seg000:61E2 mul [bp+webr_disk] seg000:61E5 mov cx, ax seg000:61E7 mov al, [bp+webr_i] seg000:61EA cbw seg000:61EB mov bx, ax seg000:61ED mov al, ds:sort[bx] seg000:61F1 mov dx, ax seg000:61F3 cbw seg000:61F4 add ax, cx seg000:61F6 mov cx, 46 seg000:61F9 mov bx, dx seg000:61FB imul cx seg000:61FD mov si, ax seg000:61FF cmp ds:ext_table_sys_id[si], 0 seg000:6204 jz short webr_7 seg000:6206 mov [bp+webr_next_drive], bl seg000:6209 seg000:6209 webr_9: ; CODE XREF: write_ext_boot_to_disk+12Ej seg000:6209 cmp [bp+webr_next_drive], 0FFh seg000:620D jnz short webr_10 seg000:620F jmp webr_11 seg000:6212 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6212 seg000:6212 webr_10: ; CODE XREF: write_ext_boot_to_disk+161j seg000:6212 sub al, al seg000:6214 mov ds:boot_record+1CEh, al seg000:6217 mov ds:boot_record+1CFh, al seg000:621A mov al, [bp+webr_next_drive] seg000:621D cbw seg000:621E mov cx, 24 seg000:6221 mov dx, ax seg000:6223 mov al, [bp+webr_disk] seg000:6226 sub ah, ah seg000:6228 mov bx, dx seg000:622A mov si, 46 seg000:622D mov di, ax seg000:622F imul cx seg000:6231 add ax, bx seg000:6233 imul si seg000:6235 mov bx, ax seg000:6237 mov ax, ds:ext_table_start_cyl[bx] seg000:623B mov cx, ax seg000:623D shr ax, 1 seg000:623F shr ax, 1 seg000:6241 and al, 0C1h seg000:6243 or al, 1 seg000:6245 mov ds:boot_record+1D0h, al seg000:6248 mov ax, di seg000:624A shl di, 1 seg000:624C mov dl, byte ptr ds:max_head[di] seg000:6250 dec dl seg000:6252 mov ds:boot_record+1D3h, dl seg000:6256 mov dx, ds:ext_table_end_cyl[bx] seg000:625A mov si, dx seg000:625C shr dx, 1 seg000:625E shr dx, 1 seg000:6260 mov [bp+webr_temp1], bx seg000:6263 mov bx, ax seg000:6265 mov [bp+webr_temp2], dx seg000:6268 xor dl, ds:max_sector[bx] seg000:626C and dl, 3Fh seg000:626F xor dl, byte ptr [bp+webr_temp2] seg000:6272 mov ds:boot_record+1D4h, dl seg000:6276 mov ds:boot_record+1D1h, cl seg000:627A mov cx, si seg000:627C mov ds:boot_record+1D5h, cl seg000:6280 mov cl, 5 seg000:6282 mov ds:boot_record+1D2h, cl seg000:6286 push cx seg000:6287 mov si, bx seg000:6289 call find_partition_location seg000:628C pop bx seg000:628D mov [bp+webr_location], al seg000:6290 mov ax, ds:max_head[di] seg000:6294 sub dx, dx seg000:6296 push dx seg000:6297 push ax seg000:6298 mov cl, ds:max_sector[si] seg000:629C sub ch, ch seg000:629E sub bx, bx seg000:62A0 push bx seg000:62A1 push cx seg000:62A2 mov di, 46 seg000:62A5 shl si, 1 seg000:62A7 shl si, 1 seg000:62A9 mov [bp+webr_multiplier_lw], ax seg000:62AC mov [bp+webr_multiplier_hw], dx seg000:62AF mov al, [bp+webr_location] seg000:62B2 cbw seg000:62B3 add ax, si seg000:62B5 imul di seg000:62B7 mov si, ax seg000:62B9 mov di, [bp+webr_temp1] seg000:62BC mov ax, ds:ext_table_start_cyl[di] seg000:62C0 mov dx, ax seg000:62C2 sub ax, ds:part_table_start_cyl[si] seg000:62C6 mov si, dx seg000:62C8 sub dx, dx seg000:62CA push dx seg000:62CB push ax seg000:62CC mov di, cx seg000:62CE mov [bp+webr_multiplicand_lw], di seg000:62D1 mov [bp+webr_multiplicand_hw], bx seg000:62D4 call mul32 seg000:62D7 push dx seg000:62D8 push ax seg000:62D9 call mul32 seg000:62DC mov cx, ax seg000:62DE mov bx, dx seg000:62E0 mov dl, dh seg000:62E2 sub dh, dh seg000:62E4 mov ds:boot_record+1D9h, dl seg000:62E8 mov di, bx seg000:62EA mov ds:boot_record+1D8h, bl seg000:62EE mov dx, di seg000:62F0 mov cl, 8 seg000:62F2 mov [bp+webr_temp3], ax seg000:62F5 call shr32 seg000:62F8 mov ds:boot_record+1D7h, al seg000:62FB mov al, byte ptr [bp+webr_temp3] seg000:62FE mov ds:boot_record+1D6h, al seg000:6301 push [bp+webr_multiplier_hw] seg000:6304 push [bp+webr_multiplier_lw] seg000:6307 push [bp+webr_multiplicand_hw] seg000:630A push [bp+webr_multiplicand_lw] seg000:630D mov bx, [bp+webr_temp1] seg000:6310 sub si, ds:ext_table_end_cyl[bx] seg000:6314 neg si seg000:6316 inc si seg000:6317 sub cx, cx seg000:6319 push cx seg000:631A push si seg000:631B call mul32 seg000:631E push dx seg000:631F push ax seg000:6320 call mul32 seg000:6323 mov [bp+webr_longtemp], ax seg000:6326 mov [bp+webr_longtemp_2], dx seg000:6329 mov dl, dh seg000:632B sub dh, dh seg000:632D mov ds:boot_record+1DDh, dl seg000:6331 mov al, byte ptr [bp+webr_longtemp_2] seg000:6334 mov ds:boot_record+1DCh, al seg000:6337 mov ax, [bp+webr_longtemp] seg000:633A mov dx, [bp+webr_longtemp_2] seg000:633D mov cl, 8 seg000:633F call shr32 seg000:6342 mov ds:boot_record+1DBh, al seg000:6345 mov al, byte ptr [bp+webr_longtemp] seg000:6348 mov ds:boot_record+1DAh, al seg000:634B seg000:634B webr_11: ; CODE XREF: write_ext_boot_to_disk+10Aj seg000:634B ; write_ext_boot_to_disk+163j seg000:634B mov ds:boot_record+1FEh, 55h seg000:6350 mov ds:boot_record+1FFh, 0AAh seg000:6355 cmp [bp+webr_entry], 23 seg000:6359 jz short webr_12 seg000:635B mov al, [bp+webr_disk] seg000:635E push ax seg000:635F mov cl, 24 seg000:6361 mul cl seg000:6363 mov cx, ax seg000:6365 mov al, [bp+webr_entry] seg000:6368 cbw seg000:6369 mov bx, ax seg000:636B mov al, ds:sort[bx] seg000:636F cbw seg000:6370 add ax, cx seg000:6372 mov cx, 46 seg000:6375 imul cx seg000:6377 mov bx, ax seg000:6379 push ds:ext_table_start_cyl[bx] seg000:637D jmp short webr_13 seg000:637F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:637F seg000:637F webr_12: ; CODE XREF: write_ext_boot_to_disk+2ADj seg000:637F mov al, [bp+webr_disk] seg000:6382 push ax seg000:6383 sub ah, ah seg000:6385 mov cx, 1104 seg000:6388 imul cx seg000:638A mov bx, ax seg000:638C push ds:ep0_lp23_start_cyl[bx] seg000:6390 seg000:6390 webr_13: ; CODE XREF: write_ext_boot_to_disk+2D1j seg000:6390 call write_boot_record seg000:6393 pop bx seg000:6394 pop bx seg000:6395 pop si seg000:6396 pop di seg000:6397 mov sp, bp seg000:6399 pop bp seg000:639A retn seg000:639A write_ext_boot_to_disk endp seg000:639A seg000:639A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:639B align 2 seg000:639C seg000:639C ; --------------- S U B R O U T I N E --------------------------------------- seg000:639C seg000:639C ; Attributes: bp-based frame seg000:639C seg000:639C preload_messages proc near ; CODE XREF: main+1Ap seg000:639C seg000:639C var_2 = byte ptr -2 seg000:639C seg000:639C push bp seg000:639D mov bp, sp seg000:639F sub sp, 2 seg000:63A2 mov [bp+var_2], 1 seg000:63A6 mov ax, offset regs_x_ax seg000:63A9 push ax seg000:63AA push ax seg000:63AB call sysloadmsg seg000:63AE pop bx seg000:63AF pop bx seg000:63B0 mov al, ds:regs_x_cflag seg000:63B3 and al, 1 seg000:63B5 cmp al, 1 seg000:63B7 jnz short preloadmsg_1 seg000:63B9 mov ax, offset regs_x_ax seg000:63BC push ax seg000:63BD push ax seg000:63BE call sysdispmsg seg000:63C1 pop bx seg000:63C2 pop bx seg000:63C3 mov [bp+var_2], 0 seg000:63C7 seg000:63C7 preloadmsg_1: ; CODE XREF: preload_messages+1Bj seg000:63C7 mov al, [bp+var_2] seg000:63CA mov sp, bp seg000:63CC pop bp seg000:63CD retn seg000:63CD preload_messages endp seg000:63CD seg000:63CE seg000:63CE ; --------------- S U B R O U T I N E --------------------------------------- seg000:63CE seg000:63CE ; Attributes: bp-based frame seg000:63CE seg000:63CE display_msg proc near ; CODE XREF: main+120p seg000:63CE ; check_valid_environment+38p seg000:63CE seg000:63CE arg_0 = word ptr 4 seg000:63CE arg_2 = word ptr 6 seg000:63CE arg_4 = word ptr 8 seg000:63CE arg_6 = word ptr 0Ah seg000:63CE arg_8 = byte ptr 0Ch seg000:63CE arg_A = byte ptr 0Eh seg000:63CE seg000:63CE push bp seg000:63CF mov bp, sp seg000:63D1 mov ax, [bp+arg_0] seg000:63D4 mov ds:regs_x_ax, ax seg000:63D7 mov ax, [bp+arg_2] seg000:63DA mov ds:regs_x_bx, ax seg000:63DD mov ax, [bp+arg_4] seg000:63E0 mov ds:regs_x_cx, ax seg000:63E3 mov al, [bp+arg_A] seg000:63E6 mov byte ptr ds:regs_x_dx+1, al seg000:63E9 mov al, [bp+arg_8] seg000:63EC mov byte ptr ds:regs_x_dx, al seg000:63EF mov ax, [bp+arg_6] seg000:63F2 mov ds:regs_x_si, ax seg000:63F5 mov ax, offset regs_x_ax seg000:63F8 push ax seg000:63F9 push ax seg000:63FA call sysdispmsg seg000:63FD pop bx seg000:63FE pop bx seg000:63FF mov sp, bp seg000:6401 pop bp seg000:6402 retn seg000:6402 display_msg endp seg000:6402 seg000:6403 seg000:6403 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6403 seg000:6403 ; Attributes: bp-based frame seg000:6403 seg000:6403 get_yes_no_values proc near ; CODE XREF: main:loc_39p seg000:6403 seg000:6403 var_6 = byte ptr -6 seg000:6403 var_4 = dword ptr -4 seg000:6403 seg000:6403 push bp seg000:6404 mov bp, sp seg000:6406 sub sp, 6 seg000:6409 mov [bp+var_6], 1 seg000:640D mov ds:regs_x_ax, 9 seg000:6413 mov byte ptr ds:regs_x_dx+1, 255 seg000:6418 mov ax, offset regs_x_ax seg000:641B push ax seg000:641C mov cx, offset segregs_es seg000:641F push cx seg000:6420 push ax seg000:6421 call sysgetmsg seg000:6424 add sp, 6 seg000:6427 mov ax, ds:regs_x_si seg000:642A mov word ptr [bp+var_4], ax seg000:642D mov ax, ds:segregs_ds seg000:6430 mov word ptr [bp+var_4+2], ax seg000:6433 les bx, [bp+var_4] seg000:6436 mov al, es:[bx] seg000:6439 mov ds:Yes, al seg000:643C mov al, ds:regs_x_cflag seg000:643F and al, 1 seg000:6441 cmp al, 1 seg000:6443 jz short loc_6474 seg000:6445 mov ds:regs_x_ax, 10 seg000:644B mov byte ptr ds:regs_x_dx+1, 255 seg000:6450 mov ax, offset regs_x_ax seg000:6453 push ax seg000:6454 mov cx, offset segregs_es seg000:6457 push cx seg000:6458 push ax seg000:6459 call sysgetmsg seg000:645C add sp, 6 seg000:645F mov ax, ds:regs_x_si seg000:6462 mov word ptr [bp+var_4], ax seg000:6465 mov ax, ds:segregs_ds seg000:6468 mov word ptr [bp+var_4+2], ax seg000:646B les bx, [bp+var_4] seg000:646E mov al, es:[bx] seg000:6471 mov byte ptr ds:No, al seg000:6474 seg000:6474 loc_6474: ; CODE XREF: get_yes_no_values+40j seg000:6474 mov al, ds:regs_x_cflag seg000:6477 and al, 1 seg000:6479 cmp al, 1 seg000:647B jnz short loc_648B seg000:647D mov ax, offset regs_x_ax seg000:6480 push ax seg000:6481 push ax seg000:6482 call sysdispmsg seg000:6485 pop bx seg000:6486 pop bx seg000:6487 mov [bp+var_6], 0 seg000:648B seg000:648B loc_648B: ; CODE XREF: get_yes_no_values+78j seg000:648B mov al, [bp+var_6] seg000:648E mov sp, bp seg000:6490 pop bp seg000:6491 retn seg000:6491 get_yes_no_values endp seg000:6491 seg000:6492 seg000:6492 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6492 seg000:6492 ; Attributes: bp-based frame seg000:6492 seg000:6492 parse_command_line proc near ; CODE XREF: main:loc_46p seg000:6492 seg000:6492 var_8A = dword ptr -8Ah seg000:6492 var_86 = word ptr -86h seg000:6492 var_6 = byte ptr -6 seg000:6492 var_4 = word ptr -4 seg000:6492 var_2 = byte ptr -2 seg000:6492 seg000:6492 push bp seg000:6493 mov bp, sp seg000:6495 sub sp, 138 seg000:6499 push si seg000:649A call parse_init seg000:649D mov [bp+var_2], 1 seg000:64A1 mov byte ptr ds:regs_x_ax+1, 62h seg000:64A6 mov ax, offset segregs_es seg000:64A9 push ax seg000:64AA mov ax, offset regs_x_ax seg000:64AD push ax seg000:64AE push ax seg000:64AF call intdosx seg000:64B2 add sp, 6 seg000:64B5 mov word ptr [bp+var_8A], 81h seg000:64BB mov ax, ds:regs_x_bx seg000:64BE mov word ptr [bp+var_8A+2], ax seg000:64C2 mov [bp+var_4], 0 seg000:64C7 jmp short loc_64DA seg000:64C9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:64C9 seg000:64C9 loc_64C9: ; CODE XREF: parse_command_line+50j seg000:64C9 mov al, es:[bx] seg000:64CC mov si, [bp+var_4] seg000:64CF mov byte ptr [bp+si+var_86], al seg000:64D3 inc word ptr [bp+var_8A] seg000:64D7 inc [bp+var_4] seg000:64DA seg000:64DA loc_64DA: ; CODE XREF: parse_command_line+35j seg000:64DA les bx, [bp+var_8A] seg000:64DE cmp byte ptr es:[bx], 0Dh seg000:64E2 jnz short loc_64C9 seg000:64E4 mov si, [bp+var_4] seg000:64E7 mov byte ptr [bp+si+var_86], 0Dh seg000:64EC inc [bp+var_4] seg000:64EF mov si, [bp+var_4] seg000:64F2 mov byte ptr [bp+si+var_86], 0 seg000:64F7 lea ax, [si+1] seg000:64FA mov [bp+var_4], ax seg000:64FD lea ax, [bp+var_86] seg000:6501 mov ds:regs_x_si, ax seg000:6504 sub cx, cx seg000:6506 mov ds:regs_x_cx, cx seg000:650A mov ds:regs_x_dx, cx seg000:650E mov ds:regs_x_di, offset p_p seg000:6514 mov ds:Parse_Ptr, ax seg000:6517 mov [bp+var_6], 0 seg000:651B seg000:651B loc_651B: ; CODE XREF: parse_command_line+DCj seg000:651B mov ax, ds:regs_x_si seg000:651E mov ds:Parse_Ptr, ax seg000:6521 mov ax, offset regs_x_ax seg000:6524 push ax seg000:6525 push ax seg000:6526 call parse seg000:6529 pop bx seg000:652A pop bx seg000:652B cmp ds:regs_x_ax, 0 seg000:6530 jnz short loc_654A seg000:6532 cmp ds:regs_x_dx, offset p_buff seg000:6538 jnz short loc_653D seg000:653A call check_disk_validity seg000:653D seg000:653D loc_653D: ; CODE XREF: parse_command_line+A6j seg000:653D cmp ds:regs_x_dx, offset sp_buff seg000:6543 jnz short loc_656A seg000:6545 call process_switch seg000:6548 jmp short loc_656A seg000:654A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:654A seg000:654A loc_654A: ; CODE XREF: parse_command_line+9Ej seg000:654A cmp ds:regs_x_ax, 0FFFFh seg000:654F jz short loc_6566 seg000:6551 mov al, 2 seg000:6553 push ax seg000:6554 mov ax, 2 seg000:6557 push ax seg000:6558 push ds:regs_x_ax seg000:655C call Parse_msg seg000:655F add sp, 6 seg000:6562 mov [bp+var_2], 0 seg000:6566 seg000:6566 loc_6566: ; CODE XREF: parse_command_line+BDj seg000:6566 mov [bp+var_6], 1 seg000:656A seg000:656A loc_656A: ; CODE XREF: parse_command_line+B1j seg000:656A ; parse_command_line+B6j seg000:656A cmp [bp+var_6], 0 seg000:656E jz short loc_651B seg000:6570 mov al, [bp+var_2] seg000:6573 pop si seg000:6574 mov sp, bp seg000:6576 pop bp seg000:6577 retn seg000:6577 parse_command_line endp seg000:6577 seg000:6578 seg000:6578 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6578 seg000:6578 seg000:6578 parse_init proc near ; CODE XREF: parse_command_line+8p seg000:6578 sub al, al seg000:657A mov ds:primary_flag, al seg000:657D mov ds:extended_flag, al seg000:6580 mov ds:logical_flag, al seg000:6583 mov ds:disk_flag, al seg000:6586 mov ds:quiet_flag, al seg000:6589 mov ds:status_flag, al seg000:658C mov ds:mbr_flag, al seg000:658F mov ds:p_p, offset p_px seg000:6595 mov ds:p_p_p_extra_delim, ';' seg000:659A mov al, 1 seg000:659C mov ds:p_p_p_num_extra, al seg000:659F mov ds:p_p_p_len_extra_delim, al seg000:65A2 mov ds:p_px_p_maxp, al seg000:65A5 mov ds:p_px_p_con1_ptr, offset p_con seg000:65AB mov ds:p_px_p_maxs, 5 seg000:65B0 mov ds:p_px_p_swi1_ptr, offset p_swi1 seg000:65B6 mov ds:p_px_p_swi2_ptr, offset p_swi2 seg000:65BC mov ds:p_px_p_swi3_ptr, offset p_swi3 seg000:65C2 mov ds:p_px_p_swi4_ptr, offset p_swi4 seg000:65C8 mov ds:p_px_p_swi5_ptr, offset p_swi5 seg000:65CE mov al, byte ptr ds:NOVAL seg000:65D1 mov ds:p_px_p_maxk, al seg000:65D4 mov ds:p_con, 8001h seg000:65DA mov ds:p_con_p_buff1_ptr, offset p_buff seg000:65E0 mov ds:p_con_p_val1_ptr, offset p_val seg000:65E6 sub al, al seg000:65E8 mov ds:p_px, al seg000:65EB mov ds:p_con_nid, al seg000:65EE mov ds:p_swi1, 8000h seg000:65F4 sub ax, ax seg000:65F6 mov ds:p_con_p_function_flag, ax seg000:65F9 mov ds:p_swi1_sp_function_flag, ax seg000:65FC mov ds:p_swi1_sp_buff1_ptr, offset sp_buff seg000:6602 mov ds:p_swi1_sp_val1_ptr, offset sp_val seg000:6608 mov ds:p_swi1_sp_nid, 3 seg000:660D mov ax, offset PRI ; "/PRI" seg000:6610 push ax seg000:6611 mov ax, offset p_swi1_sp_switch1 seg000:6614 push ax seg000:6615 call strcpy seg000:6618 pop bx seg000:6619 pop bx seg000:661A mov ax, offset EXT ; "/EXT" seg000:661D push ax seg000:661E mov ax, offset p_swi1_sp_switch2 seg000:6621 push ax seg000:6622 call strcpy seg000:6625 pop bx seg000:6626 pop bx seg000:6627 mov ax, offset LOG ; "/LOG" seg000:662A push ax seg000:662B mov ax, offset p_swi1_sp_switch3 seg000:662E push ax seg000:662F call strcpy seg000:6632 pop bx seg000:6633 pop bx seg000:6634 mov ds:p_swi2, 1 seg000:663A mov ds:p_swi2_sp_function_flag, 0 seg000:6640 mov ds:p_swi2_sp_buff1_ptr, offset sp_buff seg000:6646 mov ax, word ptr ds:NOVAL seg000:6649 mov ds:p_swi2_sp_val1_ptr, ax seg000:664C mov ds:p_swi2_sp_nid, 1 seg000:6651 mov ax, offset QUIET ; "/Q" seg000:6654 push ax seg000:6655 mov ax, offset p_swi2_sp_switch4 seg000:6658 push ax seg000:6659 call strcpy seg000:665C pop bx seg000:665D pop bx seg000:665E mov ds:p_swi3, 1 seg000:6664 mov ds:p_swi3_sp_function_flag, 0 seg000:666A mov ds:p_swi3_sp_buff1_ptr, offset sp_buff seg000:6670 mov ax, word ptr ds:NOVAL seg000:6673 mov ds:p_swi3_sp_val1_ptr, ax seg000:6676 mov ds:p_swi3_sp_nid, 1 seg000:667B mov ax, offset STATUS ; "/STATUS" seg000:667E push ax seg000:667F mov ax, offset p_swi3_sp_switch5 seg000:6682 push ax seg000:6683 call strcpy seg000:6686 pop bx seg000:6687 pop bx seg000:6688 sub ax, ax seg000:668A mov ds:p_swi4, ax seg000:668D mov ds:p_swi4_sp_function_flag, ax seg000:6690 mov ds:p_swi4_sp_buff1_ptr, offset sp_buff seg000:6696 mov ax, word ptr ds:NOVAL seg000:6699 mov ds:p_swi4_sp_val1_ptr, ax seg000:669C mov ds:p_swi4_sp_nid, 1 seg000:66A1 mov ax, offset OPTIONS ; "/?" seg000:66A4 push ax seg000:66A5 mov ax, offset p_swi4_sp_switch6 seg000:66A8 push ax seg000:66A9 call strcpy seg000:66AC pop bx seg000:66AD pop bx seg000:66AE mov ds:p_swi5, 1 seg000:66B4 mov ds:p_swi5_sp_function_flag, 0 seg000:66BA mov ds:p_swi5_sp_buff1_ptr, offset sp_buff seg000:66C0 mov ax, word ptr ds:NOVAL seg000:66C3 mov ds:p_swi5_sp_val1_ptr, ax seg000:66C6 mov ds:p_swi5_sp_nid, 1 seg000:66CB mov ax, offset MBR ; "/MBR" seg000:66CE push ax seg000:66CF mov ax, offset p_swi5_sp_switch7 seg000:66D2 push ax seg000:66D3 call strcpy seg000:66D6 pop bx seg000:66D7 pop bx seg000:66D8 mov word ptr ds:p_val_p_high_range, 8 seg000:66DE mov word ptr ds:p_val_p_high_range+2, 0 seg000:66E4 mov al, 1 seg000:66E6 mov ds:p_val, al seg000:66E9 mov ds:p_val_p_range, al seg000:66EC mov ds:p_val_p_range_one, al seg000:66EF mov ds:sp_val, al seg000:66F2 mov ds:sp_val_p_range, al seg000:66F5 mov ds:sp_val_p_range_one, al seg000:66F8 mov ax, 1 seg000:66FB cwd seg000:66FC mov word ptr ds:p_val_p_low_range, ax seg000:66FF mov word ptr ds:p_val_p_low_range+2, dx seg000:6703 mov word ptr ds:sp_val_p_low_range, ax seg000:6706 mov word ptr ds:sp_val_p_low_range+2, dx seg000:670A mov ds:sp_val_p_high_range, 8064 seg000:6710 mov word ptr ds:sp_val_p_high_range_2, 0 seg000:6716 retn seg000:6716 parse_init endp seg000:6716 seg000:6717 seg000:6717 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6717 seg000:6717 seg000:6717 check_disk_validity proc near ; CODE XREF: parse_command_line+A8p seg000:6717 mov ds:disk_flag, 1 seg000:671C mov al, byte ptr ds:p_buff_p_value seg000:671F dec al seg000:6721 mov ds:cur_disk_buff, al seg000:6724 retn seg000:6724 check_disk_validity endp seg000:6724 seg000:6725 seg000:6725 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6725 seg000:6725 seg000:6725 process_switch proc near ; CODE XREF: parse_command_line+B3p seg000:6725 cmp ds:sp_buff_p_synonym, offset p_swi1_sp_switch1 seg000:672B jnz short loc_6738 seg000:672D mov ds:primary_flag, 1 seg000:6732 mov ax, word ptr ds:sp_buff_p_value seg000:6735 mov ds:primary_buff, ax seg000:6738 seg000:6738 loc_6738: ; CODE XREF: process_switch+6j seg000:6738 cmp ds:sp_buff_p_synonym, offset p_swi1_sp_switch2 seg000:673E jnz short loc_674B seg000:6740 mov ds:extended_flag, 1 seg000:6745 mov ax, word ptr ds:sp_buff_p_value seg000:6748 mov ds:extended_buff, ax seg000:674B seg000:674B loc_674B: ; CODE XREF: process_switch+19j seg000:674B cmp ds:sp_buff_p_synonym, offset p_swi1_sp_switch3 seg000:6751 jnz short loc_675E seg000:6753 mov ds:logical_flag, 1 seg000:6758 mov ax, word ptr ds:sp_buff_p_value seg000:675B mov ds:logical_buff, ax seg000:675E seg000:675E loc_675E: ; CODE XREF: process_switch+2Cj seg000:675E cmp ds:sp_buff_p_synonym, offset p_swi2_sp_switch4 seg000:6764 jnz short loc_676B seg000:6766 mov ds:quiet_flag, 1 seg000:676B seg000:676B loc_676B: ; CODE XREF: process_switch+3Fj seg000:676B cmp ds:sp_buff_p_synonym, offset p_swi3_sp_switch5 seg000:6771 jnz short loc_6778 seg000:6773 mov ds:status_flag, 1 seg000:6778 seg000:6778 loc_6778: ; CODE XREF: process_switch+4Cj seg000:6778 cmp ds:sp_buff_p_synonym, offset p_swi4_sp_switch6 seg000:677E jnz short loc_6783 seg000:6780 call DisplayOptionsExit seg000:6783 seg000:6783 loc_6783: ; CODE XREF: process_switch+59j seg000:6783 cmp ds:sp_buff_p_synonym, offset p_swi5_sp_switch7 seg000:6789 jnz short locret_6790 seg000:678B mov ds:mbr_flag, 1 seg000:6790 seg000:6790 locret_6790: ; CODE XREF: process_switch+64j seg000:6790 retn seg000:6790 process_switch endp seg000:6790 seg000:6791 seg000:6791 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6791 seg000:6791 ; Attributes: bp-based frame seg000:6791 seg000:6791 Parse_msg proc near ; CODE XREF: parse_command_line+CAp seg000:6791 seg000:6791 var_4 = dword ptr -4 seg000:6791 arg_0 = word ptr 4 seg000:6791 arg_2 = word ptr 6 seg000:6791 arg_4 = byte ptr 8 seg000:6791 seg000:6791 push bp seg000:6792 mov bp, sp seg000:6794 sub sp, 4 seg000:6797 mov ax, offset segregs_es seg000:679A push ax seg000:679B call segread seg000:679E pop bx seg000:679F mov ax, ds:segregs_ds seg000:67A2 mov word ptr [bp+var_4+2], ax seg000:67A5 mov ax, ds:regs_x_si seg000:67A8 mov word ptr [bp+var_4], ax seg000:67AB les bx, [bp+var_4] seg000:67AE mov byte ptr es:[bx], 0 seg000:67B2 mov ax, ds:segregs_ds seg000:67B5 mov ds:sublistp_value_seg, ax seg000:67B8 mov ax, ds:Parse_Ptr seg000:67BB mov ds:sublistp_value, ax seg000:67BE mov ds:sublistp_size, 11 seg000:67C3 mov ds:sublistp_flags, 10h seg000:67C8 mov ds:sublistp_max_width, 80 seg000:67CD mov ds:sublistp_min_width, 1 seg000:67D2 mov ds:sublistp_pad_char, ' ' seg000:67D7 mov ax, [bp+arg_0] seg000:67DA mov ds:regs_x_ax, ax seg000:67DD mov ax, [bp+arg_2] seg000:67E0 mov ds:regs_x_bx, ax seg000:67E3 mov ds:regs_x_cx, 1 seg000:67E9 sub al, al seg000:67EB mov ds:sublistp_res, al seg000:67EE mov ds:sublistp_id, al seg000:67F1 mov byte ptr ds:regs_x_dx, al seg000:67F4 mov al, [bp+arg_4] seg000:67F7 mov byte ptr ds:regs_x_dx+1, al seg000:67FA mov ds:regs_x_si, offset sublistp_size seg000:6800 mov ax, offset regs_x_ax seg000:6803 push ax seg000:6804 push ax seg000:6805 call sysdispmsg seg000:6808 pop bx seg000:6809 pop bx seg000:680A mov sp, bp seg000:680C pop bp seg000:680D retn seg000:680D Parse_msg endp seg000:680D seg000:680E seg000:680E ; --------------- S U B R O U T I N E --------------------------------------- seg000:680E seg000:680E ; Attributes: bp-based frame seg000:680E seg000:680E DisplayOptionsExit proc near ; CODE XREF: process_switch+5Bp seg000:680E seg000:680E var_2 = word ptr -2 seg000:680E seg000:680E push bp seg000:680F mov bp, sp seg000:6811 sub sp, 2 seg000:6814 mov [bp+var_2], 300 seg000:6819 seg000:6819 loc_6819: ; CODE XREF: DisplayOptionsExit+3Fj seg000:6819 mov ax, [bp+var_2] seg000:681C mov ds:regs_x_ax, ax seg000:681F mov ds:regs_x_bx, 1 seg000:6825 mov ds:regs_x_cx, 0 seg000:682B mov byte ptr ds:regs_x_dx, 0 seg000:6830 mov byte ptr ds:regs_x_dx+1, 0FFh seg000:6835 mov ds:regs_x_si, 0 seg000:683B mov ax, offset regs_x_ax seg000:683E push ax seg000:683F push ax seg000:6840 call sysdispmsg seg000:6843 pop bx seg000:6844 pop bx seg000:6845 inc [bp+var_2] seg000:6848 cmp [bp+var_2], 302 seg000:684D jle short loc_6819 seg000:684F sub ax, ax seg000:6851 push ax seg000:6852 call _exit seg000:6855 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6855 pop bx seg000:6856 mov sp, bp seg000:6858 pop bp seg000:6859 retn seg000:6859 DisplayOptionsExit endp seg000:6859 seg000:685A seg000:685A ; --------------- S U B R O U T I N E --------------------------------------- seg000:685A seg000:685A ; Attributes: bp-based frame seg000:685A seg000:685A mbytes_to_cylinders proc near ; CODE XREF: main+23Fp seg000:685A ; main+2BCp ... seg000:685A seg000:685A mtc_num_sectors_lw= word ptr -12h seg000:685A mtc_num_sectors_hw= word ptr -10h seg000:685A mtc_cylinders_out= word ptr -6 seg000:685A mtc_num_tracks_lw= word ptr -4 seg000:685A mtc_num_tracks_hw= word ptr -2 seg000:685A mtc_mbytes_in = word ptr 4 seg000:685A mtc_which_disk = byte ptr 6 seg000:685A seg000:685A push bp seg000:685B mov bp, sp seg000:685D sub sp, 18 seg000:6860 push di seg000:6861 push si seg000:6862 cmp [bp+mtc_mbytes_in], 32 seg000:6866 jnz short mbtocyl_1 seg000:6868 mov al, [bp+mtc_which_disk] seg000:686B cbw seg000:686C mov bx, ax seg000:686E mov al, ds:max_sector[bx] seg000:6872 sub ah, ah seg000:6874 shl bx, 1 seg000:6876 mul ds:max_head[bx] seg000:687A push dx seg000:687B push ax seg000:687C mov ax, 0FFFFh seg000:687F sub dx, dx seg000:6881 push dx seg000:6882 push ax seg000:6883 call div32 seg000:6886 jmp mbtocyl_4 seg000:6889 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6889 seg000:6889 mbtocyl_1: ; CODE XREF: mbytes_to_cylinders+Cj seg000:6889 mov cl, 4 seg000:688B mov ax, [bp+mtc_mbytes_in] seg000:688E sub dx, dx seg000:6890 mov bx, ax seg000:6892 mov si, dx seg000:6894 shl ax, cl seg000:6896 mov dx, ax seg000:6898 sub ax, ax seg000:689A mov cl, 9 seg000:689C mov di, bx seg000:689E call shr32 seg000:68A1 mov [bp+mtc_num_sectors_lw], ax seg000:68A4 mov [bp+mtc_num_sectors_hw], dx seg000:68A7 mov cx, 512 seg000:68AA sub bx, bx seg000:68AC push bx seg000:68AD push cx seg000:68AE mov cl, 4 seg000:68B0 shl di, cl seg000:68B2 sub cx, cx seg000:68B4 push di seg000:68B5 push cx seg000:68B6 call _mod32 seg000:68B9 or dx, ax seg000:68BB jz short mbtocyl_2 seg000:68BD mov ax, [bp+mtc_num_sectors_lw] seg000:68C0 mov dx, [bp+mtc_num_sectors_hw] seg000:68C3 add ax, 1 seg000:68C6 adc dx, si seg000:68C8 mov [bp+mtc_num_sectors_lw], ax seg000:68CB mov [bp+mtc_num_sectors_hw], dx seg000:68CE seg000:68CE mbtocyl_2: ; CODE XREF: mbytes_to_cylinders+61j seg000:68CE mov al, [bp+mtc_which_disk] seg000:68D1 cbw seg000:68D2 mov bx, ax seg000:68D4 mov al, ds:max_sector[bx] seg000:68D8 sub ah, ah seg000:68DA mov cx, ax seg000:68DC sub dx, dx seg000:68DE push dx seg000:68DF push ax seg000:68E0 push [bp+mtc_num_sectors_hw] seg000:68E3 push [bp+mtc_num_sectors_lw] seg000:68E6 mov si, cx seg000:68E8 call div32 seg000:68EB mov [bp+mtc_num_tracks_lw], ax seg000:68EE mov [bp+mtc_num_tracks_hw], dx seg000:68F1 mov ax, [bp+mtc_num_sectors_lw] seg000:68F4 sub dx, dx seg000:68F6 div si seg000:68F8 or dx, dx seg000:68FA jz short mbtocyl_3 seg000:68FC mov ax, [bp+mtc_num_tracks_lw] seg000:68FF mov dx, [bp+mtc_num_tracks_hw] seg000:6902 add ax, 1 seg000:6905 adc dx, 0 seg000:6908 mov [bp+mtc_num_tracks_lw], ax seg000:690B mov [bp+mtc_num_tracks_hw], dx seg000:690E seg000:690E mbtocyl_3: ; CODE XREF: mbytes_to_cylinders+A0j seg000:690E mov al, [bp+mtc_which_disk] seg000:6911 cbw seg000:6912 mov bx, ax seg000:6914 shl bx, 1 seg000:6916 mov ax, ds:max_head[bx] seg000:691A mov cx, ax seg000:691C sub dx, dx seg000:691E push dx seg000:691F push ax seg000:6920 push [bp+mtc_num_tracks_hw] seg000:6923 push [bp+mtc_num_tracks_lw] seg000:6926 mov si, ax seg000:6928 call div32 seg000:692B mov [bp+mtc_cylinders_out], ax seg000:692E mov ax, [bp+mtc_num_tracks_lw] seg000:6931 sub dx, dx seg000:6933 div si seg000:6935 or dx, dx seg000:6937 jz short mbtocyl_5 seg000:6939 mov ax, [bp+mtc_cylinders_out] seg000:693C inc ax seg000:693D seg000:693D mbtocyl_4: ; CODE XREF: mbytes_to_cylinders+2Cj seg000:693D mov [bp+mtc_cylinders_out], ax seg000:6940 seg000:6940 mbtocyl_5: ; CODE XREF: mbytes_to_cylinders+DDj seg000:6940 mov ax, [bp+mtc_cylinders_out] seg000:6943 pop si seg000:6944 pop di seg000:6945 mov sp, bp seg000:6947 pop bp seg000:6948 retn seg000:6948 mbytes_to_cylinders endp seg000:6948 seg000:6949 seg000:6949 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6949 seg000:6949 ; Attributes: bp-based frame seg000:6949 seg000:6949 cylinders_to_mbytes proc near ; CODE XREF: load_logical_drive+406p seg000:6949 ; find_part_free_space+C8p ... seg000:6949 seg000:6949 arg_0 = word ptr 4 seg000:6949 arg_2 = byte ptr 6 seg000:6949 seg000:6949 push bp seg000:694A mov bp, sp seg000:694C sub sp, 14 seg000:694F mov al, [bp+arg_2] seg000:6952 cbw seg000:6953 mov bx, ax seg000:6955 shl bx, 1 seg000:6957 mov cx, ax seg000:6959 mov ax, ds:max_head[bx] seg000:695D mul [bp+arg_0] seg000:6960 mov bx, cx seg000:6962 mov cl, ds:max_sector[bx] seg000:6966 sub ch, ch seg000:6968 sub bx, bx seg000:696A push bx seg000:696B push cx seg000:696C push dx seg000:696D push ax seg000:696E call mul32 seg000:6971 push dx seg000:6972 push ax seg000:6973 call numsecs_to_mbytes seg000:6976 pop bx seg000:6977 pop bx seg000:6978 mov sp, bp seg000:697A pop bp seg000:697B retn seg000:697B cylinders_to_mbytes endp seg000:697B seg000:697C seg000:697C ; --------------- S U B R O U T I N E --------------------------------------- seg000:697C seg000:697C ; Attributes: bp-based frame seg000:697C seg000:697C numsecs_to_mbytes proc near ; CODE XREF: init_partition_tables+1B9p seg000:697C ; cylinders_to_mbytes+2Ap seg000:697C seg000:697C arg_0 = word ptr 4 seg000:697C arg_2 = word ptr 6 seg000:697C seg000:697C push bp seg000:697D mov bp, sp seg000:697F sub sp, 8 seg000:6982 mov ax, [bp+arg_0] seg000:6985 mov dx, [bp+arg_2] seg000:6988 add ax, 1024 seg000:698B adc dx, 0 seg000:698E mov cl, 11 seg000:6990 call shr32 seg000:6993 mov sp, bp seg000:6995 pop bp seg000:6996 retn seg000:6996 numsecs_to_mbytes endp seg000:6996 seg000:6997 seg000:6997 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6997 seg000:6997 ; Attributes: bp-based frame seg000:6997 seg000:6997 cylinders_to_percent proc near ; CODE XREF: volume_create+E1p seg000:6997 ; load_logical_drive+43Ep ... seg000:6997 seg000:6997 var_6 = word ptr -6 seg000:6997 arg_0 = word ptr 4 seg000:6997 arg_2 = word ptr 6 seg000:6997 seg000:6997 push bp seg000:6998 mov bp, sp seg000:699A sub sp, 6 seg000:699D cmp [bp+arg_0], 0 seg000:69A1 jnz short ctpc_2 seg000:69A3 seg000:69A3 ctpc_1: ; CODE XREF: cylinders_to_percent+17j seg000:69A3 mov [bp+var_6], 0 seg000:69A8 jmp short ctpc_3 seg000:69AA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:69AA seg000:69AA ctpc_2: ; CODE XREF: cylinders_to_percent+Aj seg000:69AA cmp [bp+arg_2], 0 seg000:69AE jz short ctpc_1 seg000:69B0 mov ax, [bp+arg_2] seg000:69B3 sub dx, dx seg000:69B5 push dx seg000:69B6 push ax seg000:69B7 mov ax, 100 seg000:69BA mul [bp+arg_0] seg000:69BD push dx seg000:69BE push ax seg000:69BF call div32 seg000:69C2 mov [bp+var_6], ax seg000:69C5 seg000:69C5 ctpc_3: ; CODE XREF: cylinders_to_percent+11j seg000:69C5 mov ax, [bp+arg_2] seg000:69C8 sub dx, dx seg000:69CA push dx seg000:69CB push ax seg000:69CC mov ax, 100 seg000:69CF mul [bp+arg_0] seg000:69D2 push dx seg000:69D3 push ax seg000:69D4 call _mod32 seg000:69D7 mov cx, [bp+arg_2] seg000:69DA shr cx, 1 seg000:69DC sub bx, bx seg000:69DE cmp dx, bx seg000:69E0 jl short ctpc_5 seg000:69E2 jg short ctpc_4 seg000:69E4 cmp ax, cx seg000:69E6 jb short ctpc_5 seg000:69E8 seg000:69E8 ctpc_4: ; CODE XREF: cylinders_to_percent+4Bj seg000:69E8 inc [bp+var_6] seg000:69EB seg000:69EB ctpc_5: ; CODE XREF: cylinders_to_percent+49j seg000:69EB ; cylinders_to_percent+4Fj seg000:69EB cmp [bp+var_6], 100 seg000:69EF jbe short ctpc_6 seg000:69F1 mov [bp+var_6], 100 seg000:69F6 seg000:69F6 ctpc_6: ; CODE XREF: cylinders_to_percent+58j seg000:69F6 mov ax, [bp+var_6] seg000:69F9 mov sp, bp seg000:69FB pop bp seg000:69FC retn seg000:69FC cylinders_to_percent endp seg000:69FC seg000:69FD seg000:69FD ; --------------- S U B R O U T I N E --------------------------------------- seg000:69FD seg000:69FD ; Attributes: bp-based frame seg000:69FD seg000:69FD mbytes_to_percent proc near ; CODE XREF: init_partition_tables+1D2p seg000:69FD seg000:69FD percent = word ptr -6 seg000:69FD partmbytes = word ptr 4 seg000:69FD totalmbytes = byte ptr 6 seg000:69FD seg000:69FD push bp seg000:69FE mov bp, sp seg000:6A00 sub sp, 6 seg000:6A03 cmp [bp+partmbytes], 0 seg000:6A07 jz short mtp_0 seg000:6A09 mov ax, word ptr [bp+totalmbytes] seg000:6A0C sub dx, dx seg000:6A0E push dx seg000:6A0F push ax seg000:6A10 mov ax, 100 seg000:6A13 mul [bp+partmbytes] seg000:6A16 mov cx, word ptr [bp+totalmbytes] seg000:6A19 shr cx, 1 seg000:6A1B add ax, cx seg000:6A1D adc dx, 0 seg000:6A20 push dx seg000:6A21 push ax seg000:6A22 call div32 seg000:6A25 mov [bp+percent], ax seg000:6A28 cmp ax, 100 seg000:6A2B jbe short mtp_1 seg000:6A2D mov [bp+percent], 100 seg000:6A32 jmp short mtp_1 seg000:6A34 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6A34 seg000:6A34 mtp_0: ; CODE XREF: mbytes_to_percent+Aj seg000:6A34 mov [bp+percent], 0 seg000:6A39 seg000:6A39 mtp_1: ; CODE XREF: mbytes_to_percent+2Ej seg000:6A39 ; mbytes_to_percent+35j seg000:6A39 mov ax, [bp+percent] seg000:6A3C mov sp, bp seg000:6A3E pop bp seg000:6A3F retn seg000:6A3F mbytes_to_percent endp seg000:6A3F seg000:6A40 seg000:6A40 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6A40 seg000:6A40 ; Attributes: bp-based frame seg000:6A40 seg000:6A40 percent_to_cylinders proc near ; CODE XREF: input_dos_create+187p seg000:6A40 ; ext_create_partition+1E1p ... seg000:6A40 seg000:6A40 ptc_cylinders_out= word ptr -2 seg000:6A40 ptc_percent_in = word ptr 4 seg000:6A40 ptc_total_cylinders= word ptr 6 seg000:6A40 seg000:6A40 push bp seg000:6A41 mov bp, sp seg000:6A43 sub sp, 2 seg000:6A46 push di seg000:6A47 push si seg000:6A48 mov ax, 100 seg000:6A4B cwd seg000:6A4C push dx seg000:6A4D push ax seg000:6A4E mov ax, [bp+ptc_total_cylinders] seg000:6A51 mul [bp+ptc_percent_in] seg000:6A54 push dx seg000:6A55 push ax seg000:6A56 mov si, ax seg000:6A58 mov di, dx seg000:6A5A call div32 seg000:6A5D mov [bp+ptc_cylinders_out], ax seg000:6A60 mov cx, 100 seg000:6A63 sub dx, dx seg000:6A65 push dx seg000:6A66 push cx seg000:6A67 push di seg000:6A68 push si seg000:6A69 call mod32 seg000:6A6C or dx, ax seg000:6A6E jz short pctocyl_1 seg000:6A70 mov ax, [bp+ptc_cylinders_out] seg000:6A73 inc ax seg000:6A74 mov [bp+ptc_cylinders_out], ax seg000:6A77 seg000:6A77 pctocyl_1: ; CODE XREF: percent_to_cylinders+2Ej seg000:6A77 mov ax, [bp+ptc_cylinders_out] seg000:6A7A pop si seg000:6A7B pop di seg000:6A7C mov sp, bp seg000:6A7E pop bp seg000:6A7F retn seg000:6A7F percent_to_cylinders endp seg000:6A7F seg000:6A80 seg000:6A80 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6A80 seg000:6A80 ; Attributes: bp-based frame seg000:6A80 seg000:6A80 dos_upper proc near ; CODE XREF: volume_delete+240p seg000:6A80 ; get_num_input+85p ... seg000:6A80 seg000:6A80 upcase_input = byte ptr 4 seg000:6A80 seg000:6A80 push bp seg000:6A81 mov bp, sp seg000:6A83 sub sp, 2 seg000:6A86 mov ds:regs_x_ax, 6520h seg000:6A8C mov al, [bp+upcase_input] seg000:6A8F mov byte ptr ds:regs_x_dx, al seg000:6A92 mov ax, offset regs_x_ax seg000:6A95 push ax seg000:6A96 push ax seg000:6A97 mov ax, 21h seg000:6A9A push ax seg000:6A9B call int86 seg000:6A9E mov al, byte ptr ds:regs_x_dx seg000:6AA1 mov sp, bp seg000:6AA3 pop bp seg000:6AA4 retn seg000:6AA4 dos_upper endp seg000:6AA4 seg000:6AA5 seg000:6AA5 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6AA5 seg000:6AA5 ; Attributes: bp-based frame seg000:6AA5 seg000:6AA5 check_yn_input proc near ; CODE XREF: get_yn_input+95p seg000:6AA5 ; get_yn_input+A1p ... seg000:6AA5 seg000:6AA5 yn_input = byte ptr -2 seg000:6AA5 yn_input_value = byte ptr 4 seg000:6AA5 seg000:6AA5 push bp seg000:6AA6 mov bp, sp seg000:6AA8 sub sp, 2 seg000:6AAB mov ds:regs_x_ax, 6523h seg000:6AB1 mov al, [bp+yn_input_value] seg000:6AB4 mov byte ptr ds:regs_x_dx, al seg000:6AB7 mov ax, offset regs_x_ax seg000:6ABA push ax seg000:6ABB push ax seg000:6ABC mov ax, 21h seg000:6ABF push ax seg000:6AC0 call int86 seg000:6AC3 add sp, 6 seg000:6AC6 mov al, ds:regs_x_cflag seg000:6AC9 and al, 1 seg000:6ACB cmp al, 1 seg000:6ACD jnz short cyni_1 seg000:6ACF mov [bp+yn_input], 2 seg000:6AD3 jmp short cyni_2 seg000:6AD5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6AD5 seg000:6AD5 cyni_1: ; CODE XREF: check_yn_input+28j seg000:6AD5 mov al, byte ptr ds:regs_x_ax seg000:6AD8 mov [bp+yn_input], al seg000:6ADB seg000:6ADB cyni_2: ; CODE XREF: check_yn_input+2Ej seg000:6ADB mov al, [bp+yn_input] seg000:6ADE mov sp, bp seg000:6AE0 pop bp seg000:6AE1 retn seg000:6AE1 check_yn_input endp seg000:6AE1 seg000:6AE2 seg000:6AE2 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6AE2 seg000:6AE2 ; Attributes: bp-based frame seg000:6AE2 seg000:6AE2 get_fs_and_vol proc near ; CODE XREF: get_volume+E8p seg000:6AE2 ; load_logical_drive+154p seg000:6AE2 seg000:6AE2 _output_ = byte ptr -2 seg000:6AE2 _inputdrive_ = byte ptr 4 seg000:6AE2 seg000:6AE2 push bp seg000:6AE3 mov bp, sp seg000:6AE5 sub sp, 2 seg000:6AE8 mov ds:regs_x_ax, 440Dh seg000:6AEE mov byte ptr ds:regs_x_bx+1, 0 seg000:6AF3 mov al, [bp+_inputdrive_] seg000:6AF6 sub al, 40h seg000:6AF8 mov byte ptr ds:regs_x_bx, al seg000:6AFB mov ds:regs_x_cx, 866h seg000:6B01 mov ds:regs_x_dx, offset dx_buff seg000:6B07 mov ax, offset segregs_es seg000:6B0A push ax seg000:6B0B call segread seg000:6B0E pop bx seg000:6B0F mov ax, offset segregs_es seg000:6B12 push ax seg000:6B13 mov ax, offset regs_x_ax seg000:6B16 push ax seg000:6B17 push ax seg000:6B18 call intdosx seg000:6B1B add sp, 6 seg000:6B1E mov al, ds:regs_x_cflag seg000:6B21 and al, 1 seg000:6B23 cmp al, 1 seg000:6B25 jnz short gfsv_1 seg000:6B27 mov [bp+_output_], 0 seg000:6B2B jmp short gvsv_2 seg000:6B2D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6B2D seg000:6B2D gfsv_1: ; CODE XREF: get_fs_and_vol+43j seg000:6B2D mov [bp+_output_], 1 seg000:6B31 seg000:6B31 gvsv_2: ; CODE XREF: get_fs_and_vol+49j seg000:6B31 mov al, [bp+_output_] seg000:6B34 mov sp, bp seg000:6B36 pop bp seg000:6B37 retn seg000:6B37 get_fs_and_vol endp seg000:6B37 seg000:6B38 seg000:6B38 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6B38 seg000:6B38 ; Attributes: bp-based frame seg000:6B38 seg000:6B38 get_volume_string proc near ; CODE XREF: get_volume+95p seg000:6B38 ; load_logical_drive+FFp seg000:6B38 seg000:6B38 first_string = word ptr -44h seg000:6B38 _jj_ = word ptr -36h seg000:6B38 _ii_ = word ptr -34h seg000:6B38 find_first_buffer= word ptr -32h seg000:6B38 ffb_30 = word ptr -14h seg000:6B38 _input_drive_ = byte ptr 4 seg000:6B38 vol_label_addr = word ptr 6 seg000:6B38 seg000:6B38 push bp seg000:6B39 mov bp, sp seg000:6B3B sub sp, 68 seg000:6B3E push si seg000:6B3F mov [bp+_ii_], 0 seg000:6B44 seg000:6B44 gvs_1: ; CODE XREF: get_volume_string+1Cj seg000:6B44 mov bx, [bp+_ii_] seg000:6B47 mov si, [bp+vol_label_addr] seg000:6B4A mov byte ptr [bx+si], 0 seg000:6B4D inc [bp+_ii_] seg000:6B50 cmp [bp+_ii_], 12 seg000:6B54 jb short gvs_1 seg000:6B56 mov byte ptr ds:regs_x_ax+1, 1Ah seg000:6B5B lea ax, [bp+find_first_buffer] seg000:6B5E mov ds:regs_x_dx, ax seg000:6B61 mov ax, offset segregs_es seg000:6B64 push ax seg000:6B65 call segread seg000:6B68 pop bx seg000:6B69 mov ax, offset segregs_es seg000:6B6C push ax seg000:6B6D mov ax, offset regs_x_ax seg000:6B70 push ax seg000:6B71 push ax seg000:6B72 call intdosx seg000:6B75 add sp, 6 seg000:6B78 mov al, [bp+_input_drive_] seg000:6B7B mov byte ptr [bp+first_string], al seg000:6B7E mov byte ptr [bp+first_string+1], 0 seg000:6B82 mov ax, offset FILE_NAME ; ":\\????????.???" seg000:6B85 push ax seg000:6B86 lea ax, [bp+first_string] seg000:6B89 push ax seg000:6B8A call strcat seg000:6B8D pop bx seg000:6B8E pop bx seg000:6B8F mov byte ptr ds:regs_x_ax+1, 4Eh seg000:6B94 mov ds:regs_x_cx, 8 seg000:6B9A lea ax, [bp+first_string] seg000:6B9D mov ds:regs_x_dx, ax seg000:6BA0 mov ax, offset regs_x_ax seg000:6BA3 push ax seg000:6BA4 push ax seg000:6BA5 call intdos seg000:6BA8 pop bx seg000:6BA9 pop bx seg000:6BAA mov al, ds:regs_x_cflag seg000:6BAD and al, 1 seg000:6BAF cmp al, 1 seg000:6BB1 jz short gvs_5 seg000:6BB3 sub ax, ax seg000:6BB5 mov [bp+_jj_], ax seg000:6BB8 mov [bp+_ii_], ax seg000:6BBB jmp short gvs_4 seg000:6BBD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6BBD seg000:6BBD gvs_2: ; CODE XREF: get_volume_string+A1j seg000:6BBD mov [bp+_jj_], 1 seg000:6BC2 seg000:6BC2 gvs_3: ; CODE XREF: get_volume_string+B0j seg000:6BC2 inc [bp+_ii_] seg000:6BC5 seg000:6BC5 gvs_4: ; CODE XREF: get_volume_string+83j seg000:6BC5 lea ax, [bp+ffb_30] seg000:6BC8 push ax seg000:6BC9 call strlen seg000:6BCC pop bx seg000:6BCD cmp ax, [bp+_ii_] seg000:6BD0 jbe short gvs_5 seg000:6BD2 mov si, [bp+_ii_] seg000:6BD5 cmp byte ptr [bp+si+ffb_30], '.' seg000:6BD9 jz short gvs_2 seg000:6BDB mov al, byte ptr [bp+si+ffb_30] seg000:6BDE mov bx, si seg000:6BE0 sub bx, [bp+_jj_] seg000:6BE3 mov si, [bp+vol_label_addr] seg000:6BE6 mov [bx+si], al seg000:6BE8 jmp short gvs_3 seg000:6BEA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6BEA seg000:6BEA gvs_5: ; CODE XREF: get_volume_string+79j seg000:6BEA ; get_volume_string+98j seg000:6BEA pop si seg000:6BEB mov sp, bp seg000:6BED pop bp seg000:6BEE retn seg000:6BEE get_volume_string endp seg000:6BEE seg000:6BEF seg000:6BEF ; --------------- S U B R O U T I N E --------------------------------------- seg000:6BEF seg000:6BEF ; Attributes: bp-based frame seg000:6BEF seg000:6BEF check_format proc near ; CODE XREF: get_volume+1Fp seg000:6BEF ; load_logical_drive+83p seg000:6BEF seg000:6BEF var_2 = byte ptr -2 seg000:6BEF arg_0 = byte ptr 4 seg000:6BEF seg000:6BEF push bp seg000:6BF0 mov bp, sp seg000:6BF2 sub sp, 2 seg000:6BF5 cmp [bp+arg_0], 'C' seg000:6BF9 jl short chkf_1 seg000:6BFB cmp [bp+arg_0], 'Z' seg000:6BFF jg short chkf_1 seg000:6C01 mov ds:dac_access_flag, 0 seg000:6C06 mov ds:regs_x_ax, 440Dh seg000:6C0C mov byte ptr ds:regs_x_bx+1, 0 seg000:6C11 mov al, [bp+arg_0] seg000:6C14 sub al, 40h seg000:6C16 mov byte ptr ds:regs_x_bx, al seg000:6C19 mov ds:regs_x_cx, 867h seg000:6C1F mov ds:regs_x_dx, offset disk_access seg000:6C25 mov ax, offset segregs_es seg000:6C28 push ax seg000:6C29 call segread seg000:6C2C pop bx seg000:6C2D mov ax, offset segregs_es seg000:6C30 push ax seg000:6C31 mov ax, offset regs_x_ax seg000:6C34 push ax seg000:6C35 push ax seg000:6C36 call intdosx seg000:6C39 add sp, 6 seg000:6C3C cmp ds:dac_access_flag, 0 seg000:6C41 jz short chkf_1 seg000:6C43 mov [bp+var_2], 1 seg000:6C47 jmp short chkf_2 seg000:6C49 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6C49 seg000:6C49 chkf_1: ; CODE XREF: check_format+Aj seg000:6C49 ; check_format+10j ... seg000:6C49 mov [bp+var_2], 0 seg000:6C4D seg000:6C4D chkf_2: ; CODE XREF: check_format+58j seg000:6C4D mov al, [bp+var_2] seg000:6C50 mov sp, bp seg000:6C52 pop bp seg000:6C53 retn seg000:6C53 check_format endp seg000:6C53 seg000:6C54 seg000:6C54 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6C54 seg000:6C54 ; Attributes: bp-based frame seg000:6C54 seg000:6C54 parse proc near ; CODE XREF: parse_command_line+94p seg000:6C54 seg000:6C54 arg_0 = word ptr 4 seg000:6C54 arg_2 = word ptr 6 seg000:6C54 seg000:6C54 push bp seg000:6C55 mov bp, sp seg000:6C57 push di seg000:6C58 push si seg000:6C59 mov di, [bp+arg_0] seg000:6C5C mov ax, [di+10] seg000:6C5F push ax seg000:6C60 mov ax, [di] seg000:6C62 mov bx, [di+2] seg000:6C65 mov cx, [di+4] seg000:6C68 mov dx, [di+6] seg000:6C6B mov si, [di+8] seg000:6C6E pop di seg000:6C6F push bp seg000:6C70 call CallParser seg000:6C75 pop bp seg000:6C76 push di seg000:6C77 mov di, [bp+arg_2] seg000:6C7A mov [di], ax seg000:6C7C mov [di+2], bx seg000:6C7F mov [di+4], cx seg000:6C82 mov [di+6], dx seg000:6C85 mov [di+8], si seg000:6C88 xor ax, ax seg000:6C8A lahf seg000:6C8B mov [di+12], ax seg000:6C8E pop ax seg000:6C8F mov [di+10], ax seg000:6C92 pop si seg000:6C93 pop di seg000:6C94 mov sp, bp seg000:6C96 pop bp seg000:6C97 retn seg000:6C97 parse endp seg000:6C97 seg000:6C98 seg000:6C98 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6C98 seg000:6C98 seg000:6C98 sysdispmsg proc near ; CODE XREF: preload_messages+22p seg000:6C98 ; display_msg+2Cp ... seg000:6C98 call _sysdispmsg seg000:6C9D retn seg000:6C9D sysdispmsg endp seg000:6C9D seg000:6C9E seg000:6C9E ; --------------- S U B R O U T I N E --------------------------------------- seg000:6C9E seg000:6C9E seg000:6C9E sysloadmsg proc near ; CODE XREF: preload_messages+Fp seg000:6C9E call _sysloadmsg seg000:6CA3 retn seg000:6CA3 sysloadmsg endp seg000:6CA3 seg000:6CA4 seg000:6CA4 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6CA4 seg000:6CA4 seg000:6CA4 sysgetmsg proc near ; CODE XREF: get_yes_no_values+1Ep seg000:6CA4 ; get_yes_no_values+56p seg000:6CA4 call _sysgetmsg seg000:6CA9 retn seg000:6CA9 sysgetmsg endp seg000:6CA9 seg000:6CAA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6CAA seg000:6CAA _astart: seg000:6CAA mov ah, 30h seg000:6CAC int 21h ; DOS - GET DOS VERSION seg000:6CAC ; Return: AL = major version number (00h for DOS 1.x) seg000:6CAE cmp al, 2 seg000:6CB0 jnb short setup seg000:6CB2 xor ax, ax seg000:6CB4 push es seg000:6CB5 push ax seg000:6CB6 retf seg000:6CB7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6CB7 seg000:6CB7 setup: ; CODE XREF: seg000:6CB0j seg000:6CB7 mov di, seg DGROUP seg000:6CBA mov si, ds:2 seg000:6CBE sub si, di seg000:6CC0 cmp si, 1000h seg000:6CC4 jb short setSP seg000:6CC6 mov si, 1000h seg000:6CC9 seg000:6CC9 setSP: ; CODE XREF: seg000:6CC4j seg000:6CC9 cli seg000:6CCA mov ss, di seg000:6CCC assume ss:DGROUP seg000:6CCC add sp, offset dataoffset_end_2 seg000:6CD0 sti seg000:6CD1 jnb short SPok seg000:6CD3 push ss seg000:6CD4 pop ds seg000:6CD5 assume ds:DGROUP seg000:6CD5 call _FF_MSGBANNER seg000:6CD8 xor ax, ax seg000:6CDA push ax seg000:6CDB call _NMSG_WRITE seg000:6CDE mov ax, 4CFFh seg000:6CE1 int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) seg000:6CE1 ; AL = exit code seg000:6CE3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6CE3 seg000:6CE3 SPok: ; CODE XREF: seg000:6CD1j seg000:6CE3 mov ax, si seg000:6CE5 mov cl, 4 seg000:6CE7 shl ax, cl seg000:6CE9 dec ax seg000:6CEA mov ss:_asizds, ax seg000:6CEE mov bx, offset _nheap_desc seg000:6CF1 mov word ptr ss:[bx], ss seg000:6CF4 and sp, 0FFFEh seg000:6CF7 mov ss:[bx+4], sp seg000:6CFB mov ax, 0FFFEh seg000:6CFE push ax seg000:6CFF mov ss:[bx+0Ah], sp seg000:6D03 not ax seg000:6D05 push ax seg000:6D06 mov ss:[bx+6], sp seg000:6D0A mov ss:[bx+8], sp seg000:6D0E mov ss:_atopsp, sp seg000:6D13 add si, di seg000:6D15 mov ds:word_2, si seg000:6D19 mov bx, es seg000:6D1B sub bx, si seg000:6D1D neg bx seg000:6D1F mov ah, 4Ah seg000:6D21 int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) seg000:6D21 ; ES = segment address of block to change seg000:6D21 ; BX = new size in paragraphs seg000:6D23 mov ss:_psp, ds seg000:6D28 push ss seg000:6D29 pop es seg000:6D2A assume es:DGROUP seg000:6D2A cld seg000:6D2B mov di, offset _strbuf_ptr seg000:6D2E mov cx, 8A10h seg000:6D31 sub cx, di seg000:6D33 xor ax, ax seg000:6D35 rep stosb seg000:6D37 push ss seg000:6D38 pop ds seg000:6D39 mov cx, _qczrinit seg000:6D3D jcxz short _@F seg000:6D3F call cx ; byte_0 seg000:6D41 seg000:6D41 _@F: ; CODE XREF: seg000:6D3Dj seg000:6D41 call _setenvp seg000:6D44 call _setargv seg000:6D47 xor bp, bp seg000:6D49 call _cinit seg000:6D4C push ss seg000:6D4D pop ds seg000:6D4E push environ seg000:6D52 push _argv seg000:6D56 push _argc seg000:6D5A call near ptr main seg000:6D5D push ax seg000:6D5E call _exit seg000:6D61 seg000:6D61 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6D61 seg000:6D61 seg000:6D61 _aDBretaddr proc near ; CODE XREF: _chkstk-E96p seg000:6D61 ; _exit_+39p ... seg000:6D61 retn seg000:6D61 _aDBretaddr endp seg000:6D61 seg000:6D62 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6D62 seg000:6D62 _cintDIV: ; DATA XREF: _cinit+12o seg000:6D62 mov ax, cs:_dataseg seg000:6D66 mov ds, ax seg000:6D68 mov ax, 3 seg000:6D6B mov ss:_aexit_rtn, offset _exit seg000:6D72 ; START OF FUNCTION CHUNK FOR _chkstk seg000:6D72 seg000:6D72 loc_6D72: ; CODE XREF: _chkstk+14j seg000:6D72 push ax seg000:6D73 call _FF_MSGBANNER seg000:6D76 call _NMSG_WRITE seg000:6D79 cmp ss:_aDBswpflg, 0D6D6h seg000:6D80 jnz short loc_6D89 seg000:6D82 pop ax seg000:6D83 push ax seg000:6D84 call ss:_aDBrterr seg000:6D89 seg000:6D89 loc_6D89: ; CODE XREF: _chkstk-E9Aj seg000:6D89 mov ax, 255 seg000:6D8C push ax seg000:6D8D call _aexit_rtn seg000:6D8D ; END OF FUNCTION CHUNK FOR _chkstk seg000:6D8D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6D91 _dataseg dw seg DGROUP ; DATA XREF: seg000:_cintDIVr seg000:6D93 align 2 seg000:6D94 seg000:6D94 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6D94 seg000:6D94 seg000:6D94 _cinit proc near ; CODE XREF: seg000:6D49p seg000:6D94 mov ax, 3500h seg000:6D97 int 21h ; DOS - 2+ - GET INTERRUPT VECTOR seg000:6D97 ; AL = interrupt number seg000:6D97 ; Return: ES:BX = value of interrupt vector seg000:6D99 mov word ptr _aintdiv, bx seg000:6D9D mov word ptr _aintdiv+2, es seg000:6DA1 push cs seg000:6DA2 pop ds seg000:6DA3 assume ds:seg000 seg000:6DA3 mov ax, 2500h seg000:6DA6 mov dx, offset _cintDIV seg000:6DA9 int 21h ; DOS - SET INTERRUPT VECTOR seg000:6DA9 ; AL = interrupt number seg000:6DA9 ; DS:DX = new vector to be used for specified interrupt seg000:6DAB push ss seg000:6DAC pop ds seg000:6DAD assume ds:DGROUP seg000:6DAD cmp word ptr fpmath, 0 seg000:6DB2 jz short nofloat_i seg000:6DB4 mov word ptr fpmath+2, cs seg000:6DB8 mov word ptr fpsignal+2, cs seg000:6DBC mov es, _psp seg000:6DC0 assume es:nothing seg000:6DC0 mov si, es:2Ch seg000:6DC5 lds ax, fpdata seg000:6DC9 assume ds:nothing seg000:6DC9 mov dx, ds seg000:6DCB xor bx, bx seg000:6DCD call ss:fpmath seg000:6DD2 jnb short fpok seg000:6DD4 push ss seg000:6DD5 pop ds seg000:6DD6 assume ds:DGROUP seg000:6DD6 jmp _fptrap seg000:6DD9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6DD9 seg000:6DD9 fpok: ; CODE XREF: _cinit+3Ej seg000:6DD9 lds ax, ss:fpsignal seg000:6DDE assume ds:nothing seg000:6DDE mov dx, ds seg000:6DE0 mov bx, 3 seg000:6DE3 call ss:fpmath seg000:6DE8 push ss seg000:6DE9 pop ds seg000:6DEA assume ds:DGROUP seg000:6DEA seg000:6DEA nofloat_i: ; CODE XREF: _cinit+1Ej seg000:6DEA mov es, _psp seg000:6DEE mov cx, es:2Ch seg000:6DF3 jcxz short nocfi seg000:6DF5 mov es, cx seg000:6DF7 xor di, di seg000:6DF9 seg000:6DF9 cfilp: ; CODE XREF: _cinit+7Ej seg000:6DF9 cmp byte ptr es:[di], 0 seg000:6DFD jz short nocfi seg000:6DFF mov cx, 13 seg000:6E02 mov si, offset cfile ; "_C_FILE_INFO=" seg000:6E05 repe cmpsb seg000:6E07 jz short gotcfi seg000:6E09 mov cx, 7FFFh seg000:6E0C xor ax, ax seg000:6E0E repne scasb seg000:6E10 jnz short nocfi seg000:6E12 jmp short cfilp seg000:6E14 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6E14 seg000:6E14 gotcfi: ; CODE XREF: _cinit+73j seg000:6E14 push es seg000:6E15 push ds seg000:6E16 pop es seg000:6E17 assume es:DGROUP seg000:6E17 pop ds seg000:6E18 assume ds:nothing seg000:6E18 mov si, di seg000:6E1A mov di, offset _osfile seg000:6E1D mov cl, 4 seg000:6E1F seg000:6E1F osfile_lp: ; CODE XREF: _cinit+9Bj seg000:6E1F lodsb seg000:6E20 sub al, 'A' seg000:6E22 jb short donecfi seg000:6E24 shl al, cl seg000:6E26 xchg ax, dx seg000:6E27 lodsb seg000:6E28 sub al, 'A' seg000:6E2A jb short donecfi seg000:6E2C or al, dl seg000:6E2E stosb seg000:6E2F jmp short osfile_lp seg000:6E31 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6E31 seg000:6E31 donecfi: ; CODE XREF: _cinit+8Ej seg000:6E31 ; _cinit+96j seg000:6E31 push ss seg000:6E32 pop ds seg000:6E33 assume ds:DGROUP seg000:6E33 seg000:6E33 nocfi: ; CODE XREF: _cinit+5Fj seg000:6E33 ; _cinit+69j ... seg000:6E33 mov bx, 4 seg000:6E36 seg000:6E36 devloop: ; CODE XREF: _cinit+B9j seg000:6E36 and _osfile[bx], not 40h seg000:6E3B mov ax, 4400h seg000:6E3E int 21h ; DOS - 2+ - IOCTL - GET DEVICE INFORMATION seg000:6E3E ; BX = file or device handle seg000:6E40 jb short notdev seg000:6E42 test dl, 80h seg000:6E45 jz short notdev seg000:6E47 or _osfile[bx], 40h seg000:6E4C seg000:6E4C notdev: ; CODE XREF: _cinit+ACj seg000:6E4C ; _cinit+B1j seg000:6E4C dec bx seg000:6E4D jns short devloop seg000:6E4F mov si, offset xpbegin seg000:6E52 mov di, offset xpbegin seg000:6E55 call farinitterm seg000:6E58 mov si, offset xpbegin seg000:6E5B mov di, offset xpbegin seg000:6E5E call initterm seg000:6E61 retn seg000:6E61 _cinit endp seg000:6E61 seg000:6E62 seg000:6E62 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6E62 seg000:6E62 ; Attributes: noreturn bp-based frame seg000:6E62 seg000:6E62 _exit proc near ; CODE XREF: main+37Ap seg000:6E62 ; reboot_system+FCp ... seg000:6E62 push bp seg000:6E63 mov bp, sp seg000:6E65 seg000:6E65 _cBegin: seg000:6E65 xor cx, cx seg000:6E67 jmp short common1 seg000:6E67 _exit endp seg000:6E67 seg000:6E69 seg000:6E69 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6E69 seg000:6E69 ; Attributes: noreturn bp-based frame seg000:6E69 seg000:6E69 _exit_ proc near ; CODE XREF: _chkstk-E8Dp seg000:6E69 ; DATA XREF: DGROUP:_aexit_rtno seg000:6E69 seg000:6E69 arg_0 = word ptr 4 seg000:6E69 seg000:6E69 push bp seg000:6E6A mov bp, sp seg000:6E6C mov cx, 1 seg000:6E6F jmp short common1 seg000:6E71 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6E71 push bp seg000:6E72 mov bp, sp seg000:6E74 push si seg000:6E75 push di seg000:6E76 mov cx, 100h seg000:6E79 jmp short common1 seg000:6E7B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6E7B push bp seg000:6E7C mov bp, sp seg000:6E7E push si seg000:6E7F push di seg000:6E80 mov cx, 101h seg000:6E83 seg000:6E83 common1: ; CODE XREF: _exit+5j seg000:6E83 ; _exit_+6j ... seg000:6E83 push cx seg000:6E84 or cl, cl seg000:6E86 jnz short common2 seg000:6E88 mov si, offset xontab seg000:6E8B mov di, offset xontab seg000:6E8E call initterm seg000:6E91 mov si, offset xpbegin seg000:6E94 mov di, offset _strbuf_ptr seg000:6E97 call initterm seg000:6E9A cmp _aDBswpflg, 0D6D6h seg000:6EA0 jnz short common2 seg000:6EA2 call _aDBexit seg000:6EA6 seg000:6EA6 common2: ; CODE XREF: _exit_+1Dj seg000:6EA6 ; _exit_+37j seg000:6EA6 mov si, offset _strbuf_ptr seg000:6EA9 mov di, offset _strbuf_ptr seg000:6EAC call initterm seg000:6EAF mov si, offset _strbuf_ptr seg000:6EB2 mov di, offset _strbuf_ptr seg000:6EB5 call farinitterm seg000:6EB8 call _nullcheck seg000:6EBB or ax, ax seg000:6EBD jz short afternullchk seg000:6EBF pop ax seg000:6EC0 or ah, ah seg000:6EC2 push ax seg000:6EC3 jnz short afternullchk seg000:6EC5 cmp [bp+arg_0], 0 seg000:6EC9 jnz short afternullchk seg000:6ECB mov [bp+arg_0], 255 seg000:6ED0 seg000:6ED0 afternullchk: ; CODE XREF: _exit_+54j seg000:6ED0 ; _exit_+5Aj ... seg000:6ED0 call _ctermsub seg000:6ED3 pop ax seg000:6ED4 or ah, ah seg000:6ED6 jnz short returning seg000:6ED8 mov ax, [bp+arg_0] seg000:6EDB mov ah, 4Ch seg000:6EDD int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) seg000:6EDD ; AL = exit code seg000:6EDF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6EDF seg000:6EDF returning: ; CODE XREF: _exit_+6Dj seg000:6EDF pop di seg000:6EE0 pop si seg000:6EE1 pop bp seg000:6EE2 retn seg000:6EE2 _exit_ endp seg000:6EE2 seg000:6EE3 seg000:6EE3 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6EE3 seg000:6EE3 seg000:6EE3 _ctermsub proc near ; CODE XREF: _exit_:afternullchkp seg000:6EE3 mov cx, word ptr fpmath+2 seg000:6EE7 jcxz short nofloat_t seg000:6EE9 mov bx, 2 seg000:6EEC call fpmath seg000:6EF0 seg000:6EF0 nofloat_t: ; CODE XREF: _ctermsub+4j seg000:6EF0 push ds seg000:6EF1 lds dx, _aintdiv seg000:6EF5 assume ds:nothing seg000:6EF5 mov ax, 2500h seg000:6EF8 int 21h ; DOS - SET INTERRUPT VECTOR seg000:6EF8 ; AL = interrupt number seg000:6EF8 ; DS:DX = new vector to be used for specified interrupt seg000:6EFA pop ds seg000:6EFB cmp ds:_ovlflag, 0 seg000:6F00 jz short done_ovlvec seg000:6F02 push ds seg000:6F03 mov al, ds:_intno seg000:6F06 lds dx, ds:_ovlvec seg000:6F0A mov ah, 25h seg000:6F0C int 21h ; DOS - SET INTERRUPT VECTOR seg000:6F0C ; AL = interrupt number seg000:6F0C ; DS:DX = new vector to be used for specified interrupt seg000:6F0E pop ds seg000:6F0F seg000:6F0F done_ovlvec: ; CODE XREF: _ctermsub+1Dj seg000:6F0F retn seg000:6F0F _ctermsub endp seg000:6F0F seg000:6F10 seg000:6F10 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6F10 seg000:6F10 seg000:6F10 initterm proc near ; CODE XREF: _cinit+CAp seg000:6F10 ; _exit_+25p ... seg000:6F10 cmp si, di seg000:6F12 jnb short itdone seg000:6F14 dec di seg000:6F15 dec di seg000:6F16 mov cx, [di] seg000:6F18 jcxz short initterm seg000:6F1A call cx seg000:6F1C jmp short initterm seg000:6F1E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6F1E seg000:6F1E itdone: ; CODE XREF: initterm+2j seg000:6F1E retn seg000:6F1E initterm endp seg000:6F1E seg000:6F1F seg000:6F1F ; --------------- S U B R O U T I N E --------------------------------------- seg000:6F1F seg000:6F1F seg000:6F1F farinitterm proc near ; CODE XREF: _cinit+C1p seg000:6F1F ; _exit_+4Cp ... seg000:6F1F cmp si, di seg000:6F21 jnb short faritdone seg000:6F23 sub di, 4 seg000:6F26 mov ax, [di] seg000:6F28 or ax, [di+2] seg000:6F2B jz short farinitterm seg000:6F2D call dword ptr [di] seg000:6F2F jmp short farinitterm seg000:6F31 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6F31 seg000:6F31 faritdone: ; CODE XREF: farinitterm+2j seg000:6F31 retn seg000:6F31 farinitterm endp seg000:6F31 seg000:6F32 seg000:6F32 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6F32 seg000:6F32 ; Attributes: bp-based frame seg000:6F32 seg000:6F32 strcat proc near ; CODE XREF: get_volume_string+52p seg000:6F32 seg000:6F32 arg_0 = word ptr 4 seg000:6F32 arg_2 = word ptr 6 seg000:6F32 seg000:6F32 push bp seg000:6F33 mov bp, sp seg000:6F35 mov dx, di seg000:6F37 mov bx, si seg000:6F39 mov ax, ds seg000:6F3B mov es, ax seg000:6F3D assume es:nothing seg000:6F3D mov di, [bp+arg_0] seg000:6F40 xor ax, ax seg000:6F42 mov cx, 0FFFFh seg000:6F45 repne scasb seg000:6F47 lea si, [di-1] seg000:6F4A mov di, [bp+arg_2] seg000:6F4D mov cx, 0FFFFh seg000:6F50 repne scasb seg000:6F52 not cx seg000:6F54 sub di, cx seg000:6F56 xchg di, si seg000:6F58 mov ax, [bp+arg_0] seg000:6F5B test si, 1 seg000:6F5F jz short strcat_0 seg000:6F61 movsb seg000:6F62 dec cx seg000:6F63 seg000:6F63 strcat_0: ; CODE XREF: strcat+2Dj seg000:6F63 shr cx, 1 seg000:6F65 rep movsw seg000:6F67 adc cx, cx seg000:6F69 rep movsb seg000:6F6B mov si, bx seg000:6F6D mov di, dx seg000:6F6F pop bp seg000:6F70 retn seg000:6F70 strcat endp seg000:6F70 seg000:6F70 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6F71 align 2 seg000:6F72 seg000:6F72 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6F72 seg000:6F72 ; Attributes: bp-based frame seg000:6F72 seg000:6F72 strcpy proc near ; CODE XREF: init_partition_tables+3A4p seg000:6F72 ; init_partition_tables+3BEp ... seg000:6F72 seg000:6F72 strcpy_dst = word ptr 4 seg000:6F72 strcpy_src = word ptr 6 seg000:6F72 seg000:6F72 push bp seg000:6F73 mov bp, sp seg000:6F75 mov dx, di seg000:6F77 mov bx, si seg000:6F79 mov si, [bp+strcpy_src] seg000:6F7C mov di, si seg000:6F7E mov ax, ds seg000:6F80 mov es, ax seg000:6F82 xor ax, ax seg000:6F84 mov cx, 0FFFFh seg000:6F87 repne scasb seg000:6F89 not cx seg000:6F8B mov di, [bp+strcpy_dst] seg000:6F8E mov ax, di seg000:6F90 test al, 1 seg000:6F92 jz short strcpy_0 seg000:6F94 movsb seg000:6F95 dec cx seg000:6F96 seg000:6F96 strcpy_0: ; CODE XREF: strcpy+20j seg000:6F96 shr cx, 1 seg000:6F98 rep movsw seg000:6F9A adc cx, cx seg000:6F9C rep movsb seg000:6F9E mov si, bx seg000:6FA0 mov di, dx seg000:6FA2 pop bp seg000:6FA3 retn seg000:6FA3 strcpy endp seg000:6FA3 seg000:6FA4 seg000:6FA4 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6FA4 seg000:6FA4 ; Attributes: bp-based frame seg000:6FA4 seg000:6FA4 strcmp proc near ; CODE XREF: dos_delete+1FEp seg000:6FA4 ; volume_delete+21Dp seg000:6FA4 seg000:6FA4 strcmp_src = word ptr 4 seg000:6FA4 strcmp_dst = word ptr 6 seg000:6FA4 seg000:6FA4 push bp seg000:6FA5 mov bp, sp seg000:6FA7 mov dx, di seg000:6FA9 mov bx, si seg000:6FAB mov ax, ds seg000:6FAD mov es, ax seg000:6FAF mov si, [bp+strcmp_src] seg000:6FB2 mov di, [bp+strcmp_dst] seg000:6FB5 xor ax, ax seg000:6FB7 mov cx, 0FFFFh seg000:6FBA repne scasb seg000:6FBC not cx seg000:6FBE sub di, cx seg000:6FC0 repe cmpsb seg000:6FC2 jz short strcmp_0 seg000:6FC4 sbb ax, ax seg000:6FC6 sbb ax, 0FFFFh seg000:6FC9 seg000:6FC9 strcmp_0: ; CODE XREF: strcmp+1Ej seg000:6FC9 mov si, bx seg000:6FCB mov di, dx seg000:6FCD pop bp seg000:6FCE retn seg000:6FCE strcmp endp seg000:6FCE seg000:6FCE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6FCF align 2 seg000:6FD0 seg000:6FD0 ; --------------- S U B R O U T I N E --------------------------------------- seg000:6FD0 seg000:6FD0 ; Attributes: bp-based frame seg000:6FD0 seg000:6FD0 strlen proc near ; CODE XREF: get_volume+C7p seg000:6FD0 ; load_logical_drive+132p ... seg000:6FD0 seg000:6FD0 arg_0 = word ptr 4 seg000:6FD0 seg000:6FD0 push bp seg000:6FD1 mov bp, sp seg000:6FD3 mov dx, di seg000:6FD5 mov ax, ds seg000:6FD7 mov es, ax seg000:6FD9 mov di, [bp+arg_0] seg000:6FDC xor ax, ax seg000:6FDE mov cx, 0FFFFh seg000:6FE1 repne scasb seg000:6FE3 not cx seg000:6FE5 dec cx seg000:6FE6 xchg ax, cx seg000:6FE7 mov di, dx seg000:6FE9 pop bp seg000:6FEA retn seg000:6FEA strlen endp seg000:6FEA seg000:6FEA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:6FEB align 2 seg000:6FEC seg000:6FEC ; --------------- S U B R O U T I N E --------------------------------------- seg000:6FEC seg000:6FEC ; Attributes: bp-based frame seg000:6FEC seg000:6FEC strncpy proc near ; CODE XREF: get_volume+12Ap seg000:6FEC ; load_logical_drive+197p seg000:6FEC seg000:6FEC arg_0 = word ptr 4 seg000:6FEC arg_2 = word ptr 6 seg000:6FEC arg_4 = word ptr 8 seg000:6FEC seg000:6FEC push bp seg000:6FED mov bp, sp seg000:6FEF push di seg000:6FF0 push si seg000:6FF1 push ds seg000:6FF2 pop es seg000:6FF3 mov di, [bp+arg_0] seg000:6FF6 mov si, [bp+arg_2] seg000:6FF9 mov bx, di seg000:6FFB mov cx, [bp+arg_4] seg000:6FFE jcxz short strncpy_2 seg000:7000 seg000:7000 strncpy_0: ; CODE XREF: strncpy+1Aj seg000:7000 lodsb seg000:7001 or al, al seg000:7003 jz short strncpy_1 seg000:7005 stosb seg000:7006 loop strncpy_0 seg000:7008 seg000:7008 strncpy_1: ; CODE XREF: strncpy+17j seg000:7008 xor al, al seg000:700A rep stosb seg000:700C seg000:700C strncpy_2: ; CODE XREF: strncpy+12j seg000:700C mov ax, bx seg000:700E pop si seg000:700F pop di seg000:7010 mov sp, bp seg000:7012 pop bp seg000:7013 retn seg000:7013 strncpy endp seg000:7013 seg000:7014 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7014 seg000:7014 getche: seg000:7014 mov dh, 1 seg000:7016 jmp short getch_1 seg000:7018 seg000:7018 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7018 seg000:7018 seg000:7018 getch proc near ; CODE XREF: reboot_system+C3p seg000:7018 mov dh, 8 seg000:701A seg000:701A getch_1: ; CODE XREF: seg000:7016j seg000:701A mov ax, ds:_cpush seg000:701D or ah, ah seg000:701F jnz short getch_2 seg000:7021 mov ds:_cpush, 0FFFFh seg000:7027 jmp short getch_4 seg000:7029 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7029 seg000:7029 getch_2: ; CODE XREF: getch+7j seg000:7029 cmp ds:_aDBswpflg, 0D6D6h seg000:702F jnz short getch_3 seg000:7031 push bx seg000:7032 mov bx, 0FFFFh seg000:7035 call ds:_aDBswpchk seg000:7039 pop bx seg000:703A seg000:703A getch_3: ; CODE XREF: getch+17j seg000:703A xchg ax, dx seg000:703B int 21h ; DOS - seg000:703D mov ah, 0 seg000:703F seg000:703F getch_4: ; CODE XREF: getch+Fj seg000:703F retn seg000:703F getch endp seg000:703F seg000:7040 seg000:7040 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7040 seg000:7040 ; Attributes: bp-based frame seg000:7040 seg000:7040 int86 proc near ; CODE XREF: check_valid_environment+Fp seg000:7040 ; init_video_information+13p ... seg000:7040 seg000:7040 var_E = dword ptr -0Eh seg000:7040 var_A = word ptr -0Ah seg000:7040 var_8 = byte ptr -8 seg000:7040 var_7 = byte ptr -7 seg000:7040 var_6 = byte ptr -6 seg000:7040 arg_0 = word ptr 4 seg000:7040 arg_2 = word ptr 6 seg000:7040 arg_4 = word ptr 8 seg000:7040 seg000:7040 push bp seg000:7041 mov bp, sp seg000:7043 push si seg000:7044 push di seg000:7045 sub sp, 10 seg000:7048 mov byte ptr [bp+var_A], 0CDh seg000:704C mov ax, [bp+arg_0] seg000:704F mov byte ptr [bp+var_A+1], al seg000:7052 cmp al, 25h seg000:7054 jz short int86_25h_26h seg000:7056 cmp al, 26h seg000:7058 jz short int86_25h_26h seg000:705A seg000:705A int86_retf_ins: seg000:705A mov [bp+var_8], 0CBh seg000:705E jmp short int86_dos_func seg000:7060 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7060 seg000:7060 int86_25h_26h: ; CODE XREF: int86+14j seg000:7060 ; int86+18j seg000:7060 mov [bp+var_6], 0CBh seg000:7064 mov [bp+var_7], 44h seg000:7068 mov [bp+var_8], 44h seg000:706C seg000:706C int86_dos_func: ; CODE XREF: int86+1Ej seg000:706C mov word ptr [bp+var_E+2], ss seg000:706F lea ax, [bp+var_A] seg000:7072 mov word ptr [bp+var_E], ax seg000:7075 mov di, [bp+arg_2] seg000:7078 mov ax, [di] seg000:707A mov bx, [di+2] seg000:707D mov cx, [di+4] seg000:7080 mov dx, [di+6] seg000:7083 mov si, [di+8] seg000:7086 mov di, [di+10] seg000:7089 push bp seg000:708A call [bp+var_E] seg000:708D pop bp seg000:708E cld seg000:708F push di seg000:7090 mov di, [bp+arg_4] seg000:7093 mov [di], ax seg000:7095 mov [di+2], bx seg000:7098 mov [di+4], cx seg000:709B mov [di+6], dx seg000:709E mov [di+8], si seg000:70A1 pop word ptr [di+10] seg000:70A4 jb short int86_dos_func_err seg000:70A6 xor si, si seg000:70A8 jmp short int86_retn seg000:70AA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:70AA seg000:70AA int86_dos_func_err: ; CODE XREF: int86+64j seg000:70AA call _maperror seg000:70AD mov si, 1 seg000:70B0 mov ax, [di] seg000:70B2 seg000:70B2 int86_retn: ; CODE XREF: int86+68j seg000:70B2 mov [di+12], si seg000:70B5 add sp, 10 seg000:70B8 pop di seg000:70B9 pop si seg000:70BA mov sp, bp seg000:70BC pop bp seg000:70BD retn seg000:70BD int86 endp seg000:70BD seg000:70BE seg000:70BE ; --------------- S U B R O U T I N E --------------------------------------- seg000:70BE seg000:70BE ; Attributes: bp-based frame seg000:70BE seg000:70BE sprintf proc near ; CODE XREF: dos_delete+69p seg000:70BE ; ext_delete+5Ep ... seg000:70BE seg000:70BE _printf_buff = word ptr 4 seg000:70BE _printf_format = word ptr 6 seg000:70BE _printf_arg = byte ptr 8 seg000:70BE seg000:70BE push bp seg000:70BF mov bp, sp seg000:70C1 sub sp, 2 seg000:70C4 push di seg000:70C5 push si seg000:70C6 mov ds:_strbuf_flag, 42h seg000:70CB mov ax, [bp+_printf_buff] seg000:70CE mov ds:_strbuf_base, ax seg000:70D1 mov si, offset _strbuf_ptr seg000:70D4 mov [si], ax seg000:70D6 mov ds:_strbuf_cnt, 32767 seg000:70DC lea ax, [bp+_printf_arg] seg000:70DF push ax seg000:70E0 push [bp+_printf_format] seg000:70E3 mov ax, si seg000:70E5 push ax seg000:70E6 call _output seg000:70E9 add sp, 6 seg000:70EC mov di, ax seg000:70EE dec ds:_strbuf_cnt seg000:70F2 js short sprintf_0 seg000:70F4 mov bx, ds:_strbuf_ptr seg000:70F8 inc ds:_strbuf_ptr seg000:70FC mov byte ptr [bx], 0 seg000:70FF jmp short sprintf_1 seg000:7101 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7101 nop seg000:7102 seg000:7102 sprintf_0: ; CODE XREF: sprintf+34j seg000:7102 push si seg000:7103 sub ax, ax seg000:7105 push ax seg000:7106 call _flsbuf seg000:7109 add sp, 4 seg000:710C seg000:710C sprintf_1: ; CODE XREF: sprintf+41j seg000:710C mov ax, di seg000:710E pop si seg000:710F pop di seg000:7110 mov sp, bp seg000:7112 pop bp seg000:7113 retn seg000:7113 sprintf endp seg000:7113 seg000:7114 seg000:7114 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7114 seg000:7114 ; Attributes: bp-based frame seg000:7114 seg000:7114 int86x proc near ; CODE XREF: DiskIo+10p seg000:7114 seg000:7114 var_10 = dword ptr -10h seg000:7114 var_C = word ptr -0Ch seg000:7114 var_A = byte ptr -0Ah seg000:7114 var_9 = byte ptr -9 seg000:7114 var_8 = byte ptr -8 seg000:7114 arg_0 = word ptr 4 seg000:7114 arg_2 = word ptr 6 seg000:7114 arg_4 = word ptr 8 seg000:7114 arg_6 = word ptr 0Ah seg000:7114 seg000:7114 push bp seg000:7115 mov bp, sp seg000:7117 push si seg000:7118 push di seg000:7119 push ds seg000:711A sub sp, 10 seg000:711D mov byte ptr [bp+var_C], 0CDh seg000:7121 mov ax, [bp+arg_0] seg000:7124 mov byte ptr [bp+var_C+1], al seg000:7127 cmp al, 25h seg000:7129 jz short int86x_25h_26h seg000:712B cmp al, 26h seg000:712D jz short int86x_25h_26h seg000:712F mov [bp+var_A], 0CBh seg000:7133 jmp short int86x_dos_func seg000:7135 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7135 seg000:7135 int86x_25h_26h: ; CODE XREF: int86x+15j seg000:7135 ; int86x+19j seg000:7135 mov [bp+var_8], 0CBh seg000:7139 mov [bp+var_9], 44h seg000:713D mov [bp+var_A], 44h seg000:7141 seg000:7141 int86x_dos_func: ; CODE XREF: int86x+1Fj seg000:7141 mov word ptr [bp+var_10+2], ss seg000:7144 lea ax, [bp+var_C] seg000:7147 mov word ptr [bp+var_10], ax seg000:714A mov di, [bp+arg_2] seg000:714D mov ax, [di] seg000:714F mov bx, [di+2] seg000:7152 mov cx, [di+4] seg000:7155 mov dx, [di+6] seg000:7158 mov si, [di+8] seg000:715B push word ptr [di+10] seg000:715E mov di, [bp+arg_6] seg000:7161 mov es, word ptr [di] seg000:7163 mov ds, word ptr [di+6] seg000:7166 pop di seg000:7167 push bp seg000:7168 call [bp+var_10] seg000:716B pop bp seg000:716C cld seg000:716D push di seg000:716E push ds seg000:716F push ss seg000:7170 pop ds seg000:7171 assume ds:DGROUP seg000:7171 mov di, [bp+arg_6] seg000:7174 mov word ptr [di], es seg000:7176 pop word ptr [di+6] seg000:7179 mov di, [bp+arg_4] seg000:717C mov [di], ax seg000:717E mov [di+2], bx seg000:7181 mov [di+4], cx seg000:7184 mov [di+6], dx seg000:7187 mov [di+8], si seg000:718A pop word ptr [di+10] seg000:718D jb short int86x_dos_func_err seg000:718F xor si, si seg000:7191 jmp short int86x_retn seg000:7193 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7193 seg000:7193 int86x_dos_func_err: ; CODE XREF: int86x+79j seg000:7193 call _maperror seg000:7196 mov si, 1 seg000:7199 mov ax, [di] seg000:719B seg000:719B int86x_retn: ; CODE XREF: int86x+7Dj seg000:719B mov [di+12], si seg000:719E add sp, 10 seg000:71A1 pop ds seg000:71A2 assume ds:nothing seg000:71A2 pop di seg000:71A3 pop si seg000:71A4 mov sp, bp seg000:71A6 pop bp seg000:71A7 retn seg000:71A7 int86x endp seg000:71A7 seg000:71A8 seg000:71A8 ; --------------- S U B R O U T I N E --------------------------------------- seg000:71A8 seg000:71A8 ; Attributes: bp-based frame seg000:71A8 seg000:71A8 intdos proc near ; CODE XREF: load_logical_drive+24Ap seg000:71A8 ; get_char_input+Fp ... seg000:71A8 seg000:71A8 arg_0 = word ptr 4 seg000:71A8 arg_2 = word ptr 6 seg000:71A8 seg000:71A8 push bp seg000:71A9 mov bp, sp seg000:71AB push si seg000:71AC push di seg000:71AD mov di, [bp+arg_0] seg000:71B0 mov ax, [di] seg000:71B2 mov bx, [di+2] seg000:71B5 mov cx, [di+4] seg000:71B8 mov dx, [di+6] seg000:71BB mov si, [di+8] seg000:71BE mov di, [di+10] seg000:71C1 int 21h ; DOS - seg000:71C3 push di seg000:71C4 mov di, [bp+arg_2] seg000:71C7 mov [di], ax seg000:71C9 mov [di+2], bx seg000:71CC mov [di+4], cx seg000:71CF mov [di+6], dx seg000:71D2 mov [di+8], si seg000:71D5 pop word ptr [di+10] seg000:71D8 jb short intdos_func_err seg000:71DA xor si, si seg000:71DC jmp short intdos_retn seg000:71DE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:71DE seg000:71DE intdos_func_err: ; CODE XREF: intdos+30j seg000:71DE call _maperror seg000:71E1 mov si, 1 seg000:71E4 mov ax, [di] seg000:71E6 seg000:71E6 intdos_retn: ; CODE XREF: intdos+34j seg000:71E6 mov [di+12], si seg000:71E9 pop di seg000:71EA pop si seg000:71EB mov sp, bp seg000:71ED pop bp seg000:71EE retn seg000:71EE intdos endp seg000:71EE seg000:71EE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:71EF align 2 seg000:71F0 seg000:71F0 ; --------------- S U B R O U T I N E --------------------------------------- seg000:71F0 seg000:71F0 ; Attributes: bp-based frame seg000:71F0 seg000:71F0 intdosx proc near ; CODE XREF: reboot_system+30p seg000:71F0 ; parse_command_line+1Dp ... seg000:71F0 seg000:71F0 arg_0 = word ptr 4 seg000:71F0 arg_2 = word ptr 6 seg000:71F0 arg_4 = word ptr 8 seg000:71F0 seg000:71F0 push bp seg000:71F1 mov bp, sp seg000:71F3 push si seg000:71F4 push di seg000:71F5 mov di, [bp+arg_0] seg000:71F8 mov ax, [di] seg000:71FA mov bx, [di+2] seg000:71FD mov cx, [di+4] seg000:7200 mov dx, [di+6] seg000:7203 mov si, [di+8] seg000:7206 push word ptr [di+10] seg000:7209 mov di, [bp+arg_4] seg000:720C mov es, word ptr [di] seg000:720E mov ds, word ptr [di+6] seg000:7211 pop di seg000:7212 int 21h ; DOS - seg000:7214 push di seg000:7215 push ds seg000:7216 mov di, ss seg000:7218 mov ds, di seg000:721A assume ds:DGROUP seg000:721A mov di, [bp+arg_4] seg000:721D mov word ptr [di], es seg000:721F pop word ptr [di+6] seg000:7222 mov di, [bp+arg_2] seg000:7225 mov [di], ax seg000:7227 mov [di+2], bx seg000:722A mov [di+4], cx seg000:722D mov [di+6], dx seg000:7230 mov [di+8], si seg000:7233 pop word ptr [di+10] seg000:7236 jb short intdosx_func_err seg000:7238 xor si, si seg000:723A jmp short intdosx_retn seg000:723C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:723C seg000:723C intdosx_func_err: ; CODE XREF: intdosx+46j seg000:723C call _maperror seg000:723F mov si, 1 seg000:7242 mov ax, [di] seg000:7244 seg000:7244 intdosx_retn: ; CODE XREF: intdosx+4Aj seg000:7244 mov [di+12], si seg000:7247 pop di seg000:7248 pop si seg000:7249 mov sp, bp seg000:724B pop bp seg000:724C retn seg000:724C intdosx endp seg000:724C seg000:724C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:724D align 2 seg000:724E seg000:724E ; --------------- S U B R O U T I N E --------------------------------------- seg000:724E seg000:724E ; Attributes: bp-based frame seg000:724E seg000:724E segread proc near ; CODE XREF: Parse_msg+Ap seg000:724E ; get_fs_and_vol+29p ... seg000:724E seg000:724E arg_0 = word ptr 4 seg000:724E seg000:724E push bp seg000:724F mov bp, sp seg000:7251 mov bx, [bp+arg_0] seg000:7254 mov word ptr [bx+6], ds seg000:7257 mov word ptr [bx], es seg000:7259 mov word ptr [bx+2], cs seg000:725C mov word ptr [bx+4], ss seg000:725F mov sp, bp seg000:7261 pop bp seg000:7262 retn seg000:7262 segread endp seg000:7262 seg000:7262 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7263 align 2 seg000:7264 seg000:7264 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7264 seg000:7264 ; Attributes: bp-based frame seg000:7264 seg000:7264 strchr proc near ; CODE XREF: get_string_input+25Cp seg000:7264 seg000:7264 strchr_string = word ptr 4 seg000:7264 str_chr = byte ptr 6 seg000:7264 seg000:7264 push bp seg000:7265 mov bp, sp seg000:7267 push di seg000:7268 mov di, [bp+strchr_string] seg000:726B push ds seg000:726C pop es seg000:726D assume es:DGROUP seg000:726D mov bx, di seg000:726F xor ax, ax seg000:7271 mov cx, 0FFFFh seg000:7274 repne scasb seg000:7276 inc cx seg000:7277 neg cx seg000:7279 mov al, [bp+str_chr] seg000:727C mov di, bx seg000:727E repne scasb seg000:7280 dec di seg000:7281 cmp [di], al seg000:7283 jz short strchr_0 seg000:7285 xor di, di seg000:7287 seg000:7287 strchr_0: ; CODE XREF: strchr+1Fj seg000:7287 mov ax, di seg000:7289 pop di seg000:728A mov sp, bp seg000:728C pop bp seg000:728D retn seg000:728D strchr endp seg000:728D seg000:728E seg000:728E ; --------------- S U B R O U T I N E --------------------------------------- seg000:728E seg000:728E ; Attributes: bp-based frame seg000:728E seg000:728E memset proc near ; CODE XREF: table_display+13p seg000:728E ; volume_display+1Dp ... seg000:728E seg000:728E arg_0 = word ptr 4 seg000:728E arg_2 = byte ptr 6 seg000:728E arg_4 = word ptr 8 seg000:728E seg000:728E push bp seg000:728F mov bp, sp seg000:7291 mov dx, di seg000:7293 mov ax, ds seg000:7295 mov es, ax seg000:7297 mov di, [bp+arg_0] seg000:729A mov bx, di seg000:729C mov cx, [bp+arg_4] seg000:729F jcxz short memset_2 seg000:72A1 mov al, [bp+arg_2] seg000:72A4 mov ah, al seg000:72A6 test di, 1 seg000:72AA jz short metset_1 seg000:72AC stosb seg000:72AD dec cx seg000:72AE seg000:72AE metset_1: ; CODE XREF: memset+1Cj seg000:72AE shr cx, 1 seg000:72B0 rep stosw seg000:72B2 adc cx, cx seg000:72B4 rep stosb seg000:72B6 seg000:72B6 memset_2: ; CODE XREF: memset+11j seg000:72B6 mov di, dx seg000:72B8 xchg ax, bx seg000:72B9 pop bp seg000:72BA retn seg000:72BA memset endp seg000:72BA seg000:72BA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:72BB align 2 seg000:72BC seg000:72BC ; --------------- S U B R O U T I N E --------------------------------------- seg000:72BC seg000:72BC ; Attributes: bp-based frame seg000:72BC seg000:72BC mul32 proc near ; CODE XREF: dos_create_partition+9Cp seg000:72BC ; make_partition+11Ap ... seg000:72BC seg000:72BC arg_0 = word ptr 4 seg000:72BC arg_2 = word ptr 6 seg000:72BC arg_4 = word ptr 8 seg000:72BC arg_6 = word ptr 0Ah seg000:72BC seg000:72BC push bp seg000:72BD mov bp, sp seg000:72BF mov ax, [bp+arg_2] seg000:72C2 mov cx, [bp+arg_6] seg000:72C5 or cx, ax seg000:72C7 mov cx, [bp+arg_4] seg000:72CA jnz short mul32_1 seg000:72CC seg000:72CC mul32_0: seg000:72CC mov ax, [bp+arg_0] seg000:72CF mul cx seg000:72D1 pop bp seg000:72D2 retn 8 seg000:72D5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:72D5 seg000:72D5 mul32_1: ; CODE XREF: mul32+Ej seg000:72D5 push bx seg000:72D6 mul cx seg000:72D8 mov bx, ax seg000:72DA mov ax, [bp+arg_0] seg000:72DD mul [bp+arg_6] seg000:72E0 add bx, ax seg000:72E2 mov ax, [bp+arg_0] seg000:72E5 mul cx seg000:72E7 add dx, bx seg000:72E9 pop bx seg000:72EA pop bp seg000:72EB retn 8 seg000:72EB mul32 endp seg000:72EB seg000:72EE seg000:72EE ; --------------- S U B R O U T I N E --------------------------------------- seg000:72EE seg000:72EE ; Attributes: bp-based frame seg000:72EE seg000:72EE _mod32 proc near ; CODE XREF: mbytes_to_cylinders+5Cp seg000:72EE ; cylinders_to_percent+3Dp seg000:72EE seg000:72EE arg_0 = word ptr 4 seg000:72EE arg_2 = word ptr 6 seg000:72EE arg_4 = word ptr 8 seg000:72EE arg_6 = word ptr 0Ah seg000:72EE seg000:72EE push bp seg000:72EF mov bp, sp seg000:72F1 push bx seg000:72F2 push di seg000:72F3 xor di, di seg000:72F5 mov ax, [bp+arg_2] seg000:72F8 or ax, ax seg000:72FA jge short _mod32_0 seg000:72FC inc di seg000:72FD mov dx, [bp+arg_0] seg000:7300 neg ax seg000:7302 neg dx seg000:7304 sbb ax, 0 seg000:7307 mov [bp+arg_2], ax seg000:730A mov [bp+arg_0], dx seg000:730D seg000:730D _mod32_0: ; CODE XREF: _mod32+Cj seg000:730D mov ax, [bp+arg_6] seg000:7310 or ax, ax seg000:7312 jge short _mod32_1 seg000:7314 mov dx, [bp+arg_4] seg000:7317 neg ax seg000:7319 neg dx seg000:731B sbb ax, 0 seg000:731E mov [bp+arg_6], ax seg000:7321 mov [bp+arg_4], dx seg000:7324 seg000:7324 _mod32_1: ; CODE XREF: _mod32+24j seg000:7324 or ax, ax seg000:7326 jnz short _mod32_2 seg000:7328 mov cx, [bp+arg_4] seg000:732B mov ax, [bp+arg_2] seg000:732E xor dx, dx seg000:7330 div cx seg000:7332 mov ax, [bp+arg_0] seg000:7335 div cx seg000:7337 mov ax, dx seg000:7339 xor dx, dx seg000:733B dec di seg000:733C jns short _mod32_6 seg000:733E jmp short _mod32_7 seg000:7340 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7340 seg000:7340 _mod32_2: ; CODE XREF: _mod32+38j seg000:7340 mov bx, ax seg000:7342 mov cx, [bp+arg_4] seg000:7345 mov dx, [bp+arg_2] seg000:7348 mov ax, [bp+arg_0] seg000:734B seg000:734B _mod32_3: ; CODE XREF: _mod32+67j seg000:734B shr bx, 1 seg000:734D rcr cx, 1 seg000:734F shr dx, 1 seg000:7351 rcr ax, 1 seg000:7353 or bx, bx seg000:7355 jnz short _mod32_3 seg000:7357 div cx seg000:7359 mov cx, ax seg000:735B mul [bp+arg_6] seg000:735E xchg ax, cx seg000:735F mul [bp+arg_4] seg000:7362 add dx, cx seg000:7364 jb short _mod32_4 seg000:7366 cmp dx, [bp+arg_2] seg000:7369 ja short _mod32_4 seg000:736B jb short _mod32_5 seg000:736D cmp ax, [bp+arg_0] seg000:7370 jbe short _mod32_5 seg000:7372 seg000:7372 _mod32_4: ; CODE XREF: _mod32+76j seg000:7372 ; _mod32+7Bj seg000:7372 sub ax, [bp+arg_4] seg000:7375 sbb dx, [bp+arg_6] seg000:7378 seg000:7378 _mod32_5: ; CODE XREF: _mod32+7Dj seg000:7378 ; _mod32+82j seg000:7378 sub ax, [bp+arg_0] seg000:737B sbb dx, [bp+arg_2] seg000:737E dec di seg000:737F jns short _mod32_7 seg000:7381 seg000:7381 _mod32_6: ; CODE XREF: _mod32+4Ej seg000:7381 neg dx seg000:7383 neg ax seg000:7385 sbb dx, 0 seg000:7388 seg000:7388 _mod32_7: ; CODE XREF: _mod32+50j seg000:7388 ; _mod32+91j seg000:7388 pop di seg000:7389 pop bx seg000:738A pop bp seg000:738B retn 8 seg000:738B _mod32 endp seg000:738B seg000:738E seg000:738E ; --------------- S U B R O U T I N E --------------------------------------- seg000:738E seg000:738E seg000:738E shl32 proc near ; CODE XREF: init_partition_tables+132p seg000:738E ; init_partition_tables+190p ... seg000:738E xor ch, ch seg000:7390 jcxz short shl31_1 seg000:7392 seg000:7392 shl32_0: ; CODE XREF: shl32+8j seg000:7392 shl ax, 1 seg000:7394 rcl dx, 1 seg000:7396 loop shl32_0 seg000:7398 seg000:7398 shl31_1: ; CODE XREF: shl32+2j seg000:7398 retn seg000:7398 shl32 endp seg000:7398 seg000:7398 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7399 align 2 seg000:739A seg000:739A ; --------------- S U B R O U T I N E --------------------------------------- seg000:739A seg000:739A ; Attributes: bp-based frame seg000:739A seg000:739A div32 proc near ; CODE XREF: verify_tracks+C1p seg000:739A ; mbytes_to_cylinders+29p ... seg000:739A seg000:739A dividend_lw = word ptr 4 seg000:739A dividend_hw = word ptr 6 seg000:739A divisor_lw = word ptr 8 seg000:739A divisor_hw = byte ptr 0Ah seg000:739A seg000:739A push bp seg000:739B mov bp, sp seg000:739D push bx seg000:739E push si seg000:739F mov ax, word ptr [bp+divisor_hw] seg000:73A2 or ax, ax seg000:73A4 jnz short div32_0 seg000:73A6 mov cx, [bp+divisor_lw] seg000:73A9 mov ax, [bp+dividend_hw] seg000:73AC xor dx, dx seg000:73AE div cx seg000:73B0 mov bx, ax seg000:73B2 mov ax, [bp+dividend_lw] seg000:73B5 div cx seg000:73B7 mov dx, bx seg000:73B9 jmp short div32_4 seg000:73BB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:73BB seg000:73BB div32_0: ; CODE XREF: div32+Aj seg000:73BB mov cx, ax seg000:73BD mov bx, [bp+divisor_lw] seg000:73C0 mov dx, [bp+dividend_hw] seg000:73C3 mov ax, [bp+dividend_lw] seg000:73C6 seg000:73C6 div32_1: ; CODE XREF: div32+36j seg000:73C6 shr cx, 1 seg000:73C8 rcr bx, 1 seg000:73CA shr dx, 1 seg000:73CC rcr ax, 1 seg000:73CE or cx, cx seg000:73D0 jnz short div32_1 seg000:73D2 div bx seg000:73D4 mov si, ax seg000:73D6 mul word ptr [bp+divisor_hw] seg000:73D9 xchg ax, cx seg000:73DA mov ax, [bp+divisor_lw] seg000:73DD mul si seg000:73DF add dx, cx seg000:73E1 jb short div32_2 seg000:73E3 cmp dx, [bp+dividend_hw] seg000:73E6 ja short div32_2 seg000:73E8 jb short div32_3 seg000:73EA cmp ax, [bp+dividend_lw] seg000:73ED jbe short div32_3 seg000:73EF seg000:73EF div32_2: ; CODE XREF: div32+47j seg000:73EF ; div32+4Cj seg000:73EF dec si seg000:73F0 seg000:73F0 div32_3: ; CODE XREF: div32+4Ej seg000:73F0 ; div32+53j seg000:73F0 xor dx, dx seg000:73F2 xchg ax, si seg000:73F3 seg000:73F3 div32_4: ; CODE XREF: div32+1Fj seg000:73F3 pop si seg000:73F4 pop bx seg000:73F5 pop bp seg000:73F6 retn 8 seg000:73F6 div32 endp seg000:73F6 seg000:73F6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:73F9 align 2 seg000:73FA seg000:73FA ; --------------- S U B R O U T I N E --------------------------------------- seg000:73FA seg000:73FA ; Attributes: bp-based frame seg000:73FA seg000:73FA mod32 proc near ; CODE XREF: percent_to_cylinders+29p seg000:73FA seg000:73FA arg_0 = word ptr 4 seg000:73FA arg_2 = word ptr 6 seg000:73FA arg_4 = word ptr 8 seg000:73FA arg_6 = word ptr 0Ah seg000:73FA seg000:73FA push bp seg000:73FB mov bp, sp seg000:73FD push bx seg000:73FE mov ax, [bp+arg_6] seg000:7401 or ax, ax seg000:7403 jnz short mod32_0 seg000:7405 mov cx, [bp+arg_4] seg000:7408 mov ax, [bp+arg_2] seg000:740B xor dx, dx seg000:740D div cx seg000:740F mov ax, [bp+arg_0] seg000:7412 div cx seg000:7414 mov ax, dx seg000:7416 xor dx, dx seg000:7418 jmp short mod32_4 seg000:741A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:741A seg000:741A mod32_0: ; CODE XREF: mod32+9j seg000:741A mov cx, ax seg000:741C mov bx, [bp+arg_4] seg000:741F mov dx, [bp+arg_2] seg000:7422 mov ax, [bp+arg_0] seg000:7425 seg000:7425 mod32_1: ; CODE XREF: mod32+35j seg000:7425 shr cx, 1 seg000:7427 rcr bx, 1 seg000:7429 shr dx, 1 seg000:742B rcr ax, 1 seg000:742D or cx, cx seg000:742F jnz short mod32_1 seg000:7431 div bx seg000:7433 mov cx, ax seg000:7435 mul [bp+arg_6] seg000:7438 xchg ax, cx seg000:7439 mul [bp+arg_4] seg000:743C add dx, cx seg000:743E jb short mod32_2 seg000:7440 cmp dx, [bp+arg_2] seg000:7443 ja short mod32_2 seg000:7445 jb short mod32_3 seg000:7447 cmp ax, [bp+arg_0] seg000:744A jbe short mod32_3 seg000:744C seg000:744C mod32_2: ; CODE XREF: mod32+44j seg000:744C ; mod32+49j seg000:744C sub ax, [bp+arg_4] seg000:744F sbb dx, [bp+arg_6] seg000:7452 seg000:7452 mod32_3: ; CODE XREF: mod32+4Bj seg000:7452 ; mod32+50j seg000:7452 sub ax, [bp+arg_0] seg000:7455 sbb dx, [bp+arg_2] seg000:7458 neg dx seg000:745A neg ax seg000:745C sbb dx, 0 seg000:745F seg000:745F mod32_4: ; CODE XREF: mod32+1Ej seg000:745F pop bx seg000:7460 pop bp seg000:7461 retn 8 seg000:7461 mod32 endp seg000:7461 seg000:7464 seg000:7464 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7464 seg000:7464 seg000:7464 shr32 proc near ; CODE XREF: write_master_boot_to_disk+F6p seg000:7464 ; write_master_boot_to_disk+12Bp ... seg000:7464 xor ch, ch seg000:7466 jcxz short shr32_1 seg000:7468 seg000:7468 shr32_0: ; CODE XREF: shr32+8j seg000:7468 shr dx, 1 seg000:746A rcr ax, 1 seg000:746C loop shr32_0 seg000:746E seg000:746E shr32_1: ; CODE XREF: shr32+2j seg000:746E retn seg000:746E shr32 endp seg000:746E seg000:746E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:746F align 2 seg000:7470 seg000:7470 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7470 seg000:7470 seg000:7470 _setargv proc near ; CODE XREF: seg000:6D44p seg000:7470 pop retadr seg000:7474 mov ah, 30h seg000:7476 int 21h ; DOS - GET DOS VERSION seg000:7476 ; Return: AL = major version number (00h for DOS 1.x) seg000:7478 mov word ptr _dosvermajor, ax seg000:747B mov dx, 1 seg000:747E cmp al, 2 seg000:7480 jz short dos_two seg000:7482 mov es, _psp seg000:7486 assume es:nothing seg000:7486 mov es, word ptr es:2Ch seg000:748B mov _pgmptr_2, es seg000:748F xor ax, ax seg000:7491 cwd seg000:7492 mov cx, 8000h seg000:7495 xor di, di seg000:7497 seg000:7497 find_env_end: ; CODE XREF: _setargv+2Aj seg000:7497 repne scasb seg000:7499 scasb seg000:749A jnz short find_env_end seg000:749C inc di seg000:749D inc di seg000:749E mov _pgmptr, di seg000:74A2 mov cx, 0FFFFh seg000:74A5 repne scasb seg000:74A7 not cx seg000:74A9 mov dx, cx seg000:74AB seg000:74AB dos_two: ; CODE XREF: _setargv+10j seg000:74AB mov di, 1 seg000:74AE mov si, 81h seg000:74B1 mov ds, _psp seg000:74B5 assume ds:nothing seg000:74B5 seg000:74B5 arg110: ; CODE XREF: _setargv+48j seg000:74B5 ; _setargv+4Cj ... seg000:74B5 lodsb seg000:74B6 cmp al, ' ' seg000:74B8 jz short arg110 seg000:74BA cmp al, 9 seg000:74BC jz short arg110 seg000:74BE cmp al, 0Dh seg000:74C0 jz short arg400 seg000:74C2 or al, al seg000:74C4 jz short arg400 seg000:74C6 inc di seg000:74C7 seg000:74C7 arg200: ; CODE XREF: _setargv+82j seg000:74C7 dec si seg000:74C8 seg000:74C8 arg210: ; CODE XREF: _setargv+72j seg000:74C8 ; _setargv+8Cj ... seg000:74C8 lodsb seg000:74C9 cmp al, ' ' seg000:74CB jz short arg110 seg000:74CD cmp al, 9 seg000:74CF jz short arg110 seg000:74D1 cmp al, 0Dh seg000:74D3 jz short arg400 seg000:74D5 or al, al seg000:74D7 jz short arg400 seg000:74D9 cmp al, '"' seg000:74DB jz short arg310 seg000:74DD cmp al, '\' seg000:74DF jz short arg220 seg000:74E1 inc dx seg000:74E2 jmp short arg210 seg000:74E4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:74E4 seg000:74E4 arg220: ; CODE XREF: _setargv+6Fj seg000:74E4 xor cx, cx seg000:74E6 seg000:74E6 arg221: ; CODE XREF: _setargv+7Aj seg000:74E6 inc cx seg000:74E7 lodsb seg000:74E8 cmp al, '\' seg000:74EA jz short arg221 seg000:74EC cmp al, '"' seg000:74EE jz short arg230 seg000:74F0 add dx, cx seg000:74F2 jmp short arg200 seg000:74F4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:74F4 seg000:74F4 arg230: ; CODE XREF: _setargv+7Ej seg000:74F4 mov ax, cx seg000:74F6 shr cx, 1 seg000:74F8 adc dx, cx seg000:74FA test al, 1 seg000:74FC jnz short arg210 seg000:74FE jmp short arg310 seg000:7500 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7500 seg000:7500 arg300: ; CODE XREF: _setargv+B3j seg000:7500 dec si seg000:7501 seg000:7501 arg310: ; CODE XREF: _setargv+6Bj seg000:7501 ; _setargv+8Ej ... seg000:7501 lodsb seg000:7502 cmp al, 0Dh seg000:7504 jz short arg400 seg000:7506 or al, al seg000:7508 jz short arg400 seg000:750A cmp al, '"' seg000:750C jz short arg210 seg000:750E cmp al, '\' seg000:7510 jz short arg320 seg000:7512 inc dx seg000:7513 jmp short arg310 seg000:7515 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7515 seg000:7515 arg320: ; CODE XREF: _setargv+A0j seg000:7515 xor cx, cx seg000:7517 seg000:7517 arg321: ; CODE XREF: _setargv+ABj seg000:7517 inc cx seg000:7518 lodsb seg000:7519 cmp al, '\' seg000:751B jz short arg321 seg000:751D cmp al, '"' seg000:751F jz short arg330 seg000:7521 add dx, cx seg000:7523 jmp short arg300 seg000:7525 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7525 seg000:7525 arg330: ; CODE XREF: _setargv+AFj seg000:7525 mov ax, cx seg000:7527 shr cx, 1 seg000:7529 adc dx, cx seg000:752B test al, 1 seg000:752D jnz short arg310 seg000:752F jmp short arg210 seg000:7531 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7531 seg000:7531 arg400: ; CODE XREF: _setargv+50j seg000:7531 ; _setargv+54j ... seg000:7531 push ss seg000:7532 pop ds seg000:7533 assume ds:DGROUP seg000:7533 mov _argc, di seg000:7537 add dx, di seg000:7539 inc di seg000:753A shl di, 1 seg000:753C add dx, di seg000:753E inc dx seg000:753F and dl, not 1 seg000:7542 sub sp, dx seg000:7544 mov ax, sp seg000:7546 mov _argv, ax seg000:7549 mov bx, ax seg000:754B add di, bx seg000:754D push ss seg000:754E pop es seg000:754F assume es:DGROUP seg000:754F mov ss:[bx], di seg000:7552 inc bx seg000:7553 inc bx seg000:7554 lds si, dword ptr _pgmptr seg000:7558 assume ds:nothing seg000:7558 seg000:7558 copy_argv0: ; CODE XREF: _setargv+ECj seg000:7558 lodsb seg000:7559 stosb seg000:755A or al, al seg000:755C jnz short copy_argv0 seg000:755E mov ds, ss:_psp seg000:7563 mov si, 81h seg000:7566 jmp short arg510 seg000:7568 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7568 seg000:7568 arg500: ; CODE XREF: _setargv+115j seg000:7568 ; _setargv+119j seg000:7568 xor ax, ax seg000:756A stosb seg000:756B seg000:756B arg510: ; CODE XREF: _setargv+F6j seg000:756B ; _setargv+FEj ... seg000:756B lodsb seg000:756C cmp al, ' ' seg000:756E jz short arg510 seg000:7570 cmp al, 9 seg000:7572 jz short arg510 seg000:7574 cmp al, 0Dh seg000:7576 jz short arg810 seg000:7578 or al, al seg000:757A jz short arg810 seg000:757C mov ss:[bx], di seg000:757F inc bx seg000:7580 inc bx seg000:7581 seg000:7581 arg600: ; CODE XREF: _setargv+13Ej seg000:7581 dec si seg000:7582 seg000:7582 arg610: ; CODE XREF: _setargv+12Cj seg000:7582 ; _setargv+14Bj ... seg000:7582 lodsb seg000:7583 cmp al, ' ' seg000:7585 jz short arg500 seg000:7587 cmp al, 9 seg000:7589 jz short arg500 seg000:758B cmp al, 0Dh seg000:758D jz short arg800 seg000:758F or al, al seg000:7591 jz short arg800 seg000:7593 cmp al, '"' seg000:7595 jz short arg710 seg000:7597 cmp al, '\' seg000:7599 jz short arg620 seg000:759B stosb seg000:759C jmp short arg610 seg000:759E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:759E seg000:759E arg620: ; CODE XREF: _setargv+129j seg000:759E xor cx, cx seg000:75A0 seg000:75A0 arg621: ; CODE XREF: _setargv+134j seg000:75A0 inc cx seg000:75A1 lodsb seg000:75A2 cmp al, '\' seg000:75A4 jz short arg621 seg000:75A6 cmp al, '"' seg000:75A8 jz short arg630 seg000:75AA mov al, '\' seg000:75AC rep stosb seg000:75AE jmp short arg600 seg000:75B0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:75B0 seg000:75B0 arg630: ; CODE XREF: _setargv+138j seg000:75B0 mov al, '\' seg000:75B2 shr cx, 1 seg000:75B4 rep stosb seg000:75B6 jnb short arg710 seg000:75B8 mov al, '"' seg000:75BA stosb seg000:75BB jmp short arg610 seg000:75BD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:75BD seg000:75BD arg700: ; CODE XREF: _setargv+172j seg000:75BD dec si seg000:75BE seg000:75BE arg710: ; CODE XREF: _setargv+125j seg000:75BE ; _setargv+146j ... seg000:75BE lodsb seg000:75BF cmp al, 0Dh seg000:75C1 jz short arg800 seg000:75C3 or al, al seg000:75C5 jz short arg800 seg000:75C7 cmp al, '"' seg000:75C9 jz short arg610 seg000:75CB cmp al, '\' seg000:75CD jz short arg720 seg000:75CF stosb seg000:75D0 jmp short arg710 seg000:75D2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:75D2 seg000:75D2 arg720: ; CODE XREF: _setargv+15Dj seg000:75D2 xor cx, cx seg000:75D4 seg000:75D4 arg721: ; CODE XREF: _setargv+168j seg000:75D4 inc cx seg000:75D5 lodsb seg000:75D6 cmp al, '\' seg000:75D8 jz short arg721 seg000:75DA cmp al, '"' seg000:75DC jz short arg730 seg000:75DE mov al, '\' seg000:75E0 rep stosb seg000:75E2 jmp short arg700 seg000:75E4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:75E4 seg000:75E4 arg730: ; CODE XREF: _setargv+16Cj seg000:75E4 mov al, '\' seg000:75E6 shr cx, 1 seg000:75E8 rep stosb seg000:75EA jnb short arg610 seg000:75EC mov al, '"' seg000:75EE stosb seg000:75EF jmp short arg710 seg000:75F1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:75F1 seg000:75F1 arg800: ; CODE XREF: _setargv+11Dj seg000:75F1 ; _setargv+121j ... seg000:75F1 xor ax, ax seg000:75F3 stosb seg000:75F4 seg000:75F4 arg810: ; CODE XREF: _setargv+106j seg000:75F4 ; _setargv+10Aj seg000:75F4 push ss seg000:75F5 pop ds seg000:75F6 assume ds:DGROUP seg000:75F6 mov word ptr [bx], 0 seg000:75FA jmp retadr seg000:75FA _setargv endp seg000:75FA seg000:75FE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:75FE seg000:75FE _dosret0: seg000:75FE jb short DOSerror seg000:7600 seg000:7600 ret_0: ; CODE XREF: seg000:_dosreturnj seg000:7600 xor ax, ax seg000:7602 mov sp, bp seg000:7604 pop bp seg000:7605 retn seg000:7606 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7606 seg000:7606 _dosreturn: seg000:7606 jnb short ret_0 seg000:7608 push ax seg000:7609 call maperror seg000:760C pop ax seg000:760D xor ah, ah seg000:760F mov sp, bp seg000:7611 pop bp seg000:7612 retn seg000:7613 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7613 ; START OF FUNCTION CHUNK FOR _write seg000:7613 seg000:7613 _dosretax: ; CODE XREF: _lseek:errexitj seg000:7613 ; _write:to_dosretaxj ... seg000:7613 jnb short loc_761C seg000:7615 seg000:7615 DOSerror: ; CODE XREF: seg000:_dosret0j seg000:7615 call maperror seg000:7618 mov ax, -1 seg000:761B cwd seg000:761C seg000:761C loc_761C: ; CODE XREF: _write:_dosretaxj seg000:761C mov sp, bp seg000:761E pop bp seg000:761F retn seg000:761F ; END OF FUNCTION CHUNK FOR _write seg000:7620 seg000:7620 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7620 seg000:7620 seg000:7620 _maperror proc near ; CODE XREF: int86:int86_dos_func_errp seg000:7620 ; int86x:int86x_dos_func_errp ... seg000:7620 xor ah, ah seg000:7622 call maperror seg000:7625 retn seg000:7625 _maperror endp seg000:7625 seg000:7626 seg000:7626 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7626 seg000:7626 seg000:7626 maperror proc near ; CODE XREF: seg000:7609p seg000:7626 ; _write:DOSerrorp ... seg000:7626 mov byte ptr _doserrno, al seg000:7629 or ah, ah seg000:762B jnz short mapover seg000:762D cmp _dosvermajor, 3 seg000:7632 jb short chk2 seg000:7634 cmp al, 22h seg000:7636 jnb short maxerr2 seg000:7638 cmp al, 20h seg000:763A jb short chk2 seg000:763C mov al, 5 seg000:763E jmp short inrange seg000:7640 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7640 seg000:7640 chk2: ; CODE XREF: maperror+Cj seg000:7640 ; maperror+14j seg000:7640 cmp al, 13h seg000:7642 jbe short inrange seg000:7644 seg000:7644 maxerr2: ; CODE XREF: maperror+10j seg000:7644 mov al, 13h seg000:7646 seg000:7646 inrange: ; CODE XREF: maperror+18j seg000:7646 ; maperror+1Cj seg000:7646 mov bx, offset err_conv_tbl seg000:7649 xlat seg000:764A seg000:764A mapsave: ; CODE XREF: maperror+2Bj seg000:764A cbw seg000:764B mov errno, ax seg000:764E retn seg000:764F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:764F seg000:764F mapover: ; CODE XREF: maperror+5j seg000:764F mov al, ah seg000:7651 jmp short mapsave seg000:7651 maperror endp seg000:7651 seg000:7651 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7653 align 2 seg000:7654 seg000:7654 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7654 seg000:7654 ; Attributes: bp-based frame seg000:7654 seg000:7654 _flsbuf proc near ; CODE XREF: sprintf+48p seg000:7654 ; putc+19p seg000:7654 seg000:7654 _c_ = word ptr 4 seg000:7654 _strm_ = byte ptr 6 seg000:7654 seg000:7654 push bp seg000:7655 mov bp, sp seg000:7657 push si seg000:7658 push di seg000:7659 mov si, word ptr [bp+_strm_] seg000:765C mov al, [si+6] seg000:765F test al, 82h seg000:7661 jz short flsbuf_4 seg000:7663 test al, 40h seg000:7665 jnz short flsbuf_4 seg000:7667 mov word ptr [si+2], 0 seg000:766C test al, 1 seg000:766E jz short flsbuf_1 seg000:7670 test al, 10h seg000:7672 jz short flsbuf_4 seg000:7674 mov cx, [si+4] seg000:7677 mov [si], cx seg000:7679 and al, not 1 seg000:767B seg000:767B flsbuf_1: ; CODE XREF: _flsbuf+1Aj seg000:767B or al, 2 seg000:767D and al, not 10h seg000:767F mov [si+6], al seg000:7682 mov di, si seg000:7684 sub di, offset STDIN seg000:7688 add di, offset _iob2 seg000:768C xor bx, bx seg000:768E mov bl, [si+7] seg000:7691 test al, 8 seg000:7693 jnz short flsbuf_6 seg000:7695 test al, 4 seg000:7697 jnz short flsbuf_3 seg000:7699 test byte ptr [di], 1 seg000:769C jnz short flsbuf_6 seg000:769E cmp si, offset STDOUT seg000:76A2 jz short flsbuf_2 seg000:76A4 cmp si, offset STDERR seg000:76A8 jz short flsbuf_2 seg000:76AA cmp si, offset STDPRN seg000:76AE jnz short flsbuf_5 seg000:76B0 seg000:76B0 flsbuf_2: ; CODE XREF: _flsbuf+4Ej seg000:76B0 ; _flsbuf+54j seg000:76B0 test _osfile[bx], 40h seg000:76B5 jz short flsbuf_5 seg000:76B7 seg000:76B7 flsbuf_3: ; CODE XREF: _flsbuf+43j seg000:76B7 ; _flsbuf+8Bj seg000:76B7 mov cx, 1 seg000:76BA push cx seg000:76BB lea di, [bp+_c_] seg000:76BE push di seg000:76BF push bx seg000:76C0 call _write seg000:76C3 add sp, 6 seg000:76C6 mov cx, 1 seg000:76C9 jmp short flsbuf_8 seg000:76CB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:76CB seg000:76CB flsbuf_4: ; CODE XREF: _flsbuf+Dj seg000:76CB ; _flsbuf+11j ... seg000:76CB mov ax, -1 seg000:76CE or byte ptr [si+6], 20h seg000:76D2 jmp short flsbuf_10 seg000:76D4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:76D4 seg000:76D4 flsbuf_5: ; CODE XREF: _flsbuf+5Aj seg000:76D4 ; _flsbuf+61j seg000:76D4 push bx seg000:76D5 push si seg000:76D6 call _getbuf seg000:76D9 pop bx seg000:76DA pop bx seg000:76DB test byte ptr [si+6], 8 seg000:76DF jz short flsbuf_3 seg000:76E1 seg000:76E1 flsbuf_6: ; CODE XREF: _flsbuf+3Fj seg000:76E1 ; _flsbuf+48j seg000:76E1 mov cx, [si] seg000:76E3 mov dx, [si+4] seg000:76E6 sub cx, dx seg000:76E8 inc dx seg000:76E9 mov [si], dx seg000:76EB mov dx, [di+2] seg000:76EE dec dx seg000:76EF mov [si+2], dx seg000:76F2 jcxz short flsbuf_9 seg000:76F4 push cx seg000:76F5 push cx seg000:76F6 push word ptr [si+4] seg000:76F9 push bx seg000:76FA call _write seg000:76FD add sp, 6 seg000:7700 pop cx seg000:7701 seg000:7701 flsbuf_7: ; CODE XREF: _flsbuf+C7j seg000:7701 ; _flsbuf+DAj seg000:7701 mov di, [si+4] seg000:7704 mov dx, [bp+_c_] seg000:7707 mov [di], dl seg000:7709 seg000:7709 flsbuf_8: ; CODE XREF: _flsbuf+75j seg000:7709 cmp ax, cx seg000:770B jnz short flsbuf_4 seg000:770D xor ax, ax seg000:770F mov al, byte ptr [bp+_c_] seg000:7712 jmp short flsbuf_10 seg000:7714 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7714 seg000:7714 flsbuf_9: ; CODE XREF: _flsbuf+9Ej seg000:7714 xor ax, ax seg000:7716 test _osfile[bx], 20h seg000:771B jz short flsbuf_7 seg000:771D mov cx, 2 seg000:7720 push cx seg000:7721 push ax seg000:7722 push ax seg000:7723 push bx seg000:7724 call _lseek seg000:7727 add sp, 8 seg000:772A xor ax, ax seg000:772C mov cx, ax seg000:772E jmp short flsbuf_7 seg000:7730 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7730 seg000:7730 flsbuf_10: ; CODE XREF: _flsbuf+7Ej seg000:7730 ; _flsbuf+BEj seg000:7730 pop di seg000:7731 pop si seg000:7732 pop bp seg000:7733 retn seg000:7733 _flsbuf endp seg000:7733 seg000:7733 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7734 jumptable dw offset normal_state ; DATA XREF: _output+51r seg000:7736 dw offset percent_state seg000:7738 dw offset flag_state seg000:773A dw offset width_state seg000:773C dw offset dot_state seg000:773E dw offset precis_state seg000:7740 dw offset size_state seg000:7742 dw offset type_state seg000:7744 seg000:7744 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7744 seg000:7744 ; Attributes: bp-based frame seg000:7744 seg000:7744 _output proc near ; CODE XREF: sprintf+28p seg000:7744 seg000:7744 var_171 = word ptr -171h seg000:7744 var_16E = word ptr -16Eh seg000:7744 var_169 = word ptr -169h seg000:7744 var_15 = word ptr -15h seg000:7744 capexp = word ptr -12h seg000:7744 prfxlen = word ptr -10h seg000:7744 prefix = word ptr -0Eh seg000:7744 precision = word ptr -0Ch seg000:7744 fldwidth = word ptr -0Ah seg000:7744 charsout = word ptr -8 seg000:7744 radix = byte ptr -6 seg000:7744 state = byte ptr -5 seg000:7744 flags = word ptr -4 seg000:7744 char = byte ptr -2 seg000:7744 hexadd = byte ptr -1 seg000:7744 format = word ptr 6 seg000:7744 arglist = byte ptr 8 seg000:7744 seg000:7744 ; FUNCTION CHUNK AT seg000:7C13 SIZE 00000006 BYTES seg000:7744 seg000:7744 push bp seg000:7745 mov bp, sp seg000:7747 mov ax, 171h seg000:774A call _chkstk seg000:774D push si seg000:774E push di seg000:774F xor ax, ax seg000:7751 mov [bp+charsout], ax seg000:7754 mov [bp+state], al seg000:7757 seg000:7757 loopagain: ; CODE XREF: _output+5Fj seg000:7757 ; _output+73j ... seg000:7757 mov si, [bp+format] seg000:775A lodsb seg000:775B mov [bp+format], si seg000:775E mov [bp+char], al seg000:7761 or al, al seg000:7763 jz short output_done seg000:7765 cmp [bp+charsout], 0 seg000:7769 jge short output_loopok seg000:776B seg000:776B output_done: ; CODE XREF: _output+1Fj seg000:776B mov ax, [bp+charsout] seg000:776E jmp loc_7C13 seg000:7771 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7771 seg000:7771 output_loopok: ; CODE XREF: _output+25j seg000:7771 mov bx, offset lookuptable seg000:7774 sub al, 20h seg000:7776 cmp al, 'X' seg000:7778 ja short output_main1 seg000:777A xlat seg000:777B and al, 0Fh seg000:777D jmp short output_main2 seg000:777F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:777F seg000:777F output_main1: ; CODE XREF: _output+34j seg000:777F mov al, 0 seg000:7781 seg000:7781 output_main2: ; CODE XREF: _output+39j seg000:7781 mov cl, 3 seg000:7783 shl al, cl seg000:7785 add al, [bp+state] seg000:7788 xlat seg000:7789 inc cl seg000:778B shr al, cl seg000:778D mov [bp+state], al seg000:7790 cbw seg000:7791 mov bx, ax seg000:7793 shl bx, 1 seg000:7795 jmp cs:jumptable[bx] seg000:779A seg000:779A normal_state: ; DATA XREF: seg000:jumptableo seg000:779A mov dl, [bp+char] seg000:779D mov cx, 1 seg000:77A0 call outpad seg000:77A3 jmp short loopagain seg000:77A5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:77A5 seg000:77A5 percent_state: ; CODE XREF: _output+51j seg000:77A5 ; DATA XREF: seg000:7736o seg000:77A5 xor ax, ax seg000:77A7 mov [bp+prfxlen], ax seg000:77AA mov [bp+fldwidth], ax seg000:77AD mov [bp+capexp], ax seg000:77B0 mov [bp+flags], ax seg000:77B3 dec ax seg000:77B4 mov [bp+precision], ax seg000:77B7 jmp short loopagain seg000:77B9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:77B9 seg000:77B9 flag_state: ; CODE XREF: _output+51j seg000:77B9 ; DATA XREF: seg000:7738o seg000:77B9 mov al, [bp+char] seg000:77BC cmp al, '-' seg000:77BE jnz short fl1 seg000:77C0 seg000:77C0 doprnt_case_minus: seg000:77C0 or byte ptr [bp+flags], 4 seg000:77C4 jmp short loopagain seg000:77C6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:77C6 seg000:77C6 fl1: ; CODE XREF: _output+7Aj seg000:77C6 cmp al, '+' seg000:77C8 jnz short fl2 seg000:77CA seg000:77CA doprnt_case_plus: seg000:77CA or byte ptr [bp+flags], 1 seg000:77CE jmp short loopagain seg000:77D0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:77D0 seg000:77D0 fl2: ; CODE XREF: _output+84j seg000:77D0 cmp al, ' ' seg000:77D2 jnz short fl3 seg000:77D4 seg000:77D4 doprnt_case_space: seg000:77D4 or byte ptr [bp+flags], 2 seg000:77D8 jmp loopagain seg000:77DB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:77DB seg000:77DB fl3: ; CODE XREF: _output+8Ej seg000:77DB cmp al, '#' seg000:77DD jnz short fl4 seg000:77DF seg000:77DF doprnt_case_sharp: seg000:77DF or byte ptr [bp+flags], 80h seg000:77E3 jmp loopagain seg000:77E6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:77E6 seg000:77E6 fl4: ; CODE XREF: _output+99j seg000:77E6 or byte ptr [bp+flags], 8 seg000:77EA jmp loopagain seg000:77ED ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:77ED seg000:77ED width_state: ; CODE XREF: _output+51j seg000:77ED ; DATA XREF: seg000:773Ao seg000:77ED mov cl, [bp+char] seg000:77F0 cmp cl, '*' seg000:77F3 jnz short widthdigit seg000:77F5 call getwordarg seg000:77F8 or ax, ax seg000:77FA jns short storewidth seg000:77FC neg ax seg000:77FE or byte ptr [bp+flags], 4 seg000:7802 jmp short storewidth seg000:7804 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7804 seg000:7804 widthdigit: ; CODE XREF: _output+AFj seg000:7804 sub cl, '0' seg000:7807 xor ch, ch seg000:7809 mov ax, [bp+fldwidth] seg000:780C mov bx, 10 seg000:780F mul bx seg000:7811 add ax, cx seg000:7813 seg000:7813 storewidth: ; CODE XREF: _output+B6j seg000:7813 ; _output+BEj seg000:7813 mov [bp+fldwidth], ax seg000:7816 jmp loopagain seg000:7819 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7819 seg000:7819 dot_state: ; CODE XREF: _output+51j seg000:7819 ; DATA XREF: seg000:773Co seg000:7819 mov [bp+precision], 0 seg000:781E jmp loopagain seg000:7821 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7821 seg000:7821 precis_state: ; CODE XREF: _output+51j seg000:7821 ; DATA XREF: seg000:773Eo seg000:7821 mov cl, [bp+char] seg000:7824 cmp cl, '*' seg000:7827 jnz short precisdigit seg000:7829 call getwordarg seg000:782C or ax, ax seg000:782E jns short storeprecis seg000:7830 mov ax, 0FFFFh seg000:7833 jmp short storeprecis seg000:7835 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7835 seg000:7835 precisdigit: ; CODE XREF: _output+E3j seg000:7835 sub cl, '0' seg000:7838 xor ch, ch seg000:783A mov ax, [bp+precision] seg000:783D mov bx, 10 seg000:7840 mul bx seg000:7842 add ax, cx seg000:7844 seg000:7844 storeprecis: ; CODE XREF: _output+EAj seg000:7844 ; _output+EFj seg000:7844 mov [bp+precision], ax seg000:7847 jmp loopagain seg000:784A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:784A seg000:784A size_state: ; CODE XREF: _output+51j seg000:784A ; DATA XREF: seg000:7740o seg000:784A mov al, [bp+char] seg000:784D cmp al, 'l' seg000:784F jnz short sz1 seg000:7851 or byte ptr [bp+flags], 10h seg000:7855 jmp short szret seg000:7857 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7857 seg000:7857 sz1: ; CODE XREF: _output+10Bj seg000:7857 cmp al, 'F' seg000:7859 jnz short sz2 seg000:785B or byte ptr [bp+flags], 20h seg000:785F jmp short szret seg000:7861 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7861 seg000:7861 sz2: ; CODE XREF: _output+115j seg000:7861 cmp al, 'N' seg000:7863 jnz short sz3 seg000:7865 or byte ptr [bp+flags+1], 10h seg000:7869 jmp short szret seg000:786B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:786B seg000:786B sz3: ; CODE XREF: _output+11Fj seg000:786B cmp al, 'L' seg000:786D jnz short sz4 seg000:786F or byte ptr [bp+flags+1], 4 seg000:7873 jmp short szret seg000:7875 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7875 seg000:7875 sz4: ; CODE XREF: _output+129j seg000:7875 or byte ptr [bp+flags+1], 8 seg000:7879 seg000:7879 szret: ; CODE XREF: _output+111j seg000:7879 ; _output+11Bj ... seg000:7879 jmp loopagain seg000:787C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:787C seg000:787C type_state: ; CODE XREF: _output+51j seg000:787C ; DATA XREF: seg000:7742o seg000:787C mov al, [bp+char] seg000:787F cmp al, 'd' seg000:7881 jnz short t1 seg000:7883 jmp doprnt_case_i_d seg000:7886 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7886 seg000:7886 t1: ; CODE XREF: _output+13Dj seg000:7886 cmp al, 'i' seg000:7888 jnz short t2 seg000:788A jmp doprnt_case_i_d seg000:788D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:788D seg000:788D t2: ; CODE XREF: _output+144j seg000:788D cmp al, 'u' seg000:788F jnz short t3 seg000:7891 jmp type_u seg000:7894 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7894 seg000:7894 t3: ; CODE XREF: _output+14Bj seg000:7894 cmp al, 'X' seg000:7896 jnz short t4 seg000:7898 jmp type_bigx seg000:789B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:789B seg000:789B t4: ; CODE XREF: _output+152j seg000:789B cmp al, 'x' seg000:789D jnz short t5 seg000:789F jmp type_x seg000:78A2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:78A2 seg000:78A2 t5: ; CODE XREF: _output+159j seg000:78A2 cmp al, 'o' seg000:78A4 jnz short t6 seg000:78A6 jmp type_o seg000:78A9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:78A9 seg000:78A9 t6: ; CODE XREF: _output+160j seg000:78A9 cmp al, 'c' seg000:78AB jz short type_c seg000:78AD cmp al, 's' seg000:78AF jz short type_s seg000:78B1 cmp al, 'n' seg000:78B3 jz short type_n seg000:78B5 cmp al, 'p' seg000:78B7 jz short type_p seg000:78B9 cmp al, 'E' seg000:78BB jz short bigeg seg000:78BD cmp al, 'G' seg000:78BF jz short bigeg seg000:78C1 jmp type_efg seg000:78C4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:78C4 seg000:78C4 bigeg: ; CODE XREF: _output+177j seg000:78C4 ; _output+17Bj seg000:78C4 jmp type_bigeg seg000:78C7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:78C7 seg000:78C7 type_c: ; CODE XREF: _output+167j seg000:78C7 call getwordarg seg000:78CA lea di, [bp+var_171] seg000:78CE push ss seg000:78CF pop es seg000:78D0 stosb seg000:78D1 dec di seg000:78D2 mov cx, 1 seg000:78D5 jmp justify seg000:78D8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:78D8 seg000:78D8 type_s: ; CODE XREF: _output+16Bj seg000:78D8 call getptrarg seg000:78DB or di, di seg000:78DD jnz short s2 seg000:78DF mov ax, es seg000:78E1 or ax, ax seg000:78E3 jnz short s2 seg000:78E5 push ds seg000:78E6 pop es seg000:78E7 mov di, offset nullstring ; "(null)" seg000:78EA mov cx, nullstrlen seg000:78EE jmp justify seg000:78F1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:78F1 seg000:78F1 s2: ; CODE XREF: _output+199j seg000:78F1 ; _output+19Fj seg000:78F1 push di seg000:78F2 mov cx, [bp+precision] seg000:78F5 jcxz short s3 seg000:78F7 xor al, al seg000:78F9 repne scasb seg000:78FB jnz short s3 seg000:78FD dec di seg000:78FE seg000:78FE s3: ; CODE XREF: _output+1B1j seg000:78FE ; _output+1B7j seg000:78FE pop cx seg000:78FF sub di, cx seg000:7901 xchg cx, di seg000:7903 jmp justify seg000:7906 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7906 seg000:7906 type_n: ; CODE XREF: _output+16Fj seg000:7906 call getptrarg seg000:7909 mov ax, [bp+charsout] seg000:790C stosw seg000:790D test byte ptr [bp+flags], 10h seg000:7911 jz short n1 seg000:7913 xor ax, ax seg000:7915 stosw seg000:7916 seg000:7916 n1: ; CODE XREF: _output+1CDj seg000:7916 jmp loopagain seg000:7919 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7919 seg000:7919 type_p: ; CODE XREF: _output+173j seg000:7919 test byte ptr [bp+flags], 30h seg000:791D jnz short p4byte seg000:791F call getwordarg seg000:7922 jmp short pshortfmt seg000:7924 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7924 seg000:7924 p4byte: ; CODE XREF: _output+1D9j seg000:7924 call getlongarg seg000:7927 test byte ptr [bp+flags+1], 18h seg000:792B jnz short pshortfmt seg000:792D mov [bp+hexadd], 7 seg000:7931 mov cx, 16 seg000:7934 push ss seg000:7935 pop es seg000:7936 push dx seg000:7937 xor dx, dx seg000:7939 lea di, [bp+var_169] seg000:793D mov si, 4 seg000:7940 call convert seg000:7943 mov cx, 16 seg000:7946 lea di, [bp+var_16E] seg000:794A pop ax seg000:794B xor dx, dx seg000:794D mov si, 4 seg000:7950 call convert seg000:7953 mov byte ptr [bp+var_16E+1], ':' seg000:7958 mov cx, 9 seg000:795B jmp short p1 seg000:795D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:795D seg000:795D pshortfmt: ; CODE XREF: _output+1DEj seg000:795D ; _output+1E7j seg000:795D mov [bp+hexadd], 7 seg000:7961 mov cx, 16 seg000:7964 push ss seg000:7965 pop es seg000:7966 xor dx, dx seg000:7968 lea di, [bp+var_16E] seg000:796C mov si, 4 seg000:796F call convert seg000:7972 mov cx, 4 seg000:7975 seg000:7975 p1: ; CODE XREF: _output+217j seg000:7975 lea di, [bp+var_171] seg000:7979 jmp justify seg000:797C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:797C seg000:797C type_bigeg: ; CODE XREF: _output:bigegj seg000:797C inc [bp+capexp] seg000:797F seg000:797F type_efg: ; CODE XREF: _output+17Dj seg000:797F or byte ptr [bp+flags], 40h seg000:7983 mov al, [bp+char] seg000:7986 or al, 20h seg000:7988 cbw seg000:7989 mov si, ax seg000:798B cmp [bp+precision], 0 seg000:798F jg short f2 seg000:7991 jz short f1 seg000:7993 mov [bp+precision], 6 seg000:7998 jmp short f2 seg000:799A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:799A seg000:799A f1: ; CODE XREF: _output+24Dj seg000:799A cmp ax, 'g' seg000:799D jnz short f2 seg000:799F mov [bp+precision], 1 seg000:79A4 seg000:79A4 f2: ; CODE XREF: _output+24Bj seg000:79A4 ; _output+254j ... seg000:79A4 lea di, [bp+var_171] seg000:79A8 push [bp+capexp] seg000:79AB push [bp+precision] seg000:79AE push si seg000:79AF push di seg000:79B0 push word ptr [bp+arglist] seg000:79B3 test byte ptr [bp+flags+1], 4 seg000:79B7 jz short f3 seg000:79B9 call _cldcvt seg000:79BD add word ptr [bp+arglist], 10 seg000:79C1 jmp short f4 seg000:79C3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:79C3 seg000:79C3 f3: ; CODE XREF: _output+273j seg000:79C3 call _cfltcvt seg000:79C7 add word ptr [bp+arglist], 8 seg000:79CB seg000:79CB f4: ; CODE XREF: _output+27Dj seg000:79CB add sp, 10 seg000:79CE test byte ptr [bp+flags], 80h seg000:79D2 jz short f5 seg000:79D4 cmp [bp+precision], 0 seg000:79D8 jnz short f5 seg000:79DA push di seg000:79DB call _forcdecpt seg000:79DF add sp, 2 seg000:79E2 seg000:79E2 f5: ; CODE XREF: _output+28Ej seg000:79E2 ; _output+294j seg000:79E2 cmp si, 'g' seg000:79E5 jnz short f6 seg000:79E7 test [bp+flags], 80h seg000:79EC jnz short f6 seg000:79EE push di seg000:79EF call _cropzeros seg000:79F3 add sp, 2 seg000:79F6 seg000:79F6 f6: ; CODE XREF: _output+2A1j seg000:79F6 ; _output+2A8j seg000:79F6 push ss seg000:79F7 pop es seg000:79F8 cmp byte ptr es:[di], '-' seg000:79FC jnz short f7 seg000:79FE inc di seg000:79FF or byte ptr [bp+flags+1], 1 seg000:7A03 seg000:7A03 f7: ; CODE XREF: _output+2B8j seg000:7A03 mov cx, 0FFFFh seg000:7A06 push di seg000:7A07 mov al, 0 seg000:7A09 repne scasb seg000:7A0B dec di seg000:7A0C pop cx seg000:7A0D sub di, cx seg000:7A0F xchg cx, di seg000:7A11 jmp justify seg000:7A14 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7A14 seg000:7A14 doprnt_case_i_d: ; CODE XREF: _output+13Fj seg000:7A14 ; _output+146j seg000:7A14 or byte ptr [bp+flags], 40h seg000:7A18 seg000:7A18 type_u: ; CODE XREF: _output+14Dj seg000:7A18 mov [bp+radix], 10 seg000:7A1C jmp short int_out seg000:7A1E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7A1E seg000:7A1E type_bigx: ; CODE XREF: _output+154j seg000:7A1E mov [bp+hexadd], 7 seg000:7A22 jmp short dohex seg000:7A24 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7A24 seg000:7A24 type_x: ; CODE XREF: _output+15Bj seg000:7A24 mov [bp+hexadd], 27h seg000:7A28 seg000:7A28 dohex: ; CODE XREF: _output+2DEj seg000:7A28 test byte ptr [bp+flags], 80h seg000:7A2C jz short hex1 seg000:7A2E mov [bp+prfxlen], 2 seg000:7A33 mov byte ptr [bp+prefix], '0' seg000:7A37 mov dl, 51h seg000:7A39 add dl, [bp+hexadd] seg000:7A3C mov byte ptr [bp+prefix+1], dl seg000:7A3F seg000:7A3F hex1: ; CODE XREF: _output+2E8j seg000:7A3F mov [bp+radix], 16 seg000:7A43 jmp short int_out seg000:7A45 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7A45 seg000:7A45 type_o: ; CODE XREF: _output+162j seg000:7A45 test byte ptr [bp+flags], 80h seg000:7A49 jz short oct1 seg000:7A4B or byte ptr [bp+flags+1], 2 seg000:7A4F seg000:7A4F oct1: ; CODE XREF: _output+305j seg000:7A4F mov [bp+radix], 8 seg000:7A53 seg000:7A53 int_out: ; CODE XREF: _output+2D8j seg000:7A53 ; _output+2FFj seg000:7A53 test byte ptr [bp+flags], 10h seg000:7A57 jz short int1 seg000:7A59 call getlongarg seg000:7A5C jmp short int3 seg000:7A5E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7A5E seg000:7A5E int1: ; CODE XREF: _output+313j seg000:7A5E call getwordarg seg000:7A61 test byte ptr [bp+flags], 40h seg000:7A65 jz short int2 seg000:7A67 cwd seg000:7A68 jmp short int3 seg000:7A6A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7A6A seg000:7A6A int2: ; CODE XREF: _output+321j seg000:7A6A xor dx, dx seg000:7A6C seg000:7A6C int3: ; CODE XREF: _output+318j seg000:7A6C ; _output+324j seg000:7A6C test byte ptr [bp+flags], 40h seg000:7A70 jz short int4 seg000:7A72 or dx, dx seg000:7A74 jge short int4 seg000:7A76 or byte ptr [bp+flags+1], 1 seg000:7A7A neg ax seg000:7A7C adc dx, 0 seg000:7A7F neg dx seg000:7A81 seg000:7A81 int4: ; CODE XREF: _output+32Cj seg000:7A81 ; _output+330j seg000:7A81 cmp [bp+precision], 0 seg000:7A85 jge short int5 seg000:7A87 mov [bp+precision], 1 seg000:7A8C jmp short int6 seg000:7A8E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7A8E seg000:7A8E int5: ; CODE XREF: _output+341j seg000:7A8E and byte ptr [bp+flags], 0F7h seg000:7A92 seg000:7A92 int6: ; CODE XREF: _output+348j seg000:7A92 mov bx, ax seg000:7A94 or bx, dx seg000:7A96 jnz short int7 seg000:7A98 mov [bp+prfxlen], 0 seg000:7A9D seg000:7A9D int7: ; CODE XREF: _output+352j seg000:7A9D lea di, [bp+var_15] seg000:7AA0 push ss seg000:7AA1 pop es seg000:7AA2 mov cl, [bp+radix] seg000:7AA5 xor ch, ch seg000:7AA7 mov si, [bp+precision] seg000:7AAA call convert seg000:7AAD test byte ptr [bp+flags+1], 2 seg000:7AB1 jz short int8 seg000:7AB3 jcxz short addzero seg000:7AB5 cmp byte ptr es:[di], '0' seg000:7AB9 jz short int8 seg000:7ABB seg000:7ABB addzero: ; CODE XREF: _output+36Fj seg000:7ABB dec di seg000:7ABC mov byte ptr es:[di], '0' seg000:7AC0 inc cx seg000:7AC1 seg000:7AC1 int8: ; CODE XREF: _output+36Dj seg000:7AC1 ; _output+375j seg000:7AC1 jmp short $+2 seg000:7AC3 seg000:7AC3 justify: ; CODE XREF: _output+191j seg000:7AC3 ; _output+1AAj ... seg000:7AC3 test byte ptr [bp+flags], 40h seg000:7AC7 jz short just3 seg000:7AC9 test byte ptr [bp+flags+1], 1 seg000:7ACD jz short just1 seg000:7ACF mov byte ptr [bp+prefix], '-' seg000:7AD3 mov [bp+prfxlen], 1 seg000:7AD8 jmp short just3 seg000:7ADA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7ADA seg000:7ADA just1: ; CODE XREF: _output+389j seg000:7ADA test byte ptr [bp+flags], 1 seg000:7ADE jz short just2 seg000:7AE0 mov byte ptr [bp+prefix], '+' seg000:7AE4 mov [bp+prfxlen], 1 seg000:7AE9 jmp short just3 seg000:7AEB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7AEB seg000:7AEB just2: ; CODE XREF: _output+39Aj seg000:7AEB test byte ptr [bp+flags], 2 seg000:7AEF jz short just3 seg000:7AF1 mov byte ptr [bp+prefix], ' ' seg000:7AF5 mov [bp+prfxlen], 1 seg000:7AFA seg000:7AFA just3: ; CODE XREF: _output+383j seg000:7AFA ; _output+394j ... seg000:7AFA mov ax, [bp+fldwidth] seg000:7AFD sub ax, cx seg000:7AFF sub ax, [bp+prfxlen] seg000:7B02 jge short just4 seg000:7B04 xor ax, ax seg000:7B06 seg000:7B06 just4: ; CODE XREF: _output+3BEj seg000:7B06 push es seg000:7B07 push di seg000:7B08 push cx seg000:7B09 test byte ptr [bp+flags], 0Ch seg000:7B0D jnz short just5 seg000:7B0F mov cx, ax seg000:7B11 mov dl, ' ' seg000:7B13 call outpad seg000:7B16 seg000:7B16 just5: ; CODE XREF: _output+3C9j seg000:7B16 push ax seg000:7B17 push ss seg000:7B18 pop es seg000:7B19 lea di, [bp+prefix] seg000:7B1C mov cx, [bp+prfxlen] seg000:7B1F call outch seg000:7B22 pop ax seg000:7B23 test byte ptr [bp+flags], 8 seg000:7B27 jz short just6 seg000:7B29 test byte ptr [bp+flags], 4 seg000:7B2D jnz short just6 seg000:7B2F mov cx, ax seg000:7B31 mov dl, '0' seg000:7B33 call outpad seg000:7B36 seg000:7B36 just6: ; CODE XREF: _output+3E3j seg000:7B36 ; _output+3E9j seg000:7B36 pop cx seg000:7B37 pop di seg000:7B38 pop es seg000:7B39 assume es:nothing seg000:7B39 push ax seg000:7B3A call outch seg000:7B3D pop ax seg000:7B3E test byte ptr [bp+flags], 4 seg000:7B42 jz short just7 seg000:7B44 mov cx, ax seg000:7B46 mov dl, ' ' seg000:7B48 call outpad seg000:7B4B seg000:7B4B just7: ; CODE XREF: _output+3FEj seg000:7B4B jmp loopagain seg000:7B4B _output endp seg000:7B4B seg000:7B4E seg000:7B4E ; --------------- S U B R O U T I N E --------------------------------------- seg000:7B4E seg000:7B4E seg000:7B4E getwordarg proc near ; CODE XREF: _output+B1p seg000:7B4E ; _output+E5p ... seg000:7B4E mov si, [bp+8] seg000:7B51 lodsw seg000:7B52 mov [bp+8], si seg000:7B55 retn seg000:7B55 getwordarg endp seg000:7B55 seg000:7B56 seg000:7B56 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7B56 seg000:7B56 seg000:7B56 getlongarg proc near ; CODE XREF: _output:p4bytep seg000:7B56 ; _output+315p ... seg000:7B56 mov si, [bp+8] seg000:7B59 lodsw seg000:7B5A mov dx, ax seg000:7B5C lodsw seg000:7B5D xchg ax, dx seg000:7B5E mov [bp+8], si seg000:7B61 retn seg000:7B61 getlongarg endp seg000:7B61 seg000:7B62 seg000:7B62 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7B62 seg000:7B62 seg000:7B62 getptrarg proc near ; CODE XREF: _output:type_sp seg000:7B62 ; _output:type_np seg000:7B62 test byte ptr [bp-4], 20h seg000:7B66 jz short rp1 seg000:7B68 call getlongarg seg000:7B6B mov es, dx seg000:7B6D mov di, ax seg000:7B6F retn seg000:7B70 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7B70 seg000:7B70 rp1: ; CODE XREF: getptrarg+4j seg000:7B70 call getwordarg seg000:7B73 mov di, ax seg000:7B75 or ax, ax seg000:7B77 jnz short rp2 seg000:7B79 mov es, ax seg000:7B7B retn seg000:7B7C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7B7C seg000:7B7C rp2: ; CODE XREF: getptrarg+15j seg000:7B7C push ds seg000:7B7D pop es seg000:7B7E assume es:DGROUP seg000:7B7E retn seg000:7B7E getptrarg endp seg000:7B7E seg000:7B7F seg000:7B7F ; --------------- S U B R O U T I N E --------------------------------------- seg000:7B7F seg000:7B7F seg000:7B7F putc proc near ; CODE XREF: outch+Cp seg000:7B7F ; outpad+Ap seg000:7B7F cbw seg000:7B80 push di seg000:7B81 mov bx, [bp+4] seg000:7B84 dec word ptr [bx+2] seg000:7B87 js short flush seg000:7B89 mov di, [bx] seg000:7B8B inc word ptr [bx] seg000:7B8D mov [di], al seg000:7B8F seg000:7B8F noerrret: ; CODE XREF: putc+25j seg000:7B8F xor ax, ax seg000:7B91 seg000:7B91 putcret: ; CODE XREF: putc+27j seg000:7B91 pop di seg000:7B92 retn seg000:7B93 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7B93 seg000:7B93 flush: ; CODE XREF: putc+8j seg000:7B93 push es seg000:7B94 push cx seg000:7B95 push dx seg000:7B96 push bx seg000:7B97 push ax seg000:7B98 call _flsbuf seg000:7B9B add sp, 4 seg000:7B9E pop dx seg000:7B9F pop cx seg000:7BA0 pop es seg000:7BA1 assume es:nothing seg000:7BA1 cmp ax, -1 seg000:7BA4 jnz short noerrret seg000:7BA6 jmp short putcret seg000:7BA6 putc endp seg000:7BA6 seg000:7BA8 seg000:7BA8 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7BA8 seg000:7BA8 seg000:7BA8 outch proc near ; CODE XREF: _output+3DBp seg000:7BA8 ; _output+3F6p seg000:7BA8 jcxz short outchret seg000:7BAA mov si, di seg000:7BAC add [bp-8], cx seg000:7BAF push di seg000:7BB0 xor di, di seg000:7BB2 seg000:7BB2 out1: ; CODE XREF: outch+11j seg000:7BB2 lods byte ptr es:[si] seg000:7BB4 call putc seg000:7BB7 or di, ax seg000:7BB9 loop out1 seg000:7BBB or di, di seg000:7BBD pop di seg000:7BBE jz short outchret seg000:7BC0 mov word ptr [bp-8], 0FFFFh seg000:7BC5 seg000:7BC5 outchret: ; CODE XREF: outchj seg000:7BC5 ; outch+16j seg000:7BC5 retn seg000:7BC5 outch endp seg000:7BC5 seg000:7BC6 seg000:7BC6 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7BC6 seg000:7BC6 seg000:7BC6 outpad proc near ; CODE XREF: _output+5Cp seg000:7BC6 ; _output+3CFp ... seg000:7BC6 jcxz short outpadret seg000:7BC8 add [bp-8], cx seg000:7BCB push di seg000:7BCC xor di, di seg000:7BCE seg000:7BCE outpad1: ; CODE XREF: outpad+Fj seg000:7BCE mov al, dl seg000:7BD0 call putc seg000:7BD3 or di, ax seg000:7BD5 loop outpad1 seg000:7BD7 or di, di seg000:7BD9 pop di seg000:7BDA jz short outpadret seg000:7BDC mov word ptr [bp-8], 0FFFFh seg000:7BE1 seg000:7BE1 outpadret: ; CODE XREF: outpadj seg000:7BE1 ; outpad+14j seg000:7BE1 retn seg000:7BE1 outpad endp seg000:7BE1 seg000:7BE2 seg000:7BE2 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7BE2 seg000:7BE2 seg000:7BE2 convert proc near ; CODE XREF: _output+1FCp seg000:7BE2 ; _output+20Cp ... seg000:7BE2 std seg000:7BE3 push di seg000:7BE4 xchg ax, bx seg000:7BE5 seg000:7BE5 conv1: ; CODE XREF: convert+29j seg000:7BE5 or si, si seg000:7BE7 jg short conv2 seg000:7BE9 or bx, bx seg000:7BEB jnz short conv2 seg000:7BED or dx, dx seg000:7BEF jnz short conv2 seg000:7BF1 jmp short conv4 seg000:7BF3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7BF3 seg000:7BF3 conv2: ; CODE XREF: convert+5j seg000:7BF3 ; convert+9j ... seg000:7BF3 xchg ax, dx seg000:7BF4 xor dx, dx seg000:7BF6 div cx seg000:7BF8 xchg ax, bx seg000:7BF9 div cx seg000:7BFB xchg ax, dx seg000:7BFC xchg dx, bx seg000:7BFE add al, '0' seg000:7C00 cmp al, '9' seg000:7C02 jbe short conv3 seg000:7C04 add al, [bp-1] seg000:7C07 seg000:7C07 conv3: ; CODE XREF: convert+20j seg000:7C07 stosb seg000:7C08 mov ax, dx seg000:7C0A dec si seg000:7C0B jmp short conv1 seg000:7C0D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C0D seg000:7C0D conv4: ; CODE XREF: convert+Fj seg000:7C0D pop cx seg000:7C0E sub cx, di seg000:7C10 inc di seg000:7C11 cld seg000:7C12 retn seg000:7C12 convert endp seg000:7C12 seg000:7C13 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C13 ; START OF FUNCTION CHUNK FOR _output seg000:7C13 seg000:7C13 loc_7C13: ; CODE XREF: _output+2Aj seg000:7C13 pop di seg000:7C14 pop si seg000:7C15 mov sp, bp seg000:7C17 pop bp seg000:7C18 retn seg000:7C18 ; END OF FUNCTION CHUNK FOR _output seg000:7C18 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C19 align 2 seg000:7C1A seg000:7C1A ; --------------- S U B R O U T I N E --------------------------------------- seg000:7C1A seg000:7C1A seg000:7C1A _chkstk proc near ; CODE XREF: _output+6p seg000:7C1A ; _write+AEp seg000:7C1A seg000:7C1A ; FUNCTION CHUNK AT seg000:6D72 SIZE 0000001F BYTES seg000:7C1A seg000:7C1A pop cx seg000:7C1B mov bx, sp seg000:7C1D sub bx, ax seg000:7C1F jb short OMerr seg000:7C21 cmp bx, end_of_bss seg000:7C25 jb short OMerr seg000:7C27 mov sp, bx seg000:7C29 jmp cx seg000:7C2B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C2B seg000:7C2B OMerr: ; CODE XREF: _chkstk+5j seg000:7C2B ; _chkstk+Bj seg000:7C2B push cx seg000:7C2C xor ax, ax seg000:7C2E jmp loc_6D72 seg000:7C2E _chkstk endp seg000:7C2E seg000:7C2E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C31 align 2 seg000:7C32 seg000:7C32 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7C32 seg000:7C32 ; Attributes: bp-based frame seg000:7C32 seg000:7C32 _getbuf proc near ; CODE XREF: _flsbuf+82p seg000:7C32 seg000:7C32 gb_stream = byte ptr 4 seg000:7C32 seg000:7C32 push bp seg000:7C33 mov bp, sp seg000:7C35 push si seg000:7C36 mov si, word ptr [bp+gb_stream] seg000:7C39 mov ax, 512 seg000:7C3C push ax seg000:7C3D call malloc seg000:7C40 pop cx seg000:7C41 mov bx, si seg000:7C43 sub bx, offset STDIN seg000:7C47 add bx, offset _iob2 seg000:7C4B or ax, ax seg000:7C4D jz short _singlechar seg000:7C4F or byte ptr [si+6], 8 seg000:7C53 mov word ptr [bx+2], 512 seg000:7C58 jmp short setfields seg000:7C5A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C5A seg000:7C5A _singlechar: ; CODE XREF: _getbuf+1Bj seg000:7C5A or byte ptr [si+6], 4 seg000:7C5E mov word ptr [bx+2], 1 seg000:7C63 lea ax, [bx+1] seg000:7C66 seg000:7C66 setfields: ; CODE XREF: _getbuf+26j seg000:7C66 mov [si], ax seg000:7C68 mov [si+4], ax seg000:7C6B mov word ptr [si+2], 0 seg000:7C70 pop si seg000:7C71 pop bp seg000:7C72 retn seg000:7C72 _getbuf endp seg000:7C72 seg000:7C72 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C73 align 2 seg000:7C74 seg000:7C74 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7C74 seg000:7C74 ; Attributes: bp-based frame seg000:7C74 seg000:7C74 _lseek proc near ; CODE XREF: _flsbuf+D0p seg000:7C74 seg000:7C74 loword = word ptr -4 seg000:7C74 hiword = word ptr -2 seg000:7C74 fh = word ptr 4 seg000:7C74 pos = word ptr 6 seg000:7C74 pos2 = word ptr 8 seg000:7C74 mthd = byte ptr 0Ah seg000:7C74 seg000:7C74 push bp seg000:7C75 mov bp, sp seg000:7C77 sub sp, 4 seg000:7C7A mov bx, [bp+fh] seg000:7C7D cmp bx, _nfile seg000:7C81 jb short handle_okay seg000:7C83 mov ax, 900h seg000:7C86 jmp short seterr seg000:7C88 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7C88 seg000:7C88 handle_okay: ; CODE XREF: _lseek+Dj seg000:7C88 test [bp+pos2], 8000h seg000:7C8D jz short doit seg000:7C8F cmp word ptr [bp+mthd], 0 seg000:7C93 jz short negative seg000:7C95 xor cx, cx seg000:7C97 mov dx, cx seg000:7C99 mov ax, 4201h seg000:7C9C int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) seg000:7C9C ; AL = method: offset from present location seg000:7C9E jb short errexit seg000:7CA0 test word ptr [bp+mthd], 2 seg000:7CA5 jnz short findeof seg000:7CA7 add ax, [bp+pos] seg000:7CAA adc dx, [bp+pos2] seg000:7CAD jns short doit seg000:7CAF seg000:7CAF negative: ; CODE XREF: _lseek+1Fj seg000:7CAF ; _lseek+61j seg000:7CAF mov ax, 1600h seg000:7CB2 seg000:7CB2 seterr: ; CODE XREF: _lseek+12j seg000:7CB2 stc seg000:7CB3 jmp short errexit seg000:7CB5 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7CB5 seg000:7CB5 findeof: ; CODE XREF: _lseek+31j seg000:7CB5 mov [bp+hiword], dx seg000:7CB8 mov [bp+loword], ax seg000:7CBB mov dx, cx seg000:7CBD mov ax, 4202h seg000:7CC0 int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) seg000:7CC0 ; AL = method: offset from end of file seg000:7CC2 add ax, [bp+pos] seg000:7CC5 adc dx, [bp+pos2] seg000:7CC8 jns short doit seg000:7CCA mov cx, [bp+hiword] seg000:7CCD mov dx, [bp+loword] seg000:7CD0 mov ax, 4200h seg000:7CD3 int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) seg000:7CD3 ; AL = method: offset from beginning of file seg000:7CD5 jmp short negative seg000:7CD7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7CD7 seg000:7CD7 doit: ; CODE XREF: _lseek+19j seg000:7CD7 ; _lseek+39j ... seg000:7CD7 mov dx, [bp+pos] seg000:7CDA mov cx, [bp+pos2] seg000:7CDD mov al, [bp+mthd] seg000:7CE0 mov ah, 42h seg000:7CE2 int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) seg000:7CE2 ; AL = method: seg000:7CE2 ; 0-from beginnig,1-from current,2-from end seg000:7CE4 jb short errexit seg000:7CE6 and _osfile[bx], not 2 seg000:7CEB seg000:7CEB errexit: ; CODE XREF: _lseek+2Aj seg000:7CEB ; _lseek+3Fj ... seg000:7CEB jmp _dosretax seg000:7CEB _lseek endp seg000:7CEB seg000:7CEE seg000:7CEE ; --------------- S U B R O U T I N E --------------------------------------- seg000:7CEE seg000:7CEE ; Attributes: bp-based frame seg000:7CEE seg000:7CEE _write proc near ; CODE XREF: _flsbuf+6Cp seg000:7CEE ; _flsbuf+A6p ... seg000:7CEE seg000:7CEE oldsp = word ptr -8 seg000:7CEE lfcnt = word ptr -4 seg000:7CEE outcnt = word ptr -2 seg000:7CEE fh = word ptr 4 seg000:7CEE buf = word ptr 6 seg000:7CEE cnt = byte ptr 8 seg000:7CEE seg000:7CEE ; FUNCTION CHUNK AT seg000:7613 SIZE 0000000D BYTES seg000:7CEE seg000:7CEE push bp seg000:7CEF mov bp, sp seg000:7CF1 sub sp, 8 seg000:7CF4 mov bx, [bp+fh] seg000:7CF7 cmp bx, _nfile seg000:7CFB jb short handle_okay seg000:7CFD mov ax, 900h seg000:7D00 stc seg000:7D01 seg000:7D01 to_dosretax: ; CODE XREF: _write+32j seg000:7D01 jmp _dosretax seg000:7D04 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7D04 seg000:7D04 handle_okay: ; CODE XREF: _write+Dj seg000:7D04 cmp _aDBswpflg, 0D6D6h seg000:7D0A jnz short chk_append seg000:7D0C call _aDBswpchk seg000:7D10 seg000:7D10 chk_append: ; CODE XREF: _write+1Cj seg000:7D10 test _osfile[bx], 20h seg000:7D15 jz short noseek1 seg000:7D17 mov ax, 4202h seg000:7D1A xor cx, cx seg000:7D1C mov dx, cx seg000:7D1E int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) seg000:7D1E ; AL = method: offset from end of file seg000:7D20 jb short to_dosretax seg000:7D22 seg000:7D22 noseek1: ; CODE XREF: _write+27j seg000:7D22 test _osfile[bx], 80h seg000:7D27 jz short writebin0 seg000:7D29 mov dx, [bp+buf] seg000:7D2C push ds seg000:7D2D pop es seg000:7D2E assume es:DGROUP seg000:7D2E xor ax, ax seg000:7D30 mov [bp+outcnt], ax seg000:7D33 mov [bp+lfcnt], ax seg000:7D36 cld seg000:7D37 push di seg000:7D38 push si seg000:7D39 mov di, dx seg000:7D3B mov si, dx seg000:7D3D mov [bp+oldsp], sp seg000:7D40 mov cx, word ptr [bp+cnt] seg000:7D43 jcxz short j_writedone seg000:7D45 mov al, 0Ah seg000:7D47 repne scasb seg000:7D49 jnz short writebin1 seg000:7D4B call _stackavail seg000:7D4E cmp ax, 168 seg000:7D51 jbe short stackerr seg000:7D53 sub sp, 2 seg000:7D56 mov bx, sp seg000:7D58 mov dx, 512 seg000:7D5B cmp ax, 552 seg000:7D5E jnb short lfbuff seg000:7D60 mov dx, 128 seg000:7D63 seg000:7D63 lfbuff: ; CODE XREF: _write+70j seg000:7D63 sub sp, dx seg000:7D65 mov dx, sp seg000:7D67 mov di, dx seg000:7D69 push ss seg000:7D6A pop es seg000:7D6B mov cx, word ptr [bp+cnt] seg000:7D6E seg000:7D6E lfloop: ; CODE XREF: _write+8Aj seg000:7D6E lodsb seg000:7D6F cmp al, 0Ah seg000:7D71 jz short foundlf seg000:7D73 seg000:7D73 lfloop1: ; CODE XREF: _write+A0j seg000:7D73 cmp di, bx seg000:7D75 jz short wrlfbuff1 seg000:7D77 seg000:7D77 storechr: ; CODE XREF: _write+A5j seg000:7D77 stosb seg000:7D78 loop lfloop seg000:7D7A call wrlfbuff seg000:7D7D seg000:7D7D j_writedone: ; CODE XREF: _write+55j seg000:7D7D jmp short writedone seg000:7D7F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7D7F seg000:7D7F foundlf: ; CODE XREF: _write+83j seg000:7D7F mov al, 0Dh seg000:7D81 cmp di, bx seg000:7D83 jnz short foundlf1 seg000:7D85 call wrlfbuff seg000:7D88 seg000:7D88 foundlf1: ; CODE XREF: _write+95j seg000:7D88 stosb seg000:7D89 mov al, 0Ah seg000:7D8B inc [bp+lfcnt] seg000:7D8E jmp short lfloop1 seg000:7D90 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7D90 seg000:7D90 wrlfbuff1: ; CODE XREF: _write+87j seg000:7D90 call wrlfbuff seg000:7D93 jmp short storechr seg000:7D95 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7D95 seg000:7D95 writebin1: ; CODE XREF: _write+5Bj seg000:7D95 pop si seg000:7D96 pop di seg000:7D97 seg000:7D97 writebin0: ; CODE XREF: _write+39j seg000:7D97 jmp short writebin seg000:7D99 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7D99 seg000:7D99 stackerr: ; CODE XREF: _write+63j seg000:7D99 mov ax, 0FFFCh seg000:7D9C call _chkstk seg000:7D9F seg000:7D9F wrlfbuff: ; CODE XREF: _write+8Cp seg000:7D9F ; _write+97p ... seg000:7D9F push ax seg000:7DA0 push bx seg000:7DA1 push cx seg000:7DA2 mov cx, di seg000:7DA4 sub cx, dx seg000:7DA6 jcxz short wrlfdone seg000:7DA8 push cx seg000:7DA9 mov bx, [bp+fh] seg000:7DAC mov ah, 40h seg000:7DAE int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE seg000:7DAE ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer seg000:7DB0 pop cx seg000:7DB1 jb short wrlferror seg000:7DB3 add [bp+outcnt], ax seg000:7DB6 cmp cx, ax seg000:7DB8 ja short wrlferror seg000:7DBA seg000:7DBA wrlfdone: ; CODE XREF: _write+B8j seg000:7DBA pop cx seg000:7DBB pop bx seg000:7DBC pop ax seg000:7DBD mov di, dx seg000:7DBF retn seg000:7DC0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7DC0 seg000:7DC0 wrlferror: ; CODE XREF: _write+C3j seg000:7DC0 ; _write+CAj seg000:7DC0 lahf seg000:7DC1 add sp, 8 seg000:7DC4 cmp [bp+outcnt], 0 seg000:7DC8 jnz short writedone seg000:7DCA sahf seg000:7DCB jnb short wrote0 seg000:7DCD mov ah, 9 seg000:7DCF jmp short writeerror seg000:7DD1 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7DD1 seg000:7DD1 wrote0: ; CODE XREF: _write+DDj seg000:7DD1 test _osfile[bx], 40h seg000:7DD6 jz short wrlferr1 seg000:7DD8 mov bx, [bp+buf] seg000:7DDB cmp byte ptr [bx], 1Ah seg000:7DDE jnz short wrlferr1 seg000:7DE0 clc seg000:7DE1 jmp short writeerror seg000:7DE3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7DE3 seg000:7DE3 wrlferr1: ; CODE XREF: _write+E8j seg000:7DE3 ; _write+F0j seg000:7DE3 stc seg000:7DE4 mov ax, 1C00h seg000:7DE7 jmp short writeerror seg000:7DE9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7DE9 seg000:7DE9 writedone: ; CODE XREF: _write:j_writedonej seg000:7DE9 ; _write+DAj seg000:7DE9 mov ax, [bp+outcnt] seg000:7DEC sub ax, [bp+lfcnt] seg000:7DEF seg000:7DEF writeerror: ; CODE XREF: _write+E1j seg000:7DEF ; _write+F3j ... seg000:7DEF mov sp, [bp+oldsp] seg000:7DF2 pop si seg000:7DF3 pop di seg000:7DF4 seg000:7DF4 justret: ; CODE XREF: _write+120j seg000:7DF4 ; _write+124j ... seg000:7DF4 jmp _dosretax seg000:7DF7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7DF7 seg000:7DF7 writebin: ; CODE XREF: _write:writebin0j seg000:7DF7 mov cx, word ptr [bp+cnt] seg000:7DFA or cx, cx seg000:7DFC jnz short writegoon seg000:7DFE mov ax, cx seg000:7E00 jmp _dosretax seg000:7E03 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7E03 seg000:7E03 writegoon: ; CODE XREF: _write+10Ej seg000:7E03 mov dx, [bp+buf] seg000:7E06 mov ah, 40h seg000:7E08 int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE seg000:7E08 ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer seg000:7E0A jnb short writeok4 seg000:7E0C mov ah, 9 seg000:7E0E jmp short justret seg000:7E10 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7E10 seg000:7E10 writeok4: ; CODE XREF: _write+11Cj seg000:7E10 or ax, ax seg000:7E12 jnz short justret seg000:7E14 test _osfile[bx], 40h seg000:7E19 jz short notdev seg000:7E1B mov bx, dx seg000:7E1D cmp byte ptr [bx], 1Ah seg000:7E20 jnz short notdev seg000:7E22 clc seg000:7E23 jmp short justret seg000:7E25 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7E25 seg000:7E25 notdev: ; CODE XREF: _write+12Bj seg000:7E25 ; _write+132j seg000:7E25 stc seg000:7E26 mov ax, 1C00h seg000:7E29 jmp short justret seg000:7E29 _write endp seg000:7E29 seg000:7E29 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7E2B align 2 seg000:7E2C seg000:7E2C ; --------------- S U B R O U T I N E --------------------------------------- seg000:7E2C seg000:7E2C seg000:7E2C _stackavail proc near ; CODE XREF: _write+5Dp seg000:7E2C pop cx seg000:7E2D mov ax, end_of_bss seg000:7E30 cmp ax, sp seg000:7E32 jnb short stkavl_1 seg000:7E34 sub ax, sp seg000:7E36 neg ax seg000:7E38 seg000:7E38 stkavl_0: ; CODE XREF: _stackavail+10j seg000:7E38 jmp cx seg000:7E3A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7E3A seg000:7E3A stkavl_1: ; CODE XREF: _stackavail+6j seg000:7E3A xor ax, ax seg000:7E3C jmp short stkavl_0 seg000:7E3C _stackavail endp seg000:7E3C seg000:7E3E seg000:7E3E ; --------------- S U B R O U T I N E --------------------------------------- seg000:7E3E seg000:7E3E ; Attributes: thunk seg000:7E3E seg000:7E3E malloc proc near ; CODE XREF: _getbuf+Bp seg000:7E3E jmp _nmalloc seg000:7E3E malloc endp seg000:7E3E seg000:7E3E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7E41 align 2 seg000:7E42 seg000:7E42 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7E42 seg000:7E42 ; Attributes: bp-based frame seg000:7E42 seg000:7E42 sub_7E42 proc near ; CODE XREF: sub_7EBC+27p seg000:7E42 seg000:7E42 var_2 = word ptr -2 seg000:7E42 arg_0 = word ptr 4 seg000:7E42 seg000:7E42 push bp seg000:7E43 mov bp, sp seg000:7E45 sub sp, 2 seg000:7E48 push di seg000:7E49 push si seg000:7E4A sub di, di seg000:7E4C cmp [bp+arg_0], di seg000:7E4F jnz short loc_7E5A seg000:7E51 sub ax, ax seg000:7E53 push ax seg000:7E54 call sub_7EBC seg000:7E57 jmp short loc_7EAE seg000:7E57 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7E59 align 2 seg000:7E5A seg000:7E5A loc_7E5A: ; CODE XREF: sub_7E42+Dj seg000:7E5A mov si, [bp+arg_0] seg000:7E5D mov al, [si+6] seg000:7E60 mov cx, ax seg000:7E62 and al, 3 seg000:7E64 cmp al, 2 seg000:7E66 jnz short loc_7EA2 seg000:7E68 test cl, 8 seg000:7E6B jnz short loc_7E7A seg000:7E6D mov bx, si seg000:7E6F sub bx, offset STDIN seg000:7E73 test _iob2[bx], 1 seg000:7E78 jz short loc_7EA2 seg000:7E7A seg000:7E7A loc_7E7A: ; CODE XREF: sub_7E42+29j seg000:7E7A mov ax, [si] seg000:7E7C sub ax, [si+4] seg000:7E7F mov [bp+var_2], ax seg000:7E82 or ax, ax seg000:7E84 jle short loc_7EA2 seg000:7E86 push ax seg000:7E87 push word ptr [si+4] seg000:7E8A mov cl, [si+7] seg000:7E8D sub ch, ch seg000:7E8F push cx seg000:7E90 call _write seg000:7E93 add sp, 6 seg000:7E96 cmp [bp+var_2], ax seg000:7E99 jz short loc_7EA2 seg000:7E9B or byte ptr [si+6], 20h seg000:7E9F mov di, 0FFFFh seg000:7EA2 seg000:7EA2 loc_7EA2: ; CODE XREF: sub_7E42+24j seg000:7EA2 ; sub_7E42+36j ... seg000:7EA2 mov ax, [si+4] seg000:7EA5 mov [si], ax seg000:7EA7 mov word ptr [si+2], 0 seg000:7EAC mov ax, di seg000:7EAE seg000:7EAE loc_7EAE: ; CODE XREF: sub_7E42+15j seg000:7EAE pop si seg000:7EAF pop di seg000:7EB0 mov sp, bp seg000:7EB2 pop bp seg000:7EB3 retn seg000:7EB3 sub_7E42 endp seg000:7EB3 seg000:7EB4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7EB4 seg000:7EB4 loc_7EB4: ; DATA XREF: DGROUP:xpbegino seg000:7EB4 mov ax, 1 seg000:7EB7 push ax seg000:7EB8 call sub_7EBC seg000:7EBB retn seg000:7EBC seg000:7EBC ; --------------- S U B R O U T I N E --------------------------------------- seg000:7EBC seg000:7EBC ; Attributes: bp-based frame seg000:7EBC seg000:7EBC sub_7EBC proc near ; CODE XREF: sub_7E42+12p seg000:7EBC ; seg000:7EB8p seg000:7EBC seg000:7EBC var_2 = word ptr -2 seg000:7EBC arg_0 = word ptr 4 seg000:7EBC seg000:7EBC push bp seg000:7EBD mov bp, sp seg000:7EBF sub sp, 2 seg000:7EC2 push di seg000:7EC3 push si seg000:7EC4 mov si, offset STDIN seg000:7EC7 sub di, di seg000:7EC9 mov [bp+var_2], di seg000:7ECC jmp short loc_7ED6 seg000:7ECE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7ECE seg000:7ECE loc_7ECE: ; CODE XREF: sub_7EBC+2Ej seg000:7ECE mov [bp+var_2], 0FFFFh seg000:7ED3 seg000:7ED3 loc_7ED3: ; CODE XREF: sub_7EBC+24j seg000:7ED3 ; sub_7EBC+31j seg000:7ED3 add si, 8 seg000:7ED6 seg000:7ED6 loc_7ED6: ; CODE XREF: sub_7EBC+10j seg000:7ED6 cmp word_E1CE, si seg000:7EDA jb short loc_7EF0 seg000:7EDC test byte ptr [si+6], 83h seg000:7EE0 jz short loc_7ED3 seg000:7EE2 push si seg000:7EE3 call sub_7E42 seg000:7EE6 add sp, 2 seg000:7EE9 inc ax seg000:7EEA jz short loc_7ECE seg000:7EEC inc di seg000:7EED jmp short loc_7ED3 seg000:7EED ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7EEF align 2 seg000:7EF0 seg000:7EF0 loc_7EF0: ; CODE XREF: sub_7EBC+1Ej seg000:7EF0 cmp [bp+arg_0], 1 seg000:7EF4 jnz short loc_7EFA seg000:7EF6 mov ax, di seg000:7EF8 jmp short loc_7EFD seg000:7EFA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7EFA seg000:7EFA loc_7EFA: ; CODE XREF: sub_7EBC+38j seg000:7EFA mov ax, [bp+var_2] seg000:7EFD seg000:7EFD loc_7EFD: ; CODE XREF: sub_7EBC+3Cj seg000:7EFD pop si seg000:7EFE pop di seg000:7EFF mov sp, bp seg000:7F01 pop bp seg000:7F02 retn 2 seg000:7F02 sub_7EBC endp seg000:7F02 seg000:7F02 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7F05 align 2 seg000:7F06 push bp seg000:7F07 mov bp, sp seg000:7F09 push si seg000:7F0A mov bx, [bp+4] seg000:7F0D mov si, offset _nheap_desc seg000:7F10 cmp [si+6], bx seg000:7F13 jnb short loc_7F22 seg000:7F15 dec bx seg000:7F16 dec bx seg000:7F17 or byte ptr [bx], 1 seg000:7F1A cmp [si+8], bx seg000:7F1D jbe short loc_7F22 seg000:7F1F mov [si+8], bx seg000:7F22 seg000:7F22 loc_7F22: ; CODE XREF: seg000:7F13j seg000:7F22 ; seg000:7F1Dj seg000:7F22 pop si seg000:7F23 mov sp, bp seg000:7F25 pop bp seg000:7F26 retn seg000:7F27 seg000:7F27 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7F27 seg000:7F27 ; Attributes: bp-based frame seg000:7F27 seg000:7F27 _nmalloc proc near ; CODE XREF: mallocj seg000:7F27 seg000:7F27 incr = byte ptr 4 seg000:7F27 seg000:7F27 push bp seg000:7F28 mov bp, sp seg000:7F2A push si seg000:7F2B push di seg000:7F2C mov cx, word ptr [bp+incr] seg000:7F2F cmp cx, 0FFE8h seg000:7F32 ja short error_rtn seg000:7F34 mov bx, offset _nheap_desc seg000:7F37 call _searchseg seg000:7F3A jnb short ndone seg000:7F3C call _growseg seg000:7F3F jb short error_rtn seg000:7F41 call _searchseg seg000:7F44 jnb short ndone seg000:7F46 seg000:7F46 error_rtn: ; CODE XREF: _nmalloc+Bj seg000:7F46 ; _nmalloc+18j seg000:7F46 xor ax, ax seg000:7F48 cwd seg000:7F49 jmp short $+2 seg000:7F4B seg000:7F4B ndone: ; CODE XREF: _nmalloc+13j seg000:7F4B ; _nmalloc+1Dj seg000:7F4B pop di seg000:7F4C pop si seg000:7F4D pop bp seg000:7F4E retn seg000:7F4E _nmalloc endp seg000:7F4E seg000:7F4E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7F4F align 2 seg000:7F50 seg000:7F50 ; --------------- S U B R O U T I N E --------------------------------------- seg000:7F50 seg000:7F50 seg000:7F50 _searchseg proc near ; CODE XREF: _nmalloc+10p seg000:7F50 ; _nmalloc+1Ap seg000:7F50 inc cx seg000:7F51 and cl, 0FEh seg000:7F54 push bx seg000:7F55 cld seg000:7F56 mov si, [bx+8] seg000:7F59 mov bx, [bx+10] seg000:7F5C xor di, di seg000:7F5E jmp short check_block seg000:7F60 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7F60 seg000:7F60 next_pass: ; CODE XREF: _searchseg+2Dj seg000:7F60 mov ax, bx seg000:7F62 pop bx seg000:7F63 test al, 1 seg000:7F65 jnz short failure2 seg000:7F67 push bx seg000:7F68 mov si, [bx+6] seg000:7F6B mov bx, [bx+8] seg000:7F6E cmp bx, si seg000:7F70 jz short failure1 seg000:7F72 dec bx seg000:7F73 xor di, di seg000:7F75 jmp short check_block seg000:7F75 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7F77 align 2 seg000:7F78 seg000:7F78 next_block: ; CODE XREF: _searchseg+36j seg000:7F78 ; _searchseg+48j seg000:7F78 lea dx, [si-2] seg000:7F7B cmp dx, bx seg000:7F7D jnb short next_pass seg000:7F7F add si, ax seg000:7F81 jb short heap_toast seg000:7F83 seg000:7F83 check_block: ; CODE XREF: _searchseg+Ej seg000:7F83 ; _searchseg+25j seg000:7F83 lodsw seg000:7F84 test al, 1 seg000:7F86 jz short next_block seg000:7F88 mov di, si seg000:7F8A seg000:7F8A coal_loop: ; CODE XREF: _searchseg+54j seg000:7F8A dec ax seg000:7F8B cmp ax, cx seg000:7F8D jnb short blockfound seg000:7F8F add si, ax seg000:7F91 jb short heap_toast seg000:7F93 mov dx, ax seg000:7F95 lodsw seg000:7F96 test al, 1 seg000:7F98 jz short next_block seg000:7F9A add ax, dx seg000:7F9C add ax, 2 seg000:7F9F mov si, di seg000:7FA1 mov [si-2], ax seg000:7FA4 jmp short coal_loop seg000:7FA6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7FA6 seg000:7FA6 heap_toast: ; CODE XREF: _searchseg+31j seg000:7FA6 ; _searchseg+41j seg000:7FA6 mov ax, ax seg000:7FA8 seg000:7FA8 failure1: ; CODE XREF: _searchseg+20j seg000:7FA8 pop bx seg000:7FA9 seg000:7FA9 failure2: ; CODE XREF: _searchseg+15j seg000:7FA9 mov ax, [bx+6] seg000:7FAC mov [bx+8], ax seg000:7FAF stc seg000:7FB0 jmp short _done seg000:7FB2 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7FB2 seg000:7FB2 blockfound: ; CODE XREF: _searchseg+3Dj seg000:7FB2 pop bx seg000:7FB3 mov [si-2], cx seg000:7FB6 jz short set_rover seg000:7FB8 add di, cx seg000:7FBA sub ax, cx seg000:7FBC dec ax seg000:7FBD mov [di], ax seg000:7FBF sub di, cx seg000:7FC1 seg000:7FC1 set_rover: ; CODE XREF: _searchseg+66j seg000:7FC1 add di, cx seg000:7FC3 mov [bx+8], di seg000:7FC6 mov ax, si seg000:7FC8 mov dx, ds seg000:7FCA clc seg000:7FCB seg000:7FCB _done: ; CODE XREF: _searchseg+60j seg000:7FCB retn seg000:7FCB _searchseg endp seg000:7FCB seg000:7FCC seg000:7FCC ; --------------- S U B R O U T I N E --------------------------------------- seg000:7FCC seg000:7FCC seg000:7FCC _growseg proc near ; CODE XREF: _nmalloc+15p seg000:7FCC push cx seg000:7FCD push di seg000:7FCE test byte ptr [bx+2], 1 seg000:7FD2 jz short grow_error_rtn seg000:7FD4 call _findlast seg000:7FD7 mov di, si seg000:7FD9 mov ax, [si] seg000:7FDB test al, 1 seg000:7FDD jz short calc_length seg000:7FDF sub cx, ax seg000:7FE1 dec cx seg000:7FE2 seg000:7FE2 calc_length: ; CODE XREF: _growseg+11j seg000:7FE2 inc cx seg000:7FE3 inc cx seg000:7FE4 mov si, [bx+4] seg000:7FE7 or si, si seg000:7FE9 jz short grow_error_rtn seg000:7FEB add cx, si seg000:7FED jnb short grow_size_ok seg000:7FEF xor ax, ax seg000:7FF1 mov dx, 0FFF0h seg000:7FF4 jcxz short grow3 seg000:7FF6 jmp short grow_error_rtn seg000:7FF8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:7FF8 seg000:7FF8 grow_size_ok: ; CODE XREF: _growseg+21j seg000:7FF8 push ss seg000:7FF9 pop es seg000:7FFA mov ax, es:_amblksiz seg000:7FFE cmp ax, 2000h seg000:8001 jz short grow1 seg000:8003 mov dx, 8000h seg000:8006 seg000:8006 grow_next_size: ; CODE XREF: _growseg+40j seg000:8006 cmp dx, ax seg000:8008 jb short grow seg000:800A shr dx, 1 seg000:800C jnz short grow_next_size seg000:800E jmp short grow_paragraph seg000:8010 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:8010 seg000:8010 grow: ; CODE XREF: _growseg+3Cj seg000:8010 cmp dx, 8 seg000:8013 jb short grow_paragraph seg000:8015 shl dx, 1 seg000:8017 mov ax, dx seg000:8019 seg000:8019 grow1: ; CODE XREF: _growseg+35j seg000:8019 ; _growseg+69j seg000:8019 dec ax seg000:801A seg000:801A loc_801A: seg000:801A mov dx, ax seg000:801C add ax, cx seg000:801E jnb short grow2 seg000:8020 xor ax, ax seg000:8022 seg000:8022 grow2: ; CODE XREF: _growseg+52j seg000:8022 not dx seg000:8024 and ax, dx seg000:8026 seg000:8026 grow3: ; CODE XREF: _growseg+28j seg000:8026 push dx seg000:8027 call _incseg seg000:802A pop dx seg000:802B jnb short grow_good_rtn seg000:802D cmp dx, 0FFF0h seg000:8030 jz short grow_error_rtn seg000:8032 seg000:8032 grow_paragraph: ; CODE XREF: _growseg+42j seg000:8032 ; _growseg+47j seg000:8032 mov ax, 10h seg000:8035 jmp short grow1 seg000:8037 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:8037 seg000:8037 grow_error_rtn: ; CODE XREF: _growseg+6j seg000:8037 ; _growseg+1Dj ... seg000:8037 stc seg000:8038 jmp short grow_done seg000:803A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:803A seg000:803A grow_good_rtn: ; CODE XREF: _growseg+5Fj seg000:803A mov dx, ax seg000:803C sub dx, [bx+4] seg000:803F mov [bx+4], ax seg000:8042 mov [bx+8], di seg000:8045 mov si, [bx+10] seg000:8048 dec dx seg000:8049 mov [si], dx seg000:804B inc dx seg000:804C add si, dx seg000:804E mov word ptr [si], 0FFFEh seg000:8052 mov [bx+10], si seg000:8055 seg000:8055 grow_done: ; CODE XREF: _growseg+6Cj seg000:8055 pop di seg000:8056 pop cx seg000:8057 retn seg000:8057 _growseg endp seg000:8057 seg000:8058 seg000:8058 ; --------------- S U B R O U T I N E --------------------------------------- seg000:8058 seg000:8058 seg000:8058 _incseg proc near ; CODE XREF: _growseg+5Bp seg000:8058 mov dx, ax seg000:805A test byte ptr [bx+2], 4 seg000:805E jz short do_oscall1 seg000:8060 dec dx seg000:8061 mov si, [bx+4] seg000:8064 dec si seg000:8065 cmp dx, si seg000:8067 jb short do_oscall seg000:8069 cmp [bx-2], dx seg000:806C jnb short incseg_ok seg000:806E seg000:806E do_oscall: ; CODE XREF: _incseg+Fj seg000:806E inc dx seg000:806F seg000:806F do_oscall1: ; CODE XREF: _incseg+6j seg000:806F push bx seg000:8070 push cx seg000:8071 mov si, ds seg000:8073 mov es, si seg000:8075 mov cl, 4 seg000:8077 shr ax, cl seg000:8079 jnz short do_oscall2 seg000:807B mov ax, 1000h seg000:807E seg000:807E do_oscall2: ; CODE XREF: _incseg+21j seg000:807E test byte ptr [bx+2], 4 seg000:8082 jz short do_oscall3 seg000:8084 add ax, si seg000:8086 mov bx, _psp seg000:808A sub ax, bx seg000:808C mov es, bx seg000:808E assume es:nothing seg000:808E seg000:808E do_oscall3: ; CODE XREF: _incseg+2Aj seg000:808E mov bx, ax seg000:8090 mov ah, 4Ah seg000:8092 int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) seg000:8092 ; ES = segment address of block to change seg000:8092 ; BX = new size in paragraphs seg000:8094 pop cx seg000:8095 pop bx seg000:8096 jb short incseg_done seg000:8098 mov ax, dx seg000:809A test byte ptr [bx+2], 4 seg000:809E jz short incseg_ok seg000:80A0 dec dx seg000:80A1 mov [bx-2], dx seg000:80A4 seg000:80A4 incseg_ok: ; CODE XREF: _incseg+14j seg000:80A4 ; _incseg+46j seg000:80A4 clc seg000:80A5 jmp short incseg_done seg000:80A7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:80A7 stc seg000:80A8 seg000:80A8 incseg_done: ; CODE XREF: _incseg+3Ej seg000:80A8 ; _incseg+4Dj seg000:80A8 retn seg000:80A8 _incseg endp seg000:80A8 seg000:80A9 seg000:80A9 ; --------------- S U B R O U T I N E --------------------------------------- seg000:80A9 seg000:80A9 seg000:80A9 _findlast proc near ; CODE XREF: _growseg+8p seg000:80A9 push di seg000:80AA mov si, [bx+8] seg000:80AD cmp si, [bx+10] seg000:80B0 jnz short lastloop seg000:80B2 mov si, [bx+6] seg000:80B5 seg000:80B5 lastloop: ; CODE XREF: _findlast+7j seg000:80B5 ; _findlast+18j seg000:80B5 lodsw seg000:80B6 cmp ax, 0FFFEh seg000:80B9 jz short lastdone seg000:80BB mov di, si seg000:80BD and al, 0FEh seg000:80BF add si, ax seg000:80C1 jmp short lastloop seg000:80C3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:80C3 seg000:80C3 lastdone: ; CODE XREF: _findlast+10j seg000:80C3 dec di seg000:80C4 dec di seg000:80C5 mov si, di seg000:80C7 pop di seg000:80C8 retn seg000:80C8 _findlast endp seg000:80C8 seg000:80C8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg000:80C9 db 7 dup(0) seg000:80C9 seg000 ends seg000:80C9 seg001:0000 ; =========================================================================== seg001:0000 seg001:0000 ; Segment type: Pure data seg001:0000 seg001 segment byte public 'DATA' use16 seg001:0000 assume cs:seg001 seg001:0000 seg_80D0 dw seg DGROUP seg001:0002 byte_80D2 db 270 dup(0) seg001:0110 db 256 dup(0) seg001:0210 byte_82E0 db 256 dup(0) seg001:0310 byte_83E0 db 256 dup(0) seg001:0410 db 256 dup(0) seg001:0510 db 256 dup(0) seg001:0610 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h seg001:0610 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h seg001:0610 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) seg001:0610 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h seg001:0610 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh seg001:0610 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h seg001:0610 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h seg001:0610 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh seg001:0610 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh seg001:0610 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h seg001:0610 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h seg001:0610 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h seg001:0610 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h seg001:0610 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h seg001:0610 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h seg001:0610 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h seg001:0610 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h seg001:0610 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh seg001:0610 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h seg001:0610 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h seg001:0610 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h seg001:0610 db 6Dh, 124h dup(00h), 55h, 0AAh seg001:0610 seg001 ends seg001:0610 seg002:0000 ; =========================================================================== seg002:0000 seg002:0000 ; Segment type: Pure code seg002:0000 seg002 segment byte public 'CODE' use16 seg002:0000 assume cs:seg002 seg002:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing seg002:0000 seg002:0000 ; --------------- S U B R O U T I N E --------------------------------------- seg002:0000 seg002:0000 ; Attributes: bp-based frame seg002:0000 seg002:0000 DOSBEEP proc far ; CODE XREF: display+18EP seg002:0000 ; get_char_input+23P ... seg002:0000 seg002:0000 arg_0 = word ptr 6 seg002:0000 arg_2 = word ptr 8 seg002:0000 seg002:0000 push bp seg002:0001 mov bp, sp seg002:0003 push bx seg002:0004 seg002:0004 loc_88E4: seg002:0004 push cx seg002:0005 push dx seg002:0006 seg002:0006 loc_88E6: seg002:0006 push si seg002:0007 push di seg002:0008 seg002:0008 loc_88E8: seg002:0008 push ds seg002:0009 push es seg002:000A seg002:000A loc_88EA: seg002:000A push ss seg002:000B seg002:000B loc_88EB: seg002:000B push bp seg002:000C seg002:000C loc_88EC: seg002:000C mov al, 0B6h seg002:000E seg002:000E loc_88EE: ; Timer 8253-5 (AT: 8254.2). seg002:000E out 43h, al seg002:0010 seg002:0010 loc_88F0: seg002:0010 mov dx, 12h seg002:0013 mov ax, 2970h seg002:0016 seg002:0016 loc_88F6: seg002:0016 mov cx, [bp+arg_2] seg002:0019 mov bx, 37 seg002:001C cmp cx, bx seg002:001E seg002:001E loc_88FE: seg002:001E jl short loc_892B seg002:0020 seg002:0020 loc_8900: seg002:0020 mov bx, 32767 seg002:0023 seg002:0023 loc_8903: seg002:0023 cmp cx, bx seg002:0025 seg002:0025 loc_8905: seg002:0025 jg short loc_892B seg002:0027 seg002:0027 loc_8907: seg002:0027 div cx seg002:0029 seg002:0029 loc_8909: ; Timer 8253-5 (AT: 8254.2). seg002:0029 out 42h, al seg002:002B seg002:002B loc_890B: seg002:002B mov al, ah seg002:002D seg002:002D loc_890D: ; Timer 8253-5 (AT: 8254.2). seg002:002D out 42h, al seg002:002F seg002:002F loc_890F: ; PC/XT PPI port B bits: seg002:002F in al, 61h ; 0: Tmr 2 gate =T= OR 03H=spkr ON seg002:002F ; 1: Tmr 2 data =- AND 0fcH=spkr OFF seg002:002F ; 3: 1=read high switches seg002:002F ; 4: 0=enable RAM parity checking seg002:002F ; 5: 0=enable I/O channel check seg002:002F ; 6: 0=hold keyboard clock low seg002:002F ; 7: 0=enable kbrd seg002:0031 seg002:0031 loc_8911: seg002:0031 mov ah, al seg002:0033 seg002:0033 loc_8913: seg002:0033 or al, 3 seg002:0035 seg002:0035 loc_8915: ; PC/XT PPI port B bits: seg002:0035 out 61h, al ; 0: Tmr 2 gate =T= OR 03H=spkr ON seg002:0035 ; 1: Tmr 2 data =- AND 0fcH=spkr OFF seg002:0035 ; 3: 1=read high switches seg002:0035 ; 4: 0=enable RAM parity checking seg002:0035 ; 5: 0=enable I/O channel check seg002:0035 ; 6: 0=hold keyboard clock low seg002:0035 ; 7: 0=enable kbrd seg002:0037 mov cx, [bp+arg_0] seg002:003A seg002:003A loc_891A: ; CODE XREF: DOSBEEP+40j seg002:003A mov bx, 196 seg002:003D seg002:003D loc_891D: ; CODE XREF: DOSBEEP+3Ej seg002:003D dec bx seg002:003E jnz short loc_891D seg002:0040 loop loc_891A seg002:0042 seg002:0042 loc_8922: seg002:0042 mov al, ah seg002:0044 out 61h, al ; PC/XT PPI port B bits: seg002:0044 ; 0: Tmr 2 gate =T= OR 03H=spkr ON seg002:0044 ; 1: Tmr 2 data =- AND 0fcH=spkr OFF seg002:0044 ; 3: 1=read high switches seg002:0044 ; 4: 0=enable RAM parity checking seg002:0044 ; 5: 0=enable I/O channel check seg002:0044 ; 6: 0=hold keyboard clock low seg002:0044 ; 7: 0=enable kbrd seg002:0046 sub ax, ax seg002:0048 jmp short loc_892E seg002:004A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg002:004A seg002:004A loc_892A: seg002:004A nop seg002:004B seg002:004B loc_892B: ; CODE XREF: DOSBEEP:loc_88FEj seg002:004B ; DOSBEEP:loc_8905j seg002:004B mov ax, 2 seg002:004E seg002:004E loc_892E: ; CODE XREF: DOSBEEP+48j seg002:004E pop bp seg002:004F pop ss seg002:0050 seg002:0050 loc_8930: seg002:0050 pop es seg002:0051 pop ds seg002:0052 pop di seg002:0053 pop si seg002:0054 pop dx seg002:0055 pop cx seg002:0056 pop bx seg002:0057 seg002:0057 loc_8937: seg002:0057 mov sp, bp seg002:0059 pop bp seg002:005A retf 4 seg002:005A DOSBEEP endp seg002:005A seg002:005D seg002:005D ; --------------- S U B R O U T I N E --------------------------------------- seg002:005D seg002:005D ; Attributes: bp-based frame seg002:005D seg002:005D DOSEXIT proc far ; CODE XREF: main+D6P seg002:005D ; internal_program_error+11P seg002:005D seg002:005D arg_0 = word ptr 6 seg002:005D arg_2 = word ptr 8 seg002:005D seg002:005D push bp seg002:005E seg002:005E loc_893E: seg002:005E mov bp, sp seg002:0060 push bx seg002:0061 push cx seg002:0062 push dx seg002:0063 push si seg002:0064 push di seg002:0065 push ds seg002:0066 seg002:0066 loc_8946: seg002:0066 push es seg002:0067 push ss seg002:0068 seg002:0068 loc_8948: seg002:0068 push bp seg002:0069 seg002:0069 loc_8949: seg002:0069 mov ax, [bp+arg_2] seg002:006C seg002:006C loc_894C: seg002:006C cmp ax, 1 seg002:006F seg002:006F loc_894F: seg002:006F jg short dosexit_0 seg002:0071 seg002:0071 loc_8951: seg002:0071 mov ax, [bp+arg_0] seg002:0074 seg002:0074 loc_8954: seg002:0074 mov ah, 4Ch seg002:0076 seg002:0076 loc_8956: ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) seg002:0076 int 21h ; AL = exit code seg002:0078 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg002:0078 seg002:0078 loc_8958: seg002:0078 xor ax, ax seg002:007A seg002:007A dosexit_0: ; CODE XREF: DOSEXIT:loc_894Fj seg002:007A pop bp seg002:007B pop ss seg002:007C seg002:007C loc_895C: seg002:007C pop es seg002:007D pop ds seg002:007E seg002:007E loc_895E: seg002:007E pop di seg002:007F pop si seg002:0080 seg002:0080 loc_8960: seg002:0080 pop dx seg002:0081 pop cx seg002:0082 pop bx seg002:0083 seg002:0083 loc_8963: seg002:0083 mov sp, bp seg002:0085 pop bp seg002:0086 seg002:0086 locret_8966: seg002:0086 retf 4 seg002:0086 DOSEXIT endp seg002:0086 seg002:0086 seg002 ends seg002:0086 seg003:0009 ; =========================================================================== seg003:0009 seg003:0009 ; Segment type: Pure code seg003:0009 seg003 segment byte public 'CODE' use16 seg003:0009 assume cs:seg003 seg003:0009 ;org 9 seg003:0009 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing seg003:0009 seg003:0009 ; --------------- S U B R O U T I N E --------------------------------------- seg003:0009 seg003:0009 ; Attributes: bp-based frame seg003:0009 seg003:0009 VIOSETCURPOS proc far ; CODE XREF: get_num_input+40P seg003:0009 ; get_num_input+79P ... seg003:0009 seg003:0009 cpos_column = word ptr 8 seg003:0009 cpos_row = byte ptr 0Ah seg003:0009 seg003:0009 push bp seg003:000A seg003:000A loc_896A: seg003:000A mov bp, sp seg003:000C seg003:000C loc_896C: seg003:000C push bx seg003:000D push cx seg003:000E seg003:000E loc_896E: seg003:000E push dx seg003:000F push si seg003:0010 seg003:0010 loc_8970: seg003:0010 push di seg003:0011 push ds seg003:0012 seg003:0012 loc_8972: seg003:0012 push es seg003:0013 push ss seg003:0014 push bp seg003:0015 seg003:0015 loc_8975: seg003:0015 mov bh, 0 seg003:0017 seg003:0017 loc_8977: seg003:0017 mov ax, word ptr [bp+cpos_row] seg003:001A cmp al, 25 seg003:001C jg short viosetcpos_0 seg003:001E seg003:001E loc_897E: seg003:001E mov dh, al seg003:0020 mov ax, [bp+cpos_column] seg003:0023 seg003:0023 loc_8983: seg003:0023 cmp al, 80 seg003:0025 jg short viosetcpos_0 seg003:0027 mov dl, al seg003:0029 mov ah, 2 seg003:002B push bx seg003:002C push cx seg003:002D push dx seg003:002E push si seg003:002F push di seg003:0030 push ds seg003:0031 push es seg003:0032 push ss seg003:0033 push bp seg003:0034 int 10h ; - VIDEO - SET CURSOR POSITION seg003:0034 ; DH,DL = row, column (0,0 = upper left) seg003:0034 ; BH = page number seg003:0036 pop bp seg003:0037 pop ss seg003:0038 pop es seg003:0039 pop ds seg003:003A seg003:003A loc_899A: seg003:003A pop di seg003:003B pop si seg003:003C pop dx seg003:003D pop cx seg003:003E pop bx seg003:003F sub ax, ax seg003:0041 jmp short viosetcpos_1 seg003:0043 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg003:0043 nop seg003:0044 seg003:0044 viosetcpos_0: ; CODE XREF: VIOSETCURPOS+13j seg003:0044 ; VIOSETCURPOS+1Cj seg003:0044 mov ax, 2 seg003:0047 seg003:0047 viosetcpos_1: ; CODE XREF: VIOSETCURPOS+38j seg003:0047 pop bp seg003:0048 pop ss seg003:0049 pop es seg003:004A seg003:004A loc_89AA: seg003:004A pop ds seg003:004B pop di seg003:004C pop si seg003:004D pop dx seg003:004E pop cx seg003:004F pop bx seg003:0050 seg003:0050 loc_89B0: seg003:0050 mov sp, bp seg003:0052 pop bp seg003:0053 retf 6 seg003:0053 VIOSETCURPOS endp seg003:0053 seg003:0056 seg003:0056 ; --------------- S U B R O U T I N E --------------------------------------- seg003:0056 seg003:0056 ; Attributes: bp-based frame seg003:0056 seg003:0056 VIOSCROLLUP proc far ; CODE XREF: clear_screen+41P seg003:0056 ; reset_video_information+20P seg003:0056 seg003:0056 arg_2 = dword ptr 8 seg003:0056 arg_6 = word ptr 0Ch seg003:0056 arg_8 = word ptr 0Eh seg003:0056 arg_A = word ptr 10h seg003:0056 arg_C = word ptr 12h seg003:0056 arg_E = word ptr 14h seg003:0056 seg003:0056 push bp seg003:0057 seg003:0057 loc_89B7: seg003:0057 mov bp, sp seg003:0059 push bx seg003:005A push cx seg003:005B push dx seg003:005C push si seg003:005D push di seg003:005E seg003:005E loc_89BE: seg003:005E push ds seg003:005F push es seg003:0060 push ss seg003:0061 push bp seg003:0062 mov bx, [bp+arg_6] seg003:0065 cmp bl, 25 seg003:0068 jg short vioscrollup_1 seg003:006A seg003:006A loc_89CA: seg003:006A mov al, bl seg003:006C jmp short vioscrolllup_0 seg003:006E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg003:006E nop seg003:006F mov al, 0 seg003:0071 seg003:0071 vioscrolllup_0: ; CODE XREF: VIOSCROLLUP+16j seg003:0071 mov ah, 6 seg003:0073 mov bx, [bp+arg_8] seg003:0076 cmp bl, 80 seg003:0079 jg short vioscrollup_1 seg003:007B mov dl, bl seg003:007D seg003:007D loc_89DD: seg003:007D mov bx, [bp+arg_A] seg003:0080 cmp bl, 25 seg003:0083 jg short vioscrollup_1 seg003:0085 mov dh, bl seg003:0087 mov bx, [bp+arg_C] seg003:008A mov cl, bl seg003:008C mov bx, [bp+arg_E] seg003:008F mov ch, bl seg003:0091 lds si, [bp+arg_2] seg003:0094 mov bx, [si] seg003:0096 mov bh, bl seg003:0098 push bx seg003:0099 push cx seg003:009A push dx seg003:009B push si seg003:009C push di seg003:009D push ds seg003:009E push es seg003:009F push ss seg003:00A0 push bp seg003:00A1 int 10h ; - VIDEO - SCROLL PAGE UP seg003:00A1 ; AL = number of lines to scroll window (0 = blank whole window) seg003:00A1 ; BH = attributes to be used on blanked lines seg003:00A1 ; CH,CL = row,column of upper left corner of window to scroll seg003:00A1 ; DH,DL = row,column of lower right corner of window seg003:00A3 pop bp seg003:00A4 pop ss seg003:00A5 pop es seg003:00A6 pop ds seg003:00A7 pop di seg003:00A8 pop si seg003:00A9 pop dx seg003:00AA pop cx seg003:00AB pop bx seg003:00AC sub ax, ax seg003:00AE jmp short vioscrollup_2 seg003:00B0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg003:00B0 nop seg003:00B1 seg003:00B1 vioscrollup_1: ; CODE XREF: VIOSCROLLUP+12j seg003:00B1 ; VIOSCROLLUP+23j ... seg003:00B1 mov ax, 2 seg003:00B4 seg003:00B4 vioscrollup_2: ; CODE XREF: VIOSCROLLUP+58j seg003:00B4 pop bp seg003:00B5 pop ss seg003:00B6 pop es seg003:00B7 pop ds seg003:00B8 pop di seg003:00B9 pop si seg003:00BA pop dx seg003:00BB pop cx seg003:00BC pop bx seg003:00BD mov sp, bp seg003:00BF pop bp seg003:00C0 retf 10h seg003:00C0 VIOSCROLLUP endp seg003:00C0 seg003:00C3 seg003:00C3 ; --------------- S U B R O U T I N E --------------------------------------- seg003:00C3 seg003:00C3 ; Attributes: bp-based frame seg003:00C3 seg003:00C3 VIOWRTCHARSTRATT proc far ; CODE XREF: display+A5P seg003:00C3 ; display+237P ... seg003:00C3 seg003:00C3 arg_2 = dword ptr 8 seg003:00C3 arg_6 = word ptr 0Ch seg003:00C3 arg_8 = word ptr 0Eh seg003:00C3 arg_A = word ptr 10h seg003:00C3 arg_C = dword ptr 12h seg003:00C3 seg003:00C3 push bp seg003:00C4 mov bp, sp seg003:00C6 push bx seg003:00C7 push cx seg003:00C8 push dx seg003:00C9 push si seg003:00CA push di seg003:00CB push ds seg003:00CC push es seg003:00CD push ss seg003:00CE push bp seg003:00CF sub bh, bh seg003:00D1 sub ax, ax seg003:00D3 mov dx, [bp+arg_6] seg003:00D6 cmp dl, 80 seg003:00D9 jg short viowchratt_2 seg003:00DB mov ax, [bp+arg_8] seg003:00DE cmp al, 25 seg003:00E0 jg short viowchratt_2 seg003:00E2 mov dh, al seg003:00E4 mov ah, 2 seg003:00E6 push bx seg003:00E7 push cx seg003:00E8 push dx seg003:00E9 push si seg003:00EA push di seg003:00EB push ds seg003:00EC push es seg003:00ED push ss seg003:00EE push bp seg003:00EF int 10h ; - VIDEO - SET CURSOR POSITION seg003:00EF ; DH,DL = row, column (0,0 = upper left) seg003:00EF ; BH = page number seg003:00F1 pop bp seg003:00F2 pop ss seg003:00F3 pop es seg003:00F4 pop ds seg003:00F5 pop di seg003:00F6 pop si seg003:00F7 pop dx seg003:00F8 pop cx seg003:00F9 pop bx seg003:00FA lds si, [bp+arg_2] seg003:00FD mov bl, [si] seg003:00FF seg003:00FF loc_8A5F: seg003:00FF lds si, [bp+arg_C] seg003:0102 mov di, [bp+arg_A] seg003:0105 seg003:0105 viowchratt_0: ; CODE XREF: VIOWRTCHARSTRATT+8Ej seg003:0105 mov al, [si] seg003:0107 mov ah, 9 seg003:0109 mov cx, 1 seg003:010C push bx seg003:010D push cx seg003:010E push dx seg003:010F push si seg003:0110 push di seg003:0111 push ds seg003:0112 push es seg003:0113 push ss seg003:0114 push bp seg003:0115 int 10h ; - VIDEO - WRITE ATTRIBUTES/CHARACTERS AT CURSOR POSITION seg003:0115 ; AL = character, BH = display page seg003:0115 ; BL = attributes of character (alpha modes) or color (graphics modes) seg003:0115 ; CX = number of times to write character seg003:0117 pop bp seg003:0118 pop ss seg003:0119 pop es seg003:011A pop ds seg003:011B pop di seg003:011C pop si seg003:011D pop dx seg003:011E pop cx seg003:011F pop bx seg003:0120 inc si seg003:0121 dec di seg003:0122 inc dl seg003:0124 cmp dl, 80 seg003:0127 jnz short viowchratt_1 seg003:0129 inc dh seg003:012B mov dl, 0 seg003:012D cmp dh, 25 seg003:0130 jnz short viowchratt_1 seg003:0132 mov ax, 1 seg003:0135 jmp short viowchratt_3 seg003:0137 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg003:0137 nop seg003:0138 seg003:0138 viowchratt_1: ; CODE XREF: VIOWRTCHARSTRATT+64j seg003:0138 ; VIOWRTCHARSTRATT+6Dj seg003:0138 mov ah, 2 seg003:013A push bx seg003:013B push cx seg003:013C push dx seg003:013D push si seg003:013E push di seg003:013F push ds seg003:0140 push es seg003:0141 push ss seg003:0142 push bp seg003:0143 int 10h ; - VIDEO - SET CURSOR POSITION seg003:0143 ; DH,DL = row, column (0,0 = upper left) seg003:0143 ; BH = page number seg003:0145 pop bp seg003:0146 pop ss seg003:0147 pop es seg003:0148 pop ds seg003:0149 pop di seg003:014A pop si seg003:014B pop dx seg003:014C pop cx seg003:014D pop bx seg003:014E cmp di, 0 seg003:0151 jnz short viowchratt_0 seg003:0153 sub ax, ax seg003:0155 seg003:0155 viowchratt_2: ; CODE XREF: VIOWRTCHARSTRATT+16j seg003:0155 ; VIOWRTCHARSTRATT+1Dj seg003:0155 mov ax, 2 seg003:0158 seg003:0158 viowchratt_3: ; CODE XREF: VIOWRTCHARSTRATT+72j seg003:0158 pop bp seg003:0159 pop ss seg003:015A pop es seg003:015B pop ds seg003:015C pop di seg003:015D pop si seg003:015E pop dx seg003:015F pop cx seg003:0160 pop bx seg003:0161 mov sp, bp seg003:0163 pop bp seg003:0164 retf 16 seg003:0164 VIOWRTCHARSTRATT endp seg003:0164 seg003:0164 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ seg003:0167 db 9 dup(0) seg003:0167 seg003 ends seg003:0167 DGROUP:0000 ; =========================================================================== DGROUP:0000 DGROUP:0000 ; Segment type: Pure code DGROUP:0000 DGROUP segment byte public 'DATA' use16 DGROUP:0000 assume cs:DGROUP DGROUP:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing DGROUP:0000 disk_size_format db '%4.1d',0 ; DATA XREF: dos_delete+61o DGROUP:0006 extd_size_format db '%4.1d',0 ; DATA XREF: ext_delete+56o DGROUP:000C ld_p_size_format db '%4.1d',0 ; DATA XREF: volume_delete+9Fo DGROUP:0012 nd_p_size_format db '%4.1d',0 ; DATA XREF: non_dos_delete+5Do DGROUP:0018 idc_totmb_format db '%4.1d',0 ; DATA XREF: input_dos_create+5Ao DGROUP:001E idc_tot_mb_format db '%4.1d',0 ; DATA XREF: input_dos_create+9Bo DGROUP:0024 idc_mb_pcent_format db '%4.1d%3.1d%%',0 ; DATA XREF: input_dos_create+C0o DGROUP:0031 idc_def_entry_format db '%4.1d',0 ; DATA XREF: input_dos_create+EAo DGROUP:0037 ecp_size_format db '%4.1d',0 ; DATA XREF: ext_create_partition+BEo DGROUP:003D ecp_mb_pcent_format db '%4.1d%3.1d%%',0 ; DATA XREF: ext_create_partition+E8o DGROUP:004A ecp_mb_format db '%4.1d',0 ; DATA XREF: ext_create_partition+13Co DGROUP:0050 ecp_pcent_format db '%3.1d%%',0 ; DATA XREF: ext_create_partition+144o DGROUP:0058 v_psize_format db '%4.1d',0 ; DATA XREF: volume_create+10Co DGROUP:005E v_mb_percent_format db '%4.1d%3.1d%%',0 ; DATA XREF: volume_create+135o DGROUP:006B v_mbytes_format db '%4.1d',0 ; DATA XREF: volume_create+188o DGROUP:0071 v_percent_format db '%3.1d%%',0 ; DATA XREF: volume_create+190o DGROUP:0079 db 0 DGROUP:007A p_size_format db '%4.1d',0 ; DATA XREF: display_volume_information+2Ao DGROUP:0080 FAT16 db 'FAT16 ',0 ; DATA XREF: get_volume:gv_9o DGROUP:0089 FAT12 db 'FAT12 ',0 ; DATA XREF: get_volume:gv_10o DGROUP:0092 NOVOLUME db 0 ; DATA XREF: get_volume:gv_11o DGROUP:0093 UNKNOWN db 'UNKNOWN ',0 ; DATA XREF: get_volume+199o DGROUP:009C extFAT16 db 'FAT16 ',0 ; DATA XREF: load_logical_drive:lld_11o DGROUP:00A5 extFAT12 db 'FAT12 ',0 ; DATA XREF: load_logical_drive:lld_12o DGROUP:00AE extNOVOLUME db 0 ; DATA XREF: load_logical_drive:lld_for1_if_chk_format_falseo DGROUP:00AF extUNKNOWN db 'UNKNOWN ',0 ; DATA XREF: load_logical_drive+20Co DGROUP:00B8 master_boot_record db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:00B8 ; DATA XREF: main+1B0r DGROUP:00B8 ; main+1C2r ... DGROUP:00B8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:00B8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:00B8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:00B8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:00B8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:00B8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:00B8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:00B8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:00B8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:00B8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:00B8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:00B8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:00B8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:00B8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:00B8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:00B8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:00B8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:00B8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:00B8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:00B8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:00B8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:02B8 mbr_hd1 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:02B8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:02B8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:02B8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:02B8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:02B8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:02B8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:02B8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:02B8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:02B8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:02B8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:02B8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:02B8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:02B8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:02B8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:02B8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:02B8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:02B8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:02B8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:02B8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:02B8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:02B8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:04B8 mbr_hd2 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:04B8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:04B8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:04B8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:04B8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:04B8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:04B8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:04B8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:04B8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:04B8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:04B8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:04B8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:04B8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:04B8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:04B8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:04B8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:04B8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:04B8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:04B8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:04B8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:04B8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:04B8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:06B8 mbr_hd3 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:06B8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:06B8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:06B8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:06B8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:06B8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:06B8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:06B8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:06B8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:06B8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:06B8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:06B8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:06B8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:06B8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:06B8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:06B8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:06B8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:06B8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:06B8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:06B8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:06B8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:06B8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:08B8 mbr_5 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:08B8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:08B8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:08B8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:08B8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:08B8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:08B8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:08B8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:08B8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:08B8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:08B8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:08B8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:08B8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:08B8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:08B8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:08B8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:08B8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:08B8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:08B8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:08B8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:08B8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:08B8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:0AB8 mbr_6 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:0AB8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:0AB8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:0AB8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:0AB8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:0AB8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:0AB8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:0AB8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:0AB8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:0AB8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:0AB8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:0AB8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:0AB8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:0AB8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:0AB8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:0AB8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:0AB8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:0AB8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:0AB8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:0AB8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:0AB8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:0AB8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:0CB8 mbr_7 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:0CB8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:0CB8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:0CB8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:0CB8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:0CB8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:0CB8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:0CB8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:0CB8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:0CB8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:0CB8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:0CB8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:0CB8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:0CB8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:0CB8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:0CB8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:0CB8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:0CB8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:0CB8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:0CB8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:0CB8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:0CB8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:0EB8 mbr_8 db 0FAh, 33h, 0C0h, 8Eh, 0D0h, 0BCh, 00h, 7Ch, 8Bh, 0F4h DGROUP:0EB8 db 50h, 07h, 50h, 1Fh, 0FBh, 0FCh, 0BFh, 00h, 06h, 0B9h DGROUP:0EB8 db 00h, 01h, 0F2h, 0A5h, 0EAh, 1Dh, 06h, 2 dup(00h), 2 dup(0BEh) DGROUP:0EB8 db 07h, 0B3h, 04h, 80h, 3Ch, 80h, 74h, 0Eh, 80h, 3Ch, 00h DGROUP:0EB8 db 75h, 1Ch, 83h, 0C6h, 10h, 0FEh, 0CBh, 75h, 0EFh, 0CDh DGROUP:0EB8 db 18h, 8Bh, 14h, 8Bh, 4Ch, 02h, 8Bh, 0EEh, 83h, 0C6h DGROUP:0EB8 db 10h, 0FEh, 0CBh, 74h, 1Ah, 80h, 3Ch, 00h, 74h, 0F4h DGROUP:0EB8 db 0BEh, 8Bh, 06h, 0ACh, 3Ch, 00h, 74h, 0Bh, 56h, 0BBh DGROUP:0EB8 db 07h, 00h, 0B4h, 0Eh, 0CDh, 10h, 5Eh, 0EBh, 0F0h, 0EBh DGROUP:0EB8 db 0FEh, 0BFh, 05h, 00h, 0BBh, 00h, 7Ch, 0B8h, 01h, 02h DGROUP:0EB8 db 57h, 0CDh, 13h, 5Fh, 73h, 0Ch, 33h, 0C0h, 0CDh, 13h DGROUP:0EB8 db 4Fh, 75h, 0EDh, 0BEh, 0A3h, 06h, 0EBh, 0D3h, 0BEh, 0C2h DGROUP:0EB8 db 06h, 0BFh, 0FEh, 7Dh, 81h, 3Dh, 55h, 0AAh, 75h, 0C7h DGROUP:0EB8 db 8Bh, 0F5h, 0EAh, 00h, 7Ch, 2 dup(00h), 49h, 6Eh, 76h DGROUP:0EB8 db 61h, 6Ch, 69h, 64h, 20h, 70h, 61h, 72h, 74h, 69h, 74h DGROUP:0EB8 db 69h, 6Fh, 6Eh, 20h, 74h, 61h, 62h, 6Ch, 65h, 00h, 45h DGROUP:0EB8 db 2 dup(72h), 6Fh, 72h, 20h, 6Ch, 6Fh, 61h, 64h, 69h DGROUP:0EB8 db 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h, 61h, 74h, 69h, 6Eh DGROUP:0EB8 db 67h, 20h, 73h, 79h, 73h, 74h, 65h, 6Dh, 00h, 4Dh, 69h DGROUP:0EB8 db 2 dup(73h), 69h, 6Eh, 67h, 20h, 6Fh, 70h, 65h, 72h DGROUP:0EB8 db 61h, 74h, 69h, 6Eh, 67h, 20h, 73h, 79h, 73h, 74h, 65h DGROUP:0EB8 db 6Dh, 124h dup(00h), 55h, 0AAh DGROUP:10B8 numinmsg_format db '%4.1d',0 ; DATA XREF: number_in_msg+9o DGROUP:10BE a3_1d_1 db '%3.1d%%',0 ; DATA XREF: percent_in_msg+9o DGROUP:10C6 glni_num_format db '%4.1d',0 ; DATA XREF: get_large_num_input+11Co DGROUP:10CC percent_format db '%3.1d%%',0 ; DATA XREF: get_large_num_input+155o DGROUP:10D4 invstrchars db '."/\[]:|<>+=;,',0 ; DATA XREF: get_string_input+258o DGROUP:10E3 db 0 DGROUP:10E4 twospace db ' ',0 ; DATA XREF: table_display+137o DGROUP:10E7 twochars db '%c%c',0 ; DATA XREF: table_display+6Do DGROUP:10EC ptbl_row_format db '%-2.2s%c%c%-7.7s%-11.11s%4.1d%-8.8s%3.1d%%',0 DGROUP:10EC ; DATA XREF: table_display+EEo DGROUP:1117 align 2 DGROUP:1118 eptbl_row_format db '%c%c%-11.11s%4.1d%-8.8s%3.1d%%',0 DGROUP:1118 ; DATA XREF: volume_display+43o DGROUP:1137 cd_pt_row_format db '%1.0d%c%c%4.1d%4.1d%3.1d%%',0 DGROUP:1137 ; DATA XREF: change_current_drive+A6o DGROUP:1152 drv_mb_row_format db '%c%c%c%4.1d%8c',0 ; DATA XREF: change_current_drive+D9o DGROUP:1161 cdrv_mb_format db '%c%c%c%4.1d%8c',0 ; DATA XREF: change_current_drive+178o DGROUP:1170 cdrive_format db '%1.0d%1.0d',0 ; DATA XREF: change_current_drive+2C0o DGROUP:117B align 2 DGROUP:117C NO_FORMAT db 'UNKNOWN ',0 ; DATA XREF: make_partition+277o DGROUP:1185 NO_VOLUME db 0 ; DATA XREF: make_partition+293o DGROUP:1186 _NOFORMAT db 'UNKNOWN ',0 ; DATA XREF: make_volume+173o DGROUP:118F _NOVOLUME db 0 ; DATA XREF: make_volume+18Do DGROUP:1190 PRI db '/PRI',0 ; DATA XREF: parse_init+95o DGROUP:1195 EXT db '/EXT',0 ; DATA XREF: parse_init+A2o DGROUP:119A LOG db '/LOG',0 ; DATA XREF: parse_init+AFo DGROUP:119F QUIET db '/Q',0 ; DATA XREF: parse_init+D9o DGROUP:11A2 STATUS db '/STATUS',0 ; DATA XREF: parse_init+103o DGROUP:11AA OPTIONS db '/?',0 ; DATA XREF: parse_init+129o DGROUP:11AD MBR db '/MBR',0 ; DATA XREF: parse_init+153o DGROUP:11B2 FILE_NAME db ':\????????.???',0 ; DATA XREF: get_volume_string+4Ao DGROUP:11C1 align 2 DGROUP:11C2 pinsert dw offset insert ; DATA XREF: display+1CDr DGROUP:11C2 ; volume_display+115w ... DGROUP:11C4 NOVAL dd 0 ; DATA XREF: parse_init+56r DGROUP:11C4 ; parse_init+CEr ... DGROUP:11C8 _$P_ordinal dw 0 ; DATA XREF: SysParse+8w DGROUP:11C8 ; SysParse+C0r ... DGROUP:11CA _$P_RC dw 0 ; DATA XREF: SysParse+Dw DGROUP:11CA ; SysParse:_$P_Too_Many_Errorw ... DGROUP:11CC _$P_SI_Save dw 0 ; DATA XREF: SysParse:_$P_Pack_Endw DGROUP:11CC ; SysParse+146r DGROUP:11CE _$P_DX dw 0 ; DATA XREF: SysParse+1Bw DGROUP:11CE ; SysParse+14Br ... DGROUP:11D0 _$P_Terminator db 0 ; DATA XREF: SysParse+150r DGROUP:11D0 ; _$P_Chk_Delim+2w ... DGROUP:11D1 _$P_DBCSEV_OFF dw 0 ; DATA XREF: _$P_Chk_DBCS:_$P_DBCS02w DGROUP:11D1 ; _$P_Chk_DBCS:_$P_DBCS00r DGROUP:11D3 _$P_DBCSEV_SEG dw 0 ; DATA XREF: _$P_Chk_DBCS+3r DGROUP:11D3 ; _$P_Chk_DBCS+2Dw DGROUP:11D5 _$P_Flags db 0 ; DATA XREF: SysParsew DGROUP:11D6 _$P_Flags2 db 0 ; DATA XREF: SysParse+46r DGROUP:11D6 ; SysParse+5Er ... DGROUP:11D7 _$P_SaveSI_Cmpx dw 0 ; DATA XREF: SysParse:_$P_Startw DGROUP:11D7 ; _$P_Chk_SW_Control+18w ... DGROUP:11D9 _$P_KEYorSW_Ptr dw 0 ; DATA XREF: _$P_Chk_SW_Control+12r DGROUP:11D9 ; _$P_Chk_SW_Control+1Er ... DGROUP:11DB _$P_Save_EOB dw 0 ; DATA XREF: SysParse+9Aw DGROUP:11DD _$P_Found_SYNONYM dw 0 ; DATA XREF: SysParse+14w DGROUP:11DD ; _$P_Search_KEYorSW:_$P_KEYorSW_Foundw ... DGROUP:11DF _$P_STRING_BUF db 128 dup(0) ; DATA XREF: SysParse+42o DGROUP:11DF ; SysParse+A2o ... DGROUP:125F _$P_Got_Time db 0 ; DATA XREF: _$P_Get_DecNum+Br DGROUP:1260 _$P_Country_Info dw 0FFFFh ; DATA XREF: _$P_Date_Format:_$P_DateF_YMDr DGROUP:1260 ; _$P_Set_CDIo DGROUP:1262 db 32 dup(0) DGROUP:1282 _$P_1st_Val dw 0 ; DATA XREF: _$P_Date_Format+Cw DGROUP:1282 ; _$P_Date_Format+1Dw ... DGROUP:1284 _$P_2nd_Val dw 0 ; DATA XREF: _$P_Date_Format+10w DGROUP:1284 ; _$P_Date_Format+2Aw ... DGROUP:1286 _$P_3rd_Val dw 0 ; DATA XREF: _$P_Date_Format+14w DGROUP:1286 ; _$P_Date_Format+37w ... DGROUP:1288 _$P_4th_Val dw 0 DGROUP:128A _$P_Char_CAP_Ptr db 0FFh ; DATA XREF: _$P_Do_CAPS_Char+12o DGROUP:128B dw 0 DGROUP:128D dw 0 DGROUP:128F _$P_err_flag db 0 ; DATA XREF: _$P_Check_Match_Flagsw DGROUP:128F ; _$P_Check_Match_Flags:_$P_Match_Exitr DGROUP:1290 DGROUP:1290 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1290 DGROUP:1290 DGROUP:1290 SysParse proc near ; CODE XREF: CallParser+7p DGROUP:1290 DGROUP:1290 ; FUNCTION CHUNK AT DGROUP:137E SIZE 00000069 BYTES DGROUP:1290 DGROUP:1290 mov word ptr cs:_$P_Flags, 0 DGROUP:1297 cld DGROUP:1298 mov cs:_$P_ordinal, cx DGROUP:129D mov cs:_$P_RC, 0 DGROUP:12A4 mov cs:_$P_Found_SYNONYM, 0 DGROUP:12AB mov cs:_$P_DX, 0 DGROUP:12B2 call _$P_Skip_Delim DGROUP:12B5 jnb short _$P_Start DGROUP:12B7 mov ax, 0FFFFh DGROUP:12BA push bx DGROUP:12BB mov bx, es:[di] DGROUP:12BE cmp cl, es:[bx] DGROUP:12C1 jnb short _$P_Fin DGROUP:12C3 mov ax, 2 DGROUP:12C6 DGROUP:12C6 _$P_Fin: ; CODE XREF: SysParse+31j DGROUP:12C6 pop bx DGROUP:12C7 jmp loc_9EB5 DGROUP:12CA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:12CA DGROUP:12CA _$P_Start: ; CODE XREF: SysParse+25j DGROUP:12CA mov cs:_$P_SaveSI_Cmpx, si DGROUP:12CF push bx DGROUP:12D0 push di DGROUP:12D1 push bp DGROUP:12D2 lea bx, _$P_STRING_BUF DGROUP:12D6 test cs:_$P_Flags2, 20h DGROUP:12DC jnz short _$P_Pack_End DGROUP:12DE DGROUP:12DE _$P_Pack_Loop: ; CODE XREF: SysParse+87j DGROUP:12DE ; SysParse+8Ej DGROUP:12DE lodsb DGROUP:12DF call _$P_Chk_Switch DGROUP:12E2 jb short _$P_Pack_End_BY_EOL DGROUP:12E4 call _$P_Chk_EOL DGROUP:12E7 jz short _$P_Pack_End_BY_EOL DGROUP:12E9 call _$P_Chk_Delim DGROUP:12EC jnz short $P_PL01 DGROUP:12EE test cs:_$P_Flags2, 20h DGROUP:12F4 jnz short _$P_Pack_End_backup_si DGROUP:12F6 call _$P_Skip_Delim DGROUP:12F9 jmp short _$P_Pack_End DGROUP:12FB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:12FB DGROUP:12FB _$P_Pack_End_backup_si: ; CODE XREF: SysParse+64j DGROUP:12FB test cs:_$P_Flags2, 41h DGROUP:1301 jz short _$P_Pack_End DGROUP:1303 dec si DGROUP:1304 jmp short _$P_Pack_End DGROUP:1306 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1306 DGROUP:1306 $P_PL01: ; CODE XREF: SysParse+5Cj DGROUP:1306 mov cs:[bx], al DGROUP:1309 cmp al, '=' DGROUP:130B jnz short _$P_PL00 DGROUP:130D or cs:_$P_Flags2, 1 DGROUP:1313 DGROUP:1313 _$P_PL00: ; CODE XREF: SysParse+7Bj DGROUP:1313 inc bx DGROUP:1314 call _$P_Chk_DBCS DGROUP:1317 jnb short _$P_Pack_Loop DGROUP:1319 lodsb DGROUP:131A mov cs:[bx], al DGROUP:131D inc bx DGROUP:131E jmp short _$P_Pack_Loop DGROUP:1320 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1320 DGROUP:1320 _$P_Pack_End_BY_EOL: ; CODE XREF: SysParse+52j DGROUP:1320 ; SysParse+57j DGROUP:1320 dec si DGROUP:1321 DGROUP:1321 _$P_Pack_End: ; CODE XREF: SysParse+4Cj DGROUP:1321 ; SysParse+69j ... DGROUP:1321 mov cs:_$P_SI_Save, si DGROUP:1326 mov byte ptr cs:[bx], 0 DGROUP:132A mov cs:_$P_Save_EOB, bx DGROUP:132F mov bx, es:[di] DGROUP:1332 lea si, _$P_STRING_BUF DGROUP:1336 cmp byte ptr cs:[si], '/' DGROUP:133A jz short loc_9E4E DGROUP:133C cmp byte ptr cs:[si], '"' DGROUP:1340 jz short _$P_Positional_Manager DGROUP:1342 test cs:_$P_Flags2, 1 DGROUP:1348 jnz short loc_9E70 DGROUP:134A DGROUP:134A _$P_Positional_Manager: ; CODE XREF: SysParse+B0j DGROUP:134A mov al, es:[bx+1] DGROUP:134E xor ah, ah DGROUP:1350 cmp cs:_$P_ordinal, ax DGROUP:1355 jnb short _$P_Too_Many_Error DGROUP:1357 mov ax, cs:_$P_ordinal DGROUP:135B shl ax, 1 DGROUP:135D inc bx DGROUP:135E inc bx DGROUP:135F add bx, ax DGROUP:1361 mov bx, es:[bx] DGROUP:1364 call _$P_Chk_Pos_Control DGROUP:1367 jmp short loc_9E9A DGROUP:1369 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1369 DGROUP:1369 _$P_Too_Many_Error: ; CODE XREF: SysParse+C5j DGROUP:1369 mov cs:_$P_RC, 1 DGROUP:1370 jmp short loc_9E9A DGROUP:1370 SysParse endp DGROUP:1370 DGROUP:1372 DGROUP:1372 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1372 DGROUP:1372 DGROUP:1372 _$P_SW_Key_Mgr_sub proc near ; CODE XREF: SysParse:loc_9E4Ep DGROUP:1372 ; SysParse:loc_9E70p DGROUP:1372 mov al, es:[bx+1] DGROUP:1376 xor ah, ah DGROUP:1378 inc ax DGROUP:1379 shl ax, 1 DGROUP:137B add bx, ax DGROUP:137D retn DGROUP:137D _$P_SW_Key_Mgr_sub endp DGROUP:137D DGROUP:137E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:137E ; START OF FUNCTION CHUNK FOR SysParse DGROUP:137E DGROUP:137E loc_9E4E: ; CODE XREF: SysParse+AAj DGROUP:137E call _$P_SW_Key_Mgr_sub DGROUP:1381 mov cl, es:[bx] DGROUP:1384 xor ch, ch DGROUP:1386 jcxz short loc_9E67 DGROUP:1388 inc bx DGROUP:1389 DGROUP:1389 loc_9E59: ; CODE XREF: SysParse+105j DGROUP:1389 push bx DGROUP:138A mov bx, es:[bx] DGROUP:138D call _$P_Chk_SW_Control DGROUP:1390 pop bx DGROUP:1391 jnb short loc_9E9A DGROUP:1393 inc bx DGROUP:1394 inc bx DGROUP:1395 loop loc_9E59 DGROUP:1397 DGROUP:1397 loc_9E67: ; CODE XREF: SysParse+F6j DGROUP:1397 mov cs:_$P_RC, 3 DGROUP:139E jmp short loc_9E9A DGROUP:13A0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:13A0 DGROUP:13A0 loc_9E70: ; CODE XREF: SysParse+B8j DGROUP:13A0 call _$P_SW_Key_Mgr_sub DGROUP:13A3 mov al, es:[bx] DGROUP:13A6 xor ah, ah DGROUP:13A8 shl ax, 1 DGROUP:13AA inc ax DGROUP:13AB add bx, ax DGROUP:13AD mov cl, es:[bx] DGROUP:13B0 xor ch, ch DGROUP:13B2 jcxz short loc_9E93 DGROUP:13B4 inc bx DGROUP:13B5 DGROUP:13B5 loc_9E85: ; CODE XREF: SysParse+131j DGROUP:13B5 push bx DGROUP:13B6 mov bx, es:[bx] DGROUP:13B9 call _$P_Chk_Key_Control DGROUP:13BC pop bx DGROUP:13BD jnb short loc_9E9A DGROUP:13BF inc bx DGROUP:13C0 inc bx DGROUP:13C1 loop loc_9E85 DGROUP:13C3 DGROUP:13C3 loc_9E93: ; CODE XREF: SysParse+122j DGROUP:13C3 mov cs:_$P_RC, 4 DGROUP:13CA DGROUP:13CA loc_9E9A: ; CODE XREF: SysParse+D7j DGROUP:13CA ; SysParse+E0j ... DGROUP:13CA pop bp DGROUP:13CB pop di DGROUP:13CC pop bx DGROUP:13CD mov cx, cs:_$P_ordinal DGROUP:13D2 mov ax, cs:_$P_RC DGROUP:13D6 mov si, cs:_$P_SI_Save DGROUP:13DB mov dx, cs:_$P_DX DGROUP:13E0 mov bl, cs:_$P_Terminator DGROUP:13E5 DGROUP:13E5 loc_9EB5: ; CODE XREF: SysParse+37j DGROUP:13E5 clc DGROUP:13E6 retn DGROUP:13E6 ; END OF FUNCTION CHUNK FOR SysParse DGROUP:13E7 DGROUP:13E7 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:13E7 DGROUP:13E7 DGROUP:13E7 _$P_Chk_Pos_Control proc near ; CODE XREF: SysParse+D4p DGROUP:13E7 push ax DGROUP:13E8 mov ax, es:[bx] DGROUP:13EB test ax, 2 DGROUP:13EE jnz short _$P_CPC00 DGROUP:13F0 inc cs:_$P_ordinal DGROUP:13F5 DGROUP:13F5 _$P_CPC00: ; CODE XREF: _$P_Chk_Pos_Control+7j DGROUP:13F5 cmp byte ptr cs:[si], 0 DGROUP:13F9 jnz short _$P_CPC01 DGROUP:13FB test ax, 1 DGROUP:13FE jnz short _$P_CPC02 DGROUP:1400 mov cs:_$P_RC, 2 DGROUP:1407 jmp short _$P_CPC_Exit DGROUP:1409 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1409 DGROUP:1409 _$P_CPC02: ; CODE XREF: _$P_Chk_Pos_Control+17j DGROUP:1409 push ax DGROUP:140A mov ax, 0FF03h DGROUP:140D call _$P_Fill_Result DGROUP:1410 pop ax DGROUP:1411 jmp short _$P_CPC_Exit DGROUP:1413 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1413 DGROUP:1413 _$P_CPC01: ; CODE XREF: _$P_Chk_Pos_Control+12j DGROUP:1413 call _$P_Check_Match_Flags DGROUP:1416 DGROUP:1416 _$P_CPC_Exit: ; CODE XREF: _$P_Chk_Pos_Control+20j DGROUP:1416 ; _$P_Chk_Pos_Control+2Aj DGROUP:1416 pop ax DGROUP:1417 retn DGROUP:1417 _$P_Chk_Pos_Control endp DGROUP:1417 DGROUP:1418 DGROUP:1418 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1418 DGROUP:1418 DGROUP:1418 _$P_Chk_Key_Control proc near ; CODE XREF: SysParse+129p DGROUP:1418 stc DGROUP:1419 retn DGROUP:1419 _$P_Chk_Key_Control endp DGROUP:1419 DGROUP:141A DGROUP:141A ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:141A DGROUP:141A DGROUP:141A _$P_Search_KEYorSW proc near ; CODE XREF: _$P_Chk_SW_Control+6p DGROUP:141A push bp DGROUP:141B push cx DGROUP:141C mov cl, es:[bx+8] DGROUP:1420 xor ch, ch DGROUP:1422 jcxz short _$P_KEYorSW_Not_Found DGROUP:1424 lea bp, [bx+9] DGROUP:1427 DGROUP:1427 _$P_KEYorSW_Loop: ; CODE XREF: _$P_Search_KEYorSW+15j DGROUP:1427 call _$P_String_Comp DGROUP:142A jnb short _$P_KEYorSW_Found DGROUP:142C call _$P_MoveBP_NUL DGROUP:142F loop _$P_KEYorSW_Loop DGROUP:1431 DGROUP:1431 _$P_KEYorSW_Not_Found: ; CODE XREF: _$P_Search_KEYorSW+8j DGROUP:1431 stc DGROUP:1432 jmp short _$P_KEYorSW_Exit DGROUP:1434 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1434 DGROUP:1434 _$P_KEYorSW_Found: ; CODE XREF: _$P_Search_KEYorSW+10j DGROUP:1434 mov cs:_$P_Found_SYNONYM, bp DGROUP:1439 clc DGROUP:143A DGROUP:143A _$P_KEYorSW_Exit: ; CODE XREF: _$P_Search_KEYorSW+18j DGROUP:143A pop cx DGROUP:143B pop bp DGROUP:143C retn DGROUP:143C _$P_Search_KEYorSW endp DGROUP:143C DGROUP:143D DGROUP:143D ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:143D DGROUP:143D DGROUP:143D _$P_MoveBP_NUL proc near ; CODE XREF: _$P_Search_KEYorSW+12p DGROUP:143D ; _$P_MoveBP_NUL+8j DGROUP:143D cmp byte ptr es:[bp+0], 0 DGROUP:1442 jz short _$P_MBP_Exit DGROUP:1444 inc bp DGROUP:1445 jmp short _$P_MoveBP_NUL DGROUP:1447 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1447 DGROUP:1447 _$P_MBP_Exit: ; CODE XREF: _$P_MoveBP_NUL+5j DGROUP:1447 inc bp DGROUP:1448 retn DGROUP:1448 _$P_MoveBP_NUL endp DGROUP:1448 DGROUP:1449 DGROUP:1449 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1449 DGROUP:1449 DGROUP:1449 _$P_Chk_SW_Control proc near ; CODE XREF: SysParse+FDp DGROUP:1449 or cs:_$P_Flags2, 10h DGROUP:144F call _$P_Search_KEYorSW DGROUP:1452 jb short _$P_Chk_SW_Err0 DGROUP:1454 and cs:_$P_Flags2, not 10h DGROUP:145A push ax DGROUP:145B mov ax, cs:_$P_KEYorSW_Ptr DGROUP:145F sub ax, si DGROUP:1461 add cs:_$P_SaveSI_Cmpx, ax DGROUP:1466 pop ax DGROUP:1467 mov si, cs:_$P_KEYorSW_Ptr DGROUP:146C cmp byte ptr cs:[si], 0 DGROUP:1470 jnz short _$P_CSW00 DGROUP:1472 cmp byte ptr cs:[si-1], ':' DGROUP:1477 jnz short _$P_Chk_if_data_required DGROUP:1479 mov cs:_$P_RC, 9 DGROUP:1480 jmp short _$P_Chk_SW_Exit DGROUP:1482 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1482 DGROUP:1482 _$P_Chk_if_data_required: ; CODE XREF: _$P_Chk_SW_Control+2Ej DGROUP:1482 cmp word ptr es:[bx], 0 DGROUP:1486 jz short _$P_Chk_SW_Exit DGROUP:1488 test word ptr es:[bx], 1 DGROUP:148D jnz short _$P_Chk_SW_Exit DGROUP:148F mov cs:_$P_RC, 2 DGROUP:1496 jmp short _$P_Chk_SW_Exit DGROUP:1498 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1498 DGROUP:1498 _$P_CSW00: ; CODE XREF: _$P_Chk_SW_Control+27j DGROUP:1498 call _$P_Check_Match_Flags DGROUP:149B clc DGROUP:149C jmp short _$P_Chk_SW_Single_Exit DGROUP:149E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:149E DGROUP:149E _$P_Chk_SW_Err0: ; CODE XREF: _$P_Chk_SW_Control+9j DGROUP:149E stc DGROUP:149F retn DGROUP:14A0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:14A0 DGROUP:14A0 _$P_Chk_SW_Exit: ; CODE XREF: _$P_Chk_SW_Control+37j DGROUP:14A0 ; _$P_Chk_SW_Control+3Dj ... DGROUP:14A0 push ax DGROUP:14A1 mov ax, 0FF03h DGROUP:14A4 call _$P_Fill_Result DGROUP:14A7 pop ax DGROUP:14A8 clc DGROUP:14A9 DGROUP:14A9 _$P_Chk_SW_Single_Exit: ; CODE XREF: _$P_Chk_SW_Control+53j DGROUP:14A9 retn DGROUP:14A9 _$P_Chk_SW_Control endp DGROUP:14A9 DGROUP:14AA DGROUP:14AA ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:14AA DGROUP:14AA DGROUP:14AA _$P_Fill_Result proc near ; CODE XREF: _$P_Chk_Pos_Control+26p DGROUP:14AA ; _$P_Chk_SW_Control+5Bp ... DGROUP:14AA push di DGROUP:14AB mov di, es:[bx+4] DGROUP:14AF mov cs:_$P_DX, di DGROUP:14B4 mov es:[di], al DGROUP:14B7 mov es:[di+1], ah DGROUP:14BB push ax DGROUP:14BC mov ax, cs:_$P_Found_SYNONYM DGROUP:14C0 mov es:[di+2], ax DGROUP:14C4 pop ax DGROUP:14C5 DGROUP:14C5 _$P_RLT04: DGROUP:14C5 cmp al, 1 DGROUP:14C7 jnz short _$P_RLT00 DGROUP:14C9 DGROUP:14C9 _$P_RLT02: ; CODE XREF: _$P_Fill_Result+35j DGROUP:14C9 ; _$P_Fill_Result+39j DGROUP:14C9 mov es:[di+4], dx DGROUP:14CD mov es:[di+6], cx DGROUP:14D1 jmp short _$P_RLT_Exit DGROUP:14D3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:14D3 DGROUP:14D3 _$P_RLT00: ; CODE XREF: _$P_Fill_Result+1Dj DGROUP:14D3 cmp al, 2 DGROUP:14D5 jnz short _$P_RLT01 DGROUP:14D7 mov es:[di+4], dx DGROUP:14DB jmp short _$P_RLT_Exit DGROUP:14DD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:14DD DGROUP:14DD _$P_RLT01: ; CODE XREF: _$P_Fill_Result+2Bj DGROUP:14DD cmp al, 7 DGROUP:14DF jz short _$P_RLT02 DGROUP:14E1 cmp al, 8 DGROUP:14E3 jz short _$P_RLT02 DGROUP:14E5 cmp al, 6 DGROUP:14E7 jnz short _$P_RLT03 DGROUP:14E9 mov es:[di+4], dl DGROUP:14ED jmp short _$P_RLT_Exit DGROUP:14EF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:14EF DGROUP:14EF _$P_RLT03: ; CODE XREF: _$P_Fill_Result+3Dj DGROUP:14EF cmp al, 4 DGROUP:14F1 jnz short _$P_RLT05 DGROUP:14F3 mov ax, cs:_$P_SaveSI_Cmpx DGROUP:14F7 inc ax DGROUP:14F8 mov es:[di+4], ax DGROUP:14FC mov word ptr es:[di+6], ds DGROUP:1500 jmp short _$P_RLT_Exit DGROUP:1502 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1502 DGROUP:1502 _$P_RLT05: ; CODE XREF: _$P_Fill_Result+47j DGROUP:1502 mov es:[di+4], si DGROUP:1506 mov word ptr es:[di+6], cs DGROUP:150A push ax DGROUP:150B test byte ptr es:[bx+2], 1 DGROUP:1510 jz short _$P_RLT_CAP00 DGROUP:1512 mov al, 4 DGROUP:1514 jmp short _$P_RLT_CAP02 DGROUP:1516 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1516 DGROUP:1516 _$P_RLT_CAP00: ; CODE XREF: _$P_Fill_Result+66j DGROUP:1516 test byte ptr es:[bx+2], 2 DGROUP:151B jz short _$P_RLT_CAP01 DGROUP:151D mov al, 2 DGROUP:151F DGROUP:151F _$P_RLT_CAP02: ; CODE XREF: _$P_Fill_Result+6Aj DGROUP:151F call _$P_Do_CAPS_String DGROUP:1522 DGROUP:1522 _$P_RLT_CAP01: ; CODE XREF: _$P_Fill_Result+71j DGROUP:1522 pop ax DGROUP:1523 test byte ptr es:[bx+2], 10h DGROUP:1528 jz short _$P_RLT_Exit DGROUP:152A call _$P_Remove_Colon DGROUP:152D DGROUP:152D _$P_RLT_Exit: ; CODE XREF: _$P_Fill_Result+27j DGROUP:152D ; _$P_Fill_Result+31j ... DGROUP:152D pop di DGROUP:152E retn DGROUP:152E _$P_Fill_Result endp DGROUP:152E DGROUP:152F DGROUP:152F ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:152F DGROUP:152F DGROUP:152F _$P_Check_Match_Flags proc near ; CODE XREF: _$P_Chk_Pos_Control:_$P_CPC01p DGROUP:152F ; _$P_Chk_SW_Control:_$P_CSW00p DGROUP:152F mov cs:_$P_err_flag, 0 DGROUP:1535 push ax DGROUP:1536 mov ax, es:[bx] DGROUP:1539 or ax, ax DGROUP:153B jnz short _$P_Mat DGROUP:153D push ax DGROUP:153E push bx DGROUP:153F push dx DGROUP:1540 push di DGROUP:1541 mov cs:_$P_RC, 9 DGROUP:1548 mov ax, 0FF03h DGROUP:154B call _$P_Fill_Result DGROUP:154E pop di DGROUP:154F pop dx DGROUP:1550 pop bx DGROUP:1551 pop ax DGROUP:1552 jmp short _$P_Bridge DGROUP:1554 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1554 DGROUP:1554 _$P_Mat: ; CODE XREF: _$P_Check_Match_Flags+Cj DGROUP:1554 test ax, 1000h DGROUP:1557 jz short _$P_Match01 DGROUP:1559 mov cs:_$P_RC, 0 DGROUP:1560 call _$P_Date_Format DGROUP:1563 cmp cs:_$P_RC, 9 DGROUP:1569 jnz short _$P_Bridge DGROUP:156B DGROUP:156B _$P_Match01: ; CODE XREF: _$P_Check_Match_Flags+28j DGROUP:156B jmp short _$P_Match03 DGROUP:156D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:156D DGROUP:156D _$P_Bridge: ; CODE XREF: _$P_Check_Match_Flags+23j DGROUP:156D ; _$P_Check_Match_Flags+3Aj DGROUP:156D jmp short _$P_Match_Exit DGROUP:156F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:156F DGROUP:156F _$P_Match03: ; CODE XREF: _$P_Check_Match_Flags:_$P_Match01j DGROUP:156F test ax, 8000h DGROUP:1572 jz short _$P_Match04 DGROUP:1574 mov cs:_$P_RC, 0 DGROUP:157B call _$P_Value DGROUP:157E cmp cs:_$P_RC, 9 DGROUP:1584 jnz short _$P_Match_Exit DGROUP:1586 DGROUP:1586 _$P_Match04: ; CODE XREF: _$P_Check_Match_Flags+43j DGROUP:1586 test ax, 4000h DGROUP:1589 jz short _$P_Match05 DGROUP:158B mov cs:_$P_RC, 0 DGROUP:1592 call _$P_SValue DGROUP:1595 cmp cs:_$P_RC, 9 DGROUP:159B jnz short _$P_Match_Exit DGROUP:159D DGROUP:159D _$P_Match05: ; CODE XREF: _$P_Check_Match_Flags+5Aj DGROUP:159D test ax, 2000h DGROUP:15A0 jz short _$P_Match_Exit DGROUP:15A2 mov cs:_$P_RC, 0 DGROUP:15A9 call _$P_Simple_String DGROUP:15AC DGROUP:15AC _$P_Match_Exit: ; CODE XREF: _$P_Check_Match_Flags:_$P_Bridgej DGROUP:15AC ; _$P_Check_Match_Flags+55j ... DGROUP:15AC cmp cs:_$P_err_flag, 1 DGROUP:15B2 jnz short _$P_Match2_Exit DGROUP:15B4 cmp cs:_$P_RC, 0 DGROUP:15BA jnz short _$P_Match2_Exit DGROUP:15BC mov cs:_$P_RC, 9 DGROUP:15C3 DGROUP:15C3 _$P_Match2_Exit: ; CODE XREF: _$P_Check_Match_Flags+83j DGROUP:15C3 ; _$P_Check_Match_Flags+8Bj DGROUP:15C3 pop ax DGROUP:15C4 retn DGROUP:15C4 _$P_Check_Match_Flags endp DGROUP:15C4 DGROUP:15C5 DGROUP:15C5 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:15C5 DGROUP:15C5 DGROUP:15C5 _$P_Remove_Colon proc near ; CODE XREF: _$P_Fill_Result+80p DGROUP:15C5 push ax DGROUP:15C6 push si DGROUP:15C7 DGROUP:15C7 _$P_RCOL_Loop: ; CODE XREF: _$P_Remove_Colon+21j DGROUP:15C7 mov al, cs:[si] DGROUP:15CA or al, al DGROUP:15CC jz short _$P_RCOL_Exit DGROUP:15CE cmp al, ':' DGROUP:15D0 jnz short _$P_RCOL00 DGROUP:15D2 cmp byte ptr cs:[si+1], 0 DGROUP:15D7 jnz short _$P_RCOL00 DGROUP:15D9 mov byte ptr cs:[si], 0 DGROUP:15DD jmp short _$P_RCOL_Exit DGROUP:15DF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:15DF DGROUP:15DF _$P_RCOL00: ; CODE XREF: _$P_Remove_Colon+Bj DGROUP:15DF ; _$P_Remove_Colon+12j DGROUP:15DF call _$P_Chk_DBCS DGROUP:15E2 jnb short _$P_RCOL01 DGROUP:15E4 inc si DGROUP:15E5 DGROUP:15E5 _$P_RCOL01: ; CODE XREF: _$P_Remove_Colon+1Dj DGROUP:15E5 inc si DGROUP:15E6 jmp short _$P_RCOL_Loop DGROUP:15E8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:15E8 DGROUP:15E8 _$P_RCOL_Exit: ; CODE XREF: _$P_Remove_Colon+7j DGROUP:15E8 ; _$P_Remove_Colon+18j DGROUP:15E8 pop si DGROUP:15E9 pop ax DGROUP:15EA retn DGROUP:15EA _$P_Remove_Colon endp DGROUP:15EA DGROUP:15EB DGROUP:15EB ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:15EB DGROUP:15EB DGROUP:15EB _$P_Do_CAPS_String proc near ; CODE XREF: _$P_Fill_Result:_$P_RLT_CAP02p DGROUP:15EB push si DGROUP:15EC push dx DGROUP:15ED mov dl, al DGROUP:15EF DGROUP:15EF _$P_DCS_Loop: ; CODE XREF: _$P_Do_CAPS_String+1Aj DGROUP:15EF mov al, cs:[si] DGROUP:15F2 call _$P_Chk_DBCS DGROUP:15F5 jb short _$P_DCS00 DGROUP:15F7 or al, al DGROUP:15F9 jz short _$P_DCS_Exit DGROUP:15FB call _$P_Do_CAPS_Char DGROUP:15FE mov cs:[si], al DGROUP:1601 jmp short _$P_DCS01 DGROUP:1603 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1603 DGROUP:1603 _$P_DCS00: ; CODE XREF: _$P_Do_CAPS_String+Aj DGROUP:1603 inc si DGROUP:1604 DGROUP:1604 _$P_DCS01: ; CODE XREF: _$P_Do_CAPS_String+16j DGROUP:1604 inc si DGROUP:1605 jmp short _$P_DCS_Loop DGROUP:1607 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1607 DGROUP:1607 _$P_DCS_Exit: ; CODE XREF: _$P_Do_CAPS_String+Ej DGROUP:1607 pop dx DGROUP:1608 pop si DGROUP:1609 retn DGROUP:1609 _$P_Do_CAPS_String endp DGROUP:1609 DGROUP:160A DGROUP:160A ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:160A DGROUP:160A DGROUP:160A _$P_Do_CAPS_Char proc near ; CODE XREF: _$P_Do_CAPS_String+10p DGROUP:160A ; _$P_String_Comp+Ep DGROUP:160A cmp al, 80h DGROUP:160C jnb short _$P_DCC_Go DGROUP:160E cmp al, 'a' DGROUP:1610 jb short _$P_CAPS_Ret DGROUP:1612 cmp al, 'z' DGROUP:1614 ja short _$P_CAPS_Ret DGROUP:1616 and al, 0DFh DGROUP:1618 retn DGROUP:1619 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1619 DGROUP:1619 _$P_DCC_Go: ; CODE XREF: _$P_Do_CAPS_Char+2j DGROUP:1619 push bx DGROUP:161A push es DGROUP:161B push di DGROUP:161C lea di, _$P_Char_CAP_Ptr DGROUP:1620 DGROUP:1620 _$P_DCC00: DGROUP:1620 cmp cs:[di], dl DGROUP:1623 jz short _$P_DCC01 DGROUP:1625 push ax DGROUP:1626 push cx DGROUP:1627 push dx DGROUP:1628 push cs DGROUP:1629 pop es DGROUP:162A assume es:DGROUP DGROUP:162A xchg ax, dx DGROUP:162B mov ah, 65h DGROUP:162D mov bx, 0FFFFh DGROUP:1630 mov cx, 5 DGROUP:1633 mov dx, bx DGROUP:1635 int 21h ; DOS - 4.x internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION DGROUP:1635 ; AL = function - DGROUP:1637 pop dx DGROUP:1638 pop cx DGROUP:1639 pop ax DGROUP:163A DGROUP:163A _$P_DCC01: ; CODE XREF: _$P_Do_CAPS_Char+19j DGROUP:163A les bx, cs:[di+1] DGROUP:163E assume es:nothing DGROUP:163E inc bx DGROUP:163F inc bx DGROUP:1640 sub al, 80h DGROUP:1642 xlat byte ptr es:[bx] DGROUP:1644 pop di DGROUP:1645 pop es DGROUP:1646 pop bx DGROUP:1647 DGROUP:1647 _$P_CAPS_Ret: ; CODE XREF: _$P_Do_CAPS_Char+6j DGROUP:1647 ; _$P_Do_CAPS_Char+Aj DGROUP:1647 retn DGROUP:1647 _$P_Do_CAPS_Char endp DGROUP:1647 DGROUP:1648 DGROUP:1648 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1648 DGROUP:1648 DGROUP:1648 _$P_SValue proc near ; CODE XREF: _$P_Check_Match_Flags+63p DGROUP:1648 push ax DGROUP:1649 or cs:_$P_Flags2, 80h DGROUP:164F and cs:_$P_Flags2, not 2 DGROUP:1655 mov al, cs:[si] DGROUP:1658 cmp al, '+' DGROUP:165A jz short _$P_SVal00 DGROUP:165C cmp al, '-' DGROUP:165E jnz short _$P_Sval01 DGROUP:1660 or cs:_$P_Flags2, 2 DGROUP:1666 DGROUP:1666 _$P_SVal00: ; CODE XREF: _$P_SValue+12j DGROUP:1666 inc si DGROUP:1667 DGROUP:1667 _$P_Sval01: ; CODE XREF: _$P_SValue+16j DGROUP:1667 call _$P_Value DGROUP:166A pop ax DGROUP:166B retn DGROUP:166B _$P_SValue endp DGROUP:166B DGROUP:166C DGROUP:166C ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:166C DGROUP:166C DGROUP:166C _$P_Value proc near ; CODE XREF: _$P_Check_Match_Flags+4Cp DGROUP:166C ; _$P_SValue:_$P_Sval01p DGROUP:166C push ax DGROUP:166D push cx DGROUP:166E push dx DGROUP:166F push si DGROUP:1670 xor cx, cx DGROUP:1672 xor dx, dx DGROUP:1674 push bx DGROUP:1675 DGROUP:1675 _$P_Value_Loop: ; CODE XREF: _$P_Value+36j DGROUP:1675 mov al, cs:[si] DGROUP:1678 or al, al DGROUP:167A jz short _$P_Value00 DGROUP:167C call _$P_0099 DGROUP:167F jb short _$P_Value_Err0 DGROUP:1681 xor ah, ah DGROUP:1683 mov bp, ax DGROUP:1685 call _$P_Value_sub1 DGROUP:1688 mov bx, dx DGROUP:168A mov ax, cx DGROUP:168C call _$P_Value_sub1 DGROUP:168F call _$P_Value_sub1 DGROUP:1692 add dx, bx DGROUP:1694 adc cx, ax DGROUP:1696 call _$P_Value_sub2 DGROUP:1699 add dx, bp DGROUP:169B adc cx, 0 DGROUP:169E call _$P_Value_sub2 DGROUP:16A1 inc si DGROUP:16A2 jmp short _$P_Value_Loop DGROUP:16A4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:16A4 DGROUP:16A4 _$P_Value_sub1: ; CODE XREF: _$P_Value+19p DGROUP:16A4 ; _$P_Value+20p ... DGROUP:16A4 shl dx, 1 DGROUP:16A6 rcl cx, 1 DGROUP:16A8 DGROUP:16A8 _$P_Value_sub2: ; CODE XREF: _$P_Value+2Ap DGROUP:16A8 ; _$P_Value+32p DGROUP:16A8 call _$P_Check_OVF DGROUP:16AB jb short _$P_Value_sub2_err DGROUP:16AD retn DGROUP:16AE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:16AE DGROUP:16AE _$P_Value_sub2_err: ; CODE XREF: _$P_Value+3Fj DGROUP:16AE inc sp DGROUP:16AF inc sp DGROUP:16B0 DGROUP:16B0 _$P_Value_Err0: ; CODE XREF: _$P_Value+13j DGROUP:16B0 pop bx DGROUP:16B1 jmp _$P_Value_Err DGROUP:16B4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:16B4 DGROUP:16B4 _$P_Value00: ; CODE XREF: _$P_Value+Ej DGROUP:16B4 pop bx DGROUP:16B5 test cs:_$P_Flags2, 2 DGROUP:16BB jz short _$P_Value01 DGROUP:16BD not cx DGROUP:16BF not dx DGROUP:16C1 add dx, 1 DGROUP:16C4 adc cx, 0 DGROUP:16C7 DGROUP:16C7 _$P_Value01: ; CODE XREF: _$P_Value+4Fj DGROUP:16C7 mov si, es:[bx+6] DGROUP:16CB mov al, es:[si] DGROUP:16CE cmp al, 0 DGROUP:16D0 jnz short _$P_Value02 DGROUP:16D2 mov ax, 0FF01h DGROUP:16D5 jmp _$P_Value_Exit DGROUP:16D8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:16D8 DGROUP:16D8 _$P_Value02: ; CODE XREF: _$P_Value+64j DGROUP:16D8 inc si DGROUP:16D9 mov al, es:[si] DGROUP:16DC cmp al, 0 DGROUP:16DE jz short _$P_Value03 DGROUP:16E0 inc si DGROUP:16E1 DGROUP:16E1 _$P_Val02_Loop: ; CODE XREF: _$P_Value+BEj DGROUP:16E1 test cs:_$P_Flags2, 80h DGROUP:16E7 jnz short _$P_Val02_Sign DGROUP:16E9 cmp cx, es:[si+3] DGROUP:16ED jb short _$P_Val02_Next DGROUP:16EF ja short _$P_Val_In DGROUP:16F1 cmp dx, es:[si+1] DGROUP:16F5 jb short _$P_Val02_Next DGROUP:16F7 DGROUP:16F7 _$P_Val_In: ; CODE XREF: _$P_Value+83j DGROUP:16F7 cmp cx, es:[si+7] DGROUP:16FB ja short _$P_Val02_Next DGROUP:16FD jb short _$P_Val_Found DGROUP:16FF cmp dx, es:[si+5] DGROUP:1703 ja short _$P_Val02_Next DGROUP:1705 jmp short _$P_Val_Found DGROUP:1707 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1707 DGROUP:1707 _$P_Val02_Sign: ; CODE XREF: _$P_Value+7Bj DGROUP:1707 cmp cx, es:[si+3] DGROUP:170B jl short _$P_Val02_Next DGROUP:170D jg short _$P_SVal_In DGROUP:170F cmp dx, es:[si+1] DGROUP:1713 jl short _$P_Val02_Next DGROUP:1715 DGROUP:1715 _$P_SVal_In: ; CODE XREF: _$P_Value+A1j DGROUP:1715 cmp cx, es:[si+7] DGROUP:1719 jg short _$P_Val02_Next DGROUP:171B jl short _$P_Val_Found DGROUP:171D cmp dx, es:[si+5] DGROUP:1721 jg short _$P_Val02_Next DGROUP:1723 jmp short _$P_Val_Found DGROUP:1725 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1725 DGROUP:1725 _$P_Val02_Next: ; CODE XREF: _$P_Value+81j DGROUP:1725 ; _$P_Value+89j ... DGROUP:1725 add si, 9 DGROUP:1728 dec al DGROUP:172A jnz short _$P_Val02_Loop DGROUP:172C mov cs:_$P_RC, 6 DGROUP:1733 mov ax, 0FF01h DGROUP:1736 jmp short _$P_Value_Exit DGROUP:1738 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1738 DGROUP:1738 _$P_Val_Found: ; CODE XREF: _$P_Value+91j DGROUP:1738 ; _$P_Value+99j ... DGROUP:1738 mov al, 1 DGROUP:173A mov ah, es:[si] DGROUP:173D jmp short _$P_Value_Exit DGROUP:173F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:173F DGROUP:173F _$P_Value03: ; CODE XREF: _$P_Value+72j DGROUP:173F mov ah, 9 DGROUP:1741 mul ah DGROUP:1743 inc ax DGROUP:1744 add si, ax DGROUP:1746 mov al, es:[si] DGROUP:1749 inc si DGROUP:174A DGROUP:174A _$P_Val03_Loop: ; CODE XREF: _$P_Value+EFj DGROUP:174A cmp cx, es:[si+3] DGROUP:174E jnz short _$P_Val03_Next DGROUP:1750 cmp dx, es:[si+1] DGROUP:1754 jz short _$P_Val_Found DGROUP:1756 DGROUP:1756 _$P_Val03_Next: ; CODE XREF: _$P_Value+E2j DGROUP:1756 add si, 5 DGROUP:1759 dec al DGROUP:175B jnz short _$P_Val03_Loop DGROUP:175D mov cs:_$P_RC, 7 DGROUP:1764 mov ax, 0FF01h DGROUP:1767 jmp short _$P_Value_Exit DGROUP:1769 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1769 DGROUP:1769 _$P_Value_Err: ; CODE XREF: _$P_Value+45j DGROUP:1769 mov cs:_$P_RC, 9 DGROUP:1770 mov ax, 0FF03h DGROUP:1773 DGROUP:1773 _$P_Value_Exit: ; CODE XREF: _$P_Value+69j DGROUP:1773 ; _$P_Value+CAj ... DGROUP:1773 call _$P_Fill_Result DGROUP:1776 pop si DGROUP:1777 pop dx DGROUP:1778 pop cx DGROUP:1779 pop ax DGROUP:177A retn DGROUP:177A _$P_Value endp DGROUP:177A DGROUP:177B DGROUP:177B ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:177B DGROUP:177B DGROUP:177B _$P_Check_OVF proc near ; CODE XREF: _$P_Value:_$P_Value_sub2p DGROUP:177B pushf DGROUP:177C test cs:_$P_Flags2, 2 DGROUP:1782 jnz short _$P_COVF DGROUP:1784 popf DGROUP:1785 retn DGROUP:1786 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1786 DGROUP:1786 _$P_COVF: ; CODE XREF: _$P_Check_OVF+7j DGROUP:1786 popf DGROUP:1787 jo short _$P_COVF00 DGROUP:1789 clc DGROUP:178A retn DGROUP:178B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:178B DGROUP:178B _$P_COVF00: ; CODE XREF: _$P_Check_OVF+Cj DGROUP:178B stc DGROUP:178C retn DGROUP:178C _$P_Check_OVF endp DGROUP:178C DGROUP:178D DGROUP:178D ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:178D DGROUP:178D DGROUP:178D _$P_0099 proc near ; CODE XREF: _$P_Value+10p DGROUP:178D ; _$P_Get_DecNum:_$P_Neither_Delimsp ... DGROUP:178D cmp al, '0' DGROUP:178F jb short _$P_0099Err DGROUP:1791 cmp al, '9' DGROUP:1793 ja short _$P_0099Err DGROUP:1795 sub al, '0' DGROUP:1797 clc DGROUP:1798 retn DGROUP:1799 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1799 DGROUP:1799 _$P_0099Err: ; CODE XREF: _$P_0099+2j DGROUP:1799 ; _$P_0099+6j DGROUP:1799 stc DGROUP:179A retn DGROUP:179A _$P_0099 endp DGROUP:179A DGROUP:179B DGROUP:179B ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:179B DGROUP:179B DGROUP:179B _$P_Simple_String proc near ; CODE XREF: _$P_Check_Match_Flags+7Ap DGROUP:179B push ax DGROUP:179C push bx DGROUP:179D push dx DGROUP:179E push di DGROUP:179F mov di, es:[bx+6] DGROUP:17A3 mov al, es:[di] DGROUP:17A6 or al, al DGROUP:17A8 jnz short _$P_Sim01 DGROUP:17AA mov ah, 0FFh DGROUP:17AC jmp short _$P_Sim_Exit DGROUP:17AE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:17AE DGROUP:17AE _$P_Sim01: ; CODE XREF: _$P_Simple_String+Dj DGROUP:17AE mov cs:_$P_RC, 9 DGROUP:17B5 mov ah, 0FFh DGROUP:17B7 DGROUP:17B7 _$P_Sim_Exit: ; CODE XREF: _$P_Simple_String+11j DGROUP:17B7 mov al, 3 DGROUP:17B9 call _$P_Fill_Result DGROUP:17BC pop di DGROUP:17BD pop dx DGROUP:17BE pop bx DGROUP:17BF pop ax DGROUP:17C0 retn DGROUP:17C0 _$P_Simple_String endp DGROUP:17C0 DGROUP:17C1 DGROUP:17C1 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:17C1 DGROUP:17C1 DGROUP:17C1 _$P_String_Comp proc near ; CODE XREF: _$P_Search_KEYorSW:_$P_KEYorSW_Loopp DGROUP:17C1 push ax DGROUP:17C2 push bp DGROUP:17C3 push dx DGROUP:17C4 push si DGROUP:17C5 mov dl, 2 DGROUP:17C7 DGROUP:17C7 _$P_SCOM_Loop: ; CODE XREF: _$P_String_Comp:_$P_SCOM01j DGROUP:17C7 mov al, cs:[si] DGROUP:17CA call _$P_Chk_DBCS DGROUP:17CD jb short _$P_SCOM00 DGROUP:17CF call _$P_Do_CAPS_Char DGROUP:17D2 test cs:_$P_Flags2, 8 DGROUP:17D8 jz short _$P_SCOM04 DGROUP:17DA cmp al, '=' DGROUP:17DC jnz short _$P_SCOM03 DGROUP:17DE cmp byte ptr es:[bp+1], 0 DGROUP:17E3 jnz short _$P_SCOM_Differ DGROUP:17E5 jmp short _$P_SCOM05 DGROUP:17E7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:17E7 DGROUP:17E7 _$P_SCOM04: ; CODE XREF: _$P_String_Comp+17j DGROUP:17E7 test cs:_$P_Flags2, 10h DGROUP:17ED jz short _$P_SCOM03 DGROUP:17EF cmp al, ':' DGROUP:17F1 jnz short _$P_SCOM03 DGROUP:17F3 cmp byte ptr es:[bp+0], 0 DGROUP:17F8 jnz short _$P_SCOM_Differ DGROUP:17FA DGROUP:17FA _$P_SCOM05: ; CODE XREF: _$P_String_Comp+24j DGROUP:17FA inc si DGROUP:17FB jmp short _$P_SCOM_Same DGROUP:17FD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:17FD DGROUP:17FD _$P_SCOM03: ; CODE XREF: _$P_String_Comp+1Bj DGROUP:17FD ; _$P_String_Comp+2Cj ... DGROUP:17FD cmp al, es:[bp+0] DGROUP:1801 jnz short _$P_SCOM_Differ0 DGROUP:1803 or al, al DGROUP:1805 jz short _$P_SCOM_Same DGROUP:1807 inc si DGROUP:1808 inc bp DGROUP:1809 jmp short _$P_SCOM01 DGROUP:180B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:180B DGROUP:180B _$P_SCOM00: ; CODE XREF: _$P_String_Comp+Cj DGROUP:180B cmp al, es:[bp+0] DGROUP:180F jnz short _$P_SCOM_Differ DGROUP:1811 inc si DGROUP:1812 mov al, cs:[si] DGROUP:1815 inc bp DGROUP:1816 cmp al, es:[bp+0] DGROUP:181A jnz short _$P_SCOM_Differ DGROUP:181C inc si DGROUP:181D inc bp DGROUP:181E DGROUP:181E _$P_SCOM01: ; CODE XREF: _$P_String_Comp+48j DGROUP:181E jmp short _$P_SCOM_Loop DGROUP:1820 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1820 DGROUP:1820 _$P_SCOM_Differ0: ; CODE XREF: _$P_String_Comp+40j DGROUP:1820 test cs:_$P_Flags2, 40h DGROUP:1826 jz short _$P_not_applicable DGROUP:1828 test word ptr es:[bx+2], 20h DGROUP:182E jz short _$P_not_applicable DGROUP:1830 cmp byte ptr es:[bp+0], 0 DGROUP:1835 jz short _$P_SCOM_Same DGROUP:1837 DGROUP:1837 _$P_not_applicable: ; CODE XREF: _$P_String_Comp+65j DGROUP:1837 ; _$P_String_Comp+6Dj DGROUP:1837 test word ptr es:[bx], 10h DGROUP:183C jz short _$P_SCOM_Differ DGROUP:183E cmp al, ':' DGROUP:1840 jnz short _$P_SCOM02 DGROUP:1842 cmp byte ptr es:[bp+0], 0 DGROUP:1847 jnz short _$P_SCOM_Differ DGROUP:1849 jmp short _$P_SCOM_Same DGROUP:184B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:184B DGROUP:184B _$P_SCOM02: ; CODE XREF: _$P_String_Comp+7Fj DGROUP:184B cmp al, 0 DGROUP:184D jnz short _$P_SCOM_Differ DGROUP:184F cmp byte ptr es:[bp+0], ':' DGROUP:1854 jz short _$P_SCOM_Same DGROUP:1856 DGROUP:1856 _$P_SCOM_Differ: ; CODE XREF: _$P_String_Comp+22j DGROUP:1856 ; _$P_String_Comp+37j ... DGROUP:1856 stc DGROUP:1857 jmp short _$P_SCOM_Exit DGROUP:1859 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1859 DGROUP:1859 _$P_SCOM_Same: ; CODE XREF: _$P_String_Comp+3Aj DGROUP:1859 ; _$P_String_Comp+44j ... DGROUP:1859 mov cs:_$P_KEYorSW_Ptr, si DGROUP:185E clc DGROUP:185F DGROUP:185F _$P_SCOM_Exit: ; CODE XREF: _$P_String_Comp+96j DGROUP:185F pop si DGROUP:1860 pop dx DGROUP:1861 pop bp DGROUP:1862 pop ax DGROUP:1863 retn DGROUP:1863 _$P_String_Comp endp DGROUP:1863 DGROUP:1864 DGROUP:1864 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1864 DGROUP:1864 DGROUP:1864 _$P_Date_Format proc near ; CODE XREF: _$P_Check_Match_Flags+31p DGROUP:1864 push ax DGROUP:1865 push cx DGROUP:1866 push dx DGROUP:1867 push si DGROUP:1868 push bx DGROUP:1869 push si DGROUP:186A call _$P_Set_CDI DGROUP:186D pop si DGROUP:186E xor ax, ax DGROUP:1870 mov cs:_$P_1st_Val, ax DGROUP:1874 mov cs:_$P_2nd_Val, ax DGROUP:1878 mov cs:_$P_3rd_Val, ax DGROUP:187C call _$P_Get_DecNum DGROUP:187F jb short _$P_DateF_Err0 DGROUP:1881 mov cs:_$P_1st_Val, ax DGROUP:1885 or bl, bl DGROUP:1887 jz short _$P_DateF_YMD DGROUP:1889 call _$P_Get_DecNum DGROUP:188C jb short _$P_DateF_Error DGROUP:188E mov cs:_$P_2nd_Val, ax DGROUP:1892 or bl, bl DGROUP:1894 jz short _$P_DateF_YMD DGROUP:1896 call _$P_Get_DecNum DGROUP:1899 DGROUP:1899 _$P_DateF_Err0: ; CODE XREF: _$P_Date_Format+1Bj DGROUP:1899 jb short _$P_DateF_Error DGROUP:189B mov cs:_$P_3rd_Val, ax DGROUP:189F or bl, bl DGROUP:18A1 jnz short _$P_DateF_Error DGROUP:18A3 DGROUP:18A3 _$P_DateF_YMD: ; CODE XREF: _$P_Date_Format+23j DGROUP:18A3 ; _$P_Date_Format+30j DGROUP:18A3 mov bx, cs:_$P_Country_Info DGROUP:18A8 cmp bx, 2 DGROUP:18AB jz short _$P_DateF00 DGROUP:18AD mov ax, cs:_$P_1st_Val DGROUP:18B1 or ah, ah DGROUP:18B3 jnz short _$P_DateF_Error DGROUP:18B5 mov cl, al DGROUP:18B7 mov ax, cs:_$P_2nd_Val DGROUP:18BB or ah, ah DGROUP:18BD jnz short _$P_DateF_Error DGROUP:18BF mov ch, al DGROUP:18C1 mov dx, cs:_$P_3rd_Val DGROUP:18C6 cmp bx, 1 DGROUP:18C9 jnz short _$P_DateF01 DGROUP:18CB xchg ch, cl DGROUP:18CD DGROUP:18CD _$P_DateF01: ; CODE XREF: _$P_Date_Format+65j DGROUP:18CD jmp short _$P_DateF02 DGROUP:18CF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:18CF DGROUP:18CF _$P_DateF00: ; CODE XREF: _$P_Date_Format+47j DGROUP:18CF mov dx, cs:_$P_1st_Val DGROUP:18D4 mov ax, cs:_$P_2nd_Val DGROUP:18D8 or ah, ah DGROUP:18DA jnz short _$P_DateF_Error DGROUP:18DC mov cl, al DGROUP:18DE mov ax, cs:_$P_3rd_Val DGROUP:18E2 or ah, ah DGROUP:18E4 jnz short _$P_DateF_Error DGROUP:18E6 mov ch, al DGROUP:18E8 DGROUP:18E8 _$P_DateF02: ; CODE XREF: _$P_Date_Format:_$P_DateF01j DGROUP:18E8 cmp dx, 100 DGROUP:18EB jnb short _$P_DateF03 DGROUP:18ED add dx, 1900 DGROUP:18F1 DGROUP:18F1 _$P_DateF03: ; CODE XREF: _$P_Date_Format+87j DGROUP:18F1 pop bx DGROUP:18F2 pop si DGROUP:18F3 mov ax, 0FF07h DGROUP:18F6 call _$P_Fill_Result DGROUP:18F9 jmp short _$P_Date_Format_Exit DGROUP:18FB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:18FB DGROUP:18FB _$P_DateF_Error: ; CODE XREF: _$P_Date_Format+28j DGROUP:18FB ; _$P_Date_Format:_$P_DateF_Err0j ... DGROUP:18FB pop bx DGROUP:18FC pop si DGROUP:18FD mov ax, 0FF03h DGROUP:1900 call _$P_Fill_Result DGROUP:1903 mov cs:_$P_RC, 9 DGROUP:190A DGROUP:190A _$P_Date_Format_Exit: ; CODE XREF: _$P_Date_Format+95j DGROUP:190A pop dx DGROUP:190B pop cx DGROUP:190C pop ax DGROUP:190D retn DGROUP:190D _$P_Date_Format endp DGROUP:190D DGROUP:190E DGROUP:190E ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:190E DGROUP:190E DGROUP:190E _$P_Set_CDI proc near ; CODE XREF: _$P_Date_Format+6p DGROUP:190E lea si, _$P_Country_Info DGROUP:1912 cmp word ptr cs:[si], 0FFFFh DGROUP:1916 jnz short _$P_Set_CDI_Exit DGROUP:1918 push ds DGROUP:1919 push dx DGROUP:191A push ax DGROUP:191B push cs DGROUP:191C pop ds DGROUP:191D assume ds:DGROUP DGROUP:191D mov ax, 3800h DGROUP:1920 mov dx, si DGROUP:1922 int 21h ; DOS - 2+ - GET COUNTRY-DEPENDENT INFORMATION DGROUP:1922 ; get current-country info DGROUP:1922 ; DS:DX -> buffer for returned info DGROUP:1924 pop ax DGROUP:1925 pop dx DGROUP:1926 pop ds DGROUP:1927 assume ds:nothing DGROUP:1927 DGROUP:1927 _$P_Set_CDI_Exit: ; CODE XREF: _$P_Set_CDI+8j DGROUP:1927 retn DGROUP:1927 _$P_Set_CDI endp DGROUP:1927 DGROUP:1928 DGROUP:1928 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1928 DGROUP:1928 DGROUP:1928 _$P_Get_DecNum proc near ; CODE XREF: _$P_Date_Format+18p DGROUP:1928 ; _$P_Date_Format+25p ... DGROUP:1928 push cx DGROUP:1929 push dx DGROUP:192A xor cx, cx DGROUP:192C DGROUP:192C _$P_GetNum_Loop: ; CODE XREF: _$P_Get_DecNum+45j DGROUP:192C mov al, cs:[si] DGROUP:192F or al, al DGROUP:1931 jz short _$P_GetNum00 DGROUP:1933 cmp cs:_$P_Got_Time, 0 DGROUP:1939 jz short _$P_Do_Date_Delims DGROUP:193B cmp bl, 1 DGROUP:193E jnz short _$P_Do_Time_Delim1 DGROUP:1940 cmp al, ':' DGROUP:1942 jz short _$P_GetNum01 DGROUP:1944 DGROUP:1944 _$P_Do_Time_Delim1: ; CODE XREF: _$P_Get_DecNum+16j DGROUP:1944 cmp al, '.' DGROUP:1946 jz short _$P_GetNum01 DGROUP:1948 jmp short _$P_Neither_Delims DGROUP:194A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:194A DGROUP:194A _$P_Do_Date_Delims: ; CODE XREF: _$P_Get_DecNum+11j DGROUP:194A cmp al, '-' DGROUP:194C jz short _$P_GetNum01 DGROUP:194E cmp al, '/' DGROUP:1950 jz short _$P_GetNum01 DGROUP:1952 cmp al, '.' DGROUP:1954 jz short _$P_GetNum01 DGROUP:1956 DGROUP:1956 _$P_Neither_Delims: ; CODE XREF: _$P_Get_DecNum+20j DGROUP:1956 call _$P_0099 DGROUP:1959 jb short _$P_GetNum_Exit DGROUP:195B mov ah, 0 DGROUP:195D xchg ax, cx DGROUP:195E mov dx, 10 DGROUP:1961 mul dx DGROUP:1963 or dx, dx DGROUP:1965 jnz short _$P_GetNum02 DGROUP:1967 add ax, cx DGROUP:1969 jb short _$P_GetNum_Exit DGROUP:196B xchg ax, cx DGROUP:196C inc si DGROUP:196D jmp short _$P_GetNum_Loop DGROUP:196F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:196F DGROUP:196F _$P_GetNum00: ; CODE XREF: _$P_Get_DecNum+9j DGROUP:196F mov bl, al DGROUP:1971 DGROUP:1971 _$P_GetNum03: ; CODE XREF: _$P_Get_DecNum+4Dj DGROUP:1971 clc DGROUP:1972 jmp short _$P_GetNum_Exit DGROUP:1974 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1974 DGROUP:1974 _$P_GetNum01: ; CODE XREF: _$P_Get_DecNum+1Aj DGROUP:1974 ; _$P_Get_DecNum+1Ej ... DGROUP:1974 inc si DGROUP:1975 jmp short _$P_GetNum03 DGROUP:1977 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1977 DGROUP:1977 _$P_GetNum02: ; CODE XREF: _$P_Get_DecNum+3Dj DGROUP:1977 stc DGROUP:1978 DGROUP:1978 _$P_GetNum_Exit: ; CODE XREF: _$P_Get_DecNum+31j DGROUP:1978 ; _$P_Get_DecNum+41j ... DGROUP:1978 xchg ax, cx DGROUP:1979 pop dx DGROUP:197A pop cx DGROUP:197B retn DGROUP:197B _$P_Get_DecNum endp DGROUP:197B DGROUP:197C DGROUP:197C ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:197C DGROUP:197C DGROUP:197C _$P_Skip_Delim proc near ; CODE XREF: SysParse+22p DGROUP:197C ; SysParse+66p ... DGROUP:197C lodsb DGROUP:197D call _$P_Chk_EOL DGROUP:1980 jz short _$P_Skip_Delim_CY DGROUP:1982 call _$P_Chk_Delim DGROUP:1985 jnz short _$P_Skip_Delim_NCY DGROUP:1987 test cs:_$P_Flags2, 20h DGROUP:198D jz short _$P_Skip_Delim DGROUP:198F test cs:_$P_Flags2, 41h DGROUP:1995 jz short _$P_Exit_At_Extra DGROUP:1997 dec si DGROUP:1998 jmp short _$P_Exit_At_Extra DGROUP:199A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:199A DGROUP:199A _$P_Skip_Delim_CY: ; CODE XREF: _$P_Skip_Delim+4j DGROUP:199A stc DGROUP:199B jmp short _$P_Skip_Delim_Exit DGROUP:199D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:199D DGROUP:199D _$P_Skip_Delim_NCY: ; CODE XREF: _$P_Skip_Delim+9j DGROUP:199D clc DGROUP:199E DGROUP:199E _$P_Skip_Delim_Exit: ; CODE XREF: _$P_Skip_Delim+1Fj DGROUP:199E dec si DGROUP:199F retn DGROUP:19A0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:19A0 DGROUP:19A0 _$P_Exit_At_Extra: ; CODE XREF: _$P_Skip_Delim+19j DGROUP:19A0 ; _$P_Skip_Delim+1Cj DGROUP:19A0 clc DGROUP:19A1 retn DGROUP:19A1 _$P_Skip_Delim endp DGROUP:19A1 DGROUP:19A2 DGROUP:19A2 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:19A2 DGROUP:19A2 DGROUP:19A2 _$P_Chk_EOL proc near ; CODE XREF: SysParse+54p DGROUP:19A2 ; _$P_Skip_Delim+1p DGROUP:19A2 push bx DGROUP:19A3 push cx DGROUP:19A4 cmp al, 0Dh DGROUP:19A6 jz short _$P_Chk_EOL_Exit DGROUP:19A8 cmp al, 0 DGROUP:19AA jz short _$P_Chk_EOL_Exit DGROUP:19AC cmp al, 0Ah DGROUP:19AE jz short _$P_Chk_EOL_Exit DGROUP:19B0 cmp byte ptr es:[di+2], 2 DGROUP:19B5 jb short _$P_Chk_EOL_Exit DGROUP:19B7 xor bx, bx DGROUP:19B9 mov bl, es:[di+3] DGROUP:19BD add bx, 4 DGROUP:19C0 cmp byte ptr es:[bx+di], 0 DGROUP:19C4 jz short _$P_Chk_EOL_NZ DGROUP:19C6 xor cx, cx DGROUP:19C8 mov cl, es:[bx+di] DGROUP:19CB DGROUP:19CB _$P_Chk_EOL_Loop: ; CODE XREF: _$P_Chk_EOL+2Fj DGROUP:19CB inc bx DGROUP:19CC cmp al, es:[bx+di] DGROUP:19CF jz short _$P_Chk_EOL_Exit DGROUP:19D1 loop _$P_Chk_EOL_Loop DGROUP:19D3 DGROUP:19D3 _$P_Chk_EOL_NZ: ; CODE XREF: _$P_Chk_EOL+22j DGROUP:19D3 cmp al, 0Dh DGROUP:19D5 DGROUP:19D5 _$P_Chk_EOL_Exit: ; CODE XREF: _$P_Chk_EOL+4j DGROUP:19D5 ; _$P_Chk_EOL+8j ... DGROUP:19D5 pop cx DGROUP:19D6 pop bx DGROUP:19D7 retn DGROUP:19D7 _$P_Chk_EOL endp DGROUP:19D7 DGROUP:19D8 DGROUP:19D8 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:19D8 DGROUP:19D8 DGROUP:19D8 _$P_Chk_Delim proc near ; CODE XREF: SysParse+59p DGROUP:19D8 ; _$P_Skip_Delim+6p DGROUP:19D8 push bx DGROUP:19D9 push cx DGROUP:19DA mov cs:_$P_Terminator, ' ' DGROUP:19E0 and cs:_$P_Flags2, not 20h DGROUP:19E6 cmp al, ' ' DGROUP:19E8 jz short $P_Chk_Delim_Exit DGROUP:19EA cmp al, 9 DGROUP:19EC jz short $P_Chk_Delim_Exit DGROUP:19EE cmp al, ',' DGROUP:19F0 jz short _$P_Chk_Delim_Exit0 DGROUP:19F2 cmp al, ' ' DGROUP:19F4 jnz short _$P_Chk_Delim01 DGROUP:19F6 cmp byte ptr [si], ' ' DGROUP:19F9 jnz short _$P_Chk_Delim01 DGROUP:19FB mov al, ' ' DGROUP:19FD inc si DGROUP:19FE cmp al, al DGROUP:1A00 jmp short $P_Chk_Delim_Exit DGROUP:1A02 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1A02 DGROUP:1A02 _$P_Chk_Delim01: ; CODE XREF: _$P_Chk_Delim+1Cj DGROUP:1A02 ; _$P_Chk_Delim+21j DGROUP:1A02 cmp byte ptr es:[di+2], 1 DGROUP:1A07 jb short $P_Chk_Delim_Exit DGROUP:1A09 xor cx, cx DGROUP:1A0B mov cl, es:[di+3] DGROUP:1A0F jcxz short _$P_Chk_Delim_NZ DGROUP:1A11 mov bx, 3 DGROUP:1A14 DGROUP:1A14 _$P_Chk_Delim_Loop: ; CODE XREF: _$P_Chk_Delim+42j DGROUP:1A14 inc bx DGROUP:1A15 cmp al, es:[bx+di] DGROUP:1A18 jz short _$P_Chk_Delim_Exit0 DGROUP:1A1A loop _$P_Chk_Delim_Loop DGROUP:1A1C DGROUP:1A1C _$P_Chk_Delim_NZ: ; CODE XREF: _$P_Chk_Delim+37j DGROUP:1A1C cmp al, ' ' DGROUP:1A1E DGROUP:1A1E $P_Chk_Delim_Exit: ; CODE XREF: _$P_Chk_Delim+10j DGROUP:1A1E ; _$P_Chk_Delim+14j ... DGROUP:1A1E pop cx DGROUP:1A1F pop bx DGROUP:1A20 retn DGROUP:1A21 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1A21 DGROUP:1A21 _$P_Chk_Delim_Exit0: ; CODE XREF: _$P_Chk_Delim+18j DGROUP:1A21 ; _$P_Chk_Delim+40j DGROUP:1A21 mov cs:_$P_Terminator, al DGROUP:1A25 test cs:_$P_Flags2, 1 DGROUP:1A2B jnz short _$P_No_Set_Extra DGROUP:1A2D or cs:_$P_Flags2, 20h DGROUP:1A33 DGROUP:1A33 _$P_No_Set_Extra: ; CODE XREF: _$P_Chk_Delim+53j DGROUP:1A33 cmp al, al DGROUP:1A35 jmp short $P_Chk_Delim_Exit DGROUP:1A35 _$P_Chk_Delim endp DGROUP:1A35 DGROUP:1A37 DGROUP:1A37 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1A37 DGROUP:1A37 DGROUP:1A37 _$P_Chk_Switch proc near ; CODE XREF: SysParse+4Fp DGROUP:1A37 lea bp, _$P_STRING_BUF DGROUP:1A3B cmp bx, bp DGROUP:1A3D jz short _$P_STRUC_L2 DGROUP:1A3F cmp al, '/' DGROUP:1A41 jnz short $P_STRUC_L5 DGROUP:1A43 stc DGROUP:1A44 push ax DGROUP:1A45 mov al, cs:[bx-1] DGROUP:1A49 call _$P_0099 DGROUP:1A4C jb short _$P_STRUC_L7 DGROUP:1A4E mov al, [si] DGROUP:1A50 call _$P_0099 DGROUP:1A53 DGROUP:1A53 _$P_STRUC_L7: ; CODE XREF: _$P_Chk_Switch+15j DGROUP:1A53 pop ax DGROUP:1A54 retn DGROUP:1A55 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1A55 DGROUP:1A55 $P_STRUC_L5: ; CODE XREF: _$P_Chk_Switch+Aj DGROUP:1A55 clc DGROUP:1A56 retn DGROUP:1A57 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1A57 DGROUP:1A57 _$P_STRUC_L2: ; CODE XREF: _$P_Chk_Switch+6j DGROUP:1A57 cmp al, '/' DGROUP:1A59 jnz short _$P_STRUC_L12 DGROUP:1A5B or cs:_$P_Flags2, 40h DGROUP:1A61 DGROUP:1A61 _$P_STRUC_L12: ; CODE XREF: _$P_Chk_Switch+22j DGROUP:1A61 clc DGROUP:1A62 DGROUP:1A62 _$P_STRUC_L1: DGROUP:1A62 retn DGROUP:1A62 _$P_Chk_Switch endp DGROUP:1A62 DGROUP:1A63 DGROUP:1A63 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1A63 DGROUP:1A63 DGROUP:1A63 _$P_Chk_DBCS proc near ; CODE XREF: SysParse+84p DGROUP:1A63 ; _$P_Remove_Colon:_$P_RCOL00p ... DGROUP:1A63 push ds DGROUP:1A64 push si DGROUP:1A65 push bx DGROUP:1A66 cmp cs:_$P_DBCSEV_SEG, 0 DGROUP:1A6C jnz short _$P_DBCS00 DGROUP:1A6E push ax DGROUP:1A6F push ds DGROUP:1A70 push cx DGROUP:1A71 push dx DGROUP:1A72 push di DGROUP:1A73 push bp DGROUP:1A74 push es DGROUP:1A75 xor si, si DGROUP:1A77 mov ds, si DGROUP:1A79 assume ds:seg000 DGROUP:1A79 mov ax, 6300h DGROUP:1A7C int 21h ; DOS - 3.2+ only - GET DOUBLE BYTE CHARACTER SET LEAD TABLE DGROUP:1A7E mov bx, ds DGROUP:1A80 or bx, bx DGROUP:1A82 pop es DGROUP:1A83 pop bp DGROUP:1A84 pop di DGROUP:1A85 pop dx DGROUP:1A86 pop cx DGROUP:1A87 pop ds DGROUP:1A88 assume ds:nothing DGROUP:1A88 pop ax DGROUP:1A89 jz short _$P_NON_DBCS DGROUP:1A8B DGROUP:1A8B _$P_DBCS02: DGROUP:1A8B mov cs:_$P_DBCSEV_OFF, si DGROUP:1A90 mov cs:_$P_DBCSEV_SEG, bx DGROUP:1A95 DGROUP:1A95 _$P_DBCS00: ; CODE XREF: _$P_Chk_DBCS+9j DGROUP:1A95 lds si, dword ptr cs:_$P_DBCSEV_OFF DGROUP:1A9A DGROUP:1A9A _$P_DBCS_LOOP: ; CODE XREF: _$P_Chk_DBCS+4Aj DGROUP:1A9A cmp word ptr [si], 0 DGROUP:1A9D jz short _$P_NON_DBCS DGROUP:1A9F cmp al, [si] DGROUP:1AA1 jb short _$P_DBCS01 DGROUP:1AA3 cmp al, [si+1] DGROUP:1AA6 ja short _$P_DBCS01 DGROUP:1AA8 stc DGROUP:1AA9 jmp short _$P_DBCS_EXIT DGROUP:1AAB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1AAB DGROUP:1AAB _$P_DBCS01: ; CODE XREF: _$P_Chk_DBCS+3Ej DGROUP:1AAB ; _$P_Chk_DBCS+43j DGROUP:1AAB inc si DGROUP:1AAC inc si DGROUP:1AAD jmp short _$P_DBCS_LOOP DGROUP:1AAF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1AAF DGROUP:1AAF _$P_NON_DBCS: ; CODE XREF: _$P_Chk_DBCS+26j DGROUP:1AAF ; _$P_Chk_DBCS+3Aj DGROUP:1AAF clc DGROUP:1AB0 DGROUP:1AB0 _$P_DBCS_EXIT: ; CODE XREF: _$P_Chk_DBCS+46j DGROUP:1AB0 pop bx DGROUP:1AB1 pop si DGROUP:1AB2 pop ds DGROUP:1AB3 retn DGROUP:1AB3 _$P_Chk_DBCS endp DGROUP:1AB3 DGROUP:1AB4 DGROUP:1AB4 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1AB4 DGROUP:1AB4 DGROUP:1AB4 CallParser proc far ; CODE XREF: parse+1CP DGROUP:1AB4 push ds DGROUP:1AB5 push es DGROUP:1AB6 push cs DGROUP:1AB7 pop ds DGROUP:1AB8 assume ds:DGROUP DGROUP:1AB8 push cs DGROUP:1AB9 pop es DGROUP:1ABA assume es:DGROUP DGROUP:1ABA nop DGROUP:1ABB call SysParse DGROUP:1ABE pop es DGROUP:1ABF assume es:nothing DGROUP:1ABF pop ds DGROUP:1AC0 assume ds:nothing DGROUP:1AC0 retf DGROUP:1AC0 CallParser endp DGROUP:1AC0 DGROUP:1AC0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1AC1 align 2 DGROUP:1AC2 $M_EXT_ERR_ADDRS dd 0 ; DATA XREF: SYSLOADMSG+50w DGROUP:1AC2 ; _$M_GET_MSG_ADDRESS:$MIF41r ... DGROUP:1AC6 $M_EXT_FILE dd 0 ; DATA XREF: SYSLOADMSG+43w DGROUP:1AC6 ; SYSLOADMSG+3Fw DGROUP:1ACA $M_EXT_COMMAND dd 0 ; DATA XREF: SYSLOADMSG+16w DGROUP:1ACA ; SYSLOADMSG+12w DGROUP:1ACE $M_EXT_TERM dd 0FFFFFFFFh DGROUP:1AD2 $M_PARSE_COMMAND dd 0 ; DATA XREF: SYSLOADMSG+25w DGROUP:1AD2 ; _$M_GET_MSG_ADDRESS+18r ... DGROUP:1AD6 $M_PARSE_ADDRS dd 0 ; DATA XREF: SYSLOADMSG+65w DGROUP:1AD6 ; SYSLOADMSG+61w DGROUP:1ADA $M_PARSE_TERM dd 0FFFFFFFFh DGROUP:1ADE $M_CRIT_ADDRS dd 0 ; DATA XREF: SYSLOADMSG+58w DGROUP:1ADE ; _$M_GET_MSG_ADDRESS+2Ar ... DGROUP:1AE2 $M_CRIT_COMMAND dd 0 ; DATA XREF: SYSLOADMSG+34w DGROUP:1AE2 ; SYSLOADMSG+30w DGROUP:1AE6 $M_CRIT_TERM dd 0FFFFFFFFh DGROUP:1AEA $M_DISK_PROC_ADDR dd 0FFFFFFFFh ; DATA XREF: SYSLOADMSG+74w DGROUP:1AEA ; _$M_FIND_SPECIFIED_MSG+5r ... DGROUP:1AEE $M_CLASS_A_ADDRS dd 0 ; DATA XREF: SYSLOADMSG+98w DGROUP:1AEE ; _$M_GET_MSG_ADDRESS+Br ... DGROUP:1AF2 $M_CLASS_B_ADDRS dd 0 ; DATA XREF: SYSLOADMSG+A5w DGROUP:1AF2 ; SYSLOADMSG+A1w DGROUP:1AF6 $M_CLS_TERM dd 0FFFFFFFFh DGROUP:1AFA $M_DBCS_VEC dd 0 ; DATA XREF: _$M_GET_DBCS_VEC+Dw DGROUP:1AFA ; _$M_IS_IT_DBCS+2r ... DGROUP:1AFE $M_HANDLE dw 0 ; DATA XREF: SYSDISPMSG+9w DGROUP:1AFE ; _$M_DISPLAY_STRING+3r DGROUP:1B00 $M_SIZE db 0 ; DATA XREF: _$M_FIND_SPECIFIED_MSG:$MIF91w DGROUP:1B00 ; _$M_DISPLAY_REPLACE+1Ew DGROUP:1B01 $M_CRLF dw 0A0Dh ; DATA XREF: SYSLOADMSG+78w DGROUP:1B01 ; _$M_ADD_CRLF+Co DGROUP:1B03 $M_CLASS db 0 ; DATA XREF: SYSDISPMSG+Dw DGROUP:1B03 ; _$M_DISPLAY_MESSAGE:$MEN175r DGROUP:1B04 $M_RETURN_ADDR dw 0 ; DATA XREF: _$M_CONVERT2ASCw DGROUP:1B04 ; _$M_CONVERT2ASC+64r ... DGROUP:1B06 $M_MSG_NUM dw 0 ; DATA XREF: SYSLOADMSG+83w DGROUP:1B06 ; _$M_GET_MSG_ADDRESS:$MIF47w ... DGROUP:1B08 $M_DIVISOR dw 10 ; DATA XREF: SYSLOADMSG+89w DGROUP:1B08 ; _$M_CONVERT2ASC:$MDO145r ... DGROUP:1B0A $M_TEMP_BUF db '$$$$$$$' ; DATA XREF: _$M_EXT_PAR_REPLACE+Fw DGROUP:1B0A ; _$M_EXT_PAR_REPLACE+23w ... DGROUP:1B11 $M_THOU_SEPARA db 39h dup('$') ; DATA XREF: _$M_CONVERT2ASC+33r DGROUP:1B11 ; _$M_CONVERT2ASC+45r ... DGROUP:1B4A $M_BUF_TERM db '$' ; DATA XREF: SYSLOADMSG+7Ew DGROUP:1B4B DGROUP:1B4B ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1B4B DGROUP:1B4B DGROUP:1B4B SYSLOADMSG proc far ; CODE XREF: _sysloadmsg+1CP DGROUP:1B4B push ax DGROUP:1B4C push bx DGROUP:1B4D push dx DGROUP:1B4E push es DGROUP:1B4F push di DGROUP:1B50 xor cx, cx DGROUP:1B52 mov es, cx DGROUP:1B54 assume es:seg000 DGROUP:1B54 xor di, di DGROUP:1B56 mov ax, 122Eh DGROUP:1B59 mov dl, 0 DGROUP:1B5B int 2Fh ; Multiplex - DOS 3+ internal - GET OR SET ERROR TABLE ADDRESSES DGROUP:1B5B ; DL = subfunction - get standard DOS error table (errors 00h-12h,50h-5Bh) DGROUP:1B5B ; Return: ES:DI -> error table DGROUP:1B5D mov word ptr ds:$M_EXT_COMMAND+2, es DGROUP:1B61 mov word ptr ds:$M_EXT_COMMAND, di DGROUP:1B65 mov ax, 122Eh DGROUP:1B68 mov dl, 2 DGROUP:1B6A int 2Fh ; Multiplex - DOS 3+ internal - GET OR SET ERROR TABLE ADDRESSES DGROUP:1B6A ; DL = subfunction - get parameter error table (errors 00h-0Ah) DGROUP:1B6A ; ES:DI -> error table DGROUP:1B6C mov word ptr ds:$M_PARSE_COMMAND+2, es DGROUP:1B70 mov word ptr ds:$M_PARSE_COMMAND, di DGROUP:1B74 mov ax, 122Eh DGROUP:1B77 mov dl, 4 DGROUP:1B79 int 2Fh ; Multiplex - DOS 3+ internal - GET OR SET ERROR TABLE ADDRESSES DGROUP:1B79 ; DL = subfunction - get critical/SHARE error table (errors 13h-2Bh) DGROUP:1B79 ; ES:DI -> error table DGROUP:1B7B mov word ptr ds:$M_CRIT_COMMAND+2, es DGROUP:1B7F mov word ptr ds:$M_CRIT_COMMAND, di DGROUP:1B83 mov ax, 122Eh DGROUP:1B86 mov dl, 6 DGROUP:1B88 int 2Fh ; Multiplex - DOS 3+ internal - GET OR SET ERROR TABLE ADDRESSES DGROUP:1B88 ; DL = subfunction - get ??? error table DGROUP:1B88 ; ES:DI -> error table DGROUP:1B8A mov word ptr ds:$M_EXT_FILE+2, es DGROUP:1B8E mov word ptr ds:$M_EXT_FILE, di DGROUP:1B92 call _$M_CLS_1 DGROUP:1B97 mov word ptr ds:$M_EXT_ERR_ADDRS+2, es DGROUP:1B9B mov word ptr ds:$M_EXT_ERR_ADDRS, di DGROUP:1B9F mov word ptr ds:$M_CRIT_ADDRS+2, es DGROUP:1BA3 mov word ptr ds:$M_CRIT_ADDRS, di DGROUP:1BA7 call _$M_CLS_2 DGROUP:1BAC mov word ptr ds:$M_PARSE_ADDRS+2, es DGROUP:1BB0 mov word ptr ds:$M_PARSE_ADDRS, di DGROUP:1BB4 mov ax, 122Eh DGROUP:1BB7 mov dl, 8 DGROUP:1BB9 int 2Fh ; Multiplex - DOS 3+ internal - GET OR SET ERROR TABLE ADDRESSES DGROUP:1BB9 ; DL = subfunction - get ??? error table DGROUP:1BB9 ; Return: ES:DI -> error table DGROUP:1BBB mov word ptr ds:$M_DISK_PROC_ADDR+2, es DGROUP:1BBF mov word ptr ds:$M_DISK_PROC_ADDR, di DGROUP:1BC3 mov ds:$M_CRLF, 0A0Dh DGROUP:1BC9 mov ds:$M_BUF_TERM, '$' DGROUP:1BCE mov ds:$M_MSG_NUM, 0 DGROUP:1BD4 mov ds:$M_DIVISOR, 0Ah DGROUP:1BDA call _$M_CLS_A DGROUP:1BDF mov word ptr ds:$M_CLASS_A_ADDRS+2, es DGROUP:1BE3 mov word ptr ds:$M_CLASS_A_ADDRS, di DGROUP:1BE7 call _$M_CLS_B DGROUP:1BEC mov word ptr ds:$M_CLASS_B_ADDRS+2, es DGROUP:1BF0 mov word ptr ds:$M_CLASS_B_ADDRS, di DGROUP:1BF4 call _$M_GET_DBCS_VEC DGROUP:1BF7 call _$M_CHECKSTDIN DGROUP:1BFA call _$M_CHECKSTDOUT DGROUP:1BFD push cx DGROUP:1BFE call _$M_VERSION_CHECK DGROUP:1C01 jb short $MIF20 DGROUP:1C03 pop cx DGROUP:1C04 pop di DGROUP:1C05 pop es DGROUP:1C06 assume es:nothing DGROUP:1C06 pop dx DGROUP:1C07 pop bx DGROUP:1C08 pop ax DGROUP:1C09 retf DGROUP:1C0A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1C0A DGROUP:1C0A $MIF20: ; CODE XREF: SYSLOADMSG+B6j DGROUP:1C0A add sp, 12 DGROUP:1C0D stc DGROUP:1C0E retf DGROUP:1C0E SYSLOADMSG endp DGROUP:1C0E DGROUP:1C0F DGROUP:1C0F ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1C0F DGROUP:1C0F DGROUP:1C0F _$M_GET_DBCS_VEC proc near ; CODE XREF: SYSLOADMSG+A9p DGROUP:1C0F push ax DGROUP:1C10 push si DGROUP:1C11 push ds DGROUP:1C12 mov ax, 6300h DGROUP:1C15 int 21h ; DOS - 3.2+ only - GET DOUBLE BYTE CHARACTER SET LEAD TABLE DGROUP:1C17 push ds DGROUP:1C18 pop es DGROUP:1C19 pop ds DGROUP:1C1A jb short $MIF23 DGROUP:1C1C mov word ptr ds:$M_DBCS_VEC, si DGROUP:1C20 mov word ptr ds:$M_DBCS_VEC+2, es DGROUP:1C24 DGROUP:1C24 $MIF23: ; CODE XREF: _$M_GET_DBCS_VEC+Bj DGROUP:1C24 pop si DGROUP:1C25 pop ax DGROUP:1C26 retn DGROUP:1C26 _$M_GET_DBCS_VEC endp DGROUP:1C26 DGROUP:1C27 DGROUP:1C27 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1C27 DGROUP:1C27 DGROUP:1C27 _$M_CHECKSTDIN proc near ; CODE XREF: SYSLOADMSG+ACp DGROUP:1C27 mov ax, 4400h DGROUP:1C2A mov bx, 0 DGROUP:1C2D cwd DGROUP:1C2E int 21h ; DOS - 2+ - IOCTL - GET DEVICE INFORMATION DGROUP:1C2E ; BX = file or device handle DGROUP:1C30 and dh, 1 DGROUP:1C33 or dh, 1 DGROUP:1C36 mov ax, 4401h DGROUP:1C39 int 21h ; DOS - 2+ - IOCTL - SET DEVICE INFORMATION DGROUP:1C39 ; BX = device handle, DH = 0 DGROUP:1C39 ; DL = device information to set (bits 0-7 from function 0) DGROUP:1C3B retn DGROUP:1C3B _$M_CHECKSTDIN endp DGROUP:1C3B DGROUP:1C3C DGROUP:1C3C ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1C3C DGROUP:1C3C DGROUP:1C3C _$M_CHECKSTDOUT proc near ; CODE XREF: SYSLOADMSG+AFp DGROUP:1C3C mov ax, 4400h DGROUP:1C3F mov bx, 1 DGROUP:1C42 cwd DGROUP:1C43 int 21h ; DOS - 2+ - IOCTL - GET DEVICE INFORMATION DGROUP:1C43 ; BX = file or device handle DGROUP:1C45 or dh, 1 DGROUP:1C48 mov ax, 4401h DGROUP:1C4B int 21h ; DOS - 2+ - IOCTL - SET DEVICE INFORMATION DGROUP:1C4B ; BX = device handle, DH = 0 DGROUP:1C4B ; DL = device information to set (bits 0-7 from function 0) DGROUP:1C4D retn DGROUP:1C4D _$M_CHECKSTDOUT endp DGROUP:1C4D DGROUP:1C4E DGROUP:1C4E ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1C4E DGROUP:1C4E DGROUP:1C4E _$M_VERSION_CHECK proc near ; CODE XREF: SYSLOADMSG+B3p DGROUP:1C4E mov ah, 30h DGROUP:1C50 int 21h ; DOS - GET DOS VERSION DGROUP:1C50 ; Return: AL = major version number (00h for DOS 1.x) DGROUP:1C52 cmp al, 5 DGROUP:1C54 jb short $MIF27 DGROUP:1C56 clc DGROUP:1C57 retn DGROUP:1C58 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1C58 DGROUP:1C58 $MIF27: ; CODE XREF: _$M_VERSION_CHECK+6j DGROUP:1C58 mov bx, 2 DGROUP:1C5B mov ax, 1 DGROUP:1C5E mov cx, 0 DGROUP:1C61 mov dx, 0FF00h DGROUP:1C64 stc DGROUP:1C65 retn DGROUP:1C65 _$M_VERSION_CHECK endp DGROUP:1C65 DGROUP:1C66 DGROUP:1C66 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1C66 DGROUP:1C66 DGROUP:1C66 SYSGETMSG proc far ; CODE XREF: _sysgetmsg+1CP DGROUP:1C66 push ax DGROUP:1C67 push es DGROUP:1C68 push di DGROUP:1C69 push bp DGROUP:1C6A call _$M_GET_MSG_ADDRESS DGROUP:1C6F jb short $MIF31 DGROUP:1C71 cmp dh, 0FFh DGROUP:1C74 clc DGROUP:1C75 jz short $MIF32 DGROUP:1C77 push es DGROUP:1C78 pop ds DGROUP:1C79 jmp short $MEN32 DGROUP:1C7B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1C7B DGROUP:1C7B $MIF32: ; CODE XREF: SYSGETMSG+Fj DGROUP:1C7B push es DGROUP:1C7C pop ds DGROUP:1C7D DGROUP:1C7D $MEN32: ; CODE XREF: SYSGETMSG+13j DGROUP:1C7D mov si, di DGROUP:1C7F DGROUP:1C7F $MIF31: ; CODE XREF: SYSGETMSG+9j DGROUP:1C7F pop bp DGROUP:1C80 pop di DGROUP:1C81 pop es DGROUP:1C82 pop ax DGROUP:1C83 retf DGROUP:1C83 SYSGETMSG endp DGROUP:1C83 DGROUP:1C84 DGROUP:1C84 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1C84 DGROUP:1C84 DGROUP:1C84 _$M_GET_MSG_ADDRESS proc far ; CODE XREF: SYSGETMSG+4P DGROUP:1C84 ; SYSDISPMSG+11P DGROUP:1C84 DGROUP:1C84 ; FUNCTION CHUNK AT DGROUP:1D1C SIZE 00000007 BYTES DGROUP:1C84 DGROUP:1C84 push si DGROUP:1C85 push bx DGROUP:1C86 xor si, si DGROUP:1C88 xor cx, cx DGROUP:1C8A DGROUP:1C8A $MDO36: ; CODE XREF: _$M_GET_MSG_ADDRESS+65j DGROUP:1C8A cmp dh, 0FFh DGROUP:1C8D jnz short $MIF37 DGROUP:1C8F les di, ds:$M_CLASS_A_ADDRS[si] DGROUP:1C93 mov bx, es DGROUP:1C95 jmp short $MEN37 DGROUP:1C97 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1C97 DGROUP:1C97 $MIF37: ; CODE XREF: _$M_GET_MSG_ADDRESS+9j DGROUP:1C97 test dh, 2 DGROUP:1C9A jz short $MIF39 DGROUP:1C9C les di, ds:$M_PARSE_COMMAND[si] DGROUP:1CA0 mov bx, es DGROUP:1CA2 jmp short $MEN37 DGROUP:1CA4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1CA4 DGROUP:1CA4 $MIF39: ; CODE XREF: _$M_GET_MSG_ADDRESS+16j DGROUP:1CA4 cmp ax, 13h DGROUP:1CA7 jb short $MIF41 DGROUP:1CA9 cmp ax, 27h DGROUP:1CAC ja short $MIF41 DGROUP:1CAE les di, ds:$M_CRIT_ADDRS[si] DGROUP:1CB2 mov bx, es DGROUP:1CB4 jmp short $MEN37 DGROUP:1CB6 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1CB6 DGROUP:1CB6 $MIF41: ; CODE XREF: _$M_GET_MSG_ADDRESS+23j DGROUP:1CB6 ; _$M_GET_MSG_ADDRESS+28j DGROUP:1CB6 les di, ds:$M_EXT_ERR_ADDRS[si] DGROUP:1CBA mov bx, es DGROUP:1CBC DGROUP:1CBC $MEN37: ; CODE XREF: _$M_GET_MSG_ADDRESS+11j DGROUP:1CBC ; _$M_GET_MSG_ADDRESS+1Ej ... DGROUP:1CBC cmp bx, 0FFFFh DGROUP:1CBF jnz short $MIF46 DGROUP:1CC1 cmp dh, 0FFh DGROUP:1CC4 jnz short $MIF47 DGROUP:1CC6 stc DGROUP:1CC7 jmp short $MEN47 DGROUP:1CC9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1CC9 DGROUP:1CC9 $MIF47: ; CODE XREF: _$M_GET_MSG_ADDRESS+40j DGROUP:1CC9 mov ds:$M_MSG_NUM, ax DGROUP:1CCC mov ax, 0FFFFh DGROUP:1CCF mov bp, 1 DGROUP:1CD2 xor si, si DGROUP:1CD4 clc DGROUP:1CD5 DGROUP:1CD5 $MEN47: ; CODE XREF: _$M_GET_MSG_ADDRESS+43j DGROUP:1CD5 jmp short $MEN46 DGROUP:1CD7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1CD7 DGROUP:1CD7 $MIF46: ; CODE XREF: _$M_GET_MSG_ADDRESS+3Bj DGROUP:1CD7 cmp bx, 0 DGROUP:1CDA jz short $MIF51 DGROUP:1CDC call _$M_FIND_SPECIFIED_MSG DGROUP:1CDF DGROUP:1CDF $MIF51: ; CODE XREF: _$M_GET_MSG_ADDRESS+56j DGROUP:1CDF add si, 4 DGROUP:1CE2 clc DGROUP:1CE3 DGROUP:1CE3 $MEN46: ; CODE XREF: _$M_GET_MSG_ADDRESS:$MEN47j DGROUP:1CE3 jb short $MEN36 DGROUP:1CE5 or cx, cx DGROUP:1CE7 jnz short $MEN36 DGROUP:1CE9 jmp short $MDO36 DGROUP:1CEB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1CEB DGROUP:1CEB $MEN36: ; CODE XREF: _$M_GET_MSG_ADDRESS:$MEN46j DGROUP:1CEB ; _$M_GET_MSG_ADDRESS+63j DGROUP:1CEB pushf DGROUP:1CEC cmp dh, 1 DGROUP:1CEF jnz short $MIF56 DGROUP:1CF1 push dx DGROUP:1CF2 push bp DGROUP:1CF3 push cx DGROUP:1CF4 push es DGROUP:1CF5 push di DGROUP:1CF6 push ax DGROUP:1CF7 mov ax, 500h DGROUP:1CFA int 2Fh ; Multiplex - DOS 3+ CRITICAL ERROR HANDLER - INSTALLATION CHECK DGROUP:1CFA ; Return: AL = 00h not installed, OK to install DGROUP:1CFA ; 01h not installed, can't install DGROUP:1CFA ; FFh installed DGROUP:1CFC cmp al, 0FFh DGROUP:1CFE pop ax DGROUP:1CFF jnz short $MIF57 DGROUP:1D01 xchg ax, bx DGROUP:1D02 mov ax, 502h DGROUP:1D05 int 2Fh ; Multiplex - DOS 3+ CRITICAL ERROR HANDLER - DGROUP:1D07 jmp short $MEN57 DGROUP:1D09 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D09 DGROUP:1D09 $MIF57: ; CODE XREF: _$M_GET_MSG_ADDRESS+7Bj DGROUP:1D09 stc DGROUP:1D0A DGROUP:1D0A $MEN57: ; CODE XREF: _$M_GET_MSG_ADDRESS+83j DGROUP:1D0A jnb short $MIF60 DGROUP:1D0C pop di DGROUP:1D0D pop es DGROUP:1D0E pop cx DGROUP:1D0F jmp short $MEN60 DGROUP:1D11 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D11 DGROUP:1D11 $MIF60: ; CODE XREF: _$M_GET_MSG_ADDRESS:$MEN57j DGROUP:1D11 add sp, 6 DGROUP:1D14 call _$M_SET_LEN_IN_CX DGROUP:1D17 DGROUP:1D17 $MEN60: ; CODE XREF: _$M_GET_MSG_ADDRESS+8Bj DGROUP:1D17 pop bp DGROUP:1D18 pop dx DGROUP:1D19 DGROUP:1D19 $MIF56: ; CODE XREF: _$M_GET_MSG_ADDRESS+6Bj DGROUP:1D19 jmp short loc_A7EC DGROUP:1D19 _$M_GET_MSG_ADDRESS endp DGROUP:1D19 DGROUP:1D1B DGROUP:1D1B ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1D1B DGROUP:1D1B DGROUP:1D1B _$M_MYRET proc far ; CODE XREF: _$M_GET_MSG_ADDRESS+99p DGROUP:1D1B iret DGROUP:1D1B _$M_MYRET endp DGROUP:1D1B DGROUP:1D1C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D1C ; START OF FUNCTION CHUNK FOR _$M_GET_MSG_ADDRESS DGROUP:1D1C DGROUP:1D1C loc_A7EC: ; CODE XREF: _$M_GET_MSG_ADDRESS:$MIF56j DGROUP:1D1C push cs DGROUP:1D1D call near ptr _$M_MYRET DGROUP:1D20 pop bx DGROUP:1D21 pop si DGROUP:1D22 retf DGROUP:1D22 ; END OF FUNCTION CHUNK FOR _$M_GET_MSG_ADDRESS DGROUP:1D23 DGROUP:1D23 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1D23 DGROUP:1D23 DGROUP:1D23 _$M_SET_LEN_IN_CX proc near ; CODE XREF: _$M_GET_MSG_ADDRESS+90p DGROUP:1D23 push di DGROUP:1D24 push ax DGROUP:1D25 mov cx, -1 DGROUP:1D28 xor al, al DGROUP:1D2A repne scasb DGROUP:1D2C not cx DGROUP:1D2E dec cx DGROUP:1D2F pop ax DGROUP:1D30 pop di DGROUP:1D31 retn DGROUP:1D31 _$M_SET_LEN_IN_CX endp DGROUP:1D31 DGROUP:1D32 DGROUP:1D32 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1D32 DGROUP:1D32 DGROUP:1D32 _$M_FIND_SPECIFIED_MSG proc near ; CODE XREF: _$M_GET_MSG_ADDRESS+58p DGROUP:1D32 cmp bx, 1 DGROUP:1D35 jnz short $MIF64 DGROUP:1D37 cmp word ptr ds:$M_DISK_PROC_ADDR, 0FFFFh DGROUP:1D3C jz short $MIF64 DGROUP:1D3E cmp ax, 0FFFFh DGROUP:1D41 jnz short $MIF65 DGROUP:1D43 push ax DGROUP:1D44 mov ax, ds:$M_MSG_NUM DGROUP:1D47 call ds:$M_DISK_PROC_ADDR DGROUP:1D4B pop ax DGROUP:1D4C jmp short $MEN65 DGROUP:1D4E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D4E DGROUP:1D4E $MIF65: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+Fj DGROUP:1D4E call ds:$M_DISK_PROC_ADDR DGROUP:1D52 DGROUP:1D52 $MEN65: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+1Aj DGROUP:1D52 jmp short $MEN64 DGROUP:1D54 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D54 DGROUP:1D54 $MIF64: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+3j DGROUP:1D54 ; _$M_FIND_SPECIFIED_MSG+Aj DGROUP:1D54 xor cx, cx DGROUP:1D56 cmp dh, 0FFh DGROUP:1D59 jz short $MIF69 DGROUP:1D5B mov cl, es:[di+3] DGROUP:1D5F jmp short $MEN69 DGROUP:1D61 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D61 DGROUP:1D61 $MIF69: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+27j DGROUP:1D61 cmp es:[di], dh DGROUP:1D64 jnz short $MEN69 DGROUP:1D66 mov cl, es:[di+3] DGROUP:1D6A DGROUP:1D6A $MEN69: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+2Dj DGROUP:1D6A ; _$M_FIND_SPECIFIED_MSG+32j DGROUP:1D6A add di, 4 DGROUP:1D6D stc DGROUP:1D6E DGROUP:1D6E $MEN64: ; CODE XREF: _$M_FIND_SPECIFIED_MSG:$MEN65j DGROUP:1D6E jnb short $MIF86 DGROUP:1D70 clc DGROUP:1D71 DGROUP:1D71 $MDO76: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+5Aj DGROUP:1D71 or cx, cx DGROUP:1D73 jz short $MEN76 DGROUP:1D75 cmp dh, 0FFh DGROUP:1D78 jz short $MIF78 DGROUP:1D7A cmp ax, es:[di] DGROUP:1D7D jmp short $MEN78 DGROUP:1D7F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D7F DGROUP:1D7F $MIF78: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+46j DGROUP:1D7F cmp ax, es:[di] DGROUP:1D82 DGROUP:1D82 $MEN78: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+4Bj DGROUP:1D82 jnz short $MIF76 DGROUP:1D84 jmp short $MSR76 DGROUP:1D86 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D86 DGROUP:1D86 $MIF76: ; CODE XREF: _$M_FIND_SPECIFIED_MSG:$MEN78j DGROUP:1D86 dec cx DGROUP:1D87 jz short $MEN76 DGROUP:1D89 add di, 4 DGROUP:1D8C jmp short $MDO76 DGROUP:1D8E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1D8E DGROUP:1D8E $MEN76: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+41j DGROUP:1D8E ; _$M_FIND_SPECIFIED_MSG+55j DGROUP:1D8E stc DGROUP:1D8F DGROUP:1D8F $MSR76: ; CODE XREF: _$M_FIND_SPECIFIED_MSG+52j DGROUP:1D8F jb short $MIF86 DGROUP:1D91 cmp dh, 0FFh DGROUP:1D94 clc DGROUP:1D95 jnz short $+2 DGROUP:1D97 DGROUP:1D97 $MIF87: DGROUP:1D97 add di, es:[di+2] DGROUP:1D9B DGROUP:1D9B $MIF86: ; CODE XREF: _$M_FIND_SPECIFIED_MSG:$MEN64j DGROUP:1D9B ; _$M_FIND_SPECIFIED_MSG:$MSR76j DGROUP:1D9B jb short $MIF91 DGROUP:1D9D xor ch, ch DGROUP:1D9F mov cl, es:[di] DGROUP:1DA2 inc di DGROUP:1DA3 DGROUP:1DA3 $MIF91: ; CODE XREF: _$M_FIND_SPECIFIED_MSG:$MIF86j DGROUP:1DA3 mov ds:$M_SIZE, 0 DGROUP:1DA8 retn DGROUP:1DA8 _$M_FIND_SPECIFIED_MSG endp DGROUP:1DA8 DGROUP:1DA9 DGROUP:1DA9 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1DA9 DGROUP:1DA9 DGROUP:1DA9 SYSDISPMSG proc far ; CODE XREF: _sysdispmsg+1CP DGROUP:1DA9 push ax DGROUP:1DAA push bx DGROUP:1DAB push cx DGROUP:1DAC push bp DGROUP:1DAD push di DGROUP:1DAE push es DGROUP:1DAF push dx DGROUP:1DB0 mov bp, cx DGROUP:1DB2 mov ds:$M_HANDLE, bx DGROUP:1DB6 mov ds:$M_CLASS, dh DGROUP:1DBA call _$M_GET_MSG_ADDRESS DGROUP:1DBF or cx, cx DGROUP:1DC1 jz short $MIF93 DGROUP:1DC3 or bp, bp DGROUP:1DC5 jnz short $MIF94 DGROUP:1DC7 call _$M_DISPLAY_STRING DGROUP:1DCA jmp short $MEN94 DGROUP:1DCC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1DCC DGROUP:1DCC $MIF94: ; CODE XREF: SYSDISPMSG+1Cj DGROUP:1DCC call _$M_DISPLAY_MESSAGE DGROUP:1DCF DGROUP:1DCF $MEN94: ; CODE XREF: SYSDISPMSG+21j DGROUP:1DCF jb short $MIF97 DGROUP:1DD1 pop dx DGROUP:1DD2 call _$M_ADD_CRLF DGROUP:1DD5 pop es DGROUP:1DD6 pop di DGROUP:1DD7 jmp short $MEN97 DGROUP:1DD9 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1DD9 DGROUP:1DD9 $MIF97: ; CODE XREF: SYSDISPMSG:$MEN94j DGROUP:1DD9 add sp, 6 DGROUP:1DDC stc DGROUP:1DDD DGROUP:1DDD $MEN97: ; CODE XREF: SYSDISPMSG+2Ej DGROUP:1DDD jmp short $MEN93 DGROUP:1DDF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1DDF DGROUP:1DDF $MIF93: ; CODE XREF: SYSDISPMSG+18j DGROUP:1DDF pop es DGROUP:1DE0 pop di DGROUP:1DE1 pop dx DGROUP:1DE2 stc DGROUP:1DE3 DGROUP:1DE3 $MEN93: ; CODE XREF: SYSDISPMSG:$MEN97j DGROUP:1DE3 jb short $MIF104 DGROUP:1DE5 pop bp DGROUP:1DE6 pop cx DGROUP:1DE7 pop bx DGROUP:1DE8 pop ax DGROUP:1DE9 jmp short $MEN104 DGROUP:1DEB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1DEB DGROUP:1DEB $MIF104: ; CODE XREF: SYSDISPMSG:$MEN93j DGROUP:1DEB add sp, 8 DGROUP:1DEE stc DGROUP:1DEF DGROUP:1DEF $MEN104: ; CODE XREF: SYSDISPMSG+40j DGROUP:1DEF retf DGROUP:1DEF SYSDISPMSG endp DGROUP:1DEF DGROUP:1DF0 DGROUP:1DF0 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1DF0 DGROUP:1DF0 DGROUP:1DF0 _$M_DISPLAY_STRING proc near ; CODE XREF: SYSDISPMSG+1Ep DGROUP:1DF0 ; _$M_ADD_CRLF+13p ... DGROUP:1DF0 push ax DGROUP:1DF1 push bx DGROUP:1DF2 push dx DGROUP:1DF3 mov bx, ds:$M_HANDLE DGROUP:1DF7 cmp bx, 0FFFFh DGROUP:1DFA jnz short $MIF107 DGROUP:1DFC call _$M_DISPLAY_$_STRING DGROUP:1DFF jmp short $MEN107 DGROUP:1E01 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1E01 DGROUP:1E01 $MIF107: ; CODE XREF: _$M_DISPLAY_STRING+Aj DGROUP:1E01 call _$M_DISPLAY_H_STRING DGROUP:1E04 DGROUP:1E04 $MEN107: ; CODE XREF: _$M_DISPLAY_STRING+Fj DGROUP:1E04 jnb short $MIF110 DGROUP:1E06 mov ah, 59h DGROUP:1E08 mov bx, 0 DGROUP:1E0B int 21h ; DOS - 3+ - GET EXTENDED ERROR CODE DGROUP:1E0B ; BX = version code (0000h for DOS 3.x) DGROUP:1E0D xor ah, ah DGROUP:1E0F add sp, 6 DGROUP:1E12 stc DGROUP:1E13 jmp short $MIF112 DGROUP:1E15 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1E15 DGROUP:1E15 $MIF110: ; CODE XREF: _$M_DISPLAY_STRING:$MEN107j DGROUP:1E15 cmp bx, 0FFFFh DGROUP:1E18 jz short $MIF112 DGROUP:1E1A cmp ax, cx DGROUP:1E1C jz short $MIF112 DGROUP:1E1E call _$M_GET_EXT_ERR_39 DGROUP:1E21 add sp, 6 DGROUP:1E24 stc DGROUP:1E25 DGROUP:1E25 $MIF112: ; CODE XREF: _$M_DISPLAY_STRING+23j DGROUP:1E25 ; _$M_DISPLAY_STRING+28j ... DGROUP:1E25 jb short $MIF117 DGROUP:1E27 pop dx DGROUP:1E28 pop bx DGROUP:1E29 pop ax DGROUP:1E2A DGROUP:1E2A $MIF117: ; CODE XREF: _$M_DISPLAY_STRING:$MIF112j DGROUP:1E2A retn DGROUP:1E2A _$M_DISPLAY_STRING endp ; sp = 6 DGROUP:1E2A DGROUP:1E2B DGROUP:1E2B ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1E2B DGROUP:1E2B DGROUP:1E2B _$M_DISPLAY_$_STRING proc near ; CODE XREF: _$M_DISPLAY_STRING+Cp DGROUP:1E2B push ds DGROUP:1E2C push es DGROUP:1E2D pop ds DGROUP:1E2E cmp cx, 1 DGROUP:1E31 jnz short $MIF119 DGROUP:1E33 mov ah, 2 DGROUP:1E35 mov dl, es:[di] DGROUP:1E38 int 21h ; DOS - DISPLAY OUTPUT DGROUP:1E38 ; DL = character to send to standard output DGROUP:1E3A pop ds DGROUP:1E3B mov al, dl DGROUP:1E3D call _$M_IS_IT_DBCS DGROUP:1E40 push ds DGROUP:1E41 push es DGROUP:1E42 pop ds DGROUP:1E43 jnb short $MIF120 DGROUP:1E45 mov dl, es:[di+1] DGROUP:1E49 int 21h ; DOS - DGROUP:1E4B clc DGROUP:1E4C DGROUP:1E4C $MIF120: ; CODE XREF: _$M_DISPLAY_$_STRING+18j DGROUP:1E4C jmp short $MEN119 DGROUP:1E4E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1E4E DGROUP:1E4E $MIF119: ; CODE XREF: _$M_DISPLAY_$_STRING+6j DGROUP:1E4E mov ah, 2 DGROUP:1E50 DGROUP:1E50 $MDO123: ; CODE XREF: _$M_DISPLAY_$_STRING+2Fj DGROUP:1E50 or cx, cx DGROUP:1E52 jz short $MEN119 DGROUP:1E54 mov dl, es:[di] DGROUP:1E57 int 21h ; DOS - DISPLAY OUTPUT DGROUP:1E57 ; DL = character to send to standard output DGROUP:1E59 inc di DGROUP:1E5A loop $MDO123 DGROUP:1E5C DGROUP:1E5C $MEN119: ; CODE XREF: _$M_DISPLAY_$_STRING:$MIF120j DGROUP:1E5C ; _$M_DISPLAY_$_STRING+27j DGROUP:1E5C clc DGROUP:1E5D pop ds DGROUP:1E5E retn DGROUP:1E5E _$M_DISPLAY_$_STRING endp DGROUP:1E5E DGROUP:1E5F DGROUP:1E5F ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1E5F DGROUP:1E5F DGROUP:1E5F Scan_CtrlZ proc near ; CODE XREF: _$M_DISPLAY_H_STRING+3Cp DGROUP:1E5F push di DGROUP:1E60 push ax DGROUP:1E61 push es DGROUP:1E62 push bx DGROUP:1E63 mov di, dx DGROUP:1E65 push ds DGROUP:1E66 pop es DGROUP:1E67 mov bx, cx DGROUP:1E69 mov al, 1Ah DGROUP:1E6B cld DGROUP:1E6C repne scasb DGROUP:1E6E jnz short noCtrlZ DGROUP:1E70 sub bx, cx DGROUP:1E72 dec bx DGROUP:1E73 DGROUP:1E73 noCtrlZ: ; CODE XREF: Scan_CtrlZ+Fj DGROUP:1E73 mov cx, bx DGROUP:1E75 pop bx DGROUP:1E76 pop es DGROUP:1E77 pop ax DGROUP:1E78 pop di DGROUP:1E79 retn DGROUP:1E79 Scan_CtrlZ endp DGROUP:1E79 DGROUP:1E7A DGROUP:1E7A ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1E7A DGROUP:1E7A DGROUP:1E7A _$M_DISPLAY_H_STRING proc near ; CODE XREF: _$M_DISPLAY_STRING:$MIF107p DGROUP:1E7A DGROUP:1E7A ; FUNCTION CHUNK AT DGROUP:1EAE SIZE 00000020 BYTES DGROUP:1E7A DGROUP:1E7A xor ax, ax DGROUP:1E7C or cx, cx DGROUP:1E7E jz short $MIF127 DGROUP:1E80 push ds DGROUP:1E81 push es DGROUP:1E82 pop ds DGROUP:1E83 mov ah, 40h DGROUP:1E85 mov dx, di DGROUP:1E87 cmp cx, 1 DGROUP:1E8A jnz short $MIF128 DGROUP:1E8C int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE DGROUP:1E8C ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer DGROUP:1E8E pop ds DGROUP:1E8F push ax DGROUP:1E90 mov al, es:[di] DGROUP:1E93 call _$M_IS_IT_DBCS DGROUP:1E96 pop ax DGROUP:1E97 push ds DGROUP:1E98 push es DGROUP:1E99 pop ds DGROUP:1E9A jnb short $MIF129 DGROUP:1E9C clc DGROUP:1E9D mov ah, 40h DGROUP:1E9F inc dx DGROUP:1EA0 int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE DGROUP:1EA0 ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer DGROUP:1EA2 DGROUP:1EA2 $MIF129: ; CODE XREF: _$M_DISPLAY_H_STRING+20j DGROUP:1EA2 pushf DGROUP:1EA3 cmp byte ptr es:[di], 1Ah DGROUP:1EA7 jnz short $MEN129 DGROUP:1EA9 mov ax, cx DGROUP:1EAB DGROUP:1EAB $MEN129: ; CODE XREF: _$M_DISPLAY_H_STRING+2Dj DGROUP:1EAB jmp short loc_A97E DGROUP:1EAB _$M_DISPLAY_H_STRING endp DGROUP:1EAB DGROUP:1EAD DGROUP:1EAD ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1EAD DGROUP:1EAD DGROUP:1EAD _$M_Mret proc far ; CODE XREF: _$M_DISPLAY_H_STRING+35p DGROUP:1EAD iret DGROUP:1EAD _$M_Mret endp DGROUP:1EAD DGROUP:1EAE ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1EAE ; START OF FUNCTION CHUNK FOR _$M_DISPLAY_H_STRING DGROUP:1EAE DGROUP:1EAE loc_A97E: ; CODE XREF: _$M_DISPLAY_H_STRING:$MEN129j DGROUP:1EAE push cs DGROUP:1EAF call near ptr _$M_Mret DGROUP:1EB2 jmp short $MEN128 DGROUP:1EB4 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1EB4 DGROUP:1EB4 $MIF128: ; CODE XREF: _$M_DISPLAY_H_STRING+10j DGROUP:1EB4 push bp DGROUP:1EB5 push cx DGROUP:1EB6 call Scan_CtrlZ DGROUP:1EB9 mov bp, cx DGROUP:1EBB pop cx DGROUP:1EBC int 21h ; DOS - DGROUP:1EBE jb short m_cnt_ok DGROUP:1EC0 DGROUP:1EC0 chk_count: DGROUP:1EC0 cmp cx, ax DGROUP:1EC2 jz short m_cnt_ok DGROUP:1EC4 cmp bp, ax DGROUP:1EC6 clc DGROUP:1EC7 jnz short m_cnt_ok DGROUP:1EC9 mov ax, cx DGROUP:1ECB DGROUP:1ECB m_cnt_ok: ; CODE XREF: _$M_DISPLAY_H_STRING+44j DGROUP:1ECB ; _$M_DISPLAY_H_STRING+48j ... DGROUP:1ECB pop bp DGROUP:1ECC DGROUP:1ECC $MEN128: ; CODE XREF: _$M_DISPLAY_H_STRING+38j DGROUP:1ECC pop ds DGROUP:1ECD DGROUP:1ECD $MIF127: ; CODE XREF: _$M_DISPLAY_H_STRING+4j DGROUP:1ECD retn DGROUP:1ECD ; END OF FUNCTION CHUNK FOR _$M_DISPLAY_H_STRING DGROUP:1ECE DGROUP:1ECE ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1ECE DGROUP:1ECE DGROUP:1ECE _$M_GET_EXT_ERR_39 proc near ; CODE XREF: _$M_DISPLAY_STRING+2Ep DGROUP:1ECE mov ax, 39 DGROUP:1ED1 mov bx, 4 DGROUP:1ED4 mov ch, 1 DGROUP:1ED6 retn DGROUP:1ED6 _$M_GET_EXT_ERR_39 endp DGROUP:1ED6 DGROUP:1ED7 DGROUP:1ED7 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1ED7 DGROUP:1ED7 DGROUP:1ED7 _$M_ADD_CRLF proc near ; CODE XREF: SYSDISPMSG+29p DGROUP:1ED7 cmp dh, 0FFh DGROUP:1EDA jz short $MIF135 DGROUP:1EDC test dh, 80h DGROUP:1EDF jnz short $MIF135 DGROUP:1EE1 push ds DGROUP:1EE2 pop es DGROUP:1EE3 lea di, $M_CRLF DGROUP:1EE7 mov cx, 2 DGROUP:1EEA call _$M_DISPLAY_STRING DGROUP:1EED DGROUP:1EED $MIF135: ; CODE XREF: _$M_ADD_CRLF+3j DGROUP:1EED ; _$M_ADD_CRLF+8j DGROUP:1EED retn DGROUP:1EED _$M_ADD_CRLF endp DGROUP:1EED DGROUP:1EEE DGROUP:1EEE ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1EEE DGROUP:1EEE DGROUP:1EEE _$M_IS_IT_DBCS proc near ; CODE XREF: _$M_DISPLAY_$_STRING+12p DGROUP:1EEE ; _$M_DISPLAY_H_STRING+19p ... DGROUP:1EEE push es DGROUP:1EEF push di DGROUP:1EF0 les di, ds:$M_DBCS_VEC DGROUP:1EF4 or di, di DGROUP:1EF6 jz short $MIF138 DGROUP:1EF8 DGROUP:1EF8 $MDO139: ; CODE XREF: _$M_IS_IT_DBCS+1Fj DGROUP:1EF8 cmp word ptr es:[di], 0 DGROUP:1EFC clc DGROUP:1EFD jz short $MIF138 DGROUP:1EFF cmp al, es:[di] DGROUP:1F02 jb short $MIF141 DGROUP:1F04 cmp al, es:[di+1] DGROUP:1F08 ja short $MIF141 DGROUP:1F0A stc DGROUP:1F0B DGROUP:1F0B $MIF141: ; CODE XREF: _$M_IS_IT_DBCS+14j DGROUP:1F0B ; _$M_IS_IT_DBCS+1Aj DGROUP:1F0B inc di DGROUP:1F0C inc di DGROUP:1F0D jmp short $MDO139 DGROUP:1F0F ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1F0F DGROUP:1F0F $MIF138: ; CODE XREF: _$M_IS_IT_DBCS+8j DGROUP:1F0F ; _$M_IS_IT_DBCS+Fj DGROUP:1F0F pop di DGROUP:1F10 pop es DGROUP:1F11 retn DGROUP:1F11 _$M_IS_IT_DBCS endp DGROUP:1F11 DGROUP:1F12 DGROUP:1F12 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1F12 DGROUP:1F12 DGROUP:1F12 _$M_CONVERT2ASC proc near ; CODE XREF: _$M_EXT_PAR_REPLACE+Bp DGROUP:1F12 ; _$M_BIN2ASC_REPLACE+AEp ... DGROUP:1F12 pop ds:$M_RETURN_ADDR DGROUP:1F16 xor bx, bx DGROUP:1F18 xchg ax, bx DGROUP:1F19 xchg ax, dx DGROUP:1F1A DGROUP:1F1A $MDO145: ; CODE XREF: _$M_CONVERT2ASC+5Fj DGROUP:1F1A div ds:$M_DIVISOR DGROUP:1F1E xchg ax, bx DGROUP:1F1F div ds:$M_DIVISOR DGROUP:1F23 cmp dx, 9 DGROUP:1F26 jbe short $MIF146 DGROUP:1F28 add dl, 37h DGROUP:1F2B jmp short $MEN146 DGROUP:1F2D ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1F2D DGROUP:1F2D $MIF146: ; CODE XREF: _$M_CONVERT2ASC+14j DGROUP:1F2D add dl, '0' DGROUP:1F30 DGROUP:1F30 $MEN146: ; CODE XREF: _$M_CONVERT2ASC+19j DGROUP:1F30 push dx DGROUP:1F31 inc cx DGROUP:1F32 or ax, ax DGROUP:1F34 jnz short $MLL149 DGROUP:1F36 or bx, bx DGROUP:1F38 jz short $MEN145 DGROUP:1F3A DGROUP:1F3A $MLL149: ; CODE XREF: _$M_CONVERT2ASC+22j DGROUP:1F3A cmp cx, 3 DGROUP:1F3D jnz short $MIF150 DGROUP:1F3F cmp byte ptr [si+0Ah], ',' DGROUP:1F43 jnz short $MIF151 DGROUP:1F45 push word ptr ds:$M_THOU_SEPARA DGROUP:1F49 inc cx DGROUP:1F4A DGROUP:1F4A $MIF151: ; CODE XREF: _$M_CONVERT2ASC+31j DGROUP:1F4A jmp short $MEN150 DGROUP:1F4C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1F4C DGROUP:1F4C $MIF150: ; CODE XREF: _$M_CONVERT2ASC+2Bj DGROUP:1F4C cmp cx, 7 DGROUP:1F4F jnz short $MIF154 DGROUP:1F51 cmp byte ptr [si+0Ah], ',' DGROUP:1F55 jnz short $MIF155 DGROUP:1F57 push word ptr ds:$M_THOU_SEPARA DGROUP:1F5B inc cx DGROUP:1F5C DGROUP:1F5C $MIF155: ; CODE XREF: _$M_CONVERT2ASC+43j DGROUP:1F5C jmp short $MEN150 DGROUP:1F5E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1F5E DGROUP:1F5E $MIF154: ; CODE XREF: _$M_CONVERT2ASC+3Dj DGROUP:1F5E cmp cx, 11 DGROUP:1F61 jnz short $MEN150 DGROUP:1F63 cmp byte ptr [si+0Ah], ',' DGROUP:1F67 jnz short $MEN150 DGROUP:1F69 push word ptr ds:$M_THOU_SEPARA DGROUP:1F6D inc cx DGROUP:1F6E DGROUP:1F6E $MEN150: ; CODE XREF: _$M_CONVERT2ASC:$MIF151j DGROUP:1F6E ; _$M_CONVERT2ASC:$MIF155j ... DGROUP:1F6E xchg ax, bx DGROUP:1F6F xor dx, dx DGROUP:1F71 jmp short $MDO145 DGROUP:1F73 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1F73 DGROUP:1F73 $MEN145: ; CODE XREF: _$M_CONVERT2ASC+26j DGROUP:1F73 xor ax, ax DGROUP:1F75 cwd DGROUP:1F76 push ds:$M_RETURN_ADDR DGROUP:1F7A retn DGROUP:1F7A _$M_CONVERT2ASC endp ; sp = -2 DGROUP:1F7A DGROUP:1F7B DGROUP:1F7B ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:1F7B DGROUP:1F7B DGROUP:1F7B _$M_DISPLAY_MESSAGE proc near ; CODE XREF: SYSDISPMSG:$MIF94p DGROUP:1F7B ; _$M_DISPLAY_MESSAGE+E9j DGROUP:1F7B xor dx, dx DGROUP:1F7D or cx, cx DGROUP:1F7F jz short $MEN167 DGROUP:1F81 mov ax, 2500h DGROUP:1F84 DGROUP:1F84 $MDO167: ; CODE XREF: _$M_DISPLAY_MESSAGE+23j DGROUP:1F84 cmp es:[di], ah DGROUP:1F87 jnz short $MLL168 DGROUP:1F89 cmp es:[di+1], ah DGROUP:1F8D jz short $MLL168 DGROUP:1F8F cmp al, ah DGROUP:1F91 jnz short $MEN167 DGROUP:1F93 DGROUP:1F93 $MLL168: ; CODE XREF: _$M_DISPLAY_MESSAGE+Cj DGROUP:1F93 ; _$M_DISPLAY_MESSAGE+12j DGROUP:1F93 mov al, es:[di] DGROUP:1F96 call _$M_IS_IT_DBCS DGROUP:1F99 jnb short $MIF169 DGROUP:1F9B inc di DGROUP:1F9C DGROUP:1F9C $MIF169: ; CODE XREF: _$M_DISPLAY_MESSAGE+1Ej DGROUP:1F9C inc di DGROUP:1F9D inc dx DGROUP:1F9E loop $MDO167 DGROUP:1FA0 DGROUP:1FA0 $MEN167: ; CODE XREF: _$M_DISPLAY_MESSAGE+4j DGROUP:1FA0 ; _$M_DISPLAY_MESSAGE+16j DGROUP:1FA0 push si DGROUP:1FA1 xchg cx, dx DGROUP:1FA3 or bp, bp DGROUP:1FA5 jz short $MSR175 DGROUP:1FA7 dec bp DGROUP:1FA8 cmp ds:$M_MSG_NUM, 0 DGROUP:1FAD jnz short $MSR175 DGROUP:1FAF DGROUP:1FAF $MDO175: ; CODE XREF: _$M_DISPLAY_MESSAGE+4Bj DGROUP:1FAF mov al, [si+6] DGROUP:1FB2 add al, '0' DGROUP:1FB4 cmp al, es:[di+1] DGROUP:1FB8 jnz short $MIF175 DGROUP:1FBA jmp short $MSR175 DGROUP:1FBC ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1FBC DGROUP:1FBC $MIF175: ; CODE XREF: _$M_DISPLAY_MESSAGE+3Dj DGROUP:1FBC cmp al, '0' DGROUP:1FBE jnz short $MLL178 DGROUP:1FC0 or dx, dx DGROUP:1FC2 jz short $MEN175 DGROUP:1FC4 DGROUP:1FC4 $MLL178: ; CODE XREF: _$M_DISPLAY_MESSAGE+43j DGROUP:1FC4 add si, [si] DGROUP:1FC6 jmp short $MDO175 DGROUP:1FC8 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1FC8 DGROUP:1FC8 $MEN175: ; CODE XREF: _$M_DISPLAY_MESSAGE+47j DGROUP:1FC8 cmp ds:$M_CLASS, 0FFh DGROUP:1FCD jnz short $MIF180 DGROUP:1FCF inc dx DGROUP:1FD0 inc dx DGROUP:1FD1 dec cx DGROUP:1FD2 dec cx DGROUP:1FD3 dec di DGROUP:1FD4 dec di DGROUP:1FD5 jmp short $MSR175 DGROUP:1FD7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1FD7 DGROUP:1FD7 $MIF180: ; CODE XREF: _$M_DISPLAY_MESSAGE+52j DGROUP:1FD7 mov dx, -1 DGROUP:1FDA DGROUP:1FDA $MSR175: ; CODE XREF: _$M_DISPLAY_MESSAGE+2Aj DGROUP:1FDA ; _$M_DISPLAY_MESSAGE+32j ... DGROUP:1FDA push di DGROUP:1FDB sub di, cx DGROUP:1FDD call _$M_DISPLAY_STRING DGROUP:1FE0 pop di DGROUP:1FE1 pop cx DGROUP:1FE2 jnb short $MXL3 DGROUP:1FE4 jmp $MEN165 DGROUP:1FE7 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1FE7 DGROUP:1FE7 $MXL3: ; CODE XREF: _$M_DISPLAY_MESSAGE+67j DGROUP:1FE7 push cx DGROUP:1FE8 mov cx, dx DGROUP:1FEA cmp byte ptr [si+6], 0 DGROUP:1FEE jz short $MIF187 DGROUP:1FF0 or cx, cx DGROUP:1FF2 jz short $MIF188 DGROUP:1FF4 dec cx DGROUP:1FF5 dec cx DGROUP:1FF6 inc di DGROUP:1FF7 inc di DGROUP:1FF8 jmp short $MEN188 DGROUP:1FFA ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1FFA DGROUP:1FFA $MIF188: ; CODE XREF: _$M_DISPLAY_MESSAGE+77j DGROUP:1FFA pop si DGROUP:1FFB DGROUP:1FFB $MEN188: ; CODE XREF: _$M_DISPLAY_MESSAGE+7Dj DGROUP:1FFB jmp short $MEN187 DGROUP:1FFD ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:1FFD DGROUP:1FFD $MIF187: ; CODE XREF: _$M_DISPLAY_MESSAGE+73j DGROUP:1FFD or cx, cx DGROUP:1FFF jnz short $MIF192 DGROUP:2001 pop si DGROUP:2002 jmp short $MEN187 DGROUP:2004 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2004 DGROUP:2004 $MIF192: ; CODE XREF: _$M_DISPLAY_MESSAGE+84j DGROUP:2004 cmp cx, 0FFFFh DGROUP:2007 jnz short $MIF194 DGROUP:2009 xor cx, cx DGROUP:200B DGROUP:200B $MIF194: ; CODE XREF: _$M_DISPLAY_MESSAGE+8Cj DGROUP:200B or di, di DGROUP:200D DGROUP:200D $MEN187: ; CODE XREF: _$M_DISPLAY_MESSAGE:$MEN188j DGROUP:200D ; _$M_DISPLAY_MESSAGE+87j DGROUP:200D jz short $MEN165 DGROUP:200F push bp DGROUP:2010 push di DGROUP:2011 push es DGROUP:2012 push cx DGROUP:2013 xor cx, cx DGROUP:2015 cmp ds:$M_MSG_NUM, 0 DGROUP:201A jnz short $MIF199 DGROUP:201C test byte ptr [si+7], 0Fh DGROUP:2020 jnz short $MIF200 DGROUP:2022 les di, [si+2] DGROUP:2025 call _$M_CHAR_REPLACE DGROUP:2028 jmp short $MIF202 DGROUP:202A ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:202A DGROUP:202A $MIF200: ; CODE XREF: _$M_DISPLAY_MESSAGE+A5j DGROUP:202A test byte ptr [si+7], 0Dh DGROUP:202E jz short $MLL202 DGROUP:2030 test byte ptr [si+7], 0Eh DGROUP:2034 jz short $MLL202 DGROUP:2036 test byte ptr [si+7], 0Ch DGROUP:203A jnz short $MIF202 DGROUP:203C DGROUP:203C $MLL202: ; CODE XREF: _$M_DISPLAY_MESSAGE+B3j DGROUP:203C ; _$M_DISPLAY_MESSAGE+B9j DGROUP:203C les di, [si+2] DGROUP:203F call _$M_BIN2ASC_REPLACE DGROUP:2042 jmp short $+2 DGROUP:2044 DGROUP:2044 $MIF202: ; CODE XREF: _$M_DISPLAY_MESSAGE+ADj DGROUP:2044 ; _$M_DISPLAY_MESSAGE+BFj DGROUP:2044 call _$M_DISPLAY_REPLACE DGROUP:2047 jmp short $MEN199 DGROUP:2049 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2049 DGROUP:2049 $MIF199: ; CODE XREF: _$M_DISPLAY_MESSAGE+9Fj DGROUP:2049 call _$M_EXT_PAR_REPLACE DGROUP:204C DGROUP:204C $MEN199: ; CODE XREF: _$M_DISPLAY_MESSAGE+CCj DGROUP:204C jb short $MIF211 DGROUP:204E pop cx DGROUP:204F pop es DGROUP:2050 pop di DGROUP:2051 pop bp DGROUP:2052 pop si DGROUP:2053 jmp short $MEN211 DGROUP:2055 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2055 DGROUP:2055 $MIF211: ; CODE XREF: _$M_DISPLAY_MESSAGE:$MEN199j DGROUP:2055 add sp, 10 DGROUP:2058 stc DGROUP:2059 jmp short $MEN165 DGROUP:205B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:205B DGROUP:205B $MEN211: ; CODE XREF: _$M_DISPLAY_MESSAGE+D8j DGROUP:205B cmp ds:$M_MSG_NUM, 0 DGROUP:2060 jnz short $MEN165 DGROUP:2062 jb short $MEN165 DGROUP:2064 jmp _$M_DISPLAY_MESSAGE DGROUP:2067 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2067 DGROUP:2067 $MEN165: ; CODE XREF: _$M_DISPLAY_MESSAGE+69j DGROUP:2067 ; _$M_DISPLAY_MESSAGE:$MEN187j ... DGROUP:2067 mov ds:$M_MSG_NUM, 0 DGROUP:206D retn DGROUP:206D _$M_DISPLAY_MESSAGE endp DGROUP:206D DGROUP:206E DGROUP:206E ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:206E DGROUP:206E DGROUP:206E _$M_EXT_PAR_REPLACE proc near ; CODE XREF: _$M_DISPLAY_MESSAGE:$MIF199p DGROUP:206E xor dx, dx DGROUP:2070 mov ax, ds:$M_MSG_NUM DGROUP:2073 mov ds:$M_DIVISOR, 10 DGROUP:2079 call _$M_CONVERT2ASC DGROUP:207C DGROUP:207C $MDO215: ; CODE XREF: _$M_EXT_PAR_REPLACE+1Ej DGROUP:207C pop ax DGROUP:207D mov byte ptr ds:$M_TEMP_BUF[bx], al ; "$$$$$$$" DGROUP:2081 inc bx DGROUP:2082 cmp bx, 64 DGROUP:2085 jnz short $MIF216 DGROUP:2087 call _$M_FLUSH_BUF DGROUP:208A DGROUP:208A $MIF216: ; CODE XREF: _$M_EXT_PAR_REPLACE+17j DGROUP:208A dec cl DGROUP:208C jnz short $MDO215 DGROUP:208E mov ax, 0A0Dh DGROUP:2091 mov word ptr ds:$M_TEMP_BUF[bx], ax ; "$$$$$$$" DGROUP:2095 inc bx DGROUP:2096 inc bx DGROUP:2097 call _$M_FLUSH_BUF DGROUP:209A retn DGROUP:209A _$M_EXT_PAR_REPLACE endp ; sp = 2 DGROUP:209A DGROUP:209B DGROUP:209B ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:209B DGROUP:209B DGROUP:209B _$M_DISPLAY_REPLACE proc near ; CODE XREF: _$M_DISPLAY_MESSAGE:$MIF202p DGROUP:209B xor bx, bx DGROUP:209D cmp byte ptr [si+6], 0 DGROUP:20A1 jnz short $MIF276 DGROUP:20A3 mov word ptr ds:$M_TEMP_BUF[bx], 2D20h ; "$$$$$$$" DGROUP:20A9 inc bx DGROUP:20AA inc bx DGROUP:20AB mov byte ptr ds:$M_TEMP_BUF[bx], ' ' ; "$$$$$$$" DGROUP:20B0 inc bx DGROUP:20B1 call _$M_FLUSH_BUF DGROUP:20B4 DGROUP:20B4 $MIF276: ; CODE XREF: _$M_DISPLAY_REPLACE+6j DGROUP:20B4 pop bp DGROUP:20B5 xor bx, bx DGROUP:20B7 xor dx, dx DGROUP:20B9 mov ds:$M_SIZE, cl DGROUP:20BD mov al, [si+9] DGROUP:20C0 cmp al, cl DGROUP:20C2 jbe short $MIF278 DGROUP:20C4 sub al, cl DGROUP:20C6 mov dh, al DGROUP:20C8 test byte ptr [si+7], 80h DGROUP:20CC jz short $MIF278 DGROUP:20CE DGROUP:20CE $MDO280: ; CODE XREF: _$M_DISPLAY_REPLACE+45j DGROUP:20CE mov al, [si+0Ah] DGROUP:20D1 mov byte ptr ds:$M_TEMP_BUF[bx], al ; "$$$$$$$" DGROUP:20D5 inc bx DGROUP:20D6 cmp bx, 64 DGROUP:20D9 jnz short $MIF281 DGROUP:20DB call _$M_FLUSH_BUF DGROUP:20DE DGROUP:20DE $MIF281: ; CODE XREF: _$M_DISPLAY_REPLACE+3Ej DGROUP:20DE dec dh DGROUP:20E0 jnz short $MDO280 DGROUP:20E2 DGROUP:20E2 $MIF278: ; CODE XREF: _$M_DISPLAY_REPLACE+27j DGROUP:20E2 ; _$M_DISPLAY_REPLACE+31j DGROUP:20E2 cmp byte ptr [si+8], 0 DGROUP:20E6 jz short $MIF286 DGROUP:20E8 cmp [si+8], cl DGROUP:20EB jnb short $MIF286 DGROUP:20ED sub cl, [si+8] DGROUP:20F0 mov dl, cl DGROUP:20F2 mov cl, [si+8] DGROUP:20F5 DGROUP:20F5 $MIF286: ; CODE XREF: _$M_DISPLAY_REPLACE+4Bj DGROUP:20F5 ; _$M_DISPLAY_REPLACE+50j DGROUP:20F5 or cx, cx DGROUP:20F7 jz short $MIF290 DGROUP:20F9 DGROUP:20F9 $MDO291: ; CODE XREF: _$M_DISPLAY_REPLACE+80j DGROUP:20F9 test byte ptr [si+7], 0Fh DGROUP:20FD jnz short $MIF292 DGROUP:20FF test byte ptr [si+7], 10h DGROUP:2103 jz short $MIF292 DGROUP:2105 mov al, es:[di] DGROUP:2108 inc di DGROUP:2109 jmp short $MEN292 DGROUP:210B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:210B DGROUP:210B $MIF292: ; CODE XREF: _$M_DISPLAY_REPLACE+62j DGROUP:210B ; _$M_DISPLAY_REPLACE+68j DGROUP:210B pop ax DGROUP:210C DGROUP:210C $MEN292: ; CODE XREF: _$M_DISPLAY_REPLACE+6Ej DGROUP:210C mov byte ptr ds:$M_TEMP_BUF[bx], al ; "$$$$$$$" DGROUP:2110 inc bx DGROUP:2111 cmp bx, 64 DGROUP:2114 jnz short $MIF295 DGROUP:2116 call _$M_FLUSH_BUF DGROUP:2119 DGROUP:2119 $MIF295: ; CODE XREF: _$M_DISPLAY_REPLACE+79j DGROUP:2119 dec cl DGROUP:211B jnz short $MDO291 DGROUP:211D DGROUP:211D $MIF290: ; CODE XREF: _$M_DISPLAY_REPLACE+5Cj DGROUP:211D test byte ptr [si+7], 80h DGROUP:2121 jnz short $MIF299 DGROUP:2123 or dh, dh DGROUP:2125 jz short $MIF299 DGROUP:2127 DGROUP:2127 $MDO301: ; CODE XREF: _$M_DISPLAY_REPLACE+9Ej DGROUP:2127 mov al, [si+0Ah] DGROUP:212A mov byte ptr ds:$M_TEMP_BUF[bx], al ; "$$$$$$$" DGROUP:212E inc bx DGROUP:212F cmp bx, 64 DGROUP:2132 jnz short $MIF302 DGROUP:2134 call _$M_FLUSH_BUF DGROUP:2137 DGROUP:2137 $MIF302: ; CODE XREF: _$M_DISPLAY_REPLACE+97j DGROUP:2137 dec dh DGROUP:2139 jnz short $MDO301 DGROUP:213B DGROUP:213B $MIF299: ; CODE XREF: _$M_DISPLAY_REPLACE+86j DGROUP:213B ; _$M_DISPLAY_REPLACE+8Aj DGROUP:213B test byte ptr [si+7], 0Fh DGROUP:213F jnz short $MIF307 DGROUP:2141 test byte ptr [si+7], 10h DGROUP:2145 jz short $MIF307 DGROUP:2147 jmp short $MEN307 DGROUP:2149 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2149 DGROUP:2149 $MIF307: ; CODE XREF: _$M_DISPLAY_REPLACE+A4j DGROUP:2149 ; _$M_DISPLAY_REPLACE+AAj DGROUP:2149 or dl, dl DGROUP:214B jz short $MEN307 DGROUP:214D DGROUP:214D $MDO310: ; CODE XREF: _$M_DISPLAY_REPLACE+B8j DGROUP:214D pop ds:$M_RETURN_ADDR DGROUP:2151 dec dl DGROUP:2153 jnz short $MDO310 DGROUP:2155 DGROUP:2155 $MEN307: ; CODE XREF: _$M_DISPLAY_REPLACE+ACj DGROUP:2155 ; _$M_DISPLAY_REPLACE+B0j DGROUP:2155 call _$M_FLUSH_BUF DGROUP:2158 push bp DGROUP:2159 retn DGROUP:2159 _$M_DISPLAY_REPLACE endp ; sp = 4 DGROUP:2159 DGROUP:215A DGROUP:215A ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:215A DGROUP:215A DGROUP:215A _$M_FLUSH_BUF proc near ; CODE XREF: _$M_EXT_PAR_REPLACE+19p DGROUP:215A ; _$M_EXT_PAR_REPLACE+29p ... DGROUP:215A push cx DGROUP:215B push es DGROUP:215C push di DGROUP:215D push ds DGROUP:215E pop es DGROUP:215F mov cx, bx DGROUP:2161 xor bx, bx DGROUP:2163 lea di, $M_TEMP_BUF ; "$$$$$$$" DGROUP:2167 call _$M_DISPLAY_STRING DGROUP:216A jb short $MIF314 DGROUP:216C pop di DGROUP:216D pop es DGROUP:216E pop cx DGROUP:216F retn DGROUP:2170 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2170 DGROUP:2170 $MIF314: ; CODE XREF: _$M_FLUSH_BUF+10j DGROUP:2170 add sp, 6 DGROUP:2173 stc DGROUP:2174 retn DGROUP:2174 _$M_FLUSH_BUF endp DGROUP:2174 DGROUP:2175 DGROUP:2175 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:2175 DGROUP:2175 DGROUP:2175 _$M_CHAR_REPLACE proc near ; CODE XREF: _$M_DISPLAY_MESSAGE+AAp DGROUP:2175 pop bp DGROUP:2176 test byte ptr [si+7], 30h DGROUP:217A jnz short $MDO321 DGROUP:217C mov al, es:[di] DGROUP:217F push ax DGROUP:2180 inc cx DGROUP:2181 call _$M_IS_IT_DBCS DGROUP:2184 jnb short $MIF318 DGROUP:2186 mov al, es:[di+1] DGROUP:218A push ax DGROUP:218B clc DGROUP:218C DGROUP:218C $MIF318: ; CODE XREF: _$M_CHAR_REPLACE+Fj DGROUP:218C jmp short $MEN317 DGROUP:218E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:218E DGROUP:218E $MDO321: ; CODE XREF: _$M_CHAR_REPLACE+5j DGROUP:218E ; _$M_CHAR_REPLACE+22j DGROUP:218E mov al, es:[di] DGROUP:2191 or al, al DGROUP:2193 jz short $MEN321 DGROUP:2195 inc di DGROUP:2196 inc cx DGROUP:2197 jmp short $MDO321 DGROUP:2199 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2199 DGROUP:2199 $MEN321: ; CODE XREF: _$M_CHAR_REPLACE+1Ej DGROUP:2199 sub di, cx DGROUP:219B DGROUP:219B $MEN317: ; CODE XREF: _$M_CHAR_REPLACE:$MIF318j DGROUP:219B push bp DGROUP:219C retn DGROUP:219C _$M_CHAR_REPLACE endp DGROUP:219C DGROUP:219D DGROUP:219D ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:219D DGROUP:219D DGROUP:219D _$M_BIN2ASC_REPLACE proc near ; CODE XREF: _$M_DISPLAY_MESSAGE+C4p DGROUP:219D pop bp DGROUP:219E xor ax, ax DGROUP:21A0 cwd DGROUP:21A1 mov ds:$M_DIVISOR, 16 DGROUP:21A7 xor bx, bx DGROUP:21A9 test byte ptr [si+7], 20h DGROUP:21AD jnz short $MIF325 DGROUP:21AF mov al, es:[di] DGROUP:21B2 test byte ptr [si+7], 0Dh DGROUP:21B6 jnz short $MIF326 DGROUP:21B8 test al, 80h DGROUP:21BA jz short $MIF327 DGROUP:21BC inc bx DGROUP:21BD and al, 7Fh DGROUP:21BF DGROUP:21BF $MIF327: ; CODE XREF: _$M_BIN2ASC_REPLACE+1Dj DGROUP:21BF mov ds:$M_DIVISOR, 10 DGROUP:21C5 DGROUP:21C5 $MIF326: ; CODE XREF: _$M_BIN2ASC_REPLACE+19j DGROUP:21C5 test byte ptr [si+7], 0Eh DGROUP:21C9 jnz short $MIF330 DGROUP:21CB mov ds:$M_DIVISOR, 10 DGROUP:21D1 DGROUP:21D1 $MIF330: ; CODE XREF: _$M_BIN2ASC_REPLACE+2Cj DGROUP:21D1 jmp short $MIF345 DGROUP:21D3 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:21D3 DGROUP:21D3 $MIF325: ; CODE XREF: _$M_BIN2ASC_REPLACE+10j DGROUP:21D3 test byte ptr [si+7], 10h DGROUP:21D7 jnz short $MIF333 DGROUP:21D9 mov ax, es:[di] DGROUP:21DC test byte ptr [si+7], 0Dh DGROUP:21E0 jnz short $MIF334 DGROUP:21E2 test ah, 80h DGROUP:21E5 jz short $MIF335 DGROUP:21E7 inc bx DGROUP:21E8 and ah, 7Fh DGROUP:21EB DGROUP:21EB $MIF335: ; CODE XREF: _$M_BIN2ASC_REPLACE+48j DGROUP:21EB mov ds:$M_DIVISOR, 10 DGROUP:21F1 DGROUP:21F1 $MIF334: ; CODE XREF: _$M_BIN2ASC_REPLACE+43j DGROUP:21F1 test byte ptr [si+7], 0Eh DGROUP:21F5 jnz short $MIF338 DGROUP:21F7 mov ds:$M_DIVISOR, 10 DGROUP:21FD DGROUP:21FD $MIF338: ; CODE XREF: _$M_BIN2ASC_REPLACE+58j DGROUP:21FD jmp short $MIF345 DGROUP:21FF ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:21FF DGROUP:21FF $MIF333: ; CODE XREF: _$M_BIN2ASC_REPLACE+3Aj DGROUP:21FF mov ax, es:[di] DGROUP:2202 mov dx, es:[di+2] DGROUP:2206 test byte ptr [si+7], 0Dh DGROUP:220A jnz short $MIF341 DGROUP:220C test dh, 80h DGROUP:220F jz short $MIF342 DGROUP:2211 inc bx DGROUP:2212 and dh, 7Fh DGROUP:2215 DGROUP:2215 $MIF342: ; CODE XREF: _$M_BIN2ASC_REPLACE+72j DGROUP:2215 mov ds:$M_DIVISOR, 10 DGROUP:221B DGROUP:221B $MIF341: ; CODE XREF: _$M_BIN2ASC_REPLACE+6Dj DGROUP:221B test byte ptr [si+7], 0Eh DGROUP:221F jnz short $MIF345 DGROUP:2221 mov ds:$M_DIVISOR, 10 DGROUP:2227 DGROUP:2227 $MIF345: ; CODE XREF: _$M_BIN2ASC_REPLACE:$MIF330j DGROUP:2227 ; _$M_BIN2ASC_REPLACE:$MIF338j ... DGROUP:2227 test byte ptr [si+7], 40h DGROUP:222B jz short $MIF346 DGROUP:222D push ax DGROUP:222E push dx DGROUP:222F mov ah, 38h DGROUP:2231 xor al, al DGROUP:2233 lea dx, $M_TEMP_BUF ; "$$$$$$$" DGROUP:2237 int 21h ; DOS - 2+ - GET COUNTRY-DEPENDENT INFORMATION DGROUP:2237 ; get current-country info DGROUP:2237 ; DS:DX -> buffer for returned info DGROUP:2239 jnb short $MEN325 DGROUP:223B mov ds:$M_THOU_SEPARA, ',' DGROUP:2240 DGROUP:2240 $MEN325: ; CODE XREF: _$M_BIN2ASC_REPLACE+9Cj DGROUP:2240 mov al, [si+0Ah] DGROUP:2243 mov di, ax DGROUP:2245 pop dx DGROUP:2246 pop ax DGROUP:2247 mov byte ptr [si+0Ah], ',' DGROUP:224B call _$M_CONVERT2ASC DGROUP:224E mov ax, di DGROUP:2250 mov [si+0Ah], al DGROUP:2253 jmp short $MIF347 DGROUP:2255 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2255 DGROUP:2255 $MIF346: ; CODE XREF: _$M_BIN2ASC_REPLACE+8Ej DGROUP:2255 call _$M_CONVERT2ASC DGROUP:2258 DGROUP:2258 $MIF347: ; CODE XREF: _$M_BIN2ASC_REPLACE+B6j DGROUP:2258 or bx, bx DGROUP:225A jz short $MIF349 DGROUP:225C mov dx, '-' DGROUP:225F push dx DGROUP:2260 DGROUP:2260 $MIF349: ; CODE XREF: _$M_BIN2ASC_REPLACE+BDj DGROUP:2260 push bp DGROUP:2261 retn DGROUP:2261 _$M_BIN2ASC_REPLACE endp ; sp = -2 DGROUP:2261 DGROUP:2261 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2262 CLASS_A_msg_tbl db 0FFh ; DATA XREF: _$M_CLS_A+2o DGROUP:2263 dw 7 DGROUP:2265 db 9 DGROUP:2266 dw 1 DGROUP:2268 dw 24h DGROUP:226A dw 2 DGROUP:226C dw 38h DGROUP:226E dw 3 DGROUP:2270 dw 4Bh DGROUP:2272 dw 8 DGROUP:2274 dw 64h DGROUP:2276 dw 9 DGROUP:2278 dw 74h DGROUP:227A dw 10 DGROUP:227C dw 73h DGROUP:227E dw 300 DGROUP:2280 dw 72h DGROUP:2282 dw 301 DGROUP:2284 dw 9Eh DGROUP:2286 dw 302 DGROUP:2288 dw 0AEh DGROUP:228A aIncorrectDosVersion db 17h,'Incorrect DOS version',0Dh,0Ah DGROUP:22A2 a1AlreadyInstalled db 16h,'%1 already installed',0Dh,0Ah DGROUP:22B9 a1BytesAvailableOnDisk db 1Ch,'%1 bytes available on disk',0Dh,0Ah DGROUP:22D6 aInvalidParameter db 13h,'Invalid parameter',0Dh,0Ah DGROUP:22EA db 2 DGROUP:22EB yes db 'Y',0 DGROUP:22ED db 2 DGROUP:22EE no db 'N',0 DGROUP:22F0 options_msg db 2Fh DGROUP:22F1 aConfiguresAHardDiskForUseWithPcDos db 'Configures a hard disk for use with PC DOS.',0Dh,0Ah DGROUP:22F1 db 0Dh,0Ah DGROUP:2320 fdisk_st_row db 13h DGROUP:2321 aFdiskStatus db 'FDISK [/STATUS]' DGROUP:2330 db 0Dh, 0Ah DGROUP:2332 db 0Dh, 0Ah DGROUP:2334 stats_desc_row db 3Dh DGROUP:2335 aStatusDisplaysTheStatusOfTheFixedD db ' /STATUS Displays the status of the fixed disk drive',0Dh,0Ah DGROUP:2372 DGROUP:2372 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:2372 DGROUP:2372 DGROUP:2372 _$M_CLS_A proc far ; CODE XREF: SYSLOADMSG+8FP DGROUP:2372 push cs DGROUP:2373 pop es DGROUP:2374 assume es:DGROUP DGROUP:2374 lea di, CLASS_A_msg_tbl DGROUP:2378 add cx, 278 DGROUP:237C retf DGROUP:237C _$M_CLS_A endp DGROUP:237C DGROUP:237C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:237D CLASS_B_msg_tbl db 0FFh ; DATA XREF: _$M_CLS_B+2o DGROUP:237E dw 7 DGROUP:2380 db 5 DGROUP:2381 dw 4 DGROUP:2383 dw 14h DGROUP:2385 dw 5 DGROUP:2387 dw 33h DGROUP:2389 dw 6 DGROUP:238B dw 48h DGROUP:238D dw 7 DGROUP:238F dw 5Fh DGROUP:2391 dw 11 DGROUP:2393 dw 76h DGROUP:2395 db 22h DGROUP:2396 aCannotFdiskWithNetworkLoaded db 'Cannot FDISK with network loaded',0Dh,0Ah DGROUP:23B8 db 18h DGROUP:23B9 aNoFixedDisksPresent db 'No fixed disks present',0Dh,0Ah DGROUP:23D1 db 1Ah DGROUP:23D2 aErrorReadingFixedDisk db 'Error reading fixed disk',0Dh,0Ah DGROUP:23EC db 1Ah DGROUP:23ED aErrorWritingFixedDisk db 'Error writing fixed disk',0Dh,0Ah DGROUP:2407 db 2Ch DGROUP:2408 aTheMasterBootCodeHasNotBeenUpdated db 'The master boot code has NOT been updated.',0Dh,0Ah DGROUP:2434 DGROUP:2434 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:2434 DGROUP:2434 DGROUP:2434 _$M_CLS_B proc far ; CODE XREF: SYSLOADMSG+9CP DGROUP:2434 push cs DGROUP:2435 pop es DGROUP:2436 lea di, CLASS_B_msg_tbl DGROUP:243A add cx, 189 DGROUP:243E retf DGROUP:243E _$M_CLS_B endp DGROUP:243E DGROUP:243E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:243F CLASS_1_msg_tbl db 1 ; DATA XREF: _$M_CLS_1+2o DGROUP:2440 dw 7 DGROUP:2442 db 1 DGROUP:2443 dw 0FFFFh DGROUP:2445 dw 4 DGROUP:2447 _EXT_ERR_CLASS db 17 DGROUP:2448 aExtendedError1 db 'Extended Error %1' DGROUP:2459 DGROUP:2459 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:2459 DGROUP:2459 DGROUP:2459 _$M_CLS_1 proc far ; CODE XREF: SYSLOADMSG+47P DGROUP:2459 push cs DGROUP:245A pop es DGROUP:245B lea di, CLASS_1_msg_tbl DGROUP:245F add cx, 32 DGROUP:2462 retf DGROUP:2462 _$M_CLS_1 endp DGROUP:2462 DGROUP:2462 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:2463 CLASS_2_msg_tbl db 2 ; DATA XREF: _$M_CLS_2+2o DGROUP:2464 dw 7 DGROUP:2466 db 1 DGROUP:2467 dw 0FFFFh DGROUP:2469 dw 4 DGROUP:246B _PARSE_ERR_CLASS db 14 DGROUP:246C aParseError1 db 'Parse Error %1' DGROUP:247A DGROUP:247A ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:247A DGROUP:247A DGROUP:247A _$M_CLS_2 proc far ; CODE XREF: SYSLOADMSG+5CP DGROUP:247A push cs DGROUP:247B pop es DGROUP:247C lea di, CLASS_2_msg_tbl DGROUP:2480 add cx, 29 DGROUP:2483 retf DGROUP:2483 _$M_CLS_2 endp DGROUP:2483 DGROUP:2484 DGROUP:2484 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:2484 DGROUP:2484 ; Attributes: bp-based frame DGROUP:2484 DGROUP:2484 _sysloadmsg proc far ; CODE XREF: sysloadmsgP DGROUP:2484 DGROUP:2484 arg_2 = word ptr 8 DGROUP:2484 arg_4 = word ptr 0Ah DGROUP:2484 DGROUP:2484 push bp DGROUP:2485 mov bp, sp DGROUP:2487 push di DGROUP:2488 push si DGROUP:2489 mov di, [bp+arg_2] DGROUP:248C mov ax, [di+10] DGROUP:248F push ax DGROUP:2490 mov ax, [di] DGROUP:2492 mov bx, [di+2] DGROUP:2495 mov cx, [di+4] DGROUP:2498 mov dx, [di+6] DGROUP:249B mov si, [di+8] DGROUP:249E pop di DGROUP:249F push bp DGROUP:24A0 call SYSLOADMSG DGROUP:24A5 pop bp DGROUP:24A6 push di DGROUP:24A7 mov di, [bp+arg_4] DGROUP:24AA mov [di], ax DGROUP:24AC mov [di+2], bx DGROUP:24AF mov [di+4], cx DGROUP:24B2 mov [di+6], dx DGROUP:24B5 mov [di+8], si DGROUP:24B8 lahf DGROUP:24B9 mov al, ah DGROUP:24BB mov [di+12], ax DGROUP:24BE pop ax DGROUP:24BF mov [di+10], ax DGROUP:24C2 pop si DGROUP:24C3 pop di DGROUP:24C4 mov sp, bp DGROUP:24C6 pop bp DGROUP:24C7 retf DGROUP:24C7 _sysloadmsg endp DGROUP:24C7 DGROUP:24C8 DGROUP:24C8 ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:24C8 DGROUP:24C8 ; Attributes: bp-based frame DGROUP:24C8 DGROUP:24C8 _sysdispmsg proc far ; CODE XREF: sysdispmsgP DGROUP:24C8 DGROUP:24C8 arg_2 = word ptr 8 DGROUP:24C8 arg_4 = word ptr 0Ah DGROUP:24C8 DGROUP:24C8 push bp DGROUP:24C9 mov bp, sp DGROUP:24CB push di DGROUP:24CC push si DGROUP:24CD mov di, [bp+arg_2] DGROUP:24D0 mov ax, [di+0Ah] DGROUP:24D3 push ax DGROUP:24D4 mov ax, [di] DGROUP:24D6 mov bx, [di+2] DGROUP:24D9 mov cx, [di+4] DGROUP:24DC mov dx, [di+6] DGROUP:24DF mov si, [di+8] DGROUP:24E2 pop di DGROUP:24E3 push bp DGROUP:24E4 call SYSDISPMSG DGROUP:24E9 pop bp DGROUP:24EA push di DGROUP:24EB mov di, [bp+arg_4] DGROUP:24EE mov [di], ax DGROUP:24F0 mov [di+2], bx DGROUP:24F3 mov [di+4], cx DGROUP:24F6 mov [di+6], dx DGROUP:24F9 mov [di+8], si DGROUP:24FC lahf DGROUP:24FD mov al, ah DGROUP:24FF mov [di+0Ch], ax DGROUP:2502 pop ax DGROUP:2503 mov [di+0Ah], ax DGROUP:2506 pop si DGROUP:2507 pop di DGROUP:2508 mov sp, bp DGROUP:250A pop bp DGROUP:250B retf DGROUP:250B _sysdispmsg endp DGROUP:250B DGROUP:250C DGROUP:250C ; --------------- S U B R O U T I N E --------------------------------------- DGROUP:250C DGROUP:250C ; Attributes: bp-based frame DGROUP:250C DGROUP:250C _sysgetmsg proc far ; CODE XREF: sysgetmsgP DGROUP:250C DGROUP:250C arg_2 = word ptr 8 DGROUP:250C arg_4 = word ptr 0Ah DGROUP:250C arg_6 = word ptr 0Ch DGROUP:250C DGROUP:250C push bp DGROUP:250D mov bp, sp DGROUP:250F push di DGROUP:2510 push si DGROUP:2511 mov di, [bp+arg_2] DGROUP:2514 mov ax, [di+0Ah] DGROUP:2517 push ax DGROUP:2518 mov ax, [di] DGROUP:251A mov bx, [di+2] DGROUP:251D mov cx, [di+4] DGROUP:2520 mov dx, [di+6] DGROUP:2523 mov si, [di+8] DGROUP:2526 pop di DGROUP:2527 push bp DGROUP:2528 call SYSGETMSG DGROUP:252D pop bp DGROUP:252E push di DGROUP:252F mov di, [bp+arg_4] DGROUP:2532 push ax DGROUP:2533 mov word ptr [di], es DGROUP:2535 mov word ptr [di+6], ds DGROUP:2538 pop ax DGROUP:2539 pop di DGROUP:253A push di DGROUP:253B mov di, [bp+arg_6] DGROUP:253E mov [di], ax DGROUP:2540 mov [di+2], bx DGROUP:2543 mov [di+4], cx DGROUP:2546 mov [di+6], dx DGROUP:2549 mov [di+8], si DGROUP:254C lahf DGROUP:254D mov al, ah DGROUP:254F mov [di+0Ch], ax DGROUP:2552 pop ax DGROUP:2553 mov [di+0Ah], ax DGROUP:2556 pop si DGROUP:2557 pop di DGROUP:2558 mov sp, bp DGROUP:255A pop bp DGROUP:255B retf DGROUP:255B _sysgetmsg endp DGROUP:255B DGROUP:255B ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ DGROUP:255C menu_1 db 6 ; DATA XREF: DGROUP:menu_1_offseto DGROUP:255D a0004 db '0004' DGROUP:2561 db 6 DGROUP:2562 db '<R> PC DOS Version 7.0 ' DGROUP:2593 db 6 DGROUP:2594 a0104 db '0104' DGROUP:2598 db 6 DGROUP:2599 db '<R> Fixed Disk Setup Program ' DGROUP:25CE db 6 DGROUP:25CF a0104_0 db '0104' DGROUP:25D3 db 6 DGROUP:25D4 db '<R> Copyright (c) IBM Corporation 1983 - 1994',0 DGROUP:2611 menu_2 db 6 ; DATA XREF: DGROUP:menu_2_offseto DGROUP:2612 a0404 db '0404' DGROUP:2616 db 6 DGROUP:2617 aHFdiskOptions db '<H> FDISK Options ' DGROUP:2645 db 6 DGROUP:2646 a0604 db '0604' DGROUP:264A db 6 DGROUP:264B db '<H>1. <R>Create DOS partition or Logical DOS Drive ' DGROUP:267E db 6 DGROUP:267F a0104_1 db '0104' DGROUP:2683 db 6 DGROUP:2684 db '<H>2. <R>Set active partition ' DGROUP:26A2 db 6 DGROUP:26A3 a0104_2 db '0104' DGROUP:26A7 db 6 DGROUP:26A8 db '<H>3. <R>Delete partition or Logical DOS Drive ' DGROUP:26D7 db 6 DGROUP:26D8 a0104_3 db '0104' DGROUP:26DC db 6 DGROUP:26DD db '<H>4. <R>Display partition information ' DGROUP:2704 db 6 DGROUP:2705 a1104 db '1104' DGROUP:2709 db 6 DGROUP:270A db '<R>Press <H>Esc<R> to exit FDISK',0 DGROUP:272B menu_3 db 6 ; DATA XREF: DGROUP:menu_3_offseto DGROUP:272C a0804 db '0804' DGROUP:2730 db 6 DGROUP:2731 db '<R>Choose one of the following:',0 DGROUP:2751 menu_4 db 6 ; DATA XREF: DGROUP:menu_4_offseto DGROUP:2752 a1404 db '1404' DGROUP:2756 db 6 DGROUP:2757 db '<H>5. <R>Change current fixed disk drive',0 DGROUP:2780 menu_5 db 6 ; DATA XREF: DGROUP:menu_5_offseto DGROUP:2781 a0604_0 db '0604' DGROUP:2785 db 6 DGROUP:2786 db '<R>Current fixed disk drive: <H><I>',0 DGROUP:27AA menu_6 db 6 ; DATA XREF: DGROUP:menu_6_offseto DGROUP:27AB a2004 db '2004' DGROUP:27AF db 6 DGROUP:27B0 db '<H>WARNING! <R>No partitions are set active - disk 1 is not start' DGROUP:27B0 db 'able unless ' DGROUP:27FD db 6 DGROUP:27FE a0104_4 db '0104' DGROUP:2802 db 6 DGROUP:2803 db '<R>a partition is set active',0 DGROUP:2820 menu_7 db 6 ; DATA XREF: DGROUP:menu_7_offseto DGROUP:2821 a1704 db '1704' DGROUP:2825 db 6 DGROUP:2826 db '<R>Enter choice: <H>[<S> ]',0 DGROUP:2841 menu_8 db 6 ; DATA XREF: DGROUP:menu_8_offseto DGROUP:2842 a0404_0 db '0404' DGROUP:2846 db 6 DGROUP:2847 db '<H> Create DOS Partition or Logical DOS Drive',0 DGROUP:2884 menu_9 db 6 ; DATA XREF: DGROUP:menu_9_offseto DGROUP:2885 a1004 db '1004' DGROUP:2889 db 6 DGROUP:288A db '<H>1. <R>Create Primary DOS Partition ' DGROUP:28B0 db 6 DGROUP:28B1 a0104_5 db '0104' DGROUP:28B5 db 6 DGROUP:28B6 db '<H>2. <R>Create Extended DOS Partition',0 DGROUP:28DD menu_10 db 6 ; DATA XREF: DGROUP:menu_10_offseto DGROUP:28DE a1204 db '1204' DGROUP:28E2 db 6 DGROUP:28E3 db '<H>3. <R>Create Logical DOS Drive(s) in the Extended DOS Partitio' DGROUP:28E3 db 'n',0 DGROUP:2926 menu_11 db 6 ; DATA XREF: DGROUP:menu_11_offseto DGROUP:2927 a2404 db '2404' DGROUP:292B db 6 DGROUP:292C db '<R>Press <H>Esc<R> to return to FDISK Options',0 DGROUP:295A menu_12 db 6 ; DATA XREF: DGROUP:menu_12_offseto DGROUP:295B a0404_1 db '0404' DGROUP:295F db 6 DGROUP:2960 db '<H> Create Primary DOS Partition',0 DGROUP:2996 menu_13 db 6 ; DATA XREF: DGROUP:menu_13_offseto DGROUP:2997 a0804_0 db '0804' DGROUP:299B db 6 DGROUP:299C db '<R>Do you wish to use the maximum available size for a Primary DO' DGROUP:299C db 'S Partition ' DGROUP:29E9 db 6 DGROUP:29EA a0104_6 db '0104' DGROUP:29EE db 6 DGROUP:29EF db '<R>and make the partition active (<Y>/<N>).....................? ' DGROUP:29EF db '<H>[<S> ]',0 DGROUP:2A3A menu_45 db 6 ; DATA XREF: DGROUP:menu_45_offseto DGROUP:2A3B a0804_1 db '0804' DGROUP:2A3F db 6 DGROUP:2A40 db '<R>Do you wish to use the maximum available size for a Primary DO' DGROUP:2A40 db 'S Partition ' DGROUP:2A8D db 6 DGROUP:2A8E a0104_7 db '0104' DGROUP:2A92 db 6 DGROUP:2A93 aRYN_______________________________ db '<R>(<Y>/<N>)...................................................? ' DGROUP:2A93 db '<H>[<S> ]',0 DGROUP:2ADE menu_14 db 6 ; DATA XREF: DGROUP:menu_14_offseto DGROUP:2ADF a0804_2 db '0804' DGROUP:2AE3 db 6 DGROUP:2AE4 db '<R>Partition Status Type Volume Label Mbytes System Us' DGROUP:2AE4 db 'age ' DGROUP:2B29 db 6 DGROUP:2B2A a0104_8 db '0104' DGROUP:2B2E db 6 DGROUP:2B2F db '<R> <II> <HI> <RI> <IIIIIII> <IIIIIIIIIII> <IIII> ' DGROUP:2B2F db ' <IIIIIIII> <IIII> ' DGROUP:2B86 db 6 DGROUP:2B87 a0104_9 db '0104' DGROUP:2B8B db 6 DGROUP:2B8C db '<R> <II> <HI> <RI> <IIIIIII> <IIIIIIIIIII> <IIII> ' DGROUP:2B8C db ' <IIIIIIII> <IIII> ' DGROUP:2BE3 db 6 DGROUP:2BE4 a0104_10 db '0104' DGROUP:2BE8 db 6 DGROUP:2BE9 db '<R> <II> <HI> <RI> <IIIIIII> <IIIIIIIIIII> <IIII> ' DGROUP:2BE9 db ' <IIIIIIII> <IIII> ' DGROUP:2C40 db 6 DGROUP:2C41 a0104_11 db '0104' DGROUP:2C45 db 6 DGROUP:2C46 db '<R> <II> <HI> <RI> <IIIIIII> <IIIIIIIIIII> <IIII> ' DGROUP:2C46 db ' <IIIIIIII> <IIII>' DGROUP:2C9C db 0 DGROUP:2C9D menu_15 db 6 ; DATA XREF: DGROUP:menu_15_offseto DGROUP:2C9E a1404_0 db '1404' DGROUP:2CA2 db 6 DGROUP:2CA3 db '<R>Total disk space is <HIIIIR> Mbytes (1 Mbyte = 1048576 bytes)',0 DGROUP:2CE4 menu_16 db 6 ; DATA XREF: DGROUP:menu_16_offseto DGROUP:2CE5 a1504 db '1504' DGROUP:2CE9 db 6 DGROUP:2CEA db '<RC>Maximum space available for partition is <HIIIIR> Mbytes (<HI' DGROUP:2CEA db 'IIIR>)',0 DGROUP:2D32 menu_39 db 6 ; DATA XREF: DGROUP:menu_39_offseto DGROUP:2D33 a1804 db '1804' DGROUP:2D37 db 6 DGROUP:2D38 db '<RC>Enter partition size in Mbytes or percent of disk space (%) t' DGROUP:2D38 db 'o ' DGROUP:2D7B db 6 DGROUP:2D7C a0104_12 db '0104' DGROUP:2D80 db 6 DGROUP:2D81 db '<RC>create a Primary DOS Partition...............................' DGROUP:2D81 db '..: <H>[<IIISI>]',0 DGROUP:2DD3 menu_17 db 6 ; DATA XREF: DGROUP:menu_17_offseto DGROUP:2DD4 a0404_2 db '0404' DGROUP:2DD8 db 6 DGROUP:2DD9 db '<H> Create Extended DOS Partition',0 DGROUP:2E10 menu_42 db 6 ; DATA XREF: DGROUP:menu_42_offseto DGROUP:2E11 a1804_0 db '1804' DGROUP:2E15 db 6 DGROUP:2E16 db '<RC>Enter partition size in Mbytes or percent of disk space (%) t' DGROUP:2E16 db 'o ' DGROUP:2E59 db 6 DGROUP:2E5A a0104_13 db '0104' DGROUP:2E5E db 6 DGROUP:2E5F db '<RC>create an Extended DOS Partition.............................' DGROUP:2E5F db '.: <H>[<IIISI>]',0 DGROUP:2EB0 menu_46 db 6 ; DATA XREF: DGROUP:menu_46_offseto DGROUP:2EB1 a2404_0 db '2404' DGROUP:2EB5 db 6 DGROUP:2EB6 db '<R>Press <H>Esc<R> to continue<S>',0 DGROUP:2ED8 menu_18 db 6 ; DATA XREF: DGROUP:menu_18_offseto DGROUP:2ED9 a0104_14 db '0104' DGROUP:2EDD db 6 DGROUP:2EDE aHcCreateLogicalDosDriveSInTheExten db '<HC> Create Logical DOS Drive(s) in the Extended DOS Partit' DGROUP:2EDE db 'ion',0 DGROUP:2F23 menu_19 db 6 ; DATA XREF: DGROUP:menu_19_offseto DGROUP:2F24 a0300 db '0300' DGROUP:2F28 db 6 DGROUP:2F29 db '<R>Drv Volume Label Mbytes System Usage' DGROUP:2F53 db 6 DGROUP:2F54 db '0100' DGROUP:2F58 db 6 DGROUP:2F59 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:2F8E db 6 DGROUP:2F8F a0100_0 db '0100' DGROUP:2F93 db 6 DGROUP:2F94 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_0 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:2FC9 db 6 DGROUP:2FCA a0100_1 db '0100' DGROUP:2FCE db 6 DGROUP:2FCF aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_1 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:3004 db 6 DGROUP:3005 a0100_2 db '0100' DGROUP:3009 db 6 DGROUP:300A aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_2 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:303F db 6 DGROUP:3040 a0100_3 db '0100' DGROUP:3044 db 6 DGROUP:3045 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_3 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:307A db 6 DGROUP:307B a0100_4 db '0100' DGROUP:307F db 6 DGROUP:3080 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_4 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>',0 DGROUP:30B6 menu_43 db 6 ; DATA XREF: DGROUP:menu_43_offseto DGROUP:30B7 a1000 db '1000' DGROUP:30BB db 6 DGROUP:30BC aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_5 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:30F1 db 6 DGROUP:30F2 a0100_5 db '0100' DGROUP:30F6 db 6 DGROUP:30F7 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_6 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:312C db 6 DGROUP:312D a0100_6 db '0100' DGROUP:3131 db 6 DGROUP:3132 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_7 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:3167 db 6 DGROUP:3168 a0100_7 db '0100' DGROUP:316C db 6 DGROUP:316D aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_8 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:31A2 db 6 DGROUP:31A3 a0100_8 db '0100' DGROUP:31A7 db 6 DGROUP:31A8 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_9 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:31DD db 6 DGROUP:31DE a0100_9 db '0100' DGROUP:31E2 db 6 DGROUP:31E3 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_10 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>',0 DGROUP:3219 menu_20 db 6 ; DATA XREF: DGROUP:menu_20_offseto DGROUP:321A a0341 db '0341' DGROUP:321E db 6 DGROUP:321F aRDrvVolumeLabelMbytesSystemUsage_0 db '<R>Drv Volume Label Mbytes System Usage' DGROUP:3249 db 6 DGROUP:324A a0141 db '0141' DGROUP:324E db 6 DGROUP:324F aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_11 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:3284 db 6 DGROUP:3285 a0141_0 db '0141' DGROUP:3289 db 6 DGROUP:328A aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_12 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:32BF db 6 DGROUP:32C0 a0141_1 db '0141' DGROUP:32C4 db 6 DGROUP:32C5 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_13 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:32FA db 6 DGROUP:32FB a0141_2 db '0141' DGROUP:32FF db 6 DGROUP:3300 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_14 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:3335 db 6 DGROUP:3336 a0141_3 db '0141' DGROUP:333A db 6 DGROUP:333B aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_15 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:3370 db 6 DGROUP:3371 a0141_4 db '0141' DGROUP:3375 db 6 DGROUP:3376 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_16 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>',0 DGROUP:33AC menu_44 db 6 ; DATA XREF: DGROUP:menu_44_offseto DGROUP:33AD a1041 db '1041' DGROUP:33B1 db 6 DGROUP:33B2 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_17 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:33E7 db 6 DGROUP:33E8 a0141_5 db '0141' DGROUP:33EC db 6 DGROUP:33ED aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_18 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:3422 db 6 DGROUP:3423 a0141_6 db '0141' DGROUP:3427 db 6 DGROUP:3428 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_19 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:345D db 6 DGROUP:345E a0141_7 db '0141' DGROUP:3462 db 6 DGROUP:3463 aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_20 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>' DGROUP:3498 db 6 DGROUP:3499 a0141_8 db '0141' DGROUP:349D db 6 DGROUP:349E aHIiRiiiiiiiiiiiIiiiIiiiiiiiIiii_21 db '<H><II> <RIIIIIIIIIII> <IIII> <IIIIIIII> <IIII>',0 DGROUP:34D4 menu_21 db 6 ; DATA XREF: DGROUP:menu_21_offseto DGROUP:34D5 a1704_0 db '1704' DGROUP:34D9 db 6 DGROUP:34DA aRcTotalExtendedDosPartitionSizeIsH db '<RC>Total Extended DOS Partition size is <HIIIIR> Mbytes (1 MByte' DGROUP:34DA db ' = 1048576 bytes)',0 DGROUP:352D menu_22 db 6 ; DATA XREF: DGROUP:menu_22_offseto DGROUP:352E a1804_1 db '1804' DGROUP:3532 db 6 DGROUP:3533 aRcMaximumSpaceAvailableForLogicalD db '<RC>Maximum space available for logical drive is <HIIIIR> Mbytes ' DGROUP:3533 db '<H>(<IIII>)',0 DGROUP:3580 menu_40 db 6 ; DATA XREF: DGROUP:menu_40_offseto DGROUP:3581 a2004_0 db '2004' DGROUP:3585 db 6 DGROUP:3586 aRcEnterLogicalDriveSizeInMbytesOrP db '<RC>Enter logical drive size in Mbytes or percent of disk space (' DGROUP:3586 db '%)...<H>[<IIISI>]',0 DGROUP:35D9 menu_23 db 6 ; DATA XREF: DGROUP:menu_23_offseto DGROUP:35DA a0404_3 db '0404' DGROUP:35DE db 6 DGROUP:35DF aHSetActivePartition db '<H> Set Active Partition',0 DGROUP:3611 menu_24 db 6 ; DATA XREF: DGROUP:menu_24_offseto DGROUP:3612 a1604 db '1604' DGROUP:3616 db 6 DGROUP:3617 aREnterTheNumberOfThePartitionYouWa db '<R>Enter the number of the partition you want to make active.....' DGROUP:3617 db '......: <H>[<S> ]',0 DGROUP:366A menu_25 db 6 ; DATA XREF: DGROUP:menu_25_offseto DGROUP:366B a0404_4 db '0404' DGROUP:366F db 6 DGROUP:3670 aHDeleteDosPartitionOrLogicalDosDri db '<H> Delete DOS Partition or Logical DOS Drive',0 DGROUP:36AD menu_26 db 6 ; DATA XREF: DGROUP:menu_26_offseto DGROUP:36AE a1004_0 db '1004' DGROUP:36B2 db 6 DGROUP:36B3 aHc1_RDeletePrimaryDosPartition db '<HC>1. <R>Delete Primary DOS Partition ' DGROUP:36DB db 6 DGROUP:36DC a0104_15 db '0104' DGROUP:36E0 db 6 DGROUP:36E1 aHc2_RDeleteExtendedDosPartition db '<HC>2. <R>Delete Extended DOS Partition',0 DGROUP:370A menu_27 db 6 ; DATA XREF: DGROUP:menu_27_offseto DGROUP:370B a1204_0 db '1204' DGROUP:370F db 6 DGROUP:3710 aHc3_RDeleteLogicalDosDriveSInTheEx db '<HC>3. <R>Delete Logical DOS Drive(s) in the Extended DOS Partit' DGROUP:3710 db 'ion',0 DGROUP:3755 menu_57 db 6 ; DATA XREF: DGROUP:menu_57_offseto DGROUP:3756 a1304 db '1304' DGROUP:375A db 6 DGROUP:375B aHc4_RDeleteNonDosPartition db '<HC>4. <R>Delete Non-DOS Partition',0 DGROUP:377F menu_28 db 6 ; DATA XREF: DGROUP:menu_28_offseto DGROUP:3780 a0404_5 db '0404' DGROUP:3784 db 6 DGROUP:3785 aHDeletePrimaryDosPartition db '<H> Delete Primary DOS Partition',0 DGROUP:37BB menu_unused db 6 ; DATA XREF: DGROUP:528Ao DGROUP:37BC a1904 db '1904' DGROUP:37C0 db 6 DGROUP:37C1 aHbcWarningOrDataInTheDeletedPrimar db '<HBC>WARNING! <OR>Data in the deleted Primary DOS Partition will ' DGROUP:37C1 db 'be lost.',0 DGROUP:380B menu_55 db 6 ; DATA XREF: DGROUP:menu_55_offseto DGROUP:380C a1904_0 db '1904' DGROUP:3810 db 6 DGROUP:3811 aHbcWarningOrDataInTheDeletedPrim_0 db '<HBC>WARNING! <OR>Data in the deleted Primary DOS Partition will ' DGROUP:3811 db 'be lost. ' DGROUP:385B db 6 DGROUP:385C a0104_16 db '0104' DGROUP:3860 db 6 DGROUP:3861 aRWhatPrimaryPartitionDoYouWantToDe db '<R>What primary partition do you want to delete..? <H>[<S> ]<R>',0 DGROUP:38A1 menu_56 db 6 ; DATA XREF: DGROUP:menu_56_offseto DGROUP:38A2 a2204 db '2204' DGROUP:38A6 db 6 DGROUP:38A7 aRcDoYouWishToContinueYN___________ db '<RC>Do you wish to continue (<Y>/<N>).................? <H>[<S> ]' DGROUP:38E8 db 0 DGROUP:38E9 menu_30 db 6 ; DATA XREF: DGROUP:menu_30_offseto DGROUP:38EA a0404_6 db '0404' DGROUP:38EE db 6 DGROUP:38EF aHDeleteExtendedDosPartition db '<H> Delete Extended DOS Partition',0 DGROUP:3926 menu_31 db 6 ; DATA XREF: DGROUP:menu_31_offseto DGROUP:3927 a1604_0 db '1604' DGROUP:392B db 6 DGROUP:392C aHbcWarningOrDataInTheDeletedExtend db '<HBC>WARNING! <OR>Data in the deleted Extended DOS Partition will' DGROUP:392C db ' be lost. ' DGROUP:3977 db 6 DGROUP:3978 a0104_17 db '0104' DGROUP:397C db 6 DGROUP:397D aRcDoYouWishToContinueYN__________0 db '<RC>Do you wish to continue (<Y>/<N>).................? <H>[<S> ]' DGROUP:397D db 0 DGROUP:39BF menu_32 db 6 ; DATA XREF: DGROUP:menu_32_offseto DGROUP:39C0 a0104_18 db '0104' DGROUP:39C4 db 6 DGROUP:39C5 aHDeleteLogicalDosDriveSInTheExtend db '<H> Delete Logical DOS Drive(s) in the Extended DOS Partit' DGROUP:39C5 db 'ion',0 DGROUP:3A0A menu_33 db 6 ; DATA XREF: DGROUP:menu_33_offseto DGROUP:3A0B a1904_1 db '1904' DGROUP:3A0F db 6 DGROUP:3A10 aHbcWarningOrDataInADeletedLogicalD db '<HBC>WARNING! <OR>Data in a deleted Logical DOS Drive will be los' DGROUP:3A10 db 't. ' DGROUP:3A54 db 6 DGROUP:3A55 a0104_19 db '0104' DGROUP:3A59 db 6 DGROUP:3A5A aRcWhatDriveDoYouWantToDelete______ db '<RC>What drive do you want to delete.............................' DGROUP:3A5A db '..? <H>[<S> ]',0 DGROUP:3AA9 menu_34 db 6 ; DATA XREF: DGROUP:menu_34_offseto DGROUP:3AAA a2204_0 db '2204' DGROUP:3AAE db 6 DGROUP:3AAF aRAreYouSureYN_____________________ db '<R>Are you sure (<Y>/<N>)..............................? <H>[<S> ' DGROUP:3AAF db ']',0 DGROUP:3AF2 menu_41 db 6 ; DATA XREF: DGROUP:menu_41_offseto DGROUP:3AF3 a2104 db '2104' DGROUP:3AF7 db 6 DGROUP:3AF8 aREnterVolumeLabel_________________ db '<R>Enter Volume Label..............................? <H>[<S> ' DGROUP:3AF8 db ' ]',0 DGROUP:3B41 menu_58 db 6 ; DATA XREF: DGROUP:menu_58_offseto DGROUP:3B42 a0404_7 db '0404' DGROUP:3B46 db 6 DGROUP:3B47 aHDeleteNonDosPartition db '<H> Delete Non-DOS Partition',0 DGROUP:3B7B menu_59 db 6 ; DATA XREF: DGROUP:menu_59_offseto DGROUP:3B7C a1604_1 db '1604' DGROUP:3B80 db 6 DGROUP:3B81 aHbcWarningOrDataInTheDeletedNonDos db '<HBC>WARNING! <OR>Data in the deleted Non-DOS Partition will be l' DGROUP:3B81 db 'ost. ' DGROUP:3BC7 db 6 DGROUP:3BC8 a0104_20 db '0104' DGROUP:3BCC db 6 DGROUP:3BCD aRcWhatNonDosPartitionDoYouWantToDe db '<RC>What Non-DOS partition do you want to delete..? <H>[<S> ]<R>',0 DGROUP:3C0E menu_35 db 6 ; DATA XREF: DGROUP:menu_35_offseto DGROUP:3C0F a0404_8 db '0404' DGROUP:3C13 db 6 DGROUP:3C14 aHDisplayPartitionInformation db '<H> Display Partition Information',0 DGROUP:3C4B menu_36 db 6 ; DATA XREF: DGROUP:menu_36_offseto DGROUP:3C4C a1704_1 db '1704' DGROUP:3C50 db 6 DGROUP:3C51 aRcTheExtendedDosPartitionContainsL db '<RC>The Extended DOS Partition contains Logical DOS Drives. ' DGROUP:3C8D db 6 DGROUP:3C8E a0104_21 db '0104' DGROUP:3C92 db 6 DGROUP:3C93 aRcDoYouWantToDisplayTheLogicalDriv db '<RC>Do you want to display the logical drive information (<Y>/<N>' DGROUP:3C93 db ')......?<H>[<S> ]',0 DGROUP:3CE6 menu_37 db 6 ; DATA XREF: DGROUP:menu_37_offseto DGROUP:3CE7 a0104_22 db '0104' DGROUP:3CEB db 6 DGROUP:3CEC aHDisplayLogicalDosDriveInformation db '<H> Display Logical DOS Drive Information',0 DGROUP:3D27 menu_47 db 6 ; DATA XREF: DGROUP:menu_47_offseto DGROUP:3D28 a0004_0 db '0004' DGROUP:3D2C db 6 DGROUP:3D2D aHChangeCurrentFixedDiskDrive db '<H> Change Current Fixed Disk Drive',0 DGROUP:3D65 menu_48 db 6 ; DATA XREF: DGROUP:menu_48_offseto DGROUP:3D66 a0200 db '0200' DGROUP:3D6A db 6 DGROUP:3D6B aRDiskDrvMbytesFreeUsage db '<R> Disk Drv Mbytes Free Usage' DGROUP:3D92 db 6 DGROUP:3D93 a0104_23 db '0104' DGROUP:3D97 db 6 DGROUP:3D98 aHiRiiIiiiIiiiIiii db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3DC4 db 6 DGROUP:3DC5 a0104_24 db '0104' DGROUP:3DC9 db 6 DGROUP:3DCA aHiRiiIiiiIiiiIiii_0 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3DF6 db 6 DGROUP:3DF7 a0104_25 db '0104' DGROUP:3DFB db 6 DGROUP:3DFC aHiRiiIiiiIiiiIiii_1 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3E28 db 6 DGROUP:3E29 a0104_26 db '0104' DGROUP:3E2D db 6 DGROUP:3E2E aHiRiiIiiiIiiiIiii_2 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3E5A db 6 DGROUP:3E5B a0104_27 db '0104' DGROUP:3E5F db 6 DGROUP:3E60 aHiRiiIiiiIiiiIiii_3 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3E8C db 6 DGROUP:3E8D a0104_28 db '0104' DGROUP:3E91 db 6 DGROUP:3E92 aHiRiiIiiiIiiiIiii_4 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3EBE db 6 DGROUP:3EBF a0104_29 db '0104' DGROUP:3EC3 db 6 DGROUP:3EC4 aHiRiiIiiiIiiiIiii_5 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3EF0 db 6 DGROUP:3EF1 a0104_30 db '0104' DGROUP:3EF5 db 6 DGROUP:3EF6 aHiRiiIiiiIiiiIiii_6 db '<HI> <RII> <IIII> <IIII> <IIII>',0 DGROUP:3F23 menu_49 db 6 ; DATA XREF: DGROUP:menu_49_offseto DGROUP:3F24 a1104_0 db '1104' DGROUP:3F28 db 6 DGROUP:3F29 aHiRiiIiiiIiiiIiii_7 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3F55 db 6 DGROUP:3F56 a0104_31 db '0104' DGROUP:3F5A db 6 DGROUP:3F5B aHiRiiIiiiIiiiIiii_8 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3F87 db 6 DGROUP:3F88 a0104_32 db '0104' DGROUP:3F8C db 6 DGROUP:3F8D aHiRiiIiiiIiiiIiii_9 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3FB9 db 6 DGROUP:3FBA a0104_33 db '0104' DGROUP:3FBE db 6 DGROUP:3FBF aHiRiiIiiiIiiiIiii_10 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:3FEB db 6 DGROUP:3FEC a0104_34 db '0104' DGROUP:3FF0 db 6 DGROUP:3FF1 aHiRiiIiiiIiiiIiii_11 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:401D db 6 DGROUP:401E a0104_35 db '0104' DGROUP:4022 db 6 DGROUP:4023 aHiRiiIiiiIiiiIiii_12 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:404F db 6 DGROUP:4050 a0104_36 db '0104' DGROUP:4054 db 6 DGROUP:4055 aHiRiiIiiiIiiiIiii_13 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:4081 db 6 DGROUP:4082 a0104_37 db '0104' DGROUP:4086 db 6 DGROUP:4087 aHiRiiIiiiIiiiIiii_14 db '<HI> <RII> <IIII> <IIII> <IIII>',0 DGROUP:40B4 menu_50 db 6 ; DATA XREF: DGROUP:menu_50_offseto DGROUP:40B5 a0241 db '0241' DGROUP:40B9 db 6 DGROUP:40BA aRDiskDrvMbytesFreeUsage_0 db '<R> Disk Drv Mbytes Free Usage' DGROUP:40E1 db 6 DGROUP:40E2 a0145 db '0145' DGROUP:40E6 db 6 DGROUP:40E7 aHiRiiIiiiIiiiIiii_15 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:4113 db 6 DGROUP:4114 a0145_0 db '0145' DGROUP:4118 db 6 DGROUP:4119 aHiRiiIiiiIiiiIiii_16 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:4145 db 6 DGROUP:4146 a0145_1 db '0145' DGROUP:414A db 6 DGROUP:414B aHiRiiIiiiIiiiIiii_17 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:4177 db 6 DGROUP:4178 a0145_2 db '0145' DGROUP:417C db 6 DGROUP:417D aHiRiiIiiiIiiiIiii_18 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:41A9 db 6 DGROUP:41AA a0145_3 db '0145' DGROUP:41AE db 6 DGROUP:41AF aHiRiiIiiiIiiiIiii_19 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:41DB db 6 DGROUP:41DC a0145_4 db '0145' DGROUP:41E0 db 6 DGROUP:41E1 aHiRiiIiiiIiiiIiii_20 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:420D db 6 DGROUP:420E a0145_5 db '0145' DGROUP:4212 db 6 DGROUP:4213 aHiRiiIiiiIiiiIiii_21 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:423F db 6 DGROUP:4240 a0145_6 db '0145' DGROUP:4244 db 6 DGROUP:4245 aHiRiiIiiiIiiiIiii_22 db '<HI> <RII> <IIII> <IIII> <IIII>',0 DGROUP:4272 menu_51 db 6 ; DATA XREF: DGROUP:menu_51_offseto DGROUP:4273 a1145 db '1145' DGROUP:4277 db 6 DGROUP:4278 aHiRiiIiiiIiiiIiii_23 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:42A4 db 6 DGROUP:42A5 a0145_7 db '0145' DGROUP:42A9 db 6 DGROUP:42AA aHiRiiIiiiIiiiIiii_24 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:42D6 db 6 DGROUP:42D7 a0145_8 db '0145' DGROUP:42DB db 6 DGROUP:42DC aHiRiiIiiiIiiiIiii_25 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:4308 db 6 DGROUP:4309 a0145_9 db '0145' DGROUP:430D db 6 DGROUP:430E aHiRiiIiiiIiiiIiii_26 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:433A db 6 DGROUP:433B a0145_10 db '0145' DGROUP:433F db 6 DGROUP:4340 aHiRiiIiiiIiiiIiii_27 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:436C db 6 DGROUP:436D a0145_11 db '0145' DGROUP:4371 db 6 DGROUP:4372 aHiRiiIiiiIiiiIiii_28 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:439E db 6 DGROUP:439F a0145_12 db '0145' DGROUP:43A3 db 6 DGROUP:43A4 aHiRiiIiiiIiiiIiii_29 db '<HI> <RII> <IIII> <IIII> <IIII>' DGROUP:43D0 db 6 DGROUP:43D1 a0145_13 db '0145' DGROUP:43D5 db 6 DGROUP:43D6 aHiRiiIiiiIiiiIiii_30 db '<HI> <RII> <IIII> <IIII> <IIII>',0 DGROUP:4403 menu_52 db 6 ; DATA XREF: DGROUP:menu_52_offseto DGROUP:4404 a2004_1 db '2004' DGROUP:4408 db 6 DGROUP:4409 aR1Mbyte1048576Bytes db '<R>(1 MByte = 1048576 bytes)',0 DGROUP:4426 menu_53 db 6 ; DATA XREF: DGROUP:menu_53_offseto DGROUP:4427 a2104_0 db '2104' DGROUP:442B db 6 DGROUP:442C aREnterFixedDiskDriveNumber1I______ db '<R>Enter Fixed Disk Drive Number (1-<I>).......................<H' DGROUP:442C db '>[<SI>]',0 DGROUP:4475 menu_54 db 6 ; DATA XREF: DGROUP:menu_54_offseto DGROUP:4476 a0104_38 db '0104' DGROUP:447A db 6 DGROUP:447B aHFixedDiskDriveStatus db '<H> Fixed Disk Drive Status',0 DGROUP:44AF menu_38 db 6 ; DATA XREF: DGROUP:menu_38_offseto DGROUP:44B0 a1304_0 db '1304' DGROUP:44B4 db 6 DGROUP:44B5 aHSystemWillNowRestart db '<H>System will now restart ' DGROUP:44D0 db 6 DGROUP:44D1 a0204 db '0204' DGROUP:44D5 db 6 DGROUP:44D6 aRInsertDosSystemDisketteInDriveA db '<R>Insert DOS system diskette in drive A: ' DGROUP:4500 db 6 DGROUP:4501 a0104_39 db '0104' DGROUP:4505 db 6 DGROUP:4506 ; static aRPressAnyKeyWhenReady_(void) DGROUP:4506 aRPressAnyKeyWhenReady___S db '<R>Press any key when ready . . .<S>',0 DGROUP:452B menu_60 db 6 ; DATA XREF: DGROUP:menu_60_offseto DGROUP:452C a1304_1 db '1304' DGROUP:4530 db 6 DGROUP:4531 aHSystemWillNowRestart_0 db '<H>System will now restart ' DGROUP:454C db 6 DGROUP:454D a0304 db '0304' DGROUP:4551 db 6 DGROUP:4552 ; static aRPressAnyKeyWhenReady_(void) DGROUP:4552 aRPressAnyKeyWhenReady___S_0 db '<R>Press any key when ready . . .<S>',0 DGROUP:4577 status_1 db 6 ; DATA XREF: DGROUP:status_1_offo DGROUP:4578 a2104_1 db '2104' DGROUP:457C db 6 DGROUP:457D aChPrimaryDosPartitionDeleted db '<CH>Primary DOS Partition deleted ' DGROUP:459F db 6 DGROUP:45A0 a0100_10 db '0100' DGROUP:45A4 db 6 DGROUP:45A5 aCw db '<CW>',0 DGROUP:45AA status_2 db 6 ; DATA XREF: DGROUP:status_2_offo DGROUP:45AB a2104_2 db '2104' DGROUP:45AF db 6 DGROUP:45B0 aChExtendedDosPartitionDeleted db '<CH>Extended DOS Partition deleted ' DGROUP:45D3 db 6 DGROUP:45D4 a0100_11 db '0100' DGROUP:45D8 db 6 DGROUP:45D9 aCw_0 db '<CW>',0 DGROUP:45DE status_3 db 6 ; DATA XREF: DGROUP:status_3_offo DGROUP:45DF a0004_1 db '0004' DGROUP:45E3 db 6 DGROUP:45E4 aHDriveDeleted db '<H>Drive deleted',0 DGROUP:45F5 status_4 db 6 ; DATA XREF: DGROUP:status_4_offo DGROUP:45F6 a2104_3 db '2104' DGROUP:45FA db 6 DGROUP:45FB aChPartitionIMadeActive db '<CH>Partition <I> made active ' DGROUP:4619 db 6 DGROUP:461A a0100_12 db '0100' DGROUP:461E db 6 DGROUP:461F aCw_1 db '<CW>',0 DGROUP:4624 status_5 db 6 ; DATA XREF: DGROUP:status_5_offo DGROUP:4625 a2104_4 db '2104' DGROUP:4629 db 6 DGROUP:462A aChPrimaryDosPartitionCreated db '<CH>Primary DOS Partition created ' DGROUP:464C db 6 DGROUP:464D a0100_13 db '0100' DGROUP:4651 db 6 DGROUP:4652 aCw_2 db '<CW>',0 DGROUP:4657 status_6 db 6 ; DATA XREF: DGROUP:status_6_offo DGROUP:4658 a2104_5 db '2104' DGROUP:465C db 6 DGROUP:465D aChExtendedDosPartitionCreated db '<CH>Extended DOS Partition created ' DGROUP:4680 db 6 DGROUP:4681 a0100_14 db '0100' DGROUP:4685 db 6 DGROUP:4686 aCw_3 db '<CW>',0 DGROUP:468B status_7 db 6 ; DATA XREF: DGROUP:status_7_offo DGROUP:468C a2204_1 db '2204' DGROUP:4690 db 6 DGROUP:4691 aChLogicalDosDriveCreatedDriveLette db '<CH>Logical DOS Drive created, drive letters changed or added<W>',0 DGROUP:46D2 status_8 db 6 ; DATA XREF: DGROUP:status_8_offo DGROUP:46D3 a2104_6 db '2104' DGROUP:46D7 db 6 DGROUP:46D8 aChNoPartitionsDefined db '<CH>No partitions defined ' DGROUP:46F2 db 6 DGROUP:46F3 a0100_15 db '0100' DGROUP:46F7 db 6 DGROUP:46F8 aC db '<C>',0 DGROUP:46FC status_9 db 6 ; DATA XREF: DGROUP:status_9_offo DGROUP:46FD a1004_1 db '1004' DGROUP:4701 db 6 DGROUP:4702 aChNoLogicalDrivesDefined db '<CH>No logical drives defined ' DGROUP:4720 db 6 DGROUP:4721 a0100_16 db '0100' DGROUP:4725 db 6 DGROUP:4726 aC_0 db '<C>',0 DGROUP:472A status_10 db 6 ; DATA XREF: DGROUP:status_10_offo DGROUP:472B a1804_2 db '1804' DGROUP:472F db 6 DGROUP:4730 aChDriveLettersHaveBeenChangedOrDel db '<CH>Drive letters have been changed or deleted<W>',0 DGROUP:4762 status_11 db 6 ; DATA XREF: DGROUP:status_11_offo DGROUP:4763 a0004_2 db '0004' DGROUP:4767 db 6 DGROUP:4768 aHDriveRedirected db '<H>Drive redirected',0 DGROUP:477C status_12 db 6 ; DATA XREF: DGROUP:status_12_offo DGROUP:477D a2104_7 db '2104' DGROUP:4781 db 6 DGROUP:4782 aChPrimaryDosPartitionCreatedDriveL db '<CH>Primary DOS Partition created, drive letters changed or added' DGROUP:4782 db ' ' DGROUP:47C4 db 6 DGROUP:47C5 a0100_17 db '0100' DGROUP:47C9 db 6 DGROUP:47CA aCw_4 db '<CW>',0 DGROUP:47CF status_13 db 6 ; DATA XREF: DGROUP:status_13_offo DGROUP:47D0 a2104_8 db '2104' DGROUP:47D4 db 6 DGROUP:47D5 aChNonDosPartitionDeleted db '<CH>Non-DOS Partition deleted ' DGROUP:47F3 db 6 DGROUP:47F4 a0100_18 db '0100' DGROUP:47F8 db 6 DGROUP:47F9 aCw_5 db '<CW>',0 DGROUP:47FE error_1 db 6 ; DATA XREF: DGROUP:error_1_offo DGROUP:47FF a0004_3 db '0004' DGROUP:4803 db 6 DGROUP:4804 aChNoFixedDisksPresent_ db '<CH>No fixed disks present. ' DGROUP:4820 db 6 DGROUP:4821 a0100_19 db '0100' DGROUP:4825 db 6 DGROUP:4826 aCw_6 db '<CW>' DGROUP:482A db 0 DGROUP:482B error_2 db 6 ; DATA XREF: DGROUP:error_2_offo DGROUP:482C a2204_2 db '2204' DGROUP:4830 db 6 DGROUP:4831 aChErrorReadingFixedDisk_ db '<CH>Error reading fixed disk. ' DGROUP:484F db 6 DGROUP:4850 a0100_20 db '0100' DGROUP:4854 db 6 DGROUP:4855 aCw_7 db '<CW>',0 DGROUP:485A error_3 db 6 ; DATA XREF: DGROUP:error_3_offo DGROUP:485B a2204_3 db '2204' DGROUP:485F db 6 DGROUP:4860 aChErrorWritingFixedDisk_ db '<CH>Error writing fixed disk. ' DGROUP:487E db 6 DGROUP:487F a0100_21 db '0100' DGROUP:4883 db 6 DGROUP:4884 aCw_8 db '<CW>',0 DGROUP:4889 error_4 db 6 ; DATA XREF: DGROUP:error_4_offo DGROUP:488A a0004_4 db '0004' DGROUP:488E db 6 DGROUP:488F aChwIncorrectDosVersion_ db '<CHW>Incorrect DOS version.',0 DGROUP:48AB error_5 db 6 ; DATA XREF: DGROUP:error_5_offo DGROUP:48AC a0004_5 db '0004' DGROUP:48B0 db 6 DGROUP:48B1 aChwCannotFdiskWithNetworkLoaded_ db '<CHW>Cannot FDISK with network loaded.',0 DGROUP:48D8 error_6 db 6 ; DATA XREF: DGROUP:error_6_offo DGROUP:48D9 a2204_4 db '2204' DGROUP:48DD db 6 DGROUP:48DE aChNoPrimaryDosPartitionToDelete_ db '<CH>No Primary DOS Partition to delete. ' DGROUP:4906 db 6 DGROUP:4907 a0100_22 db '0100' DGROUP:490B db 6 DGROUP:490C aCw_9 db '<CW>' DGROUP:4910 db 0 DGROUP:4911 error_7 db 6 ; DATA XREF: DGROUP:error_7_offo DGROUP:4912 a2204_5 db '2204' DGROUP:4916 db 6 DGROUP:4917 aChNoExtendedDosPartitionToDelete_ db '<CH>No Extended DOS Partition to delete. ' DGROUP:4940 db 6 DGROUP:4941 a0100_23 db '0100' DGROUP:4945 db 6 DGROUP:4946 aCw_10 db '<CW>',0 DGROUP:494B error_8 db 6 ; DATA XREF: DGROUP:error_8_offo DGROUP:494C a2204_6 db '2204' DGROUP:4950 db 6 DGROUP:4951 aChPrimaryDosPartitionAlreadyExists db '<CH>Primary DOS Partition already exists. ' DGROUP:497B db 6 DGROUP:497C a0100_24 db '0100' DGROUP:4980 db 6 DGROUP:4981 aCw_11 db '<CW>',0 DGROUP:4986 error_9 db 6 ; DATA XREF: DGROUP:error_9_offo DGROUP:4987 a2204_7 db '2204' DGROUP:498B db 6 DGROUP:498C aChExtendedDosPartitionAlreadyExist db '<CH>Extended DOS Partition already exists. ' DGROUP:49B7 db 6 DGROUP:49B8 a0100_25 db '0100' DGROUP:49BC db 6 DGROUP:49BD aCw_12 db '<CW>',0 DGROUP:49C2 error_10 db 6 ; DATA XREF: DGROUP:error_10_offo DGROUP:49C3 a2204_8 db '2204' DGROUP:49C7 db 6 DGROUP:49C8 aChNoSpaceToCreateADosPartition_ db '<CH>No space to create a DOS partition. ' DGROUP:49F0 db 6 DGROUP:49F1 a0100_26 db '0100' DGROUP:49F5 db 6 DGROUP:49F6 aCw_13 db '<CW>',0 DGROUP:49FB error_12 db 6 ; DATA XREF: DGROUP:error_12_offo DGROUP:49FC a2204_9 db '2204' DGROUP:4A00 db 6 DGROUP:4A01 aChRequestedLogicalDriveSizeExceeds db '<CH>Requested logical drive size exceeds the maximum available sp' DGROUP:4A01 db 'ace.<W> ' DGROUP:4A4A db 6 DGROUP:4A4B a0100_27 db '0100' DGROUP:4A4F db 6 DGROUP:4A50 aCw_14 db '<CW>',0 DGROUP:4A55 error_13 db 6 ; DATA XREF: DGROUP:error_13_offo DGROUP:4A56 a2204_10 db '2204' DGROUP:4A5A db 6 DGROUP:4A5B aChRequestedPartitionSizeExceedsThe db '<CH>Requested partition size exceeds the maximum available space.' DGROUP:4A5B db '<W> ' DGROUP:4AA0 db 6 DGROUP:4AA1 a0100_28 db '0100' DGROUP:4AA5 db 6 DGROUP:4AA6 aCw_15 db '<CW>',0 DGROUP:4AAB error_14 db 6 ; DATA XREF: DGROUP:error_14_offo DGROUP:4AAC a2204_11 db '2204' DGROUP:4AB0 db 6 DGROUP:4AB1 aChNoPartitionsToDelete_ db '<CH>No partitions to delete. ' DGROUP:4ACE db 6 DGROUP:4ACF a0100_29 db '0100' DGROUP:4AD3 db 6 DGROUP:4AD4 aCw_16 db '<CW>',0 DGROUP:4AD9 error_15 db 6 ; DATA XREF: DGROUP:error_15_offo DGROUP:4ADA a2204_12 db '2204' DGROUP:4ADE db 6 DGROUP:4ADF aChTheOnlyStartablePartitionOnDrive db '<CH>The only startable partition on Drive 1 is already set active' DGROUP:4ADF db '.<W> ' DGROUP:4B25 db 6 DGROUP:4B26 a0100_30 db '0100' DGROUP:4B2A db 6 DGROUP:4B2B aCw_17 db '<CW>',0 DGROUP:4B30 error_16 db 6 ; DATA XREF: DGROUP:error_16_offo DGROUP:4B31 a2204_13 db '2204' DGROUP:4B35 db 6 DGROUP:4B36 aChNoPartitionsToMakeActive_ db '<CH>No partitions to make active. ' DGROUP:4B58 db 6 DGROUP:4B59 a0100_31 db '0100' DGROUP:4B5D db 6 DGROUP:4B5E aCw_18 db '<CW>',0 DGROUP:4B63 error_17 db 6 ; DATA XREF: DGROUP:error_17_offo DGROUP:4B64 a2204_14 db '2204' DGROUP:4B68 db 6 DGROUP:4B69 aChPartitionSelectedIIsNotStartable db '<CH>Partition selected (<I>) is not startable, active partition n' DGROUP:4B69 db 'ot changed.<W>',0 DGROUP:4BB9 error_19 db 6 ; DATA XREF: DGROUP:error_19_offo DGROUP:4BBA a2204_15 db '2204' DGROUP:4BBE db 6 DGROUP:4BBF aChCannotCreateExtendedDosPartition db '<CH>Cannot create Extended DOS Partition without ' DGROUP:4BF0 db 6 DGROUP:4BF1 a0104_40 db '0104' DGROUP:4BF5 db 6 DGROUP:4BF6 aChPrimaryDosPartitionOnDisk1_W db '<CH>Primary DOS Partition on disk 1.<W>',0 DGROUP:4C1E error_20 db 6 ; DATA XREF: DGROUP:error_20_offo DGROUP:4C1F a2204_16 db '2204' DGROUP:4C23 db 6 DGROUP:4C24 aChAllAvailableSpaceInTheExtendedDo db '<CH>All available space in the Extended DOS Partition ' DGROUP:4C5A db 6 DGROUP:4C5B a0104_41 db '0104' DGROUP:4C5F db 6 DGROUP:4C60 aChIsAssignedToLogicalDrives_W db '<CH>is assigned to logical drives.<W>',0 DGROUP:4C86 error_21 db 6 ; DATA XREF: DGROUP:error_21_offo DGROUP:4C87 a2204_17 db '2204' DGROUP:4C8B db 6 DGROUP:4C8C aChCannotDeleteExtendedDosPartition db '<CH>Cannot delete Extended DOS Partition while logical drives exi' DGROUP:4C8C db 'st.<W>',0 DGROUP:4CD4 error_22 db 6 ; DATA XREF: DGROUP:error_22_offo DGROUP:4CD5 a2204_18 db '2204' DGROUP:4CD9 db 6 DGROUP:4CDA aChAllLogicalDrivesDeletedInTheExte db '<CH>All logical drives deleted in the Extended DOS Partition.<W>',0 DGROUP:4D1B error_23 db 6 ; DATA XREF: DGROUP:error_23_offo DGROUP:4D1C a2204_19 db '2204' DGROUP:4D20 db 6 DGROUP:4D21 aC_1 db '<C> ' DGROUP:4D25 db 6 DGROUP:4D26 a0104_42 db '0104' DGROUP:4D2A db 6 DGROUP:4D2B aChiIsNotAChoice_PleaseEnterIii_W db '<CHI> is not a choice. Please enter <III>.<W>',0 DGROUP:4D59 error_24 db 6 ; DATA XREF: DGROUP:error_24_offo DGROUP:4D5A a2204_20 db '2204' DGROUP:4D5E db 6 DGROUP:4D5F aChWarningThePartitionSetActiveIsNo db '<CH>WARNING! The partition set active is not startable.<W>',0 DGROUP:4D9A error_25 db 6 ; DATA XREF: DGROUP:error_25_offo DGROUP:4D9B a2204_21 db '2204' DGROUP:4D9F db 6 DGROUP:4DA0 aChOnlyNonStartablePartitionsExist_ db '<CH> Only non-startable partitions exist. ',6,'0100',6,'<CW>',0 DGROUP:4DD5 error_26 db 6 ; DATA XREF: DGROUP:error_26_offo DGROUP:4DD6 a2204_22 db '2204' DGROUP:4DDA db 6 DGROUP:4DDB aChOnlyPartitionsOnDrive1CanBeMadeA db '<CH>Only partitions on Drive 1 can be made active.<W>',0 DGROUP:4E11 error_27 db 6 ; DATA XREF: DGROUP:error_27_offo DGROUP:4E12 a2204_23 db '2204' DGROUP:4E16 db 6 DGROUP:4E17 aChMaximumNumberOfLogicalDosDrivesI db '<CH>Maximum number of Logical DOS Drives installed.<W>',0 DGROUP:4E4E error_28 db 6 ; DATA XREF: DGROUP:error_28_offo DGROUP:4E4F a2204_24 db '2204' DGROUP:4E53 db 6 DGROUP:4E54 aChCannotCreateAZeroSizePartition_ db '<CH>Cannot create a zero size partition. ' DGROUP:4E7D db 6 DGROUP:4E7E a0100_32 db '0100' DGROUP:4E82 db 6 DGROUP:4E83 aCw_19 db '<CW>',0 DGROUP:4E88 error_29 db 6 ; DATA XREF: DGROUP:error_29_offo DGROUP:4E89 a2204_25 db '2204' DGROUP:4E8D db 6 DGROUP:4E8E aChDriveIiAlreadyDeleted_ db '<CH>Drive <II> already deleted. ' DGROUP:4EAE db 6 DGROUP:4EAF a0100_33 db '0100' DGROUP:4EB3 db 6 DGROUP:4EB4 aCw_20 db '<CW>',0 DGROUP:4EB9 error_30 db 6 ; DATA XREF: DGROUP:error_30_offo DGROUP:4EBA a2204_26 db '2204' DGROUP:4EBE db 6 DGROUP:4EBF aChbUnableToAccessDriveI_Ow db '<CHB>Unable to access Drive <I>.<OW>',0 DGROUP:4EE4 error_31 db 6 ; DATA XREF: DGROUP:error_31_offo DGROUP:4EE5 a2304 db '2304' DGROUP:4EE9 db 6 DGROUP:4EEA aChInvalidEntryPleaseEnterIii_W db '<CH>Invalid entry, please enter <III>.<W>',0 DGROUP:4F14 error_32 db 6 ; DATA XREF: DGROUP:error_32_offo DGROUP:4F15 a2204_27 db '2204' DGROUP:4F19 db 6 DGROUP:4F1A aChCannotDeletePrimaryDosPartitionO db '<CH>Cannot delete Primary DOS Partition on drive 1 ' DGROUP:4F4E db 6 DGROUP:4F4F a0104_43 db '0104' DGROUP:4F53 db 6 DGROUP:4F54 aChWhenAnExtendedDosPartitionExists db '<CH>when an Extended DOS Partition exists.<W>',0 DGROUP:4F82 error_33 db 6 ; DATA XREF: DGROUP:error_33_offo DGROUP:4F83 a2200 db '2200' DGROUP:4F87 db 6 DGROUP:4F88 aC_2 db '<C> ' DGROUP:4F8C db 6 DGROUP:4F8D a0104_44 db '0104' DGROUP:4F91 db 6 DGROUP:4F92 aChInvalidEntry_W db '<CH>Invalid entry.<W>',0 DGROUP:4FA8 error_34 db 6 ; DATA XREF: DGROUP:error_34_offo DGROUP:4FA9 a2204_28 db '2204' DGROUP:4FAD db 6 DGROUP:4FAE aChVolumeLabelDoesNotMatch_W db '<CH>Volume label does not match.<W>',0 DGROUP:4FD2 error_35 db 6 ; DATA XREF: DGROUP:error_35_offo DGROUP:4FD3 a2204_29 db '2204' DGROUP:4FD7 db 6 DGROUP:4FD8 aChCannotCreateLogicalDosDriveWitho db '<CH>Cannot create Logical DOS Drive without ' DGROUP:5004 db 6 DGROUP:5005 a0104_45 db '0104' DGROUP:5009 db 6 DGROUP:500A aChAnExtendedDosPartitionOnTheCurre db '<CH>an Extended DOS Partition on the current drive.<W>',0 DGROUP:5041 error_36 db 6 ; DATA XREF: DGROUP:error_36_offo DGROUP:5042 a2204_30 db '2204' DGROUP:5046 db 6 DGROUP:5047 aChNoLogicalDosDriveSToDelete_ db '<CH>No Logical DOS Drive(s) to delete. ' DGROUP:506E db 6 DGROUP:506F a0100_34 db '0100' DGROUP:5073 db 6 DGROUP:5074 aCw_21 db '<CW>',0 DGROUP:5079 error_37 db 6 ; DATA XREF: DGROUP:error_37_offo DGROUP:507A a2204_31 db '2204' DGROUP:507E db 6 DGROUP:507F aChPartitionSelectedIsNotAPrimaryDo db '<CH>Partition selected is not a Primary DOS Partition ' DGROUP:50B5 db 6 DGROUP:50B6 a0100_35 db '0100' DGROUP:50BA db 6 DGROUP:50BB aCw_22 db '<CW>',0 DGROUP:50C0 error_38 db 6 ; DATA XREF: DGROUP:error_38_offo DGROUP:50C1 a2204_32 db '2204' DGROUP:50C5 db 6 DGROUP:50C6 aChNoNonDosPartitionToDelete_ db '<CH>No Non-DOS Partition to delete. ' DGROUP:50EA db 6 DGROUP:50EB a0100_36 db '0100' DGROUP:50EF db 6 DGROUP:50F0 aCw_23 db '<CW>',0 DGROUP:50F5 error_39 db 6 ; DATA XREF: DGROUP:error_39_offo DGROUP:50F6 a2204_33 db '2204' DGROUP:50FA db 6 DGROUP:50FB aChPartitionSelectedIsNotANonDosPar db '<CH>Partition selected is not a Non-DOS Partition ' DGROUP:512D db 6 DGROUP:512E a0100_37 db '0100' DGROUP:5132 db 6 DGROUP:5133 aCw_24 db '<CW>',0 DGROUP:5138 debug_msg db 6 ; DATA XREF: DGROUP:debug_msg_offo DGROUP:5139 a2200_0 db '2200' DGROUP:513D db 6 DGROUP:513E aHwbMessageStringErrorI_SeeHeaderOf db '<HWB>Message string error <I>. See header of FDISKC.MSG for error' DGROUP:513E db ' definition',0 DGROUP:518B internal_error db 6 ; DATA XREF: DGROUP:inter_err_offo DGROUP:518C a2204_34 db '2204' DGROUP:5190 db 6 DGROUP:5191 aHbwInternalError db '<HBW>Internal error',0 DGROUP:51A5 txtRemote db '* Remote * ',0 ; DATA XREF: DGROUP:REMOTEo DGROUP:51B1 txtPriDos db 'PRI DOS',0 ; DATA XREF: DGROUP:PRIDOSo DGROUP:51B9 txtXenix db ' XENIX ',0 ; DATA XREF: DGROUP:XENIXo DGROUP:51C1 txtExtDos db 'EXT DOS',0 ; DATA XREF: DGROUP:EXTDOSo DGROUP:51C9 txtTable db ' Table ',0 ; DATA XREF: DGROUP:TABLEo DGROUP:51D1 txtPcIx db ' PC/IX ',0 ; DATA XREF: DGROUP:PCIXo DGROUP:51D9 txtHpfs db ' HPFS ',0 ; DATA XREF: DGROUP:HPFSo DGROUP:51E1 txtNovell db 'NOVELL ',0 ; DATA XREF: DGROUP:NOVELLo DGROUP:51E9 txtCpM db ' CP/M ',0 ; DATA XREF: DGROUP:CPMo DGROUP:51F1 txtNonDos db 'Non-DOS',0 ; DATA XREF: DGROUP:NONDOSo DGROUP:51F9 align 2 DGROUP:51FA menu_1_offset dw offset menu_1 ; DATA XREF: do_main_menu:loc_3FBr DGROUP:51FC menu_1_segment dw seg DGROUP ; DATA XREF: do_main_menu:loc_3F7r DGROUP:51FE menu_2_offset dw offset menu_2 ; DATA XREF: do_main_menu+B5r DGROUP:5200 menu_2_segment dw seg DGROUP ; DATA XREF: do_main_menu:mainmenu_11r DGROUP:5202 menu_3_offset dw offset menu_3 ; DATA XREF: do_main_menu+C2r DGROUP:5202 ; delete_partition+73r ... DGROUP:5204 menu_3_segment dw seg DGROUP ; DATA XREF: do_main_menu+BEr DGROUP:5204 ; delete_partition:dp_2r ... DGROUP:5206 menu_4_offset dw offset menu_4 ; DATA XREF: do_main_menu+146r DGROUP:5208 menu_4_segment dw seg DGROUP ; DATA XREF: do_main_menu+142r DGROUP:520A menu_5_offset dw offset menu_5 ; DATA XREF: do_main_menu+E4r DGROUP:520A ; delete_partition+31r ... DGROUP:520C menu_5_segment dw seg DGROUP ; DATA XREF: do_main_menu+E0r DGROUP:520C ; delete_partition+2Dr ... DGROUP:520E menu_6_offset dw offset menu_6 ; DATA XREF: do_main_menu+132r DGROUP:5210 menu_6_segment dw seg DGROUP ; DATA XREF: do_main_menu+12Er DGROUP:5212 menu_7_offset dw offset menu_7 ; DATA XREF: do_main_menu+CFr DGROUP:5212 ; delete_partition+9Ar ... DGROUP:5214 menu_7_segment dw seg DGROUP ; DATA XREF: do_main_menu+CBr DGROUP:5214 ; delete_partition+96r ... DGROUP:5216 menu_8_offset dw offset menu_8 ; DATA XREF: create_partition+1Cr DGROUP:5218 menu_8_segment dw seg DGROUP ; DATA XREF: create_partition+18r DGROUP:521A menu_9_offset dw offset menu_9 ; DATA XREF: create_partition+58r DGROUP:521C menu_9_segment dw seg DGROUP ; DATA XREF: create_partition+54r DGROUP:521E menu_10_offset dw offset menu_10 ; DATA XREF: create_partition+77r DGROUP:5220 menu_10_segment dw seg DGROUP ; DATA XREF: create_partition+73r DGROUP:5222 menu_11_offset dw offset menu_11 ; DATA XREF: delete_partition+A7r DGROUP:5222 ; dos_delete+42r ... DGROUP:5224 menu_11_segment dw seg DGROUP ; DATA XREF: delete_partition+A3r DGROUP:5224 ; dos_delete+3Er ... DGROUP:5226 menu_12_offset dw offset menu_12 ; DATA XREF: dos_create_partition+22r DGROUP:5226 ; input_dos_create+20r DGROUP:5228 menu_12_segment dw seg DGROUP ; DATA XREF: dos_create_partition+1Er DGROUP:5228 ; input_dos_create+1Cr DGROUP:522A menu_13_offset dw offset menu_13 ; DATA XREF: dos_create_partition+140r DGROUP:522C menu_13_segment dw seg DGROUP ; DATA XREF: dos_create_partition+13Cr DGROUP:522E menu_45_offset dw offset menu_45 ; DATA XREF: dos_create_partition+14Er DGROUP:5230 menu_45_segment dw seg DGROUP ; DATA XREF: dos_create_partition+14Ar DGROUP:5232 menu_14_offset dw offset menu_14 ; DATA XREF: table_display+1D4r DGROUP:5234 menu_14_segment dw seg DGROUP ; DATA XREF: table_display+1D0r DGROUP:5236 menu_15_offset dw offset menu_15 ; DATA XREF: dos_delete+73r DGROUP:5236 ; ext_delete+68r ... DGROUP:5238 menu_15_segment dw seg DGROUP ; DATA XREF: dos_delete+6Fr DGROUP:5238 ; ext_delete+64r ... DGROUP:523A menu_16_offset dw offset menu_16 ; DATA XREF: input_dos_create+D2r DGROUP:523A ; ext_create_partition+FCr DGROUP:523C menu_16_segment dw seg DGROUP ; DATA XREF: input_dos_create+CEr DGROUP:523C ; ext_create_partition+F8r DGROUP:523E menu_39_offset dw offset menu_39 ; DATA XREF: input_dos_create+FCr DGROUP:523E ; input_dos_create+114r DGROUP:5240 menu_39_segment dw seg DGROUP ; DATA XREF: input_dos_create+F8r DGROUP:5240 ; input_dos_create+110r DGROUP:5242 menu_17_offset dw offset menu_17 ; DATA XREF: ext_create_partition+20r DGROUP:5244 menu_17_segment dw seg DGROUP ; DATA XREF: ext_create_partition+1Cr DGROUP:5246 menu_42_offset dw offset menu_42 ; DATA XREF: ext_create_partition+156r DGROUP:5246 ; ext_create_partition+16Er DGROUP:5248 menu_42_segment dw seg DGROUP ; DATA XREF: ext_create_partition+152r DGROUP:5248 ; ext_create_partition+16Ar DGROUP:524A menu_46_offset dw offset menu_46 ; DATA XREF: wait_for_ESC+1Cr DGROUP:524C menu_46_segment dw seg DGROUP ; DATA XREF: wait_for_ESC+18r DGROUP:524E menu_18_offset dw offset menu_18 ; DATA XREF: volume_create+1Dr DGROUP:5250 menu_18_segment dw seg DGROUP ; DATA XREF: volume_create+19r DGROUP:5252 menu_19_offset dw offset menu_19 ; DATA XREF: volume_display+11Fr DGROUP:5254 menu_19_segment dw seg DGROUP ; DATA XREF: volume_display+11Br DGROUP:5256 menu_43_offset dw offset menu_43 ; DATA XREF: volume_display+138r DGROUP:5258 menu_43_segment dw seg DGROUP ; DATA XREF: volume_display+134r DGROUP:525A menu_20_offset dw offset menu_20 ; DATA XREF: volume_display+151r DGROUP:525C menu_20_segment dw seg DGROUP ; DATA XREF: volume_display+14Dr DGROUP:525E menu_44_offset dw offset menu_44 ; DATA XREF: volume_display+16Ar DGROUP:5260 menu_44_segment dw seg DGROUP ; DATA XREF: volume_display+166r DGROUP:5262 menu_21_offset dw offset menu_21 ; DATA XREF: volume_delete+B1r DGROUP:5262 ; volume_create+11Er ... DGROUP:5264 menu_21_segment dw seg DGROUP ; DATA XREF: volume_delete+ADr DGROUP:5264 ; volume_create+11Ar ... DGROUP:5266 menu_22_offset dw offset menu_22 ; DATA XREF: volume_create+149r DGROUP:5268 menu_22_segment dw seg DGROUP ; DATA XREF: volume_create+145r DGROUP:526A menu_40_offset dw offset menu_40 ; DATA XREF: volume_create+1A2r DGROUP:526A ; volume_create+1BAr DGROUP:526C menu_40_segment dw seg DGROUP ; DATA XREF: volume_create+19Er DGROUP:526C ; volume_create+1B6r DGROUP:526E menu_23_offset dw offset menu_23 ; DATA XREF: change_active_partition+20r DGROUP:5270 menu_23_segment dw seg DGROUP ; DATA XREF: change_active_partition+1Cr DGROUP:5272 menu_24_offset dw offset menu_24 ; DATA XREF: change_active_partition+187r DGROUP:5274 menu_24_segment dw seg DGROUP ; DATA XREF: change_active_partition+183r DGROUP:5276 menu_25_offset dw offset menu_25 ; DATA XREF: delete_partition+1Cr DGROUP:5276 ; delete_partition+80r DGROUP:5278 menu_25_segment dw seg DGROUP ; DATA XREF: delete_partition+18r DGROUP:5278 ; delete_partition+7Cr DGROUP:527A menu_26_offset dw offset menu_26 ; DATA XREF: delete_partition+8Dr DGROUP:527C menu_26_segment dw seg DGROUP ; DATA XREF: delete_partition+89r DGROUP:527E menu_27_offset dw offset menu_27 ; DATA XREF: delete_partition+B4r DGROUP:5280 menu_27_segment dw seg DGROUP ; DATA XREF: delete_partition+B0r DGROUP:5282 menu_57_offset dw offset menu_57 ; DATA XREF: delete_partition+C1r DGROUP:5284 menu_57_segment dw seg DGROUP ; DATA XREF: delete_partition+BDr DGROUP:5286 menu_28_offset dw offset menu_28 ; DATA XREF: dos_delete+20r DGROUP:5288 menu_28_segment dw seg DGROUP ; DATA XREF: dos_delete+1Cr DGROUP:528A dw offset menu_unused DGROUP:528C dw seg DGROUP DGROUP:528E menu_55_offset dw offset menu_55 ; DATA XREF: dos_delete+112r DGROUP:5290 menu_55_segment dw seg DGROUP ; DATA XREF: dos_delete:ddp_10r DGROUP:5292 menu_56_offset dw offset menu_56 ; DATA XREF: non_dos_delete+157r DGROUP:5294 menu_56_segment dw seg DGROUP ; DATA XREF: non_dos_delete+153r DGROUP:5296 menu_30_offset dw offset menu_30 ; DATA XREF: ext_delete+1Cr DGROUP:5298 menu_30_segment dw seg DGROUP ; DATA XREF: ext_delete+18r DGROUP:529A menu_31_offset dw offset menu_31 ; DATA XREF: ext_delete+7Fr DGROUP:529C menu_31_segment dw seg DGROUP ; DATA XREF: ext_delete:ed_1r DGROUP:529E menu_32_offset dw offset menu_32 ; DATA XREF: volume_delete+25r DGROUP:52A0 menu_32_segment dw seg DGROUP ; DATA XREF: volume_delete+21r DGROUP:52A2 menu_33_offset dw offset menu_33 ; DATA XREF: volume_delete+11Ar DGROUP:52A4 menu_33_segment dw seg DGROUP ; DATA XREF: volume_delete:vdel_12r DGROUP:52A6 menu_34_offset dw offset menu_34 ; DATA XREF: dos_delete+20Br DGROUP:52A6 ; volume_delete+29Dr DGROUP:52A8 menu_34_segment dw seg DGROUP ; DATA XREF: dos_delete+207r DGROUP:52A8 ; volume_delete+299r DGROUP:52AA menu_41_offset dw offset menu_41 ; DATA XREF: dos_delete+1C1r DGROUP:52AA ; volume_delete+1E1r DGROUP:52AC menu_41_segment dw seg DGROUP ; DATA XREF: dos_delete+1BDr DGROUP:52AC ; volume_delete+1DDr DGROUP:52AE menu_58_offset dw offset menu_58 ; DATA XREF: non_dos_delete+1Cr DGROUP:52B0 menu_58_segment dw seg DGROUP ; DATA XREF: non_dos_delete+18r DGROUP:52B2 menu_59_offset dw offset menu_59 ; DATA XREF: non_dos_delete+ABr DGROUP:52B4 menu_59_segment dw seg DGROUP ; DATA XREF: non_dos_delete+A7r DGROUP:52B6 menu_35_offset dw offset menu_35 ; DATA XREF: display_partition_information+1Cr DGROUP:52B8 menu_35_segment dw seg DGROUP ; DATA XREF: display_partition_information+18r DGROUP:52BA menu_36_offset dw offset menu_36 ; DATA XREF: display_partition_information+85r DGROUP:52BC menu_36_segment dw seg DGROUP ; DATA XREF: display_partition_information+81r DGROUP:52BE menu_37_offset dw offset menu_37 ; DATA XREF: display_volume_information+16r DGROUP:52C0 menu_37_segment dw seg DGROUP ; DATA XREF: display_volume_information+12r DGROUP:52C2 menu_47_offset dw offset menu_47 ; DATA XREF: change_current_drive+46r DGROUP:52C4 menu_47_segment dw seg DGROUP ; DATA XREF: change_current_drive+42r DGROUP:52C6 menu_48_offset dw offset menu_48 ; DATA XREF: change_current_drive+240r DGROUP:52C8 menu_48_segment dw seg DGROUP ; DATA XREF: change_current_drive+23Cr DGROUP:52CA menu_49_offset dw offset menu_49 ; DATA XREF: change_current_drive+259r DGROUP:52CC menu_49_segment dw seg DGROUP ; DATA XREF: change_current_drive+255r DGROUP:52CE menu_50_offset dw offset menu_50 ; DATA XREF: change_current_drive+272r DGROUP:52D0 menu_50_segment dw seg DGROUP ; DATA XREF: change_current_drive+26Er DGROUP:52D2 menu_51_offset dw offset menu_51 ; DATA XREF: change_current_drive+28Br DGROUP:52D4 menu_51_segment dw seg DGROUP ; DATA XREF: change_current_drive+287r DGROUP:52D6 menu_52_offset dw offset menu_52 ; DATA XREF: change_current_drive+29Er DGROUP:52D8 menu_52_segment dw seg DGROUP ; DATA XREF: change_current_drive+29Ar DGROUP:52DA menu_53_offset dw offset menu_53 ; DATA XREF: change_current_drive+2D2r DGROUP:52DC menu_53_segment dw seg DGROUP ; DATA XREF: change_current_drive+2CEr DGROUP:52DE menu_54_offset dw offset menu_54 ; DATA XREF: change_current_drive+50r DGROUP:52E0 menu_54_segment dw seg DGROUP ; DATA XREF: change_current_drive:ccd_1r DGROUP:52E2 menu_38_offset dw offset menu_38 ; DATA XREF: reboot_system+BAr DGROUP:52E4 menu_38_segment dw seg DGROUP ; DATA XREF: reboot_system:rebootsys_6r DGROUP:52E6 menu_60_offset dw offset menu_60 ; DATA XREF: reboot_system+B0r DGROUP:52E8 menu_60_segment dw seg DGROUP ; DATA XREF: reboot_system+ACr DGROUP:52EA status_1_off dw offset status_1 ; DATA XREF: dos_delete+266r DGROUP:52EC status_1_seg dw seg DGROUP ; DATA XREF: dos_delete+262r DGROUP:52EE status_2_off dw offset status_2 ; DATA XREF: ext_delete+F5r DGROUP:52F0 status_2_seg dw seg DGROUP ; DATA XREF: ext_delete+F1r DGROUP:52F2 status_3_off dw offset status_3 ; DATA XREF: volume_delete+329r DGROUP:52F2 ; volume_delete+372r DGROUP:52F4 status_3_seg dw seg DGROUP ; DATA XREF: volume_delete+36Er DGROUP:52F6 status_4_off dw offset status_4 ; DATA XREF: change_active_partition+2D5r DGROUP:52F8 status_4_seg dw seg DGROUP ; DATA XREF: change_active_partition+2D1r DGROUP:52FA status_5_off dw offset status_5 ; DATA XREF: input_dos_create+1F2r DGROUP:52FC status_5_seg dw seg DGROUP ; DATA XREF: input_dos_create+1EEr DGROUP:52FE status_6_off dw offset status_6 ; DATA XREF: ext_create_partition+247r DGROUP:5300 status_6_seg dw seg DGROUP ; DATA XREF: ext_create_partition+243r DGROUP:5302 status_7_off dw offset status_7 ; DATA XREF: volume_create+2A8r DGROUP:5304 status_7_seg dw seg DGROUP ; DATA XREF: volume_create+2A4r DGROUP:5306 status_8_off dw offset status_8 ; DATA XREF: table_display+1DEr DGROUP:5308 status_8_seg dw seg DGROUP ; DATA XREF: table_display:td_30r DGROUP:530A status_9_off dw offset status_9 ; DATA XREF: volume_display+19Ar DGROUP:530C status_9_seg dw seg DGROUP ; DATA XREF: volume_display+196r DGROUP:530E status_10_off dw offset status_10 ; DATA XREF: volume_delete+479r DGROUP:5310 status_10_seg dw seg DGROUP ; DATA XREF: volume_delete+475r DGROUP:5312 status_11_off dw offset status_11 DGROUP:5314 status_11_seg dw seg DGROUP DGROUP:5316 status_12_off dw offset status_12 ; DATA XREF: dos_create_partition+203r DGROUP:5316 ; input_dos_create+211r DGROUP:5318 status_12_seg dw seg DGROUP ; DATA XREF: dos_create_partition+1FFr DGROUP:5318 ; input_dos_create+20Dr DGROUP:531A status_13_off dw offset status_13 ; DATA XREF: non_dos_delete+1AFr DGROUP:531C status_13_seg dw seg DGROUP ; DATA XREF: non_dos_delete+1ABr DGROUP:531E error_1_off dw offset error_1 ; DATA XREF: get_drive_parameters+30r DGROUP:5320 error_1_seg dw seg DGROUP ; DATA XREF: get_drive_parameters:gdprm_1r DGROUP:5322 error_2_off dw offset error_2 ; DATA XREF: do_main_menu+1BDr DGROUP:5322 ; write_boot_record+82r DGROUP:5324 error_2_seg dw seg DGROUP ; DATA XREF: do_main_menu+1B9r DGROUP:5324 ; write_boot_record+7Er DGROUP:5326 error_3_off dw offset error_3 DGROUP:5328 error_3_seg dw seg DGROUP DGROUP:532A error_4_off dw offset error_4 DGROUP:532C error_4_seg dw seg DGROUP DGROUP:532E error_5_off dw offset error_5 DGROUP:5330 error_5_seg dw seg DGROUP DGROUP:5332 error_6_off dw offset error_6 ; DATA XREF: delete_partition+13Fr DGROUP:5334 error_6_seg dw seg DGROUP ; DATA XREF: delete_partition+13Br DGROUP:5336 error_7_off dw offset error_7 ; DATA XREF: delete_partition+16Dr DGROUP:5338 error_7_seg dw seg DGROUP ; DATA XREF: delete_partition+169r DGROUP:533A error_8_off dw offset error_8 ; DATA XREF: dos_create_partition+215r DGROUP:533C error_8_seg dw seg DGROUP ; DATA XREF: dos_create_partition+211r DGROUP:533E error_9_off dw offset error_9 ; DATA XREF: ext_create_partition+26Br DGROUP:5340 error_9_seg dw seg DGROUP ; DATA XREF: ext_create_partition:ecp_18r DGROUP:5342 error_10_off dw offset error_10 ; DATA XREF: create_partition+12Cr DGROUP:5342 ; dos_create_partition+ACr ... DGROUP:5344 error_10_seg dw seg DGROUP ; DATA XREF: create_partition:cp_10r DGROUP:5344 ; dos_create_partition+A8r ... DGROUP:5346 error_12_off dw offset error_12 ; DATA XREF: volume_create+1AFr DGROUP:5348 error_12_seg dw seg DGROUP ; DATA XREF: volume_create+1ABr DGROUP:534A error_13_off dw offset error_13 ; DATA XREF: input_dos_create+109r DGROUP:534A ; ext_create_partition+163r DGROUP:534C error_13_seg dw seg DGROUP ; DATA XREF: input_dos_create+105r DGROUP:534C ; ext_create_partition+15Fr DGROUP:534E error_14_off dw offset error_14 ; DATA XREF: delete_partition+1D2r DGROUP:5350 error_14_seg dw seg DGROUP ; DATA XREF: delete_partition:dp_16r DGROUP:5352 error_15_off dw offset error_15 ; DATA XREF: change_active_partition+123r DGROUP:5354 error_15_seg dw seg DGROUP ; DATA XREF: change_active_partition+11Fr DGROUP:5356 error_16_off dw offset error_16 ; DATA XREF: change_active_partition+2EFr DGROUP:5358 error_16_seg dw seg DGROUP ; DATA XREF: change_active_partition:cap_28r DGROUP:535A error_17_off dw offset error_17 ; DATA XREF: change_active_partition+1F9r DGROUP:535C error_17_seg dw seg DGROUP ; DATA XREF: change_active_partition+1F5r DGROUP:535E error_19_off dw offset error_19 ; DATA XREF: create_partition+10Br DGROUP:535E ; ext_create_partition+275r DGROUP:5360 error_19_seg dw seg DGROUP ; DATA XREF: create_partition:cp_8r DGROUP:5360 ; ext_create_partition:ecp_19r DGROUP:5362 error_20_off dw offset error_20 ; DATA XREF: volume_create+2CCr DGROUP:5364 error_20_seg dw seg DGROUP ; DATA XREF: volume_create+2C8r DGROUP:5366 error_21_off dw offset error_21 ; DATA XREF: ext_delete+112r DGROUP:5368 error_21_seg dw seg DGROUP ; DATA XREF: ext_delete:ed_7r DGROUP:536A error_22_off dw offset error_22 ; DATA XREF: volume_delete+3E6r DGROUP:536C error_22_seg dw seg DGROUP ; DATA XREF: volume_delete+3E2r DGROUP:536E error_23_off dw offset error_23 ; DATA XREF: get_num_input+141r DGROUP:536E ; get_num_input+18Er ... DGROUP:5370 error_23_seg dw seg DGROUP ; DATA XREF: get_num_input+13Dr DGROUP:5370 ; get_num_input+18Ar ... DGROUP:5372 error_24_off dw offset error_24 ; DATA XREF: change_active_partition+89r DGROUP:5374 error_24_seg dw seg DGROUP ; DATA XREF: change_active_partition:cap_04r DGROUP:5376 error_25_off dw offset error_25 ; DATA XREF: change_active_partition+14Er DGROUP:5378 error_25_seg dw seg DGROUP ; DATA XREF: change_active_partition:cap_12r DGROUP:537A error_26_off dw offset error_26 ; DATA XREF: change_active_partition+2F9r DGROUP:537C error_26_seg dw seg DGROUP ; DATA XREF: change_active_partition:cap_29r DGROUP:537E error_27_off dw offset error_27 ; DATA XREF: dos_create_partition+12Er DGROUP:537E ; volume_create+2F3r DGROUP:5380 error_27_seg dw seg DGROUP ; DATA XREF: dos_create_partition+12Ar DGROUP:5380 ; volume_create+2EFr DGROUP:5382 error_28_off dw offset error_28 ; DATA XREF: input_dos_create+1B8r DGROUP:5382 ; ext_create_partition+212r ... DGROUP:5384 error_28_seg dw seg DGROUP ; DATA XREF: input_dos_create+1B4r DGROUP:5384 ; ext_create_partition+20Er ... DGROUP:5386 error_29_off dw offset error_29 ; DATA XREF: volume_delete+265r DGROUP:5388 error_29_seg dw seg DGROUP ; DATA XREF: volume_delete+261r DGROUP:538A error_30_off dw offset error_30 ; DATA XREF: do_main_menu+8Br DGROUP:538C error_30_seg dw seg DGROUP ; DATA XREF: do_main_menu+87r DGROUP:538E error_31_off dw offset error_31 ; DATA XREF: get_num_input+15Dr DGROUP:538E ; get_num_input+1AAr ... DGROUP:5390 error_31_seg dw seg DGROUP ; DATA XREF: get_num_input+159r DGROUP:5390 ; get_num_input+1A6r ... DGROUP:5392 error_32_off dw offset error_32 ; DATA XREF: dos_delete+28Cr DGROUP:5394 error_32_seg dw seg DGROUP ; DATA XREF: dos_delete:ddp_21r DGROUP:5396 error_33_off dw offset error_33 ; DATA XREF: get_large_num_input+1CCr DGROUP:5398 error_33_seg dw seg DGROUP ; DATA XREF: get_large_num_input:glni_27r DGROUP:539A error_34_off dw offset error_34 ; DATA XREF: dos_delete+278r DGROUP:539A ; volume_delete+236r DGROUP:539C error_34_seg dw seg DGROUP ; DATA XREF: dos_delete:ddp_19r DGROUP:539C ; volume_delete+232r DGROUP:539E error_35_off dw offset error_35 ; DATA XREF: create_partition+B0r DGROUP:53A0 error_35_seg dw seg DGROUP ; DATA XREF: create_partition:cp_1r DGROUP:53A2 error_36_off dw offset error_36 ; DATA XREF: delete_partition+1A0r DGROUP:53A2 ; volume_delete+498r DGROUP:53A4 error_36_seg dw seg DGROUP ; DATA XREF: delete_partition+19Cr DGROUP:53A4 ; volume_delete+494r DGROUP:53A6 error_37_off dw offset error_37 ; DATA XREF: dos_delete+282r DGROUP:53A8 error_37_seg dw seg DGROUP ; DATA XREF: dos_delete:ddp_20r DGROUP:53AA error_38_off dw offset error_38 ; DATA XREF: delete_partition+1C8r DGROUP:53AC error_38_seg dw seg DGROUP ; DATA XREF: delete_partition+1C4r DGROUP:53AE error_39_off dw offset error_39 ; DATA XREF: non_dos_delete+1C1r DGROUP:53B0 error_39_seg dw seg DGROUP ; DATA XREF: non_dos_delete:ndd_11r DGROUP:53B2 debug_msg_off dw offset debug_msg ; DATA XREF: display+2Cr DGROUP:53B2 ; display+11Er ... DGROUP:53B4 debug_msg_seg dw seg DGROUP ; DATA XREF: display+28r DGROUP:53B4 ; display:display_18r ... DGROUP:53B6 inter_err_off dw offset internal_error ; DATA XREF: internal_program_error+4r DGROUP:53B8 inter_err_seg dw seg DGROUP ; DATA XREF: internal_program_errorr DGROUP:53BA REMOTE dw offset txtRemote ; DATA XREF: load_logical_drive+256r DGROUP:53BA ; "* Remote * " DGROUP:53BC PRIDOS dw offset txtPriDos ; DATA XREF: table_display:td_ptype_PRIDOSr DGROUP:53BC ; "PRI DOS" DGROUP:53BE XENIX dw offset txtXenix ; DATA XREF: table_display:td_ptype_XENIXr DGROUP:53BE ; " XENIX " DGROUP:53C0 EXTDOS dw offset txtExtDos ; DATA XREF: table_display:td_ptype_EXTENDEDr DGROUP:53C0 ; "EXT DOS" DGROUP:53C2 TABLE dw offset txtTable ; DATA XREF: table_display:td_ptype_TABLEr DGROUP:53C2 ; " Table " DGROUP:53C4 PCIX dw offset txtPcIx ; DATA XREF: table_display:td_ptype_PCIXr DGROUP:53C4 ; " PC/IX " DGROUP:53C6 HPFS dw offset txtHpfs ; DATA XREF: table_display:td_ptype_HPFSr DGROUP:53C6 ; " HPFS " DGROUP:53C8 NOVELL dw offset txtNovell ; DATA XREF: table_display:td_ptype_NOVELLr DGROUP:53C8 ; "NOVELL " DGROUP:53CA CPM dw offset txtCpM ; DATA XREF: table_display:td_ptype_CPMr DGROUP:53CA ; " CP/M " DGROUP:53CC NONDOS dw offset txtNonDos ; DATA XREF: table_display:td_28r DGROUP:53CC ; "Non-DOS" DGROUP:53CE _atopsp dw 0 ; DATA XREF: seg000:6D0Ew DGROUP:53D0 _aexit_rtn dw offset _exit_ ; DATA XREF: seg000:6D6Bw DGROUP:53D0 ; _chkstk-E8Dr DGROUP:53D2 _asizds dw 0 ; DATA XREF: seg000:6CEAw DGROUP:53D4 _nheap_desc db 2 dup(0), 5, 15h dup(0) ; DATA XREF: seg000:6CEEo DGROUP:53D4 ; seg000:7F0Do ... DGROUP:53EC cfile db '_C_FILE_INFO=',0 ; DATA XREF: _cinit+6Eo DGROUP:53FA _aintdiv dd 0 ; DATA XREF: _cinit+5w DGROUP:53FA ; _ctermsub+Er ... DGROUP:53FE _fac dd 0 DGROUP:5402 dd 0 DGROUP:5406 dw 0 DGROUP:5408 errno dw 0 ; DATA XREF: maperror+25w DGROUP:540A umaskval dw 0 DGROUP:540C _pspadr dw 0 DGROUP:540E _psp dw 0 ; DATA XREF: seg000:6D23w DGROUP:540E ; _cinit+28r ... DGROUP:5410 _dosvermajor db 0 ; DATA XREF: _setargv+8w DGROUP:5410 ; maperror+7r DGROUP:5411 _dosverminor db 0 DGROUP:5412 _osmode db 0 DGROUP:5413 _doserrno dw 0 ; DATA XREF: maperrorw DGROUP:5415 _nfile dw 20 ; DATA XREF: _lseek+9r DGROUP:5415 ; _write+9r DGROUP:5417 _osfile db 3 dup(81h) ; DATA XREF: _cinit+86o DGROUP:5417 ; _cinit:devloopw ... DGROUP:541A db 2 dup(1) DGROUP:541C db 15 dup(0) DGROUP:542B _argc dw 0 ; DATA XREF: seg000:6D56r DGROUP:542B ; _setargv+C3w DGROUP:542D _argv dw 0 ; DATA XREF: seg000:6D52r DGROUP:542D ; _setargv+D6w DGROUP:542F environ dw 0 ; DATA XREF: seg000:6D4Er DGROUP:5431 _pgmptr dw offset dos2nam ; DATA XREF: _setargv+2Ew DGROUP:5431 ; _setargv+E4r DGROUP:5433 _pgmptr_2 dw seg DGROUP ; DATA XREF: _setargv+1Bw DGROUP:5435 dos2nam db 0 ; DATA XREF: DGROUP:_pgmptro DGROUP:5436 _child dw 0 DGROUP:5438 _ovlflag db 0 ; DATA XREF: _ctermsub+18r DGROUP:5439 _intno db 0 ; DATA XREF: _ctermsub+20r DGROUP:543A _ovlvec dd 0 ; DATA XREF: _ctermsub+23r DGROUP:543E db 0 DGROUP:543F isdigit db 9 dup(20h), 5 dup(28h), 12h dup(20h), 48h, 0Fh dup(10h) DGROUP:543F ; DATA XREF: display+27Er DGROUP:543F ; display+29Fr ... DGROUP:543F db 0Ah dup(84h), 7 dup(10h), 6 dup(81h), 14h dup(01h) DGROUP:543F db 6 dup(10h), 6 dup(82h), 14h dup(02h), 4 dup(10h), 20h DGROUP:543F db 80h dup(00h) DGROUP:553F align 2 DGROUP:5540 _cpush dw 0FFFFh ; DATA XREF: getch:getch_1r DGROUP:5540 ; getch+9w DGROUP:5542 retadr dw 0 ; DATA XREF: _setargvw DGROUP:5542 ; _setargv+18Ar DGROUP:5544 err_conv_tbl db 00h, 16h, 2 dup(02h), 18h, 0Dh, 09h, 3 dup(0Ch), 07h DGROUP:5544 ; DATA XREF: maperror:inrangeo DGROUP:5544 db 08h, 2 dup(16h), 0FFh, 02h, 0Dh, 12h, 02h, 0FFh DGROUP:5558 lookuptable db 06h, 2 dup(00h), 06h, 00h, 01h, 2 dup(00h), 10h, 00h DGROUP:5558 ; DATA XREF: _output:output_loopoko DGROUP:5558 db 03h, 06h, 00h, 06h, 02h, 10h, 04h, 3 dup(45h), 5 dup(05h) DGROUP:5558 db 35h, 30h, 00h, 50h, 4 dup(00h), 2 dup(20h), 30h, 50h DGROUP:5558 db 58h, 07h, 08h, 00h, 3 dup(30h), 57h, 50h, 07h, 2 dup(00h) DGROUP:5558 db 2 dup(20h), 5 dup(00h), 08h, 6 dup(60h), 2 dup(00h) DGROUP:5558 db 2 dup(70h), 4 dup(78h), 08h, 07h, 08h, 2 dup(00h), 07h DGROUP:5558 db 00h, 3 dup(08h), 2 dup(00h), 08h, 00h, 08h, 2 dup(00h) DGROUP:5558 db 08h DGROUP:55B1 nullstring db '(null)' ; DATA XREF: _output+1A3o DGROUP:55B7 nullstrlen dw 6 ; DATA XREF: _output+1A6r DGROUP:55B9 align 2 DGROUP:55BA dw 0FFFFh DGROUP:55BC end_of_bss dw 8B10h ; DATA XREF: _chkstk+7r DGROUP:55BC ; _stackavail+1r DGROUP:55BE STDIN dw offset _bufin ; DATA XREF: _flsbuf+30o DGROUP:55BE ; _getbuf+11o ... DGROUP:55C0 STDIN_cnt dw 0 DGROUP:55C2 STDIN_base dw offset _bufin DGROUP:55C4 STDIN_flag db 1 DGROUP:55C5 STDIN_file db 0 DGROUP:55C6 STDOUT dw 0 ; DATA XREF: _flsbuf+4Ao DGROUP:55C8 STDOUT_cnt dw 0 DGROUP:55CA STDOUT_base dw 0 DGROUP:55CC STDOUT_flag db 2 DGROUP:55CD STDOUT_file db 1 DGROUP:55CE STDERR dw 0 ; DATA XREF: _flsbuf+50o DGROUP:55D0 STDERR_cnt dw 0 DGROUP:55D2 STDERR_base dw 0 DGROUP:55D4 STDERR_flag db 2 DGROUP:55D5 STDERR_file db 2 DGROUP:55D6 STDAUX dw 0 DGROUP:55D8 STDAUX_cnt dw 0 DGROUP:55DA STDAUX_base dw 0 DGROUP:55DC STDAUX_flag db 84h DGROUP:55DD STDAUX_file db 3 DGROUP:55DE STDPRN dw 0 ; DATA XREF: _flsbuf+56o DGROUP:55E0 STDPRN_cnt dw 0 DGROUP:55E2 STDPRN_base dw 0 DGROUP:55E4 STDPRN_flag db 2 DGROUP:55E5 STDPRN_file db 4 DGROUP:55E6 db 120 dup(0) DGROUP:565E _iob2 db 1 ; DATA XREF: _flsbuf+34o DGROUP:565E ; _getbuf+15o ... DGROUP:565F _iob2_charbuf db 0 DGROUP:5660 _iob2_bufsiz dw 512 DGROUP:5662 _iob2_tmpnum dw 0 DGROUP:5664 _iobuf2_padding dw 0 DGROUP:5666 db 152 dup(0) DGROUP:56FE word_E1CE dw 5656h ; DATA XREF: sub_7EBC:loc_7ED6r DGROUP:5700 _cfltcvt dw offset _fptrap ; DATA XREF: _output:f3r DGROUP:5702 _cropzeros dw offset _fptrap ; DATA XREF: _output+2ABr DGROUP:5704 dw offset _fptrap DGROUP:5706 _forcdecpt dw offset _fptrap ; DATA XREF: _output+297r DGROUP:5708 dw offset _fptrap DGROUP:570A _cldcvt dw offset _fptrap ; DATA XREF: _output+275r DGROUP:570C db 8 dup(0) DGROUP:5714 _amblksiz dw 2000h ; DATA XREF: _growseg+2Er DGROUP:5716 _qczrinit dw 0 ; DATA XREF: seg000:6D39r DGROUP:5718 _aDBswpflg dw 0 ; DATA XREF: _chkstk-EA1r DGROUP:5718 ; _exit_+31r ... DGROUP:571A _aDBswpchk dw offset _aDBretaddr ; DATA XREF: getch+1Dr DGROUP:571A ; _write+1Er DGROUP:571C _aDBrterr dw offset _aDBretaddr ; DATA XREF: _chkstk-E96r DGROUP:571E _aDBexit dw offset _aDBretaddr ; DATA XREF: _exit_+39r DGROUP:5720 db 4 dup(0) DGROUP:5724 dw seg seg001 DGROUP:5726 db 2 dup(0) DGROUP:5728 fpmath dd 0 ; DATA XREF: _cinit+19r DGROUP:5728 ; _cinit+39r ... DGROUP:572C fpdata dd 0 ; DATA XREF: _cinit+31r DGROUP:5730 fpsignal dd 0 ; DATA XREF: _cinit:fpokr DGROUP:5730 ; _cinit+24w DGROUP:5734 xpbegin dw offset loc_7EB4 ; DATA XREF: _cinit+BBo DGROUP:5734 ; _cinit+BEo ... DGROUP:5736 _strbuf_ptr dw 7E7Eh ; DATA XREF: seg000:6D2Bo DGROUP:5736 ; _exit_+2Bo ... DGROUP:5738 _strbuf_cnt dw 7E7Eh ; DATA XREF: sprintf+18w DGROUP:5738 ; sprintf+30w DGROUP:573A _strbuf_base dw 7E7Eh ; DATA XREF: sprintf+10w DGROUP:573C _strbuf_flag db 7Eh ; DATA XREF: sprintf+8w DGROUP:573D _strbuf_file db 7Eh DGROUP:573E xontab dw 7E7Eh ; DATA XREF: _exit_+1Fo DGROUP:573E ; _exit_+22o DGROUP:5740 reboot_flag db ? ; DATA XREF: main:loc_7Bw DGROUP:5740 ; main:_main_08r ... DGROUP:5741 dx_buff db 17 dup(?) ; DATA XREF: get_fs_and_vol+1Fo DGROUP:5752 dx_buff_file_system db ? ; DATA XREF: get_volume+F8r DGROUP:5752 ; get_volume+111o ... DGROUP:5753 db 7 dup(?) DGROUP:575A video_mode db ? ; DATA XREF: init_video_information+1Cw DGROUP:575A ; init_video_information+34r ... DGROUP:575B db ? DGROUP:575C p_px db ? ; DATA XREF: parse_init+17o DGROUP:575C ; parse_init+70w DGROUP:575D p_px_p_maxp db ? ; DATA XREF: parse_init+2Aw DGROUP:575E p_px_p_con1_ptr dw ? ; DATA XREF: parse_init+2Dw DGROUP:5760 p_px_p_maxs db ? ; DATA XREF: parse_init+33w DGROUP:5761 p_px_p_swi1_ptr dw ? ; DATA XREF: parse_init+38w DGROUP:5763 p_px_p_swi2_ptr dw ? ; DATA XREF: parse_init+3Ew DGROUP:5765 p_px_p_swi3_ptr dw ? ; DATA XREF: parse_init+44w DGROUP:5767 p_px_p_swi4_ptr dw ? ; DATA XREF: parse_init+4Aw DGROUP:5769 p_px_p_swi5_ptr dw ? ; DATA XREF: parse_init+50w DGROUP:576B p_px_p_maxk db ? ; DATA XREF: parse_init+59w DGROUP:576C disk_flag db ? ; DATA XREF: main:loc_6Ar DGROUP:576C ; main:_main_11r ... DGROUP:576D p_p dw ? ; DATA XREF: parse_command_line+7Co DGROUP:576D ; parse_init+17w DGROUP:576F p_p_p_num_extra db ? ; DATA XREF: parse_init+24w DGROUP:5770 p_p_p_len_extra_delim db ? ; DATA XREF: parse_init+27w DGROUP:5771 p_p_p_extra_delim db ? ; DATA XREF: parse_init+1Dw DGROUP:5772 max_head dw 8 dup(?) ; DATA XREF: dos_create_partition+96r DGROUP:5772 ; make_partition+C9r ... DGROUP:5782 input_col dw ? ; DATA XREF: do_main_menu:mainmenu_17r DGROUP:5782 ; delete_partition+CAr ... DGROUP:5784 No dw ? ; DATA XREF: dos_delete+21Cr DGROUP:5784 ; ext_delete+90r ... DGROUP:5786 total_mbytes dw 8 dup(?) ; DATA XREF: dos_delete+5Dr DGROUP:5786 ; ext_delete+52r ... DGROUP:5796 dw ? DGROUP:5798 regs_x_ax dw ? ; DATA XREF: check_valid_environmentw DGROUP:5798 ; check_valid_environment+6o ... DGROUP:579A regs_x_bx dw ? ; DATA XREF: check_valid_environment+1Cr DGROUP:579A ; load_logical_drive+240w ... DGROUP:579C regs_x_cx dw ? ; DATA XREF: get_disk_info+5Br DGROUP:579C ; get_disk_info+75r ... DGROUP:579E regs_x_dx dw ? ; DATA XREF: load_logical_drive:lld_14w DGROUP:579E ; write_boot_record+27w ... DGROUP:57A0 regs_x_si dw ? ; DATA XREF: display_msg+24w DGROUP:57A0 ; get_yes_no_values+24r ... DGROUP:57A2 regs_x_di dw ? ; DATA XREF: parse_command_line+7Cw DGROUP:57A4 regs_x_cflag db ? ; DATA XREF: write_boot_record+5Fr DGROUP:57A4 ; verify_tracks+186r ... DGROUP:57A5 db ? DGROUP:57A6 sublistp_size db ? ; DATA XREF: Parse_msg+2Dw DGROUP:57A6 ; Parse_msg+69o DGROUP:57A7 sublistp_res db ? ; DATA XREF: Parse_msg+5Aw DGROUP:57A8 sublistp_value dw ? ; DATA XREF: Parse_msg+2Aw DGROUP:57AA sublistp_value_seg dw ? ; DATA XREF: Parse_msg+24w DGROUP:57AC sublistp_id db ? ; DATA XREF: Parse_msg+5Dw DGROUP:57AD sublistp_flags db ? ; DATA XREF: Parse_msg+32w DGROUP:57AE sublistp_max_width db ? ; DATA XREF: Parse_msg+37w DGROUP:57AF sublistp_min_width db ? ; DATA XREF: Parse_msg+3Cw DGROUP:57B0 sublistp_pad_char db ? ; DATA XREF: Parse_msg+41w DGROUP:57B1 db ? DGROUP:57B2 p_swi1 dw ? ; DATA XREF: parse_init+38o DGROUP:57B2 ; parse_init+76w DGROUP:57B4 p_swi1_sp_function_flag dw ? ; DATA XREF: parse_init+81w DGROUP:57B6 p_swi1_sp_buff1_ptr dw ? ; DATA XREF: parse_init+84w DGROUP:57B8 p_swi1_sp_val1_ptr dw ? ; DATA XREF: parse_init+8Aw DGROUP:57BA p_swi1_sp_nid db ? ; DATA XREF: parse_init+90w DGROUP:57BB p_swi1_sp_switch1 db 5 dup(?) ; DATA XREF: parse_init+99o DGROUP:57BB ; process_switcho DGROUP:57C0 p_swi1_sp_switch2 db 5 dup(?) ; DATA XREF: parse_init+A6o DGROUP:57C0 ; process_switch:loc_6738o DGROUP:57C5 p_swi1_sp_switch3 db 5 dup(?) ; DATA XREF: parse_init+B3o DGROUP:57C5 ; process_switch:loc_674Bo DGROUP:57CA primary_flag db ? ; DATA XREF: main:loc_52r DGROUP:57CA ; main:loc_103r ... DGROUP:57CB db ? DGROUP:57CC p_swi2 dw ? ; DATA XREF: parse_init+3Eo DGROUP:57CC ; parse_init+BCw DGROUP:57CE p_swi2_sp_function_flag dw ? ; DATA XREF: parse_init+C2w DGROUP:57D0 p_swi2_sp_buff1_ptr dw ? ; DATA XREF: parse_init+C8w DGROUP:57D2 p_swi2_sp_val1_ptr dw ? ; DATA XREF: parse_init+D1w DGROUP:57D4 p_swi2_sp_nid db ? ; DATA XREF: parse_init+D4w DGROUP:57D5 p_swi2_sp_switch4 db 3 dup(?) ; DATA XREF: parse_init+DDo DGROUP:57D5 ; process_switch:loc_675Eo DGROUP:57D8 p_swi3 dw ? ; DATA XREF: parse_init+44o DGROUP:57D8 ; parse_init+E6w DGROUP:57DA p_swi3_sp_function_flag dw ? ; DATA XREF: parse_init+ECw DGROUP:57DC p_swi3_sp_buff1_ptr dw ? ; DATA XREF: parse_init+F2w DGROUP:57DE p_swi3_sp_val1_ptr dw ? ; DATA XREF: parse_init+FBw DGROUP:57E0 p_swi3_sp_nid db ? ; DATA XREF: parse_init+FEw DGROUP:57E1 p_swi3_sp_switch5 db 8 dup(?) ; DATA XREF: parse_init+107o DGROUP:57E1 ; process_switch:loc_676Bo DGROUP:57E9 next_letter db ? ; DATA XREF: init_partition_tables+8w DGROUP:57E9 ; init_partition_tables+281r ... DGROUP:57EA display_page db ? ; DATA XREF: init_video_information+22w DGROUP:57EA ; reset_video_information+44r ... DGROUP:57EB db ? DGROUP:57EC p_swi4 dw ? ; DATA XREF: parse_init+4Ao DGROUP:57EC ; parse_init+112w DGROUP:57EE p_swi4_sp_function_flag dw ? ; DATA XREF: parse_init+115w DGROUP:57F0 p_swi4_sp_buff1_ptr dw ? ; DATA XREF: parse_init+118w DGROUP:57F2 p_swi4_sp_val1_ptr dw ? ; DATA XREF: parse_init+121w DGROUP:57F4 p_swi4_sp_nid db ? ; DATA XREF: parse_init+124w DGROUP:57F5 p_swi4_sp_switch6 db 3 dup(?) ; DATA XREF: parse_init+12Do DGROUP:57F5 ; process_switch:loc_6778o DGROUP:57F8 mbr_flag db ? ; DATA XREF: main:loc_71r DGROUP:57F8 ; main:loc_11Fr ... DGROUP:57F9 db ? DGROUP:57FA _bufin db 512 dup(?) ; DATA XREF: DGROUP:STDINo DGROUP:57FA ; DGROUP:STDIN_baseo DGROUP:59FA p_swi5 dw ? ; DATA XREF: parse_init+50o DGROUP:59FA ; parse_init+136w DGROUP:59FC p_swi5_sp_function_flag dw ? ; DATA XREF: parse_init+13Cw DGROUP:59FE p_swi5_sp_buff1_ptr dw ? ; DATA XREF: parse_init+142w DGROUP:5A00 p_swi5_sp_val1_ptr dw ? ; DATA XREF: parse_init+14Bw DGROUP:5A02 p_swi5_sp_nid db ? ; DATA XREF: parse_init+14Ew DGROUP:5A03 p_swi5_sp_switch7 db 5 dup(?) ; DATA XREF: parse_init+157o DGROUP:5A03 ; process_switch:loc_6783o DGROUP:5A08 input_row dw ? ; DATA XREF: do_main_menu+15Dr DGROUP:5A08 ; delete_partition+CEr ... DGROUP:5A0A quiet_flag db ? ; DATA XREF: main+329r DGROUP:5A0A ; main:_main_34r ... DGROUP:5A0B db ? DGROUP:5A0C good_disk db ? ; DATA XREF: main+8Fw DGROUP:5A0C ; main+136w ... DGROUP:5A0D db 7 dup(?) DGROUP:5A14 ext_table_boot_ind db ? ; DATA XREF: init_partition_tables+34Aw DGROUP:5A14 ; load_logical_drive+2D4w ... DGROUP:5A15 ext_table_start_head db ? ; DATA XREF: init_partition_tables+34Ew DGROUP:5A15 ; load_logical_drive+5Ar ... DGROUP:5A16 ext_table_start_sector db ? ; DATA XREF: init_partition_tables+352w DGROUP:5A16 ; load_logical_drive+55r ... DGROUP:5A17 ext_table_start_cyl dw ? ; DATA XREF: init_partition_tables+356w DGROUP:5A17 ; load_logical_drive+4Er ... DGROUP:5A19 ext_table_sys_id db ? ; DATA XREF: init_partition_tables+2F3r DGROUP:5A19 ; init_partition_tables+35Cw ... DGROUP:5A1A ext_table_end_head db ? ; DATA XREF: init_partition_tables+360w DGROUP:5A1A ; load_logical_drive+30Cw ... DGROUP:5A1B ext_table_end_sector db ? ; DATA XREF: init_partition_tables+364w DGROUP:5A1B ; load_logical_drive+318w ... DGROUP:5A1C ext_table_end_cyl dw ? ; DATA XREF: init_partition_tables+368w DGROUP:5A1C ; load_logical_drive+32Aw ... DGROUP:5A1E ext_table_rel_sec_lw dw ? ; DATA XREF: init_partition_tables+374w DGROUP:5A1E ; load_logical_drive+338w ... DGROUP:5A20 ext_table_rel_sec_hw dw ? ; DATA XREF: init_partition_tables+370w DGROUP:5A20 ; load_logical_drive+33Cw ... DGROUP:5A22 ext_table_num_sec_lw dw ? ; DATA XREF: init_partition_tables+37Cw DGROUP:5A22 ; load_logical_drive+1BAr ... DGROUP:5A24 ext_table_num_sec_hw dw ? ; DATA XREF: init_partition_tables+378w DGROUP:5A24 ; load_logical_drive+1B3r ... DGROUP:5A26 db ? DGROUP:5A27 ext_table_changed db ? ; DATA XREF: init_partition_tables+38Aw DGROUP:5A27 ; make_volume+110w ... DGROUP:5A28 ext_table_mbytes_used dw ? ; DATA XREF: init_partition_tables+380w DGROUP:5A28 ; load_logical_drive+40Bw ... DGROUP:5A2A ext_table_percent_used dw ? ; DATA XREF: init_partition_tables+384w DGROUP:5A2A ; load_logical_drive+443w ... DGROUP:5A2C ext_table_vol_label db 12 dup(?) ; DATA XREF: volume_delete+219o DGROUP:5A2C ; init_partition_tables+3BAo ... DGROUP:5A38 ext_table_system db 9 dup(?) ; DATA XREF: init_partition_tables+3A0o DGROUP:5A38 ; load_logical_drive+D4w ... DGROUP:5A41 ext_table_drive_letter db ? ; DATA XREF: volume_delete+192r DGROUP:5A41 ; volume_delete+42Cr ... DGROUP:5A42 db 1012 dup(?) DGROUP:5E36 ep0_lp23_boot_ind db ? DGROUP:5E37 ep0_lp23_start_head db ? ; DATA XREF: write_info_to_disk+17Dw DGROUP:5E38 ep0_lp23_start_sector db ? ; DATA XREF: write_info_to_disk+182w DGROUP:5E39 ep0_lp23_start_cyl dw ? ; DATA XREF: write_info_to_disk+179w DGROUP:5E39 ; write_ext_boot_to_disk+2E0r DGROUP:5E3B ep0_lp23_sys_id db ? ; DATA XREF: write_info_to_disk+15Fw DGROUP:5E3C ep0_lp23_end_head db ? DGROUP:5E3D ep0_lp23_end_sector db ? DGROUP:5E3E ep0_lp23_end_cyl dw ? DGROUP:5E40 ep0_lp23_rel_sec_lw dw ? DGROUP:5E42 ep0_lp23_rel_sec_hw dw ? DGROUP:5E44 ep0_lp23_num_sec_lw dw ? DGROUP:5E46 ep0_lp23_num_sec_hw dw ? DGROUP:5E48 db ? DGROUP:5E49 ep0_lp23_changed db ? DGROUP:5E4A ep0_lp23_mbytes_used dw ? DGROUP:5E4C ep0_lp23_percent_used dw ? DGROUP:5E4E ep0_lp23_vol_label db 12 dup(?) DGROUP:5E5A ep0_lp23_system db 9 dup(?) DGROUP:5E63 ep0_lp23_drive_letter db ? DGROUP:5E64 byte_E934 db 7728 dup(?) DGROUP:7C94 mono_flag db ? ; DATA XREF: display+68r DGROUP:7C94 ; display:display_5r ... DGROUP:7C95 Yes db ? ; DATA XREF: dos_create_partition+15Fr DGROUP:7C95 ; display_partition_information+96r ... DGROUP:7C96 segregs_es dw ? ; DATA XREF: reboot_system+27o DGROUP:7C96 ; reboot_system+36r ... DGROUP:7C98 segregs_cs dw ? DGROUP:7C9A segregs_ss dw ? DGROUP:7C9C segregs_ds dw ? ; DATA XREF: get_yes_no_values+2Ar DGROUP:7C9C ; get_yes_no_values+62r ... DGROUP:7C9E extended_buff dw ? ; DATA XREF: main+2A5r DGROUP:7C9E ; main+2B8r ... DGROUP:7CA0 total_disk dw 8 dup(?) ; DATA XREF: input_dos_create+180r DGROUP:7CA0 ; ext_create_partition+1DAr ... DGROUP:7CB0 primary_partition_count db ? ; DATA XREF: init_partition_tables:ipt_for1_nextw DGROUP:7CB0 ; init_partition_tables+208r ... DGROUP:7CB1 db ? DGROUP:7CB2 primary_buff dw ? ; DATA XREF: main+228r DGROUP:7CB2 ; main+23Br ... DGROUP:7CB4 PercentFlag db ? ; DATA XREF: do_main_menu+Bw DGROUP:7CB4 ; input_dos_create:idc_3r ... DGROUP:7CB5 logical_flag db ? ; DATA XREF: main+4Br DGROUP:7CB5 ; main+F9r ... DGROUP:7CB6 status_flag db ? ; DATA XREF: main+ACr DGROUP:7CB6 ; main:_main_07r ... DGROUP:7CB7 number_of_drives db ? ; DATA XREF: main+153r DGROUP:7CB7 ; do_main_menu:mainmenu_04r ... DGROUP:7CB8 extended_flag db ? ; DATA XREF: main:loc_5Cr DGROUP:7CB8 ; main+F2r ... DGROUP:7CB9 sp_val db ? ; DATA XREF: parse_init+8Ao DGROUP:7CB9 ; parse_init+177w DGROUP:7CBA sp_val_p_range db ? ; DATA XREF: parse_init+17Aw DGROUP:7CBB sp_val_p_range_one db ? ; DATA XREF: parse_init+17Dw DGROUP:7CBC sp_val_p_low_range dd ? ; DATA XREF: parse_init+18Bw DGROUP:7CBC ; parse_init+18Ew DGROUP:7CC0 sp_val_p_high_range dw ? ; DATA XREF: parse_init+192w DGROUP:7CC2 sp_val_p_high_range_2 db ? ; DATA XREF: parse_init+198w DGROUP:7CC3 sort_1 db ? ; DATA XREF: sort_part_table+69r DGROUP:7CC3 ; sort_part_table+96r ... DGROUP:7CC4 sort db 4 dup(?) ; DATA XREF: dos_delete+163r DGROUP:7CC4 ; dos_delete+190r ... DGROUP:7CC8 db 20 dup(?) DGROUP:7CDC p_val db ? ; DATA XREF: parse_init+68o DGROUP:7CDC ; parse_init+16Ew DGROUP:7CDD p_val_p_range db ? ; DATA XREF: parse_init+171w DGROUP:7CDE p_val_p_range_one db ? ; DATA XREF: parse_init+174w DGROUP:7CDF p_val_p_low_range dd ? ; DATA XREF: parse_init+184w DGROUP:7CDF ; parse_init+187w DGROUP:7CE3 p_val_p_high_range dd ? ; DATA XREF: parse_init+160w DGROUP:7CE3 ; parse_init+166w DGROUP:7CE7 no_fatal_error db ? ; DATA XREF: main:_main_00w DGROUP:7CE7 ; main:_main_09r ... DGROUP:7CE8 p_con dw ? ; DATA XREF: parse_init+2Do DGROUP:7CE8 ; parse_init+5Cw DGROUP:7CEA p_con_p_function_flag dw ? ; DATA XREF: parse_init+7Ew DGROUP:7CEC p_con_p_buff1_ptr dw ? ; DATA XREF: parse_init+62w DGROUP:7CEE p_con_p_val1_ptr dw ? ; DATA XREF: parse_init+68w DGROUP:7CF0 p_con_nid db ? ; DATA XREF: parse_init+73w DGROUP:7CF1 cur_disk_buff db ? ; DATA XREF: main:_main_16r DGROUP:7CF1 ; main+1EBr ... DGROUP:7CF2 insert db 800 dup(?) ; DATA XREF: do_main_menu+84w DGROUP:7CF2 ; do_main_menu+DDw ... DGROUP:8012 video_attribute db ? ; DATA XREF: display+3Fr DGROUP:8012 ; display+152r ... DGROUP:8013 db ? DGROUP:8014 part_table_boot_ind db ? ; DATA XREF: change_active_partition+70r DGROUP:8014 ; change_active_partition+10Ar ... DGROUP:8015 part_table_start_head db ? ; DATA XREF: init_partition_tables+A4w DGROUP:8015 ; make_partition+FEw ... DGROUP:8016 part_table_start_sector db ? ; DATA XREF: init_partition_tables+B0w DGROUP:8016 ; make_partition+BAw ... DGROUP:8017 part_table_start_cyl dw ? ; DATA XREF: volume_create+CEr DGROUP:8017 ; volume_create+232r ... DGROUP:8019 part_table_sys_id db ? ; DATA XREF: do_main_menu+109r DGROUP:8019 ; delete_partition+56r ... DGROUP:801A part_table_end_head db ? ; DATA XREF: init_partition_tables+D4w DGROUP:801A ; make_partition+CFw ... DGROUP:801B part_table_end_sector db ? ; DATA XREF: init_partition_tables+E0w DGROUP:801B ; make_partition+C3w ... DGROUP:801C part_table_end_cyl dw ? ; DATA XREF: volume_create+CAr DGROUP:801C ; volume_create+22Er ... DGROUP:801E part_table_rel_sec_lw dw ? ; DATA XREF: init_partition_tables+100w DGROUP:801E ; init_partition_tables+114w ... DGROUP:8020 part_table_rel_sec_hw dw ? ; DATA XREF: init_partition_tables+104w DGROUP:8020 ; init_partition_tables+118w ... DGROUP:8022 part_table_num_sec_lw dw ? ; DATA XREF: init_partition_tables+160w DGROUP:8022 ; init_partition_tables+174w ... DGROUP:8024 part_table_num_sec_hw dw ? ; DATA XREF: init_partition_tables+164w DGROUP:8024 ; init_partition_tables+178w ... DGROUP:8026 db ? DGROUP:8027 part_table_changed db ? ; DATA XREF: change_active_partition+277w DGROUP:8027 ; change_active_partition+2ACw ... DGROUP:8028 part_table_mbytes_used dw ? ; DATA XREF: init_partition_tables+1BEw DGROUP:8028 ; init_partition_tables+1CEr ... DGROUP:802A part_table_percent_used dw ? ; DATA XREF: init_partition_tables+1D7w DGROUP:802A ; table_display+96r ... DGROUP:802C part_table_vol_label db 12 dup(?) ; DATA XREF: dos_delete+1FAo DGROUP:802C ; get_volume+45w ... DGROUP:8038 part_table_system db 9 dup(?) ; DATA XREF: get_volume+6Bw DGROUP:8038 ; get_volume+126o ... DGROUP:8041 part_table_drive_letter db ? ; DATA XREF: init_partition_tables+203w DGROUP:8041 ; init_partition_tables+288w ... DGROUP:8042 db 20 dup(?) DGROUP:8056 pt_part2_mbytes_used dw ? ; DATA XREF: change_current_drive+215r DGROUP:8058 pt_part2_percent_used dw ? ; DATA XREF: change_current_drive+7Ar DGROUP:805A db 42 dup(?) DGROUP:8084 pt_part3_mbytes_used dw ? ; DATA XREF: change_current_drive+211r DGROUP:8086 pt_part3_percent_used dw ? ; DATA XREF: change_current_drive+76r DGROUP:8088 db 42 dup(?) DGROUP:80B2 pt_part4_mbytes_used dw ? ; DATA XREF: change_current_drive+20Dr DGROUP:80B4 pt_part4_percent_used dw ? ; DATA XREF: change_current_drive+72r DGROUP:80B6 db 1310 dup(?) DGROUP:85D4 max_sector db 8 dup(?) ; DATA XREF: dos_create_partition+7Fr DGROUP:85D4 ; make_partition+BFr ... DGROUP:85DC boot_record db 512 dup(?) ; DATA XREF: main+1B4w DGROUP:85DC ; main+1C6w ... DGROUP:87DC logical_buff dw ? ; DATA XREF: main+2F6r DGROUP:87DC ; main+309r ... DGROUP:87DE cur_disk db ? ; DATA XREF: main+A7w DGROUP:87DE ; main+1EEw ... DGROUP:87DF db ? DGROUP:87E0 p_buff db ? ; DATA XREF: parse_command_line+A0o DGROUP:87E0 ; parse_init+62o DGROUP:87E1 p_buff_p_item_tag db ? DGROUP:87E2 p_buff_p_synonym dw ? DGROUP:87E4 p_buff_p_value dd ? ; DATA XREF: check_disk_validity+5r DGROUP:87E8 valid_input db ? ; DATA XREF: volume_delete:vdel_10w DGROUP:87E8 ; volume_delete+1A7r ... DGROUP:87E9 db ? DGROUP:87EA Parse_Ptr dw ? ; DATA XREF: parse_command_line+82w DGROUP:87EA ; parse_command_line+8Cw ... DGROUP:87EC free_space_space dw ? ; DATA XREF: main+231r DGROUP:87EC ; main+2AEr ... DGROUP:87EE free_space_start dw ? ; DATA XREF: find_part_free_space+20w DGROUP:87EE ; find_part_free_space+77w ... DGROUP:87F0 free_space_end dw ? ; DATA XREF: find_part_free_space+24w DGROUP:87F0 ; find_part_free_space+B5w ... DGROUP:87F2 free_space_mbytes_unused dw ? ; DATA XREF: main+22Br DGROUP:87F2 ; main+2A8r ... DGROUP:87F4 free_space_percent_unused dw ? ; DATA XREF: input_dos_create+B8r DGROUP:87F4 ; input_dos_create+11Fr ... DGROUP:87F6 db 520 dup(?) DGROUP:89FE disk_access db ? ; DATA XREF: check_format+30o DGROUP:89FF dac_access_flag db ? ; DATA XREF: check_format+12w DGROUP:89FF ; check_format+4Dr DGROUP:8A00 sp_buff db ? ; DATA XREF: parse_command_line:loc_653Do DGROUP:8A00 ; parse_init+84o ... DGROUP:8A01 sp_buff_p_item_tag db ? DGROUP:8A02 sp_buff_p_synonym dw ? ; DATA XREF: process_switchr DGROUP:8A02 ; process_switch:loc_6738r ... DGROUP:8A04 sp_buff_p_value db 10 dup(?) ; DATA XREF: process_switch+Dr DGROUP:8A04 ; process_switch+20r ... DGROUP:8A0E dataoffset_end_2 dw ? ; DATA XREF: seg000:6CCCo DGROUP:8A0E DGROUP ends DGROUP:8A0E seg005:0000 ; =========================================================================== seg005:0000 seg005:0000 ; Segment type: Uninitialized seg005:0000 seg005 segment byte stack 'STACK' use16 seg005:0000 assume cs:seg005 seg005:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing seg005:0000 byte_114E0 db 800h dup(?) seg005:0000 seg005 ends seg005:0000 seg005:0000 seg005:0000 end _astart