Commit Graph

1618 Commits

Author SHA1 Message Date
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
Irmen de Jong
e1dc283d4b byte comparison jumps now without translateExpression() 2020-11-21 23:31:26 +01:00
Irmen de Jong
8be234973c rollback failed optimization of memory expressions (code size got too large) 2020-11-21 19:09:02 +01:00
Irmen de Jong
7def8ff2cd beginning to optimize comparisons more 2020-11-21 18:44:17 +01:00
Irmen de Jong
340b1c2e42 added balls demo/benchmark 2020-11-21 18:03:57 +01:00
Irmen de Jong
7e0f7ba438 todos 2020-11-20 23:46:14 +01:00
Irmen de Jong
fefd9b52a8 fix for loop with signed byte loopvar over non-const 2020-11-20 22:54:24 +01:00
Irmen de Jong
afd155ac4f optimize for loops over non const range, without translateExpression() 2020-11-20 22:44:16 +01:00
Irmen de Jong
ee724eb4f1 float variable casts without translateExpression() 2020-11-19 22:58:38 +01:00
Irmen de Jong
2f1f20ea11 rename 2020-11-19 00:28:49 +01:00
Irmen de Jong
063bcf17d8 various inplace modification for word vars now without translateExpression() 2020-11-19 00:08:10 +01:00
Irmen de Jong
2da28864e9 inplace not and invert for memory now without translateExpression() 2020-11-18 23:13:07 +01:00
Irmen de Jong
59ae3c3fcd << and >> for byte values slightly optimized, no longer use translateExpression(). preparing for more operator optimizations. 2020-11-18 01:27:02 +01:00
Irmen de Jong
7fa21fbdff @(...) in an expression is now more efficient, without translateExpression() 2020-11-18 00:58:04 +01:00
Irmen de Jong
e95af7498e comparing function call result to 0 now more efficient, without translateExpression() 2020-11-18 00:05:48 +01:00
Irmen de Jong
79c75adac1 repeat and when without translateExpression() 2020-11-17 23:52:13 +01:00
Irmen de Jong
d212f69d89 ++/-- and @Pc without translateExpression() 2020-11-17 23:40:42 +01:00
Irmen de Jong
edf5e69d39 optimized swap() 2020-11-15 18:04:54 +01:00
Irmen de Jong
574eb0d174 refactoring asmassignment code blocks into utility functions 2020-11-15 17:44:47 +01:00
Irmen de Jong
5ebaaff64b refactoring asmassignment code blocks into utility functions 2020-11-15 15:07:55 +01:00
Irmen de Jong
5c9e0c9f51 emit extra nop for breakpoints so vice label list works again (requires 64tass 1.55.2257 or newer!) 2020-11-15 14:31:06 +01:00
Irmen de Jong
8132edbb08 updated some compiled example 2020-11-10 22:51:01 +01:00
Irmen de Jong
d29ce78c86 todos and version 2020-11-10 22:44:48 +01:00
Irmen de Jong
94bc9d7a69 string compare in expression no longer via stack args 2020-11-10 21:48:28 +01:00
Irmen de Jong
e8faec0932 re-introduced more aggressive binexpr splitting optimization 2020-11-10 21:17:33 +01:00
Irmen de Jong
69ca4fe304 cleanup 2020-11-10 21:02:12 +01:00
Irmen de Jong
cd99fe46fd finished call convention change for builtin functions now no longer via stack 2020-11-10 00:43:45 +01:00
Irmen de Jong
4825b4dc68 fix passing address of pass-by-reference assignment to a UWORD 2020-11-10 00:35:24 +01:00
Irmen de Jong
8d0607ef58 fix missing float casts 2020-11-09 23:57:50 +01:00
Irmen de Jong
225295a7d8 fix float casts 2020-11-09 01:18:22 +01:00
Irmen de Jong
4cd74daf53 float eval result var added, but some examples are broken 2020-11-08 18:54:02 +01:00
Irmen de Jong
6eb9118197 example 2020-11-07 01:08:56 +01:00
Irmen de Jong
d0bd2f522c rol and ror 2020-11-07 00:56:54 +01:00
Irmen de Jong
661c757236 fix string compare in expressions 2020-11-06 22:59:56 +01:00
Irmen de Jong
aaa20093ef cleaning up and correcting cc for builtin functions 2020-11-06 00:56:26 +01:00
Irmen de Jong
800b5b2a43 cleaning up and correcting cc for builtin functions 2020-11-05 02:29:33 +01:00
Irmen de Jong
9d17421c66 implemented the arithmetic functions with new cc. fixed sgn(). 2020-11-04 02:27:29 +01:00
Irmen de Jong
0edd50e956 implemented cc for abs() 2020-11-03 23:01:23 +01:00
Irmen de Jong
288d4f08b3 implemented cc for integer sin and cos variants 2020-11-03 22:42:59 +01:00
Irmen de Jong
526e4b8bdc fix faulty binexpr splitting 2020-11-03 21:31:08 +01:00
Irmen de Jong
e0c5ccc16b begun with converting builtin functions to new call convention 2020-11-02 23:00:20 +01:00
Irmen de Jong
29f5a85158 callconv 2020-11-01 19:25:23 +01:00
Irmen de Jong
431f2a2088 optimized memset and memcopy on CX16, memcopy can deal with any size now 2020-11-01 08:00:32 +01:00
Irmen de Jong
e05ea887f6 implement proper returning of float values via FAC1 2020-11-01 06:27:17 +01:00
Irmen de Jong
95c0425151 improved sqrt16 2020-11-01 05:45:49 +01:00
Irmen de Jong
47cbc7b1f9 added a custom-charset example for the c64 2020-10-31 02:26:59 +01:00
Irmen de Jong
e7b75d591c assigning float results from functions (from FAC1) 2020-10-31 01:22:19 +01:00
Irmen de Jong
99f7d469f4 assigning string result from subroutine 2020-10-30 22:22:06 +01:00
Irmen de Jong
8a6ef17fbf option 2020-10-30 21:51:15 +01:00
Irmen de Jong
87862f772a better handling of inferred type errors 2020-10-30 21:24:49 +01:00
Irmen de Jong
3efa8da8e0 made versions of various builtin funcs returning value in registers 2020-10-30 14:35:20 +01:00
Irmen de Jong
3e28ed4fe4 mader versions of abs() and sgn() returning value in register 2020-10-28 22:56:13 +01:00
Irmen de Jong
44949460ed change for subroutine return values via registers instead of stack 2020-10-28 00:29:34 +01:00
Irmen de Jong
83cc19ad6f preparing for subroutine return values via registers instead of stack 2020-10-23 20:56:10 +02:00
Irmen de Jong
ff3f985658 refactoring 2020-10-22 23:41:16 +02:00
Irmen de Jong
2ba6c9ccbe textelite 1.1 finalize load/save, add it to examplesd disk 2020-10-20 21:49:06 +02:00
Irmen de Jong
30da26b9a9 tackling problem of invalid reuse of auto indexer var 2020-10-20 21:23:43 +02:00
Irmen de Jong
1a36302cf1 rest of optimizations following simplification of array indexer 2020-10-19 23:57:00 +02:00
Irmen de Jong
c1ce0be451 slightly optimize expression code for most common cases +/- 1 , */div 2 2020-10-19 22:50:38 +02:00
Irmen de Jong
c0a5f8fef0 removed double mul code 2020-10-19 21:32:44 +02:00
Irmen de Jong
702cf304d0 implemented missing swap() operations 2020-10-19 21:26:11 +02:00
Irmen de Jong
4dee8b6048 remove superfluous value eval 2020-10-19 02:38:26 +02:00
Irmen de Jong
ec665e0cc1 fixed incorrect removal of certain assignments that are NOT double 2020-10-19 02:16:23 +02:00