Разное

Pascal uses crt: Crt — Free Pascal wiki

Модуль crt | Авторская платформа Pandia.ru

Turbo Pascal | Эта статья также находится в списках: Белый | Постоянная ссылка

CRT– (англ. – Cathode-Ray Tube – электронно-лучевая трубка) обеспечивает управление вводом информации с клавиатуры и вывод ее на экран в текстовом режиме, взаимодействие с таймером и звуковым устройством со встроенным динамиком.

Текстовый режим – экономичный режим использования видеопамяти, в котором наименьшей единицей изображения является не пиксел, а символ целиком.

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

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

Знакоместо – единица изображения в текстовом режиме, представляющая собой матрицу определенного размера для размещения символа. Процесс прорисовки каждого символа берет на себя операционная система.

Модуль CRT представляет собой библиотеку функций и процедур, предназначенных для увеличения возможностей текстового ввода \ вывода данных. Для подключения модуля CRT после оператора PROGRAM необходимо поместить предложение:

Процедуры и функции модуля предназначены для:

1 Управления клавиатурой, в том числе считывания кода символа нажатой клавиши с высвечиванием символа на экране и без высвечивания;

2 Управления текстовым экраном, в том числе:

? формирования окна;

? управления положением курсора и определения координат положения курсора;

? определения цвета фона и цвета символов;

3 Управления принтером;

4 Управление звуковым сигналом.

Табл. 9. Процедуры и функции имодуля CRT

ИМЯНАЗНАЧЕНИЕЗапись
1 Процедуры задания режима работы
TextModeЗадание текстового режима (см. табл.14.1)TextMode(Mode: Word)
2 Процедуры управления цветом
HighVideoЗадание высокой яркости символовHighVideo
LowVideoЗадание малой яркости символовLowVideo
NormVideoЗадание исходной яркости символовNormVideo
TextBackgroundЗадание цвета фона (см. табл. 9.2)TextBackground (Color: byte)
TextColorЗадание цвета символов (см. табл. 9.2)TextColor (Color: byte)
3 Процедуры работы с экраном
ClrScrОчистка экрана и установка курсора в левый верхний уголClrScr
GoToXYПеремещение курсора в заданную позициюGoToXY(X, Y: Byte)
InsLineДобавление пустой строки на экранеInsLine
WindowОпределяет текстовое окно на экранеWindow(X1,Y1, X2, Y2: Byte)
4 Процедуры управления звуком
SoundЗаставляет динамик звучать с нужной частотойSound(F: Word)
NoSoundОтключает динамикNoSound
5 Процедуры прочие
DelayЗадержка выполнения программы в миллисекундахDelay(T: Word)
AssignCrtСвязь текстового файла с устройством CRTAssignCrt(F: Text)
6 Функции работы с экраном
WhereXТекущая координата Х курсораWhereX: Byte
WhereYТекущая координата Y курсораWhereY: Byte
7 Функции работы с клавиатурой
KeyPressedПроверка нажатия клавишиKeyPressed: Boolean
ReadKeyЧтение символа с клавиатурыReadKey: Char

Табл. 9.1. Текстовые режимы модуля CRT

Наименование константы MODEЗначение константы MODEКол-во строк * символов в строкеТип адаптераВид вывода
BW40025*40ЦветнойЧерно-белый
Со40125*40ЦветнойЦветной
BW80225*80ЦветнойЧерно-белый
Со80325*80
Mono725*80MоноЧерно-белый
Font8x8+25650 строкЦветнойЦветной

Табл.9.2. Коды цветов

ИмяКонстанта цветаЦвет
Black0Черный
Blue1Синий
Green2Зеленый
Cyan3Бирюзовый
Red4Красный
Magenta5Фиолетовый
Brown6Коричневый
LightGray7Светло-серый
DarkGray8Темно-серый
LightBlue9Светло-синий
LightGreen10Светло-зеленый
LightCyan11Светло-бирюзовый
LightRed12Розовый
LightMagenta13Сиреневый
Yellow14Желтый
White15Белый
Blink128Мерцание символа

Твитнуть

Правообладателям

Сообщить о нарушении

Архивы pandia. ru
Алфавит: А • Б • В • Г • Д • Е • З • И • К • Л • М • Н • О • П • Р • С • Т • У • Ф • Ц • Ч • Ш • Э Я


