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