00001 *************************
00002 *
00003 * XJUMP1.ASM
00004 * MDJ 09-21-90
00005 *
00006 * GRAPHICS SUBROUTINES
00007 * SET ONE
00008 *
00009 *************************
00010 *
00011 * U AND S STACKS MUST
00012 * ALREADY BE INITIALIZED
00013 *
00014 *************************
00015 *
00016 * REF. "GRAPHICS PACKAGE"
00017 * PAGES 46 & 47
00018 * EXTENDED COLOR BASIC
00019 * UNRAVELLED
00020 *
00021 *************************
00022 *
00023 PMODE   EQU     $B6     GRAPHICS MODE
00024 HORBYT  EQU     $B9     # OF BYTES PER HORIZONTAL LINE
00025 VERBEG  EQU     $BF     VERTICAL COORDINATES START POINT
00026 BEGGRP  EQU     $BA     START OF CURRENT GRAPHICS PAGE
00027 HORBEG  EQU     $BD     HORIZONTAL COORDINATES START PT.
00028         ORG     $3A2E
00029 XJUMP1  LDU     #XJMP1A JUMP TABLE ADDRESS
00030         LDA     PMODE   GET GRAPHICS MODE
00031         ASLA            OFFSET INTO JUMP TABLE
00032         LDU     A,U     GET JUMP ADDRESS
00033         JMP     ,U      GO THERE
00036 XJMP1A  FDB     XJMP1B  JUMP TABLE
00037         FDB     XJMP1C
00038         FDB     XJMP1B
00039         FDB     XJMP1C
00040         FDB     XJMP1B
00041 XJMP1B  PSHS    B,U     PMODE 0,2,4 COORD. CONVERSION
00042         LDB     HORBYT  GET # OF BYTES PER ROW
00043         LDA     VERBEG+1 GET VERTICAL COORDINATE
00044         MUL             CALCULATE VERTICAL BYTE OFFSET
00045         ADDD    BEGGRP  ADD START OF GRAPHICS PAGE
00046         TFR     D,X     TEMPORARY SAVE
00047         LDB     HORBEG+1 GET HORIZONTAL COORDINATE
00048         LSRB            DIVIDE BY 8
00049         LSRB
00050         LSRB
00051         ABX             ADD HORIXONTAL BYTE OFFSET
00052         LDA     HORBEG+1 GET HORIZONTAL COORDINATE
00053         ANDA    #7      MASK OUT PIXEL NUMBER
00054         LDU     #XJMP1D POINT TO MASK TABLE
00055         LDA     A,U     GET PIXEL MASK
00056         PULS    B,U
00057         RTS
00058 XJMP1C  PSHS    B,U     PMODE 1,3 COORDINATE CONVERSION
00059         LDB     HORBYT  GET # OF BYTES PER ROW
00060         LDA     VERBEG+1 GET VERTICAL COORDINATE
 
 
 
 
 
 
 
 
00061         MUL             CALCULATE VERTICAL OFFSET
00062         ADDD    BEGGRP  ADD START OF GRAPHICS PAGE
00063         TFR     D,X     TEMPORARY SAVE
00064         LDB     HORBEG+1 GET HORIZONTAL COORDINATE
00065         LSRB            DIVIDE BY 4
00066         LSRB
00067         ABX             ADD HORIZONTAL BYTE OFFSET
00068         LDA     HORBEG+1 GET HORIZONTAL COORDINATE
00069         ANDA    #3      MASK OUT PIXEL NUMBER
00070         LDU     #XJMP1E POINT TO MASK TABLE
00071         LDA     A,U     GET PIXEL MASK
00072         PULS    B,U
00073         RTS
00074 XJMP1D  FCB     $80     PIXEL MASK TABLE FOR PMODE 0,2,4
00075         FCB     $40
00076         FCB     $20
00077         FCB     $10
00078         FCB     8
00079         FCB     4
00080         FCB     2
00081         FCB     1
00082 XJMP1E  FCB     $C0     PIXEL MASK TABLE FOR PMODE 1,3
00083         FCB     $30
00084         FCB     $C
00085 ZEND    FCB     3
00086         END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
