diff --git a/src/makefile b/src/makefile index be94b47..fdd4797 100755 --- a/src/makefile +++ b/src/makefile @@ -65,6 +65,7 @@ DGRLIB = rel/apple/DGRLIB\#FE1000 HGRSPRITE = rel/apple/HGRSPRITE\#FE1000 LINES = rel/LINES\#FE1000 GRAFIX = rel/apple/GRAFIX\#FE1000 +SFM = rel/apple/SFM\#FE1000 GFXDEMO = rel/apple/GFXDEMO\#FE1000 JOYBUZZ = rel/apple/JOYBUZZ\#FE1000 PORTIO = rel/apple/PORTIO\#FE1000 @@ -104,7 +105,7 @@ TXTTYPE = .TXT #SYSTYPE = \#FF2000 #TXTTYPE = \#040000 -apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(ZIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRSPRITE) $(HGRLIB) $(HGRTEST) $(GRLIB) $(DGRLIB) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) +apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(ZIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRSPRITE) $(HGRLIB) $(HGRTEST) $(GRLIB) $(DGRLIB) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) -rm vmsrc/plvmzp.inc @@ -258,6 +259,10 @@ $(LONGJMP): libsrc/longjmp.pla $(PLVM02) $(PLASM) ./$(PLASM) -AMOW < libsrc/longjmp.pla > libsrc/longjmp.a acme --setpc 4094 -o $(LONGJMP) libsrc/longjmp.a +$(SFM): samplesrc/sfm.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/sfm.pla > samplesrc/sfm.a + acme --setpc 4094 -o $(SFM) samplesrc/sfm.a + $(ROGUE): samplesrc/rogue.pla $(PLVM02) $(PLASM) ./$(PLASM) -AMOW < samplesrc/rogue.pla > samplesrc/rogue.a acme --setpc 4094 -o $(ROGUE) samplesrc/rogue.a diff --git a/src/mkrel b/src/mkrel index b188559..aa184cf 100755 --- a/src/mkrel +++ b/src/mkrel @@ -75,6 +75,7 @@ cp rel/apple/HGRTEST#FE1000 prodos/demos/HGRTEST.REL cp rel/apple/GRTEST#FE1000 prodos/demos/GRTEST.REL cp rel/apple/DGRTEST#FE1000 prodos/demos/DGRTEST.REL cp rel/apple/HGRTEST#FE1000 prodos/demos/HGRTEST.REL +cp rel/apple/SFM#FE1000 prodos/demos/SFM.REL cp rel/apple/ROD#FE1000 prodos/demos/ROD.REL cp rel/RPNCALC#FE1000 prodos/demos/RPNCALC.REL cp rel/LZ4CAT#FE1000 prodos/demos/LZ4CAT.REL @@ -132,6 +133,7 @@ cp samplesrc/rpncalc.pla prodos/bld/samples/RPNCALC.PLA.TXT cp samplesrc/fatcat.pla prodos/bld/samples/FATCAT.PLA.TXT cp samplesrc/gfxdemo.pla prodos/bld/samples/GFXDEMO.PLA.TXT cp samplesrc/lz4cat.pla prodos/bld/samples/Z4CAT.PLA.TXT +cp samplesrc/sfm.pla prodos/bld/samples/SFM.PLA.TXT #mkdir prodos/bld/examples #cp samplesrc/examples/ex.1.pla prodos/bld/examples/EX.1.PLA.TXT diff --git a/src/samplesrc/sfm.pla b/src/samplesrc/sfm.pla index 8e4dc61..d4d35a6 100644 --- a/src/samplesrc/sfm.pla +++ b/src/samplesrc/sfm.pla @@ -1 +1,203 @@ -include "inc/cmdsys.plh" include "inc/hgrlib.plh" include "inc/hgrsprite.plh" include "inc/lines.plh" include "inc/joybuzz.plh" sysflags reshgr1|reshgr2 // Reserve HGR page 1 and 2 byte egg = $88,$83,$33,$33,$38,$88 byte = $88,$33,$11,$11,$33,$88 byte = $83,$31,$11,$11,$13,$38 byte = $33,$11,$11,$11,$11,$33 byte = $33,$11,$11,$11,$11,$33 byte = $33,$11,$11,$11,$11,$33 byte = $33,$11,$11,$11,$11,$33 byte = $83,$31,$11,$11,$13,$38 byte = $88,$33,$11,$11,$33,$88 byte = $88,$83,$33,$33,$38,$88 byte dummy = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte ship = $CC,$CC,$CC,$77,$CC,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $77,$CC,$77,$66,$77,$CC,$77 byte = $77,$CC,$77,$66,$77,$CC,$77 byte = $77,$CC,$77,$66,$77,$CC,$77 byte = $77,$CC,$77,$77,$77,$CC,$77 byte = $77,$CC,$77,$77,$77,$CC,$77 byte = $77,$CC,$77,$77,$77,$CC,$77 byte = $77,$C7,$77,$77,$77,$7C,$77 byte = $77,$77,$77,$77,$77,$77,$77 byte = $77,$77,$75,$55,$57,$77,$77 byte missle = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $C5,$55,$5C byte = $55,$55,$55 var sprtEgg, sprtShip, sprtMissle, sprtDummy def moire#0 var i setlinespans(@hgrHlin, @hgrVlin) setlineplot(@hgrXorPlot) hgrColor(7) for i = 0 to 191 step 8 linespans(0, i, 279, 191 - i) next for i = 0 to 279 step 9 linespans(i, 0, 279 - i, 191) next end def game(eggnum)#0 var[14] xegg, yegg, ixegg, iyegg var xship, xmissle byte yship, ymissle byte k, xdelta, ydelta, btn0, btn1 xship = 140 ymissle = 255 xegg[0] = 100 ixegg[0] = 1 yegg[0] = 60 iyegg[0] = -1 for k = 1 to 13 xegg[k] = ((xegg[k - 1] ^ 37) + 97) & 255 ixegg[k] = -ixegg[k - 1] yegg[k] = ((yegg[k - 1] ^ 29) + 53) & 63 iyegg[k] = -iyegg[k - 1] next repeat for k = 0 to 13 if yegg[k] <> 255 xegg[k] = xegg[k] + ixegg[k] if xegg[k] < -5 or xegg[k] > 284 ixegg[k] = -ixegg[k] fin yegg[k] = yegg[k] + iyegg[k] if yegg[k] < -5 or yegg[k] > 64 iyegg[k] = -iyegg[k] fin spritePosIndex(xegg[k], yegg[k], k+2) fin next xdelta, ydelta, btn0, btn1 = joypos(ymissle/4) xship = xship + (xdelta / 4 - 10) if xship < 0; xship = 0; fin if xship > 279; xship = 279; fin if btn0 and ymissle == 255 spriteAdd(1, sprtMissle) xmissle = xship ymissle = 172 fin if ymissle <> 255 if ymissle < 8 spriteDel(1) ymissle = 255 else ymissle = ymissle - 8 spritePosIndex(xmissle, ymissle, 1) for k = 0 to 13 if yegg[k] <> 255 if ymissle >= yegg[k] - 5 and ymissle <= yegg[k] + 5 if xmissle >= xegg[k] - 5 and xmissle <= xegg[k] + 5 // // Hit // yegg[k] = 255 ymissle = 255 spriteAdd(k + 2, spriteDup(sprtDummy)) spritePosIndex(0, 0, k + 2) spriteDel(1) fin fin fin next fin fin spritePosIndex(xship, 190, 0) spriteDrawList() spriteDrawBuf(hgrSwap()) until ^$C000 > 127 end hgrMode spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process sprtShip = spriteCompile(14, 14, 7, 13, @ship) sprtMissle = spriteCompile( 6, 8, 3, 0, @missle) sprtEgg = spriteCompile(12, 10, 6, 5, @egg) sprtDummy = spriteCompile( 7, 8, 0, 0, @dummy) hgrColor(8) hgrClear() moire memcpy($4000, $2000, $2000) // Copy to both buffers spriteDrawBuf(hgrDrawBuf(1)) spriteAdd(0, sprtShip) spriteAdd(2, sprtEgg) spriteAdd(3, spriteDup(sprtEgg)) spriteAdd(4, spriteDup(sprtEgg)) spriteAdd(5, spriteDup(sprtEgg)) spriteAdd(6, spriteDup(sprtEgg)) spriteAdd(7, spriteDup(sprtEgg)) spriteAdd(8, spriteDup(sprtEgg)) spriteAdd(9, spriteDup(sprtEgg)) spriteAdd(10, spriteDup(sprtEgg)) spriteAdd(11, spriteDup(sprtEgg)) spriteAdd(12, spriteDup(sprtEgg)) spriteAdd(13, spriteDup(sprtEgg)) spriteAdd(14, spriteDup(sprtEgg)) spriteAdd(15, spriteDup(sprtEgg)) game(14) getc txtMode done \ No newline at end of file +include "inc/cmdsys.plh" +include "inc/hgrlib.plh" +include "inc/hgrsprite.plh" +include "inc/lines.plh" +include "inc/joybuzz.plh" +sysflags reshgr1|reshgr2 // Reserve HGR page 1 and 2 + +byte egg = $88,$88,$83,$33,$33,$33,$33,$38,$88,$88 +byte = $88,$83,$33,$11,$11,$11,$11,$33,$38,$88 +byte = $83,$31,$11,$11,$11,$11,$11,$11,$13,$38 +byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33 +byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33 +byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33 +byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33 +byte = $83,$31,$11,$11,$11,$11,$11,$11,$13,$38 +byte = $88,$83,$33,$11,$11,$11,$11,$33,$38,$88 +byte = $88,$88,$83,$33,$33,$33,$33,$38,$88,$88 +byte spider = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33 +byte = $33,$88,$83,$32,$22,$22,$23,$38,$88,$33 +byte = $83,$38,$83,$32,$22,$22,$23,$38,$83,$38 +byte = $88,$83,$33,$22,$22,$22,$22,$33,$38,$88 +byte = $33,$88,$33,$22,$22,$22,$22,$33,$88,$33 +byte = $88,$33,$38,$33,$22,$22,$33,$83,$33,$88 +byte = $88,$88,$83,$33,$22,$22,$33,$38,$88,$88 +byte = $88,$33,$33,$33,$22,$22,$33,$33,$33,$88 +byte = $33,$88,$88,$88,$33,$33,$88,$88,$88,$33 +byte = $88,$88,$33,$33,$22,$22,$33,$33,$88,$88 +byte = $88,$33,$88,$33,$22,$22,$33,$88,$33,$88 +byte = $33,$88,$88,$83,$32,$23,$38,$88,$88,$33 +byte = $88,$88,$88,$88,$33,$33,$88,$88,$88,$88 +byte web1 = $88,$83,$38,$88 +byte = $88,$38,$83,$88 +byte = $88,$38,$83,$88 +byte = $88,$33,$33,$88 +byte = $83,$38,$83,$38 +byte = $83,$38,$83,$38 +byte = $83,$38,$83,$38 +byte = $33,$33,$33,$33 +byte web2 = $88,$33,$83,$38,$33,$88 +byte = $88,$38,$83,$38,$83,$88 +byte = $83,$38,$83,$38,$83,$38 +byte = $83,$33,$33,$33,$33,$38 +byte = $83,$38,$83,$38,$83,$38 +byte = $83,$38,$83,$38,$83,$38 +byte = $33,$88,$83,$38,$88,$33 +byte = $33,$33,$33,$33,$33,$33 +byte ship = $CC,$CC,$CC,$77,$CC,$CC,$CC +byte = $CC,$CC,$C7,$77,$7C,$CC,$CC +byte = $CC,$CC,$C7,$77,$7C,$CC,$CC +byte = $CC,$CC,$C7,$77,$7C,$CC,$CC +byte = $CC,$CC,$C7,$77,$7C,$CC,$CC +byte = $77,$CC,$77,$66,$77,$CC,$77 +byte = $77,$CC,$77,$66,$77,$CC,$77 +byte = $77,$CC,$77,$66,$77,$CC,$77 +byte = $77,$CC,$77,$77,$77,$CC,$77 +byte = $77,$CC,$77,$77,$77,$CC,$77 +byte = $77,$CC,$77,$77,$77,$CC,$77 +byte = $77,$C7,$77,$77,$77,$7C,$77 +byte = $77,$77,$75,$55,$57,$77,$77 +byte = $77,$77,$75,$55,$57,$77,$77 +byte missle = $CC,$55,$CC +byte = $CC,$55,$CC +byte = $CC,$55,$CC +byte = $CC,$55,$CC +byte = $CC,$55,$CC +byte = $CC,$55,$CC +byte = $C5,$55,$5C +byte = $55,$55,$55 +byte dummy = $88,$88,$88,$88 +byte = $88,$88,$88,$88 +byte = $88,$88,$88,$88 +byte = $88,$88,$88,$88 +byte = $88,$88,$88,$88 +byte = $88,$88,$88,$88 +byte = $88,$88,$88,$88 +byte = $88,$88,$88,$88 +var sprtEgg, sprtSpider, sprtShip, sprtMissle, sprtDummy + +def moire#0 + var i + + setlinespans(@hgrHlin, @hgrVlin) + setlineplot(@hgrPlot) + hgrColor(7) + for i = 0 to 191 step 8 + linespans(0, i, 279, 191 - i) + next + for i = 0 to 279 step 9 + linespans(i, 0, 279 - i, 191) + next +end +def game(spdrcnt)#0 + var[14] xspdr, yspdr, ixspdr, iyspdr, hatch + var xship, xmissle + byte yship, ymissle + byte spdrnum, k, xdelta, ydelta, btn0, btn1 + + xship = 140 + ymissle = 255 + xspdr[0] = 100 + ixspdr[0] = 1 + yspdr[0] = 60 + iyspdr[0] = -1 + hatch[0] = 1 + spdrnum = spdrcnt - 1 + for k = 1 to spdrnum + spriteAdd(k + 2, spriteDup(sprtEgg)) + xspdr[k] = ((xspdr[k - 1] ^ 37) + 97) & 255 + ixspdr[k] = -ixspdr[k - 1] + yspdr[k] = ((yspdr[k - 1] ^ 29) + 53) & 63 + iyspdr[k] = -iyspdr[k - 1] + hatch[k] = hatch[k - 1] + 1 + next + repeat + for k = 0 to spdrnum + if yspdr[k] <> 255 + //xspdr[k] = xspdr[k] + ixspdr[k] + if ixspdr[k] > 0 + xspdr[k] = xspdr[k] + yspdr[k] / 8 + else + xspdr[k] = xspdr[k] - yspdr[k] / 8 + fin + if xspdr[k] < -5 or xspdr[k] > 284 + ixspdr[k] = -ixspdr[k] + fin + yspdr[k] = yspdr[k] + iyspdr[k] + if yspdr[k] < -5 + iyspdr[k] = -iyspdr[k] + if hatch[k] + hatch[k]-- + if hatch[k] == 0 + spriteAdd(k + 2, spriteDup(sprtSpider)) + fin + fin + fin + if yspdr[k] > 64 + iyspdr[k] = -iyspdr[k] + fin + spritePosIndex(xspdr[k], yspdr[k], k+2) + fin + next + xdelta, ydelta, btn0, btn1 = joypos(ymissle/4) + xship = xship + (xdelta / 4 - 10) + if xship < 0; xship = 0; fin + if xship > 279; xship = 279; fin + if btn0 and ymissle == 255 + spriteAdd(1, sprtMissle) + xmissle = xship + ymissle = 172 + fin + if ymissle <> 255 + if ymissle < 8 + spriteDel(1) + ymissle = 255 + else + ymissle = ymissle - 8 + spritePosIndex(xmissle, ymissle, 1) + for k = 0 to spdrnum + if yspdr[k] <> 255 + if ymissle >= yspdr[k] - 7 and ymissle <= yspdr[k] + 6 + if xmissle >= xspdr[k] - 10 and xmissle <= xspdr[k] + 9 + // + // Hit + // + yspdr[k] = 255 + ymissle = 255 + spriteAdd(k + 2, spriteDup(sprtDummy)) + spritePosIndex(0, 0, k + 2) + spriteDel(1) + spdrcnt-- + if not spdrcnt + return + fin + fin + fin + fin + next + fin + fin + spritePosIndex(xship, 190, 0) + spriteDrawList() + spriteDrawBuf(hgrSwap()) + until ^$C000 > 127 + getc +end + +hgrMode +spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process +sprtShip = spriteCompile(14, 14, 7, 13, @ship) +sprtMissle = spriteCompile( 6, 8, 3, 0, @missle) +sprtEgg = spriteCompile(20, 10, 10, 5, @egg) +sprtSpider = spriteCompile(20, 13, 10, 6, @spider) +sprtDummy = spriteCompile( 7, 8, 0, 0, @dummy) +hgrColor(4) +hgrClear() +moire +memcpy($4000, $2000, $2000) // Copy to both buffers +spriteDrawBuf(hgrDrawBuf(1)) +spriteAdd(0, sprtShip) +spriteAdd(2, sprtEgg) +game(4) +txtMode +done diff --git a/src/tftpbld b/src/tftpbld index eae19c2..716af76 100755 --- a/src/tftpbld +++ b/src/tftpbld @@ -53,4 +53,5 @@ echo "BLD/SAMPLES/MEMTEST.PLA"; atftp $1 --put -l samplesrc/memtest.pla -r $ echo "BLD/SAMPLES/FATCAT.PLA"; atftp $1 --put -l samplesrc/fatcat.pla -r $2/BLD/SAMPLES/FATCAT.PLA#040000 echo "BLD/SAMPLES/GFXDEMO.PLA"; atftp $1 --put -l samplesrc/gfxdemo.pla -r $2/BLD/SAMPLES/GFXDEMO.PLA#040000 echo "BLD/SAMPLES/LZ4CAT.PLA"; atftp $1 --put -l samplesrc/lz4cat.pla -r $2/BLD/SAMPLES/LZ4CAT.PLA#040000 +echo "BLD/SAMPLES/SFM.PLA"; atftp $1 --put -l samplesrc/sfm.pla -r $2/BLD/SAMPLES/SFM.PLA#040000 diff --git a/src/tftpdemos b/src/tftpdemos index 8e010d8..bf22589 100755 --- a/src/tftpdemos +++ b/src/tftpdemos @@ -9,6 +9,7 @@ echo "DEMOS/HGRTEST"; atftp $1 --put -l rel/apple/HGRTEST#FE1000 echo "DEMOS/GRTEST"; atftp $1 --put -l rel/apple/GRTEST#FE1000 -r $2/DEMOS/GRTEST#FE1000 echo "DEMOS/INT32TEST"; atftp $1 --put -l rel/INT32TEST#FE1000 -r $2/DEMOS/INT32TEST#FE1000 echo "DEMOS/DGRTEST"; atftp $1 --put -l rel/apple/DGRTEST#FE1000 -r $2/DEMOS/DGRTEST#FE1000 +echo "DEMOS/SFM"; atftp $1 --put -l rel/apple/SFM#FE1000 -r $2/DEMOS/SFM#FE1000 # Music demo echo "DEMOS/MUSIC/PLAYSEQ"; atftp $1 --put -l rel/apple/PLAYSEQ#FE1000 -r $2/DEMOS/MUSIC/PLAYSEQ#FE1000