added list of software to docs

This commit is contained in:
Irmen de Jong
2023-09-13 21:51:48 +02:00
parent 03e0d4b2e8
commit a1d0e5bb65
5 changed files with 40 additions and 13 deletions

View File

@@ -1538,11 +1538,6 @@ internal class AssignmentAsmGen(private val program: PtProgram,
} }
private fun attemptAssignToByteCompareZero(expr: PtBinaryExpression, assign: AsmAssignment): Boolean { private fun attemptAssignToByteCompareZero(expr: PtBinaryExpression, assign: AsmAssignment): Boolean {
// TODO optimized code for (word1 & word2) == 0 :
// if(expr.left.type in WordDatatypes && (expr.operator=="==" || expr.operator=="!=") && expr.left is PtBinaryExpression) {
// println("TODO optimize logical word expr ${expr.position}")
// }
when (expr.operator) { when (expr.operator) {
"==" -> { "==" -> {
when(val dt = expr.left.type) { when(val dt = expr.left.type) {

View File

@@ -201,6 +201,7 @@ Look in the `syntax-files <https://github.com/irmen/prog8/tree/master/syntax-fil
targetsystem.rst targetsystem.rst
technical.rst technical.rst
portingguide.rst portingguide.rst
software.rst
todo.rst todo.rst

34
docs/source/software.rst Normal file
View File

@@ -0,0 +1,34 @@
=========================
Software written in Prog8
=========================
Apart from the many `examples <https://github.com/irmen/prog8/tree/master/examples>`_ available in the source code repository,
there are also larger pieces of software written using Prog8. Here's a list.
`Assembler <https://github.com/irmen/cx16assem>`_
File-based assembler for the Commander X16.
`Chess <https://github.com/irmen/cx16chess>`_
Chess game for the Commander X16, with 2-player or computer opponent game modes.
`Image viewer <https://github.com/irmen/cx16imageviewer>`_
Multi-format image viewer for the Commander X16.
Can display C64 Koala, BMP, PCX and Amiga IFF images, including color cycling.
`Petaxian <https://github.com/cyborgar/Petaxian>`_
Galaga type shoot em up game using only petscii graphics. Runs on C64 and Commander X16.
`Rock Runner <https://github.com/irmen/cx16rockrunner>`_
Faithful Boulderdash clone, a well known arcade puzzle game from the 80's.
where you must collect all diamonds in a level while avoiding the hazards to reach the exit.
Can load the thousands of available fan made level files.
This game is for the Commander X16.
`Shell <https://github.com/irmen/cx16shell>`_
Unix like command shell for the Commander X16.
`Streaming Music Demo <https://github.com/irmen/cx16musicdemo>`_
Demoscene like "music demos" for the Commander X16.
They display graphics, animated song lyrics, and play a high quality sampled song streamed from disk.

View File

@@ -1,10 +1,6 @@
TODO TODO
==== ====
- possibly optimize assembly output for (word1 & word2 ==0)
see attemptAssignToByteCompareZero() for assignment.
see testZeroOrJumpElsewhere() for if condition.
- [on branch: shortcircuit] investigate McCarthy evaluation again? this may also reduce code size perhaps for things like if a>4 or a<2 .... - [on branch: shortcircuit] investigate McCarthy evaluation again? this may also reduce code size perhaps for things like if a>4 or a<2 ....
- IR: reduce the number of branch instructions such as BEQ, BEQR, etc (gradually), replace with CMP(I) + status branch instruction - IR: reduce the number of branch instructions such as BEQ, BEQR, etc (gradually), replace with CMP(I) + status branch instruction
- IR: reduce amount of CMP/CMPI after instructions that set the status bits correctly (LOADs? INC? etc), but only after setting the status bits is verified! - IR: reduce amount of CMP/CMPI after instructions that set the status bits correctly (LOADs? INC? etc), but only after setting the status bits is verified!

View File

@@ -25,6 +25,7 @@ main {
cbm.SETTIM(0,0,0) cbm.SETTIM(0,0,0)
while cbm.GETIN()==0 { while cbm.GETIN()==0 {
; sys.waitvsync()
doplasma() doplasma()
frames ++ frames ++
} }
@@ -64,15 +65,15 @@ main {
for y in 0 to txt.DEFAULT_HEIGHT-1 { for y in 0 to txt.DEFAULT_HEIGHT-1 {
ybuf[y] = math.sin8u(c1a) + math.sin8u(c1b) ybuf[y] = math.sin8u(c1a) + math.sin8u(c1b)
c1a += 4 c1a += 2
c1b += 9 c1b += 5
} }
c1A += 3 c1A += 3
c1B -= 5 c1B -= 5
for x in 0 to txt.DEFAULT_WIDTH-1 { for x in 0 to txt.DEFAULT_WIDTH-1 {
xbuf[x] = math.sin8u(c2a) + math.sin8u(c2b) xbuf[x] = math.sin8u(c2a) + math.sin8u(c2b)
c2a += 3 c2a += 4
c2b += 7 c2b += 1
} }
c2A += 2 c2A += 2
c2B -= 3 c2B -= 3