diff --git a/src/inc/dcgrlib.plh b/src/inc/dcgrlib.plh index 2982bf6..dcec4b7 100644 --- a/src/inc/dcgrlib.plh +++ b/src/inc/dcgrlib.plh @@ -28,10 +28,12 @@ import dcgrlib predef dcgrPlotScr(x, y)#0 predef dcgrHLinScr(x1, x2, y)#0 predef dcgrVlinScr(y1, y2, x)#0 + predef dcgrBitScr(x, y, w, h, bitptr)#0 predef dcgrPixScr(x, y, w, h, pixptr)#0 predef dcgrPlotMem(x, y, w, h, dstptr, dstspan)#0 predef dcgrHLinMem(x1, x2, y, dstptr, dstspan)#0 predef dcgrVLinMem(y1, y2, x, dstptr, dstspan)#0 + predef dcgrBitMem(x, y, w, h, bitptr, dstw, dsth, dstptr, dstspan)#0 predef dcgrPixMem(x, y, w, h, pixptr, dstw, dsth, dstptr, dstspan)#0 predef dcgrScrBl7Mem(x7, y, w7, h, dstptr, dstspan)#0 predef dcgrMemBl7Scr(x7, y, w7, h, srcptr, srcspan)#0 diff --git a/src/libsrc/apple/dcgrlib.pla b/src/libsrc/apple/dcgrlib.pla index ec6a033..dab2c7e 100644 --- a/src/libsrc/apple/dcgrlib.pla +++ b/src/libsrc/apple/dcgrlib.pla @@ -204,7 +204,7 @@ asm _clipX#0 LDA ESTKL-1,X ; X COORD CMP TMPL ; > DST_WIDTH? BCS INVISX ; YEP, X OFF RIGHT EDGE - CLC + ;CLC ADC ESTKL-3,X ; X + WIDTH CMP TMPL ; < DST_WIDTH? BCC VISX ; YEP, FULLY VISIBLE @@ -250,7 +250,7 @@ asm _clipY#0 LDA ESTKL-2,X ; Y COORD CMP TMPL ; > DST_HEIGHT? BCS INVISY ; YEP, Y OFF BOTTOM EDGE - CLC + ;CLC ADC ESTKL-4,X ; Y + HEIGHT CMP TMPL ; < DST_HEIGHT BCC VISY ; YEP, FULLY VISIBLE @@ -489,6 +489,59 @@ asm _dcgrVLinScrB BNE YVS RTS end +export asm dcgrBitScr(x, y, w, h, bitptr)#0 + INX + INX + INX + INX + INX + STX ESP + LDA ESTKL-5,X ; BITPTR + STA SRCL + LDA ESTKH-5,X + STA SRCH +YBITS LDY ESTKL-2,X ; Y COORD + INC ESTKL-2,X ; Y COORD++ + CPY #192 ; OFF SCREEN? + BCS NXTBITS +end +asm _dcgrBitScrA + LDA $1000,Y ; HGRSCANL + STA DSTL + LDA $2000,Y ; HGRSCANH + STA DSTH + LDA ESTKL-1,X ; X COORD + STA ESTKH-1,X ; CURRENT X COORD + LDA ESTKL-3,X ; WIDTH + STA ESTKH-3,X ; CURRENT WIDTH +BITS8 LDA #8 + STA TMPL + LDY #$00 + LDA (SRC),Y ; SRC BITMAP + INC SRCL + BNE + + INC SRCH ++ LDY ESTKH-1,X ; CURRENT X COORD +BITSCR LSR + BCC + + CPY #140 ; OFF SCREEN? + BCS + + PHA +end +asm _dcgrBitScrB + JSR $1000 ; PLOT PIXEL + PLA ++ DEC ESTKH-3,X ; AT RIGHT EDGE? + BEQ NXTBITS + INC ESTKH-1,X ; X++ + LDY ESTKH-1,X ; CURRENT X COORD + DEC TMPL + BNE BITSCR + BEQ BITS8 +NXTBITS DEC ESTKL-4,X ; HEIGHT + BNE YBITS ; NEXT ROW +RETBITS RTS +end export asm dcgrPixScr(x, y, w, h, pixptr)#0 INX INX @@ -790,6 +843,80 @@ asm _dcgrVLinMemB BNE YVM + RTS end +export asm dcgrBitMem(x, y, w, h, bitptr, dstw, dsth, dstptr, dstspan)#0 + TXA + CLC + ADC #9 + TAX + STX ESP + LDA ESTKL-8,X ; DSTPTR + STA DSTL + LDA ESTKH-8,X + STA DSTH + LDY ESTKL-2,X ; Y COORD + BEQ + +- CLC ; ADVANCE TO Y SCANLINE + LDA ESTKL-9,X ; SPAN + ADC DSTL + STA DSTL + LDA ESTKH-9,X + ADC DSTH + STA DSTH + DEY + BNE - ++ LDA ESTKL-5,X ; BITPTR + STA SRCL + LDA ESTKH-5,X + STA SRCH + LDA ESTKL-1,X ; X COORD + CLC + ADC ESTKL-3,X ; WIDTH + STA TMPH ; -> RIGHT EDGE +YBITM LDA ESTKL-2,X ; Y COORD + INC ESTKL-2,X ; Y COORD++ + CMP ESTKL-7,X ; OUT OF DST BOUNDS? + BCS NXTBITM + TAY + LDA ESTKL-1,X ; X COORD + STA ESTKH-1,X ; CURRENT X COORD + LDA ESTKL-3,X ; WIDTH + STA ESTKH-3,X ; CURRENT WIDTH +BITM8 LDA #8 + STA TMPL + LDY #$00 + LDA (SRC),Y ; SRC BITMAP + INC SRCL + BNE + + INC SRCH ++ LDY ESTKH-1,X ; CURRENT X COORD +BITMEM LSR + BCC + + CPY TMPH ; OUT OF DST BOUNDS? + BCS + + PHA +end +asm _dcgrBitMemA + JSR $1000 ; PLOT PIXEL + PLA ++ DEC ESTKH-3,X ; AT RIGHT EDGE? + BEQ NXTBITM + INC ESTKH-1,X ; X++ + LDY ESTKH-1,X ; CURRENT X COORD + DEC TMPL + BNE BITMEM + BEQ BITM8 +NXTBITM CLC + LDA ESTKL-9,X ; SPAN + ADC DSTL + STA DSTL + LDA ESTKH-9,X + ADC DSTH + STA DSTH + DEC ESTKL-4,X ; HEIGHT + BNE YBITM ; NEXT ROW +RETBITM RTS +end + export asm dcgrPixMem(x, y, w, h, pixptr, dstw, dsth, dstptr, dstspan)#0 TXA CLC @@ -1552,6 +1679,9 @@ _dcgrHLinScrB:1 = @_dcgrPlotScrB _dcgrVLinScrA:1 = @hgrscanl _dcgrVLinScrA:6 = @hgrscanh _dcgrVLinScrB:1 = @_dcgrPlotScrB +_dcgrBitScrA:1 = @hgrscanl +_dcgrBitScrA:6 = @hgrscanh +_dcgrBitScrB:1 = @_dcgrPlotScrB _dcgrPixScrA:1 = @hgrscanl _dcgrPixScrA:6 = @hgrscanh _dcgrPixScrB:1 = @_dcgrColorA @@ -1588,6 +1718,7 @@ _dcgrOpPlotMemG:1 = @memclrl _dcgrOpPlotMemH:1 = @memclrh _dcgrHLinMemB:1 = @_dcgrPlotMemB _dcgrVLinMemB:1 = @_dcgrPlotMemB +_dcgrBitMemA:1 = @_dcgrPlotMemB _dcgrPixMemB:1 = @_dcgrColorA _dcgrPixMemC:1 = @_dcgrPlotMemB _dcgrPixMemD:1 = @_dcgrColorA diff --git a/src/samplesrc/dcgrtest.pla b/src/samplesrc/dcgrtest.pla index 7f05ba0..1c954f1 100644 --- a/src/samplesrc/dcgrtest.pla +++ b/src/samplesrc/dcgrtest.pla @@ -3,7 +3,138 @@ include "inc/lines.plh" include "inc/dcgrlib.plh" sysflags resxtxt1|reshgr1|resxhgr1 - +// +// Apple //e hires character font +// +byte fontBits[] +byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 +byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 +byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 +byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 +byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 +byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 +byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 +byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 +byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 +byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 +byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 +byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 +byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 +byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 +byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 +byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F +byte = $00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$08,$08,$08,$00,$08,$00 +byte = $14,$14,$14,$00,$00,$00,$00,$00,$14,$14,$3E,$14,$3E,$14,$14,$00 +byte = $08,$3C,$0A,$1C,$28,$1E,$08,$00,$06,$26,$10,$08,$04,$32,$30,$00 +byte = $04,$0A,$0A,$04,$2A,$12,$2C,$00,$08,$08,$08,$00,$00,$00,$00,$00 +byte = $08,$04,$02,$02,$02,$04,$08,$00,$08,$10,$20,$20,$20,$10,$08,$00 +byte = $08,$2A,$1C,$08,$1C,$2A,$08,$00,$00,$08,$08,$3E,$08,$08,$00,$00 +byte = $00,$00,$00,$00,$08,$08,$04,$00,$00,$00,$00,$3E,$00,$00,$00,$00 +byte = $00,$00,$00,$00,$00,$00,$08,$00,$00,$20,$10,$08,$04,$02,$00,$00 +byte = $1C,$22,$32,$2A,$26,$22,$1C,$00,$08,$0C,$08,$08,$08,$08,$1C,$00 +byte = $1C,$22,$20,$18,$04,$02,$3E,$00,$3E,$20,$10,$18,$20,$22,$1C,$00 +byte = $10,$18,$14,$12,$3E,$10,$10,$00,$3E,$02,$1E,$20,$20,$22,$1C,$00 +byte = $38,$04,$02,$1E,$22,$22,$1C,$00,$3E,$20,$10,$08,$04,$04,$04,$00 +byte = $1C,$22,$22,$1C,$22,$22,$1C,$00,$1C,$22,$22,$3C,$20,$10,$0E,$00 +byte = $00,$00,$08,$00,$08,$00,$00,$00,$00,$00,$08,$00,$08,$08,$04,$00 +byte = $10,$08,$04,$02,$04,$08,$10,$00,$00,$00,$3E,$00,$3E,$00,$00,$00 +byte = $04,$08,$10,$20,$10,$08,$04,$00,$1C,$22,$10,$08,$08,$00,$08,$00 +byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 +byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 +byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 +byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 +byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 +byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 +byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 +byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 +byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 +byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 +byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 +byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 +byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 +byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 +byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 +byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F +byte = $00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$08,$08,$08,$00,$08,$00 +byte = $14,$14,$14,$00,$00,$00,$00,$00,$14,$14,$3E,$14,$3E,$14,$14,$00 +byte = $08,$3C,$0A,$1C,$28,$1E,$08,$00,$06,$26,$10,$08,$04,$32,$30,$00 +byte = $04,$0A,$0A,$04,$2A,$12,$2C,$00,$08,$08,$08,$00,$00,$00,$00,$00 +byte = $08,$04,$02,$02,$02,$04,$08,$00,$08,$10,$20,$20,$20,$10,$08,$00 +byte = $08,$2A,$1C,$08,$1C,$2A,$08,$00,$00,$08,$08,$3E,$08,$08,$00,$00 +byte = $00,$00,$00,$00,$08,$08,$04,$00,$00,$00,$00,$3E,$00,$00,$00,$00 +byte = $00,$00,$00,$00,$00,$00,$08,$00,$00,$20,$10,$08,$04,$02,$00,$00 +byte = $1C,$22,$32,$2A,$26,$22,$1C,$00,$08,$0C,$08,$08,$08,$08,$1C,$00 +byte = $1C,$22,$20,$18,$04,$02,$3E,$00,$3E,$20,$10,$18,$20,$22,$1C,$00 +byte = $10,$18,$14,$12,$3E,$10,$10,$00,$3E,$02,$1E,$20,$20,$22,$1C,$00 +byte = $38,$04,$02,$1E,$22,$22,$1C,$00,$3E,$20,$10,$08,$04,$04,$04,$00 +byte = $1C,$22,$22,$1C,$22,$22,$1C,$00,$1C,$22,$22,$3C,$20,$10,$0E,$00 +byte = $00,$00,$08,$00,$08,$00,$00,$00,$00,$00,$08,$00,$08,$08,$04,$00 +byte = $10,$08,$04,$02,$04,$08,$10,$00,$00,$00,$3E,$00,$3E,$00,$00,$00 +byte = $04,$08,$10,$20,$10,$08,$04,$00,$1C,$22,$10,$08,$08,$00,$08,$00 +byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 +byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 +byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 +byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 +byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 +byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 +byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 +byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 +byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 +byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 +byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 +byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 +byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 +byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 +byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 +byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F +byte = $00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$08,$08,$08,$00,$08,$00 +byte = $14,$14,$14,$00,$00,$00,$00,$00,$14,$14,$3E,$14,$3E,$14,$14,$00 +byte = $08,$3C,$0A,$1C,$28,$1E,$08,$00,$06,$26,$10,$08,$04,$32,$30,$00 +byte = $04,$0A,$0A,$04,$2A,$12,$2C,$00,$08,$08,$08,$00,$00,$00,$00,$00 +byte = $08,$04,$02,$02,$02,$04,$08,$00,$08,$10,$20,$20,$20,$10,$08,$00 +byte = $08,$2A,$1C,$08,$1C,$2A,$08,$00,$00,$08,$08,$3E,$08,$08,$00,$00 +byte = $00,$00,$00,$00,$08,$08,$04,$00,$00,$00,$00,$3E,$00,$00,$00,$00 +byte = $00,$00,$00,$00,$00,$00,$08,$00,$00,$20,$10,$08,$04,$02,$00,$00 +byte = $1C,$22,$32,$2A,$26,$22,$1C,$00,$08,$0C,$08,$08,$08,$08,$1C,$00 +byte = $1C,$22,$20,$18,$04,$02,$3E,$00,$3E,$20,$10,$18,$20,$22,$1C,$00 +byte = $10,$18,$14,$12,$3E,$10,$10,$00,$3E,$02,$1E,$20,$20,$22,$1C,$00 +byte = $38,$04,$02,$1E,$22,$22,$1C,$00,$3E,$20,$10,$08,$04,$04,$04,$00 +byte = $1C,$22,$22,$1C,$22,$22,$1C,$00,$1C,$22,$22,$3C,$20,$10,$0E,$00 +byte = $00,$00,$08,$00,$08,$00,$00,$00,$00,$00,$08,$00,$08,$08,$04,$00 +byte = $10,$08,$04,$02,$04,$08,$10,$00,$00,$00,$3E,$00,$3E,$00,$00,$00 +byte = $04,$08,$10,$20,$10,$08,$04,$00,$1C,$22,$10,$08,$08,$00,$08,$00 +byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 +byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 +byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 +byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 +byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 +byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 +byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 +byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 +byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 +byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 +byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 +byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 +byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 +byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 +byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 +byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F +byte = $04,$08,$10,$00,$00,$00,$00,$00,$00,$00,$1C,$20,$3C,$22,$3C,$00 +byte = $02,$02,$1E,$22,$22,$22,$1E,$00,$00,$00,$3C,$02,$02,$02,$3C,$00 +byte = $20,$20,$3C,$22,$22,$22,$3C,$00,$00,$00,$1C,$22,$3E,$02,$3C,$00 +byte = $18,$24,$04,$1E,$04,$04,$04,$00,$00,$00,$1C,$22,$22,$3C,$20,$1C +byte = $02,$02,$1E,$22,$22,$22,$22,$00,$08,$00,$0C,$08,$08,$08,$1C,$00 +byte = $10,$00,$18,$10,$10,$10,$12,$0C,$02,$02,$22,$12,$0E,$12,$22,$00 +byte = $0C,$08,$08,$08,$08,$08,$1C,$00,$00,$00,$36,$2A,$2A,$22,$22,$00 +byte = $00,$00,$1E,$22,$22,$22,$22,$00,$00,$00,$1C,$22,$22,$22,$1C,$00 +byte = $00,$00,$1E,$22,$22,$1E,$02,$02,$00,$00,$3C,$22,$22,$3C,$20,$20 +byte = $00,$00,$3A,$06,$02,$02,$02,$00,$00,$00,$3C,$02,$1C,$20,$1E,$00 +byte = $04,$04,$1E,$04,$04,$24,$18,$00,$00,$00,$22,$22,$22,$32,$2C,$00 +byte = $00,$00,$22,$22,$22,$14,$08,$00,$00,$00,$22,$22,$2A,$2A,$36,$00 +byte = $00,$00,$22,$14,$08,$14,$22,$00,$00,$00,$22,$22,$22,$3C,$20,$1C +byte = $00,$00,$3E,$10,$08,$04,$3E,$00,$38,$0C,$0C,$06,$0C,$0C,$38,$00 +byte = $08,$08,$08,$08,$08,$08,$08,$08,$0E,$18,$18,$30,$18,$18,$0E,$00 +byte = $00,$2C,$1A,$00,$00,$00,$00,$00,$00,$2A,$14,$2A,$14,$2A,$00,$00 // // Test sprite // @@ -28,6 +159,44 @@ word sprite7mask[7] word sprite7[7] word sprite7span, sprite7width +def dcgrStrScr(x, y, strptr)#0 + byte i + + for i = 1 to ^strptr + dcgrBitScr(x, y, 7, 8, @fontBits + (^(strptr + i) + 128) * 8) + x = x + 7 + next +end +def dcgrBoldStrScr(x, y, strptr)#0 + byte h, v + + for v = y - 1 to y + 1 + for h = x - 1 to x + 1 + dcgrStrScr(h, v, strptr) + next + next + dcgrColor(DCLR_BLACK) + dcgrStrScr(x, y, strptr) +end +def dcgrFillMem(x, y, w, h, dstptr, dstspan)#0 + byte x2, y2, v + + if x < 0; w = w + x; x = 0; fin + if y < 0; h = h + y; y = 0; fin + x2 = x + w - 1 + y2 = y + h - 1 + for v = y to y2 + dcgrHLinMem(x, x2, v, dstptr, dstspan) + next +end +def dcgrStrMem(x, y, strptr, dstw, dsth, dstptr, dstspan)#0 + byte i + + for i = 1 to ^strptr + dcgrBitMem(x, y, 7, 8, @fontBits + (^(strptr + i) + 128) * 8, dstw, dsth, dstptr, dstspan) + x = x + 7 + next +end def compileSprite#0 byte i @@ -73,6 +242,7 @@ def dcgrTest#0 dcgrHLinScr((21/7)*7, (21/7)*7+(100/7)*7, 30+132) dcgrVLinScr(30, 30+132, (21/7)*7) dcgrVLinScr(30, 30+132, (21/7)*7+(100/7)*7) + dcgrBoldStrScr(30, 10, "Hello, DCGR!") i = 64; j = 64; k = 86 ok7 = k/7 inci = 1; incj = 1; inck = 2 @@ -85,6 +255,7 @@ def dcgrTest#0 mode = (^$C010 & $7F) - '0' fin ok7, om7 = divmod(k, 7) + dcgrOpMem(OP_SRC) when mode is 1 dcgrPixScr(i, j, 16, 16, @sprite) @@ -110,6 +281,16 @@ def dcgrTest#0 break is 5 dcgrPixScr(i, j, 16, 16, @sprite) + is 6 + dcgrMemBl7Mem(0, 0, restrw7, 16, backblk + (ok7 << 2), backspan, restrw7, 16, restrblk, restrspan) + dcgrColor(DCLR_BLACK) + dcgrFillMem(om7 + 2, 4, 14, 8, restrblk, restrspan) + dcgrColor(DCLR_WHITE) + dcgrStrMem(om7 + 2, 4, "DC", restrw, 16, restrblk, restrspan) + dcgrMemBl7Scr(ok7, 170, restrw7, 16, restrblk, restrspan) + break + is 7 + dcgrPixScr(i, j, 16, 16, @sprite) wend if k > 136 or k < -16; inck = -inck; fin k = k + inck