Irmen de Jong
9b16d7c786
working on vm
2022-03-20 15:06:29 +01:00
Irmen de Jong
92737bb695
better handling of loadAddress
2022-03-13 16:21:02 +01:00
Irmen de Jong
9b81955544
optimizing new Ast
2022-03-13 11:49:07 +01:00
Irmen de Jong
40e9fba312
working on new Ast and XML export to test it
2022-03-12 22:38:16 +01:00
Irmen de Jong
e75d0c58a9
reducing dependencies
2022-03-10 23:46:43 +01:00
Irmen de Jong
7d20458e82
fixed arrayliteral regression
2022-03-10 01:02:40 +01:00
Irmen de Jong
5a54066f81
unravel more dependency of SymbolTable on the ASt nodes (Expression), and fix initializing zp-allocated array
2022-03-09 01:42:05 +01:00
Irmen de Jong
f7aa0c45df
optimize imports
2022-03-05 15:54:42 +01:00
Irmen de Jong
094ecceaac
fix bug where non-inlined asmsub didn't always get a proper RTS, causing program crash
...
was caused by a change in 7.8; 8ae3bad6f7
"fix rts in empty asmsub"
2022-03-03 01:10:33 +01:00
Irmen de Jong
2812736ae5
preparing version 7.9
2022-03-03 00:42:53 +01:00
Irmen de Jong
6f87f8706c
can only call unary functions in pipe at this time
2022-03-02 23:16:40 +01:00
Irmen de Jong
fc1c3c6808
working on altered pipe syntax
2022-03-02 20:58:38 +01:00
Irmen de Jong
df35dfe3bf
added atari XEX output format with default $2000 load address
2022-02-26 15:36:22 +01:00
Irmen de Jong
891f870ec0
todo
2022-02-23 21:58:27 +01:00
Irmen de Jong
1b86117754
todo
2022-02-22 23:38:09 +01:00
Irmen de Jong
eeb3c968d6
streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher.
2022-02-22 22:43:14 +01:00
Irmen de Jong
406658a10f
reimplemented sys.memcopy and sys.memset on cx16 to work without kernal too
2022-02-22 21:07:19 +01:00
Irmen de Jong
6a0551cea1
added 'atari' compiler target beginnings (Atari 800 XL)
...
also default char and string encoding now taken from compiler target
2022-02-22 00:52:35 +01:00
Irmen de Jong
553f3b45d2
compile time calculated values of sin/cos routines fixed to be identical to the results of the run-time functions
2022-02-21 21:30:42 +01:00
Irmen de Jong
21e9723bb2
allow the last term in a pipe statement to be a variable, rewrites this as var = <rest of pipe>
2022-02-21 02:33:19 +01:00
Irmen de Jong
60b2c44a44
fix returntype handling of builtinfunctions, fix errors in pipe expressions
2022-02-21 01:44:29 +01:00
Irmen de Jong
c4fe3ecc0a
refactor
2022-02-20 22:04:18 +01:00
Irmen de Jong
2f18a8f6d0
introduced BuiltinFunctionCall (expression) node for codegen
2022-02-20 02:48:27 +01:00
Irmen de Jong
7a2164b4d0
introduced BuiltinFunctionCallStatement node for codegen
2022-02-18 23:27:11 +01:00
Irmen de Jong
0a43eae184
rework registerArgsViaStackEvaluation to use cpu hardware stack instead
2022-02-18 22:38:00 +01:00
Irmen de Jong
3117e2b2a3
more tweaks
2022-02-18 01:25:08 +01:00
Irmen de Jong
41fece4643
slight tweaks related to builtin functions in the ast
2022-02-17 01:25:13 +01:00
Irmen de Jong
7aa807ec7f
proper error if attempting to do a containment check against non const range, and some cleanup in asmgen
2022-02-16 00:39:19 +01:00
Irmen de Jong
2725c4ad4d
slight tweaks to zp and allocator
2022-02-12 00:15:52 +01:00
Irmen de Jong
c8cd6e9460
removed old @"screencodes" string encoding syntax (use sc:"hello" instead)
2022-02-11 22:07:14 +01:00
Irmen de Jong
0cd27d6129
fix empty lines in subroutine ast printing
2022-02-11 21:44:38 +01:00
Irmen de Jong
de6ef7ef5e
doc
2022-02-11 00:16:39 +01:00
Irmen de Jong
c13b7fd883
report free/occupied Zeropage space at end of compilation
2022-02-10 21:59:44 +01:00
Irmen de Jong
343f01d5e1
re-enabled unused variable removal from library modules (+fixed some @shared vars in libraries)
2022-02-10 03:10:47 +01:00
Irmen de Jong
08bacdd090
temp vars are now dynamically added to AST as needed
2022-02-10 02:52:47 +01:00
Irmen de Jong
41b1c80492
label name from memory() no longer interned as string var
2022-02-10 00:45:20 +01:00
Irmen de Jong
e5d7316e5d
streamlining non-zpvars asmgen using new mechanism
2022-02-10 00:09:09 +01:00
Irmen de Jong
98b2855b9c
cleanups
2022-02-09 16:35:52 +01:00
Irmen de Jong
f3c52c409f
variable zp allocation now only done in the allocator
2022-02-08 23:44:21 +01:00
Irmen de Jong
1307bdc612
more cleanups to the allocator
2022-02-08 22:46:49 +01:00
Irmen de Jong
8c2e6971fc
start using vars instead of callgraph (2)
2022-02-08 21:09:00 +01:00
Irmen de Jong
7d67005709
more rewrite variable allocation
2022-02-08 20:40:10 +01:00
Irmen de Jong
101fb0b8aa
some naming changes and cleanups
2022-02-06 23:14:44 +01:00
Irmen de Jong
10de7dc1f9
fixed the concurrent modification issue on zeropage when running unit tests in parallel, by not having machine targets be static objects
2022-02-06 21:29:06 +01:00
Irmen de Jong
6bdd81623f
cleaning up AsmGen interface
2022-02-06 17:07:03 +01:00
Irmen de Jong
8ae3bad6f7
fix rts in empty asmsub
2022-02-06 05:05:58 +01:00
Irmen de Jong
77de99b383
rts-check for non-inlined subroutines + var init adjustment when noreinit, moved out of codegen
2022-02-06 04:03:03 +01:00
Irmen de Jong
08e052380a
comments
2022-02-05 03:14:26 +01:00
Irmen de Jong
6916b8bff7
remove redundant properties
2022-02-03 23:59:24 +01:00
Irmen de Jong
69b9dfa468
fix invalid recursion warning for code referencing subroutine but not via a call
2022-02-01 23:09:52 +01:00
Irmen de Jong
ab61b8ba0a
doc ref
2022-02-01 21:47:53 +01:00
Irmen de Jong
5c8c64242f
callgraph: nameInAssemblyCode searches smarter (for unused())
2022-02-01 00:33:05 +01:00
Irmen de Jong
e773be2f58
remove no longer needed asmSymbol scoping prefixing, now asmSymbolName are identical to asmVarName
2022-01-31 01:47:22 +01:00
Irmen de Jong
f965804e6d
fix invalid optimization of returning a parameter variable in a subroutine
2022-01-28 16:44:42 +01:00
Irmen de Jong
ec078eba72
optimize w=msb(w) => w>>=8, w=lsb(w) ==> w&=$00ff
2022-01-28 16:11:52 +01:00
Irmen de Jong
7b3cd71085
fixed improper optimization of word<<8 and word>>8
2022-01-28 13:54:06 +01:00
Irmen de Jong
06128b5d07
optimize word&=$ff00 and word&=$00ff
2022-01-28 13:40:28 +01:00
Irmen de Jong
a170506356
simplify IdentifierReference equality check back to default (name+pos)
2022-01-27 23:32:55 +01:00
Irmen de Jong
5ecf2a3357
enable more optimizations for typecasted assignments. Fixed missing codegen for assigning bytes to words in certain cases.
2022-01-27 18:05:25 +01:00
Irmen de Jong
e2b8c069d7
check for missing '&' in string + value expressions (can't just add a value to a string)
2022-01-24 23:30:40 +01:00
Irmen de Jong
08db72903c
for long containment checks use a subroutine instead of huge cmp-table
2022-01-24 22:40:22 +01:00
Irmen de Jong
46f9fab140
library API change: string.find now returns index of character + carry bit status (instead of substring address)
2022-01-24 21:37:04 +01:00
Irmen de Jong
b7d06f2c0a
API change: added alignment parameter to memory() function
2022-01-24 18:58:57 +01:00
Irmen de Jong
118196a0bf
library API change: moved cx16.vload() to cx16diskio module
2022-01-24 18:31:18 +01:00
Irmen de Jong
586ce1fc80
tweak return's use of intermediate variable
2022-01-24 01:10:04 +01:00
Irmen de Jong
adb979df38
tweak comment
2022-01-23 22:34:05 +01:00
Irmen de Jong
3401cb5b4a
fixed compiler recursion crash when returning certain typecasted value
2022-01-23 19:13:20 +01:00
Irmen de Jong
ebf1f12e97
inferred type for len() is now more precise
2022-01-23 17:24:39 +01:00
Irmen de Jong
5766208207
fix compiler crash when initializing an array var with another array var
2022-01-23 14:23:34 +01:00
Irmen de Jong
4bf4771f08
fix @requirezp in astToSource. Fix sometimes allocating zeropage variables in normal ram.
2022-01-23 13:42:52 +01:00
Irmen de Jong
0e87db9eb7
fix invalid size copied when initializing arrays in Zeropage
2022-01-23 13:00:01 +01:00
Irmen de Jong
1e053783f3
fix invalid size copied when assigning non-byte arrays
2022-01-23 02:42:36 +01:00
Irmen de Jong
7afc96112b
now correctly requires using & (address-of) when assigning the address of a label or subroutine, used to generate invalid code when it was omitted
2022-01-23 02:23:30 +01:00
Irmen de Jong
7bb41a30ed
fixed compiler crash when assigning number larger than 65535
2022-01-23 01:44:16 +01:00
Irmen de Jong
3d1b0eb843
fixed compiler crash when using cx16.r0H as function call argument
2022-01-23 01:28:16 +01:00
Irmen de Jong
5b9af0b5ae
tweaks
2022-01-21 23:38:54 +01:00
Irmen de Jong
9219ec539d
allow "goto pointervar" for indirect jumps
2022-01-21 22:55:59 +01:00
Irmen de Jong
c8bd57cd4d
fixed signature of mouse_get(): it returns the buttonstatus in A. Added convenience cx16.mouse_pos() routine.
2022-01-21 22:06:17 +01:00
Irmen de Jong
53bf8c09fd
fix screencode encoding selection
2022-01-19 21:37:27 +01:00
Irmen de Jong
651c383668
refactor encoder to be the same for all 3 machine targets now
2022-01-19 21:21:33 +01:00
Irmen de Jong
9ed7587e3e
document new string encoding syntax
2022-01-19 21:21:33 +01:00
Irmen de Jong
674295e800
improve error reporting from string encoders
2022-01-19 21:21:33 +01:00
Irmen de Jong
6b02f2eea0
implement iso encoding and new string encoding syntax, fixes #38
2022-01-19 21:21:32 +01:00
Irmen de Jong
3b59592110
generalize string encoding flag into enum
2022-01-18 21:21:49 +01:00
Irmen de Jong
72640ae058
no longer add nops around breakpoint for vice
2022-01-17 22:12:58 +01:00
Irmen de Jong
d916027e75
labels no longer start with '_' fixes #62
2022-01-17 22:03:53 +01:00
Irmen de Jong
8966d2aa06
comments and prepare new version 7.7
2022-01-16 23:03:00 +01:00
Irmen de Jong
de7ea04f54
when zp option = dontuse, print error for any variable with @requirezp
2022-01-16 18:13:24 +01:00
Irmen de Jong
bf71fabe0e
fix codegen mistake for zp allocated loop vars
2022-01-16 18:09:09 +01:00
Irmen de Jong
b3368acb33
todos to fix broken examples
2022-01-16 17:57:47 +01:00
Irmen de Jong
87220c6697
docs for @requirezp
2022-01-16 17:20:36 +01:00
Irmen de Jong
fb4c1473c5
array and string initialization in zeropage
2022-01-16 17:20:36 +01:00
Irmen de Jong
2bb2502d20
added @requirezp to syntax files
2022-01-16 17:20:36 +01:00
Irmen de Jong
0f0f40bff3
improved ForloopAsmGen loopvar zp allocation
2022-01-16 17:20:36 +01:00
Irmen de Jong
a798fe72d3
cx16 reserved zp vars (virtual registers)
2022-01-16 17:20:36 +01:00
Irmen de Jong
7dd2517f67
fix Zp allocation issues
2022-01-16 17:20:36 +01:00
Irmen de Jong
641477d6f6
add @requirezp and allow str/array to be on zp (with warning)
2022-01-16 17:20:32 +01:00
Irmen de Jong
e425c4cca8
optimizing pipe codegen
2022-01-11 23:17:35 +01:00
Irmen de Jong
056ec986c2
use var initializer assignments in a clearer way
2022-01-11 00:34:44 +01:00
Irmen de Jong
b29c3152db
Assignment: make its origin explicit
2022-01-10 02:25:02 +01:00
Irmen de Jong
3831679772
VarDecl: make its origin explicit
2022-01-10 01:53:03 +01:00
Irmen de Jong
596f9566d8
todo
2022-01-10 01:00:50 +01:00
Irmen de Jong
124befe9d6
slightly optimized code for assigning boolean expressions such as `b = xx>99
`
2022-01-09 18:49:44 +01:00
Irmen de Jong
895534f32b
don't remove dead variable assignments if they are a function call
2022-01-09 18:41:01 +01:00
Irmen de Jong
50c16fe6de
code size optimization: don't copy floats with inlined copy code but use copy_float routine
2022-01-09 16:18:13 +01:00
Irmen de Jong
b092d1a5d3
fixed code gen issue for uword >= comparison
2022-01-09 13:23:29 +01:00
Irmen de Jong
a9b45630d7
optimized code for variable comparisons to zero
2022-01-09 13:10:01 +01:00
Irmen de Jong
c1a39c269e
optimized code for stack eval comparisons with zero
2022-01-09 03:19:49 +01:00
Irmen de Jong
7135205299
fix codegen bug for pipe expressions to actually return correct value and not corrupt X register
2022-01-08 17:41:46 +01:00
Irmen de Jong
d99d977d2b
fix more typecasting issues
2022-01-08 17:04:25 +01:00
Irmen de Jong
7dd7e562bc
pipes also as expressions, cleanup codegen, fix various typecasting issues
2022-01-08 13:45:19 +01:00
Irmen de Jong
75d857027e
cleanup of Pipe codegen
2022-01-08 01:33:40 +01:00
Irmen de Jong
8f3df3039a
added pipe operator `|>
`
2022-01-06 22:54:18 +01:00
Irmen de Jong
02c315c194
add missing unit tests and type checking for 'in' expression
2022-01-06 00:01:49 +01:00
Irmen de Jong
b697375573
add note about unspecified order of evaluation of expressions and subroutine call arguments
2022-01-05 23:21:45 +01:00
Irmen de Jong
c57ef7725e
preparing v7.6
2022-01-04 20:40:35 +01:00
Irmen de Jong
c3bd904f41
todo
2022-01-02 23:46:36 +01:00
Irmen de Jong
74257163b1
fix that memory("name", ...) also allocates a STR variable for the name
2022-01-02 17:07:04 +01:00
Irmen de Jong
7bc75fd220
fix that memory("a b c", ...) produces invalid symbol
2022-01-02 16:11:53 +01:00
Irmen de Jong
a23281afab
added experimental -noreinit option
2022-01-01 16:35:36 +01:00
Irmen de Jong
9e90dbdde6
slight optimization of repeat loop (> 256 iters) code generation on 65c02 cpu
2022-01-01 14:42:37 +01:00
Irmen de Jong
1e8d8e40a2
slight optimization of repeat loop (0-256 iters) code generation on 65c02 cpu
2021-12-31 14:06:35 +01:00
Irmen de Jong
9b91c427a1
add porting guide
...
sizeof(pointer) is hardcoded as 2 now
2021-12-31 00:16:23 +01:00
Irmen de Jong
196c5e9c24
v39->r39
2021-12-30 19:05:56 +01:00
Irmen de Jong
5275c2e35f
todo porting guide
2021-12-30 18:20:09 +01:00
Irmen de Jong
5267e06969
added -asmlist cli option to produce assembler listing output
2021-12-30 14:42:09 +01:00
Irmen de Jong
9f8c70b326
fix warning about testing multiple values
2021-12-30 00:49:36 +01:00
Irmen de Jong
4be3d63c0e
slight optimization of if-in
2021-12-29 18:13:43 +01:00
Irmen de Jong
de6ce4a46e
add "X in [1,2,3]" expression (efficient containment check)
2021-12-29 17:26:00 +01:00
Irmen de Jong
7a9e5afb93
fix: for loop over array literal no longer crashes the compiler
2021-12-28 17:51:38 +01:00
Irmen de Jong
b2876b0a03
add a suggestion to use when statement if it seems appropriate
2021-12-28 16:38:12 +01:00
Irmen de Jong
6e11b8ada1
GoSub no longer inherits from Jump node, fixes subtle ast/codegen bugs related to jsrs
2021-12-28 01:55:13 +01:00
Irmen de Jong
79405f47f6
fix if-gosub
2021-12-28 01:24:31 +01:00
Irmen de Jong
1c7c4fc3b0
optimized if-goto codegeneration
2021-12-28 00:42:00 +01:00
Irmen de Jong
9906b58818
tweak while desugaring, moved postfixexpr optimizations to VariousCleanups regardless of optimizer setting because asmgen requires these for conditional expressions
2021-12-27 12:41:26 +01:00
Irmen de Jong
371f084884
comment
2021-12-27 02:17:04 +01:00
Irmen de Jong
c55fdd9834
removed special code generation for while and util expression (replaced by jumps)
...
also added exhaustive parent node checker in validation step
2021-12-27 02:04:28 +01:00
Irmen de Jong
1462c57d0c
no need for intermediary returnvalue var for prefix expressions
2021-12-16 21:00:38 +01:00
Irmen de Jong
77c2b2b326
fix position of @shared in array var declarations so that the order is now type[] @shared
2021-12-16 20:36:05 +01:00
Irmen de Jong
3cf9b9d9a5
code size optimization: subroutine calls with 2 byte arg will pass it via A/Y registers instead of separate param assignments at every call site
2021-12-16 01:48:22 +01:00
Irmen de Jong
08f87c321f
fixed capitalization of operator sets to be consistent with other sets names
2021-12-15 23:43:14 +01:00
Irmen de Jong
890327b381
the returnvalue of the diskio.load() function family now is just the last load address+1 (like kernal's LOAD routine).
...
This fixes the inconsistent attempt to calculate a size, just let the caller do this if required.
Added a small helper function in cx16diskio to do this for loads that span multiple banks.
2021-12-14 23:54:42 +01:00
Irmen de Jong
b21f7411dd
fix compiler crash when trying to concatenate string var and string literal.
2021-12-14 23:07:46 +01:00
Irmen de Jong
5df623bd2e
doc
2021-12-14 22:40:03 +01:00
Irmen de Jong
35998142fe
version 7.5
2021-12-10 20:18:17 +01:00
Irmen de Jong
33061aaa0d
fix: allow scoped variables such as cx16.rX as loop variable in forloops
2021-12-10 14:59:04 +01:00
Irmen de Jong
e342311bef
fix wrong code for inplace modification of a pointervariable's memory value
2021-12-10 14:48:53 +01:00
Irmen de Jong
3d743a1ba1
added more constfolding
2021-12-09 23:32:48 +01:00
Irmen de Jong
d8d56b195f
comments
2021-12-09 21:13:13 +01:00
Irmen de Jong
c812b5ee09
elaborate pointervar indexing a bit more in the docs
2021-12-07 22:25:14 +01:00
Irmen de Jong
547b1d3720
comment corrections
2021-12-06 23:33:18 +01:00
Irmen de Jong
84f75f4156
tweaked some more .getOrElse
2021-12-06 21:22:00 +01:00
Irmen de Jong
ff69da3fa2
error when 'else' choice in when statemetn isn't the last one, also generate slightly better code for when statements
2021-12-05 21:54:46 +01:00
Irmen de Jong
edffe92a24
astchecker is smarter in detecting rts in inline assembly
2021-12-05 21:28:31 +01:00
Irmen de Jong
b6fe40ada4
fix: cx16.r0 now properly treated as zeropage var on cx16 so @(cx16.r0) won't copy it to temp var anymore
2021-12-05 21:21:41 +01:00
Irmen de Jong
81deed143b
fix grammar problem: \x and \u escape sequences didn't work in character literals.
2021-12-05 18:11:40 +01:00
Irmen de Jong
397f98513b
optimize loading A from pointervar
2021-12-04 05:36:48 +01:00
Irmen de Jong
e545ea9504
fix and optimize storing A into pointervar
2021-12-04 04:43:58 +01:00
Irmen de Jong
9a68864b67
version 7.5-dev
2021-12-04 00:18:44 +01:00
Irmen de Jong
72d7178762
added diskio.load_raw() to load headerless files
2021-12-04 00:07:21 +01:00
Irmen de Jong
1f346230e3
release 7.4
2021-11-30 22:50:12 +01:00
Irmen de Jong
a2860a7c8c
todo
2021-11-30 22:45:43 +01:00
Irmen de Jong
ea0fe8d3d2
PrefixExpression doesn't cause clobber risk
2021-11-30 02:32:37 +01:00
Irmen de Jong
2560042ac7
fix compiler crashes on in-place operations on cx16 registers or invalid signed types
2021-11-30 02:27:37 +01:00
Irmen de Jong
9ecf95b075
fix syntaxerror in const processing of ranges if it contained variables
2021-11-29 23:36:41 +01:00
Irmen de Jong
7748c261da
rsave/rrestore moved from sys to builtin function to solve the stack related problem when calling it as a regular subroutine
2021-11-29 23:13:04 +01:00
Irmen de Jong
a2db44f80c
also consider Y register for clobber check for functioncall arguments
2021-11-29 22:09:05 +01:00
Irmen de Jong
b438d8aec0
fix invalid range size check when stepval is not a positive integer
2021-11-29 02:01:19 +01:00
Irmen de Jong
4ac169b210
formatting
2021-11-29 01:25:21 +01:00
Irmen de Jong
32068a832a
split some additional binary expressions to avoid stack-based evaluation
2021-11-28 18:27:28 +01:00
Irmen de Jong
0a568f2530
fix the check of double-defined subroutine variables
2021-11-28 12:52:32 +01:00
Irmen de Jong
c52aa648c0
use an AnonymousScope to contain GoSub changes instead of adding separate statements
2021-11-28 12:09:13 +01:00
Irmen de Jong
7c5ec1853d
nice error message if pop() argument is wrong
2021-11-28 02:20:35 +01:00
Irmen de Jong
54025d2bf5
small refactor and spelling fixes
2021-11-27 14:49:18 +01:00
Irmen de Jong
e4648e2138
proper rounding of builtin functions that return int from float
2021-11-26 20:32:12 +01:00
Irmen de Jong
110e047681
replace subroutine calls (statement) by GoSub
2021-11-26 19:47:01 +01:00
Irmen de Jong
ff715881bc
allow scoped identifiers to reference a subroutine parameter directly.
...
also for asmsubroutines, but the asm generation for that is not yet done.
2021-11-21 23:21:39 +01:00
Irmen de Jong
e86246a985
todo
2021-11-21 14:00:19 +01:00
Irmen de Jong
625aaa02eb
documented the compiler's command line options in more detail
2021-11-21 13:53:22 +01:00
Irmen de Jong
787e35c9f3
asm optimizer can now also see of a symbol reference if it is in IO space or not (to a certain extent), so that these instructions are no longer optimized away
2021-11-21 13:12:51 +01:00
Irmen de Jong
8887e6af91
fix substituting 0 only if its actually the same variable that's substituted
2021-11-21 12:34:57 +01:00
Irmen de Jong
3c39baf1d6
don't optimize seemingly redundant assembly instructions away that manipulate IO memory space
2021-11-21 03:24:03 +01:00
Irmen de Jong
b292124f3c
replaced many short/int values by unsigned types if appropriate
2021-11-21 00:55:56 +01:00
Irmen de Jong
107935ed31
add some more const folding patterns
2021-11-20 22:47:49 +01:00
Irmen de Jong
adfaddbcf4
give a nicer error when given a wrong compilation target.
2021-11-20 18:30:55 +01:00
Irmen de Jong
74db5c6be7
fix referencesIdentifier() and better removal of unnecessary assignments
2021-11-20 17:41:41 +01:00
Irmen de Jong
f9399bcce7
r=(q+r)-c and r=q+(r-c) are now both also 'augmentable', and BinExprSplitter doesn't check for associativeOperator anymore
2021-11-20 02:03:32 +01:00
Irmen de Jong
b334d89715
refactor and fix the way memory addresses are checked to be in IO space or regular ram
2021-11-18 22:47:58 +01:00
Irmen de Jong
4f5d36a84d
optimization added: bitwise operations with a negative constant number -> replace the number by its positive 2 complement
2021-11-18 02:51:42 +01:00
Irmen de Jong
8f379e2262
give an error when initializing an integer var with a float value instead of silently rounding
2021-11-18 01:56:11 +01:00
Irmen de Jong
fa11a6e18b
removed faulty and too aggressive assembly optimization of double-store
2021-11-18 01:43:22 +01:00
Irmen de Jong
52bedce8f4
added test for assignment.isAugmented
2021-11-18 01:05:16 +01:00
Irmen de Jong
4c82af36e6
fix improperly changed behavior about =0 initializer
2021-11-18 00:17:22 +01:00
Irmen de Jong
dafa0d9138
fix compiler crash bug due to reused ast expression nodes. Now all (relevant) Nodes have a copy() function to make a clone.
2021-11-17 23:05:59 +01:00
Irmen de Jong
6af3209d4d
add more const foldings
2021-11-17 00:57:00 +01:00
Irmen de Jong
964e8e0a17
update to Kotlin 1.6.0
2021-11-16 22:36:23 +01:00
Irmen de Jong
1f60a2d8b9
comments
2021-11-15 01:30:12 +01:00
Irmen de Jong
c80df4140b
until-loop condition now also simplified to avoid stack-eval
2021-11-14 22:51:02 +01:00
Irmen de Jong
ab2d1122a9
conditional expressions are optimized more intelligently (simple ones are not split off in separate assignments)
2021-11-14 12:38:56 +01:00
Irmen de Jong
5190594c8a
added several more assembly-level optimizations to remove redundant instructions
2021-11-14 12:23:46 +01:00
Irmen de Jong
c858ceeb58
compiler shouldn't use cx16.r15 as temp var
2021-11-14 02:38:59 +01:00
Irmen de Jong
f0f52b9166
optimize typecasted binary expression to avoid even more estack use. also fix wrong parent crash in removal of unused variable's assignments.
2021-11-13 14:22:37 +01:00
Irmen de Jong
00c6f74481
tweak temp float
2021-11-13 12:56:59 +01:00
Irmen de Jong
69f4a4d4f8
tweak expr.typecastTo() a bit
2021-11-11 00:15:09 +01:00
Irmen de Jong
222bcb808f
optimize load-store-load combo in output asm
2021-11-10 23:47:35 +01:00
Irmen de Jong
8df3da11e3
add cosr8, sinr8, cosr16 and sinr16 builtin functions that take a degree 0..179 (= 0..358 in 2 degree steps)
...
to more easily scale halves/quarters etc of a circle than possible with the ones that take 0..255 'degrees'.
2021-11-09 23:39:26 +01:00
Irmen de Jong
b909facfe5
fix compiler stackoverflow crash on certain typecasted expressions containing floats.
2021-11-09 19:31:19 +01:00
Irmen de Jong
7780d94de1
discovered crash related to float typecasting in asm assignment codegen
2021-11-09 03:45:07 +01:00
Irmen de Jong
f2c440e466
new sin/cos idea
2021-11-09 02:38:43 +01:00
Irmen de Jong
4937e004b5
fix compiler crash where it used wrong datatype in split assignment
...
fixes crash for "ubyte bb ;; uword ww ;; bb = not bb or not ww"
2021-11-09 01:13:23 +01:00
Irmen de Jong
4cb383dccb
discovered crash about storage size mismatch
2021-11-08 21:44:06 +01:00
Irmen de Jong
857724c7e6
attempt to make if-statement not use stack eval anymore
2021-11-08 19:07:36 +01:00
Irmen de Jong
60627ce756
kotest migration done, fixes #70
2021-11-08 16:19:24 +01:00
Irmen de Jong
7e8db16e18
moved to kotest assertions in compilerAst module tests
2021-11-07 21:18:18 +01:00
Irmen de Jong
1fbbed7e23
remove unittest machinery from modules that don't have tests
2021-11-07 17:34:14 +01:00
Irmen de Jong
984272beb4
migrated compilerAst module to KoTest (but not finished with the assertions yet)
2021-11-07 17:25:53 +01:00
Irmen de Jong
72a7e61fd0
version 7.2
2021-11-06 23:42:13 +01:00
Irmen de Jong
f40620aa25
"not x" as a condition (if, while, until) is optimized into "x==0", this avoids calculating the value
2021-11-06 23:25:32 +01:00
Irmen de Jong
57a9fed42b
todo
2021-11-06 19:09:33 +01:00
Irmen de Jong
74456d1135
optimized prefix-expression in to use stack evaluation less
2021-11-06 17:57:00 +01:00
Irmen de Jong
be73739c62
todo
2021-11-03 23:08:11 +01:00
Irmen de Jong
eea3fb48a8
add command line option 'optfloatx' to explicitly re-enable float expr optimization as this can increase code size significantly.
...
The output size of the various example programs using floating point, when not using this optimization, has been reduced significantly.
The resulting code runs a (tiny) bit slower though.
2021-11-03 22:52:08 +01:00
Irmen de Jong
b4fa72c058
fix parent node linkage for reading array parameter
2021-11-03 21:57:31 +01:00
Irmen de Jong
b0a865b0f1
update todo
2021-11-02 23:55:50 +01:00
Irmen de Jong
3410aea788
fix regression: don't add 0 initializer when variable is assigned to anyway (or is loopvar in a for-loop)
2021-11-02 21:23:59 +01:00
Irmen de Jong
bc0a133bb1
doc
2021-11-02 20:24:45 +01:00
Irmen de Jong
1110bd0851
fix vardecl initialization value to not use stack eval anymore but separate assignment
...
(this causes the optimized assignment code gen to be used instead)
but some programs now end up larger in output size
2021-11-01 00:24:15 +01:00
Irmen de Jong
1b576f826d
remove unneeded sibling methods
2021-10-31 16:50:15 +01:00
Irmen de Jong
fe17566370
improved reporting of slow stack based evaluation code
2021-10-31 14:18:49 +01:00
Irmen de Jong
7b69df4db2
todos
2021-10-30 00:38:48 +02:00
Irmen de Jong
4d5bd0fa32
simplify ZeroPage reserved locations handling a bit
2021-10-29 17:34:42 +02:00
Irmen de Jong
0b5ddcdc9b
split out the code generator into own project submodule
2021-10-29 05:00:30 +02:00
Irmen de Jong
f21dcaa6fb
split out the code optimizers into own project submodule
2021-10-29 02:42:10 +02:00
Irmen de Jong
d4513364fb
fix compiler crash when file on command line doesn't exist
2021-10-27 00:23:54 +02:00
Irmen de Jong
f4186981fd
todo
2021-10-26 23:30:48 +02:00
Irmen de Jong
4668932bac
todo
2021-10-19 23:38:07 +02:00
Irmen de Jong
502bf90007
comments
2021-10-19 01:12:28 +02:00
Irmen de Jong
cf0e395921
got rid of SourceCode.pathString() and the 'need' to strip < and >
2021-10-16 17:15:22 +02:00
Irmen de Jong
6ef438ce50
todo
2021-10-16 15:08:36 +02:00
Irmen de Jong
06defd0cb0
paths are now always relative
2021-10-16 02:43:22 +02:00
Irmen de Jong
0f80897c50
todo
2021-10-15 01:02:32 +02:00
Irmen de Jong
57bb1c2c0d
performance optimized checks against short ranges of values
2021-10-15 00:51:45 +02:00
Irmen de Jong
7b35b414e8
tweak check of DataType against multiple values
2021-10-15 00:39:42 +02:00
Irmen de Jong
761aac7a23
replace inferredType.istype() by infix form
2021-10-15 00:28:23 +02:00
Irmen de Jong
15a02d7664
making InferredType easier to use
2021-10-15 00:18:13 +02:00
Irmen de Jong
16ed68c1ec
Module.name is now derived back from the source's origin string
2021-10-14 23:58:14 +02:00
Irmen de Jong
4d27c2901b
fix weird error printing when doing %import textio.p8
2021-10-13 21:55:51 +02:00
Irmen de Jong
855e18b31c
fix SourceCode to properly set the sourceName of a resource or string as well
2021-10-13 21:46:38 +02:00
Irmen de Jong
d790878af6
enabled test
2021-10-13 20:28:42 +02:00
Irmen de Jong
6070afa6b6
cleanup SourceCode class
2021-10-13 19:16:01 +02:00
Irmen de Jong
975594703d
doc
2021-10-13 18:21:48 +02:00
Irmen de Jong
6b8c3ef614
renamed command line option -libdirs to -srcdirs
...
this more clearly separates this meaning from the internal library modules
2021-10-13 18:16:51 +02:00
Irmen de Jong
ca3a990f9e
todo
2021-10-13 01:33:29 +02:00
Irmen de Jong
66574d058a
renamed InferredType.typeOrElse to getOr()
...
this is closer to the convention of most functional return types
2021-10-13 00:21:38 +02:00
Irmen de Jong
85897ef8cd
launch box16 emulator with the vice monlist file that contains symbols+breakpoints
2021-07-06 22:27:47 +02:00
Irmen de Jong
6367c6d116
add support for second alternative emulator (box16 in case of cx16 target)
2021-07-05 22:47:51 +02:00
Irmen de Jong
049dbf5a78
improve compiler error when defining duplicate block names
2021-07-04 15:14:39 +02:00
Irmen de Jong
95a62fcdd1
tidy up todo doc
2021-07-02 21:47:27 +02:00
Irmen de Jong
7880ac1909
wording and version
2021-06-24 21:34:11 +02:00
Irmen de Jong
fd2bbd2b59
no longer allow subroutine name same as its block name due to asm symbol scoping issues
2021-06-12 17:31:09 +02:00
Irmen de Jong
127c470746
add some explanation about Cx16 v38 - v39 issue
2021-06-12 15:48:04 +02:00
Irmen de Jong
c5bfef4264
slight improvement on scope doc, added doc example for %asminclude/%asmbinary
2021-06-09 23:46:07 +02:00
Irmen de Jong
19e99204b9
fix asm symbol name scoping bug and add unit tests for this
2021-06-04 22:42:28 +02:00
Irmen de Jong
3a2498401d
working on unit tests for symbol scope bug
2021-06-03 21:21:38 +02:00
Irmen de Jong
e7f6f0950f
identified asm symbol name scoping bugs
2021-06-01 22:21:50 +02:00
Irmen de Jong
d4b69ac79c
improved repeat counter vars allocation (re-use var if possible)
2021-05-30 15:30:34 +02:00
Irmen de Jong
31ae9e1243
refactor repeat loop counter var creation into single routine
2021-05-22 13:01:51 +02:00
Irmen de Jong
29e2d4e0c8
give error when passing invalid command line option
2021-05-20 23:34:20 +02:00
Irmen de Jong
0e614ad6fc
added @shared flag to vardecl to mark variable as shared with assembly code elsewhere, to not have it optimized away
2021-05-19 01:19:25 +02:00
Irmen de Jong
ca1a8cd617
improve doc about string (im)mutability
2021-05-19 00:15:17 +02:00
Irmen de Jong
ba96a637be
remove strdedup compiler argument again
...
(string deduplication is the default again but only for known-const strings, i.e. string literals)
2021-05-18 23:52:43 +02:00
Irmen de Jong
6b7216f4ec
todo
2021-05-17 19:00:20 +02:00
Irmen de Jong
ca61248861
printing 2-letter strings is now only optimized into direct CHROUT if it's a const string literal
2021-05-16 15:00:40 +02:00
Irmen de Jong
0416aacbbd
fix %asminclude by removing scopelabel argument and improving docs to remove false promise about labels
2021-05-16 00:14:57 +02:00
Irmen de Jong
ae5d7705bb
allow correct parsing of source files that don't end in a EOL character. Fixes #40
2021-05-14 17:14:44 +02:00
Irmen de Jong
25d80f4df1
added compiler option to choose string literal deduplication yes/no -- default changed to NO
2021-05-13 00:35:22 +02:00
Irmen de Jong
dae59238cd
fix array type checking crash when attempting to use str literal to initialize a byte array.
...
Fixes #34
2021-05-07 00:04:29 +02:00
Irmen de Jong
8736da1a21
strings of 1 and 2 length no longer optimized into one call to CHROUT - also upgrade to kotlin 1.5.0
2021-05-06 23:46:18 +02:00
Irmen de Jong
d906fcea0e
refactor some type checks
2021-04-30 00:09:15 +02:00
Irmen de Jong
71fec4c555
added a few more simple special codegen segements for the logic operators on a memmory-read
2021-04-29 19:38:42 +02:00
Irmen de Jong
5ee36c897d
todo
2021-04-29 00:57:32 +02:00
Irmen de Jong
4aba0c7405
unused variables are removed more aggressively (no longer checking asm blocks for their names)
2021-04-29 00:48:16 +02:00
Irmen de Jong
8d3d5f726a
removed Datatype.STRUCT
2021-04-29 00:13:17 +02:00
Irmen de Jong
a9a7068818
removed support for structs. It was too much hassle and complexity and subtle bugs.
2021-04-29 00:01:20 +02:00
Irmen de Jong
3bf335e0a0
todo
2021-04-27 23:13:46 +02:00
Irmen de Jong
a086d6e009
allow labels also in blocks instead of only in subroutines
2021-04-18 23:03:18 +02:00
Irmen de Jong
e93701f50e
fix compiler error when initializing var with memory(...) in block scope instead of subroutine
2021-04-17 15:49:41 +02:00
Irmen de Jong
56fec674c5
actually not simplifying if-code generation, leads to larger code at the moment
2021-04-13 00:03:22 +02:00
Irmen de Jong
54d92a027a
fix problems with moving vardecls from inner scope to subroutine scope
2021-04-12 22:53:25 +02:00
Irmen de Jong
319ac3a641
preparing optimizations for if statements
2021-04-12 03:34:58 +02:00
Irmen de Jong
0a03c46351
preparing optimization plan for if statements
2021-04-12 02:37:15 +02:00
Irmen de Jong
91e421d961
optimize x % p where p=power-of-2, into just x & (p-1)
2021-04-08 22:21:16 +02:00
Irmen de Jong
1a64cb38d5
fix compiler crash with assigning certain array values as vardecl initializer
2021-04-08 19:21:17 +02:00
Irmen de Jong
e5ff61f201
allow inlining of subroutines with parameters, and fix inlining of subroutines with variables
2021-04-07 23:38:25 +02:00
Irmen de Jong
123473dfc8
cleanup
2021-04-06 00:16:29 +02:00
Irmen de Jong
d9eccd4fba
set correct rom banks when using floats
2021-04-05 23:21:07 +02:00
Irmen de Jong
64c85b9617
fix cx16 rom v39 float changes
2021-04-05 22:54:40 +02:00
Irmen de Jong
3e3b0bcd8b
callgraph improved unused node checking
2021-04-05 20:45:18 +02:00
Irmen de Jong
75d5117a2d
fix struct flattening parent node mismatch
2021-04-05 00:30:42 +02:00
Irmen de Jong
374e2b311d
refactoring unused code removal and noModification
2021-04-04 16:36:33 +02:00
Irmen de Jong
d582d1cc42
fix inlining subroutines multiple times
2021-04-02 21:23:40 +02:00
Irmen de Jong
6fdc733941
inlining subroutines that contain variable declarations is now possible (gives a warning though)
2021-04-02 18:30:32 +02:00
Irmen de Jong
422b390c48
fix ast node duplication/reference bug in certain optimizers
2021-04-02 16:56:52 +02:00
Irmen de Jong
8e26e38ecc
fix RTS-issue with inlined return statement
2021-04-01 23:30:19 +02:00
Irmen de Jong
02e12d8575
improvements for inlined subroutines: fix identifier scoping
2021-04-01 23:16:04 +02:00
Irmen de Jong
fe2954ce08
todo
2021-04-01 22:10:04 +02:00
Irmen de Jong
0991131fa8
don't stript unused asmsub definitions
2021-03-21 19:55:21 +01:00
Irmen de Jong
ca868ae19e
added cx16.vload() (like the VLOAD basic instruction)
2021-03-20 02:39:53 +01:00
Irmen de Jong
3e286dd14c
move test
2021-03-18 19:34:54 +01:00
Irmen de Jong
11247d52b1
fix bugs in word <= and >= comparisons
2021-03-18 19:20:48 +01:00
Irmen de Jong
b30b8b7368
fix bug in float < and > comparisons
2021-03-18 01:41:54 +01:00
Irmen de Jong
7f21d89fea
moved test programs to test folder in compiler module
2021-03-17 20:15:16 +01:00
Irmen de Jong
6381d2b6ac
improve word '<', word (u)word '<=' , uword '>=' codegen
2021-03-16 18:15:47 +01:00
Irmen de Jong
496a3b0d2c
todo
2021-03-15 18:56:25 +01:00
Irmen de Jong
6922333755
add a cmp(x,y) function that returns no value but only sets the status bits based off the comparison (can be used with a conditional jump afterwards)
2021-03-13 15:11:22 +01:00
Irmen de Jong
1c1da8e38e
additional optimization to the bresenham line routines
2021-03-10 18:49:40 +01:00
Irmen de Jong
50a306f492
line drawing fixes
2021-03-09 22:11:30 +01:00
Irmen de Jong
e4bca5fe47
version
2021-03-06 23:07:30 +01:00
Irmen de Jong
2950d26c8e
array and struct value assignments now via memcopy instead of assignment per element
2021-03-06 22:10:03 +01:00
Irmen de Jong
4f8d4a9585
use memcopy to assign arrays
2021-03-06 19:01:16 +01:00
Irmen de Jong
2770254fd9
removed inline assembly from bobs demo
2021-03-06 14:31:26 +01:00
Irmen de Jong
de04bd8cfa
added more convenient number-to-string functions to conv library
2021-03-06 13:47:27 +01:00
Irmen de Jong
076a547f91
added more convenient number-to-string functions to conv library
2021-03-06 13:34:57 +01:00
Irmen de Jong
dffd0a2706
added fastrnd8() with the old rnd() generator code in it, new code for rnd() uses the much better rndw() generator now.
2021-03-05 22:49:14 +01:00
Irmen de Jong
6c66f86103
todo
2021-03-05 21:07:35 +01:00
Irmen de Jong
26502c949a
add unlimited bobs example
2021-03-05 19:05:13 +01:00
Irmen de Jong
9fe32c1c34
codegen uses 'bra' on 65c02 instead of 'jmp'
2021-02-28 16:46:08 +01:00
Irmen de Jong
7e3e18a5c7
deal with 'bra' better on 65c02
2021-02-28 16:20:03 +01:00
Irmen de Jong
2b435fe6a5
vtui example updated to vtui 0.6
2021-02-27 03:30:21 +01:00
Irmen de Jong
cd500fee8c
wording
2021-02-25 00:52:27 +01:00
Irmen de Jong
1bd32c0f19
added animal guessing game example
2021-02-24 22:58:16 +01:00
Irmen de Jong
d14dac3872
got rid of final traces of heapid, fixed compiler warnings
2021-02-24 00:01:04 +01:00
Irmen de Jong
6e65cb2c0a
added sounds to cx16 tehtriz
2021-02-23 01:29:45 +01:00
Irmen de Jong
edf9a500d3
kernel -> kernal
2021-02-21 22:48:06 +01:00
Irmen de Jong
001d01fdaf
slight tweak to 64tass .cpu to enable wdc65c02 variant on cx16 with its extra opcodes
2021-02-21 22:45:23 +01:00
Irmen de Jong
a95677564e
changed system irq/rasterirq setting routines
2021-02-21 22:23:50 +01:00
Irmen de Jong
5540482888
compiler error for duplicate when choice labels
2021-02-21 21:26:15 +01:00
Irmen de Jong
b5289511ba
don't remove empty when choice from the list of choices!
2021-02-21 15:11:19 +01:00
Irmen de Jong
b6ded8501f
added 'align_word' and 'align_page' block options to control block start address alignment in the assembler
2021-02-21 01:24:44 +01:00
Irmen de Jong
781915d2cf
reducing dependencies
2021-02-20 17:54:33 +01:00
Irmen de Jong
d23c2eed86
test
2021-02-20 16:58:24 +01:00
Irmen de Jong
15695a304e
start address of blocks without explicit memory address, is now word-aligned in memory
2021-02-20 03:06:00 +01:00
Irmen de Jong
0ed3d951a7
don't require carry parameter Pc to asmsubs to be last
2021-02-20 02:27:57 +01:00
Irmen de Jong
b543cc34cd
no longer warn about removing unused asmsubs
2021-02-18 01:52:56 +01:00
Irmen de Jong
791dbbab9b
fixed block label itself not getting the correct memory address in the assembly
...
fixed %asmbinary relative path issues
2021-02-18 01:28:33 +01:00
Irmen de Jong
2f97aedc3c
fixed invalid removal of string tag from memory()
2021-02-16 23:58:31 +01:00
Irmen de Jong
ab544ee965
improved string constant interning; no longer output duplicate strings in the Ast
2021-02-16 23:43:38 +01:00
Irmen de Jong
194fbcdd91
todos
2021-02-15 04:41:33 +01:00
Irmen de Jong
1e3930aae2
fix bug in evaluating logical expressions if one of the operands was not boolean 1 or 0
2021-02-14 18:29:05 +01:00
Irmen de Jong
53f0318187
version 6.1
2021-02-14 00:07:45 +01:00
Irmen de Jong
f6136891cc
optimized for loop over const bytes, fixed downto 1
2021-02-13 13:46:02 +01:00
Irmen de Jong
1e22170302
added graphical starmaps to textelite
2021-02-11 00:23:36 +01:00
Irmen de Jong
321fdd10d1
ported tehtriz to Cx16
2021-02-10 21:55:14 +01:00
Irmen de Jong
7c09ac632c
got rid of the --longOptionNames in the cli argparser
2021-02-10 21:26:46 +01:00
Irmen de Jong
bcd0db984d
reducing ast dependencies - moved ErrorReporter back to compiler module
2021-02-09 01:15:31 +01:00
Irmen de Jong
1070dedd7c
todo
2021-02-07 19:08:47 +01:00
Irmen de Jong
d7a6b20028
todo
2021-02-07 01:14:10 +01:00
Irmen de Jong
cefef3d1be
todo
2021-02-06 15:22:31 +01:00
Irmen de Jong
cc96ab7a9b
assignment source now also treats cx16.r[0-15] as registers
...
no longer create useless assignment code for r0=r0
2021-02-06 13:01:45 +01:00
Irmen de Jong
49ea31c0a4
fix shift signed word right
2021-02-06 01:23:31 +01:00
Irmen de Jong
2395863e7e
asmsubs: fix clobbering and optimize register usage for loading the arguments
2021-01-29 01:52:49 +01:00
Irmen de Jong
dd2c436dc6
tweaked repeat
2021-01-25 23:39:54 +01:00
Irmen de Jong
9f047ba752
palette.set_monochrome() now has 2 arguments: screen and draw color RGB values
2021-01-24 04:15:15 +01:00
Irmen de Jong
cdc6d9aa65
moved cx16 imageviewer into its own git repo. Version 6.0.
2021-01-23 23:49:17 +01:00
Irmen de Jong
997bc21feb
added offsetof() to get the byte offset of struct members.
2021-01-23 23:11:57 +01:00
Irmen de Jong
bf69219f98
allow uwordpointer[index] syntax as equivalent to @(uwordpointer+index) index can be >255 here!
2021-01-23 22:39:30 +01:00
Irmen de Jong
f34f9329f1
fixed bug in memcopy
2021-01-23 19:49:53 +01:00
Irmen de Jong
90271d0dcd
textelite was okay
2021-01-23 19:01:02 +01:00
Irmen de Jong
f9fd426843
Merge branch 'pointer-index-optimize'
...
# Conflicts:
# docs/source/todo.rst
2021-01-23 15:57:23 +01:00
Irmen de Jong
6f0103398b
fix Y register clobbering in pointer access code
2021-01-23 15:24:41 +01:00
Irmen de Jong
afb60db382
todo
2021-01-20 18:43:08 +01:00
Irmen de Jong
5731b876ff
textelite save bug found
2021-01-20 01:36:46 +01:00
Irmen de Jong
055f917a2e
fixed missing code for certain memread expressions when casted to uword
2021-01-20 01:30:11 +01:00
Irmen de Jong
4ed7fb771c
started pointer access optimization
2021-01-20 00:17:33 +01:00
Irmen de Jong
40cc216557
optimize pointer var access if var is already on zeropage
2021-01-16 18:31:37 +01:00
Irmen de Jong
1481f92cb0
optimize memory read expression of ptr + constant index
2021-01-16 17:41:15 +01:00
Irmen de Jong
3dcef89a74
optimize (zp),y instructions for 65c02 to use (zp)
2021-01-15 19:14:35 +01:00
Irmen de Jong
b128b79132
clearer description of memory()
2021-01-13 22:32:17 +01:00
Irmen de Jong
b9ddde0f12
assem
2021-01-12 03:45:18 +01:00
Irmen de Jong
f61682cdc7
moved various miscellaneous builtin functions such as exit() and progend() to sys.*
2021-01-08 16:44:34 +01:00
Irmen de Jong
3d09d605e1
moved memcopy, memset, memsetw builtin functions to sys.*
2021-01-08 01:09:37 +01:00
Irmen de Jong
025dde264a
move target() builtin to sys.target constant
2021-01-07 23:36:28 +01:00
Irmen de Jong
58f37513e7
removed all string related builtin functions and moved them to separate routines in new 'string' library module
2021-01-07 20:01:11 +01:00
Irmen de Jong
bec2224c3d
clearer naming
2021-01-07 01:25:50 +01:00
Irmen de Jong
76101d7f8d
assem
2021-01-05 22:56:52 +01:00
Irmen de Jong
6fa7debee5
todo
2021-01-05 02:17:51 +01:00
Irmen de Jong
e6a1442296
sys.wait() no longer resets the jiffyclock to zero
2021-01-03 02:45:25 +01:00
Irmen de Jong
cb65480c6c
moved wait() and reset_system() to sys block so they are now unified across c64 and cx16
2021-01-03 02:36:45 +01:00
Irmen de Jong
f0930d8a18
added c64.RDTIM16() utility routine to just get the lower 16 bits of the jiffy clock
2021-01-02 20:59:48 +01:00
Irmen de Jong
baf9dfb46c
assem
2021-01-02 20:33:07 +01:00
Irmen de Jong
b4931c9a1f
optimize horzontal_line drawing
2020-12-30 18:58:47 +01:00
Irmen de Jong
6777d952c1
fixed crash when loopvar in for loop wasn't defined
2020-12-28 00:30:08 +01:00
Irmen de Jong
9e2c52e1ec
added Cx16 highresbitmap example. added stippled drawing to gfx2 monochrome mode
2020-12-27 23:57:13 +01:00
Irmen de Jong
dd82e550d5
adding rect and fillrect to gfx2
2020-12-27 17:34:25 +01:00
Irmen de Jong
b40e1eabb9
added memory() function for memory slab allocations
2020-12-27 02:28:30 +01:00
Irmen de Jong
3b8e18004c
fixed callgraph issue that allocated ALL variables in a (library) module even though some clearly weren't used at all. Variables declared in block level scope in a library are still all allocated / defined due to the nature of a library module with lists of definitions
2020-12-27 01:02:36 +01:00
Irmen de Jong
4c03950c28
changed 'c64colors' module to 'palette' and added more general Cx16 palette manipulation routines in there.
2020-12-27 00:35:25 +01:00
Irmen de Jong
170a0183f8
added 'inline' keyword to force inlining of trivial subroutines
2020-12-26 05:34:14 +01:00
Irmen de Jong
b3b3cf3807
todo
2020-12-23 02:53:30 +01:00
Irmen de Jong
f0f6150e18
fix problem with reuse of auto-indexer-variables that could result in wrong code for routines using multiple array indexings
2020-12-23 02:30:46 +01:00
Irmen de Jong
d65cfbf093
fixed math.mul_word_40 that was actually doing *80...
2020-12-23 00:54:11 +01:00
Irmen de Jong
5a2f8fdfe1
asm-subroutines that ONLY return a value in the Carry or Overflow status register can now be used in an assignment to store that value.
2020-12-22 12:44:03 +01:00
Irmen de Jong
bba4f84503
added target() function
2020-12-22 06:13:14 +01:00
Irmen de Jong
d22df22f7d
fix examples for cx16 register syntax
2020-12-21 23:45:26 +01:00
Irmen de Jong
50213f146a
undefined symbol errors are no longer reported one at a time but all at once
2020-12-21 13:03:56 +01:00
Irmen de Jong
8b630798d8
documented the subroutine calling convention
2020-12-19 03:18:40 +01:00
Irmen de Jong
e0315bffdc
decided not to change mkword() again, added note to docs about argument order
2020-12-15 22:25:06 +01:00
Irmen de Jong
4977d1fbd5
bit shift expressions are "expanded" to the target value's datatype, now also for subroutine arguments.
...
implemented word bit shifts by variable number of bits.
2020-12-14 20:44:48 +01:00
Irmen de Jong
3b7a92f1b4
adding strcopy()
2020-12-14 17:26:17 +01:00
Irmen de Jong
41e1e1cbb0
adding pcxviewer
2020-12-12 02:40:54 +01:00
Irmen de Jong
34babfb5de
added diskio.list_files(). ci-viewer now loads all *.ci files it finds.
2020-12-11 22:36:14 +01:00
Irmen de Jong
8dcd49934a
added progend() builtin function
2020-12-10 23:33:45 +01:00
Irmen de Jong
83ceb0fde9
optimize various simple cases for '**' (pow) like 2**x => bitshift
2020-12-10 22:37:12 +01:00
Irmen de Jong
4094f89d4a
not a bug
2020-12-10 03:22:43 +01:00
Irmen de Jong
74e5644f55
working on CI viewer
2020-12-10 03:00:37 +01:00
Irmen de Jong
2265ae9600
optimized setting word values into array if index is fixed number
2020-12-08 22:54:20 +01:00
Irmen de Jong
a92ec14989
use 'stz' more often on 65c02 cpu (cx16)
2020-12-06 08:30:13 +01:00
Irmen de Jong
bec5a261e5
optimizing koalaviewer
2020-12-06 07:47:54 +01:00
Irmen de Jong
f7953e4ef3
fix float comparison error that creeped in with no longer using the stack for that
2020-12-01 22:19:03 +01:00
Irmen de Jong
63483d1f0e
warnings, errors and todos
2020-12-01 03:24:06 +01:00
Irmen de Jong
05d3a2450c
optimized reg_less_w (word < word)
2020-11-30 01:53:44 +01:00
Irmen de Jong
88b80fed90
returning float values now via fac1 instead of stack
2020-11-23 22:14:45 +01:00
Irmen de Jong
acdbd0c391
todos for next version
2020-11-22 19:18:57 +01:00
Irmen de Jong
510ca042c9
stack tested for most example programs
2020-11-22 18:35:43 +01:00
Irmen de Jong
125f6205f2
optimizing assigning an array value to a var
2020-11-22 17:44:55 +01:00
Irmen de Jong
d1febc0208
all in-place byte assignments now without translateExpression()
2020-11-22 01:38:53 +01:00
Irmen de Jong
340b1c2e42
added balls demo/benchmark
2020-11-21 18:03:57 +01:00
Irmen de Jong
7e0f7ba438
todos
2020-11-20 23:46:14 +01:00
Irmen de Jong
2f1f20ea11
rename
2020-11-19 00:28:49 +01:00
Irmen de Jong
d212f69d89
++/-- and @Pc without translateExpression()
2020-11-17 23:40:42 +01:00
Irmen de Jong
edf5e69d39
optimized swap()
2020-11-15 18:04:54 +01:00
Irmen de Jong
5c9e0c9f51
emit extra nop for breakpoints so vice label list works again (requires 64tass 1.55.2257 or newer!)
2020-11-15 14:31:06 +01:00
Irmen de Jong
d29ce78c86
todos and version
2020-11-10 22:44:48 +01:00
Irmen de Jong
cd99fe46fd
finished call convention change for builtin functions now no longer via stack
2020-11-10 00:43:45 +01:00
Irmen de Jong
e0c5ccc16b
begun with converting builtin functions to new call convention
2020-11-02 23:00:20 +01:00
Irmen de Jong
8af2380a47
pair
2020-11-01 18:00:20 +01:00
Irmen de Jong
431f2a2088
optimized memset and memcopy on CX16, memcopy can deal with any size now
2020-11-01 08:00:32 +01:00
Irmen de Jong
47cbc7b1f9
added a custom-charset example for the c64
2020-10-31 02:26:59 +01:00
Irmen de Jong
87862f772a
better handling of inferred type errors
2020-10-30 21:24:49 +01:00
Irmen de Jong
3ab641aa21
removed @stack in subroutine args and returnvalues, can only use variables or registers now
2020-10-30 15:02:42 +01:00
Irmen de Jong
3efa8da8e0
made versions of various builtin funcs returning value in registers
2020-10-30 14:35:20 +01:00
Irmen de Jong
44949460ed
change for subroutine return values via registers instead of stack
2020-10-28 00:29:34 +01:00
Irmen de Jong
ff3f985658
refactoring
2020-10-22 23:41:16 +02:00
Irmen de Jong
7626c9fff7
only allow array indexing via a number, or a variable (eliminate complex expression calcs for array indexing, force explicit use of an index variable)
2020-10-17 19:57:55 +02:00
Irmen de Jong
2554bc7ef8
ordered the functions in the docs
2020-10-17 02:14:19 +02:00
Irmen de Jong
4d01a78731
introduced strcmp() builtin function
2020-10-16 19:00:06 +02:00
Irmen de Jong
9fb8526136
added conv.bin and hex string to number
2020-10-15 23:47:10 +02:00
Irmen de Jong
5060f0bb19
fixed assigning a memory byte from an array
2020-10-15 22:15:00 +02:00
Irmen de Jong
5595564a1f
todo strcmp
2020-10-14 01:22:43 +02:00
Irmen de Jong
e5ee5be9c5
textelite
2020-10-10 04:42:17 +02:00
Irmen de Jong
4be381c597
fixed compiler optimizer crash because of conflicting expression replacements
2020-10-09 21:51:54 +02:00
Irmen de Jong
e83e021541
doc
2020-10-02 23:31:49 +02:00
Irmen de Jong
46fbe01df9
added codengeration for assigment of array of values to a struct variable (all members at once)
2020-10-02 22:37:52 +02:00
Irmen de Jong
066233eee8
todos
2020-09-27 22:05:44 +02:00
Irmen de Jong
f5db31b8ff
do..until condition can now refer to variables defined in the loop's inner scope.
2020-09-24 19:26:07 +02:00
Irmen de Jong
e1d0dbed0c
do..until condition can now refer to variables defined in the loop's inner scope.
2020-09-23 23:24:32 +02:00
Irmen de Jong
1d1fe364d0
added %option no_sysinit to avoid having the system re-initialization code executed at the start of the program
2020-09-23 23:01:47 +02:00
Irmen de Jong
2b9316c4ff
reworked program init logic so that it is included as the first thing inside main.start itself, to allow better stand alone asm
2020-09-23 22:29:21 +02:00
Irmen de Jong
4daf75a8cc
better checks for invalid %output and %launcher values. Added diskdir examples.
2020-09-23 00:22:36 +02:00
Irmen de Jong
6f78a32e64
diskdir
2020-09-22 23:12:43 +02:00
Irmen de Jong
af6731c9c8
preparing version 4.3
2020-09-22 21:50:56 +02:00
Irmen de Jong
de06353194
auto select correct library to import based on target, instead of having c64- and cx16- prefix variants
...
some programs are now 100% source compatible between C64 and Cx16 targets!
import libraries have been rena;med
2020-09-21 00:50:09 +02:00
Irmen de Jong
3ff3f5e1cc
compiler errors in standard format so that you can click on them in IDE to jump to the line
2020-09-20 22:24:35 +02:00
Irmen de Jong
9b66a597bb
array literal const check added
2020-09-18 21:30:59 +02:00
Irmen de Jong
2a6d9d7e31
more optimal codegen for some typecasts
2020-09-15 03:26:57 +02:00
Irmen de Jong
32a7cd31da
more optimal codegen for if statements
2020-09-15 00:31:44 +02:00
Irmen de Jong
aff6b1fca5
added some more optimized mul_word asm routines
2020-09-14 23:03:18 +02:00
Irmen de Jong
90c4a26d52
we don't implement asmsub params via @stack yet
2020-09-07 01:24:10 +02:00
Irmen de Jong
1377bed988
fix assembly for cx16 when zp is not basicsafe
2020-09-06 17:58:05 +02:00
Irmen de Jong
4a4f8ff5db
subroutine parameters can be allocated on the zp now as well
2020-08-25 16:47:21 +02:00
Irmen de Jong
60a9209a14
plasma
2020-08-25 01:48:23 +02:00
Irmen de Jong
679965410a
todo
2020-08-22 17:13:23 +02:00
Irmen de Jong
77c1376d6d
proper error message for arrays that are declared too big
2020-08-18 14:47:52 +02:00
Irmen de Jong
c0887b5f08
removed 'continue' statement to be able to generate more optimized loop assembly code. started with for loop optimizations
2020-08-17 19:22:29 +02:00
Irmen de Jong
71e678b382
fixed possible register subroutine arg clobbering
2020-07-04 17:05:36 +02:00
Irmen de Jong
3050156325
reverted subroutine inlining, it was a mistake
2020-07-04 01:02:36 +02:00
Irmen de Jong
d89f5b0df8
todo about fixing argclobbering
2020-07-03 23:49:17 +02:00
Irmen de Jong
76cda82e23
v2.2
2020-06-16 01:43:44 +02:00
Irmen de Jong
ceb2c9e4f8
added string value assignment, leftstr, rightstr, substr functions
2020-06-06 00:05:39 +02:00
Irmen de Jong
6408cc46a8
cmdrx16 github ref
2020-05-15 00:32:45 +02:00
Irmen de Jong
f5e6db9d66
big compiler speedup due to optimized scope lookups
2020-05-14 23:59:02 +02:00
Irmen de Jong
5ebd9b54e4
added some more optimized array assignments
2020-04-10 23:30:19 +02:00
Irmen de Jong
cc4e272526
the new assignment code (once complete) really is a big enough change to bump the version to 2.0
2020-04-09 00:24:37 +02:00
Irmen de Jong
d22780ee44
implemented asm for lsl array values
2020-04-03 21:45:52 +02:00
Irmen de Jong
267adb4612
doc
2020-03-29 03:06:51 +02:00
Irmen de Jong
bed34378be
doc
2020-03-28 14:24:00 +01:00
Irmen de Jong
4108a528e1
proepr compiler error when there's no main module
2020-03-26 23:22:01 +01:00
Irmen de Jong
5f3a9e189a
doc
2020-03-26 01:20:04 +01:00
Irmen de Jong
2f05ebb966
bitmap lines and circles
2020-03-25 01:07:42 +01:00
Irmen de Jong
a335ba519a
fix warnings about unreachable code
2020-03-24 22:37:42 +01:00
Irmen de Jong
f2bb238e9b
cleaned up various ast checks/mutations
2020-03-24 19:37:54 +01:00
Irmen de Jong
6dd44aaf0d
compiler main cleanup
2020-03-23 02:54:04 +01:00
Irmen de Jong
f89457ba68
fixed var initialization bug in anonymous scopes
2020-03-23 02:09:30 +01:00
Irmen de Jong
0c561d8528
fixed subroutine parameter value issue
2020-03-23 00:13:46 +01:00
Irmen de Jong
3a99115070
Initial variable values semantics changed: now always sets value at program (re)start (except strings/arrays).
...
This may change later by introducing a compiler option to choose a strategy, perhaps.
2020-03-22 15:12:26 +01:00
Irmen de Jong
4929c198ba
tweak error reporting, expanded lines and circles example
2020-03-22 00:43:46 +01:00
Irmen de Jong
f265199fbe
replaced typecastsAdder with version based on astwalker
2020-03-20 22:28:18 +01:00
Irmen de Jong
a326ffa00a
added warning about sgn() of unsigned type
2020-03-14 21:09:34 +01:00
Irmen de Jong
4fd14f1366
doc updates
2020-03-14 15:20:04 +01:00
Irmen de Jong
64d682bfde
todo
2020-03-13 02:33:02 +01:00
Irmen de Jong
b182f7e693
optimizer removes unreachable code following call to exit()
2020-03-13 02:31:53 +01:00
Irmen de Jong
e6be428589
compiler warning for unreachable code following a call to exit()
2020-03-13 02:21:37 +01:00
Irmen de Jong
85c7f8314b
added exit(rc) builtin function to immediately exit the program with a return code in A register
2020-03-13 02:08:18 +01:00
Irmen de Jong
796d07a7f8
fix crash in asm code generated for bitshift operation with memory address operand
2020-03-13 01:26:53 +01:00
Irmen de Jong
2af86a10b2
remove stack error comments
2020-03-13 00:52:52 +01:00
Irmen de Jong
7fbe486dff
fix eval stack register X error in print_uw
2020-03-13 00:50:30 +01:00
Irmen de Jong
66d2af4453
added '@' alternative string/char encoding
2020-03-11 00:41:58 +01:00
Irmen de Jong
e2cb031386
added 'void' keyword to explicitly ignore subroutine return values (and no longer get a warning)
2020-02-09 01:29:09 +01:00
Irmen de Jong
a0bc97b90c
fix byte array iteration for bb in [1,2,3]
...
improved array literal datatype detection
2020-02-09 00:45:53 +01:00
Irmen de Jong
885b22df40
fixed while and repeat warning messages line number
...
fixed invalid while and repeat asm label names
fixed boolean checking of numbers
2020-02-08 19:45:30 +01:00
Irmen de Jong
772e48105e
fixed some type cast compiler errors in for loops
2019-08-26 23:38:59 +02:00
Irmen de Jong
89d469e77e
examples
2019-08-25 00:46:46 +02:00
Irmen de Jong
eb94c678bd
doc
2019-08-18 14:18:46 +02:00
Irmen de Jong
3ae2597261
irq driven music player example
2019-08-17 13:13:15 +02:00
Irmen de Jong
68df1730f5
cleaned up some stuff, improved checking of asmsub statement body
2019-08-14 23:17:50 +02:00
Irmen de Jong
b5c5560af8
info
2019-08-11 18:21:15 +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
b842493cf0
trying to fix arithmetic and funcion calls and var scoping issues
2019-08-03 13:21:38 +02:00
Irmen de Jong
3e5deda46c
struct finished
2019-07-12 20:07:41 +02:00
Irmen de Jong
78fbbf7119
%asmbinary implemented
2019-04-17 01:33:07 +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
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
35aa954be8
doc
2019-04-12 01:06:46 +02:00
Irmen de Jong
9f302cc640
docs about '&' operator
2019-04-11 21:41:46 +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
83ace753b2
got rid of problematic signed POW operator, added compiler checks for this
2019-03-31 13:56:03 +02:00
Irmen de Jong
ec2e7db23e
doc fix
2019-03-30 00:40:09 +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
73b0cc4056
docs
2019-01-31 23:46:58 +01:00
Irmen de Jong
53045b9e36
idea
2019-01-29 23:48:26 +01:00
Irmen de Jong
d35d28ac5a
docs about gradle and building the compiler, fix shell build script
2019-01-29 23:32:43 +01:00
Irmen de Jong
7459896155
finalized zeropage variable allocation
2019-01-27 22:59:40 +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
fa8a3c997a
Expressions can now be split over multiple lines. Fixed datatype of len().
2019-01-26 17:32:26 +01:00
Irmen de Jong
f1a7fa1870
doc
2019-01-24 02:43:25 +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
58854ef45b
doc fix
2019-01-08 02:25:22 +01:00
Irmen de Jong
5bf2c4a798
got rid of matrix type
2018-10-30 20:29:03 +01: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
8ff72167a4
renamed project to Prog8
2018-09-15 16:21:05 +02:00
Irmen de Jong
cee0f5bd2a
more docs. restructure project. add antlr stuff.
2018-08-07 22:49:01 +02:00
Irmen de Jong
0e785fcfb3
new docs
2018-08-06 03:35:43 +02:00