shandai ТС
Ветеран форума
Карма +452/-1
Offline
Пол:
Сообщений: 1334
город Хабаровск
Пешеход
|
|
« Ответ #15 : 28 Марта 2009, 08:42:09 » |
|
Классная тема, получил удовольствие, размяв мозг Когда-то в юности написать такую софтину на Паскале было раз плюнуть... Я бы подвесил в память резидент, который смотрел бы за часами... Ок в продолжение темы тебе могу предложить вот что: Есть уже написанный резидентник, который раз в 120 секунд пишет в файл, на этом месте будет асемблерная вставка INT 19h которая будетперегружать комп. И вот эти 120 скунд не могу превратить в 4 аса. В принципе товя идея мне понятна, при загрузке я фиксирую время, потом тупо проверяю его каждую минуту, как оно увеличилось на 4 часа то ребучу? А можно ли все таки раскачать параметр 120 секунд в 14400 секунд (4 часа)? а то я так сделал, на ноч запустил)) и не одной строчки в файл он мне не добавил. Вот текст: **************************************************** {$M $800,0,0 } { 2K stack, no heap } {$F+} uses Crt, Dos; var TimeIntVec : procedure; Counter, M, H, I: Word; F: Text; BuzyFlag: ^Byte; { Флаг DOS'a } procedure Int08; interrupt; const Seconds = 60; { Чеpез сколько секунд записывать } begin Inline ($9C); { Эти две стpоки желательно поставить сначала } TimeIntVec; { Почему - не знаю, но иначе виснет } Inc (Counter); { счетчик тиков } if (Counter>(Seconds*1000 div 55)) and (BuzyFlag^=0) then { Вpемя пpишло и } begin { поpа !} { DOS ничем не занят } Counter := 0; GetTime (H, M, I, I); Assign (F, 'C:\fixlog.txt'); Append (F); WriteLn (F, 'Hour: ', H,', Minutes: ', M); { часы и минуты } Close (F); end; end; begin { Insert ISR into keyboard chain } Counter := 0; asm { Получение кооpдинат флага } push es mov ah, $34 int $21 mov word ptr BuzyFlag, bx mov word ptr BuzyFlag+2, es pop es end; Assign (F, 'C:\fixlog.txt'); Rewrite (F); GetDate (H, M, I, H); WriteLn (F, 'Mounth: ', M,'Date: ', I); {выводим месяц и число} GetTime (H, M, I, I); WriteLn (F, 'Hour: ', H,', Minutes: ', M); { часы и минуты} Close (F); GetIntVec ($8, @TimeIntVec); SetIntVec ($8, Addr (Int08)); Keep (0); end;
|
|
|
Записан
|
Пешеход /Был: ЗАЗ-Lanos 1.6L 109 л.с. / Был: Иж 2126 гранат 2003г, УМПО, кастрюля, КПП ОМСК, стартер от ГАЗ 53, БК-21, звуковой сигнал от ГАЗ 3110, карб (солекс) ДААЗ-21073, свечи всегда "Чемпион", NGK-плохие, укороченная ручка КПП, БСЗ, подогрев заднего стекла и правого седенья, чехлы, тонировка задка, сцепа и диск totti, выжимной Coram, резина cordiant на штамповке РР от волги (все равно не помогает), перемычка АКБ-Стартер (тоже не помогла).
|
|
|
KRWW
Ветеран форума
Карма +511/-0
Offline
Пол:
Сообщений: 4087
Москва
Орбита (97г),белая,УЗАМ + Subaru Forester
|
|
« Ответ #16 : 30 Марта 2009, 02:11:50 » |
|
В чистом ДОС не получится, пожалуй. Там нет многозадачности. А как же работает мышка в Шариках? Этаж по сути 2 проги,одна типо мышку обслуживает ,другая Шареги Всё нормально с многозадачностью в Досе,если тока программист хороший
|
|
|
Записан
|
KRWW ,Владимир. Орбита (97г),белая,УЗАМ + Subaru Forester,2.0 Атмо,РКПП.
|
|
|
Serg_ch
Ветеран форума
Карма +807/-0
Offline
Пол:
Сообщений: 2726
Оренбург
Европа-Азия (Оренбург) Lada Granta Liftback 219170
|
|
« Ответ #17 : 30 Марта 2009, 06:33:04 » |
|
В чистом ДОС не получится, пожалуй. Там нет многозадачности. Если только поставить винду 3.1, а оттуда уже ребутить.
Если точнее, то в MS DOS ее нет. Но есть еще DR DOS А там уже есть подобие многозадачности, проверено, работает if (Counter>(Seconds*1000 div 55)) and (BuzyFlag^=0) then { Вpемя пpишло и } А здесь у тебя переполнения не происходит, когда 14400 множишь на 1000?
|
|
|
Записан
|
Был 2126-030, МПСЗ-Ж (ДПКВ), ГТЦ и вакуумник 2108, сцепление Valeo, перемычка гена (КЗАТЭ, 73 А) - аккумулятор, 3-уровневый РР, бортовой "компьютер" Орион БК-06, ДХО с автовключением, примитивная музыка. Перевернутый, битый, крашеный . Продан с пробегом 129000. Теперь Гранта Лифтбэк, бЭлий, Люкс Навигация.
|
|
|
Faraday
Ветеран форума
Карма +505/-3
Offline
Сообщений: 4322
Екатеринбург
Nissan Qashqai SE+ 2012
|
|
« Ответ #18 : 30 Марта 2009, 07:03:12 » |
|
И вот эти 120 скунд не могу превратить в 4 аса. В принципе товя идея мне понятна, при загрузке я фиксирую время, потом тупо проверяю его каждую минуту, как оно увеличилось на 4 часа то ребучу?
Как все сложно. Раз программа весит в памяти, то можно сохранить время в переменной? И тупо сравнивать, когда процедура вызывается: var DateStart:TDateTime;
procedure Int08; interrupt; var hh:Integer; begin hh:=HoursBetween(now, DateStart); if hh>4 then { reboot } end;
begin DateStart:=Now; GetIntVec ($8, @TimeIntVec); SetIntVec ($8, Addr (Int08)); Keep (0); end;
|
|
|
Записан
|
|
|
|
OVA
Moдератор
Карма +1551/-118
Offline
Пол:
Сообщений: 14739
Тула + д. Ревякино
Нормозавр 21261-070 (был). Нынче Фабула.
Тула + д. Ревякино ИЖ 21261-030
|
|
« Ответ #19 : 30 Марта 2009, 08:01:04 » |
|
Нельзя резидента отдельного пользовать. Только самой этой программой анализировать рабочее время, причем не в абсолютных, в относительных величинах(тиках). А то отдельны модуль подменить легко и все: защита взломана. Еще есть прерыване "будильник". Номера сейчас не помню. Оно для срабатывания по таймеру в момент времени. Одну из процедур программы (перезагрузка) вешаешь как обработчик этого прерывания и задаешь другим прерываниен время срабатывания. Завтра пример кода дам. Если программа должна работать ТОЛЬКО 5 часов в сутки, то этот способ надо дополнять. Время можно хранить прямо в теле файла программы на диске. Код тоже есть, но завтра.
|
|
|
Записан
|
P.S. Василий. Еще один из беглых ижевчан. --- (ОКПП, ГБО, ЭСП), поборол электричество, "бустера" дворников нет
|
|
|
ScrewDriver
Гость
|
|
« Ответ #20 : 30 Марта 2009, 08:50:31 » |
|
Нельзя резидента отдельного пользовать. Только самой этой программой анализировать рабочее время, причем не в абсолютных, в относительных величинах(тиках). А то отдельны модуль подменить легко и все: защита взломана.
Ты прочитай внимательно первый пост Задача-то и стоит в взломе защиты, т.е. в данном случае обмане лицензии программы, которая не хочет работать больше 5 часов непрерывно, и нужно автоматически ребутить комп для ее перезапуска...
|
|
|
Записан
|
|
|
|
Ахинеич
|
|
« Ответ #21 : 30 Марта 2009, 09:20:37 » |
|
В современном компе мне всё видится гораздо проще. Перезапуск можно задать из БИОСа. Только вот если уж речь об MS-DOS, то это трёшка или четвёрочка похоже. Там БИОС такого не позволял ещё. Разве что внешний источник питания по таймеру отключать на пол секунды каждый цикл. А подробнее можно задачу сформулировать? Чем занимается эта самая пятичасовая прога? И что за ограничение такое 5 часов? Смысла операции всей не улавливаю что-то. Ведь лицензионное ограничение таким способом не обойдёшь.
|
|
« Последнее редактирование: 30 Марта 2009, 09:22:30 от Ахинеич »
|
Записан
|
С точки зрения теории Банальных Эрудиций возможности далеко не каждого индивидуума способны игнорировать тенденции парадоксальных эмоций. Резюмируя вышесказанное, нивелируйте свои аппроксимации на ассоциации с ником!
|
|
|
shandai ТС
Ветеран форума
Карма +452/-1
Offline
Пол:
Сообщений: 1334
город Хабаровск
Пешеход
|
|
« Ответ #22 : 30 Марта 2009, 09:56:16 » |
|
Прога принимает входящие пакеты по подключенным к ней телефонным линиям, время работы проги 5 часов, потом она выгружается, реализована она в виде драйвера, и потом ее можно запустить только перезагрузкой компа. Вот и надо перезагружать комп каждые 5 часов. Проблемы: 1) прерывание INT 19h перезагржует как то странно, на экране появляется надпись "starting MS-DOS..." и система висит, не реагирует ни на что, тголько с кнопочки презапустить удается. 2) Есть у кого reboot.com а то что не найти в сети
|
|
|
Записан
|
Пешеход /Был: ЗАЗ-Lanos 1.6L 109 л.с. / Был: Иж 2126 гранат 2003г, УМПО, кастрюля, КПП ОМСК, стартер от ГАЗ 53, БК-21, звуковой сигнал от ГАЗ 3110, карб (солекс) ДААЗ-21073, свечи всегда "Чемпион", NGK-плохие, укороченная ручка КПП, БСЗ, подогрев заднего стекла и правого седенья, чехлы, тонировка задка, сцепа и диск totti, выжимной Coram, резина cordiant на штамповке РР от волги (все равно не помогает), перемычка АКБ-Стартер (тоже не помогла).
|
|
|
Ахинеич
|
|
« Ответ #23 : 30 Марта 2009, 10:06:53 » |
|
Есть у кого reboot.com а то что не найти в сети
Он в составе МС-ДОС имеется. Из любого дистрибутива выдерни. Могу порыться в старых дисках. И честно говоря, всё равно не понял смысла. А может стоит поискать иное устраивающее решение, позволяющее не перезагружать систему? Ведь это всё левые варианты какие-то?
|
|
|
Записан
|
С точки зрения теории Банальных Эрудиций возможности далеко не каждого индивидуума способны игнорировать тенденции парадоксальных эмоций. Резюмируя вышесказанное, нивелируйте свои аппроксимации на ассоциации с ником!
|
|
|
shandai ТС
Ветеран форума
Карма +452/-1
Offline
Пол:
Сообщений: 1334
город Хабаровск
Пешеход
|
|
« Ответ #24 : 30 Марта 2009, 16:38:02 » |
|
Ведь это всё левые варианты какие-то?
Не для нас это нормально)))) ПРОБЛЕМА: Программа прописана в автозагрузке, и запускается, проверено строчкой при запуске, но не пререзагружет комп. Если запустить чисто программу, или запустить отдельно autoexe.bat то программа сработает как надо? в чем может быть трабл?
|
|
|
Записан
|
Пешеход /Был: ЗАЗ-Lanos 1.6L 109 л.с. / Был: Иж 2126 гранат 2003г, УМПО, кастрюля, КПП ОМСК, стартер от ГАЗ 53, БК-21, звуковой сигнал от ГАЗ 3110, карб (солекс) ДААЗ-21073, свечи всегда "Чемпион", NGK-плохие, укороченная ручка КПП, БСЗ, подогрев заднего стекла и правого седенья, чехлы, тонировка задка, сцепа и диск totti, выжимной Coram, резина cordiant на штамповке РР от волги (все равно не помогает), перемычка АКБ-Стартер (тоже не помогла).
|
|
|
Crazy Cat
Ветеран форума
Карма +1/-0
Offline
Сообщений: 1840
Серпухов разные
|
|
« Ответ #25 : 30 Марта 2009, 17:04:28 » |
|
А как программа время работы вычисляет? И вообще, что за программа? - мож ей таймер нахрен не нужен - замаскировать прерывания от него. Или сесть на прерывание и переписывать системное время взад... Пусть, безумная идея...
|
|
|
Записан
|
|
|
|
OVA
Moдератор
Карма +1551/-118
Offline
Пол:
Сообщений: 14739
Тула + д. Ревякино
Нормозавр 21261-070 (был). Нынче Фабула.
Тула + д. Ревякино ИЖ 21261-030
|
|
« Ответ #26 : 30 Марта 2009, 18:34:33 » |
|
Задачу понял. Код резидента такого на Паскале (но почти все на языке ассемблера,на вставках, писал) есть. Завтра пример дам. Перезагрузку только добавить и временной интервал изменить.
|
|
|
Записан
|
P.S. Василий. Еще один из беглых ижевчан. --- (ОКПП, ГБО, ЭСП), поборол электричество, "бустера" дворников нет
|
|
|
OVA
Moдератор
Карма +1551/-118
Offline
Пол:
Сообщений: 14739
Тула + д. Ревякино
Нормозавр 21261-070 (был). Нынче Фабула.
Тула + д. Ревякино ИЖ 21261-030
|
|
« Ответ #27 : 30 Марта 2009, 18:45:41 » |
|
Всё нормально с многозадачностью в Досе,если тока программист хороший Не знаем - не говорим, ладно?!! В заблуждение других не вводим! MS-DOS однозадачная система. Была, есть и будет. Взаимодействие с контроллером прерываний - функция любой ОС и к многозадачности отношения не имеет.
|
|
|
Записан
|
P.S. Василий. Еще один из беглых ижевчан. --- (ОКПП, ГБО, ЭСП), поборол электричество, "бустера" дворников нет
|
|
|
shandai ТС
Ветеран форума
Карма +452/-1
Offline
Пол:
Сообщений: 1334
город Хабаровск
Пешеход
|
|
« Ответ #28 : 30 Марта 2009, 20:01:20 » |
|
Задачу понял. Код резидента такого на Паскале (но почти все на языке ассемблера,на вставках, писал) есть. Завтра пример дам. Перезагрузку только добавить и временной интервал изменить.
да у меня она уже в принципе написана, и нормально работает, все устраивает, только что то из автозагрзки не хочет, работать, запускается, потом в тело кода где перезагрзка не входит, там кода осталось на 5 строчек, завра попробую выложить. Может что подскажите.
|
|
|
Записан
|
Пешеход /Был: ЗАЗ-Lanos 1.6L 109 л.с. / Был: Иж 2126 гранат 2003г, УМПО, кастрюля, КПП ОМСК, стартер от ГАЗ 53, БК-21, звуковой сигнал от ГАЗ 3110, карб (солекс) ДААЗ-21073, свечи всегда "Чемпион", NGK-плохие, укороченная ручка КПП, БСЗ, подогрев заднего стекла и правого седенья, чехлы, тонировка задка, сцепа и диск totti, выжимной Coram, резина cordiant на штамповке РР от волги (все равно не помогает), перемычка АКБ-Стартер (тоже не помогла).
|
|
|
Ахинеич
|
|
« Ответ #29 : 30 Марта 2009, 21:19:45 » |
|
Я смотрю, тут мазохисты собрались! Ну вот ни на раз не поверю, что не существует современного решения проблемы, дабы не лезть в дебри MS-DOS! Реально, глядя с иной вышки, всё выглядит иначе !
|
|
|
Записан
|
С точки зрения теории Банальных Эрудиций возможности далеко не каждого индивидуума способны игнорировать тенденции парадоксальных эмоций. Резюмируя вышесказанное, нивелируйте свои аппроксимации на ассоциации с ником!
|
|
|
|