Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2025, 14:45   #1
Jenefs
Пользователь
 
Регистрация: 13.04.2025
Сообщений: 10
По умолчанию На своей ОС не работает клавиатура.

Всем привет! Это мой первый пост на данном форуме, поэтому прошу строго не судить
Я написал свою ОСь, и запустив эмулятор Bochs получилось так, что клавиатура не работает, либо, не идёт переход к ядру ОСи. Прилагаю архив с исодниками и бинарниками, JOS.BIN это уже все скомпилированные файлы. Ассемблер FASM.
Вложения
Тип файла: zip FASMOS.zip (5.6 Кб, 4 просмотров)
Jenefs вне форума Ответить с цитированием
Старый 15.04.2025, 14:27   #2
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 183
По умолчанию

в файле FBOOT.ASM в начале такой текст:
Код:
         mov ah,10h
         int 16h
                 
Continue:
        cmp al, 0Dh     ;Если нажимаем на Enter, то переходим к загрузке ядра
        jz Kernel
        jmp Continue    ;Если нет, снова ожидаем нажатия клавиши
                 
Kernel:
Мне кажется, чтение нажатия клавиши на клавиатуре лучше производить другой функцией BIOS, а именно
функцией 00h преррывания 16h.
"Функция 00h выполняет чтение кода символа из буфера клавиатуры, если он там есть. Если буфер клавиатуры пуст, программа переводится в состояние ожидания до тех пор, пока не будет нажата какая-нибудь клавиша. Скан-код и ASCII-код нажатой клавиши передаются программе."
https://frolov-lib.ru/books/bsp/v02/ch2_4.htm

И мне кажется, в случае с клавишей ENTER, лучше считывать не ASCII-код, а аппаратный scan-код. По той ссылке что я привёл выше, скан-код ENTER равен 1Ch.
Значит надо написать:
Код:
         
Continue:
         mov ah,00h
         int 16h
                 
        cmp ah, 1Ch     ;Если нажимаем на Enter, то переходим к загрузке ядра
        jz Kernel
        jmp Continue    ;Если нет, снова ожидаем нажатия клавиши
                 
Kernel:
DeepFlake вне форума Ответить с цитированием
Старый 15.04.2025, 15:10   #3
Jenefs
Пользователь
 
Регистрация: 13.04.2025
Сообщений: 10
По умолчанию

При эмулировании в Bochs 2.6.5 выдаёт в консоли такой текст при нажатии ENTER.
Изображения
Тип файла: png ва.PNG (6.9 Кб, 19 просмотров)
Jenefs вне форума Ответить с цитированием
Старый 15.04.2025, 15:13   #4
Jenefs
Пользователь
 
Регистрация: 13.04.2025
Сообщений: 10
По умолчанию

Данный текст выдавался ещё при старом коде из архива
Jenefs вне форума Ответить с цитированием
Старый 15.04.2025, 16:16   #5
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 183
По умолчанию

- Какую версию bochs используете?
- Какую конфигурацию виртуальной машины используете? (приведите текст файл)
- С какого образа загружаетесь? с floppy или hdd
- Как сделали образ носителя данных и как в него записали свою ОС?
DeepFlake вне форума Ответить с цитированием
Старый 15.04.2025, 16:53   #6
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 183
По умолчанию

Я попробовал Bochs 2.7 - постоянно падает. Используйте лучше Qemu, он хороший.
DeepFlake вне форума Ответить с цитированием
Старый 15.04.2025, 17:03   #7
Jenefs
Пользователь
 
Регистрация: 13.04.2025
Сообщений: 10
По умолчанию

Цитата:
Сообщение от DeepFlake Посмотреть сообщение
- Какую версию bochs используете?
- Какую конфигурацию виртуальной машины используете? (приведите текст файл)
- С какого образа загружаетесь? с floppy или hdd
- Как сделали образ носителя данных и как в него записали свою ОС?
1. 2.6.5 либо 2.6.10 (в 2 версиях в консоли одно и тоже, что на скриншоте.)
2. BIN файл через FLOPPY.
3. Через макрос, существующий в архиве под название JOS.ASM (BIN формат уже скомпилированная система макросом)
Jenefs вне форума Ответить с цитированием
Старый 15.04.2025, 17:05   #8
Jenefs
Пользователь
 
