Помощь - Поиск - Пользователи - Календарь
Полная версия: системный таймер
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Free Pascal, Pascal ABC и другие
compiler
Добрый день!
Разбираю чужой код и встретил следующую строку
timer:longint absolute $40:$6c;
переменная используется для реализации задержки.
что с ней делать если я хочу использовать fpc? придётся расставлять delay() вручную?

заранее благодарен
volvo
А что, ты переменную Timer не вручную используешь? Или Delay/Sleep/GetTickCount отменили?
andriano
Цитата(compiler @ 9.02.2008 15:47) *

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

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

Сегмент $40 исползуется BIOS для хранения своих переменных. В частности, по смещению $6c там находится счетчик апаратных прерываний таймера. Прерывания происходят 18.2 раза в секунду.
Если программа под DOS, то в режиме совместимости с TP эти адреса должны быть доступны. Возможно, правда, их следует записывать в "плоской" модели памяти, т.е. memd[$46с].
volvo
Цитата
Если программа под DOS, то в режиме совместимости с TP эти адреса должны быть доступны.
"Возможно, в TMT так оно и есть. Но FPC - это не TMT. Он не работает с mem..., ибо не фиг". почти (С) Ф.Ф. Преображенского, "Собачье Сердце"

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

Цитата
Если программа под DOS....
программа, в первую очередь, под линукс..
volvo
Цитата
хотелось бы с минимальными изменениями подогнать её под требование компилятора
Покажи фрагмент программы с использованием Timer, посмотрим, что можно сделать...
compiler
надо было лучше разобраться в коде, все легко заменил на delay()..

спасибо за внимание..
andriano
Цитата(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-го Мбайта. Т.е. как раз то, что и было рекомендовано.
volvo
Цитата
Посмотрел документацию по v.2.0.2:
Плохо смотрел:
http://www.freepascal.org/docs-html/user/usersu80.html - цитату привести или сам соизволишь найти про экстендер?

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

А теперь слушай сюда: Я тебе говорю открытым текстом, коли ты не понимаешь по другому: Прекрати заниматься троллингом (что это такое - можешь поискать в Гугле, он знает).
andriano
Цитата(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 эта конструкция поддерживается, а под другими ОС она неактуальна.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.