00001 *************************
00002 *
00003 * DCHAR.ASM
00004 * MDJ 09-25-90
00005 *
00006 * DISPLAYS A CHARACTER
00007 *
00008 * DOES NOT ADVANCE CURSOR
00009 *
00010 *************************
00011 *
00012 * REQUIRES: CS64M
00013 *           GPKG
00014 *
00015 * ON ENTRY, THE CHARACTER
00016 * NUMBER (8-BIT, ASCII 33
00017 * MINIMUM, ASCII 126
00018 * MAXIMUM) MUST BE ON TOP
00019 * OF THE U-STACK, THE 
00020 * X-CURSOR LOCATION MUST
00021 * BE IN XCURS, AND THE 
00022 * Y-CURSOR LOCATION MUST
00023 * BE IN YCURS - XCURS &
00024 * YCURS ARE BOTH 16-BIT
00025 *
00026 * NOTHING RETURNED
00027 *
00028 * CHARACTER PRINTED TO
00029 * SCREEN (SETSCR TYPE)
00030 *
00031 *************************
00032 *
00033 XCURS   EQU     $F3     CURSOR X LOCATION
00034 YCURS   EQU     $F5     CURSOR Y LOCATION
00035 CS64M1  EQU     $3200   CHARACTER LIST BASE
00036 CS64M2  EQU     $325E   DOTS LIST BASE
00037 PSET    EQU     $3E7F   SEE GPKG.ASM
00038         ORG     $3F00
00039 DCHAR   PSHS    A,B,X,Y
00040         PULU    B       CHARACTER NUMBER
00041         SUBB    #33     OFFSET
00042         LDX     #CS64M1 POINT TO CHARACTERS LIST BASE
00043         ABX             POINTER TO NUMBER OF DOTS
00044         LDA     ,X      GET NUMBER OF DOTS
00045         ASLB            TIMES 2 BYTES PER CHARACTER
00046         LDX     #CS64M2 POINT TO DOTS LIST BASE
00047         ABX             POINT TO DOTS LIST POINTER
00048         LDY     ,X      START OF DOTS FOR CHARACTER
00049 DCHAR1  CMPA    #0      END OF DOTS?
00050         BEQ     DCHAR2  GO IF YES
00051         LDX     XCURS   GET X-CURSOR
00052         LDB     ,Y+     OFFSET X AND BUMP Y
00053         ABX             ESTABLISH X POINT
00054         PSHS    X       SAVE X POINT
00055         LDX     YCURS   GET Y-CURSOR
00056         LDB     ,Y+     OFFSET Y AND BUMP Y
00057         ABX             ESTABLISH Y POINT
00058         PSHU    X       PUSH Y POINT TO U-STACK
 
 
 
 
 
 
 
 
00059         PULS    X       RECALL X POINT
00060         PSHU    X       PUSH X POINT TO U-STACK
00061         JSR     PSET    GO SET POINT
00062         DECA            DECREMENT DOTS POINTER
00063         BRA     DCHAR1  RETURN FOR NEXT DOT
00064 DCHAR2  PULS    A,B,X,Y
00065 ZEND    RTS
00066         END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
