Загрузочный диск

Discussion in 'WASM.BEGINNERS' started by XshStasX, Jan 15, 2009.

  1. Phantom_84

    Phantom_84 New Member

    Blog Posts:
    0
    Joined:
    Jun 6, 2007
    Messages:
    820
    Вообще варианта два: самый правильный и самый простой.
    1. Самый правильный: написать первичный загрузчик для CD, анализирующий CDFS и загружающий com-файл, создавая для него соответствующее окружение (стартовый внутрисегментный адрес 100h, стек в вершине этого же сегмента, после которого образ файла в памяти может быть и продолжен, хотя здесь соглашением можно и пренебречь - проще и удобнее расположить стек перед образом файла в памяти, если выбранный для него адрес загрузки (линейный) позволяет).
    2. Самый простой: воспользоваться тем фактом, что стандарт загрузки с CD позволяет иметь достаточно большой бут-блок (0FFFFh 512-байтовых секторов, реально в пределах всей доступной базовой памяти, начиная с позиции 7C00h). Т.е. можно весь образ com-файла сделать "первичным загрузчиком", чтобы его загрузила непосредственно BIOS, а окружение com-файла сформировать позиционно независимым кодом, расположенным непосредственно в начале файла. Размер образа лучше сделать кратным не 512 байтам, а 2 кб, и сигнатуру 0AA55h разместить не только в конце образа, но и под первой 512-байтовой отметкой.
    Code (Text):
    1.   org 100h
    2.   xor bx, bx
    3.   cli
    4.   mov ss, bx
    5.   mov sp, 7C00h
    6.   sti
    7.   jmp 7B0h:@f
    8.  
    9. @@:
    10.   ...
    11.   rb 2FEh-$
    12.   dw 0AA55h
    13.   ...
    14.   rb 7FFh - ($-0FFh) mod 800h
    15.   dw 0AA55h
    Edited. Если компоновщик позволяет собрать com-файл с отличным от 100h стартовым смещением, то все становится еще проще.
     
  2. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2008
    Messages:
    991
    Хорошо, а как все теперь записать на диск?
    можешь более подробно по шагах ро сказать?
    вот аська напиши сюда если не трудно 437803640
     
  3. Phantom_84

    Phantom_84 New Member

    Blog Posts:
    0
    Joined:
    Jun 6, 2007
    Messages:
    820
    Пусть на это вопрос кто-нибудь другой ответит :)
     
  4. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2008
    Messages:
    991
    не ну как я понимаю, напишем мы первичный загрузчик СД, но ведь это вообщем простой файл *.сом если его записать на диск то он запишется как и все другие файлы....
    хорошо и в конце этого загрузчика можна писать свою программу? иль он ее сам запустит,хотя как я не понимаю мы ведь имя ее не указали((??
     
  5. exst

    exst New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2009
    Messages:
    91
    Доброго времени суток! У вас должен получиться обычный двоичный файл (не СОМ), который запишите в неро как загрузочный диск (если быть точнее - используете вместо образа дискеты ДОСа). Посмотрите материал по ссылке: http://www.lowlevel.ru/?namespace=osdev8
     
  6. exst

    exst New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2009
    Messages:
    91
    P.S. Сигнатура вроде должна быть 55AA.
     
  7. Nina

    Nina New Member

    Blog Posts:
    0
    Joined:
    Jan 18, 2009
    Messages:
    2
    Представьте шахматную доску, там 62 клетки. Одна фигура стоит на углу шахматной доски, ее нужно провести через все клетки не повторяясь (1 раз в одной клетке) в другой угол доски (угол который находиться на против по диагонали). Ходить можно только линейно, т.е. хоть по одной клетки, но только прямо влево, вправо, по диагонали нельзя. ПОМОГИТЕ ПОЖАЛУЙСТА!!!
     
  8. exst

    exst New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2009
    Messages:
    91
    Извиняюсь за оффтоп: Какая-то странная у вас шахматная доска...

    P.S. А где слово "лопата"?
     
  9. Semiono

    Semiono Member

    Blog Posts:
    0
    Joined:
    Nov 27, 2005
    Messages:
    793
    Отформатировать RW в Nero и вписать нужный дамп hex-эдитором в нужный сектор ;-
    ?

    P.S. Остап к тому времени знал только один ход: 226,228... это я про шахматы =)
     
  10. Phantom_84

    Phantom_84 New Member

    Blog Posts:
    0
    Joined:
    Jun 6, 2007
    Messages:
    820
    Ну если в big-endian, тогда да :)

    XshStasX, ничего не хотите делать сами!.. Вам, видимо, подойдет "самый простой способ" (шаблон исходника с комментариями прилагается - см. выше). К примеру в Nero выбираешь Bootable CD/DVD и далее в настройках:
    Image file - твой com-файл
    Enable expert settings - yes
    Kind of emulation - no emulation
    Segment - 7C0 (hex)
    Number of loaded sectors - размер твоего com-файла в 512-байтных секторах
     
  11. Semiono

    Semiono Member

    Blog Posts:
    0
    Joined:
    Nov 27, 2005
    Messages:
    793
    а я и не знал что com-file можно в качестве img указать! хотя и говорят что com - это кусок кода без формата, но всёж не дискеты образ... любопытно, пригодиться спасибо!
    ---
    стал записывать gentoo.iso ох уж эти незнакомые проги, никогда в Alcohol не писал раньше, тут он мне выдал такое, что обнаружен DVD Recorder и типа если вы нажмёте Yes то он запишет... а если нажмёте No то он запишет типа тоже 0_o
    А ещё когда всё покатило, я указал скорость 4x минимально, а в логе он зафиксировал, что типа 4x нелегальная скорость и было измененно на 1x, хотя он на самом деле за пару сек прожёг! дурдом! =)