Irmen de Jong
8f3df3039a
added pipe operator `|>
`
2022-01-06 22:54:18 +01:00
Irmen de Jong
c57ef7725e
preparing v7.6
2022-01-04 20:40:35 +01:00
Irmen de Jong
96225efd96
library doc tweaks
2022-01-03 23:15:34 +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
c15a75556d
Merge branch 'master' into c128target
...
# Conflicts:
# compiler/src/prog8/CompilerMain.kt
# examples/test.p8
2021-12-30 18:22:05 +01:00
Irmen de Jong
b62183adcb
slightly optimized binexpr evaluation for ==/!= in some cases
2021-12-30 02:00:36 +01:00
Irmen de Jong
5d2dec1803
added missing codegen for augmented ==/!=
2021-12-30 01:34:10 +01:00
Irmen de Jong
4a98dab948
fix compiler warnings
2021-12-30 00:58:33 +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
7b54aa0c7d
more consistent naming of the statement classes
2021-12-28 13:56:47 +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
67b0890a6e
remove unneeded var inits when an assignment is already present
2021-12-25 23:31:25 +01:00
Irmen de Jong
4da4f96669
lower code: break -> goto after (simplifies codegen)
2021-12-25 22:30:38 +01:00
Irmen de Jong
d4153da8b9
setup float routine addresses for c128
2021-12-25 02:34:52 +01:00
Irmen de Jong
8fa84de28e
fix c128 clearscreen and bdmusic sound issue
2021-12-22 22:59:36 +01:00
Irmen de Jong
3e3da38de1
correctly disable charset switching
2021-12-22 21:47:41 +01:00
Irmen de Jong
cabf1e82e8
some shadow registers added to make uppercase()/lowercase() work
2021-12-22 21:20:34 +01:00
Irmen de Jong
6da83e2bd7
first steps to add C128 compiler target
2021-12-21 19:08:33 +01:00
Irmen de Jong
e051e09c1d
trim down number of warnings a bit
2021-12-17 20:21:14 +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
629117e594
code size optimization: subroutine calls with 1 int arg will pass it via register instead of separate param assignment at every call site
2021-12-16 00:56:59 +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
1ff13723fe
implicit int to float conversion is now an error if floats are not enabled.
2021-12-15 01:52:28 +01:00
Irmen de Jong
510bda1b28
fix compiler crash when using floats in a comparison expression
2021-12-15 01:24:25 +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
1e9d249f71
fixed output of float values in cmp instructions
2021-12-13 00:17:59 +01:00
Irmen de Jong
a7b5949e6a
fix compiler crash when using a gosub/subroutinecall in a branch statement
2021-12-11 15:11:16 +01:00
Irmen de Jong
02010170ce
fix compiler crash when attempting to call a non-function
2021-12-11 13:20:13 +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
abca618008
added more constfolding
2021-12-09 23:12:12 +01:00
Irmen de Jong
0d2c3901a3
added more constfolding
2021-12-09 22:12:31 +01:00
Irmen de Jong
d8d56b195f
comments
2021-12-09 21:13:13 +01:00
Irmen de Jong
98315de723
allow using ubyte[] as subroutine parameter type (because it is equivalent to uword pointer var)
2021-12-07 23:28:45 +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
dcf487bdc1
fix: correctly insert return statement if needed to prevent 'fall through' into following subroutine
...
this wasn't working correctly anymore when the last statement before the subroutine was a jump/goto
2021-12-07 21:34:50 +01:00
Irmen de Jong
547b1d3720
comment corrections
2021-12-06 23:33:18 +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
837804b231
test for string x and u escape sequences
2021-12-05 18:39:34 +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
20401b99d8
added cx16.getrambank() / getrombank() to retrieve the current ram and rom bank numbers.
2021-12-04 15:27:54 +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
fbcd9a0c1d
reduce number of similar errors for type problem in assignment
2021-12-02 17:44:52 +01:00
Irmen de Jong
5b56e0462d
also deal with zero args
2021-12-01 22:26:36 +01:00
Irmen de Jong
b7fffbb6df
release 7.4.1 - oops, funcion call arg count validation was broken
2021-12-01 21:44:03 +01:00
Irmen de Jong
a67a82c921
tweak
2021-11-30 03:05:25 +01:00
Irmen de Jong
ea0fe8d3d2
PrefixExpression doesn't cause clobber risk
2021-11-30 02:32: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
cafab98d10
correction
2021-11-28 18:59:36 +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
47c2c0376a
added some cpu stack related assembly-level optimizations
2021-11-28 17:27:01 +01:00
Irmen de Jong
f0dadc4a43
optimize 1-arg functioncalls
2021-11-28 16:55:10 +01:00
Irmen de Jong
960b60cd2d
tweak
2021-11-28 14:06:12 +01:00
Irmen de Jong
d6abd72e55
fix push() of signed values
2021-11-28 13:01:46 +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
3d23b39f4c
moved A to the end of the param list to avoid having to store its value
2021-11-28 04:03:18 +01:00
Irmen de Jong
f3a4048ebf
improved setting Carry bit as asmsub parameter
2021-11-28 03:31:32 +01:00
Irmen de Jong
1b07637cc4
better error checking for wrong pop()
2021-11-28 02:49:18 +01:00
Irmen de Jong
68b75fd558
fix: also allow pass-by-reference arguments to builtin functions that accept UWORD (adds implicit type cast)
2021-11-28 02:34:53 +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
e8f4686430
undid failed attempt of using sys.push/sys.pop for stack args - now using new push(), pushw(), pop(), popw() builtin functions
2021-11-28 01:22:40 +01:00
Irmen de Jong
02348924d0
failed attempt of using sys.push/pop for stack args
2021-11-27 23:52:47 +01:00
Irmen de Jong
69dcb4dbda
fix reporting of (not) unused code after GoSub jump
2021-11-27 21:22:34 +01:00
Irmen de Jong
c838821615
refactor fuction arguments codegen a bit
2021-11-27 21:14:21 +01:00
Irmen de Jong
e8e25c6fd6
added sys.push() and sys.pop() to put values on cpu stack. Added missing builtin functions to syntax-files.
2021-11-27 18:09:15 +01:00
Irmen de Jong
62485b6851
allow assigns to asmsub parameters (registers), but this is not very useful in practice.
2021-11-27 15:41:44 +01:00
Irmen de Jong
54025d2bf5
small refactor and spelling fixes
2021-11-27 14:49:18 +01:00
Irmen de Jong
f5ebf79e71
make sure X register is also saved if needed when GoSub is used
2021-11-26 22:11:52 +01:00
Irmen de Jong
58d9c46a9b
got rid of old makeScopedName routine
2021-11-26 20:56:30 +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
8095c4c155
added GoSub node (internal use only later for calling subroutines)
2021-11-21 16:23:48 +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
c0035ba1a2
char encodings now use UByte type instead of short
2021-11-21 00:07:17 +01:00
Irmen de Jong
107935ed31
add some more const folding patterns
2021-11-20 22:47:49 +01:00
Irmen de Jong
31491c62c5
add some more const folding patterns
2021-11-20 22:40:12 +01:00
Irmen de Jong
eacf8b896a
fix augmentable check to align with what the asmgen understands
2021-11-20 22:06:51 +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
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
6af3209d4d
add more const foldings
2021-11-17 00:57:00 +01:00
Irmen de Jong
5d362047e2
add some more comparison expression optimizations to compare against 0 if possible
2021-11-17 00:04:52 +01:00
Irmen de Jong
f48d6ca9f8
simplified NumericLiteral to always just contain a Double instead of a Number for the value
2021-11-16 23:52:54 +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
53e1729e2f
introduce option to use internal scratch variables via prog8_lib definitions (ony for compiler, not for user code!)
2021-11-14 16:01:54 +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
c858ceeb58
compiler shouldn't use cx16.r15 as temp var
2021-11-14 02:38:59 +01:00
Irmen de Jong
00c6f74481
tweak temp float
2021-11-13 12:56:59 +01:00
Irmen de Jong
2177ba0ed2
added signed versions of the cx16 virtual registers
2021-11-13 02:42:21 +01:00
Irmen de Jong
75a06d2a40
preparing for more optimizations
2021-11-12 02:17:37 +01:00
Irmen de Jong
53ac11983b
better unused variable removal
2021-11-11 03:03:21 +01:00
Irmen de Jong
686483f51a
fixed division of signed byte number by 2. (!)
2021-11-10 00:17:56 +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
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
b9ce94bb68
migrated codeGeneration module to KoTest
2021-11-07 15:40:05 +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
18d820da94
correct assignment type
2021-11-06 18:52:54 +01:00
Irmen de Jong
26e66f046f
implement some more missing codegen for inplace Prefix expressions
2021-11-06 18:48:42 +01:00
Irmen de Jong
62dc824bc0
tweaks
2021-11-06 17:14:07 +01:00
Irmen de Jong
1605791f1b
float swap() no longer uses evaluation stack but a single temp var instead + FAC1
2021-11-06 03:36:14 +01:00
Irmen de Jong
37a46aa2cf
complex memory assignment also tries to avoid estack evaluation (but not done yet)
2021-11-06 00:03:19 +01:00
Irmen de Jong
1d2d217b94
non-optimized typecast assignments now attempt to not use evalstack
2021-11-05 23:25:07 +01:00
Irmen de Jong
730b208617
relaxed some type checks on certain word register assignment
...
preparing to optimize asmsub arg passing for complex expressions
2021-11-04 23:57:25 +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
7e287a5359
proper parent node linkage in generated const values out of typecast expressions. Fixes crash mentioned in #72
2021-11-02 00:47:01 +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
e3c00669c1
fixed improved asm generation for conditions that compare signed word to zero
2021-10-31 02:39:45 +02:00
Irmen de Jong
33d17afc32
improved asm generation for conditions that compare byte/word to zero
2021-10-31 01:58:16 +02:00
Irmen de Jong
2388359a99
improved asm generation for conditions that compare ubyte/uword to zero
2021-10-31 01:39:37 +02:00
Irmen de Jong
2df0c9503c
improved asm generation for conditions that compare floats to zero
2021-10-31 01:28:08 +02:00
Irmen de Jong
61fa3bc77c
comparisonjump tweak
2021-10-31 00:57:22 +02:00
Irmen de Jong
9ccc65bf8f
more petscii tests
2021-10-30 15:15:11 +02:00
Irmen de Jong
495a18805c
move asmgen test to codeGeneration module
2021-10-29 16:20:53 +02:00
Irmen de Jong
ce75b776bb
refactor loadAsmIncludeFile response
2021-10-29 01:01:24 +02:00
Irmen de Jong
7d22b9b9f9
simplified name conflict check for sub params
2021-10-29 00:20:33 +02:00
Irmen de Jong
08d2f8568b
refactoring symbol lookups
2021-10-27 23:48:12 +02:00
Irmen de Jong
ac5f45d2d4
fix nested label lookups in anon scopes (partly)
2021-10-27 02:41:24 +02:00
Irmen de Jong
743c8b44a2
AnonymousScope refactor: it's no longer a INameScope
...
because it doesn't contain scoped variables (these are moved to the subroutine's scope)
2021-10-26 23:01:51 +02:00
Irmen de Jong
5e1459564a
no longer take AddressOf a str-variable that is a subroutine's parameter with str type (it's just an address/uword already)
2021-10-25 23:49:01 +02:00
Irmen de Jong
69a8813a3d
first steps to add support for str parameter type
2021-10-24 20:57:10 +02:00
Irmen de Jong
6b32535cb6
don't complain about uninitialized str var if it's not a var
2021-10-24 15:13:38 +02:00
Irmen de Jong
35e88dd529
(7.2) correctly parse datatype of array parameters
2021-10-21 22:06:21 +02:00
Irmen de Jong
df2d5c6585
tests for callgraph and unused subroutine removal in optimizer
2021-10-20 22:24:10 +02:00
Irmen de Jong
82d20dea39
a few comment and TODO cleanups.
...
remove remark about chars UBYTE type, kotlin's closest native type that can contain 0-255 is a short.
2021-10-19 23:20:34 +02:00
Irmen de Jong
761aac7a23
replace inferredType.istype() by infix form
2021-10-15 00:28:23 +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
6070afa6b6
cleanup SourceCode class
2021-10-13 19:16:01 +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
557f4f689f
doc
2021-10-13 00:50:54 +02:00
Irmen de Jong
f891fc698c
switched to more featureful Result library
2021-10-12 21:35:27 +02:00
Irmen de Jong
2c2d474059
fix crash when attempting to import non-existing module
2021-10-11 20:37:55 +02:00
Irmen de Jong
9898791771
clean test.p8
2021-10-09 16:32:44 +02:00
Irmen de Jong
e8f308f654
a few more inlinings of trivial return values
2021-10-09 01:36:13 +02:00
Irmen de Jong
07132a2c42
removed unreliable inlining of non-asmsub subroutines. Fixes #60
2021-10-08 23:09:38 +02:00
Irmen de Jong
0204002d9b
bugfix: non-existing asm function was sometimes called to swap floats
2021-10-08 04:14:43 +02:00
Irmen de Jong
b3107cfad0
Merge branch 'master' into v7.1
2021-10-04 22:38:53 +02:00
Irmen de Jong
91ae68c07e
blinds effects done
2021-10-04 22:15:59 +02:00
Irmen de Jong
fbef63e150
moving to raster lines via irq
2021-09-30 23:45:45 +02:00
Irmen de Jong
bb8ee9bb3e
Merge branch 'master' into v7.1
2021-09-28 23:27:56 +02:00
Irmen de Jong
25677a4126
remove unused var
2021-09-28 23:27:32 +02:00
Irmen de Jong
3aeca0a770
Merge branch 'master' into v7.1
2021-09-28 23:15:06 +02:00
Irmen de Jong
9acec4d952
changed to fixed point math to always generate bars of 32 lines height
2021-09-28 23:12:16 +02:00
Irmen de Jong
8388adcd1d
changed to fixed point math to always generate bars of 32 lines height
2021-09-28 22:55:55 +02:00
Irmen de Jong
fd1f30f92b
removed %target directive (didn't add much, too confusing, only supported single target)
2021-09-04 15:01:16 +02:00
Irmen de Jong
9bd3a6758a
improve testability: use error returnvalues instead of using exitProcess()
2021-07-02 00:11:21 +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
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
e61a2d7083
slightly optimized repeat loop asmgen
2021-05-30 13:10:05 +02:00
Irmen de Jong
c03f6604af
added free words counting method to zeropage
2021-05-30 00:55:11 +02:00
Irmen de Jong
572bb38ddb
update to kotlin 1.5.10
2021-05-29 15:25:17 +02:00
Irmen de Jong
42c5c0cb9f
start of cx16 colorbars example
2021-05-26 22:13:23 +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
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
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
74f918d911
fix crashes for string encoding errors: give normal compiler error instead
2021-05-11 21:33:11 +02:00
Irmen de Jong
a20efa56eb
print unmappable character in escaped form in errormessage
2021-05-11 18:09:09 +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
1a59019fc8
add generic error in diskio.status() if drive status can't be read
2021-05-01 15:39:39 +02:00
Irmen de Jong
19fe58dbac
fix regression bug that left variables uninitialized
2021-05-01 01:35:03 +02:00
Irmen de Jong
0a5b30e21c
added fast code for x*640
2021-04-30 22:30:21 +02:00
Irmen de Jong
664818fd29
try fixing a weird problem with pointervar[idx] -> memread rewriting
...
this was introduced in the removal of structs somehow
2021-04-30 01:34:03 +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
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
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
81a91d62cb
improved horizontal_line in highres 4c
2021-04-28 02:55:49 +02:00
Irmen de Jong
2575263438
optimized gfx2.plot() for hires-4c
2021-04-28 02:49:25 +02:00
Irmen de Jong
7f0e25cb50
optimized gfx2.plot() for hires-monochrome
2021-04-28 02:32:11 +02:00
Irmen de Jong
a1e4e9c50f
optimized gfx2.plot() for lores-256c
2021-04-28 02:22:21 +02:00
Irmen de Jong
8b84f87217
removed fastrnd8() because it was hilariously bad, just use rnd()
2021-04-28 01:53:12 +02:00
Irmen de Jong
306a1b7bc2
optimized gfx2.vertical_line for hires monochrome mode
2021-04-28 01:19:10 +02:00
Irmen de Jong
481214c46e
optimized gfx2.vertical_line for lores monochrome mode
2021-04-28 01:02:29 +02:00
Irmen de Jong
a5961cbeab
optimized gfx2.vertical_line for highres 4c mode
2021-04-28 00:29:21 +02:00
Irmen de Jong
68f696d165
added 'callrom' builtin function (for cx16 target) that calls a routine in banked ROM
2021-04-25 18:04:56 +02:00
Irmen de Jong
1170aed026
added 'callfar' builtin function (for cx16 target) that uses jsrfar to call a routine in banked RAM
2021-04-25 17:47:13 +02:00
Irmen de Jong
bf1b2066b6
fix crashes in peekw() and pokew()
2021-04-22 18:26:46 +02:00
Irmen de Jong
4c080afb76
added compiler check against impossible for loop range (unsigned downto exactly 0 with non-const startvalue and step != -1)
2021-04-21 23:03:29 +02:00
Irmen de Jong
ee1c43ca91
improved scanning for return statement in routines that should return a value.
2021-04-21 20:31:29 +02:00
Irmen de Jong
1c2e6f9e4c
lower() and upper() now also return the lenght of the processed string.
2021-04-21 20:21:58 +02:00
Irmen de Jong
dd379430d9
added docs on flexible string character mapping to petscii
2021-04-20 01:22:49 +02:00
Irmen de Jong
42033ebd35
added petscii mappings for ^, _, \, {, } and |
2021-04-19 02:18:55 +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
c70bbdab26
fixed missing type checking in vardecl initializer values. Fixes #29
...
Also fix wrong assert of 0 const check in assembly gen for if-statement comparisons.
2021-04-18 22:46:21 +02:00
Irmen de Jong
3d956ef554
fix wrong values for register used in array indexing expressions
...
added the L/H byte parts of the cx16 virtual registers
2021-04-18 13:53:02 +02:00
Irmen de Jong
329f491c30
fix compiler crash with scoped const vardecls
2021-04-18 01:56:26 +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
e680de05ea
workaround for the joystick_get() irq problem
2021-04-15 22:56:52 +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
0a03c46351
preparing optimization plan for if statements
2021-04-12 02:37:15 +02:00
Irmen de Jong
ae1b62e147
optimized integer comparison expressions some more
2021-04-12 01:23:17 +02:00
Irmen de Jong
8d567f6b06
added cx16.joystick_get2() for convenience api
2021-04-12 01:07:46 +02:00
Irmen de Jong
b1ef09675b
fix compiler crash for some struct/array initialization assignment literals containing not just numbers
2021-04-10 00:28:32 +02:00
Irmen de Jong
2b7b925090
codegen now uses correct machine target's string encoder/decoder. Encoding more robust by checking upper case mapping if lowercase mapping fails.
2021-04-09 23:33:32 +02:00
Irmen de Jong
e0454e95db
warn about for-loop wrapped iteration if loop range is inverted from normal
2021-04-08 22:54:47 +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
c853afe769
fix compiler crash due to certain redundant typecast expressions
2021-04-08 19:45:44 +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
ccebd22856
callgraph: mark start() also in use
2021-04-08 02:43:59 +02:00
Irmen de Jong
a1f3b82333
vtui update
2021-04-08 01:36:25 +02:00
Irmen de Jong
3dda29781e
changed MEMTOP2 into cx16.numbanks() to query the number of RAM banks installed
2021-04-08 01:05:38 +02:00
Irmen de Jong
a9d297ee31
fix inlining of sub with var that has default initialization
2021-04-08 00:35:02 +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
bc726c6334
optimized slow evaluation of byte-to-wordarray assignment
2021-04-06 22:50:16 +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
5b890847e5
make sure BASIC rom is banked in again when program exits
2021-04-05 23:12:10 +02:00
Irmen de Jong
64c85b9617
fix cx16 rom v39 float changes
2021-04-05 22:54:40 +02:00
Irmen de Jong
61d1f1ea87
oops
2021-04-05 01:18:22 +02:00
Irmen de Jong
238d27acdc
more pleasing bob image and pattern
2021-04-05 01:14:55 +02:00
Irmen de Jong
374e2b311d
refactoring unused code removal and noModification
2021-04-04 16:36:33 +02:00
Irmen de Jong
49036abbaf
docs
2021-04-04 12:55:29 +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
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
2ff04d2abd
cleanup
2021-04-01 19:10:55 +02:00
Irmen de Jong
3f30d3aa89
added sys.waitrastborder() for c64
2021-04-01 18:53:16 +02:00
Irmen de Jong
4cae2c56ec
implemented last remaining codegen for word-byte division and remainders.
2021-03-25 22:03:36 +01:00
Irmen de Jong
d840975054
remove unreached error checks
2021-03-25 21:47:05 +01:00
Irmen de Jong
1b14da6c03
compiler warning instead of crash when attempting to assign invalid array value to other array
2021-03-24 22:01:22 +01:00
Irmen de Jong
292640b17a
asmgen: string values cannot be typecasted
2021-03-24 21:49:33 +01:00
Irmen de Jong
112a7b09f2
added codegen for expression that needs the status-flag register result as a value on the stack
2021-03-24 21:42:27 +01:00
Irmen de Jong
af4de6d2fc
replacing complex array indexer expressions moved to BeforeAsmGeneration + use cx16 virtualregister instead of adding temp variables for this
2021-03-23 23:44:14 +01:00
Irmen de Jong
3626828ceb
decided
2021-03-22 01:45:19 +01:00
Irmen de Jong
24b77fb5a5
comments.
2021-03-21 21:10:29 +01:00
Irmen de Jong
1505fe686a
updated vtui example
2021-03-21 20:40:35 +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
7f21d89fea
moved test programs to test folder in compiler module
2021-03-17 20:15:16 +01:00
Irmen de Jong
ef64881528
busy creating extensive comparison test suite
2021-03-17 19:35:22 +01:00
Irmen de Jong
9a6bd760bd
fixed issues in uword '>'
2021-03-16 23:40:32 +01:00
Irmen de Jong
00b9766aea
fixed issues in word '>'
2021-03-16 23:22:58 +01:00
Irmen de Jong
d2ab5f230d
example TODOs
2021-03-16 01:09:25 +01:00
Irmen de Jong
b5523c7077
don't optimize with inlining too aggressively (code bloat)
2021-03-16 00:33:15 +01:00
Irmen de Jong
bf23ad78e6
improve byte '<' and '>' codegen
2021-03-15 22:26:00 +01:00
Irmen de Jong
ded1d19737
improve '==' and '!=' codegen
2021-03-15 19:29:32 +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
50a306f492
line drawing fixes
2021-03-09 22:11:30 +01:00
Irmen de Jong
6995ee2d17
fix cx16 bresenham line inaccuracy
2021-03-09 22:04:19 +01:00
Irmen de Jong
6c60ea9cac
allocate even more c64 zeropage locations for floats
2021-03-09 21:47:36 +01:00
Irmen de Jong
6bd205c02a
fix c64 bresenham line inaccuracy
2021-03-09 21:07:55 +01:00
Irmen de Jong
9120e1de88
fix ubyte/uword to float conversion crashes on Commander X16
2021-03-08 23:21:52 +01:00
Irmen de Jong
60e169bd87
added optimized integer square (x*x) routine
2021-03-08 23:08:47 +01:00
Irmen de Jong
a1729b65ab
fix min(), max(), sum(), abs()
2021-03-06 22:57:22 +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
d787795759
simplified
2021-03-06 15:43:23 +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
26502c949a
add unlimited bobs example
2021-03-05 19:05:13 +01:00
Irmen de Jong
96ba9f5902
spelling correction
2021-03-04 01:31:29 +01:00
Irmen de Jong
3a6ba0ab71
added 'kefrenbars' example
2021-03-03 01:09:18 +01:00
Irmen de Jong
32d894d6b6
optimized repeat loop for word counts
2021-02-28 21:22:46 +01:00
Irmen de Jong
543efa4299
attempt 2 at optimizing repeats
2021-02-28 21:02:17 +01:00
Irmen de Jong
eba0708099
Revert "optimized repeat loop for word counts"
...
This reverts commit 51e6bf0d
2021-02-28 20:29:28 +01:00
Irmen de Jong
51e6bf0d45
optimized repeat loop for word counts
2021-02-28 17:34:18 +01:00
Irmen de Jong
07b5c44a54
preparing to optimize 16 bit repeat loop
2021-02-28 17:13:15 +01:00
Irmen de Jong
7e3e18a5c7
deal with 'bra' better on 65c02
2021-02-28 16:20:03 +01:00
Irmen de Jong
8e3ebc84f0
readme
2021-02-28 15:40:04 +01:00
Irmen de Jong
e6079dfd71
don't always use pha/pla in pointer expression code
2021-02-27 16:21:46 +01:00
Irmen de Jong
2b435fe6a5
vtui example updated to vtui 0.6
2021-02-27 03:30:21 +01:00
Irmen de Jong
4e640b11fd
added kernal bank switch trick to rasterbars
2021-02-26 01:16:06 +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
7aefca3de0
target
2021-02-24 00:17:52 +01:00
Irmen de Jong
f275ed96ea
optimized palette.set_color()
2021-02-24 00:01:27 +01:00
Irmen de Jong
b0213b0565
vtui lib
2021-02-23 23:31:32 +01:00
Irmen de Jong
c677f0a875
fixed string interning to also consider the alt-encoding
2021-02-23 23:27:44 +01:00
Irmen de Jong
6e65cb2c0a
added sounds to cx16 tehtriz
2021-02-23 01:29:45 +01:00
Irmen de Jong
e65c5402d7
added cx16 rasterbars example
2021-02-22 02:11:44 +01:00
Irmen de Jong
334f86480a
added irq routines for cx16
2021-02-22 00:48:41 +01:00
Irmen de Jong
edf9a500d3
kernel -> kernal
2021-02-21 22:48:06 +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
00d735249b
fix pointer write outside zeropage
2021-02-21 16:22:44 +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
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
6319269976
underscore '_' is now also mapped to petscii, to the graphical symbol
2021-02-20 02:55:06 +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
9bb5b454e4
reduce dependencies on global compilaiontarget
2021-02-18 23:44:26 +01:00
Irmen de Jong
2412f8c531
added cx16 vtui example
2021-02-18 23:16:38 +01:00
Irmen de Jong
8701d684e6
added cx16 vtui example
2021-02-18 03:45:06 +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
92ee0aefee
docs: replaced old invalid c64scr names with txt
2021-02-16 23:28:35 +01:00
Irmen de Jong
99759ae853
enhanced tehtriz blocks to have light edges
2021-02-15 17:48:10 +01:00
Irmen de Jong
81930312ff
added textio.setcc2() on commanderX16 to enable setting fg+bg colors.
2021-02-15 17:47:48 +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
2b870fb9f7
get rid of compiled examples. Just compile them yourself...
2021-02-14 17:13:29 +01:00
Irmen de Jong
78af2cd4dc
optimize peekw()
2021-02-13 23:52:08 +01:00
Irmen de Jong
02cb237623
added poke() and pokew() builtin functions
2021-02-13 23:16:50 +01:00
Irmen de Jong
cc0f19653e
added peek() and peekw() builtin functions
2021-02-13 22:38:39 +01:00
Irmen de Jong
4fff150c7b
fixed mkword() bug
2021-02-13 22:00:13 +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
bdda6f502a
textelite output cleanups and alignments
2021-02-10 23:19:07 +01:00
Irmen de Jong
1bbd77fddb
added txt.column()
2021-02-10 22:47:49 +01:00
Irmen de Jong
9867dfcdeb
ported tehtriz to Cx16
2021-02-10 21:44:35 +01:00
Irmen de Jong
34aa6cc8a2
compiler checks for conflicting register usage in sub arguments vs target parameter registers
2021-02-07 05:25:50 +01:00
Irmen de Jong
eb2d5bb1f8
fix bank arg error in gfx2.position
2021-02-06 16:58:17 +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
40e4cfb686
amiga
2021-02-04 17:47:52 +01:00
Irmen de Jong
76f459ee95
amiga
2021-02-02 23:09:03 +01:00
Irmen de Jong
c478718019
fixed and optimized horiz_line for highres 4c
2021-02-01 22:03:10 +01:00
Irmen de Jong
c27248a58b
amiga
2021-01-29 23:52:29 +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
69c459c8ac
gfx2 highres 4colors
2021-01-28 22:28:14 +01:00
Irmen de Jong
a910c0fddb
gfx2 highres 4colors
2021-01-27 02:31:20 +01:00
Irmen de Jong
52f6be2bb0
gfx2: changed screen mode numbering to a more intuitive sequence
2021-01-26 18:17:20 +01:00
Irmen de Jong
857f930dc2
amiga
2021-01-26 00:09:42 +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
975af4764d
remove no longer needed strlen() calls from diskio routines
2021-01-23 22:46:46 +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
4a81406262
fix diskio rename() and delete()
2021-01-23 17:57:30 +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
e612056ecd
more optimal screen pointer access in plasma.p8 example
2021-01-23 15:54:18 +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
c328e9018c
cx16 assembler was moved into its own github repo
2021-01-18 01:38:33 +01:00
Irmen de Jong
b270f6f713
added cx16.rombank() and rambank(). Select kernal rom in i/o heavy programs for faster disk i/o
2021-01-17 19:16:21 +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
9f72779cdc
optimize assignment from memory pointer with fixed byte offset
2021-01-15 20:09:13 +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
46373717b6
get rid of unused ci image format reader
2021-01-15 18:29:25 +01:00
Irmen de Jong
7277c08fa6
added textio.spc(). assem tweaks.
2021-01-14 22:51:09 +01:00
Irmen de Jong
04e75455c4
assem tweaks
2021-01-14 21:07:06 +01:00
Irmen de Jong
8ac17ae14e
fix assem parsing of 4 letter instructions
2021-01-14 18:41:29 +01:00
Irmen de Jong
b128b79132
clearer description of memory()
2021-01-13 22:32:17 +01:00
Irmen de Jong
79e6d4b8dd
better check for EOF status
2021-01-13 22:11:51 +01:00
Irmen de Jong
b9ddde0f12
assem
2021-01-12 03:45:18 +01:00
Irmen de Jong
506ac8014c
fix diskio.f_readline() that skipped first char. It also doesn't leave the end of line char in the string now.
2021-01-10 16:21:25 +01:00
Irmen de Jong
72b4198301
added string.lower() / string.upper()
2021-01-10 15:29:43 +01:00
Irmen de Jong
24eee0cb34
lower
2021-01-10 15:15:00 +01:00
Irmen de Jong
9fc0c3f849
removed diskio.f_read_exact() - wasn't worth it over f_read()
2021-01-10 14:29:51 +01:00
Irmen de Jong
db314ed903
added diskio.f_readline()
2021-01-10 05:04:56 +01:00
Irmen de Jong
1ef9b8be61
assem
2021-01-10 03:44:10 +01:00
Irmen de Jong
79782ad547
conv.any2uword() changed return value
2021-01-08 22:43:01 +01:00
Irmen de Jong
b4d1d545a8
introduced txt.nl()
2021-01-08 16:56:17 +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
87cee7a0fd
check for name conflict with existing block (/module)
2021-01-07 23:28:15 +01:00
Irmen de Jong
61784a03bb
removed all string related builtin functions and moved them to separate routines in new 'string' library module
2021-01-07 23:10:29 +01:00
Irmen de Jong
9d9ca0f08d
fix bit shifting words by 8. fix type error for signed return types.
2021-01-07 22:50:40 +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
ee7f9d457d
text editor configs
2021-01-07 01:56:31 +01:00
Irmen de Jong
bec2224c3d
clearer naming
2021-01-07 01:25:50 +01:00
Irmen de Jong
4305984168
assem
2021-01-06 01:03:08 +01:00
Irmen de Jong
07dd64958f
conv.bin2uword, conv.hex2uword, conv.str2uword, conv.str2word more robust and return parsed length in cx16.r15
2021-01-06 00:11:15 +01:00
Irmen de Jong
76101d7f8d
assem
2021-01-05 22:56:52 +01:00
Irmen de Jong
4309a0dc68
assem
2021-01-05 04:46:25 +01:00
Irmen de Jong
41658c97a3
assem
2021-01-05 02:49:29 +01:00
Irmen de Jong
45c9cc97d9
fix invalid handling of X register functioncall result value
2021-01-05 02:44:55 +01:00
Irmen de Jong
6fa7debee5
todo
2021-01-05 02:17:51 +01:00
Irmen de Jong
ee9f662016
added MEMTOP2 pseudo kernal routine on cx16 to get the number of RAM banks
2021-01-05 01:48:23 +01:00
Irmen de Jong
3550e1214c
fix invalid handling of X register functioncall result value
2021-01-05 01:42:51 +01:00
Irmen de Jong
8dcb43ad1c
assem
2021-01-04 20:15:07 +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
3e7c7ab497
assem optimize 4 letter mnems for size
2021-01-03 02:17:35 +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
583428b19c
assem
2021-01-02 15:40:36 +01:00
Irmen de Jong
b3b2541c1e
assem
2021-01-01 19:25:40 +01:00
Irmen de Jong
8e927e0b73
nontrivial return value evaluation now via intermediary variable to try to avoid slow stack based evaluation
2020-12-31 22:13:24 +01:00
Irmen de Jong
8e3e996f4a
diskio.f_open() now also checks if file exists
2020-12-31 19:27:34 +01:00
Irmen de Jong
b6fa361bcc
exit() now also resets the io channels. Optimized diskio data read subroutines. added diskio.f_read_all()
2020-12-31 19:09:29 +01:00
Irmen de Jong
ca83092aed
added large example program to check / profile compiler performance
2020-12-31 01:10:48 +01:00
Irmen de Jong
3cda92331e
updated dirlist
2020-12-31 01:07:37 +01:00
Irmen de Jong
c989abe265
optimize ubyte -> uword type casts more
2020-12-31 01:02:36 +01:00
Irmen de Jong
89230ade7a
change in pattern arguments of diskio.list_files() and lf_start_list(): you can now use a simple pattern with ? and * wildcards
2020-12-30 23:34:00 +01:00
Irmen de Jong
e09b65ea94
fix gfx2 vertical_line
2020-12-29 23:07:26 +01:00
Irmen de Jong
c81952c356
gfx2 optimizations for vertical lines
2020-12-29 02:13:38 +01:00
Irmen de Jong
f80e462d25
gfx2 optimizations for vertical lines
2020-12-29 01:36:34 +01:00
Irmen de Jong
51f32677b7
gfx2 optimizations for horizontal lines, fix bug in disc drawing
2020-12-29 01:23:14 +01:00
Irmen de Jong
4b366358c4
fix gfx2 color of horiz/vert lines
2020-12-28 01:33:51 +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
6c8b18ddbd
fixed crash on cx16 in word to float conversion
2020-12-28 00:19:58 +01:00
Irmen de Jong
69780ecde9
fixed % operator bug
2020-12-28 00:08:22 +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
6cb0e6a936
fixed lsb(value) not working when used in a comparison expression (needed to flip loading of A and Y register with the value)
2020-12-27 18:12:12 +01:00
Irmen de Jong
dd82e550d5
adding rect and fillrect to gfx2
2020-12-27 17:34:25 +01:00
Irmen de Jong
cdcda27d07
adding circle and disc to gfx2
2020-12-27 16:17:06 +01:00
Irmen de Jong
efa42d5d96
compiler watch mode is a bit more robust now against crashes during compilation
2020-12-27 03:58:41 +01:00
Irmen de Jong
e17c18b653
fix issues with memory() function, rewrite examples to use it
2020-12-27 03:35:56 +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
c62ff16f8b
added gfx2.text_charset()
2020-12-26 03:15:24 +01:00
Irmen de Jong
ab495fe6e1
added gfx2.text()
2020-12-26 02:25:53 +01:00
Irmen de Jong
c2a8dc23d0
R0-R15 register parameter optimization if loaded with byte instead of word
2020-12-25 22:30:40 +01:00
Irmen de Jong
6734ae3c88
imageviewer now uses gfx2 for full-screen graphics. gfx2 promoted to built-in library on the cx16 target.
2020-12-25 17:57:46 +01:00
Irmen de Jong
4c1c595f14
removed requirement of virtual regs R0-R15 to be at start of subroutine params
2020-12-25 15:43:48 +01:00
Irmen de Jong
b91aabd3c0
max 16 subroutine params
2020-12-25 03:02:34 +01:00
Irmen de Jong
3307f673f6
optimized cx16.vpoke etc. to be asmsubroutines instead
2020-12-24 07:12:59 +01:00
Irmen de Jong
07b00bec61
fix problems with color cycling in iff viewer
2020-12-24 06:48:15 +01:00
Irmen de Jong
e0d2b60d8b
added diskio.f_read_exact()
2020-12-24 06:24:52 +01:00
Irmen de Jong
45bfecee73
fix problems with color cycling in iff viewer
2020-12-24 05:46:57 +01:00
Irmen de Jong
8f224afed9
added color cycling support to iff viewer
2020-12-23 23:23:16 +01:00
Irmen de Jong
48a4c46a6c
optimized iff planar to chunky
2020-12-23 19:48:44 +01:00
Irmen de Jong
7d08380c7f
added cx16.vaddr()
2020-12-23 05:04:19 +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
ae648b8a0a
subroutines can now be defined even within regular code and will not disrupt the generated code anymore (they are moved to the end of their scope by the compiler)
2020-12-23 01:55:47 +01:00
Irmen de Jong
583af3bd4f
additional vpoke operations to do or,and,xor in one go without the need for a separate vpeek
2020-12-23 01:02:43 +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
44b8291540
update docs
2020-12-22 13:29:16 +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
684e081399
optimized register save/restore on Cx16 cpu target
2020-12-22 05:59:01 +01:00
Irmen de Jong
96c700ee46
only save A's value if needed for a return value
2020-12-22 05:43:02 +01:00
Irmen de Jong
5f15794c3b
new compiled dirlist example
2020-12-22 04:58:33 +01:00
Irmen de Jong
a40b3134f4
fix clobbering of A when restoring X or Y from stack
2020-12-22 04:52:46 +01:00
Irmen de Jong
c70b4daf87
cleanup obsolete routine
2020-12-22 03:40:44 +01:00
Irmen de Jong
928611eb20
Got rid of problematic attempts to save status register after function calls. If you really need it (for instance for if_XX instructions) it's probably better to use a short asmsub wrapper.
...
For function calls, register saves go via stack (to allow nested saves) for simpler cases, registers are saved in a local variable.
Fixed too agressive removal of sta-lda sequence if the lda is followed by a branching instruction.
Insert missing cmp #0 after functioncall if the value of the A register is needed in a comparison expression (could otherwise test wrong status flag)
2020-12-22 03:35:00 +01:00
Irmen de Jong
f1d55c688a
cx16 registers should come first in subroutine arg list
2020-12-22 00:59:07 +01:00
Irmen de Jong
d22df22f7d
fix examples for cx16 register syntax
2020-12-21 23:45:26 +01:00
Irmen de Jong
061e1be0a4
removed ROM-float optimizations, too troublesome. Fixed LOG2 not being defined on Cx16 as well.
2020-12-21 23:22:02 +01:00
Irmen de Jong
950bc4b937
cx16 virtual registers R0-R15 also available on C64 target (although in a different location in memory)
2020-12-21 21:04:29 +01:00
Irmen de Jong
dcb81e6bea
adding CommanderX16 virtual registers language support, rewrite cx16 examples
2020-12-21 20:38:00 +01:00
Irmen de Jong
daaa83ee7d
improved parsing of cpu registers (no more crash when invalid register) also adding CommanderX16 virtual registers language support
2020-12-21 19:19:53 +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
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
cd28d0c0e0
tweak
2020-12-14 21:57:16 +01:00
Irmen de Jong
0baa2c8b23
fix oversight in binexpr operand swap that could result in suboptimal code
2020-12-14 21:37:40 +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
f6920172dd
image viewer tweaks
2020-12-14 15:36:15 +01:00
Irmen de Jong
93bfc8f5f4
rename
2020-12-14 14:30:55 +01:00
Irmen de Jong
39b7655264
imageviewer is now a single program
2020-12-14 14:30:18 +01:00
Irmen de Jong
5134ea76bf
added bmp viewer
2020-12-14 02:12:26 +01:00
Irmen de Jong
3ba37df29d
added iff viewer
2020-12-13 19:42:30 +01:00
Irmen de Jong
e221d674d9
pcxviewer done
2020-12-13 01:32:03 +01:00
Irmen de Jong
41e1e1cbb0
adding pcxviewer
2020-12-12 02:40:54 +01:00
Irmen de Jong
da1bc351d2
koalaviewer auto disk detect
2020-12-11 23:32:47 +01:00
Irmen de Jong
add5bfa2ec
koalaviewer scans directory for *.koa
2020-12-11 23:00:58 +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
4f6c45c86c
incremental file loading
2020-12-11 21:05:03 +01:00
Irmen de Jong
e6220a464c
using progend() to maximize amount of mem available to load image
2020-12-10 23:52:30 +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
0d735c2ccc
workaround for FB_set_pixels bug
2020-12-10 21:51:32 +01:00
Irmen de Jong
4094f89d4a
not a bug
2020-12-10 03:22:43 +01:00
Irmen de Jong
cf1e8b194a
fix compiler crash for expressions of the form x = x and y (the logical booleans, not the bitwise)
2020-12-10 03:12:32 +01:00
Irmen de Jong
74e5644f55
working on CI viewer
2020-12-10 03:00:37 +01:00
Irmen de Jong
7a7270d769
adding CI (CommanderX16 Image) file viewer
2020-12-10 00:03:47 +01:00
Irmen de Jong
0d7a291b81
regenerated example disk , version 5.3
2020-12-08 23:15:31 +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
cba502e87a
fixed crash when trying to assign a string literal to an array element in a string-array
2020-12-08 22:27:42 +01:00
Irmen de Jong
ddf1be2a13
status condition couldn't properly be tested because restoring the X register clobbers the status flag
2020-12-08 22:15:07 +01:00
Irmen de Jong
b7694686c2
optimized code for branches containing just a goto or break statement
2020-12-08 22:00:52 +01:00
Irmen de Jong
63332c0530
fix wrong branch instructions for some if_xxx
2020-12-08 21:29:40 +01:00
Irmen de Jong
8a504f8eee
fixed compiler crash: when passing the name of a subroutine instead of an array or string to an UWORD parameter
...
now allows taking the address of a subroutine &routine
2020-12-08 21:17:31 +01:00
Irmen de Jong
7accb73993
iterative file listing instead
2020-12-08 03:34:45 +01:00
Irmen de Jong
e9aa6a0956
TODOs
2020-12-08 02:20:24 +01:00
Irmen de Jong
df20467e03
completed diskio file lister
2020-12-08 02:16:41 +01:00
Irmen de Jong
ecbd9d739e
completed diskio file lister
2020-12-08 01:34:08 +01:00
Irmen de Jong
8af17c295a
fixed diskio directory block sizes
2020-12-08 01:02:38 +01:00
Irmen de Jong
329b28cad1
making diskio.listfiles
2020-12-07 23:49:34 +01:00
Irmen de Jong
452c29574d
added optimized mul 320 routine
2020-12-07 22:55:16 +01:00
Irmen de Jong
5bedc1b333
remove test file
2020-12-06 18:40:47 +01:00
Irmen de Jong
0bf6d2f72c
tweak
2020-12-06 18:38:27 +01:00
Irmen de Jong
c09b8af491
optimized koalaviewer to plot 8 pixels at once in the loop
2020-12-06 18:25:01 +01:00
Irmen de Jong
260bcd3a55
added syntax error for non-constant array size declaration
2020-12-06 17:02:56 +01:00
Irmen de Jong
6b5211ad12
tweak word shift unroll
2020-12-06 08:36:19 +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
4b53641e1d
optimized text screen clear/fill and scrolling on c64
2020-12-06 01:16:31 +01:00
Irmen de Jong
6902834568
remove dummy argument for txt.scroll_XXXX() functions on cx16
2020-12-06 00:19:47 +01:00
Irmen de Jong
44019d1a61
strings and arrays are no longer directly assignable to an UWORD, you need an explicit & (address-of) now
2020-12-03 18:39:32 +01:00
Irmen de Jong
6f74fb49bd
added c64colors module. added vpeek/vpoke to cx16 syslib. koalaviewer example now uses better c64 color palette.
2020-12-03 18:14:49 +01:00
Irmen de Jong
a303b39cf0
added C64 'koala' image viewer example for Cx16
2020-12-03 16:02:51 +01:00
Irmen de Jong
261c0fc9b6
started adding syntax highlighting files
2020-12-02 20:48:50 +01:00
Irmen de Jong
b985604e22
slight tweak to word bitshift for large shift values
2020-12-01 22:48:02 +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
8b981f03bf
optimized reg_lesseq_w (word <= word) to avoid using extra zp word, by swapping operands
2020-12-01 02:09:48 +01:00
Irmen de Jong
d0d0910bf2
corrected greatereq_w (word >= word)
2020-12-01 01:57:12 +01:00
Irmen de Jong
b8bda867b6
optimized reg_lesseq_w (word <= word)
2020-11-30 02:26:00 +01:00
Irmen de Jong
05d3a2450c
optimized reg_less_w (word < word)
2020-11-30 01:53:44 +01:00
Irmen de Jong
d40788adfa
optimized in-place array element modification to use simpler assignment asm code
2020-11-28 00:44:38 +01:00
Irmen de Jong
83fbf86b1c
no longer generate double assignment to the indexer var for in-place modifying array variable
2020-11-27 23:46:01 +01:00
Irmen de Jong
e876008427
tiny tweak of typecasting str to uword
2020-11-26 19:21:07 +01:00
Irmen de Jong
238d8197f5
byte/word typecasts optimized even further to just use cpu registers (and fixed sign extending AY)
2020-11-26 01:33:45 +01:00
Irmen de Jong
53a600d87b
fix typecasting of signed byte to signed word in a variable
2020-11-25 22:33:41 +01:00
Irmen de Jong
936b046ed9
optimize word [operator] byte, without translateExpression()
2020-11-24 23:41:10 +01:00
Irmen de Jong
378dcfe351
fix computation error of word - byte
2020-11-24 22:23:16 +01:00
Irmen de Jong
0a330b9288
warmings
2020-11-24 22:21:54 +01:00
Irmen de Jong
09f25ffbd9
optimized in-place memory var modification, not using translateExpression()
2020-11-24 21:41:44 +01:00
Irmen de Jong
ab1232d742
optimized in-place float var modification, not using translateExpression()
2020-11-24 01:09:24 +01:00
Irmen de Jong
a7f56fe0fc
remaining float comparisons with expression now without translateExpression()
2020-11-24 00:35:30 +01:00
Irmen de Jong
58a9452c36
fixed the YSCROLL graphics mode on the C64 (mistake in 5.1)
2020-11-23 23:05:51 +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
d9a8cfed8c
updated the compiled examples disk
2020-11-22 18:45:40 +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
8136f3df5c
float-const comparison optimizations
2020-11-22 16:54:02 +01:00
Irmen de Jong
49db10539a
optimized float var equality comparison without translateExpression()
2020-11-22 14:33:03 +01:00
Irmen de Jong
08aa13c90c
rnd() functions marked as having (internal) side effect
2020-11-22 02:09:32 +01:00
Irmen de Jong
5980e58ac6
word comparison jumps now without translateExpression()
2020-11-22 01:15:05 +01:00