Авто
История · Термины
Бытовая техника
Климатическая · Кухонная
Бизнес и финансы
Инвестиции · Недвижимость
Все для дома и дачи
Дача, сад, огород · Интерьер · Кулинария
Дети
Беременность · Прочие материалы
Животные и растения
Компьютеры
Интернет · IP-телефония · Webmasters
Красота и здоровье

Народные рецепты
Новости и события
Общество · Политика · Финансы
Образование и науки
Право · Математика · Экономика
Техника и технологии
Авиация · Военное дело · Металлургия
Производство и промышленность
Cвязь · Машиностроение · Транспорт
Страны мира
Азия · Америка · Африка · Европа
Религия и духовные практики
Секты · Сонники
Словари и справочники
Бизнес · БСЕ · Этимологические · Языковые
Строительство и ремонт

Материалы · Ремонт · Сантехника



Приложение 1.

Турбо Паскаль. Модуль crt

Таблица П1.1. Константы режимов работы

Таблица П1.2. Константы цветов

Таблица П1.3. Процедуры и функции

Приложение 2. Турбо Паскаль. Модуль graph

Таблица П2.1. Коды драйверов графических устройств

Таблица П2.2. Константы графических режимов

Примечание. Палитра С0 включает в себя следующие цвета: светло-зеленый, розовый и желтый; палитра С1 — светло-голубой, светло-фиолетовый и белый; палитра С2 — зеленый, красный и коричневый; палитра С3 — голубой, фиолетовый и светло-серый.

Таблица П2.3. Коды цветов

Таблица П2.4. Коды линий

Таблица П2.5. Константы орнамента заполнения

(для процедуры SetFillStyle)

Таблица П2.6. Процедуры и функции

Список литературы

  1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. — М.: Наука, 1988.

  2. Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. —Харьков: Фолио, Ростов н/Д: Феникс, 1997.

  3. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. — М.: Мир, 1981.

  4. Вирт Н. Алгоритмы и структуры данных. — М.: Мир, 1989.

  5. Грогоно П. Программирование на языке Паскаль. —М.: Мир, 1982.

  6. Дагене В. А., Григас Г. К., Аугутис К.Ф. 100 задач по программированию. — М.: Просвещение, 1993.

  7. Епашников A.M., Епашников В.А. Программирование в среде Турбо Паскаль 7.0. — М.: МИФИ, 1994.

  8. Заварыкин В.М., Житомирский В.Г., Лапчик М.П. Основы информатики и вычислительной техники. — М.: Просвещение, 1989.

  9. Задачи по программированию / С. А. Абрамов, Г. Г. Гнездилова, Е. Н. Капустина, М. И. Селюн. — М.: Наука, 1988.

  10. Зубов В. С. Программирование на языке Turbo Pascal (версии 6.0 и 7.0). — М.: Информационно-издательский дом «Филинъ», 1997.

  11. 3yeв Е. А. Практическое программирование на языке Turbo Pascal 6.0, 7.0. — М.: Радио и связь, 1994.

  12. Информатика. Задачник-практикум: В 2 т. / Под ред. И. Г. Семакина, Е.К.Хеннера. — М.: Лаборатория Базовых Знаний, 1999.

  13. Йенсен К. , Вирт Н. Паскаль — руководство для пользователей и описание языка. — М.: Мир, 1982.

  14. Касаткин В. Н. Информация. Алгоритмы. ЭВМ. — М.: Просвещение, 1991.

  15. Культин Н.Б. Программирование в Turbo Pascal и Delphi.— СПб.: BHV — Санкт-Петербург, 1998.

  16. Ляхович В.Ф. Руководство к решению задач по основам информатики и вычислительной техники. — М.: Высшая школа, 1994.

  17. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0 / Под ред. В. П.Тарасенко. — Киев: ВЕК+; М.: Бином Универсал, 1998.

  18. Миков А. И. Информатика. Введение в компьютерные науки. — Пермь: Изд-во ПГУ, 1998.

[fpc-pascal] CRT-модуль и терминал Windows

 У меня была аналогичная проблема при попытке представить деревья с использованием расширенного ASCII.
