Irmen de Jong
58e5d5c071
hash
2019-08-11 17:32:28 +02:00
Irmen de Jong
b44e76db57
fix any/all assembly routine, added asm for min/max/sum/ etc aggregates
...
removed avg function because of hidden internal overflow issues
2019-08-11 16:13:09 +02:00
Irmen de Jong
2ce6bc5946
fix strlen
2019-08-11 14:02:53 +02:00
Irmen de Jong
fe5b225732
asmsub stack arg
2019-08-11 12:29:18 +02:00
Irmen de Jong
d499e40a4b
doc tweaks
2019-08-11 10:56:36 +02:00
Irmen de Jong
62a66d89c6
was not needed
2019-08-11 10:15:34 +02:00
Irmen de Jong
1c151f4a3f
remove dysfunctional repl
2019-08-10 21:36:26 +02:00
Irmen de Jong
8917926996
new version
2019-08-10 20:45:41 +02:00
Irmen de Jong
b54a9b9831
fix output of word arrays containing addressofs
2019-08-10 20:43:27 +02:00
Irmen de Jong
f08906dba1
fix byte->word typecast
2019-08-10 14:20:42 +02:00
Irmen de Jong
a6bba824d3
fixed some array codegen issues
2019-08-10 12:55:27 +02:00
Irmen de Jong
fd84152a2b
import cleanups
2019-08-09 02:21:04 +02:00
Irmen de Jong
3466106119
fixed some array codegen issues
2019-08-09 02:15:31 +02:00
Irmen de Jong
c79b587eea
nonconst forloops (bytes)
2019-08-08 23:13:02 +02:00
Irmen de Jong
4862fb7db1
asmsub return value in registers is now put on evalstack, and loopvar sequence numbering
2019-08-08 00:13:58 +02:00
Irmen de Jong
2136db0e61
fix auto var naming collisions
2019-08-07 22:25:57 +02:00
Irmen de Jong
2f0c0f6fcd
fix function arguments
2019-08-07 02:31:27 +02:00
Irmen de Jong
7ddc01f883
added continuous compilation mode (file watching)
2019-08-05 23:36:24 +02:00
Irmen de Jong
efe2723874
version
2019-08-05 21:06:41 +02:00
Irmen de Jong
bccfeb2fa2
fix some unittests
2019-08-05 21:04:15 +02:00
Irmen de Jong
5095d090cc
added optimized multiplications to asmgen2
2019-08-05 21:00:55 +02:00
Irmen de Jong
6544fcdc36
fixed output of force_output blocks
2019-08-04 23:08:58 +02:00
Irmen de Jong
e834924857
more ++ and -- code, 'dontuse' zeropage option
2019-08-04 22:44:20 +02:00
Irmen de Jong
2c3b8a9819
more ++ and -- code, 'dontuse' zeropage option
2019-08-04 22:35:27 +02:00
Irmen de Jong
309c82fc9e
fixed some compiler errors
2019-08-04 19:54:32 +02:00
Irmen de Jong
0f91ce6441
removed a few more hazardous zp addresses
2019-08-04 19:40:31 +02:00
Irmen de Jong
f29ec3b4e1
relaxed symbol shadowing
2019-08-04 18:52:03 +02:00
Irmen de Jong
cc1fc869cf
fix param type casts for builtin functions
2019-08-04 18:25:00 +02:00
Irmen de Jong
0431d3cddc
implemented asm for continue and break
2019-08-04 16:05:50 +02:00
Irmen de Jong
a1cd202cd2
some more array asm
2019-08-04 15:33:00 +02:00
Irmen de Jong
b842493cf0
trying to fix arithmetic and funcion calls and var scoping issues
2019-08-03 13:21:38 +02:00
Irmen de Jong
4718f09cb7
trying to fix arithmetic and funcion calls
2019-08-03 01:51:12 +02:00
Irmen de Jong
e9c357a885
fix range typing issues and function call param cleanup bug for asmsub
2019-08-02 01:26:28 +02:00
Irmen de Jong
fb00ff74d1
simplistic repeat and while loops
2019-08-01 21:23:55 +02:00
Irmen de Jong
b740b079db
simplified mapping of builtin functions to just a jsr
2019-08-01 21:03:21 +02:00
Irmen de Jong
6394841041
fix byte/word add/sub mixup
2019-08-01 20:42:09 +02:00
Irmen de Jong
3f4050c647
more for loops, words
2019-08-01 00:35:25 +02:00
Irmen de Jong
82f01d84c2
more for loops
2019-07-31 22:15:20 +02:00
Irmen de Jong
299ea72d70
various for loops
2019-07-31 21:47:30 +02:00
Irmen de Jong
50aa286d3a
begin of for asm
2019-07-31 00:54:04 +02:00
Irmen de Jong
6f7322150f
fix string literal replacing by identifierref
2019-07-31 00:14:12 +02:00
Irmen de Jong
cc9965cc96
improved deduction of array datatypes
2019-07-30 23:35:25 +02:00
Irmen de Jong
ae90a957c6
fix var prefix issues in asm gen of anonscopes
2019-07-30 21:13:52 +02:00
Irmen de Jong
8cec032e7d
more asm for byte writes to memory
2019-07-30 02:49:13 +02:00
Irmen de Jong
3732ab1e62
fix compilation errors
2019-07-30 02:26:30 +02:00
Irmen de Jong
fba149ee28
removed the ~ before block names
2019-07-29 23:11:13 +02:00
Irmen de Jong
4661cba974
asm for when statements added
2019-07-29 22:47:04 +02:00
Irmen de Jong
025be8cb7c
fix infinte loop in constantfolding of when choices
2019-07-29 22:06:59 +02:00
Irmen de Jong
3aea32551b
fixes
2019-07-29 02:47:01 +02:00
Irmen de Jong
8e8c112ff0
improved subroutine param ast checks, added asm for Carry parameter
2019-07-29 00:33:19 +02:00
Irmen de Jong
b0dda08e74
assembler reserved symbols checked
2019-07-28 23:37:33 +02:00
Irmen de Jong
2c25df122a
merge strings in asm output
2019-07-28 21:29:49 +02:00
Irmen de Jong
7cb5702b37
array asm
2019-07-28 21:03:09 +02:00
Irmen de Jong
b7502c7eaa
fixed some node update issues in Modifying Ast visitor
2019-07-28 15:18:53 +02:00
Irmen de Jong
fed020825a
some more asmgen v2; fixed duplicate label namings, if stmt, and vars in anon scopes
2019-07-28 13:12:13 +02:00
Irmen de Jong
1c411897df
some more asmgen v2, and seemingly useless assignments to memory variables are no longer optimized away
2019-07-27 03:11:15 +02:00
Irmen de Jong
f94e241fb2
fix array datatypes in vardecls
2019-07-26 23:51:53 +02:00
Irmen de Jong
f9617d777a
floats from rom
2019-07-24 00:39:01 +02:00
Irmen de Jong
9961a404ae
got rid of bytecode based compiler and vm
2019-07-23 20:44:11 +02:00
Irmen de Jong
776c844d02
more ast-codegen v2
2019-07-23 01:36:49 +02:00
Irmen de Jong
03782a37a2
begin of ast-codegen v2
2019-07-21 23:50:13 +02:00
Irmen de Jong
173663380b
slight optimization for creating the asmpatterns list
2019-07-20 22:37:16 +02:00
Irmen de Jong
c6fdd65c63
shuffling some things around
2019-07-18 22:23:31 +02:00
Irmen de Jong
d9546f9dc7
version
2019-07-18 01:38:35 +02:00
Irmen de Jong
2a6b0f5db7
remove some more dead code
2019-07-18 01:31:12 +02:00
Irmen de Jong
b4e1b42cec
remove some dead code
2019-07-17 22:35:38 +02:00
Irmen de Jong
a8898a5993
using sealed class instead of interface
2019-07-17 02:35:26 +02:00
Irmen de Jong
e03c68b632
optimize imports
2019-07-17 02:11:16 +02:00
Irmen de Jong
411bedcc46
fixed assignment type error with structs
...
added structs example
2019-07-16 23:56:00 +02:00
Irmen de Jong
07d8caf884
string literal concatenation and repeating added again
2019-07-16 23:34:43 +02:00
Irmen de Jong
4dbf4b2005
tweaks about initialization values
2019-07-16 20:32:23 +02:00
Irmen de Jong
61af72b906
struct literals
2019-07-16 02:36:32 +02:00
Irmen de Jong
17be722e2b
arrays without init value are once again cleared with zeros
2019-07-15 23:05:04 +02:00
Irmen de Jong
16d7927d2f
fix arrays and some struct parsing issues
2019-07-15 22:28:05 +02:00
Irmen de Jong
55a7a5d9d5
fix aggregate functions in astvm
2019-07-15 03:57:51 +02:00
Irmen de Jong
78d7849197
fixes
2019-07-15 03:08:26 +02:00
Irmen de Jong
d5b12fb01d
made astchecker readonly
2019-07-15 01:47:59 +02:00
Irmen de Jong
31f4e378aa
split up Literalvalue into numeric and reference ones
2019-07-15 01:11:32 +02:00
Irmen de Jong
8a26b7b248
- fixed lookup of members in structs defined in another scope
...
- preserve order of variable definitions in the Ast (and thus, the output)
2019-07-13 23:03:22 +02:00
Irmen de Jong
87c28cfdbc
restructure c64 machinedefinition
2019-07-13 03:16:48 +02:00
Irmen de Jong
1f5420010d
prevent struct member vars from shuffling around, can take address of struct now
2019-07-13 01:16:34 +02:00
Irmen de Jong
a089c48378
finalize v 1.11
2019-07-12 20:31:18 +02:00
Irmen de Jong
3e5deda46c
struct finished
2019-07-12 20:07:41 +02:00
Irmen de Jong
7500c6efd0
struct fixes
2019-07-12 17:57:56 +02:00
Irmen de Jong
717b5f3b07
struct fixes
2019-07-12 16:40:18 +02:00
Irmen de Jong
9f6fa60bf1
prepare
2019-07-12 14:38:37 +02:00
Irmen de Jong
1e9586f635
Structs can be compiled and executed in the vm! structs are just syntactic sugar for a set of variables for now.
2019-07-12 12:41:08 +02:00
Irmen de Jong
44f9d5e69e
added struct syntax
2019-07-12 06:14:59 +02:00
Irmen de Jong
845a99d623
return statement only has one single possible value
...
astvm can now more or less run all examples
2019-07-10 19:27:44 +02:00
Irmen de Jong
3d7a4bf81a
astvm can now more or less run all examples
2019-07-10 18:44:54 +02:00
Irmen de Jong
d4b3e35bd2
astvm almost complete
2019-07-10 16:50:41 +02:00
Irmen de Jong
a59f7c75dc
fixed some compile time and vm arithmetic errors
2019-07-10 13:33:52 +02:00
Irmen de Jong
44fe2369d6
multitarget assignments removed
2019-07-10 10:11:37 +02:00
Irmen de Jong
aaaab2cfcf
fix asm gen for loops when dealing with registers as loopvar
2019-07-10 08:51:05 +02:00
Irmen de Jong
9a3dab20dc
extra warnings about register usage in loops
2019-07-10 08:30:17 +02:00
Irmen de Jong
20379b5927
fixed astvm postincrdecr and rsave/rrestore
2019-07-10 08:13:42 +02:00
Irmen de Jong
34dcce67e4
fixed petscii conversion when printing text
2019-07-10 07:10:34 +02:00
Irmen de Jong
0c7f107d01
fix irq routine removal
2019-07-10 03:57:03 +02:00
Irmen de Jong
1f89571aa5
proper NOP removal
2019-07-10 03:06:31 +02:00
Irmen de Jong
7eed1ebbf8
optimized typecasting more
2019-07-10 02:54:39 +02:00
Irmen de Jong
12cb7d7abe
optimize redundant typecasts more
2019-07-10 01:52:04 +02:00
Irmen de Jong
c9b16dcbd9
nicer printing of arrays, fix inc/dec overflow issue in runtimevalue
2019-07-10 01:16:32 +02:00
Irmen de Jong
dcab6d00bb
ver
2019-07-10 00:50:18 +02:00
Irmen de Jong
14cabde5cf
when statement extended with multiple choice values
2019-07-10 00:25:21 +02:00
Irmen de Jong
2a0c3377f9
fixed Nop statements without parent
2019-07-09 23:27:09 +02:00
Irmen de Jong
16454f5560
optimized when asm
2019-07-09 21:59:50 +02:00
Irmen de Jong
c1343a78f1
when working correctly in asm (corrected dup & cmp)
2019-07-09 21:41:47 +02:00
Irmen de Jong
9d0c65c682
when working correctly in stackvm and astvm
2019-07-09 20:39:08 +02:00
Irmen de Jong
9e6408244f
fix scoping of variables in when statement
2019-07-09 19:44:59 +02:00
Irmen de Jong
3581017489
added ast printing of when statement
2019-07-09 09:02:56 +02:00
Irmen de Jong
9bc36b4d99
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# compiler/src/prog8/ast/Interfaces.kt
# compiler/src/prog8/ast/expressions/AstExpressions.kt
# compiler/src/prog8/ast/processing/AstChecker.kt
# compiler/src/prog8/ast/processing/IAstModifyingVisitor.kt
# compiler/src/prog8/ast/processing/IAstVisitor.kt
# compiler/src/prog8/ast/processing/StatementReorderer.kt
# compiler/src/prog8/ast/statements/AstStatements.kt
# compiler/src/prog8/compiler/AstToSourceCode.kt
# compiler/src/prog8/compiler/target/c64/AsmGen.kt
# compiler/src/prog8/optimizer/StatementOptimizer.kt
# examples/test.p8
2019-07-09 08:44:23 +02:00
Irmen de Jong
e8caf6d319
1.9
2019-07-09 08:42:38 +02:00
Irmen de Jong
5b9cc9592f
removed kotlin.reflection dependency
...
optimized gradle build now using shadowjar
2019-07-09 08:27:47 +02:00
Irmen de Jong
3cf87536ff
fix asmsub syntax
2019-07-09 07:24:21 +02:00
Irmen de Jong
cc452dffb8
restructure asmgen to improve compilation and IDE performance issues
2019-07-09 06:23:11 +02:00
Irmen de Jong
5ff79073f4
added DUP opcodes
2019-07-09 04:09:29 +02:00
Irmen de Jong
70462ffe6d
syntax check and optimization of 'when'
2019-07-09 02:42:56 +02:00
Irmen de Jong
158fe7596b
astvm eval of 'when'
2019-07-09 00:17:34 +02:00
Irmen de Jong
f4f113da7b
parser for 'when' statement
2019-07-09 00:02:38 +02:00
Irmen de Jong
d6b6254b72
simplified the asmsub syntax
2019-07-08 23:00:18 +02:00
Irmen de Jong
65fa8c4613
ast source printer fixes
2019-07-08 22:29:22 +02:00
Irmen de Jong
c1102393bb
should not shuffle assignments.
2019-07-08 22:18:25 +02:00
Irmen de Jong
dbe048158c
cleaned up the ast processing:
...
- visitor pattern names are now used for the interfaces and the methods
- separated a modifying and a read-only ast visitor
There is now also an AstPrinter that produces original source code back from an AST
2019-07-08 21:51:16 +02:00
Irmen de Jong
2b3382ff8e
cleaned up the ast processing:
...
- visitor pattern names are now used for the interfaces and the methods
- separated a modifying and a read-only ast visitor
There is now also an AstPrinter that produces original source code back from an AST
2019-07-08 21:32:32 +02:00
Irmen de Jong
c970d899fa
DirectMemoryWrite is not an expression
2019-07-08 16:59:11 +02:00
Irmen de Jong
3c563d281a
restructuring more things
2019-07-08 15:13:24 +02:00
Irmen de Jong
1794f704e7
restructuring more things
2019-07-08 14:38:51 +02:00
Irmen de Jong
ade7a4c398
restructuring vm
2019-07-08 13:40:52 +02:00
Irmen de Jong
5a27b035b0
restructuring of the AST package
2019-07-08 13:33:31 +02:00
Irmen de Jong
e84bb8d94a
some attempts to make the gradle build faster
2019-07-08 12:26:15 +02:00
Irmen de Jong
5ed0893d96
tweak
2019-07-02 22:27:31 +02:00
Irmen de Jong
89314a0e1a
fix reading and writing rtc jiffy clock, memory can now intercept reads and writes
2019-07-02 20:48:14 +02:00
Irmen de Jong
d83f49d84f
remove unused variables, subroutines, blocks
2019-07-02 04:29:51 +02:00
Irmen de Jong
ff1294207e
improved parameter name shadowing check
2019-07-02 00:32:55 +02:00
Irmen de Jong
a56956797a
chars can now have a color
2019-07-01 23:41:30 +02:00
Irmen de Jong
3242495b0b
slightly improved warning about implicit float casts
2019-07-01 18:43:39 +02:00
Irmen de Jong
49eb7e7803
remove bogus
2019-07-01 18:11:16 +02:00
Irmen de Jong
1d7f0d3537
streamline moving values to heap
2019-07-01 18:01:36 +02:00
Irmen de Jong
31137743f0
simplified string handling a little in LiteralValue
2019-07-01 14:19:41 +02:00
Irmen de Jong
2c69e10489
heapId writable
2019-07-01 14:10:52 +02:00
Irmen de Jong
3a1fa9e069
fixed constantfolding of array values
2019-07-01 13:53:29 +02:00
Irmen de Jong
2c08d2f9c6
fix array size in vardecls
2019-06-30 20:10:53 +02:00
Irmen de Jong
4743cacb73
fix swap()
2019-06-30 18:06:11 +02:00
Irmen de Jong
5f5a1447e0
array on heap fix
2019-06-30 17:58:08 +02:00
Irmen de Jong
a3004555a8
branch
2019-06-30 17:07:08 +02:00
Irmen de Jong
267c678292
more swap logic, some typing fixes
2019-06-28 22:10:01 +02:00
Irmen de Jong
6c50043a4a
swap isn't yet finished
2019-06-28 02:57:13 +02:00
Irmen de Jong
3ee1b2efdd
left and right of a binary expression should usually have the same datatype, insert typecast if needed
2019-06-28 02:39:55 +02:00
Irmen de Jong
75d8c832ad
implemented Jump
2019-06-28 01:21:31 +02:00
Irmen de Jong
53a4379c45
implemented all builtin functions in the AstVm
2019-06-28 00:10:27 +02:00
Irmen de Jong
29b3a7e94e
optimize redundant typecasts, fix some runtime type casting errors
2019-06-27 21:09:21 +02:00
Irmen de Jong
0782f6ecf1
function call arguments
2019-06-27 00:07:41 +02:00
Irmen de Jong
595e58ec46
taking care of memory mapped vars
2019-06-26 03:28:34 +02:00
Irmen de Jong
060e05c868
strlen and strings with zeros in them should terminate at the zero
2019-06-26 02:34:43 +02:00
Irmen de Jong
f49eefad6f
some builtin functions
2019-06-26 00:01:23 +02:00
Irmen de Jong
d68360461b
registers
2019-06-25 22:48:40 +02:00
Irmen de Jong
343978d164
for loop and cleaner iteration over values
2019-06-25 21:49:02 +02:00
Irmen de Jong
b11d10e2ff
fix Return when dealing with non-subroutine scopes
2019-06-25 01:44:57 +02:00
Irmen de Jong
268856823a
got rid of old Value in favor of new RuntimeValue implementation
2019-06-24 22:45:27 +02:00
Irmen de Jong
4bac5043b6
fix integer wraparounds for RuntimeValue
2019-06-24 22:18:50 +02:00
Irmen de Jong
eb25b4c800
fix some initial value datatypes and type casting in assignments
2019-06-24 04:09:30 +02:00
Irmen de Jong
a079e44b02
fix some initial value datatypes and type casting in assignments
2019-06-24 01:31:25 +02:00
Irmen de Jong
e53c860f1a
first go at ast-based virtual machine (rather than the stackvm that uses intermediate code)
2019-06-24 00:17:48 +02:00
Irmen de Jong
99121004bf
more sensible subroutine inlining
2019-06-23 20:06:35 +02:00
Irmen de Jong
6dd3371781
some infix functions
2019-06-23 15:43:52 +02:00
Irmen de Jong
ebd38f27e6
cleaned up some symbol visibilities
2019-06-23 13:49:35 +02:00
Irmen de Jong
a6c3251668
simple subroutine inlining
2019-06-23 03:15:23 +02:00
Irmen de Jong
560047adee
variables init subroutine must never be optimized away (fixes primes example)
2019-06-21 23:56:45 +02:00
Irmen de Jong
7de7d5234f
callgraph fixed scanning asm subroutines, and deletion of unused subs and modules
2019-06-21 23:08:29 +02:00
Irmen de Jong
b374af3526
remove unused/empty modules
2019-06-21 00:12:22 +02:00
Irmen de Jong
b35430214b
some more program node cleanups
2019-06-20 21:46:59 +02:00
Irmen de Jong
e96d3d4455
update kotlin version
...
cleaning up the way the root of the Ast and the global namespace work (introduced ProgramAst node)
2019-06-20 20:15:18 +02:00
Irmen de Jong
c559682c0b
refresh IDE project files
2019-05-30 16:03:53 +02:00
Irmen de Jong
262e0bd6b9
fix avg() on float arrays
2019-04-21 03:04:36 +02:00
Irmen de Jong
755af6010e
fix some more issues with array vardecls without array size specifier
2019-04-21 03:04:13 +02:00
Irmen de Jong
a6d0aecd66
fix invalid assignment reordering
2019-04-20 13:24:42 +02:00
Irmen de Jong
3b37e0f99d
new build scripts
2019-04-20 00:50:15 +02:00
Irmen de Jong
78fbbf7119
%asmbinary implemented
2019-04-17 01:33:07 +02:00
Irmen de Jong
0ee43294c4
check for file with %asmbinary, %asminclude
2019-04-17 00:55:42 +02:00
Irmen de Jong
a81b82495c
fix wrong values generated from range expression in array vardecl
2019-04-17 00:27:27 +02:00
Irmen de Jong
390043e9e8
some fixes in syntaxchecking array initializer values
2019-04-16 01:50:12 +02:00
Irmen de Jong
e384822b2c
array size in vardecl is optional when initializer array value is given
2019-04-16 01:19:51 +02:00
Irmen de Jong
730e08698d
comment
2019-04-13 00:58:39 +02:00
Irmen de Jong
5497de4234
optimize @( &thing )) in ast into just thing
2019-04-12 23:59:26 +02:00
Irmen de Jong
dfcb57a0b0
couple of small shortcuts on identifier ast to lookup what it is pointing to
2019-04-12 23:04:19 +02:00
Irmen de Jong
f219ae43f7
more inspiring code example
2019-04-12 22:34:43 +02:00
Irmen de Jong
a9bbe0bc40
removed the memory keyword instead use & now (reuse the address-of operator to reduce the number of different concepts in the grammar)
2019-04-12 22:00:32 +02:00
Irmen de Jong
cd0fa9405a
comments
2019-04-12 00:54:04 +02:00
Irmen de Jong
4462def8ea
fix array processing and ASM code gen of arrays with addressOf in them
2019-04-12 00:37:33 +02:00
Irmen de Jong
3f93b87745
fix array processing and ASM code gen of arrays with addressOf in them
2019-04-12 00:04:15 +02:00
Irmen de Jong
0a73125606
fix auto-insertion of AddressOf expression in function call arguments
2019-04-11 21:32:23 +02:00
Irmen de Jong
8bec4eaa87
rename PointerOf to AddressOf
2019-04-11 21:01:02 +02:00
Irmen de Jong
4434d31a3b
upgrade to Kotlin 1.3.30 and increase memory settings for command line build script
2019-04-11 19:58:28 +02:00
Irmen de Jong
51454c71c7
Merge branch 'master' into pointerto
...
# Conflicts:
# compiler/res/prog8lib/c64flt.p8
2019-04-10 23:16:08 +02:00
Irmen de Jong
fb2796ac06
truly fix min(f)/max(f) also fix ceil(f)
2019-04-10 23:14:28 +02:00
Irmen de Jong
742b15357b
fix all(f)
2019-04-10 22:42:48 +02:00
Irmen de Jong
ac6ed27052
restore tweaks in c64flt.p8
2019-04-10 22:18:45 +02:00
Irmen de Jong
f3c1783bf2
correct intermediate code output of pointers in arrayvalues
2019-04-10 22:08:21 +02:00
Irmen de Jong
ce8853ab50
restore tweaks in c64flt.p8
2019-04-08 00:36:19 +02:00
Irmen de Jong
5e3e00fbad
fix stackvm
2019-04-08 00:29:10 +02:00
Irmen de Jong
1dde49d644
Merge branch 'master' into pointerto
...
# Conflicts:
# compiler/res/prog8lib/c64flt.p8
# compiler/src/prog8/stackvm/StackVm.kt
2019-04-08 00:19:18 +02:00
Irmen de Jong
fd19298a05
fixed stackvm pop signed byte into register
2019-04-08 00:08:23 +02:00
Irmen de Jong
ede2b83ce4
got rid of unused avg syscalls and fixed stackvm iterable functions (min, max, avg, sum, any, all)
2019-04-08 00:00:43 +02:00
Irmen de Jong
fc47d3feb8
repaired min(f) max(f) fixes #13
2019-04-07 23:19:31 +02:00
Irmen de Jong
87446028e0
no more duplicate auto heap vars, attempt at automatic insertion of & expression for subroutine params
2019-04-05 13:14:19 +02:00
Irmen de Jong
b200f9945f
asmgen array with pointer values (w.i.p)
2019-04-04 23:51:22 +02:00
Irmen de Jong
eebd4e5f18
fix float constants prefix mistakes, removed broken max_f/min_f (fix pending), tweaked sum_f
2019-04-04 23:39:28 +02:00
Irmen de Jong
1069b5f5d5
w.i.p pointer-to
2019-04-04 21:45:30 +02:00
Irmen de Jong
3e7e44acfe
no hard crash anymore for invalid string escape sequences or unknown petscii characters
2019-04-03 22:25:26 +02:00
Irmen de Jong
518c3bfd76
actually, get rid of integer pow() because a naive multiplication loop approach is way too slow
2019-03-31 18:05:41 +02:00
Irmen de Jong
905d8a0c06
actually, get rid of integer pow() because a naive multiplication loop approach is way too slow
2019-03-31 18:04:19 +02:00
Irmen de Jong
b57c02b0ba
don't remove 'duplicate' assignments that aren't removable (i.e. not literalvalues)
2019-03-31 16:10:02 +02:00
Irmen de Jong
03d0411679
pow_f implemented
2019-03-31 14:28:38 +02:00
Irmen de Jong
83ace753b2
got rid of problematic signed POW operator, added compiler checks for this
2019-03-31 13:56:03 +02:00
Irmen de Jong
c4615591c9
fixing label names, fixes #11
2019-03-30 00:31:40 +01:00
Irmen de Jong
25e3b599e7
fixing label names
2019-03-30 00:15:50 +01:00
Irmen de Jong
5502a3e3ee
optimized name checking, no longer depends on scopedname
2019-03-28 21:30:30 +01:00
Irmen de Jong
62ceace941
block names are global (unscoped)
2019-03-25 23:46:58 +01:00
Irmen de Jong
7114d3193c
some cleanups in library asm code
2019-03-21 22:36:46 +01:00
Irmen de Jong
f3fc2fe523
irq handler saves zeropage scratch registers, fixes #8
2019-03-19 01:22:26 +01:00
Irmen de Jong
1e045b6a62
fixed multi-return value assignment
2019-03-18 04:44:20 +01:00
Irmen de Jong
747c9604dd
improve ast check for multiple returnvalues assignment
2019-03-18 04:01:25 +01:00
Irmen de Jong
1e5b2e0be3
for loops can now be over an iterable literal value directly (don't require a variable to hold the iterable)
2019-03-17 23:58:07 +01:00
Irmen de Jong
0820716e7b
added sqrt16() integer square root
2019-03-16 19:25:47 +01:00
Irmen de Jong
191707cd37
added new c64utils.str2(u)word that doesn't use kernel float routines
...
fixed processing of register pair return value of asmsub
2019-03-16 17:50:59 +01:00
Irmen de Jong
223bab21aa
less verbose anon label names
2019-03-16 00:11:04 +01:00
Irmen de Jong
563122ac92
stricter argument check for boolean operator
2019-03-15 23:34:15 +01:00
Irmen de Jong
bc9d00922e
implemented difference between printing and writing text in vm screen
2019-03-15 23:27:54 +01:00
Irmen de Jong
d9d83248fe
implemented strlen() function
2019-03-15 23:10:26 +01:00
Irmen de Jong
f2397527f1
improved text output in stackvm
2019-03-13 22:45:12 +01:00
Irmen de Jong
bf3caaefe1
stackvm now uses a proper instruction pointer call stack instead of instruction linking
2019-03-13 22:00:41 +01:00
Irmen de Jong
1aaf854ef7
identified issue with single instruction linking in vm
2019-03-12 21:59:40 +01:00
Irmen de Jong
ce40f6f862
defined a few more sysasm routines
2019-03-11 22:30:32 +01:00
Irmen de Jong
a349599943
serious endless for loop bug in stackvm because Z and N flags weren't set properly, now fixed
2019-03-11 22:02:00 +01:00
Irmen de Jong
ac7faa8d25
stackvm can now intercept system asm calls (to a rom address)
2019-03-11 02:05:30 +01:00
Irmen de Jong
cd2c4e13da
cleanups
2019-03-10 18:30:01 +01:00
Irmen de Jong
f5ba072294
removed str_p and str_ps pascal string types, fixes #10
2019-03-10 18:11:26 +01:00
Irmen de Jong
f36ce5e0ee
line clearing
2019-03-10 03:21:14 +01:00
Irmen de Jong
f2b03342ac
tehtriz joystick input
2019-03-07 23:29:23 +01:00
Irmen de Jong
28277469b6
fixed a compiler crash because with noopt, strings weren't put on the heap
2019-03-07 22:04:00 +01:00
Irmen de Jong
77dc35dc6a
added read_flags() function, uword2bcd routine no longer enables irq again if it wasn't enabled before calling it.
2019-03-05 23:10:00 +01:00
Irmen de Jong
ed43f7cd9b
grade: also include parser in fatJar to make it complete, and exclude the huge ic4j library that isn't used
2019-03-02 22:41:21 +01:00
Ferenc Boldog
43cab3f247
possible solution for antlr4-runtime in the fatjar
2019-02-28 15:02:10 +01:00
Irmen de Jong
b8ae808b65
compiler was confused about resulting expression type
2019-02-27 23:58:08 +01:00
Irmen de Jong
96ecbc9fe4
fixed too eager expression operand type adjustment
2019-02-27 23:07:12 +01:00
Irmen de Jong
2f1249489b
datatype cleanups
2019-02-25 01:22:56 +01:00
Irmen de Jong
95f7c9bad0
asmsubroutines now also return their value on the evalstack (this fixes their use in expressions)
2019-02-24 18:54:25 +01:00
Irmen de Jong
8811d2f7c5
fixed a compiler ast crash and added -noopt command line flag
2019-02-24 16:56:38 +01:00
Irmen de Jong
d6ca1e6a12
fixed len() returntype
2019-02-24 15:25:46 +01:00
Irmen de Jong
b0ad66bd04
added missing bitwise and/or/xor asm code
2019-02-23 23:06:46 +01:00
Irmen de Jong
c1d2b4601b
fixed/added logical and/or/xor
2019-02-23 22:13:42 +01:00
Irmen de Jong
c265625ed1
gradle
2019-02-23 13:17:42 +01:00
Irmen de Jong
52352d9d04
added c64scr.getchr/getclr
2019-02-21 01:31:33 +01:00
Irmen de Jong
cc5898d010
more tetriz work
2019-02-15 01:53:20 +01:00
Irmen de Jong
d05d8de447
optimize math from Soci's suggestions
2019-02-12 23:16:13 +01:00
Irmen de Jong
29b7d91293
improved tracking of module file locations, fixed relative importing of submodules from same directory as source module
2019-02-12 21:44:56 +01:00
Irmen de Jong
bcdf3f2b83
improved zero page address addresses for floating point support mode
2019-02-09 17:55:18 +01:00
Irmen de Jong
ee497d2ffb
improved zero page address addresses for floating point support mode
2019-02-09 17:29:59 +01:00
Irmen de Jong
9f8ae485c3
fix windows path issue
2019-02-04 22:04:31 +01:00
Irmen de Jong
7ff1af3934
avoid zp corruption issues and added zp mode for floating point (todo: allocate)
2019-02-03 00:26:07 +01:00
Irmen de Jong
ae21e03e1d
attempt at optimization to register parameter passing
2019-02-01 22:51:30 +01:00
Irmen de Jong
f83b9732ee
User defined blocks are sorted first, before library blocks. This prioritizes zero page allocation to user code (and makes reading the program easier)
2019-02-01 01:22:27 +01:00
Irmen de Jong
86ff08e854
fix abs() and also try to convert const arguments to the desired datatype of subroutine params
2019-02-01 00:51:49 +01:00
Irmen de Jong
b911a95fc2
fix compiler crash for non-const array literals
2019-01-31 23:47:48 +01:00
Irmen de Jong
8e36a64d49
error message for invalid operand types for logical or bitwise operators
2019-01-31 21:38:45 +01:00
Irmen de Jong
255c808b16
Merge pull request #2 from fboldog/gradle-fatjar
...
Create prog8compiler.jar with fatjar like jar process
2019-01-31 21:15:23 +01:00
Irmen de Jong
9a8ada7e75
fixed scripts, type check bug fixed, improved some argument error messages
2019-01-30 23:51:46 +01:00
Irmen de Jong
32a9ab30fb
fixed stack bug in print_ub, applied Soci's optimizations to prog8lib.asm
2019-01-30 23:43:21 +01:00
Ferenc Boldog
5c8d7c1255
Create prog8compiler.jar with fatjar like jar process
2019-01-30 22:39:43 +01:00
Ferenc Boldog
b8624c72d9
generate p8compiler and p8vm scripts
2019-01-29 12:11:47 +01:00
Ferenc Boldog
49c5b2b107
java, resources and test source directories
2019-01-29 12:10:59 +01:00
Ferenc Boldog
de777b1308
initial version of compiler and parser gradle module
2019-01-29 12:08:21 +01:00
Irmen de Jong
7459896155
finalized zeropage variable allocation
2019-01-27 22:59:40 +01:00
Irmen de Jong
0219c69446
stackvm now also calls the variable init subroutines before the program starts
2019-01-27 21:25:16 +01:00
Irmen de Jong
798c4d7902
fix some optimizations of loops, added some conditional branch optimizations
2019-01-27 19:14:58 +01:00
Irmen de Jong
c4a28b8502
actually (re)initialize block level variables with their init values
2019-01-27 18:33:21 +01:00
Irmen de Jong
3a8f069854
zp allocations
2019-01-27 17:10:49 +01:00
Irmen de Jong
953cf9a335
preparing for vars on zeropage
2019-01-26 22:46:01 +01:00
Irmen de Jong
fa8a3c997a
Expressions can now be split over multiple lines. Fixed datatype of len().
2019-01-26 17:32:26 +01:00
Irmen de Jong
1ff68b06da
fix compiler crash, rasterbars alignment, docs.
2019-01-25 01:35:46 +01:00
Irmen de Jong
6e3820c6b8
Fixed namespace lookup errors related to variable initialization. Removed many X register clobbers.
2019-01-24 23:29:09 +01:00
Irmen de Jong
56e0f4c525
trying to fix namespace lookup errors
2019-01-24 21:45:50 +01:00
Irmen de Jong
a0f0e7a034
%asminclude now first looks in the same folder as the module it is in
2019-01-24 00:35:30 +01:00
Irmen de Jong
fab5e4b17f
swap syntax checks
2019-01-23 22:00:46 +01:00
Irmen de Jong
39a5e341af
sort assignments to enable same-value optimization
2019-01-23 21:50:43 +01:00
Irmen de Jong
d37c9d1680
argument type casts for builtin functions, added memset, tweaked memcopy/memset assembly a bit
2019-01-23 00:19:29 +01:00
Irmen de Jong
dd02d97db4
fixed and optimized branches and gotos in if statements
2019-01-22 22:52:43 +01:00
Irmen de Jong
209b50ddf7
errormsg
2019-01-21 02:57:00 +01:00
Irmen de Jong
5ba839986f
some more command line options
2019-01-21 01:08:43 +01:00
Irmen de Jong
5471c5211c
make %asminclude work, restructure prog8lib into separate asm file
2019-01-21 00:49:48 +01:00
Irmen de Jong
ba91ab13d5
remove unused option
2019-01-20 17:50:30 +01:00
Irmen de Jong
2911e357bd
restructured program init code and library imports a bit
2019-01-20 17:45:57 +01:00
Irmen de Jong
fc67ef8f21
added SID registers and sound example program
2019-01-20 16:54:24 +01:00
Irmen de Jong
ef12be062b
fixed swap()
2019-01-19 18:34:22 +01:00
Irmen de Jong
25e44a54fb
stuff
2019-01-19 17:07:01 +01:00
Irmen de Jong
75b38d7b84
added swap() slow version
2019-01-18 01:33:54 +01:00
Irmen de Jong
740dedc7a1
fixed stack/branch bug in for loop
2019-01-17 23:05:57 +01:00
Irmen de Jong
76aeb06c97
float init optimization in asm
2019-01-17 00:00:04 +01:00
Irmen de Jong
9424387803
added ast check for invalid type cast
2019-01-16 23:24:47 +01:00
Irmen de Jong
aa8f8978f0
remove long-branch warning for now
2019-01-16 23:12:30 +01:00
Irmen de Jong
49c3dc3c32
for loop body can be a single statement without curly braces now as well
2019-01-16 22:02:35 +01:00
Irmen de Jong
eb74b8daa5
got rid of useless opcode
2019-01-16 21:18:00 +01:00
Irmen de Jong
c6c75c43ff
fix typo
2019-01-16 00:42:00 +01:00
Irmen de Jong
8bd5cc01b4
asm assignment opts
2019-01-16 00:37:17 +01:00
Irmen de Jong
5f2bf2b375
various regression fixes
2019-01-16 00:36:30 +01:00
Irmen de Jong
ee906ba82c
fix ubyte2float conversion
2019-01-15 22:16:03 +01:00
Irmen de Jong
de4353a93e
fix too greedy removal of loop statement bodies sometimes
2019-01-15 21:46:27 +01:00
Irmen de Jong
870c6ea747
stuff
2019-01-14 23:48:18 +01:00
Irmen de Jong
98e95b5707
replaced str2ubyte
2019-01-13 14:20:51 +01:00
Irmen de Jong
30e6bc92e5
expression optimizations
2019-01-13 01:50:46 +01:00
Irmen de Jong
ec770b0f5f
merge sequential assignments, fix irq
2019-01-12 21:38:31 +01:00
Irmen de Jong
d05169853b
even more optimizations
2019-01-12 18:11:36 +01:00
Irmen de Jong
5e42c0d736
rewrote HeapVars a bit to allow for more flexibility (removal of values?)
2019-01-12 16:32:03 +01:00
Irmen de Jong
23afb1ccc2
optimization and fixes
2019-01-12 16:13:40 +01:00
Irmen de Jong
f3c9be4e06
float ++/-- and missing asm code handlers added
2019-01-12 14:55:57 +01:00
Irmen de Jong
0b86af0c4e
fixes
2019-01-12 14:05:55 +01:00
Irmen de Jong
f00d2f06c9
fix stackvm comparison/jnz/bnz
2019-01-12 02:36:43 +01:00
Irmen de Jong
cad42ddc05
word multiplications done
2019-01-12 00:31:56 +01:00
Irmen de Jong
b8251b2e26
simplify expressions
2019-01-11 23:11:10 +01:00
Irmen de Jong
c0920a43a3
optimize % and logical operations on words
2019-01-11 20:24:36 +01:00
Irmen de Jong
6fe0959fdc
multiplications
2019-01-11 09:26:59 +01:00
Irmen de Jong
2a08c22b0f
optimized byte multiplications
2019-01-11 03:08:27 +01:00
Irmen de Jong
487faf3a08
optimize and fix for loops
2019-01-10 23:53:46 +01:00
Irmen de Jong
aa00db4d80
prog8 lib modules are now embedded resource files
2019-01-10 19:30:26 +01:00
Irmen de Jong
e3eace9e28
project folder restructure
2019-01-09 23:57:27 +01:00
Irmen de Jong
b2ecf16234
fixed some array length loop issues
2019-01-09 22:28:04 +01:00
Irmen de Jong
f1b2bd1cc4
got rid of separate '//' floordivision operator
2019-01-09 22:01:47 +01:00
Irmen de Jong
71e6497eed
optimized some +1/-1 code
2019-01-09 03:11:01 +01:00
Irmen de Jong
46c282d6d5
created mkword function
2019-01-09 01:03:33 +01:00
Irmen de Jong
0ab0f02e75
optimized stuff
2019-01-09 00:25:02 +01:00
Irmen de Jong
0146a39ebb
moved some more stuff around
2019-01-08 02:09:35 +01:00
Irmen de Jong
d5250a97c2
moved prog8lib into compiler directory
2019-01-08 01:47:59 +01:00
Irmen de Jong
b8b531276d
fixed some shift opcode issues in stackvm, tweak mandelbrot example
2019-01-08 01:31:59 +01:00
Irmen de Jong
295f7a6c6e
added unsigned versions of sin and cos (0..255, 0..65535)
2019-01-06 22:56:06 +01:00
Irmen de Jong
3b6ffc47b2
integer word division
2019-01-06 21:46:35 +01:00
Irmen de Jong
ebee8c128f
fixed/optimized integer division and remainder
2019-01-06 19:04:09 +01:00
Irmen de Jong
214b100f96
fix array assignment stack error
2019-01-06 16:49:11 +01:00
Irmen de Jong
c2c1b43714
fix // expression error
2019-01-06 15:26:08 +01:00
Irmen de Jong
04bbdf5991
div and mult by a power of 2 are now optimized into shifts. Added bit shift operators << and >>
2019-01-06 08:20:22 +01:00
Irmen de Jong
e9704bdca1
arguments to sub calls should be type converted just as regular assignments do
2019-01-06 04:05:13 +01:00
Irmen de Jong
a43f81cad4
more efficient branch asm, and fixed jump/call asm
2019-01-06 03:32:47 +01:00
Irmen de Jong
775cdd451c
subroutines are now wrapped in .proc/.pend for 64tass
2019-01-06 02:48:14 +01:00
Irmen de Jong
f803b4edc1
screen clear routines optimized
2019-01-06 02:11:16 +01:00
Irmen de Jong
d203bfaf25
normal division is always float, implemented (u)byte integer division
2019-01-06 01:43:47 +01:00
Irmen de Jong
cca94d41bc
cube3d non float
2019-01-05 19:14:14 +01:00
Irmen de Jong
4f213191dc
fix asm stack bug
2019-01-05 18:02:17 +01:00
Irmen de Jong
9f4ac37a00
split off c64flt library for all floating point routines
2019-01-05 16:09:05 +01:00
Irmen de Jong
39a8508daa
sine table and bit shifting of signed values fixed
2019-01-05 02:42:58 +01:00
Irmen de Jong
32d82e8e56
asmsubs can now specify params and return values to be on the stack.
...
implemented fast integer fixed-point sin and cosine functions.
2019-01-04 22:11:46 +01:00
Irmen de Jong
526b28caa7
avoid impossible type casts
2019-01-04 02:30:59 +01:00
Irmen de Jong
e033cff09a
tweak identifier parse rule
2019-01-02 23:32:41 +01:00
Irmen de Jong
299d1bdab8
fixed for loop with step size >1
2019-01-02 03:18:32 +01:00
Irmen de Jong
2f9eabeac7
c64 irq handling routines
2019-01-02 02:47:52 +01:00
Irmen de Jong
aea1292f92
various code generation fixes, slight optimization of 16-bit word additions
2019-01-02 00:38:11 +01:00
Irmen de Jong
72d58d5856
some optimizations
2019-01-01 22:10:06 +01:00
Irmen de Jong
39a8b76534
force_output option added
2019-01-01 21:47:19 +01:00
Irmen de Jong
21136e8cad
stop compiler at lexer errors as well
2019-01-01 19:36:27 +01:00
Irmen de Jong
d2616b6a08
tweak parsing of if..else if
2019-01-01 18:45:21 +01:00
Irmen de Jong
c2eb181b5a
added memcopy function
2019-01-01 18:38:43 +01:00
Irmen de Jong
ac8e7f4fa9
made setting/restoring the IRQ vector explicit
2019-01-01 18:05:50 +01:00
Irmen de Jong
7b41a4b5fa
direct memory access and sprite fixes
2018-12-31 04:53:50 +01:00
Irmen de Jong
a319e6f9ec
direct memory access and sprite fixes
2018-12-31 04:48:26 +01:00
Irmen de Jong
c07bd8a4a8
created direct-on-memory ++/-- and augmented assignemnts.
2018-12-31 02:25:45 +01:00
Irmen de Jong
aeb963673a
sprites example
2018-12-31 01:52:18 +01:00
Irmen de Jong
500777bf78
added direct memory access ("poke"/"peek")
2018-12-31 01:10:42 +01:00
Irmen de Jong
75a57da44d
fixed register clobbering at sub call and cube3d c64 example
2018-12-30 20:22:32 +01:00
Irmen de Jong
b69697c3dd
fixed array lookup and cube3d c64 example
2018-12-30 01:51:32 +01:00
Irmen de Jong
9ee1628901
implemented avg() asm
2018-12-30 00:24:41 +01:00
Irmen de Jong
6e8cf7e1d3
implemented sum() asm
2018-12-30 00:05:54 +01:00
Irmen de Jong
575bc7aa9a
stack error fix
2018-12-29 20:01:07 +01:00
Irmen de Jong
98b9ddac76
fixed missing initialization of loop index var
2018-12-29 17:09:55 +01:00
Irmen de Jong
9ddda9fcf7
for loops over iterables now allow different numeric loopvar types
2018-12-29 16:25:20 +01:00
Irmen de Jong
b01deb2170
fix for loop iteration Y register clobbering
2018-12-28 03:04:41 +01:00
Irmen de Jong
26233d5409
fixed constant folding expression reorder bug
2018-12-26 17:51:27 +01:00
Irmen de Jong
c58b862b34
more efficient code for inc/dec on arrays
2018-12-26 15:47:23 +01:00
Irmen de Jong
8adbcb7a26
irq routine activated
2018-12-26 04:51:21 +01:00
Irmen de Jong
904e317781
cleanups, fix scope of certain generated nodes in for loops
2018-12-25 01:05:38 +01:00
Irmen de Jong
d55bbcf706
removed string conversion builtin functions, they're now subroutines in c64util
2018-12-22 01:07:43 +01:00
Irmen de Jong
6a18c83fa5
min/max word and uword
2018-12-21 23:12:49 +01:00
Irmen de Jong
85c65a9a9f
min/max float
2018-12-21 21:47:31 +01:00
Irmen de Jong
4c2a81c452
min/max byte arrays
2018-12-21 01:10:58 +01:00
Irmen de Jong
ee893e5a2c
multiplications
2018-12-20 23:28:03 +01:00
Irmen de Jong
9ffc68acab
casts
2018-12-20 16:17:58 +01:00
Irmen de Jong
e20e7f0232
upgrade to antlr 4.7.2
2018-12-20 15:05:50 +01:00
Irmen de Jong
5870006b2f
introduced type cast "... as ..." instead of builtin functions
2018-12-20 03:17:41 +01:00
Irmen de Jong
445db44c05
start of typecasting mechanism "... as type"
2018-12-19 03:51:22 +01:00
Irmen de Jong
d305a44557
check for non-executed statements in main block
2018-12-19 03:04:27 +01:00
Irmen de Jong
c1204b83bd
changed syntax of subroutine parameters (now the same as vardecls)
2018-12-19 02:51:22 +01:00
Irmen de Jong
00ad285d3f
fix array value initialization type conversions
2018-12-19 00:57:57 +01:00
Irmen de Jong
3a7b341f47
fixes
2018-12-18 18:32:41 +01:00
Irmen de Jong
ca1d6bff56
log functions
2018-12-18 02:02:19 +01:00
Irmen de Jong
4be6a2eeef
abs()
2018-12-18 01:43:04 +01:00
Irmen de Jong
bcfb390077
optimizations
2018-12-17 15:52:37 +01:00
Irmen de Jong
4a309d1e12
more functions and fixed iteration over variable
2018-12-17 13:49:19 +01:00
Irmen de Jong
178a46ad7f
any and all
2018-12-17 01:59:04 +01:00
Irmen de Jong
13a5a06ffb
len()
2018-12-16 13:58:18 +01:00
Irmen de Jong
2478c73bc0
more asm float calculations
2018-12-16 03:38:17 +01:00
Irmen de Jong
b9958412c7
allow passing byte/word for register/registerpair arguments, fix stackvm string parameter handling
2018-12-15 00:38:21 +01:00
Irmen de Jong
8597ea2ec7
correct printing of numbers
2018-12-14 23:15:44 +01:00
Irmen de Jong
7cb42de60e
more float asm operations, fix some % operator problems
2018-12-13 01:19:43 +01:00
Irmen de Jong
584cc1dedb
asm conversions to float
2018-12-12 01:13:13 +01:00
Irmen de Jong
d6cf8bcce0
fixed return values problem and wrong optimization into jump
2018-12-12 00:15:05 +01:00
Irmen de Jong
756930a54f
return values problem
2018-12-11 01:54:51 +01:00
Irmen de Jong
be819ba8a7
got the number guessing example fully working on c64 asm
2018-12-11 00:09:37 +01:00
Irmen de Jong
a499ac6def
string to byte
2018-12-10 09:25:38 +01:00
Irmen de Jong
f070dc22bb
save X register automatically when calling sub that clobbers X
2018-12-09 19:48:59 +01:00
Irmen de Jong
b8150f645d
word and uword and float comparisons
2018-12-09 17:28:34 +01:00
Irmen de Jong
21b9c2f011
sbyte less than
2018-12-09 04:10:50 +01:00
Irmen de Jong
db3d3727c2
ubyte comparisons
2018-12-08 18:54:31 +01:00
Irmen de Jong
ef2ae60868
byte/word asm comparisons
2018-12-08 17:21:34 +01:00
Irmen de Jong
432960da8b
floats and random number stuff
2018-12-07 00:57:32 +01:00
Irmen de Jong
80c69d83c6
random number stuff
2018-12-06 01:25:06 +01:00
Irmen de Jong
0c64d7ffe5
more asm, constants now also outputted in asm source
2018-12-05 00:30:56 +01:00
Irmen de Jong
08224d5367
error/warning colors
2018-12-04 00:54:18 +01:00
Irmen de Jong
bf5f7a271e
various
2018-12-04 00:19:13 +01:00
Irmen de Jong
711d6f4ee5
fix memory pointer variables in the StackVm
2018-12-02 23:53:09 +01:00
Irmen de Jong
89ac374db9
float stuff
2018-12-02 17:59:36 +01:00
Irmen de Jong
211609c481
string param passing
2018-11-28 01:12:23 +01:00
Irmen de Jong
8a2584c7df
added JZ/JNZ/etc opcodes for conditional jumps based on stack value
...
fix function parameter replacement of auto-heaped strings
2018-11-27 00:35:37 +01:00
Irmen de Jong
f9ed92dc3a
fix function parameter datatype checks
2018-11-26 22:12:36 +01:00
Irmen de Jong
30e2bdad79
fix some problems with subroutine parameters
2018-11-26 01:18:06 +01:00
Irmen de Jong
43c99f1d89
strings of len 1 are no longer converted to byte value, plus some other tweaks
2018-11-25 23:42:37 +01:00
Irmen de Jong
d1b750ea55
fix launching of Vice
2018-11-25 01:17:39 +01:00
Irmen de Jong
849bfde515
auto converting string literals to variables and asm generation
2018-11-24 03:25:59 +01:00
Irmen de Jong
6c8354aef0
taking the address of strings and arrays
2018-11-23 00:31:21 +01:00
Irmen de Jong
069f6ea372
improved assignment of single character values and strings
2018-11-22 00:58:21 +01:00
Irmen de Jong
48a6a05109
improve datatype assignment checks
2018-11-22 00:01:41 +01:00
Irmen de Jong
c40fc584d6
added warning about using X as sub parameter
2018-11-21 22:07:13 +01:00
Irmen de Jong
e89788eeab
adjust return value literal type to subroutine return type
2018-11-21 00:02:02 +01:00
Irmen de Jong
034973a9e6
asm fixes
2018-11-20 18:01:53 +01:00
Irmen de Jong
c90230d33a
tweaking multiple assignment targets
2018-11-19 23:56:54 +01:00
Irmen de Jong
fad74a6ae0
tweaking multiple assignment targets
2018-11-19 01:31:07 +01:00
Irmen de Jong
a2a8a772ec
tweaking multiple assignment targets
2018-11-15 00:49:06 +01:00
Irmen de Jong
23c1167d7f
tweaking multiple assignment targets
2018-11-14 01:50:16 +01:00
Irmen de Jong
4ade45f51f
tweaking subroutine return values
2018-11-11 18:19:08 +01:00
Irmen de Jong
95b05d08b3
better solution for registerpair as subroutine param/returnvalue
2018-11-10 12:25:46 +01:00
Irmen de Jong
c415f731da
make registerpair compile again as subroutine param/returnvalue
2018-11-10 00:53:50 +01:00
Irmen de Jong
171d5b0a35
tweaks
2018-11-09 23:42:17 +01:00
Irmen de Jong
886464d94a
assignments
2018-11-09 00:23:51 +01:00
Irmen de Jong
9c26066dcb
assignments
2018-11-07 02:37:48 +01:00
Irmen de Jong
37b07e254e
assignments
2018-11-06 01:38:47 +01:00
Irmen de Jong
783db2f88b
assignments
2018-11-03 00:02:31 +01:00
Irmen de Jong
d6432df90d
got rid of 16-bit register pair variables (AX, AY, XY) they were complicating things too much
2018-11-02 22:06:57 +01:00
Irmen de Jong
54e52a910a
assignments
2018-11-02 21:34:12 +01:00
Irmen de Jong
4ef680f6fd
assignments
2018-11-01 23:42:10 +01:00
Irmen de Jong
a550e2b413
assignments
2018-11-01 00:56:07 +01:00
Irmen de Jong
82c6794e3b
assignments
2018-10-31 00:50:53 +01:00
Irmen de Jong
625791e5e8
removed support for indexing on register pairs
2018-10-30 23:20:09 +01:00
Irmen de Jong
6d21274090
assignments
2018-10-30 22:15:38 +01:00
Irmen de Jong
5bf2c4a798
got rid of matrix type
2018-10-30 20:29:03 +01:00
Irmen de Jong
98a8ff4587
asm fixes
2018-10-30 17:39:22 +01:00
Irmen de Jong
5361379187
Merge remote-tracking branch 'origin/master'
2018-10-30 11:12:25 +01:00
Irmen de Jong
05fc6fa47a
tweaks
2018-10-30 09:22:32 +01:00
Irmen de Jong
1e776b1f53
Merge remote-tracking branch 'origin/master'
2018-10-29 10:24:30 +01:00
Irmen de Jong
8446dd567b
assignments again
2018-10-29 02:05:22 +01:00
Irmen de Jong
729d931ccb
assignments again
2018-10-27 23:03:46 +02:00
Irmen de Jong
7c4846700b
simplified opcodes (removed COPY_XXX and MEM signed/unsigned distinction)
2018-10-27 22:08:46 +02:00
Irmen de Jong
f4e2641f7c
assignments and stuff
2018-10-27 21:26:32 +02:00
Irmen de Jong
a23673fe83
array assignments etc
2018-10-27 02:09:23 +02:00
Irmen de Jong
0235864d0b
asm fixes
2018-10-26 11:50:06 +02:00
Irmen de Jong
f541dd3bfd
regenerate parser
2018-10-26 02:14:33 +02:00
Irmen de Jong
5203dad7c1
more asm output
2018-10-26 01:44:01 +02:00
Irmen de Jong
595bf7ad4b
more asm output
2018-10-25 01:05:35 +02:00
Irmen de Jong
f42a036fc5
more asm output, added COPY_MEM_XXX optimized opcodes
2018-10-25 00:28:50 +02:00
Irmen de Jong
4effd0b3db
asm fixes
2018-10-24 17:51:56 +02:00
Irmen de Jong
fba3cb7301
more asm output
2018-10-24 01:39:52 +02:00
Irmen de Jong
ab73353cd2
fix expression simplification issue
2018-10-23 23:05:08 +02:00
Irmen de Jong
a825bbff96
fix array problems, limit size of arrays.
2018-10-23 00:52:51 +02:00
Irmen de Jong
b8f3f942d4
implemented all bit rotate and shift operations
2018-10-22 01:02:24 +02:00
Irmen de Jong
da3f79c092
another way to generate asm
2018-10-21 20:26:18 +02:00
Irmen de Jong
79462b3448
fixed some problems with builtin functions
2018-10-20 23:53:39 +02:00
Irmen de Jong
c01114db9f
more asm
2018-10-18 02:14:13 +02:00
Irmen de Jong
bcedb5f5e3
fix some asm
2018-10-17 18:11:36 +02:00
Irmen de Jong
067426016d
more asm
2018-10-17 01:01:01 +02:00
Irmen de Jong
1e0ce40d1d
included libs are now carried over to asm properly
2018-10-16 22:58:30 +02:00
Irmen de Jong
529c525081
inline asm and fixed c64 libs
2018-10-16 02:36:14 +02:00
Irmen de Jong
263b197fec
more asm
2018-10-16 01:24:40 +02:00
Irmen de Jong
85f6c5350c
more asm
2018-10-15 02:49:59 +02:00
Irmen de Jong
ba384c9722
rsave/rrestore added
2018-10-14 22:32:03 +02:00
Irmen de Jong
b52120139c
6502 start
2018-10-14 01:55:39 +02:00
Irmen de Jong
b7d8f026f4
refactor
2018-10-13 18:17:06 +02:00
Irmen de Jong
dff4518608
intermediate program written in blocks
2018-10-13 16:55:01 +02:00
Irmen de Jong
987915a77a
doc
2018-10-12 18:01:40 +02:00
Irmen de Jong
7aec14524e
fix datatype conversion issues
2018-10-12 15:50:32 +02:00
Irmen de Jong
cc54e3ec99
fix array initialization
2018-10-12 00:55:21 +02:00
Irmen de Jong
1fe5c943fd
adding singed integer datatypes
2018-10-11 21:50:10 +02:00
Irmen de Jong
2f7d03b6ab
adding singed integer datatypes
2018-10-10 09:21:20 +02:00
Irmen de Jong
f5261a3425
added %zpreserved
2018-10-09 00:01:53 +02:00
Irmen de Jong
42394f561b
syntax checks on asmsubs
2018-10-08 22:35:39 +02:00
Irmen de Jong
50464ebda1
syntax checks on asmsubs
2018-10-08 21:57:36 +02:00
Irmen de Jong
9d10210466
optimized var copying
2018-10-08 02:24:35 +02:00
Irmen de Jong
c2a1cb956a
allow to re-assign string variables
2018-10-08 01:20:53 +02:00
Irmen de Jong
3ac2385d4b
optimize calls/jumps and loops with always known conditions.
2018-10-07 23:29:27 +02:00
Irmen de Jong
7b51597fe9
some more typecheckings and indexing on matrixes
2018-10-07 21:20:04 +02:00
Irmen de Jong
34d26e42e1
fixed some type checks
2018-10-07 02:05:26 +02:00
Irmen de Jong
30b58c8567
variables are reset to their declared value when entering the scope again
2018-10-07 00:21:13 +02:00
Irmen de Jong
314e5ca9e2
correct type for word array initialization value
2018-10-06 23:07:57 +02:00
Irmen de Jong
6edd5f9b30
can now declare for loop variable on the spot
2018-10-06 22:54:03 +02:00
Irmen de Jong
1d37841575
for, while, repeat, if, branch bodies are now (anonymous) symbol scopes
2018-10-06 18:42:06 +02:00
Irmen de Jong
7b650ffa18
added bitmap characters
2018-10-06 02:16:07 +02:00
Irmen de Jong
a7abc32368
wrd and wrdhi functions added for byte-word conversion, more constant folding optimizations
2018-10-06 00:10:30 +02:00
Irmen de Jong
d13ced6d95
tweak
2018-10-05 18:36:23 +02:00
Irmen de Jong
b1dcc8093a
optimize silly unneeded data conversions in stackvm code
2018-10-05 18:31:48 +02:00
Irmen de Jong
6350bf8024
fixed datatype conversions
2018-10-05 17:44:29 +02:00
Irmen de Jong
52e1661c8e
even more opcodes type-specific
2018-10-05 16:57:13 +02:00
Irmen de Jong
e8ba21d3ba
made a lot more opcodes type-specific
2018-10-05 13:58:37 +02:00
Irmen de Jong
42e4891fcf
allowing vardecl with non-const initial value assignment
2018-10-05 00:29:46 +02:00
Irmen de Jong
2e4b5768b0
tweak subroutine order
2018-10-04 20:54:18 +02:00
Irmen de Jong
7d77504335
types
2018-10-04 02:30:23 +02:00
Irmen de Jong
bf75e7c00b
types
2018-10-04 02:28:19 +02:00
Irmen de Jong
d2ffb1063b
made more opcodes type-specific (will be needed for assembly generation later)
2018-10-04 02:17:18 +02:00
Irmen de Jong
4501276217
cube3d and tweaks
2018-10-03 01:57:16 +02:00
Irmen de Jong
4df397d057
merge asmsub and normal sub
2018-10-03 00:25:04 +02:00
Irmen de Jong
34fb82969c
optimize assignment with literal value; const-convert value to target datatype literal if possible
2018-10-02 23:10:27 +02:00
Irmen de Jong
18c6165325
more complete for loops, various comma separated lists can now be split over multiple lines
2018-10-02 22:52:05 +02:00
Irmen de Jong
af0d52b5c2
assignment to array-indexed
2018-10-02 04:05:44 +02:00
Irmen de Jong
38e7d48492
implemented floating-point arrays
2018-10-02 02:20:42 +02:00
Irmen de Jong
0cdae48ce7
implemented array indexing
2018-10-01 22:23:16 +02:00
Irmen de Jong
8f26fdef61
changed the syntax of kernel/asm subroutines
2018-10-01 20:05:32 +02:00
Irmen de Jong
b96bb23a54
added gfx_line function
2018-10-01 01:01:39 +02:00
Irmen de Jong
623b42cc14
added single character literals (petscii byte value)
2018-09-30 23:07:26 +02:00
Irmen de Jong
3278d4c945
fixed function calls, added some string-to-number conversion functions
2018-09-30 22:43:34 +02:00
Irmen de Jong
734948c813
funcion call parameters are now checked against function signature
2018-09-30 20:58:47 +02:00
Irmen de Jong
d1589bef26
builtin funcs with multiple param types
2018-09-30 20:19:25 +02:00
Irmen de Jong
02075f2cf2
changed subroutine syntax and fixed array/matrix initalizer values
2018-09-30 18:49:58 +02:00
Irmen de Jong
505de87f27
builtin funcs
2018-09-30 16:25:00 +02:00
Irmen de Jong
34dec55eb2
fix builtin functions over non-const arrays/strings
2018-09-29 19:17:19 +02:00
Irmen de Jong
5ee427b72b
enforce const on array/matrix values
2018-09-29 18:05:35 +02:00
Irmen de Jong
6b89bb7be5
strings and arrays are now stored in a 'heap' instead of in the value itself, to reflect how the target platform will store them
2018-09-29 17:33:59 +02:00
Irmen de Jong
d4232721fc
improve check to see if expression is iterable
2018-09-29 10:07:27 +02:00
Irmen de Jong
814b7ce6aa
track vars per block for later 6502 generation
2018-09-28 23:04:36 +02:00
Irmen de Jong
c5d251073f
removed broken unused symbol clean up for now
...
streamlined irq routine handling and compilation
2018-09-28 21:28:16 +02:00
Irmen de Jong
4d7279b004
fix lsb, msb result data type
2018-09-28 19:35:34 +02:00
Irmen de Jong
1c036c4813
translating subroutine calls and returns
2018-09-28 02:26:56 +02:00
Irmen de Jong
bf5c2e07a2
subroutines cannot use builtin function names for parameters
2018-09-27 23:58:14 +02:00
Irmen de Jong
91f9229b07
fixed memory vars in compiler, added invalid assignment check
2018-09-27 23:21:04 +02:00
Irmen de Jong
7f28f8be11
60hz irq implemented in stackvm
2018-09-27 22:45:57 +02:00
Irmen de Jong
99d63b13a8
slightly simplified const grouping
2018-09-27 20:50:39 +02:00
Irmen de Jong
5e729e21ff
added some more constant foldings
2018-09-27 01:35:35 +02:00
Irmen de Jong
6681787288
fix handling of (too) large integer literals, and range check crash
2018-09-26 21:37:46 +02:00
Irmen de Jong
0f53f87895
made stackvm source a bit more readable
2018-09-26 01:14:10 +02:00
Irmen de Jong
00baec12ab
arithmetic statement optimizations added
2018-09-26 00:58:02 +02:00
Irmen de Jong
f85d8edeba
added some more division by zero checks
...
bitwise operator optimizations
2018-09-25 22:16:32 +02:00
Irmen de Jong
a2c165839d
optimize for loop over 1-valued range
2018-09-25 20:40:41 +02:00
Irmen de Jong
53cd50ad48
changed float handling and appropriate compiler messages
2018-09-25 19:52:59 +02:00
Irmen de Jong
d990b05998
compilation of prefix operators, added NOT opcode
2018-09-25 01:02:01 +02:00
Irmen de Jong
70e5a38aa2
changed set/clear carry and irqd somewhat
2018-09-24 23:38:33 +02:00
Irmen de Jong
cef0aae927
compilation of builtin functions to opcode
...
untit tests for stackvm opcodes, value and parser literalvalue
2018-09-24 22:34:12 +02:00
Irmen de Jong
3a0c1c5ada
optimized mandelbrot example
2018-09-23 02:53:57 +02:00
Irmen de Jong
68037e4425
implemented while and repeat loops
2018-09-23 02:04:45 +02:00
Irmen de Jong
cfd63dc42a
more opcodes unit tested
2018-09-22 14:16:48 +02:00
Irmen de Jong
4174d49fb3
for loop generates working code for the most often occurring loop scenarios
2018-09-22 02:43:10 +02:00
Irmen de Jong
f84e06bdeb
tweak branches
2018-09-22 00:33:25 +02:00
Irmen de Jong
0137478ad4
tweaks
2018-09-21 22:43:29 +02:00
Irmen de Jong
2f48406aad
unit tests for most of the StackVM opcodes. Fixed some opcode behaviors.
2018-09-21 02:20:37 +02:00
Irmen de Jong
455f60fb84
for loop and comparison expression fixes
2018-09-20 01:13:21 +02:00
Irmen de Jong
b72bd805e1
sub decl checking
2018-09-19 02:41:35 +02:00
Irmen de Jong
cba9e7670e
added floordivision operator //
2018-09-19 01:24:28 +02:00
Irmen de Jong
00d74551b3
fix for loop code generation.
...
added flt conversion function.
attempt at implementing break and continue.
var initializer value can be omitted for numeric vars (and default to 0)
subroutine return statement not needed when no return values.
2018-09-18 23:14:32 +02:00
Irmen de Jong
63492a1805
stackvm functions
2018-09-18 00:38:29 +02:00
Irmen de Jong
54aeee2676
for translation improvements
2018-09-17 22:22:41 +02:00
Irmen de Jong
dd96ef8ef2
simple for loop (with constant ranges) is now compiled
2018-09-16 22:00:19 +02:00
Irmen de Jong
326e5cd81a
restructure compiler
2018-09-16 20:36:02 +02:00
Irmen de Jong
88a9f2d493
stackvm program tweaks
2018-09-16 17:48:13 +02:00
Irmen de Jong
719a446d19
syntaxcheck for loop
2018-09-16 16:37:28 +02:00
Irmen de Jong
004776d0d8
added char symbols in petscii source code
2018-09-16 16:07:35 +02:00
Irmen de Jong
3c7a233b43
improved handling of range and range type checks
2018-09-16 15:40:28 +02:00
Irmen de Jong
2591f4e27e
forloop in grammar
2018-09-16 03:00:32 +02:00
Irmen de Jong
1a40a88103
added remainder operator '%'
2018-09-16 00:59:12 +02:00
Irmen de Jong
3426593a06
fixed a load of type checks regarding arrays and matrixes and strings
...
added more builtin functions to the compiler to access the syscalls in the stackVm
2018-09-16 00:06:06 +02:00
Irmen de Jong
c05cd72d23
vm tweaks
2018-09-15 18:43:23 +02:00
Irmen de Jong
e382be89db
changed source file suffix to .p8
2018-09-15 16:35:15 +02:00
Irmen de Jong
8ff72167a4
renamed project to Prog8
2018-09-15 16:21:05 +02:00