Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
altdmb14
0 / 0 / 0
Регистрация: 29.12.2015
Сообщений: 6
1

Bios boot order загрузка fdd,zip

10.08.2018, 17:14. Просмотров 2421. Ответов 21
Метки нет (Все метки)

Всем привет. Есть у BIOS всех знакомая подпрограмма Boot Order, которая обычно располагается на горячей клавише F9. Нажимая её мы выбираем с какого устройства загрузиться, будь то: cdrom, fdd, hdd, usb и zip.
И бывают случаи когда приносят какой-нибудь старый ПК, на котором мне надо загрузиться с загрузочного USB, но только вот нет этого пункта в Boot Order или точнее есть что-то типа usb-fdd, usb-zip но нажимая их загрузка не происходит.

И в связи заинтересовал меня следующий вопрос, как работает подпрограмма Boot Order? Получается что в ней уже от завода производителя зашито адресное пространство контроллеров к которым она обращается когда мы выбираем соответствующий пункт? И существуют ли какие-то стандартизованные адреса и не подскажите литературу где можно про это прочитать? Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2018, 17:14
Ответы с готовыми решениями:

Форматирование дорожки гибкого диска FDD
Здравствуйте, пишу вам из-за проблемы связанной с форматированием дорожки...

Reboot and select proper boot device or insert boot media in selected boot device and press a key - BIOS
Добрый вечер! Тема, конечно, заезженная, но решение так и не найдено....

В BIOS в BOOT не могу выставить первым boot девайсом SDD (на котором стоит винда)
Из названия суть вы думаю поняли. В BIOS в BOOT не могу выставить SDD на...

Что такое boot manager, и почему после выключения secure boot в uefi bios не грузится винда?
Вообщем переустановил винду, в биосе появился некий windows boot manager в...

Горячие клавиши POST (загрузочное меню BIOS, Boot Menu, BBS POPUP, Boot Agent, Flash Utility...)
Собрано на просторах сети.Что-то подправлено, что-то проверено. Desktop...

21
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
10.08.2018, 18:29 2
Цитата Сообщение от altdmb14 Посмотреть сообщение
или точнее есть что-то типа usb-fdd, usb-zip но нажимая их загрузка не происходит.
Загрузка с USB-FDD :
2
Изображения
 
Constantin Cat
1975 / 1063 / 367
Регистрация: 28.02.2015
Сообщений: 2,338
Завершенные тесты: 1
10.08.2018, 18:31 3
Старые BIOS
Тест регистров процессора CPU;
Тест контрольной суммы ПЗУ;
Тест системного таймера и порта звуковой сигнализации;
Проверка контроллера прямого доступа к памяти;
Проверка регенератора оперативной памяти;
Проверка нижней области ОЗУ для проецирования резидентных программ в BIOS;
Запуск резидентных программ;
Проверка стандартного графического адаптера (VGA);
Проверка оперативной памяти;
Проверка основных устройств ввода;
Проверка CMOS;
Проверка основных портов LPT/COM;
Проверка накопителей дисководов (CD или DVD привод);
Проверка накопителей жёстких дисков (HDD);
Самотестирование функциональных подсистем BIOS;
Передача управления загрузчику.
Тест системного таймера и порта звуковой сигнализации; после этого доступны звуковые сигналы, типа: ти-ти-та-та:
Проверка стандартного графического адаптера, после прохождения этого теста информация будет видна на экране.

USB-порт, активируется самой системой, и Вам нужно самому запускать драйвер DOS-USB.
1
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
10.08.2018, 18:46 4
Никогда не пробовал, но наверное, если флешку отформатировать как дискету (просто двоично шмякнуть с ее начала образ 1.44 мегабайтной дискеты), то наверное удастся с нее загрузиться как с usb-fdd. Обычно-то флешка размечается как жесткий диск, т.е. usb-hdd.

