diff --git a/kernel/trunk/sec_loader/trunk/debug_msg.inc b/kernel/trunk/sec_loader/trunk/debug_msg.inc index 16d92d5330..ce0a83828e 100644 --- a/kernel/trunk/sec_loader/trunk/debug_msg.inc +++ b/kernel/trunk/sec_loader/trunk/debug_msg.inc @@ -57,11 +57,17 @@ BPB_msg db ' -in byte, why we get data from move BPB struct',0 firstDataSect_msg db ' -first data sector, offset to data in sectors',0 size_root_dir_msg db ' -size root dir in sectrors',0 DataClasters_msg db ' -size data in Clasters',0 -check_name_fat_msg db ' -if -1 name is present, else 0 then not present name',0 -convertion_file_name_msg db ' -if -1, then destination name of file is bad',0 -start_making_FAT12_msg db '>>>>>> Begin making fat12 FS on RAMDISK <<<<<<<',0 +first_entry_in_fat db ' -data segment in FIRST entry FAT',0 +check_root_fat_ db ' : _______________',0 +check_name_fat_msg_y db 'Name is present that is BAD',0 +check_name_fat_msg_n db 'Name is not present that is GOOD',0 +name_of_seg_get_64 db ' -name of seg where we get 64 Kb of data',0 +convertion_file_name_msg_y db 'Destination name of file is GOOD',0 +convertion_file_name_msg_n db 'Destination name of file is BAD',0 +start_making_FAT12_msg db '>>>>>> Begin make a RAMDISK and FS after 1 Mb <<<<<<<',0 make_fat12_RFS_msg db '-Make FAT12 Ram FS',0 get_type_FS_msg db '-End make RamDisk',0 +seg_where_get_data db ' - Segment where we get data for move up file',0 return_code_af_move db ' -return code after 0x87 int 0x15, move block',0 return_code_af_fat_m db ' -return code after 0x87 int 0x15, move fat struc',0 diff --git a/kernel/trunk/sec_loader/trunk/kolibri_ldm/booteng.inc b/kernel/trunk/sec_loader/trunk/kolibri_ldm/booteng.inc index 73b7fc96f9..bb6ec980f6 100644 --- a/kernel/trunk/sec_loader/trunk/kolibri_ldm/booteng.inc +++ b/kernel/trunk/sec_loader/trunk/kolibri_ldm/booteng.inc @@ -60,7 +60,7 @@ diskload db "Loading diskette: 00 %",8,8,8,8,0 pros db "00" backspace2 db 8,8,0 boot_dev db 0 ; 0=floppy, 1=hd -start_msg db "Press [abcd] to change settings, press [Enter] to continue booting",13,10,0 +start_msg db "Press [abc] to change settings, press [Enter] to continue booting",13,10,0 time_msg db " or wait " time_str db " 5 seconds" db " before automatical continuation",13,10,0 diff --git a/kernel/trunk/sec_loader/trunk/kolibri_ldm/bootru.inc b/kernel/trunk/sec_loader/trunk/kolibri_ldm/bootru.inc index 96c35e6b35..c6630991ea 100644 --- a/kernel/trunk/sec_loader/trunk/kolibri_ldm/bootru.inc +++ b/kernel/trunk/sec_loader/trunk/kolibri_ldm/bootru.inc @@ -46,7 +46,7 @@ diskload db " pros db "00" backspace2 db 8,8,0 boot_dev db 0 -start_msg db "Ќ ¦¬ЁвҐ [abcd] ¤«п Ё§¬Ґ­Ґ­Ёп ­ бв஥Є, [Enter] ¤«п Їа®¤®«¦Ґ­Ёп § Јаг§ЄЁ",13,10,0 +start_msg db "Ќ ¦¬ЁвҐ [abc] ¤«п Ё§¬Ґ­Ґ­Ёп ­ бв஥Є, [Enter] ¤«п Їа®¤®«¦Ґ­Ёп § Јаг§ЄЁ",13,10,0 time_msg db " Ё«Ё Ї®¤®¦¤ЁвҐ " time_str db " 5 ᥪ㭤 " db " ¤®  ўв®¬ вЁзҐбЄ®Ј® Їа®¤®«¦Ґ­Ёп",13,10,0 diff --git a/kernel/trunk/sec_loader/trunk/kolibri_ldm/kolibri_ldm.asm b/kernel/trunk/sec_loader/trunk/kolibri_ldm/kolibri_ldm.asm index 31eaae29f6..79e76690bb 100644 --- a/kernel/trunk/sec_loader/trunk/kolibri_ldm/kolibri_ldm.asm +++ b/kernel/trunk/sec_loader/trunk/kolibri_ldm/kolibri_ldm.asm @@ -12,6 +12,8 @@ ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +include "lang.inc" + macro _setcursor row,column { mov dx, row*256 + column diff --git a/kernel/trunk/sec_loader/trunk/loader.asm b/kernel/trunk/sec_loader/trunk/loader.asm index 631f3fcafb..3ea008ab7b 100644 --- a/kernel/trunk/sec_loader/trunk/loader.asm +++ b/kernel/trunk/sec_loader/trunk/loader.asm @@ -275,7 +275,7 @@ fat12_buffer: .BS_VolLab db 'RAM DISK FS' ;11 символов .BS_FilSysType db 'FAT12 ' ;8 символов ;62 байта структура fat12. - +db (512-($-fat12_buffer))dup(0x90) @@ -301,10 +301,13 @@ struc FAT_32_entry ;Byte Directory Entry Structure ;;; ;timer shot_name_fat rb 11 ;временный буфер для fat12, в нем храняться имена файлов приведенные к правилам FAT /* вдальнейшем перенести в стэк + if DEBUG rb 1 ;нужен для отладки и вывода имени файла после преобразования -dest_name_fat rb 12 +dest_name_fat db 24 dup('_');12 +db 0x0 end if + value_timeout rw 1 ;value to timeout old_timer rd 1 ;старое значение вектора таймера start_timer rd 1 ;значение таймера diff --git a/kernel/trunk/sec_loader/trunk/loader.lst b/kernel/trunk/sec_loader/trunk/loader.lst new file mode 100644 index 0000000000..3984e145d6 --- /dev/null +++ b/kernel/trunk/sec_loader/trunk/loader.lst @@ -0,0 +1,2147 @@ +flat assembler version 1.68 (65535 kilobytes memory) +0000: E9 E1 0A jmp start +0003: 53 65 63 6F 6E 64 61 72 79 20 4C 6F 61 version db 'Secondary Loader v 0.009', 0 +0010: 64 65 72 20 76 20 30 2E 30 30 39 00 +001C: 53 65 6C 65 63 74 20 73 65 63 74 69 6F select_section db 'Select section:' +0029: 6E 3A +002B: 53 65 63 74 69 6F 6E 20 64 65 73 63 72 section_description db 'Section description:' +0038: 69 70 74 69 6F 6E 3A +003F: 53 6F 66 74 20 28 63 29 20 32 30 30 38 soft_mes db 'Soft (c) 2008' +004C: 3E 46 61 74 61 6C 20 2D 20 43 50 55 20 badprocessor db '>Fatal - CPU 586+ required.', 0 +0059: 35 38 36 2B 20 72 65 71 75 69 72 65 64 +0066: 2E 00 +0068: 3E 45 72 72 6F 72 3A 20 63 61 6E 6E 6F error_ini_f1 db '>Error: cannot load ini file, buffer is full', 0 +0075: 74 20 6C 6F 61 64 20 69 6E 69 20 66 69 +0082: 6C 65 2C 20 62 75 66 66 65 72 20 69 73 +008F: 20 66 75 6C 6C 00 +0095: 3E 45 72 72 6F 72 3A 20 69 6E 69 20 66 error_ini_f2 db '>Error: ini file not found', 0 +00A2: 69 6C 65 20 6E 6F 74 20 66 6F 75 6E 64 +00AF: 00 +00B0: 3E 45 72 72 6F 72 3A 20 63 61 6E 6E 6F error_ini_f3 db '>Error: cannot read ini file', 0 +00BD: 74 20 72 65 61 64 20 69 6E 69 20 66 69 +00CA: 6C 65 00 +00CD: 3E 45 72 72 6F 72 3A 20 75 6E 72 65 63 error_ini_nf db '>Error: unrecognized error when loading ini file', 0 +00DA: 6F 67 6E 69 7A 65 64 20 65 72 72 6F 72 +00E7: 20 77 68 65 6E 20 6C 6F 61 64 69 6E 67 +00F4: 20 69 6E 69 20 66 69 6C 65 00 +00FE: 3E 4E 6F 74 20 66 6F 75 6E 64 20 73 65 not_found_sec_loader db '>Not found section [loader]', 0 +010B: 63 74 69 6F 6E 20 5B 6C 6F 61 64 65 72 +0118: 5D 00 +011A: 3E 4E 6F 74 20 66 6F 75 6E 64 20 76 61 not_found_def_sect db '>Not found value default in section [loader]', 0 +0127: 6C 75 65 20 64 65 66 61 75 6C 74 20 69 +0134: 6E 20 73 65 63 74 69 6F 6E 20 5B 6C 6F +0141: 61 64 65 72 5D 00 +0147: 3E 45 72 72 6F 72 20 69 6E 20 73 65 63 default_eq_loader db '>Error in section [loader] parametr default=loader', 0 +0154: 74 69 6F 6E 20 5B 6C 6F 61 64 65 72 5D +0161: 20 70 61 72 61 6D 65 74 72 20 64 65 66 +016E: 61 75 6C 74 3D 6C 6F 61 64 65 72 00 +017A: 3E 46 6F 75 6E 64 20 65 71 75 61 6C 20 found_equal_default db '>Found equal parametr default will be use first value', 0 +0187: 70 61 72 61 6D 65 74 72 20 64 65 66 61 +0194: 75 6C 74 20 77 69 6C 6C 20 62 65 20 75 +01A1: 73 65 20 66 69 72 73 74 20 76 61 6C 75 +01AE: 65 00 +01B0: 3E 46 6F 75 6E 64 20 65 71 75 61 6C 20 found_equal_timeout db '>Found equal parametr timeout will be use first value', 0 +01BD: 70 61 72 61 6D 65 74 72 20 74 69 6D 65 +01CA: 6F 75 74 20 77 69 6C 6C 20 62 65 20 75 +01D7: 73 65 20 66 69 72 73 74 20 76 61 6C 75 +01E4: 65 00 +01E6: 3E 53 65 63 74 69 6F 6E 20 74 69 6D 65 set_default_timeout_val db '>Section timeout has incorrect value, will be use default value', 0 +01F3: 6F 75 74 20 68 61 73 20 69 6E 63 6F 72 +0200: 72 65 63 74 20 76 61 6C 75 65 2C 20 77 +020D: 69 6C 6C 20 62 65 20 75 73 65 20 64 65 +021A: 66 61 75 6C 74 20 76 61 6C 75 65 00 +0226: 3E 49 20 77 69 6C 6C 20 75 73 65 20 70 error_ini_common db '>I will use predefined settings and try to boot. Let's hope for the best...' +0233: 72 65 64 65 66 69 6E 65 64 20 73 65 74 +0240: 74 69 6E 67 73 20 61 6E 64 20 74 72 79 +024D: 20 74 6F 20 62 6F 6F 74 2E 20 4C 65 74 +025A: 27 73 20 68 6F 70 65 20 66 6F 72 20 74 +0267: 68 65 20 62 65 73 74 2E 2E 2E +0271: 0D 0A 50 72 65 73 73 20 61 6E 79 20 6B db 13, 10, 'Press any key to continue...', 0 +027E: 65 79 20 74 6F 20 63 6F 6E 74 69 6E 75 +028B: 65 2E 2E 2E 00 +0290: 3E 49 6E 69 20 66 69 6C 65 20 6C 6F 61 load_ini db '>Ini file loaded successfully', 0 +029D: 64 65 64 20 73 75 63 63 65 73 73 66 75 +02AA: 6C 6C 79 00 +02AE: 3E 45 6E 64 20 70 61 72 73 69 6E 67 20 parse_ini_end db '>End parsing ini file', 0 +02BB: 69 6E 69 20 66 69 6C 65 00 +02C4: 3E 50 6F 69 6E 74 20 74 6F 20 64 65 66 point_to_default_sec_not_found db '>Point to default section is not found in ini file', 0 +02D1: 61 75 6C 74 20 73 65 63 74 69 6F 6E 20 +02DE: 69 73 20 6E 6F 74 20 66 6F 75 6E 64 20 +02EB: 69 6E 20 69 6E 69 20 66 69 6C 65 00 +02F7: 3E 49 6E 63 6F 72 65 63 74 20 73 65 63 incorect_section_define db '>Incorect section define not found ']'', 0 +0304: 74 69 6F 6E 20 64 65 66 69 6E 65 20 6E +0311: 6F 74 20 66 6F 75 6E 64 20 27 5D 27 00 +031E: 22 53 65 63 74 69 6F 6E 20 75 6E 6E 61 default_section_name db '"Section unname"' +032B: 6D 65 22 +032E: 50 72 65 73 73 20 61 6E 79 20 6B 65 79 start_msg db 'Press any key to change default section, press [Enter] to continue booting' +033B: 20 74 6F 20 63 68 61 6E 67 65 20 64 65 +0348: 66 61 75 6C 74 20 73 65 63 74 69 6F 6E +0355: 2C 20 70 72 65 73 73 20 5B 45 6E 74 65 +0362: 72 5D 20 74 6F 20 63 6F 6E 74 69 6E 75 +036F: 65 20 62 6F 6F 74 69 6E 67 +0378: 6F 72 20 77 61 69 74 20 34 20 73 65 63 time_msg db 'or wait 4 seconds before default continuation' +0385: 6F 6E 64 73 20 62 65 66 6F 72 65 20 64 +0392: 65 66 61 75 6C 74 20 63 6F 6E 74 69 6E +039F: 75 61 74 69 6F 6E +03A5: 73 65 63 6F 6E 64 73 20 62 65 66 6F 72 time_str db 'seconds before default continuation' +03B2: 65 20 64 65 66 61 75 6C 74 20 63 6F 6E +03BF: 74 69 6E 75 61 74 69 6F 6E +03C8: 53 65 74 20 73 74 61 63 6B 20 26 20 73 stack_msg db 'Set stack & segments is have completed', 0 +03D5: 65 67 6D 65 6E 74 73 20 69 73 20 68 61 +03E2: 76 65 20 63 6F 6D 70 6C 65 74 65 64 00 +03EF: 48 61 76 65 20 6C 6F 61 64 65 64 20 73 show_string db 'Have loaded size:' +03FC: 69 7A 65 3A +0400: 20 20 20 20 20 20 00 show_decode db ' ', 0 +0407: 20 20 20 20 20 20 20 2D 4D 65 73 73 61 show_db1 db ' -Message debug1', 0 +0414: 67 65 20 64 65 62 75 67 31 00 +041E: 20 20 20 20 20 20 20 2D 4D 65 73 73 61 show_db2 db ' -Message debug2', 0 +042B: 67 65 20 64 65 62 75 67 32 00 +0435: 5B 6C 6F 61 64 65 72 5D 20 69 73 20 66 lm_l_found db '[loader] is found', 0 +0442: 6F 75 6E 64 00 +0447: 74 69 6D 65 6F 75 74 20 69 73 20 66 6F lm_lf_timeout db 'timeout is found', 0 +0454: 75 6E 64 00 +0458: 6E 61 6D 65 20 64 65 66 61 75 6C 74 20 lm_lf_default db 'name default is found and end parsing section', 0 +0465: 69 73 20 66 6F 75 6E 64 20 61 6E 64 20 +0472: 65 6E 64 20 70 61 72 73 69 6E 67 20 73 +047F: 65 63 74 69 6F 6E 00 +0486: 66 6F 75 6E 64 20 73 65 63 74 69 6F 6E lm_lf_section db 'found section [', 0 +0493: 20 5B 00 +0496: 66 6F 75 6E 64 20 64 65 66 61 75 6C 74 lm_lf_default_f db 'found default parametr', 0 +04A3: 20 70 61 72 61 6D 65 74 72 00 +04AD: 73 65 63 74 69 6F 6E 20 5B 6C 6F 61 64 lm_l_end db 'section [loader] is end', 0 +04BA: 65 72 5D 20 69 73 20 65 6E 64 00 +04C5: 53 48 4F 57 20 41 4C 4C 20 53 65 63 74 show_all_sect db 'SHOW ALL Sections', 0 +04D2: 69 6F 6E 73 00 +04D7: 4E 6F 74 20 73 68 6F 77 20 73 65 63 74 no_show_only_w db 'Not show sections - only work on default sect', 0 +04E4: 69 6F 6E 73 20 2D 20 6F 6E 6C 79 20 77 +04F1: 6F 72 6B 20 6F 6E 20 64 65 66 61 75 6C +04FE: 74 20 73 65 63 74 00 +0505: 5B 20 6E 6F 74 20 66 6F 75 6E 64 00 _not_found db '[ not found', 0 +0511: 5B 5D 20 66 6F 75 6E 64 00 _found_1 db '[] found', 0 +051A: 5B 20 66 6F 75 6E 64 00 _found_2 db '[ found', 0 +0522: 48 65 6C 6C 6F 20 24 29 00 say_hello db 'Hello $)', 0 +052B: 53 74 61 72 74 20 75 73 65 5F 52 61 6D ramdiskFS_st db 'Start use_RamdiskFS macros', 0 +0538: 64 69 73 6B 46 53 20 6D 61 63 72 6F 73 +0545: 00 +0546: 20 20 20 20 20 20 20 2D 4B 62 20 61 76 free_memory_msg db ' -Kb availability system free memory', 0 +0553: 61 69 6C 61 62 69 6C 69 74 79 20 73 79 +0560: 73 74 65 6D 20 66 72 65 65 20 6D 65 6D +056D: 6F 72 79 00 +0571: 20 20 20 20 20 20 20 2D 4B 62 20 65 71 RamdiskSize_msg db ' -Kb equal RamdiskSize', 0 +057E: 75 61 6C 20 52 61 6D 64 69 73 6B 53 69 +058B: 7A 65 00 +058E: 20 20 20 20 20 20 20 20 2D 62 79 74 73 RamdiskSector_msg db ' -byts RamdiskSector', 0 +059B: 20 52 61 6D 64 69 73 6B 53 65 63 74 6F +05A8: 72 00 +05AA: 20 20 20 20 20 20 20 2D 52 61 6D 64 69 RamdiskCluster_msg db ' -RamdiskCluster', 0 +05B7: 73 6B 43 6C 75 73 74 65 72 00 +05C1: 20 20 20 20 20 20 20 2D 73 69 7A 65 20 RamdiskFile_msg db ' -size RamdiskFile', 0 +05CE: 52 61 6D 64 69 73 6B 46 69 6C 65 00 +05DA: 20 20 20 20 20 20 20 2D 66 69 72 73 74 fat_create_msg db ' -first create fat table, point to next block', 0 +05E7: 20 63 72 65 61 74 65 20 66 61 74 20 74 +05F4: 61 62 6C 65 2C 20 70 6F 69 6E 74 20 74 +0601: 6F 20 6E 65 78 74 20 62 6C 6F 63 6B 00 +060E: 20 20 20 20 20 20 20 2D 69 6E 20 62 79 BPB_msg db ' -in byte, why we get data from move BPB struct', 0 +061B: 74 65 2C 20 77 68 79 20 77 65 20 67 65 +0628: 74 20 64 61 74 61 20 66 72 6F 6D 20 6D +0635: 6F 76 65 20 42 50 42 20 73 74 72 75 63 +0642: 74 00 +0644: 20 20 20 20 20 20 20 2D 66 69 72 73 74 firstDataSect_msg db ' -first data sector, offset to data in sectors', 0 +0651: 20 64 61 74 61 20 73 65 63 74 6F 72 2C +065E: 20 6F 66 66 73 65 74 20 74 6F 20 64 61 +066B: 74 61 20 69 6E 20 73 65 63 74 6F 72 73 +0678: 00 +0679: 20 20 20 20 20 20 20 2D 73 69 7A 65 20 size_root_dir_msg db ' -size root dir in sectrors', 0 +0686: 72 6F 6F 74 20 64 69 72 20 69 6E 20 73 +0693: 65 63 74 72 6F 72 73 00 +069B: 20 20 20 20 20 20 20 2D 73 69 7A 65 20 DataClasters_msg db ' -size data in Clasters', 0 +06A8: 64 61 74 61 20 69 6E 20 43 6C 61 73 74 +06B5: 65 72 73 00 +06B9: 20 20 20 20 20 20 20 2D 69 66 20 2D 31 check_name_fat_msg db ' -if -1 name is present, else 0 then not present name', 0 +06C6: 20 6E 61 6D 65 20 69 73 20 70 72 65 73 +06D3: 65 6E 74 2C 20 65 6C 73 65 20 30 20 74 +06E0: 68 65 6E 20 6E 6F 74 20 70 72 65 73 65 +06ED: 6E 74 20 6E 61 6D 65 00 +06F5: 20 20 20 20 20 20 20 2D 69 66 20 2D 31 convertion_file_name_msg db ' -if -1, then destination name is bad', 0 +0702: 2C 20 74 68 65 6E 20 64 65 73 74 69 6E +070F: 61 74 69 6F 6E 20 6E 61 6D 65 20 69 73 +071C: 20 62 61 64 00 +0721: 2D 4D 61 6B 65 20 46 41 54 31 32 20 52 make_fat12_RFS_msg db '-Make FAT12 Ram FS', 0 +072E: 61 6D 20 46 53 00 +0734: 2D 45 6E 64 20 6D 61 6B 65 20 52 61 6D get_type_FS_msg db '-End make RamDisk', 0 +0741: 44 69 73 6B 00 +0746: 20 20 20 20 2D 72 65 74 75 72 6E 20 63 return_code_af_move db ' -return code after 0x87 int 0x15, move block', 0 +0753: 6F 64 65 20 61 66 74 65 72 20 30 78 38 +0760: 37 20 69 6E 74 20 30 78 31 35 2C 20 6D +076D: 6F 76 65 20 62 6C 6F 63 6B 00 +0777: 20 20 20 20 2D 72 65 74 75 72 6E 20 63 return_code_af_fat_m db ' -return code after 0x87 int 0x15, move fat struc', 0 +0784: 6F 64 65 20 61 66 74 65 72 20 30 78 38 +0791: 37 20 69 6E 74 20 30 78 31 35 2C 20 6D +079E: 6F 76 65 20 66 61 74 20 73 74 72 75 63 +07AB: 00 +07AC: 5B 6C 6F 61 64 65 72 5D parse_loader db '[loader]' +07B4: 74 69 6D 65 6F 75 74 parse_l_timeout db 'timeout' +07BB: 64 65 66 61 75 6C 74 parse_l_default db 'default' +07C2: 61 6D 65 parse_name db 'ame' +07C5: 64 65 73 63 72 69 70 74 parse_descript db 'descript' +07CD: 4C 6F 61 64 65 72 4D 6F 64 75 6C 65 parse_LoaderModule db 'LoaderModule' +07D9: 52 61 6D 64 69 73 6B 53 69 7A 65 parse_RamdiskSize db 'RamdiskSize' +07E4: 52 61 6D 64 69 73 6B 46 53 parse_RamdiskFS db 'RamdiskFS' +07ED: 52 61 6D 64 69 73 6B 53 65 63 74 6F 72 parse_RamdiskSector db 'RamdiskSector' +07FA: 52 61 6D 64 69 73 6B 43 6C 75 73 74 65 parse_RamdiskCluster db 'RamdiskCluster' +0807: 72 +0808: 46 41 54 parse_RFS_FAT db 'FAT' +080B: 4B 52 46 53 parse_RFS_KRFS db 'KRFS' +080F: 4C 6F 61 64 65 72 49 6D 61 67 65 parse_Loader_Image db 'LoaderImage' +081A: 52 61 6D 64 69 73 6B 46 69 6C 65 parse_RamdiskFile db 'RamdiskFile' +0825: 66 39 C8 cmp eax, ecx +0828: 72 0D jb @f +082A: 66 31 D2 xor edx, edx +082D: 66 F7 F1 div ecx +0830: 66 52 push edx +0832: E8 F0 FF call decode +0835: 66 58 pop eax +0837: 0C 30 or al, 0x30 +0839: 88 05 mov [ ds : di ], al +083B: 47 inc di +083C: C3 ret +083D: B4 0E mov ah, 0Eh +083F: B7 00 mov bh, 0 +0841: CD 10 int 10h +0843: C3 ret +0844: 60 pusha +0845: AC lodsb +0846: E8 F4 FF call putchar +0849: AC lodsb +084A: 3C 00 cmp al, 0 +084C: 75 F8 jnz @b +084E: B0 0D mov al, 13 +0850: E8 EA FF call putchar +0853: B0 0A mov al, 10 +0855: E8 E5 FF call putchar +0858: 61 popa +0859: C3 ret +085A: B4 00 mov ah, 0 +085C: CD 16 int 16h +085E: 38 D8 cmp al, bl +0860: 72 F8 jb getkey +0862: 38 F8 cmp al, bh +0864: 77 F4 ja getkey +0866: 50 push ax +0867: E8 D3 FF call putchar +086A: 58 pop ax +086B: 83 E0 0F and ax, 0Fh +086E: 75 02 jnz @f +0870: B0 0A mov al, 10 +0872: C3 ret +0873: 26 8A 05 mov al, byte [ es : di ] +0876: 47 inc di +0877: 49 dec cx +0878: E3 20 jcxz .exit +087A: 3C 0A cmp al, 0xa +087C: 74 0A jz ._entry +087E: 3C 3B cmp al, ';' +0880: 75 F1 jnz .start +0882: B0 0A mov al, 0xa +0884: F2 repnz +0885: AE scasb +0886: E3 12 jcxz .exit +0888: 26 8A 05 mov al, byte [ es : di ] +088B: 3C 20 cmp al, ' ' +088D: 75 07 jnz .not_space +088F: F3 repe +0890: AE scasb +0891: 4F dec di +0892: 41 inc cx +0893: 26 8A 05 mov al, byte [ es : di ] +0896: 3C 3B cmp al, ';' +0898: 74 E8 jz .first_com +089A: C3 ret +089B: 56 push si +089C: 68 00 20 push ini_data_ +089F: 07 pop es +08A0: B0 5D mov al, ']' +08A2: F2 repnz +08A3: AE scasb +08A4: 85 C9 test cx, cx +08A6: 0F 84 0F 02 jz error.incorect_section_def +08AA: B0 6E mov al, 'n' +08AC: F2 repnz +08AD: AE scasb +08AE: E3 69 jcxz .not_name_sec_fb +08B0: BE C2 07 mov si, parse_name +08B3: 51 push cx +08B4: 57 push di +08B5: B9 03 00 mov cx, parse_name_e - parse_name +08B8: F3 repe +08B9: A6 cmpsb +08BA: 5F pop di +08BB: 59 pop cx +08BC: 74 02 jz .yaaa_find_value +08BE: EB EC jmp .find_val_name_fb +08C0: 83 E9 03 sub cx, parse_name_e - parse_name +08C3: 83 C7 03 add di, parse_name_e - parse_name +08C6: B8 20 3D mov ax, 0x3d20 +08C9: F3 repe +08CA: AE scasb +08CB: 85 C9 test cx, cx +08CD: 74 4A jz .not_name_sec_fb +08CF: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +08D3: 75 D5 jnz .find_val_name_fb1 +08D5: F3 repe +08D6: AE scasb +08D7: 41 inc cx +08D8: 4F dec di +08D9: 06 push es +08DA: 1F pop ds +08DB: 68 00 B8 push 0xb800 +08DE: 07 pop es +08DF: 31 C0 xor ax, ax +08E1: B8 20 07 mov ax, 0x0720 +08E4: B9 27 00 mov cx, 39 +08E7: 89 FE mov si, di +08E9: 89 D7 mov di, dx +08EB: 83 EF 02 sub di, 2 +08EE: F3 rep +08EF: AB stosw +08F0: 89 D7 mov di, dx +08F2: B4 0F mov ah, color_sym_white +08F4: B9 24 00 mov cx, 36 +08F7: AC lodsb +08F8: 83 EF 02 sub di, 2 +08FB: 3C 22 cmp al, '"' +08FD: 74 04 jz @f +08FF: 3C 27 cmp al, ''' +0901: 75 12 jnz .end_sh_name_sec +0903: AC lodsb +0904: AB stosw +0905: AC lodsb +0906: 3C 22 cmp al, '"' +0908: 74 0B jz .end_sh_name_sec +090A: 3C 27 cmp al, ''' +090C: 74 07 jz .end_sh_name_sec +090E: E2 F4 loop @b +0910: B0 7D mov al, '}' +0912: B4 0E mov ah, color_sym_yellow +0914: AB stosw +0915: 0E push cs +0916: 1F pop ds +0917: 5E pop si +0918: C3 ret +0919: 0E push cs +091A: 1F pop ds +091B: BF 1E 03 mov di, default_section_name +091E: EB BB jmp .def_sect_name +0920: 8B 7E F4 mov di, point_default +0923: 68 00 20 push ini_data_ +0926: 07 pop es +0927: 89 F9 mov cx, di +0929: 89 CB mov bx, cx +092B: FD std +092C: B0 0A mov al, 0xa +092E: F2 repnz +092F: AE scasb +0930: E3 25 jcxz .go_ +0932: 89 7E C6 mov find_sec_di, di +0935: 89 F9 mov cx, di +0937: 29 CB sub bx, cx +0939: 89 D9 mov cx, bx +093B: FC cld +093C: E8 34 FF call get_firs_sym +093F: E3 0D jcxz ._not_section +0941: 3B 7E F6 cmp di, point_loader +0944: 74 08 jz ._not_section +0946: 3C 5B cmp al, '[' +0948: 75 04 jnz ._not_section +094A: 89 7E F4 mov point_default, di +094D: C3 ret +094E: 8B 7E C6 mov di, find_sec_di +0951: 89 F9 mov cx, di +0953: 89 CB mov bx, cx +0955: EB D4 jmp .find_start_section +0957: FC cld +0958: 89 D9 mov cx, bx +095A: 26 8A 05 mov al, byte [ es : di ] +095D: 68 6A 09 push word .f_go +0960: 3C 20 cmp al, ' ' +0962: 74 03 jz @f +0964: E9 2F FF jmp get_firs_sym.not_space +0967: E9 21 FF jmp get_firs_sym.first_sp +096A: E3 E1 jcxz .exit_scan_sect +096C: 3B 7E F6 cmp di, point_loader +096F: 74 DC jz .exit_scan_sect +0971: 3C 5B cmp al, '[' +0973: 75 D8 jnz .exit_scan_sect +0975: 89 7E F4 mov point_default, di +0978: C3 ret +0979: 8B 7E F4 mov di, point_default +097C: 68 00 20 push ini_data_ +097F: 07 pop es +0980: 8B 4E FE mov cx, save_cx +0983: 29 F9 sub cx, di +0985: EB 17 jmp .let_s_go +0987: 68 00 20 push ini_data_ +098A: 07 pop es +098B: 8B 4E FE mov cx, save_cx +098E: 26 8A 05 mov al, byte [ es : di ] +0991: 68 A1 09 push word .let_s_go_ret +0994: 3C 20 cmp al, ' ' +0996: 74 03 jz @f +0998: E9 FB FE jmp get_firs_sym.not_space +099B: E9 ED FE jmp get_firs_sym.first_sp +099E: E8 D2 FE call get_firs_sym +09A1: E3 0C jcxz .exit_scan_sect +09A3: 3C 5B cmp al, '[' +09A5: 75 F7 jnz .let_s_go +09A7: 3B 7E F6 cmp di, point_loader +09AA: 74 F2 jz .let_s_go +09AC: 89 7E F4 mov point_default, di +09AF: C3 ret +09B0: 8D 76 F2 lea si, point_to_hframe +09B3: BF 22 03 mov di, 962 - 160 +09B6: 8B 56 F4 mov dx, point_default +09B9: B9 12 00 mov cx, 18 +09BC: 8B 1C mov bx, [ si ] +09BE: 81 C7 A0 00 add di, 160 +09C2: 39 D3 cmp bx, dx +09C4: 74 05 jz .clean_cursor_ +09C6: 83 EE 02 sub si, 2 +09C9: E2 F1 loop .clean_show_cur +09CB: 68 00 B8 push 0xb800 +09CE: 07 pop es +09CF: 50 push ax +09D0: 89 76 CA mov point_to_point_def, si +09D3: 31 C0 xor ax, ax +09D5: B8 20 07 mov ax, 0x0720 +09D8: AB stosw +09D9: 83 C7 44 add di, 68 +09DC: AB stosw +09DD: 58 pop ax +09DE: C3 ret +09DF: B4 00 mov ah, 0 +09E1: CD 1A int 1Ah +09E3: 91 xchg ax, cx +09E4: 66 C1 E0 10 shl eax, 10h +09E8: 92 xchg ax, dx +09E9: C3 ret +09EA: 1E push ds +09EB: 0E push cs +09EC: 1F pop ds +09ED: 9C pushf +09EE: FF 1E D4 1A call far dword [ old_timer ] +09F2: 66 60 pushad +09F4: E8 E8 FF call gettime +09F7: 66 2B 06 D8 1A sub eax, dword [ start_timer ] +09FC: 8B 1E D2 1A mov bx, word [ value_timeout ] +0A00: 6B DB 12 imul bx, 18 +0A03: 29 C3 sub bx, ax +0A05: 76 1F jbe .timergo +0A07: 06 push es +0A08: 68 00 B8 push 0xb800 +0A0B: 07 pop es +0A0C: 89 D8 mov ax, bx +0A0E: BB 12 00 mov bx, 18 +0A11: 31 D2 xor dx, dx +0A13: F7 F3 div bx +0A15: BB 0A 00 mov bx, 10 +0A18: BF 96 0E mov di, 3734 +0A1B: E8 24 00 call .decode +0A1E: 31 C0 xor ax, ax +0A20: AB stosw +0A21: 07 pop es +0A22: 66 61 popad +0A24: 1F pop ds +0A25: CF iret +0A26: 6A 00 push 0 +0A28: 07 pop es +0A29: 66 A1 D4 1A mov eax, dword [ old_timer ] +0A2D: 26 66 A3 20 00 mov [ es : 8 * 4 ], eax +0A32: 66 A3 DC 1A mov dword [ timer_ ], eax +0A36: 8B 26 E0 1A mov sp, word [ start_stack ] +0A3A: 8B 2E E2 1A mov bp, word [ save_bp_from_timer ] +0A3E: FB sti +0A3F: E9 D8 06 jmp parse_start.parse_run_only +0A42: 39 D8 cmp ax, bx +0A44: 72 09 jb @f +0A46: 31 D2 xor dx, dx +0A48: F7 F3 div bx +0A4A: 52 push dx +0A4B: E8 F4 FF call .decode +0A4E: 58 pop ax +0A4F: 0C 30 or al, 0x30 +0A51: 50 push ax +0A52: B4 09 mov ah, 9 +0A54: AB stosw +0A55: 58 pop ax +0A56: C3 ret +0A57: 8B 5E C8 mov bx, point_to_eframe +0A5A: 8D 76 F2 lea si, point_to_hframe +0A5D: BA C6 03 mov dx, 966 +0A60: 39 DE cmp si, bx +0A62: 72 12 jb ._show_space_fb +0A64: 8B 3C mov di, [ si ] +0A66: 83 EE 02 sub si, 2 +0A69: 8B 0C mov cx, [ si ] +0A6B: 29 F9 sub cx, di +0A6D: E8 2B FE call show_name_section +0A70: 81 C2 A0 00 add dx, 160 +0A74: EB EA jmp .home_show_fb +0A76: 83 EA 04 sub dx, 4 +0A79: 68 00 B8 push 0xb800 +0A7C: 07 pop es +0A7D: 81 FA 64 0E cmp dx, 0xE64 +0A81: 77 12 ja .exit_show_fb +0A83: 89 D7 mov di, dx +0A85: 31 C0 xor ax, ax +0A87: B8 20 07 mov ax, 0x0720 +0A8A: B9 27 00 mov cx, 39 +0A8D: F3 rep +0A8E: AB stosw +0A8F: 81 C2 A0 00 add dx, 160 +0A93: EB E8 jmp @b +0A95: C3 ret +0A96: 89 C7 mov di, ax +0A98: 89 D9 mov cx, bx +0A9A: FF 66 FC jmp ret_on_ch +0A9D: C9 leave +0A9E: BE 1A 01 mov si, not_found_def_sect +0AA1: E9 F4 00 jmp err_show_ini +0AA4: C9 leave +0AA5: BE FE 00 mov si, not_found_sec_loader +0AA8: E9 ED 00 jmp err_show_ini +0AAB: C9 leave +0AAC: BE 47 01 mov si, default_eq_loader +0AAF: E9 E6 00 jmp err_show_ini +0AB2: C9 leave +0AB3: BE C4 02 mov si, point_to_default_sec_not_found +0AB6: E9 DF 00 jmp err_show_ini +0AB9: C9 leave +0ABA: BE F7 02 mov si, incorect_section_define +0ABD: E9 D8 00 jmp err_show_ini +0AC0: 68 00 B8 push word 0xb800 +0AC3: 07 pop es +0AC4: C3 ret +0AC5: 00 00 00 20 file_data dw 0x0, ini_data_ +0AC9: 10 00 size_data dw 16 +0ACB: 6B 6F 72 64 2F 73 74 61 72 74 6F 73 2E name_ini_f db 'kord/startos.ini', 0 +0AD8: 69 6E 69 00 +0ADC: 00 00 00 00 loader_callback dd ? +0AE0: 00 00 load_drive dw ? +0AE2: 00 00 load_ft dw ? +0AE4: 2E 89 36 DC 0A mov word [ cs : loader_callback ], si +0AE9: 2E 8C 1E DE 0A mov word [ cs : loader_callback + 2 ], ds +0AEE: 2E A3 E0 0A mov word [ cs : load_drive ], ax +0AF2: 2E 89 1E E2 0A mov word [ cs : load_ft ], bx +0AF7: 8C C8 mov ax, cs +0AF9: 8E D0 mov ss, ax +0AFB: 31 E4 xor sp, sp +0AFD: 8E D8 mov ds, ax +0AFF: 8E C0 mov es, ax +0B01: FC cld +0B02: FB sti +0B03: B8 03 00 mov ax, 3 +0B06: CD 10 int 0x10 +0B08: BE 03 00 mov si, version +0B0B: E8 36 FD call printplain +0B0E: B0 23 mov al, '#' +0B10: B9 50 00 mov cx, 80 +0B13: E8 27 FD call putchar +0B16: E2 FB loop @b +0B18: BE C8 03 mov si, stack_msg +0B1B: E8 26 FD call printplain +0B1E: 31 DB xor bx, bx +0B20: 8E DB mov ds, bx +0B22: FF 77 1A push word [ bx + 6 * 4 + 2 ] +0B25: FF 77 18 push word [ bx + 6 * 4 ] +0B28: C7 47 18 4A 0B mov word [ bx + 6 * 4 ], ud16 +0B2D: 8C 4F 1A mov word [ bx + 6 * 4 + 2 ], cs +0B30: 66 31 C0 xor eax, eax +0B33: 0F A2 cpuid +0B35: 66 85 C0 test eax, eax +0B38: 74 10 jz cpubad +0B3A: 66 31 C0 xor eax, eax +0B3D: 40 inc ax +0B3E: 0F A2 cpuid +0B40: F6 C2 10 test dl, 10h +0B43: 74 05 jz cpubad +0B45: F6 C2 20 test dl, 20h +0B48: 75 12 jnz cpugood +0B4A: 8F 06 18 00 pop word [ 6 * 4 ] +0B4E: 8F 06 1A 00 pop word [ 6 * 4 + 2 ] +0B52: 0E push cs +0B53: 1F pop ds +0B54: BE 4C 00 mov si, badprocessor +0B57: E8 EA FC call printplain +0B5A: EB FE jmp $ +0B5C: 66 8F 06 18 00 pop dword [ 6 * 4 ] +0B61: 0E push cs +0B62: 1F pop ds +0B63: 66 0F B7 E4 movzx esp, sp +0B67: B9 03 00 mov cx, loop_read_startos_file +0B6C: 31 C0 xor ax, ax +0B6E: BF C5 0A mov di, file_data +0B71: 40 inc ax +0B72: 51 push cx +0B73: FF 1E DC 0A call far dword [ loader_callback ] +0B77: 59 pop cx +0B78: 0E push cs +0B79: 0E push cs +0B7A: 1F pop ds +0B7B: 07 pop es +0B7C: 85 DB test bx, bx +0B7E: 74 28 jz check_conf_file +0B80: 49 dec cx +0B81: 75 E9 jnz load_startos_file +0B83: BE 68 00 mov si, error_ini_f1 +0B86: 4B dec bx +0B87: 74 0F jz err_show_ini +0B89: BE 95 00 mov si, error_ini_f2 +0B8C: 4B dec bx +0B8D: 74 09 jz err_show_ini +0B8F: BE B0 00 mov si, error_ini_f3 +0B92: 4B dec bx +0B93: 74 03 jz err_show_ini +0B95: BE CD 00 mov si, error_ini_nf +0B98: E8 A9 FC call printplain +0B9B: BE 26 02 mov si, error_ini_common +0B9E: E8 A3 FC call printplain +0BA1: 31 C0 xor ax, ax +0BA3: CD 16 int 16h +0BA5: EB FE jmp $ +0BA8: 50 push ax +0BA9: B9 0A 00 mov cx, 0x0a +0BAC: BF 00 04 mov di, show_decode +0BAF: E8 73 FC call decode +0BB2: BE EF 03 mov si, show_string +0BB5: E8 8C FC call printplain +0BB8: BE 90 02 mov si, load_ini +0BBB: E8 86 FC call printplain +0BBE: 59 pop cx +0BBF: C8 00 01 00 enter 256, 0 +0BC3: 89 2E E2 1A mov word [ save_bp_from_timer ], bp +0BC7: 89 4E FE mov save_cx, cx +0BCA: C4 3E C5 0A les di, dword [ file_data ] +0BCE: 31 C0 xor ax, ax +0BD0: 89 46 F8 mov status_flag, ax +0BD3: C7 46 C4 00 30 mov info_real_mode_size, ini_data_ + 0x1000 +0BD8: FC cld +0BD9: C7 46 FC EE 0B mov ret_on_ch, .start +0BDE: 26 8A 05 mov al, byte [ es : di ] +0BE1: 68 F1 0B push word .first_ret +0BE4: 3C 20 cmp al, ' ' +0BE6: 74 03 jz .first_sp_1 +0BE8: E9 AB FC jmp get_firs_sym.not_space +0BEB: E9 9D FC jmp get_firs_sym.first_sp +0BEE: E8 82 FC call get_firs_sym +0BF1: 85 C9 test cx, cx +0BF3: 0F 84 AD FE jz error.not_loader +0BF7: 3C 5B cmp al, '[' +0BF9: 74 02 jz .parse_loader +0BFB: EB F1 jmp .start +0BFD: 89 CB mov bx, cx +0BFF: 89 F8 mov ax, di +0C01: BE AC 07 mov si, parse_loader +0C04: B9 08 00 mov cx, parse_loader_e - parse_loader +0C07: F3 repe +0C08: A6 cmpsb +0C09: 0F 85 89 FE jnz error.rest_value +0C0D: 89 46 F6 mov point_loader, ax +0C10: 83 EB 08 sub bx, parse_loader_e - parse_loader +0C13: 01 CB add bx, cx +0C15: 89 D9 mov cx, bx +0C17: 60 pusha +0C18: BE 35 04 mov si, lm_l_found +0C1B: E8 26 FC call printplain +0C1E: 61 popa +0C1F: 89 FA mov dx, di +0C21: E8 4F FC call get_firs_sym +0C24: E3 04 jcxz .loader_f_end +0C26: 3C 5B cmp al, '[' +0C28: 75 F7 jnz @b +0C2A: 29 CB sub bx, cx +0C2C: 89 D7 mov di, dx +0C2E: 89 D9 mov cx, bx +0C30: C7 46 FC 35 0C mov ret_on_ch, .get_next_str +0C35: E8 3B FC call get_firs_sym +0C38: 85 C9 test cx, cx +0C3A: 0F 84 57 01 jz .end_loader +0C3E: 3C 74 cmp al, 't' +0C40: 0F 84 DE 00 jz .loader_timeout +0C44: 3C 64 cmp al, 'd' +0C46: 75 ED jnz .get_next_str +0C48: 89 CB mov bx, cx +0C4A: 89 F8 mov ax, di +0C4C: BE BB 07 mov si, parse_l_default +0C4F: B9 07 00 mov cx, parse_l_default_e - parse_l_default +0C52: F3 repe +0C53: A6 cmpsb +0C54: 0F 85 3E FE jnz error.rest_value +0C58: 83 EB 07 sub bx, parse_l_default_e - parse_l_default +0C5B: 01 CB add bx, cx +0C5D: 89 D9 mov cx, bx +0C5F: F7 46 F8 01 00 test status_flag, flag_found_default +0C64: 74 08 jz .correct_is_not_set +0C66: BE 7A 01 mov si, found_equal_default +0C69: E8 D8 FB call printplain +0C6C: EB C7 jmp .get_next_str +0C6E: B8 20 3D mov ax, 0x3d20 +0C71: F3 repe +0C72: AE scasb +0C73: 85 C9 test cx, cx +0C75: 0F 84 1C 01 jz .end_loader +0C79: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +0C7D: 75 B6 jnz .get_next_str +0C7F: F3 repe +0C80: AE scasb +0C81: 41 inc cx +0C82: 4F dec di +0C83: 89 CB mov bx, cx +0C85: 89 FA mov dx, di +0C87: 26 8A 05 mov al, byte [ es : di ] +0C8A: 47 inc di +0C8B: 49 dec cx +0C8C: 85 C9 test cx, cx +0C8E: 0F 84 0B FE jz error.error_get_size_d_sect +0C92: 3C 20 cmp al, ' ' +0C94: 74 F1 jz @b +0C96: 3C 0D cmp al, 0xd +0C98: 74 04 jz .found_size_d_sect +0C9A: 3C 0A cmp al, 0xa +0C9C: 75 E9 jnz @b +0C9E: 41 inc cx +0C9F: 89 D8 mov ax, bx +0CA1: 29 CB sub bx, cx +0CA3: 89 5E FA mov save_cx_d, bx +0CA6: 89 D7 mov di, dx +0CA8: 89 D9 mov cx, bx +0CAA: 89 C3 mov bx, ax +0CAC: 89 D0 mov ax, dx +0CAE: BE AC 07 mov si, parse_loader +0CB1: 46 inc si +0CB2: F3 repe +0CB3: A6 cmpsb +0CB4: 75 03 jnz .check_section +0CB6: E9 F2 FD jmp error.default_eq_loader +0CB9: 89 D9 mov cx, bx +0CBB: 89 C7 mov di, ax +0CBD: 89 FE mov si, di +0CBF: 57 push di +0CC0: 51 push cx +0CC1: 8B 4E FE mov cx, save_cx +0CC4: C4 3E C5 0A les di, dword [ file_data ] +0CC8: 26 8A 05 mov al, byte [ es : di ] +0CCB: 68 DB 0C push word .first_ret_d +0CCE: 3C 20 cmp al, ' ' +0CD0: 74 03 jz .first_sp_1_d +0CD2: E9 C1 FB jmp get_firs_sym.not_space +0CD5: E9 B3 FB jmp get_firs_sym.first_sp +0CD8: E8 98 FB call get_firs_sym +0CDB: E3 38 jcxz .correct_exit +0CDD: 3C 5B cmp al, '[' +0CDF: 74 02 jz .found_sect_d +0CE1: EB F5 jmp .start_d +0CE3: 89 CB mov bx, cx +0CE5: 89 F8 mov ax, di +0CE7: 56 push si +0CE8: 8B 4E FA mov cx, save_cx_d +0CEB: 06 push es +0CEC: 1F pop ds +0CED: 47 inc di +0CEE: F3 repe +0CEF: A6 cmpsb +0CF0: 0E push cs +0CF1: 1F pop ds +0CF2: 5E pop si +0CF3: 75 1A jnz .not_compare_d_s +0CF5: 26 80 3D 5D cmp byte [ es : di ], ']' +0CF9: 75 14 jnz .not_compare_d_s +0CFB: 83 4E F8 01 or status_flag, flag_found_default +0CFF: 59 pop cx +0D00: 5F pop di +0D01: 89 46 F4 mov point_default, ax +0D04: 60 pusha +0D05: BE 96 04 mov si, lm_lf_default_f +0D08: E8 39 FB call printplain +0D0B: 61 popa +0D0C: E9 26 FF jmp .get_next_str +0D0F: 89 D9 mov cx, bx +0D11: 89 C7 mov di, ax +0D13: EB C3 jmp .start_d +0D15: 59 pop cx +0D16: 5F pop di +0D17: 60 pusha +0D18: BE 58 04 mov si, lm_lf_default +0D1B: E8 26 FB call printplain +0D1E: 61 popa +0D1F: E9 13 FF jmp .get_next_str +0D22: 89 CB mov bx, cx +0D24: 89 F8 mov ax, di +0D26: BE B4 07 mov si, parse_l_timeout +0D29: B9 07 00 mov cx, parse_l_timeout_e - parse_l_timeout +0D2C: F3 repe +0D2D: A6 cmpsb +0D2E: 0F 85 64 FD jnz error.rest_value +0D32: 83 EB 07 sub bx, parse_l_timeout_e - parse_l_timeout +0D35: 01 CB add bx, cx +0D37: 89 D9 mov cx, bx +0D39: F7 46 F8 02 00 test status_flag, flag_found_timeout +0D3E: 74 09 jz .correct_is_not_set_t +0D40: BE B0 01 mov si, found_equal_timeout +0D43: E8 FE FA call printplain +0D46: E9 EC FE jmp .get_next_str +0D49: B8 20 3D mov ax, 0x3d20 +0D4C: F3 repe +0D4D: AE scasb +0D4E: E3 35 jcxz .timeout_sec_end_d +0D50: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +0D54: 0F 85 DD FE jnz .get_next_str +0D58: F3 repe +0D59: AE scasb +0D5A: 41 inc cx +0D5B: 4F dec di +0D5C: 51 push cx +0D5D: 31 DB xor bx, bx +0D5F: B9 02 00 mov cx, 2 +0D62: 26 8A 05 mov al, byte [ es : di ] +0D65: 3C 30 cmp al, '0' +0D67: 72 0B jb .end_get_val_t +0D69: 3C 39 cmp al, '9' +0D6B: 77 07 ja .end_get_val_t +0D6D: 6B DB 0A imul bx, 10 +0D70: 34 30 xor al, 0x30 +0D72: 00 C3 add bl, al +0D74: 47 inc di +0D75: E2 EB loop @b +0D77: 89 1E D2 1A mov word [ value_timeout ], bx +0D7B: 60 pusha +0D7C: BE 47 04 mov si, lm_lf_timeout +0D7F: E8 C2 FA call printplain +0D82: 61 popa +0D83: EB 0C jmp @f +0D85: C7 06 D2 1A 05 00 mov word [ value_timeout ], default_timeout_value +0D8B: BE E6 01 mov si, set_default_timeout_val +0D8E: E8 B3 FA call printplain +0D91: 59 pop cx +0D92: E9 A0 FE jmp .get_next_str +0D95: 60 pusha +0D96: BE AD 04 mov si, lm_l_end +0D99: E8 A8 FA call printplain +0D9C: 61 popa +0D9D: 31 C0 xor ax, ax +0D9F: CD 16 int 16h +0DA1: 60 pusha +0DA2: A1 D2 1A mov ax, word [ value_timeout ] +0DA5: B9 0A 00 mov cx, 0x0a +0DA8: BF 07 04 mov di, show_db1 +0DAB: 66 C7 05 20 20 20 20 mov dword [ ds : di ], ' ' +0DB2: C7 45 04 20 20 mov word [ ds : di + 4 ], ' ' +0DB7: E8 6B FA call decode +0DBA: BE 07 04 mov si, show_db1 +0DBD: E8 84 FA call printplain +0DC0: 61 popa +0DC1: 85 C0 test ax, ax +0DC3: 0F 84 53 03 jz .parse_run_only +0DC7: 60 pusha +0DC8: BE C5 04 mov si, show_all_sect +0DCB: E8 76 FA call printplain +0DCE: 61 popa +0DCF: B0 F6 mov al, 0xf6 +0DD1: E6 60 out 0x60, al +0DD3: 31 C9 xor cx, cx +0DD5: E4 64 in al, 64h +0DD7: 24 02 and al, 00000010b +0DD9: E0 FA loopnz .wait_loop +0DDB: B0 F3 mov al, 0xf3 +0DDD: E6 60 out 0x60, al +0DDF: 31 C9 xor cx, cx +0DE1: E4 64 in al, 64h +0DE3: A8 02 test al, 2 +0DE5: E0 FA loopnz @b +0DE7: B0 00 mov al, 0 +0DE9: E6 60 out 0x60, al +0DEB: 31 C9 xor cx, cx +0DED: E4 64 in al, 64h +0DEF: A8 02 test al, 2 +0DF1: E0 FA loopnz @b +0DF3: E8 E9 FB call gettime +0DF6: 66 A3 D8 1A mov dword [ start_timer ], eax +0DFA: C7 06 DC 1A EA 09 mov word [ timer_ ], newtimer +0E00: 8C 0E DE 1A mov word [ timer_ + 2 ], cs +0E04: FA cli +0E05: 6A 00 push 0 +0E07: 07 pop es +0E08: 26 66 FF 36 20 00 push dword [ es : 8 * 4 ] +0E0E: 66 8F 06 D4 1A pop dword [ old_timer ] +0E13: 66 FF 36 DC 1A push dword [ timer_ ] +0E18: 26 66 8F 06 20 00 pop dword [ es : 8 * 4 ] +0E1E: FB sti +0E1F: C7 46 BE 12 00 mov save_descript_size, 18 +0E24: 31 C0 xor ax, ax +0E26: B8 20 07 mov ax, 0x0720 +0E29: 68 00 B8 push 0xb800 +0E2C: 07 pop es +0E2D: 31 FF xor di, di +0E2F: B9 D0 07 mov cx, 25 * 80 +0E32: F3 rep +0E33: AB stosw +0E34: BF A4 00 mov di, 164 +0E37: BE 03 00 mov si, version +0E3A: B9 19 00 mov cx, version_end - version +0E3D: B4 0E mov ah, color_sym_yellow +0E3F: AC lodsb +0E40: AB stosw +0E41: E2 FC loop @b +0E43: BF 1E 01 mov di, 286 +0E46: B4 0C mov ah, color_sym_pink +0E48: B0 4B mov al, 'K' +0E4A: AB stosw +0E4B: B0 20 mov al, ' ' +0E4D: AB stosw +0E4E: B4 07 mov ah, color_sym_lightgray +0E50: BE 3F 00 mov si, soft_mes +0E53: B9 0D 00 mov cx, soft_mes_end - soft_mes +0E56: AC lodsb +0E57: AB stosw +0E58: E2 FC loop @b +0E5A: BF E0 01 mov di, 480 +0E5D: B4 0E mov ah, color_sym_yellow +0E5F: B0 C4 mov al, 'Д' +0E61: B9 3D 00 mov cx, 61 +0E64: F3 rep +0E65: AB stosw +0E66: BF 24 03 mov di, 804 +0E69: BE 1C 00 mov si, select_section +0E6C: B9 0F 00 mov cx, select_section_end - select_section +0E6F: B4 07 mov ah, color_sym_lightgray +0E71: AC lodsb +0E72: AB stosw +0E73: E2 FC loop @b +0E75: BF 70 03 mov di, 880 +0E78: BE 2B 00 mov si, section_description +0E7B: B9 14 00 mov cx, section_description_end - section_description +0E7E: AC lodsb +0E7F: AB stosw +0E80: E2 FC loop @b +0E82: 8B 4E FE mov cx, save_cx +0E85: C4 3E C5 0A les di, dword [ file_data ] +0E89: 89 FE mov si, di +0E8B: 89 CB mov bx, cx +0E8D: BA 12 00 mov dx, size_show_section +0E90: 26 8A 05 mov al, byte [ es : di ] +0E93: 68 B9 0E push word .first_ret_bl_sc +0E96: 3C 20 cmp al, ' ' +0E98: 74 03 jz .first_bl_sc +0E9A: E9 F9 F9 jmp get_firs_sym.not_space +0E9D: E9 EB F9 jmp get_firs_sym.first_sp +0EA0: E8 D0 F9 call get_firs_sym +0EA3: 85 C9 test cx, cx +0EA5: 0F 84 09 FC jz error.correct_exit_bl +0EA9: 3C 5B cmp al, '[' +0EAB: 75 F3 jnz .start_hbl +0EAD: 89 FE mov si, di +0EAF: 89 CB mov bx, cx +0EB1: BA 12 00 mov dx, size_show_section +0EB4: EB 09 jmp .analisist_al +0EB6: E8 BA F9 call get_firs_sym +0EB9: 85 C9 test cx, cx +0EBB: 0F 84 F3 FB jz error.correct_exit_bl +0EBF: 3C 5B cmp al, '[' +0EC1: 75 F3 jnz .start_bl +0EC3: 3B 7E F6 cmp di, point_loader +0EC6: 74 EE jz .start_bl +0EC8: 3B 7E F4 cmp di, point_default +0ECB: 74 05 jz .save_point_def +0ECD: 4A dec dx +0ECE: 75 E6 jnz .start_bl +0ED0: EB CE jmp .start_hbl +0ED2: 89 F7 mov di, si +0ED4: 89 D9 mov cx, bx +0ED6: 8D 76 F2 lea si, point_to_hframe +0ED9: BA 13 00 mov dx, size_show_section + 1 +0EDC: 26 8A 05 mov al, byte [ es : di ] +0EDF: 68 EF 0E push word .first_ret_mfb +0EE2: 3C 20 cmp al, ' ' +0EE4: 74 03 jz .first_bl_mbf +0EE6: E9 AD F9 jmp get_firs_sym.not_space +0EE9: E9 9F F9 jmp get_firs_sym.first_sp +0EEC: E8 84 F9 call get_firs_sym +0EEF: E3 13 jcxz .val_buff_comp +0EF1: 3C 5B cmp al, '[' +0EF3: 75 F7 jnz .start_mfb +0EF5: 3B 7E F6 cmp di, point_loader +0EF8: 74 F2 jz .start_mfb +0EFA: 89 3C mov [ si ], di +0EFC: 83 EE 02 sub si, 2 +0EFF: 4A dec dx +0F00: 75 EA jnz .start_mfb +0F02: EB 08 jmp @f +0F04: FF 76 FE push save_cx +0F07: 8F 04 pop word [ si ] +0F09: 83 EE 02 sub si, 2 +0F0C: 83 C6 04 add si, 4 +0F0F: 89 76 C8 mov point_to_eframe, si +0F12: E8 42 FB call show_bl_sc_sect +0F15: 8D 76 F2 lea si, point_to_hframe +0F18: BF 22 03 mov di, 962 - 160 +0F1B: 8B 46 F4 mov ax, point_default +0F1E: B9 12 00 mov cx, size_show_section +0F21: 8B 1C mov bx, [ si ] +0F23: 81 C7 A0 00 add di, 160 +0F27: 39 C3 cmp bx, ax +0F29: 74 05 jz .show_cursor_activ +0F2B: 83 EE 02 sub si, 2 +0F2E: E2 F1 loop .home_show_cur +0F30: 89 76 CA mov point_to_point_def, si +0F33: B8 10 04 mov ax, ( color_sym_red * 0x100 + 0x10 ) +0F36: AB stosw +0F37: 83 C7 44 add di, 68 +0F3A: 40 inc ax +0F3B: AB stosw +0F3C: 8B 7E F4 mov di, point_default +0F3F: 68 00 20 push ini_data_ +0F42: 8B 76 CA mov si, point_to_point_def +0F45: 07 pop es +0F46: 83 EE 02 sub si, 2 +0F49: 8B 0C mov cx, [ si ] +0F4B: 29 F9 sub cx, di +0F4D: E8 23 F9 call get_firs_sym +0F50: 85 C9 test cx, cx +0F52: 0F 84 91 00 jz .exit?0Pz +0F56: 3C 64 cmp al, 'd' +0F58: 75 F3 jnz .start_p_sh_d?0Py +0F5A: 89 CB mov bx, cx +0F5C: 89 F8 mov ax, di +0F5E: BE C5 07 mov si, parse_descript +0F61: B9 08 00 mov cx, parse_descript_e - parse_descript +0F64: F3 repe +0F65: A6 cmpsb +0F66: 75 78 jnz .rest_value_loop_sh_d?0Q0 +0F68: 83 EB 08 sub bx, parse_descript_e - parse_descript +0F6B: 01 CB add bx, cx +0F6D: 89 D9 mov cx, bx +0F6F: B8 20 3D mov ax, 0x3d20 +0F72: F3 repe +0F73: AE scasb +0F74: E3 6A jcxz .rest_value_loop_sh_d?0Q0 +0F76: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +0F7A: 75 64 jnz .rest_value_loop_sh_d?0Q0 +0F7C: F3 repe +0F7D: AE scasb +0F7E: 41 inc cx +0F7F: 4F dec di +0F80: 57 push di +0F81: 5E pop si +0F82: 06 push es +0F83: 1F pop ds +0F84: 68 00 B8 push 0xb800 +0F87: 07 pop es +0F88: BF 10 04 mov di, 1040 +0F8B: BB 12 00 mov bx, 18 +0F8E: 89 7E C6 mov find_sec_di, di +0F91: 89 5E FA mov save_cx_d, bx +0F94: 57 push di +0F95: 31 C0 xor ax, ax +0F97: B9 26 00 mov cx, 38 +0F9A: 57 push di +0F9B: F3 rep +0F9C: AB stosw +0F9D: 5F pop di +0F9E: 39 5E BE cmp save_descript_size, bx +0FA1: 74 07 jz @f +0FA3: 81 C7 A0 00 add di, 160 +0FA7: 4B dec bx +0FA8: 75 ED jnz @b +0FAA: 5F pop di +0FAB: AC lodsb +0FAC: B4 0A mov ah, color_sym_lettuce +0FAE: 3C 22 cmp al, '"' +0FB0: 74 04 jz .loop_message?0Q2 +0FB2: 3C 27 cmp al, ''' +0FB4: 75 20 jnz .end_sh_desc_sec?0Q1 +0FB6: B9 26 00 mov cx, 38 +0FB9: AC lodsb +0FBA: 3C 22 cmp al, '"' +0FBC: 74 18 jz .end_sh_desc_sec?0Q1 +0FBE: 3C 27 cmp al, ''' +0FC0: 74 14 jz .end_sh_desc_sec?0Q1 +0FC2: AB stosw +0FC3: E2 F4 loop @b +0FC5: 81 46 C6 A0 00 add find_sec_di, 160 +0FCA: 8B 7E C6 mov di, find_sec_di +0FCD: FF 4E FA dec save_cx_d +0FD0: 83 7E FA 00 cmp save_cx_d, 0 +0FD4: 75 E0 jnz .loop_message?0Q2 +0FD6: FF 76 FA push save_cx_d +0FD9: 8F 46 BE pop save_descript_size +0FDC: 0E push cs +0FDD: 1F pop ds +0FDE: EB 07 jmp .exit?0Pz +0FE0: 89 C7 mov di, ax +0FE2: 89 D9 mov cx, bx +0FE4: E9 66 FF jmp .start_p_sh_d?0Py +0FE7: 66 A1 D4 1A mov eax, dword [ old_timer ] +0FEB: 66 3B 06 DC 1A cmp eax, dword [ timer_ ] +0FF0: 74 5E jz .interrupt_16 +0FF2: 31 C0 xor ax, ax +0FF4: BF 20 0D mov di, 3360 +0FF7: B9 40 01 mov cx, 80 * 4 +0FFA: F3 rep +0FFB: AB stosw +0FFC: BF 22 0D mov di, 3362 +0FFF: B4 0C mov ah, color_sym_pink +1001: B0 DA mov al, 0xDA +1003: AB stosw +1004: B0 C4 mov al, 0xc4 +1006: B9 4C 00 mov cx, 76 +1009: F3 rep +100A: AB stosw +100B: B0 BF mov al, 0xBF +100D: AB stosw +100E: 83 C7 04 add di, 4 +1011: B0 B3 mov al, 0xb3 +1013: AB stosw +1014: 81 C7 98 00 add di, 152 +1018: AB stosw +1019: 83 C7 04 add di, 4 +101C: AB stosw +101D: 81 C7 98 00 add di, 152 +1021: AB stosw +1022: 83 C7 04 add di, 4 +1025: B0 C0 mov al, 0xc0 +1027: AB stosw +1028: B0 C4 mov al, 0xc4 +102A: B9 4C 00 mov cx, 76 +102D: F3 rep +102E: AB stosw +102F: B0 D9 mov al, 0xd9 +1031: AB stosw +1032: BE 2E 03 mov si, start_msg +1035: B9 4A 00 mov cx, start_msg_e - start_msg +1038: BF C6 0D mov di, 3526 +103B: AC lodsb +103C: AB stosw +103D: E2 FC loop @b +103F: 83 C7 2C add di, 44 +1042: BE 78 03 mov si, time_msg +1045: B9 2D 00 mov cx, time_msg_e - time_msg +1048: AC lodsb +1049: AB stosw +104A: E2 FC loop @b +104C: 89 26 E0 1A mov word [ start_stack ], sp +1050: 31 C0 xor ax, ax +1052: CD 16 int 0x16 +1054: 66 8B 1E D4 1A mov ebx, dword [ old_timer ] +1059: 66 3B 1E DC 1A cmp ebx, dword [ timer_ ] +105E: 74 2A jz @f +1060: FA cli +1061: 6A 00 push 0 +1063: 07 pop es +1064: 26 66 89 1E 20 00 mov [ es : 8 * 4 ], ebx +106A: 66 89 1E DC 1A mov dword [ timer_ ], ebx +106F: FB sti +1070: 50 push ax +1071: 68 00 B8 push 0xb800 +1074: 07 pop es +1075: 31 C0 xor ax, ax +1077: B8 20 07 mov ax, 0x0720 +107A: BF 20 0D mov di, 3360 +107D: B9 40 01 mov cx, 80 * 4 +1080: F3 rep +1081: AB stosw +1082: 68 00 20 push ini_data_ +1085: 07 pop es +1086: E8 CE F9 call show_bl_sc_sect +1089: 58 pop ax +108A: E8 23 F9 call clean_active_cursor +108D: 80 FC 48 cmp ah, 0x48 +1090: 74 21 jz .up +1092: 80 FC 50 cmp ah, 0x50 +1095: 74 3A jz .down +1097: 80 FC 49 cmp ah, 0x49 +109A: 74 53 jz .pgup +109C: 80 FC 51 cmp ah, 0x51 +109F: 74 5B jz .pgdown +10A1: 80 FC 47 cmp ah, 0x47 +10A4: 74 63 jz .home +10A6: 80 FC 4F cmp ah, 0x4f +10A9: 74 66 jz .end +10AB: 3C 0D cmp al, 0xD +10AD: 0F 85 64 FE jnz .show_active_cursor +10B1: EB 6F jmp .end_show_all +10B3: 8B 76 CA mov si, point_to_point_def +10B6: 83 C6 02 add si, 2 +10B9: 8D 46 F2 lea ax, point_to_hframe +10BC: 39 C6 cmp si, ax +10BE: 77 0B ja @f +10C0: 89 76 CA mov point_to_point_def, si +10C3: 8B 04 mov ax, [ si ] +10C5: 89 46 F4 mov point_default, ax +10C8: E9 4A FE jmp .show_active_cursor +10CB: E8 52 F8 call find_before_sect +10CE: E9 B1 FD jmp .show_all_scr +10D1: 8B 76 CA mov si, point_to_point_def +10D4: 8B 46 C8 mov ax, point_to_eframe +10D7: 83 EE 02 sub si, 2 +10DA: 39 C6 cmp si, ax +10DC: 72 0B jb @f +10DE: 89 76 CA mov point_to_point_def, si +10E1: 8B 04 mov ax, [ si ] +10E3: 89 46 F4 mov point_default, ax +10E6: E9 2C FE jmp .show_active_cursor +10E9: E8 8D F8 call find_next_sect +10EC: E9 93 FD jmp .show_all_scr +10EF: B9 12 00 mov cx, size_show_section +10F2: 51 push cx +10F3: E8 2A F8 call find_before_sect +10F6: 59 pop cx +10F7: E2 F9 loop @b +10F9: E9 86 FD jmp .show_all_scr +10FC: B9 12 00 mov cx, size_show_section +10FF: 51 push cx +1100: E8 76 F8 call find_next_sect +1103: 59 pop cx +1104: E2 F9 loop @b +1106: E9 79 FD jmp .show_all_scr +1109: 31 FF xor di, di +110B: E8 79 F8 call find_next_sect.h +110E: E9 71 FD jmp .show_all_scr +1111: 8B 7E FE mov di, save_cx +1114: E8 0C F8 call find_before_sect.e +1117: E9 68 FD jmp .show_all_scr +111A: 60 pusha +111B: BE D7 04 mov si, no_show_only_w +111E: E8 23 F7 call printplain +1121: 61 popa +1122: 8B 7E F4 mov di, point_default +1125: 68 00 20 push ini_data_ +1128: 07 pop es +1129: 8B 76 CA mov si, point_to_point_def +112C: 83 EE 02 sub si, 2 +112F: 8B 0C mov cx, [ si ] +1131: 31 C0 xor ax, ax +1133: 29 F9 sub cx, di +1135: 89 4E FA mov save_cx_d, cx +1138: 89 46 F8 mov status_flag, ax +113B: BE 2B 05 mov si, ramdiskFS_st +113E: E8 03 F7 call printplain +1141: 31 C0 xor ax, ax +1143: 89 46 C0 mov show_errors_sect, ax +1146: B4 88 mov ah, 0x88 +1148: CD 15 int 0x15 +114A: 73 02 jnc ._support_function_use_free_memory +114C: 31 C0 xor ax, ax +114E: 89 46 C2 mov free_ad_memory, ax +1151: 60 pusha +1152: 66 0F B7 C0 movzx eax, ax +1156: B9 0A 00 mov cx, 0x0a +1159: BF 46 05 mov di, free_memory_msg +115C: 66 C7 05 20 20 20 20 mov dword [ ds : di ], ' ' +1163: C7 45 04 20 20 mov word [ ds : di + 4 ], ' ' +1168: E8 BA F6 call decode +116B: BE 46 05 mov si, free_memory_msg +116E: E8 D3 F6 call printplain +1171: 61 popa +1172: 8B 7E F4 mov di, point_default +1175: 8B 4E FA mov cx, save_cx_d +1178: E8 F8 F6 call get_firs_sym +117B: 85 C9 test cx, cx +117D: 74 6E jz ._end_parse_RS?0k2 +117F: 3C 52 cmp al, 'R' +1181: 75 F5 jnz .start_p_RS?0ju +1183: 89 CB mov bx, cx +1185: 89 F8 mov ax, di +1187: BE D9 07 mov si, parse_RamdiskSize +118A: B9 0B 00 mov cx, parse_RamdiskSize_e - parse_RamdiskSize +118D: F3 repe +118E: A6 cmpsb +118F: 75 4C jnz .rest_value_loop_RS?0jz +1191: 83 EB 0B sub bx, parse_RamdiskSize_e - parse_RamdiskSize +1194: 01 CB add bx, cx +1196: 89 D9 mov cx, bx +1198: F7 46 F8 02 00 test status_flag, flag_found_RS +119D: 74 00 jz .correct_is_not_set_RS?0jv +119F: B8 20 3D mov ax, 0x3d20 +11A2: F3 repe +11A3: AE scasb +11A4: E3 3D jcxz .end_get_RS_ERROR_1?0k0 +11A6: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +11AA: 75 CC jnz .start_p_RS?0ju +11AC: F3 repe +11AD: AE scasb +11AE: 41 inc cx +11AF: 4F dec di +11B0: 31 DB xor bx, bx +11B2: B9 05 00 mov cx, 5 +11B5: 26 8A 05 mov al, byte [ es : di ] +11B8: 3C 30 cmp al, '0' +11BA: 72 04 jb .CS?0jw +11BC: 3C 39 cmp al, '9' +11BE: 76 06 jbe .correct_val_RS?0jx +11C0: 3C 4B cmp al, 'K' +11C2: 74 0C jz .correct_size_RS?0jy +11C4: EB 23 jmp .end_get_RS_ERROR_2?0k1 +11C6: 6B DB 0A imul bx, 10 +11C9: 34 30 xor al, 0x30 +11CB: 00 C3 add bl, al +11CD: 47 inc di +11CE: E2 E5 loop @b +11D0: 85 DB test bx, bx +11D2: 75 07 jnz @f +11D4: 83 4E C0 04 or show_errors_sect, show_error_3 +11D8: BB 40 00 mov bx, 64 +11DB: EB 10 jmp ._end_parse_RS?0k2 +11DD: 89 C7 mov di, ax +11DF: 89 D9 mov cx, bx +11E1: EB 95 jmp .start_p_RS?0ju +11E3: 83 4E C0 01 or show_errors_sect, show_error_1 +11E7: EB 04 jmp ._end_parse_RS?0k2 +11E9: 83 4E C0 02 or show_errors_sect, show_error_2 +11ED: 60 pusha +11EE: 66 0F B7 C3 movzx eax, bx +11F2: B9 0A 00 mov cx, 0x0a +11F5: BF 71 05 mov di, RamdiskSize_msg +11F8: 66 C7 05 20 20 20 20 mov dword [ ds : di ], ' ' +11FF: C7 45 04 20 20 mov word [ ds : di + 4 ], ' ' +1204: E8 1E F6 call decode +1207: BE 71 05 mov si, RamdiskSize_msg +120A: E8 37 F6 call printplain +120D: 61 popa +120E: 39 5E C2 cmp free_ad_memory, bx +1211: 0F 86 80 07 jbe ._not_memory_in_sys?0iL +1215: 66 0F B7 C3 movzx eax, bx +1219: 66 C1 E0 0A shl eax, 10 +121D: 66 89 46 BA mov save_ramdisksize, eax +1221: 8B 7E F4 mov di, point_default +1224: 8B 4E FA mov cx, save_cx_d +1227: E8 49 F6 call get_firs_sym +122A: 85 C9 test cx, cx +122C: 0F 84 5D 07 jz ._end_parse_FRS +1230: 3C 52 cmp al, 'R' +1232: 75 F3 jnz .start_g_tpe_RFS +1234: 89 CB mov bx, cx +1236: 89 F8 mov ax, di +1238: BE E4 07 mov si, parse_RamdiskFS +123B: B9 09 00 mov cx, parse_RamdiskFS_e - parse_RamdiskFS +123E: F3 repe +123F: A6 cmpsb +1240: 0F 85 38 07 jnz .start_g_tpe_RFS_rest_v +1244: 83 EB 09 sub bx, parse_RamdiskFS_e - parse_RamdiskFS +1247: 01 CB add bx, cx +1249: 89 D9 mov cx, bx +124B: F7 46 F8 04 00 test status_flag, flag_found_GTRFMS +1250: 74 00 jz .correct_is_not_set_FRS +1252: B8 20 3D mov ax, 0x3d20 +1255: F3 repe +1256: AE scasb +1257: 85 C9 test cx, cx +1259: 0F 84 26 07 jz .end_get_FRS_ERROR_1 +125D: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +1261: 75 C4 jnz .start_g_tpe_RFS +1263: F3 repe +1264: AE scasb +1265: 41 inc cx +1266: 4F dec di +1267: 89 CB mov bx, cx +1269: 89 F8 mov ax, di +126B: BE 08 08 mov si, parse_RFS_FAT +126E: B9 03 00 mov cx, parse_RFS_FAT_e - parse_RFS_FAT +1271: F3 repe +1272: A6 cmpsb +1273: 0F 85 F7 06 jnz .krfs_cmp +1277: 8B 7E F4 mov di, point_default +127A: 8B 4E FA mov cx, save_cx_d +127D: E8 F3 F5 call get_firs_sym +1280: 85 C9 test cx, cx +1282: 74 54 jz .end_RamdiskSector +1284: 3C 52 cmp al, 'R' +1286: 75 F5 jnz .start_RamdiskSector +1288: 89 CB mov bx, cx +128A: 89 F8 mov ax, di +128C: BE ED 07 mov si, parse_RamdiskSector +128F: B9 0D 00 mov cx, parse_RamdiskSector_e - parse_RamdiskSector +1292: F3 repe +1293: A6 cmpsb +1294: 75 3C jnz .RamdiskSector_rest_val +1296: 83 EB 0D sub bx, parse_RamdiskSector_e - parse_RamdiskSector +1299: 01 CB add bx, cx +129B: 89 D9 mov cx, bx +129D: F7 46 F8 08 00 test status_flag, flag_found_RamdiskSector +12A2: 74 00 jz .correct_is_not_set_RamdiskSector +12A4: B8 20 3D mov ax, 0x3d20 +12A7: F3 repe +12A8: AE scasb +12A9: E3 2D jcxz .end_get_RamS_ERROR_1 +12AB: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +12AF: 75 CC jnz .start_RamdiskSector +12B1: F3 repe +12B2: AE scasb +12B3: 41 inc cx +12B4: 4F dec di +12B5: 31 DB xor bx, bx +12B7: B9 04 00 mov cx, 4 +12BA: 26 0F B6 05 movzx ax, byte [ es : di ] +12BE: 3C 30 cmp al, '0' +12C0: 72 16 jb .end_RamdiskSector +12C2: 3C 39 cmp al, '9' +12C4: 77 12 ja .end_RamdiskSector +12C6: 6B DB 0A imul bx, 10 +12C9: 34 30 xor al, 0x30 +12CB: 01 C3 add bx, ax +12CD: 47 inc di +12CE: E2 EA loop @b +12D0: EB 06 jmp .end_RamdiskSector +12D2: 89 D9 mov cx, bx +12D4: 89 C7 mov di, ax +12D6: EB A5 jmp .start_RamdiskSector +12D8: 89 D8 mov ax, bx +12DA: 60 pusha +12DB: 66 0F B7 C3 movzx eax, bx +12DF: B9 0A 00 mov cx, 0x0a +12E2: BF 8E 05 mov di, RamdiskSector_msg +12E5: 66 C7 05 20 20 20 20 mov dword [ ds : di ], ' ' +12EC: 66 C7 45 04 20 20 20 20 mov dword [ ds : di + 4 ], ' ' +12F4: E8 2E F5 call decode +12F7: BE 8E 05 mov si, RamdiskSector_msg +12FA: E8 47 F5 call printplain +12FD: 61 popa +12FE: 3D 00 10 cmp ax, 4096 +1301: 77 04 ja .RS1?0sn +1303: 85 C0 test ax, ax +1305: 75 06 jnz @f +1307: C7 06 87 1A 00 02 mov word [ fat12_buffer.BPB_BytsPerSec ], 512 +130D: A3 87 1A mov word [ fat12_buffer.BPB_BytsPerSec ], ax +1310: 8B 7E F4 mov di, point_default +1313: 8B 4E FA mov cx, save_cx_d +1316: E8 5A F5 call get_firs_sym +1319: 85 C9 test cx, cx +131B: 74 47 jz .end_RamdiskCluster +131D: 3C 52 cmp al, 'R' +131F: 75 F5 jnz .start_RamdiskCluster +1321: 89 CB mov bx, cx +1323: 89 F8 mov ax, di +1325: BE FA 07 mov si, parse_RamdiskCluster +1328: B9 0E 00 mov cx, parse_RamdiskCluster_e - parse_RamdiskCluster +132B: F3 repe +132C: A6 cmpsb +132D: 75 2F jnz .RamdiskCluster_rest_val +132F: 83 EB 0E sub bx, parse_RamdiskCluster_e - parse_RamdiskCluster +1332: 01 CB add bx, cx +1334: 89 D9 mov cx, bx +1336: F7 46 F8 16 00 test status_flag, flag_found_RamdiskCluster +133B: 74 00 jz .correct_is_not_set_RamdiskCluster +133D: B8 20 3D mov ax, 0x3d20 +1340: F3 repe +1341: AE scasb +1342: E3 20 jcxz .end_get_RamSC_ERROR_1 +1344: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +1348: 75 CC jnz .start_RamdiskCluster +134A: F3 repe +134B: AE scasb +134C: 41 inc cx +134D: 4F dec di +134E: 26 0F B6 05 movzx ax, byte [ es : di ] +1352: 3C 30 cmp al, '0' +1354: 72 0E jb .end_RamdiskCluster +1356: 3C 39 cmp al, '9' +1358: 77 0A ja .end_RamdiskCluster +135A: 34 30 xor al, 0x30 +135C: EB 06 jmp .end_RamdiskCluster +135E: 89 D9 mov cx, bx +1360: 89 C7 mov di, ax +1362: EB B2 jmp .start_RamdiskCluster +1364: 60 pusha +1365: B9 0A 00 mov cx, 0x0a +1368: BF AA 05 mov di, RamdiskCluster_msg +136B: E8 B7 F4 call decode +136E: BE AA 05 mov si, RamdiskCluster_msg +1371: E8 D0 F4 call printplain +1374: 61 popa +1375: 3C 80 cmp al, 128 +1377: 77 6B ja @f +1379: A2 89 1A mov byte [ fat12_buffer.BPB_SecPerClus ], al +137C: 66 0F B7 06 87 1A movzx eax, word [ fat12_buffer.BPB_BytsPerSec ] +1382: 66 0F B6 1E 89 1A movzx ebx, byte [ fat12_buffer.BPB_SecPerClus ] +1388: 66 0F AF D8 imul ebx, eax +138C: 66 8B 46 BA mov eax, save_ramdisksize +1390: 66 99 cdq +1392: 66 F7 FB idiv ebx +1395: 66 3D F5 0F 00 00 cmp eax, 4085 +139B: 0F 82 8E 00 jb .fat12?0so +139F: 66 3D F5 FF 00 00 cmp eax, 65525 +13A5: 72 18 jb .fat16?0sp +13A7: C7 46 B4 20 00 mov set_ramfs, 32 +13AC: C7 06 8A 1A 20 00 mov word [ fat12_buffer.BPB_RsvdSecCnt ], 32 +13B2: 66 31 C0 xor eax, eax +13B5: A3 8D 1A mov word [ fat12_buffer.BPB_RootEntCnt ], ax +13B8: A3 8F 1A mov word [ fat12_buffer.BPB_TotSec16 ], ax +13BB: 66 A3 9C 1A mov dword [ fat12_buffer.BPB_TotSec32 ], eax +13BF: EB FE jmp $ +13C1: C7 46 B4 10 00 mov set_ramfs, 16 +13C6: 66 0F B6 1E 89 1A movzx ebx, byte [ fat12_buffer.BPB_SecPerClus ] +13CC: 66 0F AF C3 imul eax, ebx +13D0: 66 3D 00 00 01 00 cmp eax, 0x10000 +13D6: 73 0C jae @f +13D8: A3 8F 1A mov word [ fat12_buffer.BPB_TotSec16 ], ax +13DB: 66 C7 06 9C 1A 00 00 00 00 mov dword [ fat12_buffer.BPB_TotSec32 ], 0 +13E4: 66 B8 E0 00 00 00 mov eax, root_dir_entry_count +13EA: A3 8D 1A mov word [ fat12_buffer.BPB_RootEntCnt ], ax +13ED: 66 0F B7 1E 87 1A movzx ebx, word [ fat12_buffer.BPB_BytsPerSec ] +13F3: 66 6B C0 20 imul eax, 32 +13F7: 66 01 D8 add eax, ebx +13FA: 66 48 dec eax +13FC: 66 99 cdq +13FE: 66 F7 FB idiv ebx +1401: 66 0F B7 1E 8A 1A movzx ebx, word [ fat12_buffer.BPB_RsvdSecCnt ] +1407: 66 01 C3 add ebx, eax +140A: 66 0F B7 06 8F 1A movzx eax, word [ fat12_buffer.BPB_TotSec16 ] +1410: 66 29 D8 sub eax, ebx +1413: 66 C1 E7 08 shl edi, 8 +1417: 66 0F B6 0E 8C 1A movzx ecx, byte [ fat12_buffer.BPB_NumFATs ] +141D: 66 01 CF add edi, ecx +1420: 66 01 F8 add eax, edi +1423: 66 48 dec eax +1425: 66 99 cdq +1427: 66 F7 FF idiv edi +142A: A3 92 1A mov word [ fat12_buffer.BPB_FATSz16 ], ax +142D: C7 46 B4 0C 00 mov set_ramfs, 12 +1432: 66 0F B6 1E 89 1A movzx ebx, byte [ fat12_buffer.BPB_SecPerClus ] +1438: 66 0F AF C3 imul eax, ebx +143C: 66 3D 00 00 01 00 cmp eax, 0x10000 +1442: 73 0C jae @f +1444: A3 8F 1A mov word [ fat12_buffer.BPB_TotSec16 ], ax +1447: 66 C7 06 9C 1A 00 00 00 00 mov dword [ fat12_buffer.BPB_TotSec32 ], 0 +1450: 66 B8 E0 00 00 00 mov eax, root_dir_entry_count +1456: A3 8D 1A mov word [ fat12_buffer.BPB_RootEntCnt ], ax +1459: 66 0F B7 06 8F 1A movzx eax, word [ fat12_buffer.BPB_TotSec16 ] +145F: 66 6B C0 0C imul eax, 12 +1463: 66 C1 E8 03 shr eax, 3 +1467: 66 0F B7 1E 87 1A movzx ebx, word [ fat12_buffer.BPB_BytsPerSec ] +146D: 66 99 cdq +146F: 66 F7 FB idiv ebx +1472: 40 inc ax +1473: A3 92 1A mov word [ fat12_buffer.BPB_FATSz16 ], ax +1476: A1 92 1A mov ax, word [ fat12_buffer.BPB_FATSz16 ] +1479: 0F B6 1E 8C 1A movzx bx, byte [ fat12_buffer.BPB_NumFATs ] +147E: 0F AF C3 imul ax, bx +1481: 8B 1E 8D 1A mov bx, word [ fat12_buffer.BPB_RootEntCnt ] +1485: C1 EB 04 shr bx, 4 +1488: 01 D8 add ax, bx +148A: 89 5E B0 mov size_root_dir, bx +148D: 0F B6 1E 8A 1A movzx bx, byte [ fat12_buffer.BPB_RsvdSecCnt ] +1492: 01 D8 add ax, bx +1494: 89 46 AE mov firstDataSect, ax +1497: 8B 1E 8F 1A mov bx, word [ fat12_buffer.BPB_TotSec16 ] +149B: 29 C3 sub bx, ax +149D: 89 D8 mov ax, bx +149F: 0F B6 1E 89 1A movzx bx, byte [ fat12_buffer.BPB_SecPerClus ] +14A4: 99 cwd +14A5: F7 FB idiv bx +14A7: 89 46 AC mov DataClasters, ax +14AA: 60 pusha +14AB: 8B 46 AE mov ax, firstDataSect +14AE: B9 0A 00 mov cx, 0x0a +14B1: BF 44 06 mov di, firstDataSect_msg +14B4: E8 6E F3 call decode +14B7: BE 44 06 mov si, firstDataSect_msg +14BA: E8 87 F3 call printplain +14BD: 8B 46 B0 mov ax, size_root_dir +14C0: B9 0A 00 mov cx, 0x0a +14C3: BF 79 06 mov di, size_root_dir_msg +14C6: E8 5C F3 call decode +14C9: BE 79 06 mov si, size_root_dir_msg +14CC: E8 75 F3 call printplain +14CF: 8B 46 AC mov ax, DataClasters +14D2: B9 0A 00 mov cx, 0x0a +14D5: BF 9B 06 mov di, DataClasters_msg +14D8: E8 4A F3 call decode +14DB: BE 9B 06 mov si, DataClasters_msg +14DE: E8 63 F3 call printplain +14E1: 61 popa +14E2: A0 91 1A mov al, byte [ fat12_buffer.BPB_Media ] +14E5: 1E push ds +14E6: 8B 7E C4 mov di, info_real_mode_size +14E9: 81 C7 00 10 add di, 0x1000 +14ED: 57 push di +14EE: 31 FF xor di, di +14F0: 89 7E AA mov point_to_free_root, di +14F3: 1F pop ds +14F4: 88 05 mov byte [ di ], al +14F6: 83 C8 FF or ax, - 1 +14F9: 47 inc di +14FA: 89 05 mov word [ di ], ax +14FC: 1F pop ds +14FD: C7 46 B2 03 00 mov point_next_fat_str, 3 +1502: 60 pusha +1503: 8B 46 B2 mov ax, point_next_fat_str +1506: B9 0A 00 mov cx, 0x0a +1509: BF DA 05 mov di, fat_create_msg +150C: E8 16 F3 call decode +150F: BE DA 05 mov si, fat_create_msg +1512: E8 2F F3 call printplain +1515: 61 popa +1516: B8 7C 1A mov ax, fat12_buffer +1519: BE 3C 1A mov si, table_15_87 +151C: 01 44 12 add word [ si + 8 * 2 + 2 ], ax +151F: 06 push es +1520: 1E push ds +1521: 07 pop es +1522: B9 1F 00 mov cx, 31 +1525: B4 87 mov ah, 0x87 +1527: CD 15 int 0x15 +1529: 07 pop es +152A: 60 pusha +152B: 8B 44 12 mov ax, word [ si + 8 * 2 + 2 ] +152E: B9 0A 00 mov cx, 0x0a +1531: BF 0E 06 mov di, BPB_msg +1534: E8 EE F2 call decode +1537: BE 0E 06 mov si, BPB_msg +153A: E8 07 F3 call printplain +153D: 61 popa +153E: 8B 7E F4 mov di, point_default +1541: 8B 4E FA mov cx, save_cx_d +1544: C7 46 A6 00 00 mov data_offset, 0 +1549: E8 27 F3 call get_firs_sym +154C: 85 C9 test cx, cx +154E: 0F 84 B3 03 jz ._end?1D2 +1552: 3C 52 cmp al, 'R' +1554: 75 F3 jnz .start_loop?1D1 +1556: 89 CB mov bx, cx +1558: 89 F8 mov ax, di +155A: BE 1A 08 mov si, parse_RamdiskFile +155D: B9 0B 00 mov cx, parse_RamdiskFile_e - parse_RamdiskFile +1560: F3 repe +1561: A6 cmpsb +1562: 0F 85 98 03 jnz .rest_value_loop?1D3 +1566: 83 EB 0B sub bx, parse_RamdiskFile_e - parse_RamdiskFile +1569: 01 CB add bx, cx +156B: 89 D9 mov cx, bx +156D: B8 20 3D mov ax, 0x3d20 +1570: F3 repe +1571: AE scasb +1572: 66 85 C9 test ecx, ecx +1575: 0F 84 85 03 jz .rest_value_loop?1D3 +1579: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +157D: 0F 85 7D 03 jnz .rest_value_loop?1D3 +1581: F3 repe +1582: AE scasb +1583: 41 inc cx +1584: 4F dec di +1585: 89 7E A2 mov save_di_RAMDISK, di +1588: 89 4E A0 mov save_cx_RAMDISK, cx +158B: 26 8A 05 mov al, byte [ es : di ] +158E: 3C 2C cmp al, ',' +1590: 74 04 jz .found_end_str +1592: 47 inc di +1593: 49 dec cx +1594: 75 F5 jnz @b +1596: 89 7E A8 mov point_to_dest_file_name, di +1599: 47 inc di +159A: BE BA 1A mov si, shot_name_fat +159D: 83 4E A4 FF or first_input, - 1 +15A1: B9 0B 00 mov cx, 11 +15A4: 26 8A 05 mov al, byte [ es : di ] +15A7: 3C 0A cmp al, 0xa +15A9: 74 7D jz .st4_s?1GP +15AB: 3C 0D cmp al, 0xd +15AD: 74 79 jz .st4_s?1GP +15AF: 3C 20 cmp al, 0x20 +15B1: 74 75 jz .st4_s?1GP +15B3: 3C 20 cmp al, 0x20 +15B5: 72 7A jb .error?1GK +15B7: 3C 22 cmp al, 0x22 +15B9: 74 76 jz .error?1GK +15BB: 3C 2A cmp al, 0x2a +15BD: 74 72 jz .error?1GK +15BF: 3C 2B cmp al, 0x2b +15C1: 74 6E jz .error?1GK +15C3: 3C 2C cmp al, 0x2c +15C5: 74 6A jz .error?1GK +15C7: 3C 2F cmp al, 0x2F +15C9: 74 66 jz .error?1GK +15CB: 3C 3A cmp al, 0x3a +15CD: 74 62 jz .error?1GK +15CF: 3C 3B cmp al, 0x3b +15D1: 74 5E jz .error?1GK +15D3: 3C 3C cmp al, 0x3c +15D5: 74 5A jz .error?1GK +15D7: 3C 3D cmp al, 0x3d +15D9: 74 56 jz .error?1GK +15DB: 3C 3E cmp al, 0x3E +15DD: 74 52 jz .error?1GK +15DF: 3C 3F cmp al, 0x3F +15E1: 74 4E jz .error?1GK +15E3: 3C 5B cmp al, 0x5b +15E5: 74 4A jz .error?1GK +15E7: 3C 5C cmp al, 0x5c +15E9: 74 46 jz .error?1GK +15EB: 3C 5D cmp al, 0x5d +15ED: 74 42 jz .error?1GK +15EF: 3C 7C cmp al, 0x7c +15F1: 74 3E jz .error?1GK +15F3: 83 7E A4 FF cmp first_input, - 1 +15F7: 75 08 jnz .next_step?1GJ +15F9: 83 66 A4 00 and first_input, 0 +15FD: 3C 2E cmp al, '.' +15FF: 74 30 jz .error?1GK +1601: 3C 2E cmp al, 0x2e +1603: 75 13 jnz .st2?1GM +1605: B0 20 mov al, ' ' +1607: 80 F9 03 cmp cl, 3 +160A: 76 0C jbe .st2?1GM +160C: 88 04 mov byte [ si ], al +160E: 46 inc si +160F: 49 dec cx +1610: 83 F9 03 cmp cx, 3 +1613: 77 F7 ja .st3?1GO +1615: 47 inc di +1616: EB 8C jmp @b +1618: 3C 60 cmp al, 0x60 +161A: 76 02 jbe .st2_l?1GN +161C: 34 20 xor al, 0x20 +161E: 88 04 mov byte [ si ], al +1620: 47 inc di +1621: 46 inc si +1622: E2 80 loop @b +1624: 31 C0 xor ax, ax +1626: EB 0C jmp @f +1628: B0 20 mov al, ' ' +162A: 88 04 mov byte [ si ], al +162C: 46 inc si +162D: E2 FB loop .st4?1GQ +162F: EB F3 jmp .st5?1GR +1631: 83 C8 FF or ax, - 1 +1634: 60 pusha +1635: B9 0A 00 mov cx, 0x0a +1638: BF F5 06 mov di, convertion_file_name_msg +163B: E8 E7 F1 call decode +163E: BE F5 06 mov si, convertion_file_name_msg +1641: E8 00 F2 call printplain +1644: BE BA 1A mov si, shot_name_fat +1647: C6 44 0C 00 mov byte [ si + 12 ], 0 +164B: E8 F6 F1 call printplain +164E: 61 popa +164F: 85 C0 test ax, ax +1651: 75 39 jnz .exit?1GI +1653: BE BA 1A mov si, shot_name_fat +1656: 8B 7E AE mov di, firstDataSect +1659: 2B 7E B0 sub di, size_root_dir +165C: C1 E7 09 shl di, 9 +165F: BA E0 00 mov dx, root_dir_entry_count +1662: 8B 46 C4 mov ax, info_real_mode_size +1665: 05 00 10 add ax, 0x1000 +1668: 8E E8 mov gs, ax +166A: B9 0B 00 mov cx, 11 +166D: 8A 00 mov al, byte [ ds : si + bx ] +166F: 65 8A 21 mov ah, byte [ gs : di + bx ] +1672: 43 inc bx +1673: 38 C4 cmp ah, al +1675: 75 07 jnz .no_equal?1GH +1677: E2 F4 loop @b +1679: 83 C8 FF or ax, - 1 +167C: EB 0E jmp .exit?1GI +167E: B9 0B 00 mov cx, 11 +1681: 31 DB xor bx, bx +1683: 83 C7 20 add di, 32 +1686: 4A dec dx +1687: 75 E4 jnz @b +1689: 83 E0 00 and ax, 0 +168C: 60 pusha +168D: B9 0A 00 mov cx, 0x0a +1690: BF B9 06 mov di, check_name_fat_msg +1693: 66 C7 05 20 20 20 20 mov dword [ di ], ' ' +169A: C7 45 04 20 20 mov word [ di + 4 ], ' ' +169F: E8 83 F1 call decode +16A2: BE B9 06 mov si, check_name_fat_msg +16A5: E8 9C F1 call printplain +16A8: 61 popa +16A9: 8B 7E A2 mov di, save_di_RAMDISK +16AC: 8B 4E A0 mov cx, save_cx_RAMDISK +16AF: 84 C0 test al, al +16B1: 0F 85 94 FE jnz .start_loop?1D1 +16B5: 26 66 FF 75 FA push dword [ es : di - 6 ] +16BA: 8D 75 FA lea si, [ di - 6 ] +16BD: 26 FF 75 FE push word [ es : di - 2 ] +16C1: 57 push di +16C2: 31 C0 xor ax, ax +16C4: 26 89 45 FA mov word [ es : di - 6 ], ax +16C8: 8B 46 C4 mov ax, info_real_mode_size +16CB: 26 89 45 FC mov word [ es : di - 4 ], ax +16CF: 26 C7 45 FE 10 00 mov word [ es : di - 2 ], 16 +16D5: 8B 7E A8 mov di, point_to_dest_file_name +16D8: 26 FF 35 push word [ es : di ] +16DB: 51 push cx +16DC: 31 C0 xor ax, ax +16DE: 26 89 05 mov word [ es : di ], ax +16E1: 57 push di +16E2: 89 F7 mov di, si +16E4: 40 inc ax +16E5: 56 push si +16E6: 06 push es +16E7: 55 push bp +16E8: 06 push es +16E9: 1F pop ds +16EA: 0E push cs +16EB: 07 pop es +16EC: 26 FF 1E DC 0A call far dword [ es : loader_callback ] +16F1: 0E push cs +16F2: 1F pop ds +16F3: 5D pop bp +16F4: 07 pop es +16F5: 5E pop si +16F6: 83 FB 02 cmp bx, 2 +16F9: 0F 87 01 02 ja .error?1D4 +16FD: 89 5E 9E mov status_flag_loader_f, bx +1700: 66 C1 E2 10 shl edx, 16 +1704: 89 C2 mov dx, ax +1706: 66 89 56 B6 mov save_file_size, edx +170A: 66 89 D0 mov eax, edx +170D: 5F pop di +170E: 59 pop cx +170F: 26 8F 05 pop word [ es : di ] +1712: 5F pop di +1713: 26 8F 45 FE pop word [ es : di - 2 ] +1717: 26 66 8F 45 FA pop dword [ es : di - 6 ] +171C: 60 pusha +171D: B9 0A 00 mov cx, 0x0a +1720: BF C1 05 mov di, RamdiskFile_msg +1723: 66 C7 05 20 20 20 20 mov dword [ ds : di ], ' ' +172A: E8 F8 F0 call decode +172D: BE C1 05 mov si, RamdiskFile_msg +1730: E8 11 F1 call printplain +1733: 61 popa +1734: 06 push es +1735: 8B 46 C4 mov ax, info_real_mode_size +1738: 05 00 10 add ax, 0x1000 +173B: 8E C0 mov es, ax +173D: 8B 7E AE mov di, firstDataSect +1740: 2B 7E B0 sub di, size_root_dir +1743: C1 E7 09 shl di, 9 +1746: 03 7E AA add di, point_to_free_root +1749: BE BA 1A mov si, shot_name_fat +174C: B9 0B 00 mov cx, 11 +174F: AC lodsb +1750: AA stosb +1751: E2 FC loop @b +1753: 31 C0 xor ax, ax +1755: B4 08 mov ah, ATTR_VOLUME_ID +1757: 26 89 05 mov word [ es : di ], ax +175A: 83 C7 02 add di, 2 +175D: 26 C6 05 64 mov byte [ es : di ], 100 +1761: 47 inc di +1762: 26 C7 05 2B 03 mov word [ es : di ], 0x032b +1767: 83 C7 02 add di, 2 +176A: 26 C7 05 00 00 mov word [ es : di ], 0x0 +176F: 83 C7 02 add di, 2 +1772: 26 C7 05 2B 03 mov word [ es : di ], 0x032b +1777: 83 C7 02 add di, 2 +177A: 26 C7 05 00 00 mov word [ es : di ], 0x0 +177F: 83 C7 02 add di, 2 +1782: 26 C7 05 00 00 mov word [ es : di ], 0x0 +1787: 83 C7 02 add di, 2 +178A: 26 C7 05 2B 03 mov word [ es : di ], 0x032b +178F: 83 C7 02 add di, 2 +1792: 8B 46 B2 mov ax, point_next_fat_str +1795: 26 89 05 mov word [ es : di ], ax +1798: 83 C7 02 add di, 2 +179B: 57 push di +179C: 89 C3 mov bx, ax +179E: D1 EB shr bx, 1 +17A0: 01 D8 add ax, bx +17A2: 8B 1E 87 1A mov bx, word [ fat12_buffer.BPB_BytsPerSec ] +17A6: 99 cwd +17A7: F7 FB idiv bx +17A9: 89 C6 mov si, ax +17AB: 66 0F B7 06 87 1A movzx eax, word [ fat12_buffer.BPB_BytsPerSec ] +17B1: 66 0F B6 1E 89 1A movzx ebx, byte [ fat12_buffer.BPB_SecPerClus ] +17B7: 66 0F AF C3 imul eax, ebx +17BB: 66 8B 5E B6 mov ebx, save_file_size +17BF: 66 29 C3 sub ebx, eax +17C2: 66 39 C3 cmp ebx, eax +17C5: 76 29 jbe .eof_file?1US +17C7: FF 46 B2 inc point_next_fat_str +17CA: 8B 4E B2 mov cx, point_next_fat_str +17CD: 89 C2 mov dx, ax +17CF: D1 EA shr dx, 1 +17D1: 01 D1 add cx, dx +17D3: F7 C6 01 00 test si, 0x1 +17D7: 74 0B jz .step2?1UP +17D9: C1 E1 04 shl cx, 4 +17DC: 26 89 0C mov word [ es : si ], cx +17DF: 46 inc si +17E0: 01 C1 add cx, ax +17E2: EB DB jmp @b +17E4: 81 E1 FF 0F and cx, 0x0FFF +17E8: 26 89 0C mov word [ es : si ], cx +17EB: 46 inc si +17EC: 01 C1 add cx, ax +17EE: EB CF jmp @b +17F0: B9 FF 0F mov cx, 0x0fff +17F3: F7 C6 01 00 test si, 0x1 +17F7: 74 08 jz .step3?1UQ +17F9: C1 E1 04 shl cx, 4 +17FC: 26 89 0C mov word [ es : si ], cx +17FF: EB 07 jmp .end?1UR +1801: 81 E1 FF 0F and cx, 0x0FFF +1805: 26 89 0C mov word [ es : si ], cx +1808: FF 46 B2 inc point_next_fat_str +180B: 5F pop di +180C: 66 8B 46 B6 mov eax, save_file_size +1810: 26 66 89 05 mov dword [ es : di ], eax +1814: 66 60 pushad +1816: 8B 7E AE mov di, firstDataSect +1819: 2B 7E B0 sub di, size_root_dir +181C: C1 E7 09 shl di, 9 +181F: 03 7E AA add di, point_to_free_root +1822: BE C6 1A mov si, dest_name_fat +1825: B9 0B 00 mov cx, 11 +1828: 26 8A 05 mov al, byte [ es : di ] +182B: 47 inc di +182C: 88 04 mov byte [ ds : si ], al +182E: 46 inc si +182F: E2 F7 loop @b +1831: 31 C0 xor ax, ax +1833: 88 04 mov byte [ si ], al +1835: BE C6 1A mov si, dest_name_fat +1838: E8 09 F0 call printplain +183B: 66 61 popad +183D: 83 46 AA 20 add point_to_free_root, 32 +1841: 07 pop es +1842: 8B 46 C4 mov ax, info_real_mode_size +1845: BE 3C 1A mov si, table_15_87 +1848: 89 44 12 mov word [ si + 8 * 2 + 2 ], ax +184B: 66 0F B7 46 AE movzx eax, firstDataSect +1850: 66 0F B7 56 A6 movzx edx, data_offset +1855: 66 01 D0 add eax, edx +1858: 66 0F B7 1E 87 1A movzx ebx, word [ fat12_buffer.BPB_BytsPerSec ] +185E: 66 0F B6 16 89 1A movzx edx, byte [ fat12_buffer.BPB_SecPerClus ] +1864: 0F AF DA imul bx, dx +1867: 66 53 push ebx +1869: 66 0F AF C3 imul eax, ebx +186D: 60 pusha +186E: B9 0A 00 mov cx, 0x0a +1871: BF 07 04 mov di, show_db1 +1874: E8 AE EF call decode +1877: BE 07 04 mov si, show_db1 +187A: E8 C7 EF call printplain +187D: 61 popa +187E: B2 10 mov dl, 0x10 +1880: 66 3D 00 00 01 00 cmp eax, 0x00010000 +1886: 72 0A jb @f +1888: 66 2D 00 00 01 00 sub eax, 0x00010000 +188E: FE C2 inc dl +1890: EB EE jmp @b +1892: 88 54 1B mov byte [ si + 8 * 3 + 3 ], dl +1895: 89 44 1A mov word [ si + 8 * 3 + 2 ], ax +1898: 66 8B 4E B6 mov ecx, save_file_size +189C: 66 81 F9 FF FF 00 00 cmp ecx, 0x0000ffff +18A3: 76 0A jbe .correct_on_byte?1cJ +18A5: 66 B9 00 00 01 00 mov ecx, 0x00010000 +18AB: 66 29 4E B6 sub save_file_size, ecx +18AF: 66 58 pop eax +18B1: 66 51 push ecx +18B3: FF 46 A6 inc data_offset +18B6: 66 39 C8 cmp eax, ecx +18B9: 73 05 jae @f +18BB: 66 29 C1 sub ecx, eax +18BE: EB F3 jmp @b +18C0: 66 59 pop ecx +18C2: 66 F7 C1 01 00 00 00 test ecx, 0x1 +18C9: 74 02 jz .st1?1cI +18CB: 66 41 inc ecx +18CD: 66 D1 E9 shr ecx, 1 +18D0: 06 push es +18D1: 1E push ds +18D2: 07 pop es +18D3: B4 87 mov ah, 0x87 +18D5: CD 15 int 0x15 +18D7: 07 pop es +18D8: 60 pusha +18D9: B9 0A 00 mov cx, 0x0a +18DC: BF 46 07 mov di, return_code_af_move +18DF: E8 43 EF call decode +18E2: BE 46 07 mov si, return_code_af_move +18E5: E8 5C EF call printplain +18E8: 61 popa +18E9: 83 7E 9E 01 cmp status_flag_loader_f, 0x1 +18ED: 75 00 jnz @f +18EF: 8B 7E A2 mov di, save_di_RAMDISK +18F2: 8B 4E A0 mov cx, save_cx_RAMDISK +18F5: 60 pusha +18F6: 31 C0 xor ax, ax +18F8: CD 16 int 0x16 +18FA: 61 popa +18FB: E9 4B FC jmp .start_loop?1D1 +18FE: 89 C7 mov di, ax +1900: 89 D9 mov cx, bx +1902: E9 44 FC jmp .start_loop?1D1 +1905: 8B 46 C4 mov ax, info_real_mode_size +1908: 05 00 10 add ax, 0x1000 +190B: BE 3C 1A mov si, table_15_87 +190E: 89 44 12 mov word [ si + 8 * 2 + 2 ], ax +1911: B8 00 02 mov ax, 512 +1914: 89 44 1A mov word [ si + 8 * 3 + 2 ], ax +1917: 66 0F B7 0E 92 1A movzx ecx, word [ fat12_buffer.BPB_FATSz16 ] +191D: 0F B6 1E 8C 1A movzx bx, byte [ fat12_buffer.BPB_NumFATs ] +1922: 0F AF CB imul cx, bx +1925: 03 4E B0 add cx, size_root_dir +1928: 66 C1 E1 09 shl ecx, 9 +192C: 66 F7 C1 01 00 00 00 test ecx, 0x1 +1933: 74 02 jz .st1?1ho +1935: 66 41 inc ecx +1937: 66 D1 E9 shr ecx, 1 +193A: 06 push es +193B: 1E push ds +193C: 07 pop es +193D: B4 87 mov ah, 0x87 +193F: CD 15 int 0x15 +1941: 07 pop es +1942: 60 pusha +1943: B9 0A 00 mov cx, 0x0a +1946: BF 77 07 mov di, return_code_af_fat_m +1949: E8 D9 EE call decode +194C: BE 77 07 mov si, return_code_af_fat_m +194F: E8 F2 EE call printplain +1952: 61 popa +1953: 60 pusha +1954: B9 0A 00 mov cx, 0x0a +1957: BF 07 04 mov di, show_db1 +195A: E8 C8 EE call decode +195D: BE 07 04 mov si, show_db1 +1960: E8 E1 EE call printplain +1963: 61 popa +1964: 60 pusha +1965: BE 21 07 mov si, make_fat12_RFS_msg +1968: E8 D9 EE call printplain +196B: 61 popa +196C: EB 1F jmp ._end_parse_FRS +196E: 89 D9 mov cx, bx +1970: 89 C7 mov di, ax +1972: BE 0B 08 mov si, parse_RFS_KRFS +1975: B9 04 00 mov cx, parse_RFS_KRFS_e - parse_RFS_KRFS +1978: F3 repe +1979: A6 cmpsb +197A: EB 11 jmp ._end_parse_FRS +197C: 89 D9 mov cx, bx +197E: 89 C7 mov di, ax +1980: E9 A4 F8 jmp .start_g_tpe_RFS +1983: 83 4E C0 01 or show_errors_sect, show_error_1 +1987: EB 04 jmp ._end_parse_FRS +1989: 83 4E C0 02 or show_errors_sect, show_error_2 +198D: 60 pusha +198E: BE 34 07 mov si, get_type_FS_msg +1991: E8 B0 EE call printplain +1994: 61 popa +1995: 31 C0 xor ax, ax +1997: CD 16 int 0x16 +1999: 8B 7E F4 mov di, point_default +199C: 8B 4E FA mov cx, save_cx_d +199F: E8 D1 EE call get_firs_sym +19A2: 85 C9 test cx, cx +19A4: 0F 84 8E 00 jz ._afterLoaderModule +19A8: 3C 4C cmp al, 'L' +19AA: 75 F3 jnz .start_p_LM +19AC: 89 CB mov bx, cx +19AE: 89 F8 mov ax, di +19B0: BE CD 07 mov si, parse_LoaderModule +19B3: B9 0C 00 mov cx, parse_LoaderModule_e - parse_LoaderModule +19B6: F3 repe +19B7: A6 cmpsb +19B8: 75 75 jnz .rest_value_loop_LM +19BA: 83 EB 0C sub bx, parse_LoaderModule_e - parse_LoaderModule +19BD: 01 CB add bx, cx +19BF: 89 D9 mov cx, bx +19C1: F7 46 F8 01 00 test status_flag, flag_found_LM +19C6: 74 00 jz .correct_is_not_set_LM +19C8: B8 20 3D mov ax, 0x3d20 +19CB: F3 repe +19CC: AE scasb +19CD: E3 60 jcxz .rest_value_loop_LM +19CF: 26 3A 65 FF cmp ah, byte [ es : di - 1 ] +19D3: 75 5A jnz .rest_value_loop_LM +19D5: F3 repe +19D6: AE scasb +19D7: 41 inc cx +19D8: 4F dec di +19D9: 26 66 FF 75 FA push dword [ es : di - 6 ] +19DE: 8D 75 FA lea si, [ di - 6 ] +19E1: 26 FF 75 FE push word [ es : di - 2 ] +19E5: 31 C0 xor ax, ax +19E7: 26 89 45 FA mov word [ es : di - 6 ], ax +19EB: 8B 46 C4 mov ax, info_real_mode_size +19EE: 26 89 45 FC mov word [ es : di - 4 ], ax +19F2: 26 C7 45 FE 10 00 mov word [ es : di - 2 ], 16 +19F8: 26 8A 05 mov al, byte [ es : di ] +19FB: 3C 20 cmp al, ' ' +19FD: 74 0C jz .found_end_str?1mb +19FF: 3C 0A cmp al, 0xa +1A01: 74 08 jz .found_end_str?1mb +1A03: 3C 0D cmp al, 0xd +1A05: 74 04 jz .found_end_str?1mb +1A07: 47 inc di +1A08: 49 dec cx +1A09: 75 ED jnz @b +1A0B: 26 FF 35 push word [ es : di ] +1A0E: 31 C0 xor ax, ax +1A10: 26 89 05 mov word [ es : di ], ax +1A13: 89 F7 mov di, si +1A15: 40 inc ax +1A16: 56 push si +1A17: 06 push es +1A18: 06 push es +1A19: 1F pop ds +1A1A: 0E push cs +1A1B: 07 pop es +1A1C: 26 FF 1E DC 0A call far dword [ es : loader_callback ] +1A21: 0E push cs +1A22: 1F pop ds +1A23: 07 pop es +1A24: 5E pop si +1A25: 85 DB test bx, bx +1A27: 75 03 jnz .error_LM +1A29: 26 FF 2C jmp far dword [ es : si ] +1A2C: E8 91 F0 call error.LoaderModule +1A2F: 89 C7 mov di, ax +1A31: 89 D9 mov cx, bx +1A33: E9 69 FF jmp .start_p_LM +1A36: EB FE jmp $ +1A38: E9 6A F1 jmp ini_loaded +1A3C: 00 00 00 00 00 00 00 00 db 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x0, 0x0 +1A44: 00 00 00 00 00 00 00 00 db 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x0, 0x0 +1A4C: FF FF db 0xff, 0xff +1A4E: 00 10 db 0x0, 0x10 +1A50: 00 93 00 00 db 0x00, 0x93, 0x0, 0x0 +1A54: FF FF 00 00 10 93 00 00 db 0xff, 0xff, 0x0, 0x00, 0x10, 0x93, 0x0, 0x0 +1A5C: 00 00 00 00 00 00 00 00 db 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x0, 0x0 +1A64: 00 00 00 00 00 00 00 00 db 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x0, 0x0 +1A6C: 00 00 00 00 00 00 00 00 db 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x0, 0x0 +1A74: 00 00 00 00 00 00 00 00 db 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x0, 0x0 +1A7C: 90 90 90 .BS_jmpBoot db 0x90, 0x90, 0x90 +1A7F: 4B 20 53 79 53 20 36 34 .BS_OEMName db 'K SyS 64' +1A87: 00 02 .BPB_BytsPerSec dw 512 +1A89: 01 .BPB_SecPerClus db 0x1 +1A8A: 01 00 .BPB_RsvdSecCnt dw 0x1 +1A8C: 01 .BPB_NumFATs db 0x1 +1A8D: 00 02 .BPB_RootEntCnt dw 512 +1A8F: 00 00 .BPB_TotSec16 dw 0x0 +1A91: F0 .BPB_Media db 0xF0 +1A92: 00 00 .BPB_FATSz16 dw 0x0 +1A94: 00 00 .BPB_SecPerTrk dw 0x0 +1A96: 00 00 .BPB_NumHeads dw 0x0 +1A98: 00 00 00 00 .BPB_HiddSec dd 0x0 +1A9C: 00 00 00 00 .BPB_TotSec32 dd 0x0 +1AA0: 52 .BS_DrvNum db 'R' +1AA1: 00 .BS_Reserved1 db 0x0 +1AA2: 29 .BS_BootSig db 0x29 +1AA3: 52 46 4B 53 .BS_VolID db 'RFKS' +1AA7: 52 41 4D 20 44 49 53 4B 20 46 53 .BS_VolLab db 'RAM DISK FS' +1AB2: 46 41 54 31 32 20 20 20 .BS_FilSysType db 'FAT12 ' +1ABA: shot_name_fat rb 11 +1AC5: rb 1 +1AC6: dest_name_fat rb 12 +1AD2: value_timeout rw 1 +1AD4: old_timer rd 1 +1AD8: start_timer rd 1 +1ADC: timer_ rd 1 +1AE0: start_stack rw 1 +1AE2: save_bp_from_timer rw 1 +3 passes, 0.8 seconds, 6842 bytes. diff --git a/kernel/trunk/sec_loader/trunk/parse_def_sect.inc b/kernel/trunk/sec_loader/trunk/parse_def_sect.inc index 2a985a670f..8f8d0023de 100644 --- a/kernel/trunk/sec_loader/trunk/parse_def_sect.inc +++ b/kernel/trunk/sec_loader/trunk/parse_def_sect.inc @@ -1088,8 +1088,7 @@ local .error ;мы ее модифицируем до такого состояния dw,dw,db'@menu',0 конечно сохранив те значения которые мы заменяем ;сохранили певые 2 word -;//проверка наличия такого же имени в рут дир - +; @@: mov al,byte [es:di] cmp al,',' ; т.е. ищем разделитель jz .found_end_str @@ -1135,6 +1134,21 @@ check_name_file mov di,point_to_dest_file_name +if DEBUG + pushad +; mov ax,di + mov cx,0x0a + mov di,name_of_seg_get_64 + mov dword[ds:di],' ' + mov word[ds:di+4],' ' + call decode +;Show size + mov si,name_of_seg_get_64 + call printplain + + popad +end if + push word [es:di] push cx xor ax,ax @@ -1184,7 +1198,7 @@ check_name_file if DEBUG - pusha + pushad mov cx,0x0a mov di,RamdiskFile_msg mov dword[ds:di],' ' @@ -1193,7 +1207,7 @@ if DEBUG mov si,RamdiskFile_msg call printplain - popa + popad end if @@ -1274,8 +1288,8 @@ move_up_fat_and_root_d } -macro use_BPB_RAM -;данный макрос закидывает BPB структуру, пока только фат12 за 1 мб +macro use_BPB_RAM ;закинуть самые первые 512 байт за 1-й мб +;данный макрос закидывает BPB структуру т.е. первые 512 байт, пока только фат12 за 1 мб { mov ax,fat12_buffer mov si,table_15_87 @@ -1283,7 +1297,7 @@ macro use_BPB_RAM push es push ds pop es - mov cx,31 ;фат12 укладывается в 62 байта 62/2=31 + mov cx,256 ;бут сектор укладывается в 512 байт 512/2=256 mov ah, 0x87 int 0x15 pop es @@ -1315,12 +1329,35 @@ macro first_create_fat_table mov di,info_real_mode_size add di,0x1000 + +if DEBUG + pushad + + mov ax,info_real_mode_size + add ax,0x1000 +; mov ax,ds + mov cx,0xa + + mov di,first_entry_in_fat + mov dword [di],' ' + mov word [di+4],' ' + call decode +;Show size + mov si,first_entry_in_fat + call printplain + + xor ax,ax + int 0x16 + + popad +end if + + push di ; push word info_real_mode_size+0x1000 ;cледующий сегмент за загруженным участком xor di,di mov point_to_free_root,di ;значение смещения =0 в корневой фат таблице описания - pop ds ; загружен следующий сегмент т.е. пустой сегмент mov byte [di],al @@ -1328,8 +1365,6 @@ macro first_create_fat_table inc di mov word [di],ax - - pop ds mov point_next_fat_str,3 @@ -1371,6 +1406,26 @@ local .eof_file shl di,9 ;imul 512 add di,point_to_free_root ;смещение в уже записанных 32-х структурах. ;необходимо внести значение в рут дир т.е. 32 байта +if DEBUG + pushad +; mov ax,point_default +; mov ax, + mov cx,0x0a + mov di,show_db2 + mov dword[ds:di],' ' + mov word [ds:di+4],' ' + call decode +;Show size + mov si,show_db2 + call printplain +; +; xor ax,ax +; int 0x16 + popad +end if + + + ;gs:di - указатель для внесения инфорации в рут область фат таблицы инормации о файле. mov si,shot_name_fat mov cx,11 @@ -1412,7 +1467,7 @@ local .eof_file push di ;DIR_FstClusLO Младшее слово номера первого кластера. -; mov ax,point_next_fat_str ;загрузим указатель на элемент фат таблицы т.е. это номер фат записи + ; mov ax,point_next_fat_str ;загрузим указатель на элемент фат таблицы т.е. это номер фат записи ;FATOffset = N + (N / 2) т.е. это уже у нас смещение мы знаем что -начинается все с 3-го элемента записи фат mov bx,ax shr bx,1 @@ -1488,8 +1543,11 @@ if DEBUG shl di,9 ;imul 512 add di,point_to_free_root ;смещение в уже записанных 32-х структурах. + push di + mov si,dest_name_fat mov cx,11 + ;запишем в структуру имя @@: mov al,byte [es:di] inc di @@ -1497,8 +1555,12 @@ if DEBUG inc si loop @b - xor ax,ax - mov byte [si],al + mov di,si + inc di + pop ax + mov cx,0xa + call decode + mov si,dest_name_fat call printplain popad @@ -1593,9 +1655,10 @@ macro check_name_file { local .no_equal local .exit +local .loop_size_root_dir ;вычислим длинну строчки имени назначения, которую будем сравнивать с уже записанными данными. ;преобразуем в аналог фат записи сточку с именем назначения - convertion_file_name + convertion_file_name ; преобразовали имя по нужным правилам test ax,ax jnz .exit @@ -1605,47 +1668,60 @@ local .exit mov di,firstDataSect sub di,size_root_dir ;теперь в ax размер в секторах начала рут дир - - shl di,9 ;imul 512 - - - - -;di= Это смещение от начала буфера до рут директории. +;di= Это смещение от начала буфера до рут директории. в пределах 64 кб. ;загрузим значение - т.е. кол-во элементов, которые мы можем просматривать. mov dx,root_dir_entry_count -; mov si,point_to_dest_file_name + mov si,point_to_dest_file_name mov ax,info_real_mode_size add ax,0x1000 mov gs,ax +.loop_size_root_dir: + +if DEBUG +; pushad +; push di +; mov eax,dword[gs:di] +; mov si,(check_root_fat_+14) +; mov dword [ds:si],'____' +; mov dword [ds:si+4],'____' +; mov dword[ds:si],eax +; mov eax,dword[gs:di+4] +; mov dword[ds:si+4],eax +; +; +; xor eax,eax +; mov ax,gs;point_next_fat_str +; mov cx,0x0a +; mov di,check_root_fat_ +; mov dword [di],' ' +; mov word [di+4],' ' +; call decode +; xor eax,eax +; pop ax +; mov di,(check_root_fat_+7) +; mov dword [di],' ' +; mov word [di+4],' ' +; call decode + +;Show size +; mov si,check_root_fat_ +; call printplain + +; xor ax,ax +; int 0x16 +; popad +end if + + xor bx,bx mov cx,11 ;size of name in struct FAT @@: - mov al,byte [ds:si+bx] + mov al,byte [es:si+bx] mov ah,byte [gs:di+bx] ;gs:di - point to name in fat struct - -if DEBUG - pushad - - - mov cx,11 -;input cx=size al=char будет выведен символ сколько раз указано в cx -@@: - mov al,byte [gs:di] - inc di - call putchar - loop @b - - xor ax,ax - int 0x16 - - - popad -end if inc bx cmp ah,al @@ -1654,6 +1730,7 @@ end if ; dec cx ; jnz @b loop @b + ;.succesfuly: ;печально, такое имя уже имеется :( or ax,-1 @@ -1661,11 +1738,9 @@ end if .no_equal: - mov cx,11;save_cx_check_name - xor bx,bx add di,32 ;fat struct =32 byte dec dx - jnz @b + jnz .loop_size_root_dir ;.exit_check_name: and ax,0 @@ -1673,17 +1748,14 @@ end if .exit: if DEBUG - pusha -; movzx eax,ax;point_next_fat_str - mov cx,0x0a - mov di,check_name_fat_msg - mov dword [di],' ' - mov word [di+4],' ' - call decode + pushad ;Show size - mov si,check_name_fat_msg - call printplain - popa + mov si,check_name_fat_msg_n + test ax,ax + jz @f + mov si,check_name_fat_msg_y +@@: call printplain + popad end if } @@ -1809,19 +1881,18 @@ local .st5 @@: if DEBUG - pusha -; mov ax,point_next_fat_str - mov cx,0x0a - mov di,convertion_file_name_msg - call decode -;Show size - mov si,convertion_file_name_msg - call printplain + pushad + + mov si,convertion_file_name_msg_y + test ax,ax + jz @f + mov si,convertion_file_name_msg_n +@@: call printplain mov si,shot_name_fat mov byte [si+12],0 call printplain - popa + popad end if } @@ -1855,15 +1926,18 @@ local .correct_on_byte ; shl eax,9 ;умножим на 512 if DEBUG - pusha -; mov eax,ebx;point_next_fat_str + pushad + xor eax,eax + mov ax,info_real_mode_size mov cx,0x0a - mov di,show_db1 + mov di,seg_where_get_data + mov dword [di],' ' + mov word [di+4],' ' call decode ;Show size - mov si,show_db1 + mov si,seg_where_get_data call printplain - popa + popad end if diff --git a/kernel/trunk/sec_loader/trunk/sl_equ.inc b/kernel/trunk/sec_loader/trunk/sl_equ.inc index 311700815b..c19d2393ae 100644 --- a/kernel/trunk/sec_loader/trunk/sl_equ.inc +++ b/kernel/trunk/sec_loader/trunk/sl_equ.inc @@ -87,7 +87,7 @@ size_root_dir equ word [bp-80] ; firstDataSect equ word [bp-82] ;первый сектор данных в сеторах от 0 DataClasters equ word [bp-84] ;размер массива доступной для записи данных в кластерах. point_to_free_root equ word [bp-86] ;указатель на следующий пустую запись в рут дир -point_to_dest_file_name equ word [bp-88] ;указывает на начало имени файла назначения. +point_to_dest_file_name equ word [bp-88] ;указывает на начало имени файла назначения. в формате es:point_to_dest_file_name, где es =0x2000 data_offset equ word [bp-90] ;смещение в кластерах для записанных данных т.е перекинутых за 1-й мб first_input equ word [bp-92] ;поле для флагов в преобразовании имени. save_di_RAMDISK equ word [bp-94] ;сохраним di -указателя при обработке секции diff --git a/kernel/trunk/sec_loader/trunk/startos.ini b/kernel/trunk/sec_loader/trunk/startos.ini index 9158d12b23..cb9c409e2d 100644 --- a/kernel/trunk/sec_loader/trunk/startos.ini +++ b/kernel/trunk/sec_loader/trunk/startos.ini @@ -60,7 +60,7 @@ RamdiskFile=kord/filema~1/kfar,"File Managers/kfar" [kolibri_EE] name="KOLIBRY EXCLUSIVE EDITION" descript="KOLIBRY EXCLUSIVE EDITION BEST OF THE BEST opetation system" -LoaderModule=kord/kolibri.ldm +LoaderModule=kolibri/kolibri.ldm RamdiskFS=FAT RamdiskSector=512 RamdiskCluster=1 @@ -69,19 +69,7 @@ LoaderRamImage=kolibri.img RamdiskPATH=/kolibri/ RamdiskFile=@menu,@menu RamdiskFile=@PANEL,@PANEL -RamdiskFile=@RB,@RB -RamdiskFile=@rcher,@rcher -RamdiskFile=@ss,@ss -RamdiskFile=ac97snd,ac97snd -RamdiskFile=animage,animage -RamdiskFile=AUTOEXEC.CMD,AUTOEXEC.CMD -RamdiskFile=AUTORUN.DAT,AUTORUN.DAT -RamdiskFile=calc,calc -RamdiskFile=calendar,calendar -RamdiskFile=progs/cdp,cdp -RamdiskFile=cmd,cmd -RamdiskFile=config.inc,config.inc -RamdiskFile=copy2,copy2 +RamdiskFile=@RB,@PANEL [legacy_kolibri] name="KolibriOS"