PAGE 50,132
TITLE PRINT_GRAPHICS (PRINTGR1.ASM)
COMMENT *
================================================================
            PROGRAM DESCRIPTION
This program will print medium and high-resolution screen graphics
on an Epson MX-80 printer equipped with GRAFTRAX.  It may be
invoked at any time by pressing Alt-PrtSc.

        Author:    Steve Titcomb
                   Sherman Fairchild Laboratory
                   Lehigh University
                   Bethlehem, PA  18015

        Version:   1.0
        Date:      2/18/83

I am distributing this program as FREEWARE (tm) and encouraging 
copying.  A contribution of 9$ would be greatly appreciated.

       copyright (c) 1983 Steve Titcomb

===============================================================
*
        EXTRN   PRTSC_1:FAR
;Equates.
KB_DATA EQU     60H
ALT_SHIFT       EQU     08H
;
BIOS    SEGMENT AT 0F000H
        ORG     0E987H
KB_INT  LABEL   FAR
BIOS    ENDS
;
BIOS_DATA SEGMENT AT 40H
        ORG     17H
KB_FLAG LABEL   BYTE
BIOS_DATA ENDS
;
STACK   SEGMENT PARA STACK 'STACK'
        DB      16 DUP('STACK   ')
STACK   ENDS
;
CSEG    SEGMENT PARA PUBLIC 'CODE'
START   PROC    FAR
        ASSUME  CS:CSEG,DS:BIOS_DATA
        JMP     FAR PTR INITIALIZE
START   ENDP
;
SUBTTL NEW KEYBOARD INTERRUPT ENTRY POINT
        PAGE
NEW_INT PROC    FAR
        STI
        PUSH    AX
        PUSH    DS
        CLD
        MOV     AX,BIOS_DATA
        MOV     DS,AX
        IN      AL,KB_DATA
        CMP     AL,55           ;PrtSc key?
        JNZ     NEW_RET
        TEST    KB_FLAG,ALT_SHIFT ;Alt key depressed?
        JZ      NEW_RET
        CALL    PRTSC_1
NEW_RET LABEL   NEAR
        POP     DS
        POP     AX
        JMP     KB_INT
NEW_INT ENDP
SUBTTL INITIALIZATION ROUTINE
        PAGE
INITSEG SEGMENT PARA 'CODE'
INITIALIZE      PROC    FAR
        ASSUME  CS:INITSEG
        CLI
        PUSH    DS           ;set up return to beginning of
        SUB     AX,AX        ;program segment prefix
        PUSH    AX
        MOV     BX,0CH       ;get present load segment
        MOV     ES,[BX]
        MOV     AX,SS
        MOV     ES:[103H],AX ;command.com gets new load segment
        ;Set up new keyboard interrupt vector
        SUB     AX,AX
        MOV     DS,AX
        MOV     BX,24H
        MOV     AX,OFFSET NEW_INT
        MOV     [BX],AX
        MOV     AX,CS
        MOV     [BX+2],AX
        STI
        RET
INITIALIZE ENDP
INITSEG ENDS
        END     START
