00001 *************************
00002 *
00003 * SAE.ASM
00004 * MDJ 11-20-90
00005 *
00006 * SCREEN OPERATORS
00007 *
00008 *************************
00009 *
00010 * REQUIRES: KBDCNT
00011 *           KBDIN
00012 *           NTOACV
00013 *           OUTPUT
00014 *
00015 *************************
00016 *
00017 VDTA    EQU     $CB     SCRATCH VARIABLES
00018 VDTB    EQU     $CD
00019 CLRCHR  EQU     $41D1   KBDCNT ROUTINE
00020 CURSCT  EQU     $430D   KBDIN ROUTINE
00021 NTOACV  EQU     $459E   NUMBER TO ASCII CONVERSION
00022 PUTCHR  EQU     $45DC   OUTPUT WORDS
00023 PUTCHF  EQU     $45DF
00024 TYPER   EQU     $4639
00025 TYPEF   EQU     $465F
00026 CRLFS   EQU     $4694
00027         ORG     $4E84
00028 *
00029 *************************
00030 *
00031 * CR
00032 * ( -- )
00033 * DISPLAYS A CARRIAGE
00034 * RETURN AND LINEFEED ON
00035 * THE SCREEN
00036 *
00037 *************************
00038 *
00039 CR      JSR     CRLFS
00040         RTS
00041 *
00042 *************************
00043 *
00044 * EMIT
00045 * (16b -- )
00046 * THE LEAST SIGNIFICANT 
00047 * 7-BIT ASCII CHARACTER
00048 * IS DISPLAYED ON THE 
00049 * SCREEN.  THE CHARACTER
00050 * POSITION IS CLEARED 
00051 * FIRST
00052 *
00053 *************************
00054 *
00055 EMIT    PSHS    A,B
00056         PULU    A,B
00057         CMPB    #126
00058         BHI     EMIT1
 
 
 
 
 
 
 
 
00059         CMPB    #33
00060         BLO     EMIT1
00061         PSHU    B
00062         JSR     PUTCHR
00063         BRA     EMIT2
00064 EMIT1   JSR     CLRCHR
00065         JSR     CURSCT
00066 EMIT2   PULS    A,B
00067         RTS
00068 *
00069 *************************
00070 *
00071 * EMITF
00072 * (16b -- )
00073 * THE LEAST SIGNIFICANT
00074 * 7-BIT ASCII CHARACTER
00075 * IS DISPLAYED ON THE
00076 * SCREEN.  THE CHARACTER
00077 * POSITION IS NOT CLEARED
00078 * FIRST
00079 *
00080 *************************
00081 *
00082 EMITF   PSHS    A,B
00083         PULU    A,B
00084         CMPB    #126
00085         BHI     EMITF1
00086         CMPB    #33
00087         BLO     EMITF1
00088         PSHU    B
00089         JSR     PUTCHF
00090         BRA     EMITF2
00091 EMITF1  JSR     CURSCT
00092 EMITF2  PULS    A,B
00093         RTS
00094 *
00095 *************************
00096 *
00097 * SPACE
00098 * ( -- )
00099 * DISPLAYS AN ASCII SPACE
00100 * ON THE SCREEN.  THE
00101 * CHARACTER POSITION
00102 * IS CLEARED FIRST
00103 *
00104 *************************
00105 *
00106 SPACE   JSR     CLRCHR
00107         JSR     CURSCT
00108         RTS
00109 *
00110 *************************
00111 *
00112 * SPCEF
00113 * ( -- )
00114 * DISPLAYS AN ASCII SPACE
00115 * ON THE SCREEN.  THE
00116 * CHARACTER POSITION IS
 
 
 
 
 
 
 
 
00117 * NOT CLEARED FIRST
00118 *
00119 *************************
00120 *
00121 SPCEF   JSR     CURSCT
00122         RTS
00123 *
00124 *************************
00125 *
00126 * SPCES
00127 * (+n -- )
00128 * DISPLAYS +n ASCII
00129 * SPACES ON THE SCREEN.
00130 * THE CHARACTER POSITIONS
00131 * ARE CLEARED FIRST
00132 *
00133 *************************
00134 *
00135 SPCES   PSHS    X       SPACES
00136         PULU    X
00137 SPCES1  CMPX    #0
00138         BEQ     SPCES2
00139         JSR     CLRCHR
00140         JSR     CURSCT
00141         LEAX    -1,X
00142         BRA     SPCES1
00143 SPCES2  PULS    X
00144         RTS
00145 *
00146 *************************
00147 *
00148 * SPCSF
00149 * (+n -- )
00150 * DISPLAYS +n  ASCII
00151 * SPACES ON THE SCREEN.
00152 * THE CHARACTER POSITIONS
00153 * ARE NOT CLEARED FIRST
00154 *
00155 *************************
00156 *
00157 SPCSF   PSHS    X
00158         PULU    X
00159 SPCSF1  CMPX    #0
00160         BEQ     SPCSF2
00161         JSR     CURSCT
00162         LEAX    -1,X
00163         BRA     SPCSF1
00164 SPCSF2  PULS    X
00165         RTS
00166 *
00167 *************************
00168 *
00169 * TYPE
00170 * (addr +n -- )
00171 * +n CHARACTERS ARE
00172 * DISPLAYED ON THE SCREEN
00173 * FROM MEMORY BEGINNING
00174 * WITH THE CHARACTER AT
 
 
 
 
 
 
 
 
00175 * addr AND CONTINUING
00176 * THROUGH CONSECUTIVE
00177 * ADDRESSES.  THE
00178 * CHARACTER POSITIONS ARE
00179 * CLEARED FIRST
00180 *
00181 *************************
00182 *
00183 TYPE    PSHS    X,Y
00184         PULU    X
00185         PULU    Y
00186         CMPX    #0
00187         BEQ     TYPE1
00188         JSR     TYPER
00189 TYPE1   PULS    X,Y
00190         RTS
00191 *
00192 *************************
00193 *
00194 * TYPF
00195 * (addr +n -- )
00196 * +n CHARACTERS ARE 
00197 * DISPLAYED ON THE SCREEN
00198 * FROM MEMORY BEGINNING
00199 * WITH THE CHARACTER AT
00200 * addr AND CONTINUING
00201 * THROUGH CONSECUTIVE
00202 * ADDRESSES.  THE
00203 * CHARACTER POSITIONS ARE
00204 * NOT CLEARED FIRST
00205 *
00206 *************************
00207 *
00208 TYPF    PSHS    X,Y
00209         PULU    X
00210         PULU    Y
00211         CMPX    #0
00212         BEQ     TYPF1
00213         JSR     TYPEF
00214 TYPF1   PULS    X,Y
00215         RTS
00216 *
00217 *************************
00218 *
00219 * DOT
00220 * (n -- )
00221 * THE ABSOLUTE VALUE OF n
00222 * IS DISPLAYED ON THE 
00223 * SCREEN IN A FREE FIELD
00224 * FORMAT WITH A LEADING
00225 * MINUS SIGN IF n IS
00226 * NEGATIVE.  THE 
00227 * CHARACTER POSITIONS ARE
00228 * CLEARED FIRST
00229 *
00230 *************************
00231 *
00232 DOT     PSHS    A,X,Y   .
 
 
 
 
 
 
 
 
00233         PULU    X       n
00234         CMPX    #0      n >= 0 ?
00235         BGE     DOT1    GO IF YES
00236         LDY     #$FFFF  32-BIT SIGN EXTEND NEGATIVE
00237         BRA     DOT2
00238 DOT1    LDY     #0      32-BIT SIGN EXTEND POSITIVE
00239 DOT2    STY     VDTA
00240         STX     VDTB
00241         JSR     NTOACV  GO CONVERT
00242 DOT3    PULU    A
00243         PSHU    A
00244         CMPA    #32     END OF NUMBER (SPACE)?
00245         BEQ     DOT4    GO IF YES
00246         JSR     PUTCHR
00247         BRA     DOT3
00248 DOT4    JSR     CLRCHR
00249         JSR     CURSCT
00250         PULU    A       CLEAN-UP U-STACK
00251         PULS    A,X,Y
00252         RTS
00253 *
00254 *************************
00255 *
00256 * DOTF
00257 * (n -- )
00258 * THE ABSOLUTE VALUE OF n
00259 * IS DISPLAYED ON THE
00260 * SCREEN IN A FREE FIELD
00261 * FORMAT WITH A LEADING
00262 * MINUS SIGN IF n IS
00263 * NEGATIVE.  THE
00264 * CHARACTER POSITIONS ARE
00265 * NOT CLEARED FIRST
00266 *
00267 *************************
00268 *
00269 DOTF    PSHS    A,X,Y
00270         PULU    X       n
00271         CMPX    #0      n >= 0 ?
00272         BGE     DOTF1   GO IF YES
00273         LDY     #$FFFF  32-BIT SIGN EXTEND NEGATIVE
00274         BRA     DOTF2
00275 DOTF1   LDY     #0      32-BIT SIGN EXTEND POSITIVE
00276 DOTF2   STY     VDTA
00277         STX     VDTB
00278         JSR     NTOACV  GO CONVERT
00279 DOTF3   PULU    A
00280         PSHU    A
00281         CMPA    #32     END OF NUMBER (SPACE)?
00282         BEQ     DOTF4   GO IF YES
00283         JSR     PUTCHF
00284         BRA     DOTF3
00285 DOTF4   JSR     CURSCT
00286         PULU    A       CLEAN-UP U-STACK
00287         PULS    A,X,Y
00288         RTS
00289 *
00290 *************************
 
 
 
 
 
 
 
 
00291 *
00292 * UDOT
00293 * (u -- )
00294 * u IS DISPLAYED ON THE
00295 * SCREEN AS AN UNSIGNED
00296 * NUMBER IN A FREE FIELD
00297 * FORMAT.  THE CHARACTER
00298 * POSITIONS ARE CLEARED
00299 * FIRST
00300 *
00301 *************************
00302 *
00303 UDOT    PSHS    A,X,Y   U.
00304         PULU    X       u
00305         LDY     #0      32-BIT SIGN EXTEND POSITIVE
00306         BRA     DOT2
00307 *
00308 *************************
00309 *
00310 * UDOTF
00311 * (u -- )
00312 * u IS DISPLAYED ON THE
00313 * SCREEN AS AN UNSIGNED
00314 * NUMBER IN A FREE FIELD
00315 * FORMAT.  THE CHARACTER
00316 * POSITIONS ARE NOT
00317 * CLEARED FIRST
00318 *
00319 *************************
00320 *
00321 UDOTF   PSHS    A,X,Y
00322         PULU    X       u
00323         LDY     #0      32-BIT SIGN EXTEND POSITIVE
00324 ZEND    BRA     DOTF2
00325         END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