символы. Мое решение состояло в том, чтобы адаптировать представление моих символов к UTF8. 
Чтобы понять, что я имею в виду, вы можете взглянуть на
https://github.com/svpantazi/каталан-моноид-генератор.
generate_catalan_monoid.pp содержит функцию PrintASCIITree, которая выполняет
очевидный. Папка примеров содержит фактические выходные данные (например,
examples/n_5_output_example.txt) деревьев ASCII, таких как это (я вставил
это здесь, но сообщение может не сохраниться): 
0─┬─1─┬─12───123
  │ └─13───132
  ├─2─┬─21───213───2132
  │ └─23
  └─3───32───321
В пятницу, 13 октября 2017 г., в 9:39, Джеймс Рихтерс <
[email protected]> написал:
> >Я хочу создать консольное приложение, использующее символы рисования прямоугольников из
> юникод. До использования блока CRT все было в порядке, и моя программа могла рисовать
>
> >стол красиво. Но как только я поставил блок ЭЛТ, эти символы стали
> мусорки. Но странно, это происходит только на терминале Windows (win10).
>
> >Я попробовал одну и ту же программу на Mac и Linux, используя каждый блок ЭЛТ, и
> все нормально ходят.  Мне нужен блок ЭЛТ, чтобы сделать мою консольную программу более
> > интерактивный (т. е. позиционирование курсора, работа с клавиатурой, цвет текста,
> и тд).
>
>
>
>
>
> >Итак, что не так с блоком ЭЛТ в Windows? Кто-нибудь может объяснить
> Странное поведение и как решить проблему?
>
>
>
> Из моих собственных неудачных попыток заставить рамочные символы работать с обоими
> crt и ptccrt Я могу подтвердить, что они не работают в Windows, но я
> на самом деле очень удивлен, узнав, что он работает на Linux и Mac. Возможно
> есть возможность починить блок ЭЛТ на винде.
>
>
>
> На мой взгляд блок ЭЛТ ДОЛЖЕН рисовать коробки с ОРГАНИЗАЦИЕЙ
> Расширенные коды ASCII, а не Unicode, по крайней мере, по умолчанию.
>
> Блок ЭЛТ должен быть совместим с оригинальным турбопаскалем
> единица ЭЛТ, а в турбопаскале, если вы напишете ln(Chr(201)) вы получите верхний левый
> угол, а не забавная буква E. Возможно, можно было бы использовать
> символы Юникода, но отображение правильных символов ASCII должно
> по умолчанию.  К сожалению, это тоже не работает правильно… если это происходит
> чтобы использовать Юникод, он должен использовать весь набор символов, если не собирается
> сделайте это, тогда он должен использовать расширенный ASCII в качестве исходного блока CRT
> сделал.
>
>
>
> Странно то, что моя древняя программа на турбо паскале рисует ACSII
> блоки, отлично выглядит в текстовом режиме IDE FPC (который сам использует блок
> символов!) но при запуске программы, даже находясь в той же консоли
> окно, в котором сейчас работает IDE текстового режима FPC, я получаю юникод
> персонажи. Если я нахожусь в текстовом режиме IDE и ввожу последовательность символов
> из ALT+201 я получаю символ в верхнем правом углу, а не символ Unicode… но
> запускаю программу, и я получаю Unicode sysmbol. Если я не использую ЭЛТ
> блок, я действительно получаю полный набор символов Unicode, но тогда вы не можете
> использовать позиционирование курсора и т. д.
>
>
>
> Я попытался заменить символы ASCII в своей программе на
> Символы Юникода, но я не могу, потому что они так далеко в таблице,
> они превышают ограничение в 255 символов для ЭЛТ-устройства; Например
> Символ в верхнем правом углу раньше был #201, теперь это #9556.  Я не могу
> найти способ отобразить #9556 на ЭЛТ, я пробовал
> Writeln(Chr(9556)) но chr() имеет ограничение 255, и я пробовал только
> Writeln(#9556), и пока он компилируется и запускается, он не производит
> правильный характер.. У меня есть ощущение (но не проверял), что он держит
> Циклический цикл вокруг первых 256 символов, если вы используете что-то выше 255…..
> почти уверен, что символ здесь определяется как байт.
>
>
>
> Я прикрепил скриншоты и пример программы, демонстрирующий это
> неприятная ситуация. Я просто отказался от нескольких действительно хороших
> консольные приложения из-за этого.
>
>
>
> Боксовые персонажи отличные, не понимаю, почему стало так сложно
> включить их. Но я очень надеюсь, что решение может быть найдено, когда я
> иметь отчеты, которые я отображаю в окнах консоли, даже в моих графических программах
> было бы гораздо лучше, если бы я мог снова использовать символы рамки, так как я
> использовать консольное окно, в то время как графическое окно также открыто. 
>
>
>
>
>
> Джеймс
>
> _______________________________________________
> список рассылки fpc-pascal — [email protected]
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
 
 _______________________________________________
Список рассылки fpc-pascal — [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal 

ibm pc — Почему приложения MS-DOS, созданные с использованием Turbo Pascal, не запускались с ошибкой деления на ноль на более быстрых системах?

Программы Turbo Pascal начинаются с калибровки контура задержки (чтобы функция Delay знала, сколько нужно вращать для достижения определенной задержки). Калибровка подсчитывает, сколько раз определенный цикл выполнялся в течение 55 мс (что можно измерить с помощью прерывания таймера ПК с его настройкой по умолчанию), а затем делит количество циклов на 55, чтобы Задержка может затем быть занята ожиданием с шагом в миллисекунду. На быстрых процессорах с тактовой частотой 200 МГц и выше (на процессорах Intel) цикл выполняется слишком много раз, и деление переполняется. ЦП выдает ошибку «переполнение деления», о которой среда выполнения Pascal сообщает как об ошибке деления на ноль.

Есть довольно много сайтов, которые объясняют это и предоставляют патчи; например, страница Дж. Р. Стоктона по этой теме, на которой написано

.

Модуль Borland Crt включен в библиотеки TURBO.TPL и TPP.TPL; его процедура инициализации будет скомпонована, если Crt указан в предложении uses. Проблема заключается в инициализации Crt.Delay, но она появится, если цитируется модуль Crt, независимо от того, вызывается ли Delay или любая другая процедура Crt.

Во время инициализации модуля Crt цикл, выполняемый в течение 55 мс, увеличивает значение счетчика. До и в TP6 это был 16-битный счетчик, и он с радостью переполнялся на ПК выше 20 МГц, что приводило к последующим неправильным задержкам.

Счетчик в TP7 и BP7 теперь 32-разрядный и не должен переполняться, пока частота процессора не достигнет 100 ГГц. Но счет делится на 55, и если результат не умещается в 16-битное слово, ЦП выдает ошибку «переполнение деления». Borland сообщает об этом как об ошибке «деления на ноль», Runtime Error 200, поскольку единственный способ, с помощью которого пользовательский код Pascal может вызвать переполнение при делении, — это деление на ноль.

(Как указал Питер Кордес, последнее предложение неверно; легко вызвать переполнение при делении, используя целочисленное деление в Паскале. Однако среда выполнения Borland сообщает об этом как об ошибке «деления на ноль».)

Возможно, лучший fix состоит в том, чтобы исправить модуль Crt и перекомпоновать программу Pascal. Существуют различные подходы; например, увеличение места, выделенного для счетчика задержки в CRT.ASM :

 DelayCnt DD ?
 

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

Внесение исправлений в существующие исполняемые файлы не так уж очевидно, поскольку фиксированные процедуры калибровки занимают больше места, чем исходные, но это именно то, что делает патч Андреаса Бауэра (доступный на сайте SAC, Garbo или manassehkatz): он сократил более ранний код инициализации, чтобы освободить место для его фиксированной процедуры калибровки, как подробно описано в файле README в его архиве. Патч Андреаса не увеличивает DelayCnt размер, он только гарантирует, что процедура калибровки не переполнится; в результате на быстрых процессорах подпрограмма Delay может ждать не так долго, как предполагалось.

Другой подход используется патчем c’t: он основан на сокращении другой функции в Crt ( Break ), чтобы освободить место для улучшенной версии Delay , и настройке делителя в процедуре калибровки так, чтобы деление больше не переливается. Результат процедуры калибровки в этом сценарии не используется.

Существует также ряд TSR, которые решают проблему во время выполнения без установки исправлений; одно существенное отличие заключается в том, что большинство (если не все) таких TSR не будут работать с программами на Turbo Pascal в защищенном режиме. Здесь также существует ряд различных подходов. PROT200 полагается на обработку ошибки деления на ноль в TSR вместо того, чтобы позволить коду Borland обрабатывать ее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *