00001 *************************
00002 *
00003 * SAF.ASM
00004 * MDJ 11-20-90
00005 *
00006 * PRINTER OPERATORS
00007 *
00008 *************************
00009 *
00010 * REQUIRES: NTOACV
00011 *           OUTPUT
00012 *
00013 *************************
00014 *
00015 VDTA    EQU     $CB     SCRATCH VARIABLES
00016 VDTB    EQU     $CD
00017 NTOACV  EQU     $459E   NUMBER TO ASCII CONVERSION
00018 PRTCHR  EQU     $45E5   OUTPUT WORDS
00019 TYPEP   EQU     $467A
00020         ORG     $4F8A
00021 *
00022 *************************
00023 *
00024 * PCRLF
00025 * ( -- )
00026 * SENDS A CARRIAGE RETURN
00027 * AND LINEFEED TO THE
00028 * PRINTER
00029 *
00030 *************************
00031 *
00032 PCRLF   JSR     XPCR
00033         JSR     PLF
00034         RTS
00035 *
00036 *************************
00037 *
00038 * XPCR
00039 * ( -- )
00040 * SENDS A CARRIAGE RETURN
00041 * TO THE PRINTER
00042 *
00043 *************************
00044 *
00045 XPCR    PSHS    A
00046         LDA     #13
00047         PSHU    A
00048         JSR     PRTCHR
00049         PULS    A
00050         RTS
00051 *
00052 *************************
00053 *
00054 * PLF
00055 * ( -- )
00056 * SENDS A LINE FEED TO
00057 * THE PRINTER
00058 *
 
 
 
 
 
 
 
 
00059 *************************
00060 *
00061 PLF     PSHS    A
00062         LDA     #10
00063         PSHU    A
00064         JSR     PRTCHR
00065         PULS    A
00066         RTS
00067 *
00068 *************************
00069 *
00070 * PEMIT
00071 * (16b -- )
00072 * THE LEAST SIGNIFICANT
00073 * 7-BIT ASCII CHARACTER
00074 * IS SENT TO THE PRINTER
00075 *
00076 *************************
00077 *
00078 PEMIT   PSHS    A,B
00079         PULU    A,B
00080         CMPB    #126
00081         BLS     PEMIT1
00082         LDB     #32
00083 PEMIT1  PSHU    B
00084         JSR     PRTCHR
00085         PULS    A,B
00086         RTS
00087 *
00088 *************************
00089 *
00090 * PSPCE
00091 * ( -- )
00092 * AN ASCII SPACE IS SENT
00093 * TO THE PRINTER
00094 *
00095 *************************
00096 *
00097 PSPCE   PSHS    B
00098         LDB     #32
00099         PSHU    B
00100         JSR     PRTCHR
00101         PULS    B
00102         RTS
00103 *
00104 *************************
00105 *
00106 * PSPCS
00107 * (+n -- )
00108 * +n ASCII SPACES ARE
00109 * SENT TO THE PRINTER
00110 *
00111 *************************
00112 *
00113 PSPCS   PSHS    X
00114         PULU    X
00115 PSPCS1  CMPX    #0
00116         BEQ     PSPCS2
 
 
 
 
 
 
 
 
00117         JSR     PSPCE
00118         LEAX    -1,X
00119         BRA     PSPCS1
00120 PSPCS2  PULS    X
00121         RTS
00122 *
00123 *************************
00124 *
00125 * PTYPE
00126 * (addr +n -- )
00127 * +n CHARACTERS ARE SENT
00128 * TO THE PRINTER FROM
00129 * MEMORY BEGINNING WITH
00130 * THE CHARACTER AT addr
00131 * AND CONTINUING THROUGH
00132 * CONSECUTIVE ADDRESSES
00133 *
00134 *************************
00135 *
00136 PTYPE   PSHS    X,Y
00137         PULU    X
00138         PULU    Y
00139         CMPX    #0
00140         BEQ     PTYPE1
00141         JSR     TYPEP
00142 PTYPE1  PULS    X,Y
00143         RTS
00144 *
00145 *************************
00146 *
00147 * PDOT
00148 * (n -- )
00149 * THE ABSOLUTE VALUE OF n
00150 * IS SENT TO THE PRINTER
00151 * IN A FREE FIELD FORMAT
00152 * WITH A LEADING MINUS
00153 * SIGN IF n IS NEGATIVE
00154 *
00155 *************************
00156 *
00157 PDOT    PSHS    A,X,Y
00158         PULU    X       n
00159         CMPX    #0      n >= 0 ?
00160         BGE     PDOT1   GO IF YES
00161         LDY     #$FFFF  32-BIT SIGN EXTEND NEGATIVE
00162         BRA     PDOT2
00163 PDOT1   LDY     #0      32-BIT SIGN EXTEND POSITIVE
00164 PDOT2   STY     VDTA
00165         STX     VDTB
00166         JSR     NTOACV  GO CONVERT
00167 PDOT3   PULU    A
00168         PSHU    A
00169         CMPA    #32     END OF NUMBER (SPACE)?
00170         BEQ     PDOT4   GO IF YES
00171         JSR     PRTCHR
00172         BRA     PDOT3
00173 PDOT4   JSR     PRTCHR
00174         PULS    A,X,Y
 
 
 
 
 
 
 
 
00175         RTS
00176 *
00177 *************************
00178 *
00179 * PUDOT
00180 * (u -- )
00181 * u IS SENT TO THE
00182 * PRINTER AS AN UNSIGNED
00183 * NUMBER IN A FREE FIELD
00184 * FORMAT
00185 *
00186 *************************
00187 *
00188 PUDOT   PSHS    A,X,Y
00189         PULU    X       u
00190         LDY     #0      32-BIT SIGN EXTEND POSITIVE
00191 ZEND    BRA     PDOT2
00192         END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