Регистрация: 13.04.2025
Сообщений: 10
По умолчанию

Насчёт конфигурации - текст из файла bochsxrc.


# configuration file generated by Bochs
plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, gameport=1
config_interface: win32config
display_library: win32
memory: host=32, guest=32
romimage: file="C:\Program Files (x86)\Bochs-2.6.5/BIOS-bochs-latest"
vgaromimage: file="C:\Program Files (x86)\Bochs-2.6.5/VGABIOS-lgpl-latest"
boot: floppy
floppy_bootsig_check: disabled=0
floppya: type=1_44, 1_44="C:\Users\Jenefs44\Documents\J OS\ASM\JOS.BIN", status=inserted, write_protected=0
# no floppyb
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=none
ata0-slave: type=none
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata1-master: type=none
ata1-slave: type=none
ata2: enabled=0
ata3: enabled=0
pci: enabled=1, chipset=i440fx
vga: extension=vbe, update_freq=5
cpu: count=1, ips=4000000, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0
cpuid: level=6, stepping=3, model=3, family=6, vendor_string="GenuineIntel", brand_string=" Intel(R) Pentium(R) 4 CPU "
cpuid: mmx=1, apic=xapic, simd=sse2, sse4a=0, misaligned_sse=0, sep=1, movbe=0, adx=0
cpuid: aes=0, sha=0, xsave=0, xsaveopt=0, x86_64=1, 1g_pages=0, pcid=0, fsgsbase=0
cpuid: smep=0, smap=0, mwait=1, vmx=1
print_timestamps: enabled=0
port_e9_hack: enabled=0
private_colormap: enabled=0
clock: sync=none, time0=local, rtc_sync=0
# no cmosimage
# no loader
log: -
logprefix: %t%e%d
debug: action=ignore
info: action=report
error: action=report
panic: action=ask
keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
mouse: type=ps2, enabled=0, toggle=ctrl+mbutton
sound: driver="default", waveout=none, wavein=none
speaker: enabled=1, mode=sound
parport1: enabled=1, file=none
parport2: enabled=0
com1: enabled=1, mode=null
com2: enabled=0
com3: enabled=0
com4: enabled=0
Jenefs вне форума Ответить с цитированием
Старый 15.04.2025, 17:06   #9
Jenefs
Пользователь
 
Регистрация: 13.04.2025
Сообщений: 10
По умолчанию

Цитата:
Сообщение от DeepFlake Посмотреть сообщение
Я попробовал Bochs 2.7 - постоянно падает. Используйте лучше Qemu, он хороший.
Ах да... QEMU тоже не хочет давать действие на ENTER.
Jenefs вне форума Ответить с цитированием
Старый 15.04.2025, 23:22   #10
cllc
Пользователь
 
Регистрация: 17.01.2020
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Jenefs Посмотреть сообщение
Я написал свою ОСь,...
Смелое заявление (https://metanit.com/assembler/articles/MiniOS.php).
Там вся работа идет с жестким диском, поэтому образ нужно подключать как жесткий диск, и грузиться, соответственно, с него. И будьте внимательны: учитывайте в коде изменение длины выводимых сообщений, если уж меняете их на свои.
cllc на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает клавиатура KT82 Компьютерное железо 0 16.11.2016 18:04
не работает USB клавиатура из БИОС SAMOUCHKA Компьютерное железо 3 07.01.2013 10:35
В Counter-Strike 1.6 не работает мыш и клавиатура Pasha__12 Компьютерное железо 5 31.03.2011 13:25
В Counter-Strike 1.6 не работает мыш и клавиатура Pasha__12 Компьютерное железо 0 28.03.2011 21:11
Клавиатура не работает ViNcHeStEr Компьютерное железо 1 04.07.2008 15:52