mirror of
https://github.com/dschmenk/PLASMA.git
synced 2026-03-12 16:42:08 +00:00
381 lines
17 KiB
Plaintext
381 lines
17 KiB
Plaintext
include "inc/cmdsys.plh"
|
|
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
|
|
//
|
|
const SPRW = 16
|
|
const SPRH = 16
|
|
byte[] sprite = $55,$55,$55,$05,$50,$55,$55,$55
|
|
byte[] = $55,$55,$00,$00,$00,$00,$55,$55
|
|
byte[] = $55,$00,$00,$AA,$AA,$00,$00,$55
|
|
byte[] = $05,$00,$AA,$AA,$AA,$AA,$00,$50
|
|
byte[] = $00,$A0,$AA,$FF,$FF,$AA,$0A,$00
|
|
byte[] = $00,$AA,$FF,$FF,$FF,$FF,$AA,$00
|
|
byte[] = $00,$AA,$1F,$12,$12,$F2,$AA,$00
|
|
byte[] = $00,$AA,$2F,$21,$21,$F1,$AA,$00
|
|
byte[] = $00,$AA,$1F,$12,$12,$F2,$AA,$00
|
|
byte[] = $00,$AA,$2F,$21,$21,$F1,$AA,$00
|
|
byte[] = $00,$AA,$FF,$FF,$FF,$FF,$AA,$00
|
|
byte[] = $00,$A0,$AA,$FF,$FF,$AA,$0A,$00
|
|
byte[] = $05,$00,$AA,$AA,$AA,$AA,$00,$50
|
|
byte[] = $55,$00,$00,$AA,$AA,$00,$00,$55
|
|
byte[] = $55,$55,$00,$00,$00,$00,$55,$55
|
|
byte[] = $55,$55,$55,$05,$50,$55,$55,$55
|
|
word sprite7msk[7]
|
|
word sprite7[7]
|
|
word sprite7span, sprite7w
|
|
//
|
|
// Dither matrices
|
|
//
|
|
byte[] dither25 = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
|
byte[] = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
|
byte[] = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
|
byte[] = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
|
byte[] dither50 = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
|
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
|
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
|
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
|
byte[] dither75 = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
|
byte[] = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
|
byte[] = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
|
byte[] = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
|
word[] dither = @dither25, @dither50, @dither75
|
|
//
|
|
// Sliding sprite Y coordinate
|
|
//
|
|
const SLIDEY = 170
|
|
//
|
|
// Utility functions
|
|
//
|
|
def dcgrAllocBl7Mem(w, h)#2
|
|
word memblk, span
|
|
|
|
span = (w+13)/7 << 2
|
|
memblk = heapalloc(span * h)
|
|
return memblk, span
|
|
end
|
|
def dcgrStr(x, y, strptr)#0
|
|
byte i
|
|
|
|
for i = 1 to ^strptr
|
|
dcgrBitmap(x, y, 7, 8, @fontBits + (^(strptr + i) + 128) * 8)
|
|
x = x + 7
|
|
next
|
|
end
|
|
def dcgrBoldStr(x, y, strptr)#0
|
|
byte h, v
|
|
|
|
for v = y - 1 to y + 1
|
|
for h = x - 1 to x + 1
|
|
dcgrStr(h, v, strptr)
|
|
next
|
|
next
|
|
dcgrColor(CLR_BLACK)
|
|
dcgrStr(x, y, strptr)
|
|
end
|
|
def dcgrRect(x, y, w, h)#0
|
|
byte x2, y2, v
|
|
|
|
x2 = x + w - 1
|
|
y2 = y + h - 1
|
|
for v = y to y2
|
|
dcgrHLin(x, x2, v)
|
|
next
|
|
end
|
|
def dcgrCompSprite#0
|
|
byte i
|
|
|
|
for i = 0 to 6
|
|
sprite7[i], sprite7span = dcgrAllocBl7Mem(SPRW, SPRH)
|
|
sprite7msk[i], sprite7span = dcgrAllocBl7Mem(SPRW, SPRH)
|
|
sprite7w = sprite7span >> 2
|
|
dcgrSurfMem(OP_SRC, SPRH, sprite7[i], sprite7span)
|
|
dcgrColor(CLR_BLACK)
|
|
dcgrClearBl7(0, 0, sprite7w, SPRH)
|
|
dcgrPixMap(i + 2, 0, SPRW, SPRH, @sprite)
|
|
dcgrSurfMem(OP_SRC, SPRH, sprite7msk[i], sprite7span)
|
|
dcgrColor(CLR_WHITE)
|
|
dcgrClearBl7(0, 0, sprite7w, SPRH)
|
|
dcgrPixMap(i + 2, 0, SPRW, SPRH, @sprite)
|
|
dcgrOp(OP_XOR)
|
|
dcgrPixMap(i + 2, 0, SPRW, SPRH, @sprite)
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrMemBl7(0, i * SPRH, sprite7w, SPRH, sprite7[i], sprite7span)
|
|
dcgrMemBl7(sprite7w, i * SPRH, sprite7w, SPRH, sprite7msk[i], sprite7span)
|
|
next
|
|
end
|
|
////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Test Harness //
|
|
// //
|
|
////////////////////////////////////////////////////////////////
|
|
def dcgrTest#0
|
|
word i, j, k, oi, oj, i7, im7, k7, km7, s7w, inci, incj, inck
|
|
word backblk, backspan
|
|
word restrblk, restrspan, restr7w, restrw
|
|
byte mode
|
|
|
|
dcgrSurfScr(OP_SRC)
|
|
setlineplot(@dcgrPlot)
|
|
setlinespans(@dcgrHLin, @dcgrVLin)
|
|
for i = 0 to 191 step 2
|
|
dcgrColor(i)
|
|
linespans(0, 0, 139, i)
|
|
next
|
|
for i = 139 downto 0 step 2
|
|
dcgrColor(i)
|
|
linespans(0, 0, i, 191)
|
|
next
|
|
dcgrColor(CLR_BLACK)
|
|
dcgrClearBl7(21/7, 30, 100/7, 132)
|
|
dcgrColor(CLR_WHITE)
|
|
dcgrHLin((21/7)*7-1, (21/7)*7+(100/7)*7, 29)
|
|
dcgrHLin((21/7)*7-1, (21/7)*7+(100/7)*7, 29+133)
|
|
dcgrVLin(29, 29+133, (21/7)*7-1)
|
|
dcgrVLin(29, 29+133, (21/7)*7+(100/7)*7)
|
|
dcgrBoldStr(30, 10, "Hello, DCGR!")
|
|
i = 64; j = 64; k = 86
|
|
k7 = k/7
|
|
inci = 1; incj = 1; inck = 2
|
|
backblk, backspan = dcgrAllocBl7Mem(SCR_WIDTH, SPRH)
|
|
dcgrSurfMem(OP_SRC, SPRH, backblk, backspan)
|
|
dcgrScrBl7(0, SLIDEY, backspan >> 2, SPRH)
|
|
restrblk, restrspan = dcgrAllocBl7Mem(SPRW, SPRH)
|
|
restr7w = restrspan >> 2
|
|
restrw = restr7w * 7
|
|
mode = 8
|
|
while mode
|
|
if ^$C000 >= 128
|
|
mode = (^$C010 & $7F) - '0'
|
|
fin
|
|
k7, km7 = divmod(k, 7)
|
|
i7, im7 = divmod(i, 7)
|
|
if i7 + sprite7w < (21/7)+(100/7)
|
|
s7w = sprite7w
|
|
else
|
|
s7w = (21/7)+(100/7) - i7
|
|
fin
|
|
when mode
|
|
is 1
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrMemBl7(i7, j, s7w, SPRH, sprite7[im7], sprite7span)
|
|
is 2
|
|
if k < 0 and km7 // Handle off left edge special case
|
|
k7--
|
|
km7 = 7 + km7
|
|
fin
|
|
dcgrSurfMem(OP_SRC, SPRH, restrblk, restrspan)
|
|
dcgrMemBl7(0, 0, restr7w, SPRH, backblk + (k7 << 1), backspan)
|
|
dcgrOp(OP_AND)
|
|
dcgrMemBl7(0, 0, sprite7w, SPRH, sprite7msk[km7], sprite7span)
|
|
dcgrOp(OP_XOR)
|
|
dcgrMemBl7(0, 0, sprite7w, SPRH, sprite7[km7], sprite7span)
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrMemBl7(k7, SLIDEY, restr7w, SPRH, restrblk, restrspan)
|
|
break
|
|
is 3
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrPixMap(i, j, SPRW, SPRH, @sprite)
|
|
is 4
|
|
dcgrSurfMem(OP_SRC, SPRH, restrblk, restrspan)
|
|
dcgrMemBl7(0, 0, restr7w, SPRH, backblk + (k7 << 1), backspan)
|
|
dcgrPixMap(km7 + 2, 0, SPRH, SPRH, @sprite)
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrMemBl7(k7, SLIDEY, restr7w, SPRH, restrblk, restrspan)
|
|
break
|
|
is 5
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrPixMap(i, j, SPRW, SPRH, @sprite)
|
|
is 6
|
|
dcgrSurfMem(OP_SRC, SPRH, restrblk, restrspan)
|
|
dcgrMemBl7(0, 0, restr7w, SPRH, backblk + (k7 << 1), backspan)
|
|
dcgrColor(CLR_BLACK)
|
|
dcgrRect(km7 + 2, 3, 14 + 2, 10)
|
|
dcgrColor(CLR_WHITE)
|
|
dcgrStr(km7 + 3, 4, "DC")
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrMemBl7(k7, SLIDEY, restr7w, SPRH, restrblk, restrspan)
|
|
break
|
|
is 7
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrMemBl7(i7, j, s7w, SPRH, sprite7[im7], sprite7span)
|
|
break
|
|
is 8
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrPixMap(i, j, SPRW, SPRH, @sprite)
|
|
break
|
|
is 9
|
|
dcgrSurfScr(OP_XOR)
|
|
dcgrPixMap(oi, oj, SPRW, SPRH, @sprite)
|
|
dcgrPixMap(i, j, SPRW, SPRH, @sprite)
|
|
break
|
|
wend
|
|
if k > 136 or k < -16; inck = -inck; fin
|
|
k = k + inck
|
|
oi = i; oj = j
|
|
if i > 102 or i < 22; inci = -inci; fin
|
|
i = i + inci
|
|
if j > 145 or j < 32; incj = -incj; fin
|
|
j = j + incj
|
|
loop
|
|
//
|
|
// Re-use the back buffer for a stipple pattern to mask the screen
|
|
//
|
|
for k = 0 to 2
|
|
dcgrSurfMem(OP_SRC, SPRH, backblk, backspan)
|
|
dcgrColor(CLR_WHITE)
|
|
dcgrClearBl7(0, 0, SCR_WIDTH7, SPRH)
|
|
dcgrColor(CLR_BLACK)
|
|
for i = 0 to 139 step 16
|
|
dcgrBitMap(i, 0, 16, 16, dither[k])
|
|
next
|
|
dcgrSurfScr(OP_AND)
|
|
for j = 0 to 95 step 16
|
|
dcgrMemBl7(0, j, SCR_WIDTH7, 16, backblk, backspan)
|
|
dcgrMemBl7(0, 175 - j, SCR_WIDTH7, 16, backblk, backspan)
|
|
next
|
|
next
|
|
dcgrSurfScr(OP_SRC)
|
|
dcgrClearBl7(0, 0, SCR_WIDTH7, SCR_HEIGHT)
|
|
end
|
|
dcgrMode(0)
|
|
dcgrCompSprite
|
|
dcgrTest
|
|
dcgrMode(-1)
|
|
done
|