mov eax, <Любой физический адрес в пределах 4 Гб>
mov byte ptr fs:[eax], <Какой-то байт>
Что полезного можно написать для ДОС
Проблема - не могу ничего придумать толкового, что на этом хозяйстве писать. Можно конечно и бестолковое, но на крайний случай.
Мне бы тему, одно дело - писать полезную вещь, другое - для галочки. Заинтересованность в проблеме сильно увеличивает скорость написания.
Просто не представляю, что полезного можно написать для ДОС
Помогите кто может, подкиньте идею...
А можно вопрос не по теме. А зачем НУЖНо что то написать под ДОС? Причем как я понял неважно что. Просто любопытство раздирает, что это за причина такая? )
Курсовая :)
Ну напрши графическую оболочку? =))
Или чтонить типа X сервера=)
можно писать только эмулятор этого доса под win, типа
DosBox, но братьтакое задание на курсовую лучше не надо.
Сейчас Dos овские приложения используются реально только
в гос структурах и банках там вообще всё оченьзапущено
а для использованияпроги надо еедесятьраз утвердить у старых
толстых дядек власть имущих. Без их визы прогу просто недопустят
до работы. А у них позиция как правило такова:"Зачем менять
то что работает уже n лет?"
Так что не парься, пиши какой- нибудь мощный скринсейвер (3D)
и выглядит красиво и на препода действует(особо если он сделан
с тенями закраской Гуро и без OpenGL)
[/QUOTE]
И я того же мнения.
(с видео API)
Гм. Не думаю, что с 16-битным кодом много путного выйдет
Если в тексте делать будеш, то Turbo Vision (сзаранее извеняюсь за возможно неверное название) используй, будет и быстрее и проше, а самое главное надёжнее и более впечатляюще получится....
Забыл добавить, если на Borland Pascal пишеш!
Не там нужно графику прямо в видеопамять
[QUOTE=misha_turist]
Если в тексте делать будеш, то Turbo Vision
...
Забыл добавить, если на Borland Pascal пишеш![/QUOTE]
Turbo Vision, и в борландовских C++ компиляторах так же была =))
Кстати, не сочти за наезд, но попробуй мягкие знаки в конце глаголов ставить - прям сильно глаза режет. Все равно, что транслит в идентификаторах =))
Цитата:
Turbo Vision, и в борландовских C++ компиляторах так же была =))
Ну это другим воднее, я на C++, к сожалению, не пишу...))
Цитата:
Кстати, не сочти за наезд, но попробуй мягкие знаки в конце глаголов ставить - прям сильно глаза режет. Все равно, что транслит в идентификаторах =))
))) Да уж не сочту =), что есть, то есть... Я их и пробую ставить, но это у меня не всегда получается....((
[QUOTE=aks]графическую оболочку можно и 16-ти битную писать с прямым доступом в видеопамять.[/QUOTE]
Под современные в 16-битном режиме? Адресовывать видеопамять в сотни метров? :D
А про прямой доступ - сам же писал =))
Да и не сотни метров. А как думаешь раньше писали, довольствовались 64 килобайтами адресуемыми 16-битным указателем? =)
asm{
mov edi,adr
mov fs(или gs):edi,data
}
примерно так ))
Есть такая фишка. Переходишь в защищенный режим, создавая глобальную таблицу дескрипторов (GDT) таким образом, чтобы один из сегментов был 4-гигабайтным (стартовое смещение 0, предел 0xFFFFFFFF), загружаешь регистры fs и gs селектором этого сегмента. Затем выходишь из защищенного режима обратно в реальный. После этого ты спокойно можешь пользоваться всеми 4 Гб памяти через регистры fs и gs! Главное, после обратного перехода в реальный режим ничего в сами регистры fs и gs не писать. Вот такая фишка в 32-битных процессорах. Причем адресация в этом большом сегменте будет не типичная (16*сегмент + смещение), а просто 32-битное смещение (поскольку стартовый адрес нулевой). Т. е. можешь написать что-то типа того:
Код:
Фишка работает на всех 32-битных процах, начиная с 80386.
Ещё есть идея, придумай новую файловую систему и реализуй соответствующий файл-менеджер под ДОС. Отформатированная таким образом дискета не будет читаться нигде, кроме твоего файл-менеджера :) Помнится, в свое время я это сделал. Только с жесткими дисками лучше не экспериментируй...
Ведь доделання простая программа, гораздо лучше, чем не доделанная сложная....
Ведь доделання простая программа, гораздо лучше, чем не доделанная сложная....[/QUOTE]
Хм... А по-моему, разработать простенькую файловую систему и файл-менеджер под ДОС (с командной строкой) для нее - как раз дело для курсовой. Ты же не хочешь фигню типа Hello world? ФС это же не операционная система, не настолько уж и сложно... У меня это заняло где-то с недельку, максимум две.
К тому же можно найти реальное применение
Я например графический интерфейс к базе данных писал с мышкой кнопками и окнами прикольно но надаедает
Ну, графика наверное, отпадает... Может быть, сетевую какую-нибудь заморочку?
Правда такой режим я не ставил - в институте компы не потянут :)
Это называется Нереальным режимом!!!
[QUOTE=cheburator]
Ещё есть идея, придумай новую файловую систему и реализуй соответствующий файл-менеджер под ДОС. Отформатированная таким образом дискета не будет читаться нигде, кроме твоего файл-менеджера :) Помнится, в свое время я это сделал. Только с жесткими дисками лучше не экспериментируй...[/QUOTE]
А как придумать свою файловую систему и отформатировать в ней дискетку???????
Функция вывода пикселя такая:
Код:
WritePixel proc ; void WritePixel(int x,int y, byte color);
;in:
; ax - x
; bx - y
; si - color
push ax
push bx
push cx
xchg ax,bx
xor dx,dx
mul vmode_size_x
add ax,bx
jnc no_inc_page
inc dx
no_inc_page:
; dx - number of the window
; ax - number of pixel in window
push ax
call SetWindow
pop di
mov ax,si
stosb
pop cx
pop bx
pop ax
ret
WritePixel endp
;in:
; ax - x
; bx - y
; si - color
push ax
push bx
push cx
xchg ax,bx
xor dx,dx
mul vmode_size_x
add ax,bx
jnc no_inc_page
inc dx
no_inc_page:
; dx - number of the window
; ax - number of pixel in window
push ax
call SetWindow
pop di
mov ax,si
stosb
pop cx
pop bx
pop ax
ret
WritePixel endp
Подозреваю, что страшно туплю, но где??
А чем вам текстовая оболочка не нравится?
По заданию должна быть графика + вывод bmp
Т.е. происходит наложение.
А то пространство, которое находится сверху области, занимаемой первым банком, пустое и не заполняется
То есть сверху экрана первая полоса - всегда черная, следующая - это две в одной, потом все нормально.
Придумать как будут располагаться в секторах дискеты части файловой системы - заголовок, содержимое и т.п. Написать прогу для работы с этой ФС.
main(void)
{
printf("hello, world!\n");
}
:D
Оказывается, это было из-за проверки текущего окна:
Код:
SetWindow proc
; in: dx - number
[COLOR="Red"]cmp dx,current_window
je no_change_window[/COLOR]
xor bx,bx
mov ax,4F05h
int 10h
[COLOR="Red"] mov dx,current_window
no_change_window:[/COLOR]
ret
SetWindow endp
; in: dx - number
[COLOR="Red"]cmp dx,current_window
je no_change_window[/COLOR]
xor bx,bx
mov ax,4F05h
int 10h
[COLOR="Red"] mov dx,current_window
no_change_window:[/COLOR]
ret
SetWindow endp
main(void)
{
printf("hello, world!\n");
}
[/QUOTE]
У тя компилятор ругнется, скажет: function must return a value, поэтому нужно писать void main (void) :)
gcc не ругается, проверено.
2 10098 : Уже в Standart C нужно обязательно указывать, а если gcc не ругаеться, то это оставлено для совместимости с очень древними исходниками.
Ну и что главное что не ругается
[quote=pervoPROkodetz]
Сейчас Dos овские приложения используются реально только
в гос структурах и банках
[/quote]
я вот работаю в ОЧЕНЬ большой компании. не государственной и весьма не бедной. у нас для определенных задач используется DOS. причем - купленый у мелкософта. так что не спешите хоронить ДОС :)
[quote=pervoPROkodetz]
там вообще всё оченьзапущено
[/quote]
юноша, а вы работали в банках, что так уверенно говорите?
А что, протокол обмена данными между СУБД и клиентом, ты думаешь, одинаковый для всех СУБД? Я так не думаю. Не зря же для клиентских приложений у каждой СУБД есть свой модуль (как правило, dll) и не зря придумали ODBC и другие универсальные стандарты. А драйверы ODBC для DOS произодители СУБД вроде не выпускают...
[QUOTE=squirL]такую программу с руками оторвут - магазины, те же банки... [/QUOTE]
Интересно, почему же раньше до этого никто не догадался?
[QUOTE=squirL]юноша, а вы работали в банках, что так уверенно говорите?[/QUOTE]
Думаю, речь здесь идет о большинстве случаев, а не о единичных исключениях.
[/quote]
имелось ввиду - для какой либо СУБД, а не с любой. неточно выразился.
[quote=cheburator]
Интересно, почему же раньше до этого никто не догадался?
[/quote]
ну почему же никто ;)
[quote=cheburator]
Думаю, речь здесь идет о большинстве случаев, а не о единичных исключениях.[/quote]
с точностью до наоборот.
Я вполне поверю, что в качастве рабочих лошадок в банках и больших конторах используется DOS и ему подобные системы, но в банкоматах и аппаратах приёма оплаты используется всеми НЕ любимый Windows....
Вот так вот...)))
p.s. Не обижайтесь за флут.
В нормальных банкоматах QNX стоит .
сам придумал??? банки не используют нелицензионное ПО - себе дороже. а знаешь, сколько QNX стоит для продакшн использования? разорится любой банк. во всех банкоматах, что я видел стоял Windows XP. в некоторых реликтах NT 4 либо OS/2
В живом виде видел и на сайтец можеш сходить .
сцылку в студию. и адрес банкомата. ты часом банкоматы с банковскими серверами не путаешь? :D