Commit Graph

1864 Commits

Author SHA1 Message Date
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