Окна в DOSe

Тема в разделе "WASM.ASSEMBLER", создана пользователем al79, 15 июл 2009.

  1. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Собственно вопрос в заголовке.
    Порылся в инете, но ни чего не нашел, как в DOS скажем сделать окно типа "EDIT", сделать кнопку, существуют ли какие-то компоненты уже в DOSe или все это надо рисовать самому?
     
  2. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Первое не обязательна.

    Код (Text):
    1. { DOS Pascal }
    2. {$F+}
    3. Procedure Outt(Color,X,Y:byte; AddrText:pointer);
    4.  Begin
    5.    Asm
    6.    pusha
    7.    push  ds
    8.    push  es
    9.    push  ScreenSeg
    10.    pop   es
    11.    cld
    12.    mov   al,160
    13.    mov   ah,Y
    14.    add   ah,StartYWindow
    15.    cmp   ah,1
    16.    jb    @@NotDisplay
    17.    cmp   ah,MaxRows
    18.    ja    @@NotDisplay
    19.    dec   ah
    20.    mul   ah
    21.    mov   bx,ax
    22.    xor   dx,dx
    23.    mov   dl,X
    24.    add   dl,StartXWindow
    25.    lds   si,AddrText
    26.    lodsb
    27.    xor   ch,ch
    28.    mov   cl,al
    29.    test  cx,cx
    30.    jz    @@NotDisplay
    31.    mov   ah,Color
    32. @@FillStr:
    33.    lodsb
    34.    cmp   dl,1
    35.    jb    @@SkipDisplay
    36.    cmp   dl,MaxCol
    37.    ja    @@SkipDisplay
    38.    mov   di,dx
    39.    dec   di
    40.    shl   di,1
    41.    add   di,bx
    42.    stosw
    43. @@SkipDisplay:
    44.    inc   dl
    45.    loop  @@FillStr
    46. @@NotDisplay:
    47.    pop   es
    48.    pop   ds
    49.    popa
    50.    End;
    51.  End;
     
  3. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    al79
    лучше сам напиши, через видеобуфер работай
     
  4. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    окна какого типа? граф/текст?
    для текст - турбовижн или, например, ауи от опенваткома или еще поищите
     
  5. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Окна текстовые, надо просто подправить одну программу написанную для DOSa, а она вся сделана в виде таких окошечек, вот и возник вопрос, как все это раньше делалось, может были для этого какие то библиотеки в составе DOSа. А какой отладчик можете посоветовать для программ под DOS?
     
  6. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Либо через BIOS - это будет видно если перехватить определенные функции int 10h (удобно в SoftIce) - если да, то попадешь сначала в библиотечную функцию, или действительно через прямую запись в видеобуфер (маловероятно, но...).

    В любом случае это будет subprogram - поднимаясь вверх по вызовам ,,, и т.д.

    td или просто SoftIce (для проблемных случаев, под win который).
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    td, afdpro.
     
  8. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    А кто нибудь может поделиться сылкой, где скачать Soft-Ice 2.8 ?
     
  9. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Второй день поиска принесли плоды, все пошел углублять свои знания про DOS.
     
  10. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    Практически никто во времена ДОСа не юзал int 10h, ибо слишком медленно. Обычное дело было - рисовать прямо в видеопамять.
     
  11. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Ursus

    Попробую ироничный ответ:

    Лично я встречал неоднократно.
     
  12. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    тебе сильно повезет если в просторах сети найдешь исходник msdos там на с реализация мини винды на псевдографике, называется коровой - cow - charaster oriented windows
     
  13. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    с интерфейсом мотора управляющего окнами разобрался ??
    В DOS средств для поддержки окон нет. Существовало много разных оконных движков особенно псевдографических. Автор hddspeed например испоьзовал борландовский.
     
  14. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    На окна решил забить, скачал SoftIce 2.8 для DOS и описание, но вот пока запустить его не могу.
    Единственное не могу понять, на этой машине еще установлина Win98, соответственно при запуске HIMEM.SYS и ЕММ386.EXE грузится из папки WINDOWS. Вот чем они отличаются от родных DOSовских, незнаю, может поэтому SoftIce не работает. Вот все собираюсь дойти до той машины скормить ей из DOS6.22 HIMEM.SYS и ЕММ386.EXE может поможет запутить SoftIce.
     
  15. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    а он не из-за emm ли не грузится.
     
  16. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    в смысле только из-за emm386
     
  17. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    al79
    забей на СофтАйс для дос. Как любитель доса, могу сказать - неудобно. ОСОБЕННО если отлаживаешь не sys, а обычную пользовательскую программу. Хороший отладчик - insight. А если специальные случаи, вместо отладки лучше дампы скидывать, а потом в дизассемблере нужное (и только нужное) место смотреть. Дамперов под ДОС масса, в том числе - с выбором нужной области памяти.

    - если у тебя старая прога, работающая с базами данных (фокспро или клиппер какой), и ты в нее хочешь в форму добавить новое поле... которого вообще не было... то флаг тебе в руки, но я бы не взялся, будь я на твоем месте. Я бы сказал "е... в смысле, дальше мучайтесь без меня". Потому что дело не ограничится добавлением поля... легче всю базу переконвертировать и под виндоуз переписать оболочку.

    - если проблема стоит в русификации - для этого не нужно разбираться как выводились окна. Ищещь строку, заменяешь на свое.

    - если возникает ошибка "переполнение", то это легко устранимо, опять же, не разбираясь в окнах. Там определяется скорость процессора путем выполнения некоторого цикла. И потом что-то на что-то делится... А поскольку на быстрых машинах этот цикл выполняется очень быстро, то число получается маленькое... и переполнение при делении.

    Поэтому, может стоит подробнее рассказать, чего именно надо сделать? Чтоб зазря месяц на разборки с SoftIce 2.8 не тратить?
     
  18. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Пробовал SoftIce загружать до HIMEM.SYS и ЕММ386.EXE, тогда он раза три останавливается и в дампе все показывает, что остановился в точке вызова INT 3, а потом просто все виснет.
    Если загружать после HIMEM.SYS и ЕММ386.EXE, то выдает сообщеие не поню точно, но что то там ругается на CONTROLER 386.
    Дело даже не в руссификации, просто эту программу надо заставить кирилицу принимать, а то сейчас она ругается "Инвалидный символ". А по поводу окон сначала думал, что по окну можно найти его обработчик ну соответственно было бы проще поправить программу.
     
  19. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Нет там обработчиков :) там простая плоская логика - ждать ввода строки, проверить на валидность. Должна быть элементарная проверка - "если символ > 127, то выдать ошибку". Как правило, это делалось либо в случаях когда введенное являлось потом именем файла (файлы в ДОС именуются в формате 8.3, только латинские символы и цифры, некоторые специальные символы (!-#) ), либо по каким-то соображениям автора. Тебе надо не отладчик. Тебе надо дизассемблер. Типа Sourcer. Хотя ИДА тоже вполне подойдет.
    1. Смотришь на предмет упакованности. Если упаковано чем-то, распаковываешь.
    2. Распакованный скармливаешь дизассемблеру.
    3. Ищешь то, что может быть вводом строки. Скорее всего, это сделано через прерывания, а не чтением скан-кодов из порта. Скорее всего, это в единственном месте (в процедуре, которую смело можешь назвать InputString). Ищещь вызовы этой процедуры - либо поиском в листинге соурсера, либо используя файл перекрестных ссылок, либо в ИДЕ - там все проще и удобнее.
    4. После найденных точек вызова процедуры ищещь проверку на валидность. Проверка может быть как внутри процедуры (тогда ты ее уже найдешь на шаге 3, глобальный запрет кириллицы), либо в одном-двух местах (авторы посчитали, что тут критически важно позволять ввод только латинских символов).

    Как-то так.
     
  20. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Что за программа, если не секрет? Может быть легче выложить куда-нибудь, показать в натуре? Задача выглядит несложной и вполне решаемой, если только какие экзотические упаковщики-крипторы не используются, или это в самом деле окажется база данных клиппер-парус-фокспро для ДОС, там проверка может быть мудреной. Через описание допустимых знаков в каком-нибудь отдельном файле. Тады ой... время тратить жалко.