Добавлено через 7 минут
Цитата Сообщение от Constantin Cat Посмотреть сообщение
и Вам нужно самому запускать драйвер DOS-USB
MS-DOS все равно ведь обращается к дискам через сервис int 13h BIOS. Так-что если загрузишься с флешки, то BIOS неизбежно будет по int 13h исполнять работу с флешкой вместо диска/дискеты и тут драйвер не нужен будет. Драйвер нужен небось только если ты загрузился как обычно с жесткого диска, а потом хочешь поработать с флешкой как с другим, не системным диском.
1
Constantin Cat
1975 / 1063 / 367
Регистрация: 28.02.2015
Сообщений: 2,338
Завершенные тесты: 1
10.08.2018, 20:43 5
Было у меня одно чудо от Toshiba, слетел BOOT, ничего нет, ни CD, FDD.
Ни USB-CD или USB-FDD, не говоря о просто USB - не реагировало. Помогла приблуда IDE-IDEхз, и спомощью другого РС переписал код MBR.
1
R71MT
4326 / 1405 / 299
Регистрация: 29.07.2014
Сообщений: 2,449
Записей в блоге: 5
10.08.2018, 23:35 6
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Цитата Сообщение от altdmb14 Посмотреть сообщение
Получается что в ней уже от завода производителя зашито адресное пространство контроллеров? И существуют ли какие-то стандартизованные адреса
..адреса контроллёров не прошиваются производителем, а вычисляются динамически процедурой POST, после чего прописываются в конфиг.пространство PCI-шины. Это пространство заполняется по-новой при каждом ребуте, и содержит данные о всех устройствах системы (Vendor/Device-ID, IRQ, номера портов etc).

Что касается USB, то POST найдёт его контроллёры UHCI/OHCI/EHCI по коду-класса(0C0300h), а вот присоединённые к этому контроллёру устройства - уже нет. Не трудно догадаться почему.. -этих устройств в природе - как звёзд на небе, и каждый со-своим "характером". Чтобы с ними общаться, биосу нужны их драйвера. Здесь всплывают 2 проблемы:

1) Из трёх типов USB-контроллёров только UHCI (USB-1) поддерживает обмен через порты ввода-вывода, а OHCI/EHCI (USB-2) уже через память, посредством MMIO - Memory_Mapped_I/O. Через порты легко - IN/OUT и всё, а через память - нужны уже шинные транзакации. USB имеет свой протокол обмена с хостом (интерфейс), который должен поддерживать биос, иначе - тупик.

2) Устройство USB нужно определить как загрузочное, для чего система эмулирует флэшку как SCSI-устройство. Биос должен иметь встроенный 16-битный драйвер "USBASPI.SYS" (ASPI - Advanced SCSI Programming Interface), который и обеспечивает их взаимоотношения. Благодаря этому интерфейсу, флэшка понимает элементарные ATA-команды и воспринимается системой как диск.

Цитата Сообщение от altdmb14 Посмотреть сообщение
или точнее есть что-то типа usb-fdd, usb-zip но нажимая их загрузка не происходит.
возможно биос видит только контроллёр UHCI, работа которого основана на портах ввода-вывода без MMIO. Его дров будет видеть все устройства как флопы (со-скорость черепахи), что как-раз соответсвует пропускной способности USB-1 в 2 Мбит/с.

В данном случае, можно создать дискету DOS с внешним драйвером "USBASPI.SYS" (гуглится легко), и через дос подтягивать уже полноценную флэху.
2
altdmb14
0 / 0 / 0
Регистрация: 29.12.2015
Сообщений: 6
11.08.2018, 21:31  [ТС] 7
Спасибо. А предположим прошивка BIOS на последнюю версию может добавить поддержку загрузки с USB или тут уже всё индивидуально?
Просто у меня такая ситуация, что у компа нету не cd-привода не уж тем более floopy и поэтому создать дискету не на чем..
0
Constantin Cat
1975 / 1063 / 367
Регистрация: 28.02.2015
Сообщений: 2,338
Завершенные тесты: 1
11.08.2018, 22:10 8
Цитата Сообщение от Constantin Cat Посмотреть сообщение
ыло у меня одно чудо от Toshiba, слетел BOOT, ничего нет, ни CD, FDD.
Ни USB-CD или USB-FDD, не говоря о просто USB - не реагировало. Помогла приблуда IDE-IDEхз, и спомощью другого РС переписал код MBR.
Я Вам писал из HDD сделал дискету, переписав MBR+ и
Цитата Сообщение от Constantin Cat Посмотреть сообщение
самому запускать драйвер DOS-USB
и только потом получил доступ к флешке с BOOT-Win

