Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Медленная работа DOS на современных компьютерах, На моем ПК работа DOS программ замедлена 
:(
    Опции темы
Zavlab
  Дата 2.2.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.2.2006

Репутация: нет
Всего: 1



Здравствуйте.
Решил я систему передачи сделать по своей квартире на основе LPT-порта.
Задача рубится на корню, когда я тестовым способом обнаружил очень низкую скорость работы программы. За 55мс обычный счетчик успевает досчитать до 30000 (счетная частота при этом составляет 540кГц), а если с выводом на LPT, то частота падает в 2 раза: счетчик досчитавает до 15000, что есть эквивалентом 270кГц на выходе порта.
Программу упростил до предела, но чуда не стало. Ниже ее исходник
Код

{$O+,F+}
Program OutInterruptToLPT;
Uses Graph,  Dos, Crt;
var
    b:byte;
    L,ck,w,i,j,deL:LongInt;{-2147483648..2147483647}
    l_Const,k_Port:Real;
    mx,my,mButton,X,Y1,Y2,Gd,Gm:integer;
    OldInterrupt:Pointer;
    reg: registers;
    S10:string[10];
    bt:boolean;

  Procedure Mouse(VAR mx,my,mButton:integer);
  begin
     mbutton:=0;
     reg.ax:=3;
     intr ($33,reg);
     mx:=reg.cx;
     my:=reg.dx;
     mbutton:=reg.bx;
  end;

Procedure Control; interrupt;
Begin
{     mouse (mx,my,mButton);} 
     deL:=(deL +L)  div 2;
     L:=0;
     l_Const:=0.055/deL; {sec}
     k_Port:=1
     if bt AND (mButton>0)
      then
         begin
             got0XY(2,2);
             writeln('del ',del);
             WriteLn('l_Const ',l_Const);
             WriteLn('k_Port ',k_Port);
         end;
     bt:=Not (mButton>0);
END; {control}
BEGIN
   x:=256; del:=0; w:=0; ck:=0; L:=0; clrscr; WriteLn('Runing');
   mx:=256;

{   reg.ax:=1;
   intr ($33,reg);}
   GetIntVec ($1C,OldInterrupt);
   SetIntVec ($1C,@Control);
   repeat
        inc (L);
        {R-}
        inc(ck);
        if ck>=k_Port
         then
            begin
                ck:=0;
                inc (b);
                port[$378]:=b;
            end;
        {R+}
   until keypressed;
   SetIntVec ($1C,OldInterrupt);
END.


Суть: идет циклический счет (переменная L) от 0 до победного, когда-нибудь возникает прерывание с интервалом 55мс или 0,055с в котором значение L выводится на экран и L:=0. За каждый проход цикла Repeat Until в порт LPT[$378] выводится число b (локальный счетчик).
Переменная del содержит среднее количество до которого успевается возвыситься L.
Переменная l_Const содержит время в секундах за которое происходит 1 проход цикла.
(процедуры mouse отключены)

Среда Windows98 без графической оболочки, загружается с дискетки,
Среда разработки Turbo Pascal 7.0
Оборудование Atlon 1900+, частота шины 333МГц.

Подозрения: проблема аппаратная, специально для DOSa & K работает низкочастотный блок. (Где бы там перемычку передвинуть). Этот ответ всего лишь версия.
Жду Ваших мнений...
PM MAIL   Вверх
Romikgy
Дата 2.2.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 146



Сабж здесь не причем, при быстром проце и дос летает, а вот работа с лпт портом, у тя слишком простая, есть спец режимы параллельного порта , где скорости достигаются вполне нормальные, а что касается сабжа, то в досе проц работает в реальном режиме, получается, точно не вспомню, толи 286 толи 186 проц но с тактовой, твоего проца, а винда переводит проц в защищенный режим, и там уже своя петрушка


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 2.2.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



PM MAIL   Вверх
armageddon
Дата 2.2.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 9.11.2005
Где: 239

Репутация: нет
Всего: нет



скорей сего проблема не в проге, а в самом соеденении
PM MAIL   Вверх
Zavlab
Дата 4.2.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.2.2006

Репутация: нет
Всего: 1



Дорогие Romikgy, Snowy, armageddon обращу Ваше внимание на свою цитату
Цитата

За 55мс обычный счетчик успевает досчитать до 30000 (счетная частота при этом составляет 540кГц), а если с выводом на LPT...

Я думаю, что если бы "обычный счетчик " успевал бы досчитать до 5 миллиардов (или больше), то вопрос был бы к LPT, а так к (?!) к процессору. Сообщу также, что медленная работа замечена и у других программ (Volkov, sirena и моих разработок использующих процедуру delay (хоть свою пиши)).
По поводу других режимов LPT - тоже интересно.
http://www.piafi.ru/library/timeslc.zip уникальная разработка, но в данном случае задача как раз наоборот.
Получаю знания . . .
PM MAIL   Вверх
Snowy
Дата 4.2.2006, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



delay всегда была глючной.
Она никак не зависит от времени.
На разных компьютерах дает совершенно разные интервалы.
Попробуй найти в сети альтернативный модуль Crt.
Хотя для DOS нет универсального решения без перепрограммирования таймера.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0851 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.