IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> системный таймер, fp
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день!
Разбираю чужой код и встретил следующую строку
timer:longint absolute $40:$6c;
переменная используется для реализации задержки.
что с ней делать если я хочу использовать fpc? придётся расставлять delay() вручную?

заранее благодарен


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А что, ты переменную Timer не вручную используешь? Или Delay/Sleep/GetTickCount отменили?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(compiler @ 9.02.2008 15:47) *

Добрый день!
Разбираю чужой код и встретил следующую строку
timer:longint absolute $40:$6c;
переменная используется для реализации задержки.
что с ней делать если я хочу использовать fpc? придётся расставлять delay() вручную?

заранее благодарен

Сегмент $40 исползуется BIOS для хранения своих переменных. В частности, по смещению $6c там находится счетчик апаратных прерываний таймера. Прерывания происходят 18.2 раза в секунду.
Если программа под DOS, то в режиме совместимости с TP эти адреса должны быть доступны. Возможно, правда, их следует записывать в "плоской" модели памяти, т.е. memd[$46с].
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Если программа под DOS, то в режиме совместимости с TP эти адреса должны быть доступны.
"Возможно, в TMT так оно и есть. Но FPC - это не TMT. Он не работает с mem..., ибо не фиг". почти (С) Ф.Ф. Преображенского, "Собачье Сердце"

Для того, чтобы задействовать Mem/MemW/MemL надо устанавливать расширение FPC: DosExtender Go32V2.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 9.02.2008 14:56) *
А что, ты переменную Timer не вручную используешь? Или Delay/Sleep/GetTickCount отменили?
дело в том что программа уже написана с Timer и хотелось бы с минимальными изменениями подогнать её под требование компилятора...

Цитата
Если программа под DOS....
программа, в первую очередь, под линукс..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
хотелось бы с минимальными изменениями подогнать её под требование компилятора
Покажи фрагмент программы с использованием Timer, посмотрим, что можно сделать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


надо было лучше разобраться в коде, все легко заменил на delay()..

спасибо за внимание..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(volvo @ 9.02.2008 16:14) *

"Возможно, в TMT так оно и есть. Но FPC - это не TMT. Он не работает с mem..., ибо не фиг". почти (С) Ф.Ф. Преображенского, "Собачье Сердце"
Не подскажешь, начиная с какой версии появилось это "не фиг"? Ибо в 0.9х это еще работало, а с более поздними ничего DOS-овского компилить не пробовал.

PS. Посмотрел документацию по v.2.0.2:
Цитата
17. How can I access DOS memory / How can I do graphics programming?
You can do like in TP, via absolute or mem[].
В файле faq.txt.
Т.е. разработчикам документации о такой особенности компилятора неизвестно.

PPS. Насколько я понял документацию (раздел 10.12), в отличие от ТМТ, где через mem[] доступна любая память программы, в FPC так можно адресовать лишь в пределах 1-го Мбайта. Т.е. как раз то, что и было рекомендовано.

Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
Посмотрел документацию по v.2.0.2:
Плохо смотрел:
http://www.freepascal.org/docs-html/user/usersu80.html - цитату привести или сам соизволишь найти про экстендер?

Теоретические изыскания можешь оставить при себе, кстати. Я пользуюсь этим компилятором не для того, чтобы мне какой-то "умник", начитавшийся непонятно чего, говорил, что "так ДОЛЖНО работать". Оно НЕ РАБОТАЕТ. Точка.

А теперь слушай сюда: Я тебе говорю открытым текстом, коли ты не понимаешь по другому: Прекрати заниматься троллингом (что это такое - можешь поискать в Гугле, он знает).
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(volvo @ 13.02.2008 16:04) *
Прекрати заниматься троллингом
Ты уверен, что понимаешь значение этого термина и правильно его применяешь?
Я, например, никогда не прибегаю к мотивации подобного вида:
Цитата
зря старался Мимо кассы

Цитата
ибо не фиг

Да и процитированное первым сообщение исполнено в том же стиле.
У нас, почему-то, общение проходит по сценарию: "умный - тот, кто раньше успел назвать другого дураком".

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

Так что, ребята, давайте жить дружно! Не придираться друг к другу по мелочам, не высказывать свое раздражение, а если уж возникает очаг напряженности, то пытаться разрешить проблемы посредством ЛС, а не прилюдно на форуме.


PS. Возвращаясь к FPC: по приведеной ссылке ГЛАВНОЕ выделено цветом:
Цитата
3. The MEM, MEMW, MEML and PORT variables for memory and port access are not available in the system unit. This is due to the operating system. Under DOS, the extender unit (GO32.PPU) implements the mem constuct. under LINUX, the ports unit implements such a construct.
Под DOS эта конструкция поддерживается, а под другими ОС она неактуальна.


Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 4:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name