📂 Документ: orion128-soft-cpm80-v241-dprint_clean.html


 

Орион-128, CP/M-80, программа DPRINT.COM

Драйвер печати CP/M-80 Орион Софт OS-DOS V2.41, программы DPRINT.COM

Продаю платы и наборы микросхем, куплю микросхемы

Все версии CP/M-80

Все версии ORDOS

Все программы ORDOS

 Авторский контроллер НГМД. Мы собираем именно такой и на нем работаем.  Читайте про пакет Атлас. Также дискеты можно отформатировать из под ORDOS пакетом программ Атлас.

Дискеты должны быть отформатированы в OS DOS (CP/M-80) программой FORMAT.COM и на дискету записана система OS DOS V2.41  программой SYS.COM

Программа DPRINT.COM руководство пользователя, DPRNF.TX

Драйвер dprint.com предназначен для вывода символа на печатающее epson-совместимое устройство с протоколом "centronics" при вызове векторов list (bиос+0fh) и listst (bиос+2dh) в дисковой операционной системе os-dos v2.40/2.60 или os-dos v2.41/2.61 фирмы "ОРИОНСОФТ".

Драйвер загружается как обычный СОМ-файл. После вывода титульной заставки драйвер запрашивает ввести тип кодировки в виде одной из цифр: 0 - альтернативная кодировка, 7 - вывод кодировке КОИ-7, 8 - вывод в кодировке КОИ-8.
Возможен и второй вариант загрузки - указать ключ кодировки в командной строке:

А>dprint /7

Это позволяет включать загрузку драйвера в состав файла autoexec.bat или просто ВАТ-файла. Следует иметь ввиду, что все выше сказанное, относится к ситуации, когда принтер имеет (и устанавливается при вкючении) знакогенератор с альтернативной кодировкой. Некоторые "совковые" принтеры имеют знакогенератор с основной кодировкой. В этом случае необходимо поправить перекодировочные таблицы драйвера.
Если Ваш принтер работает только в КОИ-7 - загружайте драйвер с ключем /0. В этом случае драйвер dprint не производит с символом каких-либо преобразований. Можно лишь сожалеть, но работать с большими и маленькими буквами латинского и русского алфавитов, в этом случае, не возможно. Учитывая, что наши пользователи имеют самый разношерстный парк принтеров, мы не можем приложить к пакету драйверы на все случаи жизни. Поэтому далее приводим исходные тексты драйвера. Листинги снабжены достаточными комментариями для понимания структуры драйвера и алгоритма его работы.

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

И так: - текстовым редактором (avi$) создайте три файла из общего листинга. Первый - от самого начала листинга и до первого end (включительно). Это будет загрузочный модуль.
Далее, вторую половину листинга (Интерфейс "centronics") сохраните как два раздельных файла с различным значением org (dos48 и dos60). Это будут lpt48 и lpt60. Транслируйте все три файла. Уберите признак самозапуска. Установите адрес посадки для lpt48 - 400Н, а для lpt60 -500Н. Сбросьте все три файла в ОЗУ, запустите os-dos48k и выполните команду:

save 6 dprint.com

Ваш драйвер на диске. Чтобы тут же его проверить - запустите драйвер:

А>dprint /7 (если принтер настроен на alt-кодировку, иначе /0)
Если драйвер определил готовность принтера - будет выведен повторно промпт os-dos без каких-либо сообщение, в противном случае - "ПРИНТЕР НЕ ГОТОВ!!". Это может означать, что принтер не включен, другой тип интерфейса или другая схема подключения принтера к порту.


ВНИМАНИЕ! "Орион-сервис" "изобрел" свою (ну так им хочется!) распортовку, которая не совпадает с авторской. При этом назначение выводов портов чисто случайное (как бог положил на душу).
Схемы подключения принтера для интерфейсов "centronics" (назначение выводов произведено так, что порт можно перевести в режим 1 и протокол "centronics" поддерживать аппаратно в режиме прерываний), "ИРПР", "rs-232" и lpt под ordos фирма "ОРИОНСОФТ" распространяла в пакете "Инструмент-2". Если у Вас работают наши lpt - проблемы не должны возникнуть.


Далее введите директиву os-dos - dir. Перед тем, как нажать клавишу {ВК} - введите ctrl (УС,СУ и тд.)+Р. Принтер должен распечатать каталог дискеты параллельно с выводом его на экран. Проверить драйвер с другой кодировкой можно при выполнении директивы os-dos - type. Выключается драйвер повторным вводом ctrl+p или перезапуском ("теплый старт" - f4, ctrl+c) os-dos.

Если все получилось - мы рады за Вас. Если что-то не получается - попросите помочь более опытных товарищей. Не следует писать нам душераздирающее письмо о своей проблеме с каким-то не стандартным (не epson-совместимым) "совковым" принтером. Мы вряд-ли сможем Вам помочь, так как у авторов принтеры - d100mpc, а подогнать драйвер заочно - пустое дело.
 

; ====== orionsoft =====
;
; драйвер печати
; принтер d100mpc (польша)
; автор: сугоняко в.п.
; 14.10.93
;=====================
;
ppa:equ 0f600h
ppb:equ 0f601h
ppc:equ 0f602h
ppu:equ 0f603h
;
fbdos:equ 5
msg:equ 0f818h
kbrd:equ 0f803h
;-------------------------------------
; внимание! транслировать дополнит.
; файлы lpt48.as и lpt60.as.
; при сборке lpt48 "сажать" - 400h,
; a lpt60 - 500h
;-------------------------------------
org 100h
;
lxi sp,100h ;уст. адреса стекa
mvi c,0ch ;провер.корректности
call fbdos ; ср/м-80
mov a,l
cpi 22h ;это ср/м 2.2?
jnz erver
mov a,c ;доп.проверка:
cpi 24h ;это - os-dos v2.41?
jz dr0
cpi 26h ;это - os-dos v2.61?
jnz erver
;
dr0:lhld 5dh ;есть ли ключи?
mov a,l
cpi '/' ;а сам признак ключа?
jnz dr00 ; если нет-ручной ввод
mov a,h
jmp dr01
;
dr00:lxi d,tbtyt ; титул
mvi c,9
call fbdos ;msg
mvi c,1
call fbdos ;kbrd
dr01:sta dr3+1
cpi '0' ;"прозрачный" (alt)?
jz dr1
cpi '7' ; в кои-7?
jz dr1
cpi '8' ; в кои-8?
jnz help
;
dr1:mvi a,98h ;программир.порт
sta ppu
xra a
sta ppc ; strobe - 1
sttm:dcr a
jnz sttm
sttm2:lda ppc
ani 80h ;принтер готов?
jnz dr3 ; а=0 - не готов
lxi d,tbrdy ;"принтер не готов"
mvi c,9
call fbdos ;msg
jmp 0
;
dr3:mvi a,0 ;флаг кои-?
ani 0fh
sta 40eh ;коррекция dump lpt48
sta 50eh ;коррекция dump lpt60
;
up0:lda 2fh ;флаг страницы ср/м
ana a
jnz up2 ;a=/=0 - os-dos60
; a=0 - os-dos40
up1:lxi d,0bf60h ;адрес вх.в прог.- print
mvi a,0fh ;смещ. bios - list
call toch
;
lxi d,0bf63h ;адрес вх.в прог.- status
mvi a,2dh ;смещ. bios - stprint
call toch
;
lxi h,400h ; посадка - lpt48
lxi d,0bf60h
jmp up3
;
up2:lxi d,0ef60h ;адрес вх.в прог.- print
mvi a,0fh ;смещ. bios - list
call toch
;
lxi d,0ef63h ;адрес вх.в прог.- statuspr
mvi a,2dh ;смещ. bios - stprint
call toch
;
lxi h,500h ; посадка - lpt60
lxi d,0ef60h
up3:mvi b,97h
call copym
jmp 0
;
copym:mov a,m
stax d
inx h
inx d
dcr b
jnz copym
ret
;
toch:inr a
mov l,a
lda 2
mov h,a
mov m,e
inx h
mov m,d
ret
;
tbrdy:db 0dh,0ah
db 'принтер не готов!!$'
;
tbtyt:db 0dh,0ah
db '*********************************',0ah,0dh
db '* д р а й в е р п е ч а т и *',0ah,0dh
db '* os-dos ver 2.41/2.61 *',0ah,0dh
db '* "o r i o n s o f t" *',0ah,0dh
db '* 14.10.1993 *',0ah,0dh
db '*********************************',0ah,0dh
db ' alt/кои7/кои8/hlp - (0/7/8/h)$'
;
help:lxi d,tbhlp
hlp1:mvi c,9
call fbdos
jmp 0
;
tbhlp:db 0dh,0ah,0ah
db ' a>dprint /k',0dh,0ah
db ' где: k = 0 - alt',0dh,0ah
db ' 7 - кои7',0dh,0ah
db ' 8 - кои8',0dh,0ah
db ' h - help',0dh,0ah
db '---------------------$'
;
erver:lxi d,tbver
jmp hlp1
tbver:db 0dh,0ah
db ' установите os-dos',0dh,0ah
db ' v2.41/61',0dh,0ah
db ' фирмы "орионсофт"$'
;
end
;
;
;---------------------
; lpt48 (lpt60)
; интерфейс
; "centronics"
; ------------------
; "orionsoft" 1993
;=====================
ppa:equ 0f600h ;
ppb:equ 0f601h
ppc:equ 0f602h
ppu:equ 0f603h
;
fbdos:equ 5 ;вектор функций bdos
dos48:equ 0bf60h ;адрес размещ.lpt48
dos60:equ 0ef60h ;адрес размещ.lpt60
;
org dos48 ;* - lpt48
;org dos60 ;* - lpt60
;
; -----------------------
; транслировать отдельно
; с org=dos48 и dos60
; -----------------------
print:jmp wprint
statu:lda ppc ;чит.порт управления
ani 80h ; z=0 busy (не готов)
ret
;
wprint:push h
push d
push b
push psw
;
flag:mvi a,0 ; a=0 -прямой вывод - alt
ana a ; a=7 -кодир.под - кои7
jz wprt5 ; а=? -кодир.под - кои8
cpi 7
lxi h,tab7 ;таб.перекодировки в кои7
mov a,c
jz wprt30
lxi h,tab8 ;таб.перекодировки в кои8
ana a
jp wprt4
sui 0c0h
jmp wprt31
wprt30:cpi 60h
jc wprt4
sui 60h
wprt31:mvi d,0
mov e,a
dad d ;вычислить симв.в табл.
mov c,m
wprt4:call statu ; принтер готов?
jz wprt4
;----------------
; формиров.диалога "centronics"
; с принтером.
;
; заменить для других
; типов интерфейса.
; рег "c" - выводим.символ
;
wprt5:mov a,c
cma
sta ppb ; save data
mvi a,1 ; strobe - 0
sta ppc
xra a ; strobe - 1
sta ppc
pr1:call statu ;закончен выв.символа?
jz pr1 ;ожидать если нет
;------------
wpend:pop psw ;выход из программы
pop b
pop d
pop h
ret
;
; таблица перекодировки
; под альтернативную кодировку
; принтера
; для pr.= d100mpc - зг."орел"
;
; мал.рус.
tab8:db 0eeh,0a0h,0a1h,0e6h,0a4h,0a5h,0e4h,0a3h
db 0e5h,0a8h,0a9h,0aah,0abh,0ach,0adh,0aeh
;
db 0afh,0efh,0e0h,0e1h,0e2h,0e3h,0a6h,0a2h
db 0ech,0ebh,0a7h,0e8h,0edh,0e9h,0e7h,5fh
; больш.рус.
tab7:db 9eh,80h,81h,96h,84h,85h,94h,83h
db 95h,88h,89h,8ah,8bh,8ch,8dh,8eh
;
db 8fh,9fh,90h,91h,92h,93h,86h,82h
db 9ch,9bh,87h,98h,9dh,99h,97h,5fh
db 'svp'
;
end
;

 

 

    

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу