Ну да, @Denn, должен. Я посмотрел, похоже он и по камандам обычный Epson совместимый принтер. Единственное, на что нужно обратить внимание, что он может работать как в режиме ИРПР, так и ИРПР-М (Centronics), в инструкции написано где перемычку поставить, ну @Дмитрий2012 и так это уже сделал. Подтягивающие резисторы на стороне принтера установлены. То что у принтера на входе инверторы, думаю не важно, раз он Centronics совместим, значит софт принтера учитывает эту инверсию. На стороне Ориона, надо учитывать наличие инверторов и перед выводом данных в порт ВВ55, инвертировать байт данных.
А вот код для печати на принтере, как вы думаете, где я его взял?
Код:
PORT_01_PRNT_DAT EQU 0x01
PORT_02_PRNT_CTL EQU 0x02
PORT_03_CTL EQU 0x03
; Программирование портов ВВ55
LD A,0x98
OUT (PORT_03_CTL),A ; DIP SW, PRINTER
; ----------------------------------------------
; Печать
; Вход:
; 1. A !=0 - чтение статуса PRINT
; 2. A = 0 - печать символ
; C = символ для печати
; Выход:
; A = 0 - символ принят
; A != 0 - принтер не готов
; D0=1 - неисправность (ERROR)
; D1=1 - занят (BYSY)
; ----------------------------------------------
PRINT
AND A
JR Z,WPRT1
STATU
PUSH BC
LD B,0x5
NOP
IN A,(PORT_02_PRNT_CTL)
RLCA
RLCA
RLCA
XOR B
AND 0x7
POP BC
RET
; ----------------------------------------------
; Печать символа из регистра С
; ----------------------------------------------
WPRT1 PUSH BC
PUSH DE
PUSH HL
WPRT2
CALL STATU
JR NZ,WPEND
LD A,C
CPL
OUT (PORT_01_PRNT_DAT),A
LD A,1 ; STROBE -\_
OUT (PORT_02_PRNT_CTL),A
NOP
NOP
XOR A
OUT (PORT_02_PRNT_CTL),A ; STROBE _/-
CALL STATU
WPEND
POP HL
POP DE
POP BC
RET
Скрытый текст
Ну да, это код той самой подпрограммы BIOS Ориона 0xF821 (PRINT), ничего сложного и необычного.
[свернуть]