EMI

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

EMI — фортовское слово Каллисто.

EMI            ( c n −− )                           Вывод нескольких символов на индикатор.

Ввод слова EMI

В режиме ЛАТ последовательно нажмите три клавиши  ИП   ÷   7 

Реализация

 969 ;               ∗∗ Дисплей: вывод текста на индикатор ∗∗
 970 ;
 971 ;#EMI
 972 ; EMI              ( c n −− )                           Вывод нескольких литер на индикатор.
 973 LEMI:           .DB     3
 974                 .TEXT   "EMI"
 975                 .DW     LENCL                   ; Слово странное, взято из FORTH ИТЭФ
 976 EMI:            .DW     JEMI
 977 JEMI:           PKRM03 M0                       ; Число литер
 978                 RM3 1 + M8 1 + M3
 979                 RM0 +/− KX<09                   ; Проверка на отрицательное или нулевое число литер
 980 EMIS1:          KRM8  PGSB CHPUT                ; Вывести литеру
 981                 FL0 EMIS1
 982                 KGRPH KGOTO9

Советская реализация

Ниже определение примитива EMI из FORTH ИТЭФ:

             HEAD    203Q,'EM',311Q,EMI$                  ; EMI
             POP   CX              ; Число символов
             POP   AX              ; Символ
             PUSH  CX              ; Сохранение содержимого CX
             PUSH  AX              ; Сохранение содержимого AХ
             MOV   BX, [DI+32Q]    ; Установка атрибута
             MOV   AH, 15          ; Чтение текущей страницы
             INT   16              ; в BH
             POP   AX              ; Восстановление содержимого AX
             MOV   AH, 9           ; Запись строки символов
             INT   16
             MOV   AH, 3           ; Чтение положения курсора
             INT   16
             POP   CX
             ADD   DL, CL
             MOV   AH, 2           ; Установка положения курсора
   $EM:      INT   16
             CMP   WORD PTR [DI+42Q],0
             JNE   PRINT
   OK:       NEXT

             HEAD    204Q,'EMI',324Q,EMIT,$EMIT           ; EMIT
   $EMIT     LABEL   FAR
             POP   AX
   ENT$:     PUSH  AX
             MOV   AH, 15
             INT   16
             POP   AX
             MOV   AH, 14
             JMP   $EM
   PRINT:    MOV   DX, 0   ; Установка номера принтера
             SUB   AH, AH
             INT   23
             TES   AH, 51Q
             JE    OK
   ERR4:     MOV   AL, AH
             ADD   AL, 60Q
             MOV   AH, 14
             INT   16
             MOV   DX, OFFSET ERMES4
             MOV   AH, 9H
             INT   21H
             JMP   TYPE$
   ERMES4:   DB   ' PRINTER ERROR $'

Ссылки


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.