Page 3 of 7

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 1:23 pm
by art_zh
dunkaist
Первичный загрузчик должен помещаться в одном 512-байтовом секторе, причем 64 байта там уже заняты дремучими структурами BIOS.
Там не только для парсера места нет,- там и самому загрузчику очень тесно.

Вторичный загрузчик вполне бы мог справиться с парсингом простого конфигурационного файла.
Всё лучше, чем рисовать псевдографические менюшки (с прокруткой!) и давать обратный отсчет секунд на синем экране...

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 2:01 pm
by yogev_ezra
Ну в общем, кто сделает это, получит около двухсот баксов, если заказчик захочет использовать Колибри. Знаю, что немного, но больше, чем ничего :wink:
Плюс, в любом случае, эта функциональность поможет всем остальным пользователям Колибри.

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 2:19 pm
by dunkaist
art_zh,
в общих чертах с процессом загрузки я знаком и, естественно, имел в виду вторичный загрузчик.
art_zh wrote:Всё лучше, чем рисовать псевдографические менюшки (с прокруткой!) и давать обратный отсчет секунд на синем экране...
Мне кажется, этот код в любом случае следует оставить, ведь конфиг может быть не найден или пуст.

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 2:22 pm
by yogev_ezra
dunkaist wrote:
art_zh wrote:Всё лучше, чем рисовать псевдографические менюшки (с прокруткой!) и давать обратный отсчет секунд на синем экране...
Мне кажется, этот код в любом случае следует оставить, ведь конфиг может быть не найден или пуст.
Я тоже думаю, что сегодняшний функционал нужно оставить - так и тестировать легче, и новый пользователь будет знать, какие у него вообще опции есть. А когда пользователь решил, что и где ставить, то уже создаст файл конфига.

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 2:32 pm
by art_zh
yogev_ezra,
:lol: Креста на тебе нет !!!

Впрочем, "$200+потом" все равно лучше чем "забесплатно+никогда", а мне все равно этот код надо будет выкладывать.
dunkaist wrote:Мне кажется, этот код в любом случае следует оставить, ведь конфиг может быть не найден или пуст.
Тогда по дефолту.
Система жестко определена по железу; единственное что может реально меняться у конечного юзера - видеорежим.
И вообще: в ТЗ сказано "без синего экрана", чего ты мне головняков прибавляешь?

P.S. yogev_ezra
И как он (юзер) сможет этот конфиг себе записать, если флешку Колибри не видит?
- только снаружи (в винде)

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 3:00 pm
by yogev_ezra
art_zh wrote:yogev_ezra, :lol: Креста на тебе нет !!!
Ну да, какой крест, я же иудей :lol: У меня максимум может быть маген-давид :wink:
art_zh wrote:Впрочем, "$200+потом" все равно лучше чем "забесплатно+никогда", а мне все равно этот код надо будет выкладывать.
Это сколько согласен заплатить сам клиент. Я вообще нисколько не согласен :mrgreen:
Я уже вложил в Колибри $150*6 (шесть eBox-ов разработчикам) + $2,500 за выставку, итого $3,400 - а обратно пока не увидел ни шекеля, только один заказчик, да и тот - потенциальный. Пока что единственные, кто получил выгоду с моего вложения, это пользователи eBox-3300MX / Edubook (для них появились драйвера). Я не ною и не жалуюсь, я просто подытожил баланс, и пока что я и так в ж@пе :wink: Мог бы заплатить больше - давно бы заплатил бы :oops:
art_zh wrote:
dunkaist wrote:Мне кажется, этот код в любом случае следует оставить, ведь конфиг может быть не найден или пуст.
Тогда по дефолту.
Система жестко определена по железу; единственное что может реально меняться у конечного юзера - видеорежим.
И вообще: в ТЗ сказано "без синего экрана", чего ты мне головняков прибавляешь?
Теперь я сам запутался. ТЗ звучит так: если нет конфиг файла, то работать должно абсолютно так же, как и сегодня - т.е. без изменений вообще - синий экран, 5 секунд, настройка четырёх параметров a,b,c,d. Если конфиг файл есть, то 4 параметра a,b,c,d читаются из него, и тогда синий экран вообще не появляется, а система сразу грузится с этими параметрами. Если конфиг битый или параметры там такие, которые не могут быть, то считается, как будто конфиг файла нет. Всё вышеописанное реально сделать?
art_zh wrote:Слегка поковырялся в бутовом коде. Там можно кое-что ужать, если заменить громоздкие вычисления константами. Удалось освободить 135 байт - должно хватить для загрузки еще одного файла на фиксированный адрес.
А с этого места можно поподробнее? :wink: Что ты там собираешься выкинуть :?: Когда я от программиста слышу слово "константа", меня подбрасывает в воздух :shock:
art_zh wrote:P.S. yogev_ezra
как он (юзер) сможет этот конфиг себе записать, если флешку по условию задачи не видно?
только снаружи (в винде)
Конечно, в винде. Откроет с помощью WinImage, и запишет. Это как раз несложно.

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 3:51 pm
by CleverMouse
Есть же загрузчик kernel/trunk/sec_loader, он как раз создавался с расчётом на динамическую конфигурацию при загрузке и умеет читать файлы. Я не вчитывалась в код, но вроде на его базе легко реализовать то, о чём тут говорится.

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 4:26 pm
by art_zh
Всё вышеописанное реально сделать?
Не всё - у меня конференция через неделю, хочу успеть (для демонстрации) довести до ума загрузчик Колибри-А, чтобы грузил параметры с файла kernel.ini. Кроме этого осталось еще 500 разных дел, так что вернуть синее меню в ближайшее время точно не успею.
А с этого места можно поподробнее? Что ты там собираешься выкинуть Когда я от программиста слышу слово "константа", меня подбрасывает в воздух
У дискеты две головки. Это константа. В нынешнем загрузчике с ней возятся как с переменной BPB_NumHeads:

