From f266f1c0355ed216cb1e50f4312e48fa52d2ce1a Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Mon, 12 Feb 2018 12:12:16 -0800 Subject: [PATCH] Apple 3 graphics demo --- src/inc/grafix.plh | 14 +++++ src/libsrc/grafix.pla | 91 +++++++++++++++++++++++++++++--- src/makefile | 7 ++- src/samplesrc/APPLE3.PIX#060000 | Bin 0 -> 26881 bytes src/samplesrc/gfxdemo.pla | 41 ++++++++++++++ 5 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 src/inc/grafix.plh create mode 100644 src/samplesrc/APPLE3.PIX#060000 create mode 100644 src/samplesrc/gfxdemo.pla diff --git a/src/inc/grafix.plh b/src/inc/grafix.plh new file mode 100644 index 0000000..1dd05a8 --- /dev/null +++ b/src/inc/grafix.plh @@ -0,0 +1,14 @@ +import grafix + predef pencolor(clr)#0 + predef fillcolor(clr)#0 + predef fillscreen()#0 + predef penmove(x, y)#0 + predef plot(x, y)#0 + predef line(x1, y1, x2, y2)#0 + predef lineto(x, y)#0 + predef rect(x1, y1, x2, y2)#0 + predef fillrect(x1, y1, x2, y2)#0 + predef bitblt(blk, pitch, x, y, width, height)#0 + predef drawmode(mode)#0 + predef setmode(mode)#0 +end diff --git a/src/libsrc/grafix.pla b/src/libsrc/grafix.pla index eba26c2..6a610ab 100644 --- a/src/libsrc/grafix.pla +++ b/src/libsrc/grafix.pla @@ -1,7 +1,7 @@ include "inc/cmdsys.plh" byte gfxref, gfxseg -byte params[8], cmd[10] +byte params[8], cmd[16] export def pencolor(clr)#0 params:4 = 2 @@ -10,26 +10,105 @@ export def pencolor(clr)#0 syscall($CB, @params) end +export def fillcolor(clr)#0 + params:4 = 2 + cmd.0 = 20 // Fill color + cmd.1 = clr + syscall($CB, @params) +end + +export def fillscreen()#0 + params:4 = 1 + cmd.9 = 28 // Clear viewport + syscall($CB, @params) +end + +export def penmove(x, y)#0 + params:4 = 5 + cmd.0 = 26 // Move pen + cmd:1 = x + cmd:3 = y + syscall($CB, @params) +end + +export def plot(x, y)#0 + params:4 = 5 + cmd.0 = 25 // Plot + cmd:1 = x + cmd:3 = y + syscall($CB, @params) +end + export def line(x1, y1, x2, y2)#0 params:4 = 10 cmd.0 = 26 // Move pen cmd:1 = x1 cmd:3 = y1 - cmd.5 = 24 // Move pen - cmd:6 = x1 - cmd:8 = y1 + cmd.5 = 24 // Line + cmd:6 = x2 + cmd:8 = y2 + syscall($CB, @params) +end + +export def lineto(x, y)#0 + params:4 = 5 + cmd.0 = 24 // Line + cmd:1 = x + cmd:3 = y syscall($CB, @params) end export def rect(x1, y1, x2, y2)#0 + params:4 = 10 + cmd.0 = 26 // Move pen + cmd:1 = x1 + cmd:3 = y1 + cmd.5 = 24 // Line + cmd:6 = x2 + cmd:8 = y1 + syscall($CB, @params) + params:4 = 15 + cmd.0 = 24 // Line + cmd:1 = x2 + cmd:3 = y2 + cmd.5 = 24 // Line + cmd:6 = x1 + cmd:8 = y2 + cmd.10 = 24 // Line + cmd:11 = x1 + cmd:13 = y1 + syscall($CB, @params) +end + +export def fillrect(x1, y1, x2, y2)#0 params:4 = 11 - cmd.0 = 2 // Set viewport + cmd.0 = 2 // Set viewport cmd:1 = x1 cmd:3 = x2 cmd:5 = y1 cmd:7 = y2 cmd.9 = 28 // Clear viewport - cmd.10 = 1 // Reset viewport + cmd.10 = 1 // Reset viewport + syscall($CB, @params) +end + +export def bitblt(bits, pitch, x, y, width, height)#0 + params:4 = 14 + cmd.0 = 4 // Draw block + cmd:1 = bits + cmd.3 = ^$FFED & $8F + cmd:4 = pitch + cmd:6 = x + cmd:8 = y + cmd:10 = width + cmd:12 = height + syscall($CB, @params) +end + +export def drawmode(mode)#0 + params:4 = 2 + cmd.0 = 21 // Transfer mode + cmd.1 = mode syscall($CB, @params) end diff --git a/src/makefile b/src/makefile index 44c13d7..de32272 100755 --- a/src/makefile +++ b/src/makefile @@ -38,6 +38,7 @@ HTTPD = HTTPD\#FE1000 DGR = DGR\#FE1000 TONE = TONE\#FE1000 GRAFIX = GRAFIX\#FE1000 +GFXDEMO = GFXDEMO\#FE1000 PORTIO = PORTIO\#FE1000 ROGUE = ROGUE\#FE1000 ROGUEMAP= ROGUEMAP\#FE1000 @@ -74,7 +75,7 @@ TXTTYPE = .TXT #SYSTYPE = \#FF2000 #TXTTYPE = \#040000 -all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM802) $(PLVM03) $(CMD) $(PLASMAPLASM) $(CODEOPT) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(SOS) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(TONE) $(GRAFIX) $(DGR) $(DGRTEST) $(FILEIO) $(CONIO) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) +all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM802) $(PLVM03) $(CMD) $(PLASMAPLASM) $(CODEOPT) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(SOS) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(TONE) $(GRAFIX) $(GFXDEMO) $(DGR) $(DGRTEST) $(FILEIO) $(CONIO) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) clean: -rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) @@ -250,6 +251,10 @@ $(GRAFIX): libsrc/grafix.pla $(PLVM02) $(PLASM) ./$(PLASM) -AMOW < libsrc/grafix.pla > libsrc/grafix.a acme --setpc 4094 -o $(GRAFIX) libsrc/grafix.a +$(GFXDEMO): samplesrc/gfxdemo.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/gfxdemo.pla > samplesrc/gfxdemo.a + acme --setpc 4094 -o $(GFXDEMO) samplesrc/gfxdemo.a + $(FATCAT): samplesrc/fatcat.pla $(PLVM02) $(PLASM) ./$(PLASM) -AMOW < samplesrc/fatcat.pla > samplesrc/fatcat.a acme --setpc 4094 -o $(FATCAT) samplesrc/fatcat.a diff --git a/src/samplesrc/APPLE3.PIX#060000 b/src/samplesrc/APPLE3.PIX#060000 new file mode 100644 index 0000000000000000000000000000000000000000..23fee282bb56b1d3618f24cc117082f8da5093ff GIT binary patch literal 26881 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 literal 0 HcmV?d00001 diff --git a/src/samplesrc/gfxdemo.pla b/src/samplesrc/gfxdemo.pla new file mode 100644 index 0000000..ab08e08 --- /dev/null +++ b/src/samplesrc/gfxdemo.pla @@ -0,0 +1,41 @@ +include "inc/cmdsys.plh" +include "inc/args.plh" +include "inc/fileio.plh" +include "inc/grafix.plh" + +var arg +byte ref + +def showimage#0 + var row, x + byte scanline[140] + + for row = 0 to 191 + // + // Read one scanline at a time, scale it, and draw it + // + fileio:read(ref, @scanline, 140) + for x = 139 downto 0 + //scanline[x] = scanline[x] >> 4 + pencolor(scanline[x] >> 4) + plot(x, row) + next + next +end + +arg = argNext(argFirst) +if ^arg + ref = fileio:open(arg) + if ref + setmode(3) // 140 x 192 full color (or greyscale) + showimage + fileio:close(ref) + getc + setmode(-1) + else + puts("Unable to open "); puts(arg); putln + fin +else + puts("Usage: gfxdemo \n") +fin +done