после таких "нервов", я этот комп сплавил
1
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
12.08.2018, 21:54 9
Так вот тут интересная вещь. Решил я с этим делом наконец разобраться. А то Интернет забит советами использовать чудные проги, а не сутью дела. Открыл под Win7-64 флешку как \\.\PhysicalDrive1 и начал на нее писать образ загрузочной дискеты один в один.
Обнаружил, что в MBR запись проходит, а вот уже в следующий сектор ошибка 5 Отказано в доступе. Вот это непонятно. Видимо с флешкой нужно сделать что-то еще прежде чем писать. Ну там размонтировать ее что-ли ?

Если в том-же самом коде ничего не трогать и заменить \\.\PhysicalDrive1 на \\.\G: то образ дискеты успешно записывается, но в логический диск на флешке. И разумеется все файлы образа тут-же на флешке оказываются видны. Но я хочу записать образ дискеты не в логический, а в физический диск. И тут отказ в доступе ко второму физическому сектору. Где, вообще-то, начинаются скрытые сектора обычно. А ошибка "отказано в доступе" ставит в тупик. Что не нравится то ? И как тот доступ приобресть ?

Добавлено через 7 минут
Еще интересное. Если в момент запуска программы, какая-то другая программа работает с флешкой (с файловой системой конечно, в моем случае просто просматривается диск G: в другой панели FAR-а), то открыть на запись \\.\G: нельзя, ибо ошибка 32 "Файл занят другим процессом". А вот \\.\PhysicalDrive1 в этот момент на запись успешно открывается. Но все равно первая запись 512-и байт у меня проходит, а вторая - ошибка 5.

Добавлено через 1 час 45 минут
--------------------------------------------------------------------------------------------
Короче, пошаманил немного с вызовами DeviceIoControl (потом уточню минимальную рабочую схему и расскажу) и запись образа дискеты на флешку (не в логический том, а на физическую флешку с самого ее начала) прошла. Указал в BIOS-е грузиться с нее как с Floppy и MS-DOS нормально загрузилась. Правда образ MS-DOS-а оказался каким-то левым и там руссификатор клавиатуры KLARISA.COM оказался под раскладку qcuken , а не qwerty. Вставил флешку в компьютер с виндой-7 и самое интересное, что винда файлы на флешке видит. Ну перекроил AUTOEXEC.BAT и загрузился уже без Кларисы. Так вот интересная вещь : 7-я винда оказывается видит файлы как на флешках размеченных с MBR-ом (USB-HDD), так и без MBR-а (USB-FDD) (я именно такую сделал). В общем, если комп умеет грузить только USB-FDD, то надо флешку разметить без MBR-а и всего делов. Осталось только понять стоящие особняком USB-ZIP.
3
R71MT
4326 / 1405 / 299
Регистрация: 29.07.2014
Сообщений: 2,449
Записей в блоге: 5
12.08.2018, 22:08 10
Ethereal, если так не получается,
то можно насильно закатать образ двоичным редактором HxD по Ctrl+C и Ctrl+V
только нужно иметь ввиду, что при вставке на флэшку, размер её увеличится на размер образа
поэтому сперва нужно вырезать на флэхе N-ное кол-во байт (равное образу), а потом вставить по Ctrl+V скопированный образ. Иначе при записи получишь ошибку, мол - "размер данных превышает размер носителя."
3
Миниатюры
Bios boot order загрузка fdd,zip  
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
13.08.2018, 03:16 11
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Цитата Сообщение от R71MT Посмотреть сообщение
Ethereal, если так не получается,
Самолично написанной программой не получалось. Это имелось ввиду.
А готовым двоичным редактором как может не получиться-то ? Мне вот нравится такой : https://dmde.ru/download.html Для привыкшему когда-то к нортоновскому Disk editor-у зело приятен.

Добавлено через 3 часа 33 минуты
-----------------------------------------------------------------------------------------------------------
Значится, чтобы шмякнуть образ чего-нибудь на флешку (пусть G : ) как на физический диск минимально надо ... запишу фортообразно, ибо переписывать на сцях влом :

Код
1.) 0 0 OPEN_EXISTING 0 0 GENERIC_WRITE " \\.\G:" CreateFileA
    и получаем хендл логического диска
2.) 0 &tmpdw 0 0 0 0 FSCTL_LOCK_VOLUME хендл_логдиска DeviceIoControl
    если ошибка, то флешка занята другим процессом, завершаемся и разбираемся кто там ее занял.
    Если этот lock volume не проделать, то Win-7 кроме сектора с MBR-ом на физическом диске писать
    никуда не даст, якобы отказано в доступе.
3.) 0 &tmpdw buflen &buf 0 0 IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS хендл_логдиска DeviceIoControl
    где buflen = длина буфера по адресу &buf и она не менее 0x20 байт, а можно точно 0x20 байт
    в этом буфере будет получена структура VOLUME_DISK_EXTENTS по идее переменной длины,
    но просто по смещению 8 забираем из этой структруры байт индекса физического диска
    Если этот байт к примеру 02, то формируем строчку \\.\PhysicalDrive2
4.) 0 0 OPEN_EXISTING 0 0 GENERIC_WRITE " \\.\PhysicalDrive2" CreateFileA
    и получаем хендл физического диска
5.) Пишем по WriteFile по хендлу физического диска нужный двойчный образ.
    Можно за один вызов WriteFile, главное чтобы длина записываемых данных была всегда кратна 0x200
6.) Закрываем хендл физического диска (а можно забить, по завершении программы сам закроется)
7.) 0 &tmpdw 0 0 0 0 FSCTL_DISMOUNT_VOLUME хендл_логдиска DeviceIoControl
    Если этого не проделать, то винды не поймут, что диск файловую систему сменил
    и будут пытаться читать что-то из уже не существующей файловой системы.
    А если сделать то при первом-же последующем обращении к диску перемонтируют
    его заново с тем образом, что мы записали.
8.) И вот тут только закрываем хендл логического диска. Это снимет с него lock
    (а можно забить, по завершении программы само закроется и снимется)
4
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
14.08.2018, 05:27 12
Тут я подумал, что эти изыскания должны закончится написанием какой-нибудь
утилиты, мало ли пригодится в дальнейшем. Вводные такие - имеется компьютер
который умеет грузить только USB-FDD и чтобы его починить нужно загрузить
на нем хотя-бы MS-DOS. Тогда решение получается простое, нужно взять образ
загрузочной дискеты 1.44М с MS-DOS и двоичным редактором скопировать его
на флешку как на физическое устройство. Проблема в том, что на 1.44М
дискету с MS-DOS нужный инструментарий типично вот чуть-чуть не лез.
Скажем DiskEdit отжирал килобайт 300, TD хавал вообще пол метра,
а тут еще сама DOS места занимает. Это насколько помню прошлые времена.
И тут я подумал, что когда-то исключительно на внутреннем рынке Японии
продавались дискеты по 2.88 метра, а раз продавались, то и стопудово
грузились. И должны грузиться и впредь. А места под инструментарий
там будет как раз.

В общем, повозился я с этим делом и наконец получилось.
Но вот вопрос будет ли это работать не только у меня, поэтому кому будет
не лень, прошу проверить вот это :
http://www.karelmasters.com/download/FlashMSDOS622.rar
Утилитка форматирует флешку как загрузочную 2.88 мегабайта MS-DOS 6.22
вот с таким джентльменским набором :
DOS : DEBUG.EXE EMM386.EXE FDISK.EXE FORMAT.COM HIMEM.SYS MEM.EXE
MODE.COM SUBST.EXE SYS.COM RAMDRIVE.SYS
Волчара, руссификаторы клавиатуры и экрана и еще виртуальный диск на 4 мега.
ASM : TASM TLINK дизассемблер SOURCER и Tech Help
UTIL : -UTIL это перехват прерываний, PEEK смотреть и дампить ОЗУ,
ASCII резидентная справка по кодам и Hackers Viewer
И еще остается полтора метра свободного места под специфический инструментарий
по вкусу, который можно накидать на флешку прямо из Виндов. Так вот вопрос
будет такое грузиться не только у меня ?

Там в файле SOURCE\msdos622.bin обрезанный по последний файл образ дискеты,
который утилита на флешку кидает. Этот образ вмонтирован в .exe-шник утилиты,
так-что каталог SOURCE можно похерить. Я его оставил потому-что некоторые не
особо умные антивирусы любят на мое фортописание ругаться, дескать незнакомый
компилятор, не от Мелкософта, а это подозрительно и надо заорать и я просто
показываю этим каталогом как собирался exe-шник компилятором длиной 10752 байта,
чтобы не было подозрений.

В общем, дальнейшая идея такая, что если это будет и у других работать, то
можно попробовать сделать флешку в формате дискеты с нестандартным, максимально
возможным для FAT-12 размером. Интересно будет ли это грузиться и работать ?
И еще раз, это все для загрузки как USB-FDD, поскольку топик начался
с ситуации с компьютерами, которые другого грузить не умеют.

Добавлено через 6 минут
З.Ы. Пока ситуация такая. На моем компе грузится если указать один из трех (из пяти всего) способов загрузки: Auto, Floppy, Forced FDD, но почему-то только если флешка вставлена в определенный разъем. В нем она определяется как 1-е устройство USB. А в других разъемах определяется как 5-е устройство после SD- CF- SM- и MS-reader-ов и грузиться даже не пытается.
3
Вложения
Тип файла: rar FlashMSDOS622.rar (1.38 Мб, 1 просмотров)
Constantin Cat
1975 / 1063 / 367
Регистрация: 28.02.2015
Сообщений: 2,338
Завершенные тесты: 1
14.08.2018, 12:04 13
Цитата Сообщение от Ethereal Посмотреть сообщение
Тогда решение получается простое, нужно взять образ загрузочной дискеты 1.44М с MS-DOS и двоичным редактором скопировать его на флешку как на физическое устройство. Проблема в том, что на 1.44М дискету с MS-DOS нужный инструментарий типично вот чуть-чуть не лез.
В чем проблема, загрузившись с загрузочной дискеты в MSDOS, сама загрузочная дискете Вам уже не нужна в приводе, т.к. система уже в памяти. В былые времена, у меня была загрузочная дискета + несколько дискет с утилитами.
1
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
14.08.2018, 20:35 14
Если пользоваться волчарой или Norton Commander-ом, то файл COMMAND.COM в наличии таки требуется. Но к чему твой совет в контексте топика ? Мы тут за флешки говорили. Использовать сразу несколько флешек таки глупо.
1
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
15.08.2018, 10:19 15
Вижу просто массу откликов на мою просьбу.

Но все равно продолжим наши страдашки по поводу загрузки флешки как USB-FDD.

1.) Disk Base Table, что находится по адресу вектора прерывания INT 1Eh
просто не содержит такого параметра, как число головок у дискеты. Поэтому
придется этот параметр не трогать. Если он не выкладывается как параметр,
значит в софте он будет тупо захардкожен.
2.) Число секторов в дорожку есть и в Disk Base Table и в загрузочном
секторе дискеты тоже указывается.
3.) А вот числа дорожек нет ни там ни там ! Значит число дорожек - параметр
исключительно ВЫЧИСЛЯЕМЫЙ, а тогда можем его варьировать без опаски, что это
не заработает ! Он вычислится, а раз вычислится, то, надо полагать, правильно.

Ну а тогда представим себе мистическую дискету у которой аж 907 дорожек.
В ограничения 0..1023 по номеру дорожки у int 13h мы вписываемся.
Пусть у этой дискеты, как и у стандартной дискеты 1.44 Mb, две стороны
и 18 секторов в дорожку, Тогда на мистической дискете будет
907*18*2 = 32652 секторов
В ограничения 0..65535 по номеру логического сектора у int 25h/26h мы вписываемся.
Ну и пусть у дискеты стандартные 512 байт в секторе.

Тээкс ... один сектор положим на загрузочный.
Пусть в корневом каталоге 240 = 0xF0 элементов.
Тогда под каталог уйдет 0xF0 * 0x20 = 0x1E00 байт или 15 полных секторов.
Под копию FAT кинем 12 секторов. Итого две копии займут 24 сектора.
Под файлы останется 32652 - 1 - 2*12 - 15 = 32612 секторов.
Бают, что MS-DOS 3.30 , которая только и умела работать, что с FAT-12,
понимала кластеры до 4К размером. Ну так и пусть кластер будет в 4 кило
(сведений какой размер кластера у FAT-12 понимает MS-DOS 6.22 я не нарыл,
но 4-е кило она гарантированно должна понимать раз 3.30 понимала).
Блин ... 32612 на 8 (число секторов в 4-х килобайтах) нацело не делится.
А ну тогда отбросим четыре сектора у дискеты, будем указывать в
загрузочном секторе, что у дискеты всего 32648 секторов, т.е на 4-е меньше.
Тогда это будет дискета на 32648 / 2 = 16324 килобайта = 15.94 мегабайта.
И тогда под файлы уйдет 32608 секторов или 32608 / 8 = 4076 полных кластера.
Поскольку 4076 < 4085, то ни одна ОС не должна усомниться, что здесь должна
быть именно FAT-12 (согласно официальной спецификации, единственный допустимый
способ определения типа FAT - это число кластеров и у FAT-16 это 4085..65524).
Номера кластеров у файлов будут 2..4077 = 2..FED и будут укладываться
в беспроблемный диапазон номеров кластеров 2..FEF (Wiki бает, что
номера кластеров F00..F05 Reserved in some contexts ... Volume sizes
which would utilize these values as data clusters should be avoided).
4076 кластеров потребуют в таблице FAT 4076/2*3 = 6114 байт, плюс
3 байта под F0 FF FF, как выглядят в ее начале зарезервированные 0-й и
1-й кластеры, итого 6117 байт, что почти под завязку влезет в те
512*12 = 6144 байта, что отведены под копию FAT в 12-и секторах.

Уфф... С геометрией дискеты определились. Теперь начинаем ее собирать.

Хватаем загрузочный сектор от 1.44 дискеты MS-DOS 6.22. Сохраняем в файл
Image.bin. Двойчным редактором меняем в нем :
По смещению 0xD ставим байт 08 (8 секторов на кластер)
По смещению 0x11 ставим байты F0 00 (240 элементов в корневом каталоге)
По смещению 0x13 ставим байты 88 7F (общее число секторов 32648)
По смещению 0x16 ставим байты 0C 00 (12 секторов в копии FAT)
Создаем файл 0.bin из 0x1800 нулей и первыми тремя байтами у него втыкаем F0 FF FF
Делаем COPY /B Image.bin + 0.bin + 0.bin
Это будут две пустые копии FAT.
Создаем файл 1.bin из 0x1E00 нулей
Делаем COPY /B Image.bin + 1.bin
Это будет пустой корневой каталог.
Копируем файл Image.bin на флешку как на физическое устройство.
Теперь виндами копируем на флешку файл IO.SYS от MS-DOS 6.22
Он обязательно в корне файловой системы должен быть первым,
иначе MS-DOS 6.22 не загрузится.
За ним копируем MSDOS.SYS от 6.22 и за ним COMMAND.COM от той-же 6.22
Пытаемся загрузиться с полученной флешки как USB-FDD и ...

Грузится, едрит-мадрит !!! Загрузка MS-DOS 6.22 с флешки,
якобы как с огромной 16-и мегабайтной дискеты !!!
Не как с жесткого диска, что очевидно, а как с дискеты.

Ну а теперь закидываем виндами на флешку остальные необходимые
файлы. Места-то, по меркам MS-DOS, там уже до дури.

Если вдруг кому будет интересно, утилиту, форматирующую такую
флешку, по большей части для себя, конечно, я положил тут
http://www.karelmasters.com/download/FlashMSDOS622_16Mb.rar
2
Вложения
Тип файла: rar FlashMSDOS622_16Mb.rar (1.38 Мб, 1 просмотров)
shmkv
1207 / 430 / 59
Регистрация: 21.07.2015
Сообщений: 1,113
20.08.2018, 13:22 16
У флешки и fdd совершенно разные протоколы обмена на шине usb, поэтому я крайне сомневаюсь, что шаманства с флешкой "заставят" BIOS видеть ее как дискету (если он ее и до этого не видел).

Добавлено через 6 минут
А режим Super Floppy вполне известная вещь: многие BIOS'ы включают его, когда не находят на флешке MBR. Другое дело, что такие BIOS'ы и в режиме USB HDD прекрасно грузятся.
1
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
21.08.2018, 05:11 17
Цитата Сообщение от shmkv Посмотреть сообщение
У флешки и fdd совершенно разные протоколы обмена на шине usb
Эти протоколы обмена расположены на более низком уровне и должны быть совершенно прозрачны на верхнем. Если кто-то (в данном случае BIOS) предоставляет интерфейс int 13h, то поверх него должна работать вся MS-DOS (кроме программы format и аналогичных, которые полезут напрямую пообщаться с контроллером дисковода) не зависимо от того, что на нижнем уровне.
Кстати, ms-dos-овская команда format с "суперфлоппи"-флешкой наполовину работает. Поскольку в ней объединено в одно то, что на RT-11, к примеру, было разными вещами из разных уровней - собственно FORMAT была разметкой дорожек физической дискеты, работающая с контроллером физического устройства на самом нижнем уровне и INIT была укладкой пустой файловой системы на любое блочное устройство, работающей на уровне выше, то результат ms-dos-овского format оказывается смесью правильного и глючного. А именно - нормально размеченная файловая система у которой в пару последних секторов каждой копии FAT в качестве мусора записано содержимое ОЗУ. Отчего якобы помечены сбойные сектора. Но стоит хвосты копий FAT вручную нулями забить и все нормалек. Так-что даже и format при загрузке с такой флешки кое-как работает.

Добавлено через 1 минуту
Цитата Сообщение от shmkv Посмотреть сообщение
поэтому я крайне сомневаюсь
Сомневаешься - проверь.

Добавлено через 11 минут
Цитата Сообщение от shmkv Посмотреть сообщение
шаманства с флешкой "заставят" BIOS видеть ее как дискету
Если бы хоть что-то у IBM PC было сделано не через задницу (а так выходит, что кое-что таки было сделано), то BIOS видел бы флешку не как дискету или не дискету, а как блочное устройство у которого в данном конкретном случае доступ к блокам (читай секторам) производится так-то и так-то, т.е дрова используются такие-то. И операционную систему можно было бы грузить (а в нашем случае получается, что можно) с любого такого устройства. А у RT-11 именно так и было - была команда BOOT , которой указывалось блочное устройство с которого грузиться, главное чтобы драйвер этого устройства (задающий код чтения и записи блоков с этого устройства) в наличии был.
Ну а раз мне с "суперфлоппи" загрузиться удалось, значит хотя бы мой BIOS был сделан не через задницу.
1
shmkv
1207 / 430 / 59
Регистрация: 21.07.2015
Сообщений: 1,113
21.08.2018, 13:39 18
Ethereal, мораль моего поста простая: если в BIOS'е нет драйвера для USB HDD, то хоть ты тресни, но не заставишь его видеть флешку.

Добавлено через 5 минут
Цитата Сообщение от Ethereal Посмотреть сообщение
Сомневаешься - проверь.
Зачем? И что я должен увидеть? У меня раньше моя игрушечная ОС грузилась именно в этом режиме, это потом я уже MBR стал писать, т.к. многие BIOS'ы без него отказываются грузиться. И у меня был тогда древний ноут, так вот его BIOS USB HDD не видел ни в каком виде вообще.

Добавлено через 5 минут
В режиме Super Floppy (номер диска как у дискеты), кстати, на award bios начала 0х был забавный баг: если флешка отформатирована не в FAT16(12), а, например, в FAT32, то он при загрузке 0го сектора сам жестко подставлял параметры геометрии в структуры FAT, причем даже не определяя тип FAT... Из-за этого происходила порча какого-то важного поля (вроде старшей части количества секторов), мне приходилось дублировать это поле в другой части. При загрузке в нормальной режиме с MBR такого не наблюдалось.
1
R71MT
4326 / 1405 / 299
Регистрация: 29.07.2014
Сообщений: 2,449
Записей в блоге: 5
21.08.2018, 22:36 19
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Цитата Сообщение от Ethereal Посмотреть сообщение
Вижу просто массу откликов на мою просьбу.
лично я хотел протестить, но у меня нету среди загрузочных устройств юсби-флопа.
Так-что.. но эксперимент мне понравился - я тоже делал форматер FAT.
Там-же фигня.. вся хрень в загрузочном секторе - FAT12,16 отличаются только самой таблицей FAT - 12 или 16-битное смещение. FAT32 с другой кухни. Когда-то с корректировкой писал форматер для флопов, и всё работало. Изменив "секторов на диске" можно юзать:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
; fasm-code
; format.com для FAT-16
;------------------------
org  100h
jmp  start
 
;-------------- Загрузочный сектор PBR дискеты(А) FAT16 -------------------------------
@bpb:      jmp  @bootCode          ; 00h - джумп на загрузчик..
           db   90h                ; 02h - NOP