Code: Select all

conv_abs_to_THS:
	push	bx
	mov	bx,word [BPB_SecPerTrk+boot_program]
	xor	dx,dx
	div	bx
	inc	dx
	mov	cl, dl				; cl = sector number
	mov	bx,word [BPB_NumHeads+boot_program]
	xor	dx,dx
	div	bx
	; !!!!!!! ax = track number, dx = head number
	mov	ch,al				; ch=track number
	xchg	dh,dl				; dh=head number
	mov	dl,0				; dl=0 (drive 0 (a:))
	pop	bx
	retn
А вот что можно сделать, если знать что BPB_NumHeads = 2

Code: Select all

conv_abs_to_THS:
  mov	cx,word [BPB_SecPerTrk+boot_program]    ; << 18 or 36 >>
  xor	dx,dx
  div	cx
  inc	dx
  mov	cl, dl				; cl = sector number
  xor     dx, dx
  shr     ax, 1
  rol     dx, 1           		; dh = head number
  mov     ch, al				; ch = track number
  retn
там еще много таких констант.

CleverMouse
Может кому-то и легко, а я в это чудо так до сих пор и не въехал...

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 5:06 pm
by CleverMouse
Хорошо, я посмотрю на выходных.

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 5:38 pm
by yogev_ezra
art_zh wrote:У дискеты две головки. Это константа. В нынешнем загрузчике с ней возятся как с переменной BPB_NumHeads:
Большое спасибо за разъяснения. А чем руководствовался тот человек, который не использовал число "два", а вычислял его? Бывают дискеты, у которых не 2 головки?
Wikipedia wrote:A "1.44 MB" floppy disk has 80 tracks (numbered 0 to 79), 2 heads (numbered 0 to 1) and 18 sectors per track (numbered 1 to 18).
Therefore, its capacity in sectors is computed as follows: Total Number of Sectors = (80 * 18) * 2 = 2880
2880*512 bytes/sector = 1474560 bytes (1.44 MB)
Цитата отсюда: http://en.wikipedia.org/wiki/Cylinder-head-sector

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 6:09 pm
by CleverMouse
yogev_ezra, когда-то очень давно дискеты и дисководы бывали разные, и ещё более давно существовали односторонние - single-sided - дискеты, на которых, соответственно, была всего одна головка. ВременнЫе подробности, например, можно почерпнуть из http://en.wikipedia.org/wiki/List_of_fl ... sk_formats .

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 6:14 pm
by yogev_ezra
CleverMouse wrote:yogev_ezra, когда-то очень давно дискеты и дисководы бывали разные, и ещё более давно существовали односторонние - single-sided - дискеты, на которых, соответственно, была всего одна головка. ВременнЫе подробности, например, можно почерпнуть из http://en.wikipedia.org/wiki/List_of_fl ... sk_formats .
Это-то я знаю. : Когда-то даже дискет ещё не было, я начал знакомство с компьютером с ZX Spectrum в 1991 году, и грузился с магнитофонной кассеты. Тогда я даже программировал на ассемблере (для Spectrum), но с тех пор отупел :oops: Меня больше интересует, почему Колибри-загрузчик это вычисляет, если единственный поддерживаемый им размер дискеты это 1.44МБ

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 6:15 pm
by CleverMouse
Неверно, что "единственный поддерживаемый" загрузчиком "размер это 1.44МБ".

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 6:19 pm
by yogev_ezra
CleverMouse wrote:Неверно, что "единственный поддерживаемый" загрузчиком "размер это 1.44МБ".
Тогда почему мы предлагаем для скачивания только 1.44МБ, и никаких других? Я уже тебя спрашивал, 2.88МБ нельзя сделать из-за рамдиска, но какой прок от загрузки дискет любого размера, если только один из них поддерживается рамдиском?

Re: выбор вариантов загрузки

Posted: Fri May 27, 2011 6:22 pm
by CleverMouse
Потому что "загрузчик" ≠ "ядро".