; ADI PRINTER PLOTTER TEST PROGRAM CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE ORG 100H START: MOV AX,357BH INT 21H ;GET ADI VECTOR CMP WORD PTR ES:[BX],0 ;ANY VECTOR THERE? JNZ GOTVEC ;YES MOV DX,OFFSET NOVEC MOV AH,9 INT 21H ;ELSE, SAY "NO VECTOR" INT 20H GOTVEC: MOV AX,8001H INT 7BH ;INITIALIZE PRINTER OR AL,AL ;TEST PRINTER JNZ GOON ;GO ON WITH TEST BAD: MOV DX,OFFSET SAYBAD MOV AH,9 INT 21H ;SAY PRINTER REPORTS BAD INT 20H GOON: CALL EMPTY JZ BAD MOV AX,48 ;GET A BYTE COUNT MOV BX,OFFSET GDATA ;POINT TO GRAPHIC DATA TSTLOOP:MOV CX,DS ;USE THIS DS PUSH AX ;SAVE COUNT PUSH BX ;AND POINTER INT 7BH ;CALL DRIVER OR AX,AX JZ BAD POP BX POP AX DEC AX ;MAKE NEXT LINE SHORTER JNZ TSTLOOP CALL EMPTY JZ BAD MOV DL,49 ;GET ANOTHER COUNT MOV BX,OFFSET GDATA XOR AX,AX TSTLP2: MOV CX,DS PUSH AX PUSH BX PUSH DX INT 7BH POP DX POP BX POP AX INC AX DEC DL JNZ TSTLP2 CALL EMPTY MOV BX,OFFSET TSTMSG ;POINT TO TEST MSG MOV DL,19 ;17 LINES IN IT MSGLP: PUSH BX PUSH DX MOV AX,6 MOV CX,DS INT 7BH ;SEND MSG TO PRINTER POP DX POP BX ADD BX,6 DEC DL JNZ MSGLP MOV AX,8002H INT 7BH ;SIGNAL END INT 20H EMPTY: MOV CX,30 EMLOOP: XOR AX,AX PUSH CX INT 7BH ;SEND AN EMPTY LINE OR AX,AX JZ EMX POP CX LOOP EMLOOP INC CL ;SET NZ EMX: RET NOVEC DB 13,10,'No ADI driver loaded.$' SAYBAD DB 13,10,'Printer reported a problem.$' GDATA DB 48 DUP (0FFH) TSTMSG DB 6 DUP (0FFH) DB 11000000B,0,0,0,0,00000011B DB 11000000B,0,0,0,0,00000011B DB 11000000B,0,0,0,0,00000011B DB 11000000B,0,0,0,0,00000011B DB 11000000B,11111100B,11111100B,11111100B,11111100B,00000011B DB 11000000B,00110000B,11000000B,11000000B,00110000B,00000011B DB 11000000B,00110000B,11000000B,11000000B,00110000B,00000011B DB 11000000B,00110000B,11000000B,11000000B,00110000B,00000011B DB 11000000B,00110000B,11111000B,11111100B,00110000B,00000011B DB 11000000B,00110000B,11000000B,00001100B,00110000B,00000011B DB 11000000B,00110000B,11000000B,00001100B,00110000B,00000011B DB 11000000B,00110000B,11000000B,00001100B,00110000B,00000011B DB 11000000B,00110000B,11111100B,11111100B,00110000B,00000011B DB 11000000B,0,0,0,0,00000011B DB 11000000B,0,0,0,0,00000011B DB 11000000B,0,0,0,0,00000011B DB 11000000B,0,0,0,0,00000011B DB 6 DUP (0FFH) CODE ENDS END START