История развития программного обеспечения

Язык программирования PL/M-80 и его потомки. PL/M-286

1. Различия между языками PL/M-286 и PL/M-86

PL/M-286 отличается от PL/M-86 следующим[3]:

  • Переменным типа POINTER и SELECTOR не могут быть присвоены абсолютные значения (т .е. константы).
  • С переменной типа POINTER может использоваться только оператор проверки на равенство (=). С переменными типа SELECTOR могут использоваться как логические (AND, OR, NOT, XOR), так и операторы отношений ( < , > , <= , >= , <> , = ).
  • Доступ к аппартному флагу регистров обеспечивается через встроенную переменную FLAGS.
  • Добавлены четыре встроенных функции для поддержки ввода-вывода блока байтов или слов: BLOCKINPUT, BLOCKINWORD, BLOCKOUTPUT и BLOCKOUTWORD (доступны в PL/M-86 через управляющую директиву MOD 86| MOD 186). Тип переменной STACKBASE изменён с WORD на SELECTOR.
  • Новые встроенные процедуры и функции добавлены для поддержки работы в защищённом режиме i286.
  • Процедурам с атрибутом Interrupt больше нельзя присваивать номер в исходном тексте программы. Это делается построителем (286 system builder ). Этот тип процедур также не может быть вызван напрямую, поэтому встроенные SET$INTERRUPT и INTERRUPT$PTR удалены.
  • Удалена структура, именуемая memory array .

2. Трансляция программ на PL/M-86 компилятором с языка PL/M-286

Программы на PL/M-86, которые корректно работают на микропроцессоре 8086 могут быть перекомпилированы компилятором для PL/M-286, чтобы получить объектный код для микропроцессора 80286.

Исходный текст программы на PL/M-86 должен быть отредактирован следующим образом:

  • Назначения встроенной переменной STACKBASE должны быть изменены с WORD на SELECTOR.
  • Все назначения абсолютных величин указателям и селекторам должны быть изменены. (Указателям может быть присвоены нулевые значения с помощью новой встроенной функции NIL.) Кроме того, операторы отношений над указателями и велекторами для всех операций, кроме проверки на равенство или неравенство, должны быть изменены.
  • Номера прерываний во всех процедурах обработки прерываний должны быть удалены. Вектора прерываний будут этим процедурам назначаться построителем (286 system builder). Прямые вызовы процедур обработки прерываний должны быть изменены.
  • Ссылка на переменные SET$INTERRUPT, INTERRUPT$PTR и MEMORY должны быть удалены.

Литература

  1. Р.Фаулджер. Программирование встроенных микропроцессоров. М .: Мир . 1985. –275 с .
  2. Intel Corporation 1976. PL/M-80 Programming Manual . Doc # 98-268B.
  3. PL/M 386 Programmer's Guide, RadiSys Corporation, 07-0710-01, December 1999. –422 pp.
  4. http://www.unix4fun.org/z80pack/doc_cpm_plm.html .
  5. PL/M-86 Programming Manual for 8080/85-Based Development Systems. Intel. 1980. Manual Order Number 4800466-03 Rev. C.

Следующая статья цикла

Статьи "Язык программирования PL/M-80 и его потомки"

Статья помещена в музей 08.06.2007 года.