[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DRAW & XDRAW... How to use



Here's the data sent to me by Pheonix noted below.  He also sent me this in a
ShrinkIt (SHK) archive.  Both have been made available for download
from the Apple2 ftp sites; Ground, Trenco, Tarnover and Asimov.  Both are also
included in the Jan2000 issue of GS WorldView from the following
URL: 

http://www.grin.net/~cturley/gsezine/GS.WorldView/Jan2000/Graphics/
-----------------------------------------------------------------------
***************************************************
*                                                 *
*                ZBLOCK SOURCE                    *
*                                                 *
*   A GRAPHICS BLOCK KLIP/DISPLAY ROUTINE FOR     *
*   THE APPLE HIRES SCREEN AND ZBASIC COMPILER    *
*                                                 *
*   Currently editing for data storage/retrieval  *
*   from a ZBASIC string field, or data structure *
*   in the following format:                      *
*            byte #    data value                 *
*            ------    ----------                 *
*               0       str-len (data size)       *
*                               (not used)        *
*               1       byte width (7 pixel/byte) *
*               2       byte length (pixel lines) *
*               3+      data bytes (255 max/str)  *
* 'Modified from the original BLOCK' code from    *
*   NIBBLE VOL.12/#2                              *
*                                                 *
*   Last Edit 20/may/93                           *
*                                                 *
*   Edasm-Prodos - Zbasic 4.0                     *
*                                                 *
***************************************************
* 
* EQUATES *
* 
TBLSTART EQU $06 ;START OF SHAPE
COUNTER EQU $08 ;# LINES COMPLETED
PNTR EQU $0B ;SCREEN POINTER
YNOW EQU $0D ;CURRENT LINE
SCREEN EQU $26 ;HPOSN RETURNS THIS
WIDTH EQU $FB
HEIGHT EQU $FC
XSTART EQU $FD
YSTART EQU $FE
MODE EQU $FF ;TRANSFER MODE
*
 ORG $9F00
*
DRAW JMP DRAW1 ;CALL TABLE
XDRAW JMP XDRAW1 ;AVOIDS AN EXTRA
ADRAW JMP ADRAW1 ;POKE THIS WAY
ODRAW JMP ODRAW1 ;
CLIP JMP CLIP1 ;
POINT JMP POINT1 ;COLUMN BASED PNTR
*
DRAW1 LDA #209 ;SET DRAW MODE
 STA MODE ;& CONT. SETUP
 CLC
 BCC SETUP
*
XDRAW1 LDA #81 ;SET XDRAW MODE
 STA MODE ;& CONT. SETUP
 CLC
 BCC SETUP
*
ADRAW1 LDA #49 ;SET AND MODE
 STA MODE ;& CONT. SETUP
 CLC
 BCC SETUP
*
ODRAW1 LDA #17 ;SET OR MODE
 STA MODE
 CLC
 BCC SETUP
*
CLIP1 LDA #$91 ;SET MODE VALUE
 STA MODE
 INC TBLSTART ;SKIP STR LEN
 LDY #0 ;STORE SHAPE
 LDA WIDTH ;WIDTH & HEIGHT
 STA (TBLSTART),Y ;IN ICON BUFFER
 INY
 LDA HEIGHT
 STA (TBLSTART),Y
 LDA #PNTR
 STA COLUMN+1
 LDA #TBLSTART
 STA COLUMN+3
 CLC
 BCC BEGIN
*
POINT1 LDA #81 ;EOR MODE FOR THIS
 STA MODE
 LDA #>ARROW ;POINT TO ICON
 STA TBLSTART
 LDA #<ARROW
 STA TBLSTART+1
*
SETUP INC TBLSTART ;SKIP STR LEN
 LDY #0
 LDA (TBLSTART),Y ;SET WIDTH
 STA WIDTH
 INY
 LDA (TBLSTART),Y ;SET HEIGHT
 STA HEIGHT
 LDA MODE ;RESTORE MODE AND CONTINUE
*
 STA COLUMN+2 ;STORE MODE
 LDA #TBLSTART ;AND SETUP
 STA COLUMN+1 ;DISP. MODULE
 LDA #PNTR
 STA COLUMN+3
 BNE BEGIN ;ALWAYS TAKEN
* 
BEGIN LDA YSTART ;GET LINE TO START ON
 STA YNOW ;AND PRESERVE
 LDA #$00
 STA COUNTER ;INIT COUNTER
* 
ROW LDA YNOW ;CURRENT Y VALUE
 LDX #$00 ;XLSB
 LDY #$00 ;XMSB
 JSR HPOSN ;CALC ADDR
* 
 CLC
 LDA SCREEN ;ADJUST FOR X POS.
 ADC XSTART
 STA PNTR
 LDA SCREEN+1
 ADC #$00
 STA PNTR+1
 LDY #$00
* 
* THIS CODE CHANGES BY TRANSFER MODES
* 
COLUMN LDA (TBLSTART),Y
 ORA (PNTR),Y
 STA (PNTR),Y
* 
 INY
 CPY WIDTH ;FINISHED ROW
 BCC COLUMN ;NO, DO NEXT COLUMN
* 
 CLC ;INC PNTRS TO NEXT ROW
 LDA TBLSTART
 ADC WIDTH
 STA TBLSTART
 LDA #$00
 ADC TBLSTART+1
 STA TBLSTART+1
* 
 INC YNOW ;NEXT ROW #
 INC COUNTER
 LDA COUNTER
 CMP HEIGHT
 BNE ROW
* 
 RTS
*
HPOSN TAY
 LDA TABLE.LO,Y
 STA SCREEN
 LDA TABLE.HI,Y
 STA SCREEN+1
 RTS
*
* ##### DEFINE ARROW BITMAP #####
*
ARROW DB 0
 DB 1
;WIDT
 DB 8 ;HEIGHT
 DB %01100000
 DB %01110000
 DB %01111000
 DB %01111100
 DB %01111110
 DB %00001100
 DB %00000110
 DB %00000011
*
* ##### DEFINE THE HIRES LOOKUP TABLES #####
*
TABLE.HI DB $20,$24,$28,$2C,$30,$34,$38,$3C,$20
 DB $24,$28,$2C,$30,$34,$38,$3C,$21,$25,$29
 DB $2D,$31,$35,$39,$3D,$21,$25,$29,$2D,$31,$35
 DB $39,$3D,$22,$26,$2A,$2E,$32,$36,$3A,$3E,$22
 DB $26,$2A,$2E,$32,$36,$3A,$3E,$23,$27,$2B,$2F
 DB $33,$37,$3B,$3F,$23,$27,$2B,$2F,$33,$37,$3B
 DB $3F,$20,$24,$28,$2C,$30,$34,$38,$3C,$20,$24
 DB $28,$2C,$30,$34,$38,$3C,$21,$25,$29,$2D,$31
 DB $35,$39,$3D,$21,$25,$29,$2D,$31,$35,$39,$3D
 DB $22,$26,$2A,$2E,$32,$36,$3A,$3E,$22,$26,$2A
 DB $2E,$32,$36,$3A,$3E,$23,$27,$2B,$2F,$33,$37
 DB $3B,$3F,$23,$27,$2B,$2F,$33,$37,$3B,$3F,$20
 DB $24,$28,$2C,$30,$34,$38,$3C,$20,$24,$28,$2C
 DB $30,$34,$38,$3C,$21,$25,$29,$2D,$31,$35,$39
 DB $3D,$21,$25,$29,$2D,$31,$35,$39,$3D,$22,$26
 DB $2A,$2E,$32,$36,$3A,$3E,$22,$26,$2A,$2E,$32
 DB $36,$3A,$3E,$23,$27,$2B,$2F,$33,$37,$3B,$3F
 DB $23,$27,$2B,$2F,$33,$37,$3B,$3F
*
TABLE.LO DB $00,$00,$00,$00,$00,$00,$00,$00,$80
 DB $80,$80,$80,$80,$80,$80,$80,$00,$00,$00
 DB $00,$00,$00,$00,$00,$80,$80,$80,$80,$80,$80
 DB $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$80
 DB $80,$80,$80,$80,$80,$80,$80,$00,$00,$00,$00
 DB $00,$00,$00,$00,$80,$80,$80,$80,$80,$80,$80
 DB $80,$28,$28,$28,$28,$28,$28,$28,$28,$A8,$A8
 DB $A8,$A8,$A8,$A8,$A8,$A8,$28,$28,$28,$28,$28
 DB $28,$28,$28,$A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8
 DB $28,$28,$28,$28,$28,$28,$28,$28,$A8,$A8,$A8
 DB $A8,$A8,$A8,$A8,$A8,$28,$28,$28,$28,$28,$28
 DB $28,$28,$A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8,$50
 DB $50,$50,$50,$50,$50,$50,$50,$D0,$D0,$D0,$D0
 DB $D0,$D0,$D0,$D0,$50,$50,$50,$50,$50,$50,$50
 DB $50,$D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0,$50,$50
 DB $50,$50,$50,$50,$50,$50,$D0,$D0,$D0,$D0,$D0
 DB $D0,$D0,$D0,$50,$50,$50,$50,$50,$50,$50,$50
 DB $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0 

------------------------------------------------------------------------

Well, that's it.  I hope it shows up OK in this post, with the proper col.
format.
If not, then you can always go and download it from the following URL noted
above or from the other ftp sites mentioned that I uploaded it to.  I hope this
proves useful.

Cheers,
Tom