Commit Graph

352 Commits

Author SHA1 Message Date
Irmen de Jong
2b9316c4ff reworked program init logic so that it is included as the first thing inside main.start itself, to allow better stand alone asm 2020-09-23 22:29:21 +02:00
Irmen de Jong
b93d9ecd7e memtop cx16 2020-09-23 02:34:49 +02:00
Irmen de Jong
4daf75a8cc better checks for invalid %output and %launcher values. Added diskdir examples. 2020-09-23 00:22:36 +02:00
Irmen de Jong
af6731c9c8 preparing version 4.3 2020-09-22 21:50:56 +02:00
Irmen de Jong
25cf0d2b94 don't suggest a mult replacement routine to be used, faster ones are likely to require large tables 2020-09-22 21:19:01 +02:00
Irmen de Jong
9389791d91 created own circle and disc subroutines for cx16 because its rom routine is not yet implemented and just does a BRK 2020-09-22 02:52:09 +02:00
Irmen de Jong
aa8191d0a1 introduced graphics module wrapper for cx16 to make even more programs compatible 2020-09-22 02:21:16 +02:00
Irmen de Jong
0d5c78e875 introduced graphics module wrapper for cx16 to make even more programs compatible 2020-09-22 02:12:01 +02:00
Irmen de Jong
d1d224b7fc fixed print_f on cx16. Some more examples are now multi-platform. 2020-09-22 01:34:05 +02:00
Irmen de Jong
ffa38955d6 improved scroll_down and scroll_up to use VERA dual data ports instead of a copybuffer 2020-09-22 00:34:43 +02:00
Irmen de Jong
8d82fb6d8f added cx16 txt.scroll_right 2020-09-22 00:00:22 +02:00
Irmen de Jong
306770331a added cx16 txt.scroll_left 2020-09-21 23:39:25 +02:00
Irmen de Jong
d3f433c8cf specify VERA data port to use 2020-09-21 23:04:01 +02:00
Irmen de Jong
cf49cbd1f8 more consistent about the system reset routine 2020-09-21 22:35:07 +02:00
Irmen de Jong
8a99e75299 added cx16 txt.scroll_down 2020-09-21 22:06:48 +02:00
Irmen de Jong
2dbf849c82 added cx16 txt.scroll_up 2020-09-21 21:39:36 +02:00
Irmen de Jong
ba3dce0b4c optimized cx16 txt screen functions to use VERA autoincrement 2020-09-21 19:30:21 +02:00
Irmen de Jong
ca9588380a added cx16 txt.clear_screencolors 2020-09-21 18:42:28 +02:00
Irmen de Jong
de06353194 auto select correct library to import based on target, instead of having c64- and cx16- prefix variants
some programs are now 100% source compatible between C64 and Cx16 targets!
import libraries have been rena;med
2020-09-21 00:50:09 +02:00
Irmen de Jong
4b747859b3 types of constant values now actually follow their declared const var type 2020-09-20 01:14:53 +02:00
Irmen de Jong
2201765366 mult fixes 2020-09-20 00:17:33 +02:00
Irmen de Jong
dfa1d5e398 removed the ".w" word suffix (it confused the parser). 2020-09-19 23:27:40 +02:00
Irmen de Jong
ce9a90f626 updates to make c16txtio more complete 2020-09-19 23:00:47 +02:00
Irmen de Jong
2deb18beb2 tweaks to c64 txtio. Fixed expression evaluation of bitwise invert. 2020-09-19 22:37:24 +02:00
Irmen de Jong
0f7454059c tweaks to c64 txtio 2020-09-19 22:10:33 +02:00
Irmen de Jong
f9ba09ac4d todo 2020-09-19 17:39:46 +02:00
Irmen de Jong
dd4a56cb5f cx16 safe clobbers for now 2020-09-15 00:14:36 +02:00
Irmen de Jong
48858019b7 added the last of the optimized mul_word asm routines 2020-09-14 23:54:01 +02:00
Irmen de Jong
aff6b1fca5 added some more optimized mul_word asm routines 2020-09-14 23:03:18 +02:00
Irmen de Jong
d260182ef3 added some more optimized mul_byte asm routines 2020-09-14 22:06:40 +02:00
Irmen de Jong
82d7179c92 printf now uses proper zp addressing 2020-09-13 21:01:19 +02:00
Irmen de Jong
f42746ba06 reg_x removal: c64textio and c64lib. last one. 2020-09-13 20:52:29 +02:00
Irmen de Jong
1f69deaccd reg_x removal: c64floats 2020-09-13 20:44:55 +02:00
Irmen de Jong
ea8b7ab193 reg_x removal: math.asm and some others 2020-09-13 20:38:50 +02:00
Irmen de Jong
9938959026 reg_x removal: prog8lib 2020-09-13 20:25:30 +02:00
Irmen de Jong
81f7419f70 fix X register clobbering in asmfunc call, fixed graphics.plot() 2020-09-12 01:23:56 +02:00
Irmen de Jong
2f951bd54d tweaking cobra mk3 2020-09-11 19:46:11 +02:00
Irmen de Jong
49a0584c54 added a %target directive 2020-09-09 22:53:34 +02:00
Irmen de Jong
e21aa2c8f0 better naming of the optimized math mult routines 2020-09-09 22:16:37 +02:00
Irmen de Jong
02e29e6990 added some preliminary clobber specs to some cx16 graphics calls, This fixes the 3d cube gfx 2020-09-07 04:06:46 +02:00
Irmen de Jong
e19de0901e Fix cx16 system reset. Added cx16 VIA registers. Fix cx16 VERA register widths. 2020-09-07 03:09:09 +02:00
Irmen de Jong
1377bed988 fix assembly for cx16 when zp is not basicsafe 2020-09-06 17:58:05 +02:00
Irmen de Jong
8f9f947c42 fix some issues with float const 0.0 and 1.0 2020-09-05 02:07:41 +02:00
Irmen de Jong
13d7f239ab floating point 1.0 no longer referenced from ROM because cx16 doesn't have it. Added some more cx16 examples. 2020-09-05 00:17:58 +02:00
Irmen de Jong
809917f13b version 4.1 2020-08-31 21:44:38 +02:00
Irmen de Jong
2b35498370 added CX16 txt.setcc and swirl examples that use it 2020-08-31 21:01:18 +02:00
Irmen de Jong
f45eabdd9e added CX16 VERA registers, made txt.fill_screen work on CX16 2020-08-31 18:23:52 +02:00
Irmen de Jong
438f3ee8d2 make GIVUAYFAY work (unsigned word to float) 2020-08-31 17:16:51 +02:00
Irmen de Jong
5eae7a2b93 tweak mandelbrots and c64 graphics plot() doesnt work with XY parameter 2020-08-31 00:36:40 +02:00
Irmen de Jong
364ef3e55c tweak cx16 mandelbrots 2020-08-31 00:03:05 +02:00
Irmen de Jong
e61818f194 tweak cx16 mandelbrots 2020-08-30 19:31:20 +02:00
Irmen de Jong
5d90871789 got floating points working in commanderx16, added txt.color() to set text color 2020-08-30 00:15:18 +02:00
Irmen de Jong
88a9e09918 got floating points working in commanderx16 2020-08-29 23:55:26 +02:00
Irmen de Jong
c50ecf6055 fix for loop asm creation with word loopvar 2020-08-29 02:05:24 +02:00
Irmen de Jong
e112dfd910 implemented signed byte and word division 2020-08-29 00:00:53 +02:00
Irmen de Jong
9154d8bd37 optimizing X register saving for 65c02 using phx/plx instead of zp location 2020-08-28 22:11:33 +02:00
Irmen de Jong
0b55372b3b cleanup cx16 things and added call signatures. c64graphics moved into built-in libraries. 2020-08-28 21:42:53 +02:00
Irmen de Jong
d97da3bb7b implemented almost all math operations 2020-08-27 20:47:22 +02:00
Irmen de Jong
f08fc18ab5 renamed c64scr. to txt. 2020-08-27 18:10:22 +02:00
Irmen de Jong
9cec554f7c moved the type conversion routines to their own library file to avoid duplication 2020-08-26 20:52:38 +02:00
Irmen de Jong
08b25e610d commander x16 improvements 2020-08-26 19:34:12 +02:00
Irmen de Jong
b939562062 added preliminary CommanderX16 machine target support. Fixed nullpointer when importing a missing file. 2020-08-26 01:56:26 +02:00
Irmen de Jong
3ce692bb10 even better machinetarget independence 2020-08-25 19:56:53 +02:00
Irmen de Jong
78bdbde3ae refer to ZP scratch constants from asm code via the global P8ZP constants as well 2020-08-25 19:44:08 +02:00
Irmen de Jong
8d8c066447 made the ZP and compilation target more generic 2020-08-25 19:32:31 +02:00
Irmen de Jong
d19b17cbfe optimize strlen() 2020-08-25 17:31:47 +02:00
Irmen de Jong
b9ca1c2e2c more uniform code for array indexing (all using scaled offset now) 2020-08-23 20:25:00 +02:00
Irmen de Jong
b27cbfac5e removed lsl() and lsr() functions just use <<=1 and >>=1 2020-08-22 16:44:48 +02:00
Irmen de Jong
bfc8a26381 implemented bit shifting for non-const amounts 2020-08-22 16:13:52 +02:00
Irmen de Jong
ef7744dbda asm fix 2020-08-21 04:02:10 +02:00
Irmen de Jong
c83a61c460 some float asm code added for in-place 2020-08-21 03:06:37 +02:00
Irmen de Jong
8d6220ce51 added most essential of the new in-place assignment code 2020-08-21 02:17:40 +02:00
Irmen de Jong
e1812ce16c fix typecast removal error. 2020-08-20 18:07:48 +02:00
Irmen de Jong
402827497e fix float array assignment 2020-07-26 23:32:20 +02:00
Irmen de Jong
cb9825484d some more optimized in-array assignments codegeneration 2020-06-17 21:41:38 +02:00
Irmen de Jong
ceb2c9e4f8 added string value assignment, leftstr, rightstr, substr functions 2020-06-06 00:05:39 +02:00
Irmen de Jong
a6bee6a860 some slight tweaks to asm for setting float value in array 2020-04-03 22:44:10 +02:00
Irmen de Jong
d22780ee44 implemented asm for lsl array values 2020-04-03 21:45:52 +02:00
Irmen de Jong
f8b0b9575d implemented asm for rol array values 2020-04-03 21:31:39 +02:00
Irmen de Jong
4274fd168e implemented asm for rol2 array values 2020-04-03 21:24:55 +02:00
Irmen de Jong
be7f5957f3 implemented asm for ror2 array values 2020-04-03 21:04:42 +02:00
Irmen de Jong
f2e5d987a9 implemented asm for ror array values 2020-04-03 00:03:42 +02:00
Irmen de Jong
15e8e0bf6d implemented asm for lsr array values 2020-04-02 23:38:45 +02:00
Irmen de Jong
b73da4ed02 some more obvious optimizations for X+X and X-X 2020-03-31 23:54:01 +02:00
Irmen de Jong
152888ee93 fix direcetmemoryread invalid asm 2020-03-26 22:46:05 +01:00
Irmen de Jong
131fe670a4 optimized scroll routines by removing needless twin loops 2020-03-24 17:33:47 +01:00
Irmen de Jong
11e9539416 smooth scroll 2020-03-24 02:42:32 +01:00
Irmen de Jong
50a85ee6b0 attempt to optimize asm for bitshifts more. 2020-03-23 22:59:29 +01:00
Irmen de Jong
f0d4c3aba9 moved initialvalues to asmgen, fixed sgn bug and internal float 0.0 variable disappearing bug 2020-03-22 18:17:12 +01:00
Irmen de Jong
4fbdd6d570 fix ubyte number print bug for 100-109 and 200-209 missing the tens digit 2020-03-22 01:49:05 +01:00
Irmen de Jong
4929c198ba tweak error reporting, expanded lines and circles example 2020-03-22 00:43:46 +01:00
Irmen de Jong
85c7f8314b added exit(rc) builtin function to immediately exit the program with a return code in A register 2020-03-13 02:08:18 +01:00
Irmen de Jong
7fbe486dff fix eval stack register X error in print_uw 2020-03-13 00:50:30 +01:00
Irmen de Jong
aa36acd65a implemented reverse(floatarray) builtin function 2020-03-11 23:18:03 +01:00
Irmen de Jong
98a638a2f3 split asmsub and romsub declarations 2020-03-10 23:09:31 +01:00
Irmen de Jong
96d8a7f0d7 float assembly code moved to separate library file 2020-03-10 22:03:24 +01:00
Irmen de Jong
52769decd4 fix assembler float truncation warning 2019-11-27 22:36:59 +01:00
Irmen de Jong
b5d1e8653d tiny cleanups 2019-10-20 23:52:26 +02:00
Irmen de Jong
f6d4c90dea improved number-to-decimal routines 2019-09-23 20:44:41 +02:00
Irmen de Jong
adfddddac6 attempt to fix bcd 2019-09-05 21:38:40 +02:00
Irmen de Jong
9edc92ec29 more bitshift asm stubs (actual functions still to be done) 2019-08-23 23:06:36 +02:00
Irmen de Jong
1d178080a3 more bitshift asm 2019-08-23 21:33:43 +02:00
Irmen de Jong
1cc1f2d91d reverse() added (byte+word) 2019-08-18 02:05:51 +02:00
Irmen de Jong
d837cc11f9 sort() added (bytes+words) 2019-08-18 00:04:03 +02:00
Irmen de Jong
27f987f0ae fixed bit shifts, added sgn() function 2019-08-17 16:44:28 +02:00
Irmen de Jong
b44e76db57 fix any/all assembly routine, added asm for min/max/sum/ etc aggregates
removed avg function because of hidden internal overflow issues
2019-08-11 16:13:09 +02:00
Irmen de Jong
f29ec3b4e1 relaxed symbol shadowing 2019-08-04 18:52:03 +02:00
Irmen de Jong
fba149ee28 removed the ~ before block names 2019-07-29 23:11:13 +02:00
Irmen de Jong
8e8c112ff0 improved subroutine param ast checks, added asm for Carry parameter 2019-07-29 00:33:19 +02:00
Irmen de Jong
b0dda08e74 assembler reserved symbols checked 2019-07-28 23:37:33 +02:00
Irmen de Jong
776c844d02 more ast-codegen v2 2019-07-23 01:36:49 +02:00
Irmen de Jong
3cf87536ff fix asmsub syntax 2019-07-09 07:24:21 +02:00
Irmen de Jong
d6b6254b72 simplified the asmsub syntax 2019-07-08 23:00:18 +02:00
Irmen de Jong
a9bbe0bc40 removed the memory keyword instead use & now (reuse the address-of operator to reduce the number of different concepts in the grammar) 2019-04-12 22:00:32 +02:00
Irmen de Jong
fb2796ac06 truly fix min(f)/max(f) also fix ceil(f) 2019-04-10 23:14:28 +02:00
Irmen de Jong
742b15357b fix all(f) 2019-04-10 22:42:48 +02:00
Irmen de Jong
ac6ed27052 restore tweaks in c64flt.p8 2019-04-10 22:18:45 +02:00
Irmen de Jong
fc47d3feb8 repaired min(f) max(f) fixes #13 2019-04-07 23:19:31 +02:00
Irmen de Jong
905d8a0c06 actually, get rid of integer pow() because a naive multiplication loop approach is way too slow 2019-03-31 18:04:19 +02:00
Irmen de Jong
03d0411679 pow_f implemented 2019-03-31 14:28:38 +02:00
Irmen de Jong
7114d3193c some cleanups in library asm code 2019-03-21 22:36:46 +01:00
Irmen de Jong
f3fc2fe523 irq handler saves zeropage scratch registers, fixes #8 2019-03-19 01:22:26 +01:00
Irmen de Jong
0820716e7b added sqrt16() integer square root 2019-03-16 19:25:47 +01:00
Irmen de Jong
191707cd37 added new c64utils.str2(u)word that doesn't use kernel float routines
fixed processing of register pair return value of asmsub
2019-03-16 17:50:59 +01:00
Irmen de Jong
d9d83248fe implemented strlen() function 2019-03-15 23:10:26 +01:00
Irmen de Jong
f5ba072294 removed str_p and str_ps pascal string types, fixes #10 2019-03-10 18:11:26 +01:00
Irmen de Jong
f2b03342ac tehtriz joystick input 2019-03-07 23:29:23 +01:00
Irmen de Jong
77dc35dc6a added read_flags() function, uword2bcd routine no longer enables irq again if it wasn't enabled before calling it. 2019-03-05 23:10:00 +01:00
Irmen de Jong
b0ad66bd04 added missing bitwise and/or/xor asm code 2019-02-23 23:06:46 +01:00
Irmen de Jong
c1d2b4601b fixed/added logical and/or/xor 2019-02-23 22:13:42 +01:00
Irmen de Jong
52352d9d04 added c64scr.getchr/getclr 2019-02-21 01:31:33 +01:00
Irmen de Jong
d05d8de447 optimize math from Soci's suggestions 2019-02-12 23:16:13 +01:00
Irmen de Jong
32a9ab30fb fixed stack bug in print_ub, applied Soci's optimizations to prog8lib.asm 2019-01-30 23:43:21 +01:00
Irmen de Jong
798c4d7902 fix some optimizations of loops, added some conditional branch optimizations 2019-01-27 19:14:58 +01:00
Irmen de Jong
6e3820c6b8 Fixed namespace lookup errors related to variable initialization. Removed many X register clobbers. 2019-01-24 23:29:09 +01:00
Irmen de Jong
d37c9d1680 argument type casts for builtin functions, added memset, tweaked memcopy/memset assembly a bit 2019-01-23 00:19:29 +01:00
Irmen de Jong
5471c5211c make %asminclude work, restructure prog8lib into separate asm file 2019-01-21 00:49:48 +01:00
Irmen de Jong
2911e357bd restructured program init code and library imports a bit 2019-01-20 17:45:57 +01:00
Irmen de Jong
fc67ef8f21 added SID registers and sound example program 2019-01-20 16:54:24 +01:00
Irmen de Jong
aa8f8978f0 remove long-branch warning for now 2019-01-16 23:12:30 +01:00
Irmen de Jong
5f2bf2b375 various regression fixes 2019-01-16 00:36:30 +01:00
Irmen de Jong
ee906ba82c fix ubyte2float conversion 2019-01-15 22:16:03 +01:00
Irmen de Jong
de4353a93e fix too greedy removal of loop statement bodies sometimes 2019-01-15 21:46:27 +01:00
Irmen de Jong
98e95b5707 replaced str2ubyte 2019-01-13 14:20:51 +01:00
Irmen de Jong
23afb1ccc2 optimization and fixes 2019-01-12 16:13:40 +01:00
Irmen de Jong
f3c9be4e06 float ++/-- and missing asm code handlers added 2019-01-12 14:55:57 +01:00
Irmen de Jong
0b86af0c4e fixes 2019-01-12 14:05:55 +01:00
Irmen de Jong
cad42ddc05 word multiplications done 2019-01-12 00:31:56 +01:00
Irmen de Jong
6fe0959fdc multiplications 2019-01-11 09:26:59 +01:00
Irmen de Jong
2a08c22b0f optimized byte multiplications 2019-01-11 03:08:27 +01:00
Irmen de Jong
aa00db4d80 prog8 lib modules are now embedded resource files 2019-01-10 19:30:26 +01:00
Irmen de Jong
e3eace9e28 project folder restructure 2019-01-09 23:57:27 +01:00