osName     db   'SkyNet  '         ; 03h - 8 байт идентифекатор OS
sector     dw   512                ; 0Bh - 512-байт в секторе
cluster    db   1                  ; 0Dh - секторов в кластере
reserv     dw   1                  ; 0Eh - резервных секторов (размер BOOT-сектора)
fats       db   2                  ; 10h - кол-во таблиц FAT
entries    dw   512                ; 11h - число 32-байтных записей в корневом каталоге 'ROOT'
smlTotal   dw   2880               ; 13h -->  общее кол-во секторов на диске (мл.слово)
mediaDes   db   0F0h               ; 15h - дескриптор носителя: F0=флоп, F8=диск.
secFat     dw   9                  ; 16h - секторов в одной таблице FAT
secTrack   dw   18                 ; 18h - секторов в треке (EOT - End of Track).
heads      dw   2                  ; 1Ah - всего головок чтения.
hidden     dd   0                  ; 1Ch - скрытых секторов на диске.
bigTotal   dd   0                  ; 20h -->  общее кол-во секторов на диске (ст.двойное слово)
dskNum     db   0                  ; 24h - номер диска в системе: А=0, С=80h
current    db   0                  ; 25h - резерв (текущее число головок)
signature  db   29h                ; 26h - сигнатура расширенного загрузчика (всегда 29h)
volSN      dd   0                  ; 27h - серийник тома (раздела диска).
volLabel   db   11 dup(' ')        ; 2Bh - 11 байтная метка тома.
sysID      db   'FAT16   '         ; 36h - 8 байтная строка файловой системы.
@bootCode: db   448 dup(0)         ; 3Eh - код загрузчика.
bootSign   db   55h,0AAh           ; 1FEh - загрузочная сигнатура!
;-------------- Конец нулевого/загрузочного сектора FAT16 -----------------------------
 
; После загрузочного сектора с размером (512*смещение(0Eh) идет таблица FAT1.
; FAT - это карта кластеров, её размер определяется полем(16h) 'SectorPerFat'.
; В примере выше значение данного поля равняется 0009h, т.е. 9-секторов или 4608 байт.
; FAT-12/16/32 отличаются разрядностью индексных указателей в таблице FAT.
; Таким образом FAT12 - это таблица с одним столбцом и (4608*2)/3 = 3072 строк (1,5 байта на указатель).
; Структура FAT16 меняется: 4608/2=2304 строк (2 байта на указатель).
; У FAT32 будет ещё меньше строк: 4608/4=1152 строк (4 байта на указатель).
; Таблица FAT при фиксированной разрядности указателей имеет переменный размер,
; который зависит от объёма области данных диска.
;
; FAT12 используются 12-битные указатели, которыми можно адресовать всего 4096 кластера.
; FAT16 уже 65536 кластера, и FAT32 - более 4 млрд кластеров.
; Размер кластера FAT по-умолчанию = 512 байт, значит они могут адресовать памяти:
; FAT12 = 2Mb, FAT16 = 32Mb, FAT32 = 2Tb.
; Однако размер кластера можно менять от 512b до 64Kb, что увеличивает ёмкость диска.
но тут проблема - не каждый биос грузится в флэхи.
Чипсет должен дружить с протоколом (интерфейсом) USB, иначе обмен не возможен.
А если он видит флопы 3.5, не факт что будет поддерживать и флопы больших размеров.

это я цитирую..
Цитата Сообщение от Ethereal Посмотреть сообщение
кому будет не лень, прошу проверить вот это :
а так - крутая практика,
2
Ethereal
4525 / 1819 / 235
Регистрация: 17.02.2013
Сообщений: 2,712
24.08.2018, 08:39 20
Цитата Сообщение от R71MT Посмотреть сообщение
А если он видит флопы 3.5, не факт что будет поддерживать и флопы больших размеров.
Так я специально сделал, чтобы все было как у 1.44 дискеты только число секторов больше. CHS только в количестве C отличается. BIOS должен быть совсем уж по удодски написан и содержать прямую проверку на равенство параметров параметрам известных дискет, чтобы не заработало.

Добавлено через 43 минуты
Цитата Сообщение от shmkv Посмотреть сообщение
Ethereal, мораль моего поста простая: если в BIOS'е нет драйвера для USB HDD, то хоть ты тресни, но не заставишь его видеть флешку.
Думаю, что не тресну. Если потребуется согласователь, то придумаю согласователь. Чай с микроконтроллерами дело имел. Если у USB FDD и USB HDD на нижнем уровне разные протоколы, то назови эти протоколы и подумаем как согласовать один с другим.
1
24.08.2018, 08:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2018, 08:39

boot piority order (windows 7)
Доброго Всем времени суток. Помогите решить проблемку.. Не получается...

bios-20081106121710.zip
У меня ноутбук Тoshiba L 300. Работал безотказно, машина хорошая. Но, вчера я...

HSQL запрос. Что не так? "from hiberdata.Order order where order.clientId=?"
public List loadOrdersByClientId(Integer clientId) { return...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru