Nickolay.info. Программы. Assembler. Утилитка инициализации принтера ESC-кодами

Утилитка инициализировала принтер ESC-кодами, была нужна во времена DOS и матричных принтеров вроде LQ-100 :)

; Посылает байты на принтер: Bytes[KolBytes]
; ESC,N,0 - установить нижний край 0 для непр. листа
cseg	segment para public 'code'
	assume cs:cseg,ds:cseg
	org    100h
main:   jmp    begin
BadMess db 'Printer not ready!',13,10,36
OkMess db 'Bytes sended!',13,10,36
KolBytes dw 3
Bytes  db 27,'N',0
Printer dw 0
TestPrn proc near
;Возвращает -1 в AX случае ошибки или номер принтера в случае успеха
  mov ah,1;
  mov dx,0;
  mov cx,2;
TEST_PORT:
  int 17h;
  cmp ah,010h;
  je OK;
  cmp ah,090h;
  je OK;
  inc dx;
  loop TEST_PORT;
  mov ax,-1;
  ret
OK:
  mov ax,dx;
  ret
TestPrn endp;

SendByte proc near
;байт AL на принтер
 mov ah,0;
 mov dx,Printer;
 int 17h;
 ret
SendByte endp;

begin:
        call TestPrn;
        cmp ax,-1;
        je OUT_PROGRAM;
	mov Printer,ax;
        mov cx,KolBytes;
	mov si, Bytes;
SEND:
         lodsb
         call SendByte;
        loop SEND
	lea	dx,OkMess
	mov	ah,9
	int	21h
        retn
OUT_PROGRAM:
       lea	dx,BadMess
       mov	ah,9
       int	21h
       retn

cseg	ends
	end	main

Рейтинг@Mail.ru
вверх гостевая; E-mail