meisl
48d3abc1fe
* refactor RangeExpr, step 1: remove IStringEncoding as ctor arg and instead put it as arg to the two methods that actually depend on it: toConstantIntegerRange and size (as *it* calls the former)
2021-07-17 20:45:17 +02:00
meisl
3f6f25e06f
* @Disable tests re unsolved #55 , "float[] initializer with range and no explicit array size"
2021-07-17 17:12:16 +02:00
meisl
34ba07ee3b
+ expose #55 : float[] initializer as range where no array size is stated
2021-07-17 16:30:16 +02:00
meisl
ac37319d20
Merge branch 'bug_asmbinary' into testability_steps_1_2_3_again
2021-07-17 15:08:32 +02:00
meisl
b2c6274f74
* fix #54 / step 3: avoid some (= not all) complaints re the .binary filename 64tass still had/has.
...
Actually, I don't quite understand why it still says "not the real name of the file". The 64tass docs say:
> -Wno-portable
> Don't warn about source portability problems.
> These cross platform development annoyances are checked for:
> * Case insensitive use of file names or use of short names.
> * Use of backslashes for path separation instead of forward slashes.
> * Use of reserved characters in file names.
> * Absolute paths
2021-07-17 13:03:05 +02:00
meisl
402884b5ce
* fix #54 / step 2: the path stated with assembler directive .binary must be *relative to the .asm file*, not the working directory
2021-07-17 13:02:48 +02:00
meisl
23c99002c0
* fix #54 / step 1: relativize threw IllegalArgumentException if called on non-absolute path with absolute path as argument ("different type of path")
2021-07-17 13:02:35 +02:00
meisl
ee115b3337
+ expose #54 , %asmbinary when outputDir != workingDir; also: refactor compiler tests on examples and add test helpers
2021-07-17 13:02:20 +02:00
meisl
82f5a141ed
* reintroduce the conversion of CharLiteral to UBYTE literals, but now *during AST preprocessing*, not in the parser
2021-07-11 22:03:32 +02:00
meisl
0567168ea9
+ add AST node CharLiteral, *without* turning them into ubyte s. This breaks tests, particularly 3 in TestCompilerOnCharLit. I'm comitting this separately since the failure modes might be of interest (compiler says "internal error").
2021-07-11 21:32:18 +02:00
meisl
c80a15846d
* some more housekeeping re tests: gradle doesn't like .* imports for annotations, added @Disabled comments, made warnings go away
2021-07-11 19:04:53 +02:00
meisl
5e194536a8
* refactor compiler tests, again prog8test.helpers (TODO: remove duplication)
2021-07-11 18:18:27 +02:00
meisl
cd295228ef
+ TestCompilerOnImportsAndIncludes.kt: 2 tests, both passing (but see FIXME in asmIncludeFromSameFolder.p8)
2021-07-11 15:33:44 +02:00
meisl
39d5b7edb0
+ test examples for both platforms, cx16 and c64; test two more: tehtriz and textelite (the largest ones, 20KB / 36KB)
2021-07-10 21:41:51 +02:00
meisl
ddaef3e5d5
+ add tests for SourceCode.fromResources; refactor tests
2021-07-10 20:55:23 +02:00
meisl
19bb56df47
* no more scattering magic "@embedded@" all over the place: add SourceCode.isFromResources, *change Module.source from type Path to type SourceCode*
2021-07-09 17:32:33 +02:00
meisl
d3e026d82a
+/* non-unique module names: provide more info, add TODO
2021-07-09 13:44:44 +02:00
meisl
7b89228fa7
+ add TODOs re ICompilationTarget
2021-07-09 13:14:02 +02:00
meisl
81abf29bec
Merge branch 'irmen:v7.1' into v7.1
2021-07-09 11:03:31 +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
a7736d88a9
got rid of Module.isLibraryModule variable, is now function that derives it from source path
2021-07-04 15:44:25 +02:00
Irmen de Jong
049dbf5a78
improve compiler error when defining duplicate block names
2021-07-04 15:14:39 +02:00
meisl
07d8052a57
* fix comments: no more problem with exitProcess
2021-07-02 13:28:19 +02:00
meisl
db9edb477e
* less confusing assertion messages (seemingly contradictory in case of failure)
2021-07-02 12:38:24 +02:00
Irmen de Jong
9bd3a6758a
improve testability: use error returnvalues instead of using exitProcess()
2021-07-02 00:11:21 +02:00
meisl
006059438f
+ same warning on the other "TestCompilerXyz" file
2021-06-28 18:49:01 +02:00
meisl
84ea3b9788
+ compiler/test/TestCompilerOnExamples.kt: *not actually unit tests - just a kludge!* (but better than nothing)
2021-06-28 18:42:05 +02:00
meisl
b667abde10
+ compiler/test/TestCompilerOnCharLit.kt
2021-06-28 18:24:35 +02:00
Irmen de Jong
f53848b4b9
wording and version
2021-06-24 21:25:35 +02:00
Irmen de Jong
3f58eca1be
updated gradle scripts (fixed warnings), updated some library dependencies
2021-06-13 18:10:07 +02:00
Irmen de Jong
a2588a178c
added some simple unit tests to the ast parser
2021-06-13 14:59:57 +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
f2844bdf1a
fix crash when using labels in pointerexpression lab+index
2021-06-10 00:44:12 +02:00
Irmen de Jong
73863acc12
version bump
2021-06-06 10:50:05 +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
53b20ba625
name
2021-06-01 22:22:58 +02:00
Irmen de Jong
e7f6f0950f
identified asm symbol name scoping bugs
2021-06-01 22:21:50 +02:00
Irmen de Jong
078485134d
split up unittests files
2021-06-01 22:07:39 +02:00
Irmen de Jong
67b1766e32
don't use ./ prefix for %asmbinary paths
2021-06-01 19:30:53 +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
e145d2255e
added palette.set_all_black() and set_all_white()
2021-05-26 21:33:18 +02:00
Irmen de Jong
442fa07dd4
relax name conflict rule regarding block names vs subroutine params
2021-05-26 21:32:54 +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
d7f83f8df2
version bump
2021-05-20 23:38:41 +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
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
e4fb5946dd
optimize cx16 sys.wait and sys.waitvsync to use WAI instruction
2021-05-17 18:44:42 +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
68d7b4649e
label and directive location docs
2021-05-16 12:32:08 +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
bc731e6f8e
fix compiler crash when taking address of label
2021-05-16 00:07:48 +02:00
Irmen de Jong
b9bd541532
restored optimization of printing short strings into just CHROUT
...
but added comment about known-constness still to be resolved
2021-05-13 01:46:43 +02:00
Irmen de Jong
83639c2535
code style
2021-05-13 01:00:19 +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
e2f5752d9a
add f_open_w, f_write, f_close_w to diskio to be able to save parts of memory sequentially
2021-05-01 19:13:56 +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
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
ed7479c854
version 7 due to removal of structs and v39 cx16 support changes
2021-04-29 00:15:54 +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
1bde7c7718
ver
2021-04-28 20:05:56 +02:00
Irmen de Jong
17068130bb
removed PROG8_LIBDIR env variables and replaced with -libdirs command line option
2021-04-28 20:04:23 +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
98eff2701b
optimized gfx2.plot() for lores-monochrome
2021-04-28 02:15:07 +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
42033ebd35
added petscii mappings for ^, _, \, {, } and |
2021-04-19 02:18:55 +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
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
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
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
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
d116eb7655
paranoid, be sure to not kill carry
2021-04-06 23:55:20 +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
3e3b0bcd8b
callgraph improved unused node checking
2021-04-05 20:45:18 +02:00
Irmen de Jong
4c1eb1b12a
callgraph
2021-04-05 20:32:30 +02:00
Irmen de Jong
530d03d284
callgraph
2021-04-05 18:50:46 +02:00
Irmen de Jong
619fa9b65e
callgraph
2021-04-05 18:03:36 +02:00
Irmen de Jong
2f62271453
callgraph
2021-04-05 00:55:27 +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
9e2b8a2aa9
fix ast node duplication/reference bug in certain optimizers
2021-04-02 19:01:46 +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
1fe4439395
fixed wrong return value when calling other subroutines in the return expression
2021-04-01 21:56:24 +02:00
Irmen de Jong
3f30d3aa89
added sys.waitrastborder() for c64
2021-04-01 18:53:16 +02:00
Irmen de Jong
129e17b33a
added sys.waitvsync() + missing documentation
2021-04-01 18:31:33 +02:00
Irmen de Jong
bf2d8c3f4b
update kotlin plugin to 1.4.32
2021-03-31 20:52:05 +02:00
Irmen de Jong
b29f04ce01
fix unittest
2021-03-31 20:49:35 +02:00
Elektron72
605df7c91c
Move code used for all CBM systems to new package
...
AssemblyProgram.kt and Petscii.kt are not only used for the Commodore
64; they are also used for the Commander X16, and will likely be used
for any future Commodore systems added to Prog8. Therefore, they should
be moved to a new package containing functionality shared between these
systems.
2021-03-29 17:21:48 -04:00
Irmen de Jong
ec60cad8bb
commander-x16 prototype board #2 (rom v39+) address changes
2021-03-27 22:20:46 +01:00
Irmen de Jong
6aa0f5a392
small optimization
2021-03-27 15:45:30 +01: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
e7ef2ed31b
todo
2021-03-23 23:48:53 +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
bd295ffc99
array indexer complexity is now dealt with in the asm-generator only
2021-03-22 19:40:57 +01:00
Irmen de Jong
cbc3e37a89
stuff
2021-03-22 02:29:59 +01:00
Irmen de Jong
0991131fa8
don't stript unused asmsub definitions
2021-03-21 19:55:21 +01:00
Irmen de Jong
2e928bd3c2
fix compiler crash for certain str argument to asm functions
2021-03-21 18:39:39 +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
1dbc902513
fix bugs in uword <= and >= comparisons
2021-03-18 18:41:41 +01:00
Irmen de Jong
330e691b78
wip
2021-03-18 02:43:08 +01:00
Irmen de Jong
6780d4f562
fix bug in uword > comparison
2021-03-18 02:21:21 +01:00
Irmen de Jong
b30b8b7368
fix bug in float < and > comparisons
2021-03-18 01:41:54 +01:00
Irmen de Jong
3df182b8c3
created extensive comparison test suite
2021-03-18 00:50:13 +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
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
6381d2b6ac
improve word '<', word (u)word '<=' , uword '>=' codegen
2021-03-16 18:15:47 +01:00
Irmen de Jong
d2ab5f230d
example TODOs
2021-03-16 01:09:25 +01:00
Irmen de Jong
824b41d457
improve word '>' and '>=' codegen
2021-03-16 00:48:03 +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
eb3594b18c
revert to just using comparison expressions in graphics code (we're optimizing these now!)
2021-03-16 00:11:55 +01:00
Irmen de Jong
852d85d010
improve uword '<' and '>' codegen
2021-03-16 00:03:51 +01:00
Irmen de Jong
5e0aef04fe
improve (u)byte '>=' codegen
2021-03-15 23:20:16 +01:00
Irmen de Jong
a00c693f93
improve (u)byte '<=' codegen
2021-03-15 23:17:04 +01:00
Irmen de Jong
c943da1448
improve ubyte '<' and '>' codegen
2021-03-15 23:12:52 +01:00
Irmen de Jong
b630fae580
refactor byte '==', '!=', '<' and '>' codegen 2
2021-03-15 23:08:30 +01:00
Irmen de Jong
38e40084f1
refactor byte '==', '!=', '<' and '>' codegen
2021-03-15 22:47:18 +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
a00c39e9cf
compiler error instead of crash when using functioncall without returnvalue
2021-03-12 19:31:04 +01:00
Irmen de Jong
1c1da8e38e
additional optimization to the bresenham line routines
2021-03-10 18:49:40 +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
2431ed811a
don't remove typecasts in asmsub argument lists
2021-03-09 21:29:48 +01:00
Irmen de Jong
6bd205c02a
fix c64 bresenham line inaccuracy
2021-03-09 21:07:55 +01:00
Irmen de Jong
62ec77e148
ver
2021-03-08 23:35:52 +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
e4bca5fe47
version
2021-03-06 23:07:30 +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
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
8dfe510883
avoid compiler crash when evaluating const expressions fails due to things like integer out of bounds
2021-03-04 01:32:02 +01:00
Irmen de Jong
96ba9f5902
spelling correction
2021-03-04 01:31:29 +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
9fe32c1c34
codegen uses 'bra' on 65c02 instead of 'jmp'
2021-02-28 16:46:08 +01:00
Irmen de Jong
0e0278c84a
for loops now use 'bra' if available
2021-02-28 16:35:59 +01:00
Irmen de Jong
dea775a9cd
package refactor
2021-02-28 16:29: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
8b1e1e68fa
switch to Kotlin's new JVM IR compilation
2021-02-26 01:10:00 +01:00
Irmen de Jong
fd11927708
optimized highres 4c position calc a bit
2021-02-26 00:43:51 +01:00
Irmen de Jong
cd500fee8c
wording
2021-02-25 00:52:27 +01:00
Irmen de Jong
f275ed96ea
optimized palette.set_color()
2021-02-24 00:01:27 +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
c677f0a875
fixed string interning to also consider the alt-encoding
2021-02-23 23:27:44 +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
0e62f5b759
don't remove subroutines in a block marked with "force_output"
2021-02-21 23:25:26 +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
4aca8bb8df
also track subroutines in the callgraph that only get their address taken
2021-02-21 22:09:49 +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
781915d2cf
reducing dependencies
2021-02-20 17:54:33 +01:00
Irmen de Jong
f4cef3eaf2
reducing dependencies
2021-02-20 17:19:54 +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
2aa39757b4
reduce dependencies on global compilationtarget
2021-02-19 19:02:29 +01:00
Irmen de Jong
39d32a3600
refactor cpuCheck
2021-02-19 18:48:12 +01:00
Irmen de Jong
219d17de34
reduce dependencies on global compilaiontarget
2021-02-19 18:33:54 +01:00
Irmen de Jong
9bb5b454e4
reduce dependencies on global compilaiontarget
2021-02-18 23:44:26 +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
ac0b1da3fc
machinedefinition doesn't import system libs itself anymore
2021-02-18 00:43:32 +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
fa527f8624
restored optimization of txt.print() with strings of lengths 1 or 2
2021-02-16 23:37:11 +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
62dda4d891
fix asm bug in conv.any2uword
2021-02-14 17:13:56 +01:00
Irmen de Jong
53f0318187
version 6.1
2021-02-14 00:07:45 +01:00
Irmen de Jong
5e6e711f33
optimize pokew()
2021-02-14 00:05:57 +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
1bbd77fddb
added txt.column()
2021-02-10 22:47:49 +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
3502f65332
reducing dependencies
2021-02-09 19:03:21 +01:00
Irmen de Jong
628390c3b5
reducing dependencies
2021-02-09 18:56:47 +01:00
Irmen de Jong
bc37097df2
reducing dependencies
2021-02-09 18:49:25 +01:00
Irmen de Jong
7d98275763
reducing dependencies
2021-02-09 02:06:27 +01:00
Irmen de Jong
d6ffb549f6
reducing dependencies
2021-02-09 01:47:05 +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
d9244f22c2
reducing ast dependencies - separate Ast compilation module
2021-02-09 01:06:11 +01:00
Irmen de Jong
c97d76dbf2
reducing ast dependencies
2021-02-09 00:05:56 +01:00
Irmen de Jong
9e05e97d7f
reducing ast dependencies
2021-02-07 19:38:20 +01:00
Irmen de Jong
ccd1516637
reducing ast dependencies
2021-02-07 18:44:38 +01:00
Irmen de Jong
f1f51a01c6
reducing ast dependencies
2021-02-07 18:34:55 +01:00
Irmen de Jong
be75b8dbe5
reducing ast dependencies
2021-02-07 07:05:00 +01:00
Irmen de Jong
02fae0e722
reducing ast dependencies
2021-02-07 06:50:59 +01:00
Irmen de Jong
e35b739579
reducing ast dependencies
2021-02-07 06:39:08 +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
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
f1478d776b
fix vertical line highres 4color
2021-02-05 18:09:21 +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
51bc539468
added palette.set_rgb()
2021-01-29 02:46:07 +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
c8855b2b10
better error msg
2021-01-27 02:40:56 +01:00
Irmen de Jong
a910c0fddb
gfx2 highres 4colors
2021-01-27 02:31:20 +01:00
Irmen de Jong
fd55611cac
asmsubs: don't use stack for simple lsb/msb/mkword arguments
2021-01-27 01:41:55 +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
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
195cd7597d
fix pointer-to-pointer assignment
2021-01-23 18:50:46 +01:00
Irmen de Jong
4a81406262
fix diskio rename() and delete()
2021-01-23 17:57:30 +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
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
5c13918f11
cx16 reset_system() bank selection change
2021-01-17 18:28:43 +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
76d54fbe5c
optimize assignment to memory pointer with fixed byte offset
2021-01-15 20:46:47 +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
7277c08fa6
added textio.spc(). assem tweaks.
2021-01-14 22:51:09 +01:00
Irmen de Jong
8ac17ae14e
fix assem parsing of 4 letter instructions
2021-01-14 18:41:29 +01:00
Irmen de Jong
e0794db33a
version 6.0beta
2021-01-13 22:41:11 +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
a0ec37b35b
compiler error for missing return value
2021-01-10 16:36:08 +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
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
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
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
7d6a0ab256
added conv.any2uword()
2021-01-05 22:28:46 +01:00
Irmen de Jong
dde6919446
allow when choice values to be replaced in ast (const-folding)
2021-01-05 03:49:11 +01:00
Irmen de Jong
54fc9c91ac
fix hole in scratch zp allocation of cx16
2021-01-05 03:48:36 +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
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
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
5a846bdeb5
fixed invalid integer constant expression evaluation leading to wrong results
2021-01-02 20:33:59 +01:00
Irmen de Jong
edd3a22848
added strfind()
2021-01-02 17:49:58 +01:00
Irmen de Jong
08d44ae553
fix compiler errors
2021-01-02 15:40:24 +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
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
b4931c9a1f
optimize horzontal_line drawing
2020-12-30 18:58:47 +01:00
Irmen de Jong
ddfcf45d40
added some missing clobbers() specs
2020-12-30 16:59:31 +01:00
Irmen de Jong
ee12236d53
added rect functions
2020-12-30 00:53:13 +01:00
Irmen de Jong
df6698c98f
fixed circle and disc geometry
2020-12-30 00:11:42 +01:00
Irmen de Jong
c3b82f2cfa
optimized disc()
2020-12-29 23:58:11 +01:00
Irmen de Jong
64c89f1c8f
fix circle and disc geometry, added rect and line routines
2020-12-29 23:52:48 +01:00