00001 *************************
00002 *
00003 * GPKG.ASM
00004 * MDJ 09-25-90
00005 * REV 04-45-91
00006 *
00007 * GRAPHICS CONTROL
00008 * PACKAGE
00009 *
00010 *************************
00011 *
00012 * REQUIRES: XSC
00013 *           XSCB
00014 *           XSCRN
00015 *           XPMODE
00016 *           XPCLS
00017 *           XPPNT
00018 *           XPSET
00019 *           XLINE
00020 *           XIC
00021 *           GPSET
00022 *
00023 *************************
00024 *
00025 GRPRAM  EQU     $BC     START OF GRAPHICS RAM
00026 HORBEG  EQU     $BD     X - STARTING POINT
00027 HOREND  EQU     $C3     X - ENDING POINT
00028 SETFLG  EQU     $C2     PSET/PRESET FLAG
00029 TXTTAB  EQU     $19     START OF BASIC PROGRAM
00030 VERBEG  EQU     $BF     Y - STARTING POINT
00031 VEREND  EQU     $C5     Y - ENDING POINT
00032 XIC     EQU     $3D5B   INTEGER CONVERSION ROUTINE
00033 XLINE   EQU     $3C50   LINE ROUTINE
00034 XPAGE   EQU     $3BAB   PAGE ROUTINE
00035 XPCLS   EQU     $3BDC   PCLS ROUTINE
00036 XPCLSS  EQU     $3BD2   PCLS TO SPECIFIED COLOR ROUTINE
00037 XPMODE  EQU     $3B7E   PMODE ROUTINE
00038 XPPNT   EQU     $3BEA   PPOINT ROUTINE
00039 XPSET   EQU     $3C2B   PSET ROUTINE
00040 XSC     EQU     $3B12   SET COLOR ROUTINE
00041 XSCB    EQU     $3B24   SET COLOR BYTES ROUTINE
00042 XSCRN   EQU     $3B34   SET SCREEN ROUTINE
00043 FORCOL  EQU     $B2
00044 GPSET   EQU     $47BA
00045 GLINE   EQU     $47D8
00046 GPSETS  EQU     $47AD
00047 GPCLSS  EQU     $47EC
00048         ORG     $3E26
00049 *
00050 *************************
00051 *
00052 * SETUP INITIALIZES THE
00053 * PSET/PRESET FLAG AND
00054 * RUNS XSCB
00055 *
00056 * SETUP MUST BE RUN JUST
00057 * AFTER INITIAL PMODE,
00058 * PCLS, & SCREEN AT THE
 
 
 
 
 
 
 
 
00059 * BEGINNING OF A PROGRAM
00060 * - IT IS NOT NEEDED
00061 * OTHERWISE
00062 *
00063 * NO ENTRY CONDITIONS
00064 *
00065 * NOTHING RETURNED
00066 *
00067 *************************
00068 *
00069 SETUP   PSHS    A,B
00070         LDA     #1
00071         STA     SETFLG  PSET/PRESET FLAG
00072         JSR     XSCB    SET COLOR BYTES ROUTINE
00073         PULS    A,B
00074         RTS
00075 *
00076 *************************
00077 *
00078 * PMODE SETS THE GRAPHICS
00079 * MODE ARGUMENT
00080 *
00081 * ON ENTRY, THE PMODE #
00082 * (8-BIT, 0-4) MUST BE ON
00083 * THE TOP OF THE U-STACK
00084 * AND THE GRAPHICS PAGE #
00085 * (8-BIT, 1-8) MUST BE ON
00086 * THE U-STACK IMMEDIATELY
00087 * BELOW IT
00088 *
00089 * NOTHING RETURNED
00090 *
00091 *************************
00092 *
00093 PMODE   PSHS    B
00094         PULU    B       PMODE #
00095         PSHS    U
00096         JSR     XPMODE  PMODE ROUTINE
00097         PULS    U
00098         PULU    B       GRAPHICS PAGE #
00099         JSR     XPAGE   PAGE ROUTINE
00100         PULS    B
00101         RTS
00102 *
00103 *************************
00104 *
00105 * PAGE SETS THE GRAPHICS
00106 * PAGE NUMBER
00107 *
00108 * ON ENTRY, THE GRAPHICS
00109 * PAGE # (8-BIT, 1-8)
00110 * MUST BE ON THE TOP OF
00111 * THE U-STACK
00112 *
00113 * NOTHING RETURNED
00114 *
00115 *************************
00116 *
 
 
 
 
 
 
 
 
00117 PAGE    PSHS    B
00118         PULU    B       GRAPHICS PAGE NUMBER
00119         JSR     XPAGE   PAGE ROUTINE
00120         PULS    B
00121         RTS
00122 *
00123 *************************
00124 *
00125 * PCLS CLEARS THE SCREEN
00126 * TO THE BACKGROUND COLOR
00127 *
00128 * NO ENTRY CONDITIONS
00129 *
00130 * NOTHING RETURNED
00131 *
00132 *************************
00133 *
00134 PCLS    PSHS    A,B,X
00135         JSR     XPCLS   PCLS ROUTINE
00136         PULS    A,B,X
00137         RTS
00138 *
00139 *************************
00140 *
00141 * PCLSS CLEARS THE SCREEN
00142 * TO A SPECIFIED COLOR
00143 *
00144 * ON ENTRY, THE COLOR
00145 * (16-BIT,1-8) MUST BE ON
00146 * TOP OF THE U-STACK
00147 *
00148 * NOTHING RETURNED
00149 *
00150 *************************
00151 *
00152 PCLSS   PSHS    A,B,X
00153         JSR     GPCLSS
00154         PULS    A,B,X
00155         RTS
00156 *
00157 *************************
00158 *
00159 * SCREEN SETS-UP THE
00160 * GRAPHICS SCREEN
00161 *
00162 * UNLIKE BASIC, THE
00163 * SCREEN CODE IS ALWAYS
00164 * 1 - THERE IS NO TEXT
00165 * MODE FOR THE SCREEN -
00166 * TEXT IS DONE IN PMODE 4
00167 *
00168 * ON ENTRY, THE COLOR SET
00169 * # (8-BIT, 0 OR 1) MUST
00170 * BE ON THE TOP OF THE
00171 * U-STACK
00172 *
00173 * NOTHING RETURNED
00174 *
 
 
 
 
 
 
 
 
00175 *************************
00176 *
00177 SCREEN  PSHS    A,B
00178         JSR     XSCRN   SET SCREEN ROUTINE
00179         PULU    B       COLOR SET NUMBER
00180         JSR     XSC     SET COLOR ROUTINE
00181         PULS    A,B
00182         RTS
00183 *
00184 *************************
00185 *
00186 * PCLEAR SETS THE NUMBER
00187 * OF GRAPHIC PAGES NEEDED
00188 *
00189 * UNLIKE BASIC, PCLEAR
00190 * CANNOT BE CHANGED FROM
00191 * 4 - THIS ROUTINE USED
00192 * BY SETSCR.ASM ONLY
00193 *
00194 * NOTHING RETURNED
00195 *
00196 *************************
00197 *
00198 PCLEAR  PSHS    A,B
00199         PULU    B       # OF GRAPHIC PAGES NEEDED
00200         LDA     #6      6 X 256 PER PAGE
00201         MUL
00202         ADDB    GRPRAM  START OF GRAPHICS RAM
00203         STB     TXTTAB  START OF BASIC PROGRAM
00204         PULS    A,B
00205         RTS
00206 *
00207 *************************
00208 *
00209 * PRESET RESETS A POINT 
00210 * TO THE BACKGROUND COLOR
00211 *
00212 * PSET SETS A POINT TO
00213 * THE FOREGROUND COLOR
00214 *
00215 * PSETS SETS A POINT TO
00216 * A SPECIFIED COLOR
00217 *
00218 * ON ENTRY FOR PRESET &
00219 * PSET, THE X-COORDINATE
00220 * (16-BIT) MUST BE ON THE
00221 * TOP OF THE U-STACK AND
00222 * THE Y-COORDINATE
00223 * (16-BIT) MUST BE ON THE
00224 * U-STACK IMMEDIATELY
00225 * BELOW IT
00226 *
00227 * ON ENTRY FOR PSETS, THE
00228 * COLOR NUMBER
00229 * (16-BIT,0-8) MUST BE ON
00230 * THE TOP OF THE U-STACK,
00231 * THE X-COORDINATE MUST
00232 * BE ON THE U-STACK
 
 
 
 
 
 
 
 
00233 * IMMEDIATELY BELOW IT,
00234 * AND THE Y-COORDINATE
00235 * MUST BE ON THE U-STACK
00236 * IMMEDIATELY BELOW THAT
00237 *
00238 * FOR PRESET, PSET, AND
00239 * PSETS, NOTHING RETURNED
00240 *
00241 *************************
00242 *
00243 PRESET  PSHS    A,B
00244         CLRA            USE BACKGROUND COLOR
00245         BRA     PGO
00246 PSET    PSHS    A,B
00247         LDA     #1      USE FOREGROUND COLOR
00248         BRA     PGO
00249 PSETS   PSHS    A,B
00250         PULU    A,B     GET COLOR NUMBER
00251         LDA     FORCOL  LOAD CURRENT COLOR NUMBER
00252         STB     FORCOL  SET TEMPORARY COLOR NUMBER
00253         JMP     GPSETS
00254 PGO     JSR     GPSET
00255         PULS    A,B
00256         RTS
00257         ORG     $3E9C
00258 *
00259 *************************
00260 *
00261 * PPOINT TESTS A GRAPHICS
00262 * POINT AND RETURNS ITS
00263 * COLOR NUMBER
00264 *
00265 * ON ENTRY, THE POINT'S
00266 * X-COORDINATE (16-BIT)
00267 * MUST BE ON THE TOP OF
00268 * THE U-STACK AND THE
00269 * Y-COORDINATE (16-BIT)
00270 * MUST BE ON THE U-STACK
00271 * IMMEDIATELY BELOW IT
00272 *
00273 * ON RETURN, THE POINT'S
00274 * COLOR # (16-BIT, 0-8)
00275 * IS ON THE TOP OF THE
00276 * U-STACK
00277 *
00278 *************************
00279 PPOINT  PSHS    A,B,X,Y
00280         PULU    X       X-COORDINATE
00281         STX     HORBEG  X - STARTING POINT
00282         PULU    X       Y-COORDINATE
00283         STX     VERBEG  Y - STARTING POINT
00284         PSHS    U
00285         JSR     XPPNT   PPOINT ROUTINE
00286         PULS    U
00287         JSR     XIC     INTEGER CONVERSION ROUTINE
00288         PSHU    A,B     16-BIT COLOR NUMBER
00289         PULS    A,B,X,Y
00290         RTS
 
 
 
 
 
 
 
 
00291 *
00292 *************************
00293 *
00294 * LINE DRAWS A GRAPHICS
00295 * LINE BETWEEN TWO POINTS
00296 *
00297 * ON ENTRY, THE U-STACK,
00298 * FROM TOP DOWN, MUST
00299 * HAVE THE FOLLOWING FOUR
00300 * 16-BIT VALUES:
00301 *
00302 *   STARTING X-COORDINATE
00303 *   STARTING Y-COORDINATE
00304 *   ENDING X-COORDINATE
00305 *   ENDING Y-COORDINATE
00306 *
00307 * NOTHING RETURNED
00308 *
00309 *************************
00310 *
00311 LINE    PSHS    A,B
00312         PULU    A,B
00313         STD     HORBEG  HORIZONTAL BEGIN COORDINATE
00314         PULU    A,B
00315         STD     VERBEG  VERTICAL BEGIN COORDINATE
00316         PULU    A,B
00317         STD     HOREND  HORIZONTAL END COORDINATE
00318         PULU    A,B
00319         STD     VEREND  VERTICAL END COORDINATE
00320         JSR     GLINE
00321         PULS    A,B
00322 ZEND    RTS
00323         END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
