1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-07-21 04:29:14 +00:00

Add DoubleGRaphics library

This commit is contained in:
David Schmenk 2016-07-05 13:28:06 -07:00
parent 8ea34a1628
commit 8706e1ad96
2 changed files with 198 additions and 1 deletions

192
src/libsrc/dgr.pla Executable file
View File

@ -0,0 +1,192 @@
import cmdsys
predef memset, memcpy, heapmark, heapalloc, heaprelease
byte MACHID
end
//
// Apple II hardware constants.
//
const showgraphics = $C050
const showtext = $C051
const showfull = $C052
const showmix = $C053
const showpage1 = $C054
const showpage2 = $C055
const showlores = $C056
const showhires = $C057
const show40 = $C00C
const show80 = $C00D
const mapmain = $C000
const mapaux = $C001
const an3on = $C05E
const an3off = $C05F
const dis80 = $C07E
const ena80 = $C07F
const page1 = 0
const page2 = 1
//
// Color mapping.
//
byte[] evnclr = $00,$88,$11,$99,$22,$AA,$33,$BB
byte[] = $44,$CC,$55,$DD,$66,$EE,$77,$FF
byte[] oddclr = $00,$11,$22,$33,$44,$55,$66,$77
byte[] = $88,$99,$AA,$BB,$CC,$DD,$EE,$FF
asm dgrUpdate(buff)
!SOURCE "vmsrc/plvmzp.inc"
!MACRO FILLROW .rowaddr {
LDX #39
LDY #79
- BIT $C054 ; PAGE 1 (MAIN MEM)
LDA (SRC),Y
STA .rowaddr,X
DEY
BIT $C055 ; PAGE 2 (AUX MEM)
LDA (SRC),Y
STA .rowaddr,X
DEY
DEX
BPL -
}
LDA ESTKL,X
STA SRCL
LDA ESTKH,X
STA SRCH
STX ESP
PHP
SEI
+FILLROW $0400
INC SRCH
+FILLROW $0480
INC SRCH
+FILLROW $0500
INC SRCH
+FILLROW $0580
INC SRCH
+FILLROW $0600
INC SRCH
+FILLROW $0680
INC SRCH
+FILLROW $0700
INC SRCH
+FILLROW $0780
INC SRCH
+FILLROW $0428
INC SRCH
+FILLROW $04A8
INC SRCH
+FILLROW $0528
INC SRCH
+FILLROW $05A8
INC SRCH
+FILLROW $0628
INC SRCH
+FILLROW $06A8
INC SRCH
+FILLROW $0728
INC SRCH
+FILLROW $07A8
INC SRCH
+FILLROW $0450
INC SRCH
+FILLROW $04D0
INC SRCH
+FILLROW $0550
INC SRCH
+FILLROW $05D0
INC SRCH
+FILLROW $0650
INC SRCH
+FILLROW $06D0
INC SRCH
+FILLROW $0750
INC SRCH
+FILLROW $07D0
BIT $C054 ; PAGE 1 (MAIN MEM)
PLP
LDX ESP
RTS
end
asm vlbWait
DEX
- LDA $C019
BMI -
- LDA $C019
BPL -
RTS
end
def dgrMode
^showlores
^showfull
^showgraphics
^showpage1
^ena80 = 0
^show80 = 0
^mapaux = 0
^an3on
end
def txtMode
^showtext
^showpage1
^ena80 = 0
^show40 = 0
^^mapmain = 0
^an3on
end
def dgrPlot(buff, x, y, clr)
word pixptr
pixptr = buff + ((y >> 1) << 8) + (x >> 1)
if x & 1
clr = oddclr[clr & $0F]
else
clr = evnclr[clr & $0F]
fin
if y & 1
^pixptr = (^pixptr & $0F) | (clr & $F0)
else
^pixptr = (^pixptr & $F0) | (clr & $0F)
fin
end
def dgrClr(buff, clr)
byte row
word fillclr
clr = clr & $0F
fillclr = (oddclr[clr] << 8) | evnclr[clr]
for row = 0 to 5
memset(buff, fillclr, 80)
buff.1++
memset(buff, fillclr, 80)
buff.1++
memset(buff, fillclr, 80)
buff.1++
memset(buff, fillclr, 80)
buff.1++
next
end
def dgrTest
word dgrbuff
byte clsclr
dgrMode
dgrbuff = heapalloc(256*24)
^$C010
while ^$C000 < 128
dgrClr(dgrbuff, clsclr)
//vlbWait
dgrUpdate(dgrbuff)
clsclr++
loop
heaprelease(dgrbuff)
^$C010
txtMode
end
dgrTest
done

View File

@ -16,6 +16,7 @@ ETHERIP = ETHERIP\#FE1000
INET = INET\#FE1000
DHCP = DHCP\#FE1000
HTTPD = HTTPD\#FE1000
DGR = DGR\#FE1000
ROGUE = ROGUE\#FE1000
ROGUEIO = ROGUEIO\#FE1000
ROGUEMAP= ROGUEMAP\#FE1000
@ -49,7 +50,7 @@ TXTTYPE = .TXT
#SYSTYPE = \#FF2000
#TXTTYPE = \#040000
all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(MEMMGR) $(MEMTEST) $(FIBER) $(SB) $(MON) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(ROGUEIO) $(HGR1)
all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(MEMMGR) $(MEMTEST) $(FIBER) $(SB) $(MON) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(ROGUEIO) $(HGR1) $(DGR)
clean:
-rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03)
@ -154,6 +155,10 @@ $(HTTPD): samplesrc/httpd.pla $(PLVM02) $(PLASM)
./$(PLASM) -AM < samplesrc/httpd.pla > samplesrc/httpd.a
acme --setpc 4094 -o $(HTTPD) samplesrc/httpd.a
$(DGR): libsrc/dgr.pla $(PLVM02) $(PLASM)
./$(PLASM) -AM < libsrc/dgr.pla > libsrc/dgr.a
acme --setpc 4094 -o $(DGR) libsrc/dgr.a
$(ROGUE): samplesrc/rogue.pla $(PLVM02) $(PLASM)
./$(PLASM) -AM < samplesrc/rogue.pla > samplesrc/rogue.a
acme --setpc 4094 -o $(ROGUE) samplesrc/rogue.a