Irmen de Jong
|
88b55ab93e
|
vm: add abs() and fix 6502 abs() code.
|
2022-04-18 21:20:17 +02:00 |
|
Irmen de Jong
|
ee36d47c27
|
vm: added cmp() and most of the status-branch instructions
|
2022-04-18 19:59:48 +02:00 |
|
Irmen de Jong
|
6f2fdbe447
|
added %option merge, also fixed problem with unit test building in newer IntelliJ version
|
2022-04-15 22:38:32 +02:00 |
|
Irmen de Jong
|
0f4a197e34
|
improve ast check on pipe expressions
|
2022-04-14 00:49:06 +02:00 |
|
Irmen de Jong
|
7dbff5b9e6
|
abs: remove support for floats. Use floats.fabs() instead.
this solves: can't use abs() etc in pipe expression because return type depends on argument type
|
2022-04-14 00:38:31 +02:00 |
|
Irmen de Jong
|
220246278a
|
removed sum(), max(), min(). abs() now always returns uword type.
This greatly simplifies internal handling of builtin functions by always having one fixed return type.
|
2022-04-14 00:21:16 +02:00 |
|
Irmen de Jong
|
349e5a15e9
|
min/max give proper error for string args
als implmented more vm builtin functions/syscalls
|
2022-04-13 23:09:25 +02:00 |
|
Irmen de Jong
|
bf7f4bba7b
|
doc
|
2022-04-13 20:43:07 +02:00 |
|
Irmen de Jong
|
ab1766a559
|
moved all *integer* builtin trig functions (sin8u, cos8u etc) as regular asmsubs in math module
|
2022-04-13 00:27:35 +02:00 |
|
Irmen de Jong
|
890b1c2d52
|
more readable
|
2022-04-10 22:31:37 +02:00 |
|
Irmen de Jong
|
a8cf9f5cc4
|
vm: syscalls can now return value
|
2022-04-05 20:46:34 +02:00 |
|
Irmen de Jong
|
461b38e653
|
add -vm option to load an existing p8virt file directly in the virtual machine
|
2022-04-05 18:42:31 +02:00 |
|
Irmen de Jong
|
8e4c0f7c22
|
vm: add sorting and reverse functions, fix value arg out of range errors
|
2022-04-05 17:48:49 +02:00 |
|
Irmen de Jong
|
2b7c09e6ee
|
vm: more optimal code for loops ending on 0
|
2022-04-05 00:08:38 +02:00 |
|
Irmen de Jong
|
036d9dbe59
|
got rid of unnecessary cast of boolean expressions by making their type dynamically adjust to byte or word
|
2022-04-04 23:43:55 +02:00 |
|
Irmen de Jong
|
1d342cc6af
|
optimize cx16 textio.setcc()/setcc2()
|
2022-04-04 22:23:06 +02:00 |
|
Irmen de Jong
|
62b32b2211
|
todos
|
2022-04-03 22:56:13 +02:00 |
|
Irmen de Jong
|
ae45ce517e
|
cleanups
|
2022-04-03 17:33:50 +02:00 |
|
Irmen de Jong
|
5b3ccab7dc
|
vm: support noreinit option
|
2022-04-03 17:19:50 +02:00 |
|
Irmen de Jong
|
95f16c38a9
|
removed 'aug' property in PtAssignment , it wasn't used for anything
|
2022-04-03 15:56:14 +02:00 |
|
Irmen de Jong
|
d616cb283b
|
vm: implemented Pipe expression
|
2022-04-03 15:25:32 +02:00 |
|
Irmen de Jong
|
520a142992
|
version 8.0
|
2022-04-02 19:10:18 +02:00 |
|
Irmen de Jong
|
6ff56dc0bb
|
vm: implemented When
|
2022-04-02 19:04:12 +02:00 |
|
Irmen de Jong
|
1e63615592
|
tweaks
|
2022-04-02 18:04:41 +02:00 |
|
Irmen de Jong
|
3e62ffed0a
|
x16 r39: optimize diskio.load_raw() to use kernal's headerless load support
|
2022-04-02 03:26:48 +02:00 |
|
Irmen de Jong
|
156cf7315c
|
x16 r39: add new keyboard apis and more vector location definitions
|
2022-04-01 21:41:38 +02:00 |
|
Irmen de Jong
|
e2886e5303
|
x16 r39: update vtui lib and example
|
2022-04-01 21:09:40 +02:00 |
|
Irmen de Jong
|
c6cf330e70
|
fix bug in codegen for containment check in bytearrays and strings
|
2022-04-01 20:46:28 +02:00 |
|
Irmen de Jong
|
6be3b62d78
|
fix new Ast gosub node translation
|
2022-04-01 18:07:06 +02:00 |
|
Irmen de Jong
|
c57af5e81b
|
todo
|
2022-04-01 01:10:13 +02:00 |
|
Irmen de Jong
|
f7431f809e
|
fix colorbars example issue with memcopy due to overlapping buffers
|
2022-04-01 00:54:06 +02:00 |
|
Irmen de Jong
|
ea43c34de8
|
x16 r39: fix screen colors after changing screen mode
|
2022-04-01 00:21:22 +02:00 |
|
Irmen de Jong
|
fb6e9fa58f
|
x16 r39: fix textio routines for new vera memory layout
|
2022-03-31 23:47:11 +02:00 |
|
Irmen de Jong
|
b2ce1e8029
|
x16 r39: fix gfx2.text() charset rendering due to new Vera mem layout
|
2022-03-31 18:51:54 +02:00 |
|
Irmen de Jong
|
d90c51220f
|
x16 r39: additional FP routine changes
|
2022-03-31 18:43:32 +02:00 |
|
Irmen de Jong
|
d1b14b68fa
|
x16 r39: more free ZP registers possible by enabling floatsafe option
|
2022-03-31 18:30:26 +02:00 |
|
Irmen de Jong
|
d911728611
|
x16 r39: cx16.mouse_config() API changed, added mouse_config2() convenience wrapper
|
2022-03-31 18:24:23 +02:00 |
|
Irmen de Jong
|
86a7200012
|
x16 r39: cx16.screen_set_mode() -> cx16.screen_mode()
|
2022-03-31 18:17:28 +02:00 |
|
Irmen de Jong
|
6ddb7453e1
|
vm postincrdecr on array done
|
2022-03-31 02:13:20 +02:00 |
|
Irmen de Jong
|
ad2355f8d3
|
vm forloop done
|
2022-03-31 01:41:59 +02:00 |
|
Irmen de Jong
|
582c498fe3
|
major version bump because upcoming breaking changes in cx16 r39 release target (kernal routines)
|
2022-03-31 00:12:26 +02:00 |
|
Irmen de Jong
|
0dc592b819
|
working on vm
|
2022-03-30 22:23:25 +02:00 |
|
Irmen de Jong
|
f46300016d
|
working on vm
|
2022-03-30 01:58:31 +02:00 |
|
Irmen de Jong
|
3e1a7c6102
|
fix vm signed comparisons
|
2022-03-29 00:57:33 +02:00 |
|
Irmen de Jong
|
f07065bf84
|
some x16 example changes to use the improved mode $80 screen resolution
|
2022-03-28 22:30:34 +02:00 |
|
Irmen de Jong
|
6d79903eb3
|
workin on vm issues
|
2022-03-28 01:49:43 +02:00 |
|
Irmen de Jong
|
e166329f34
|
fix error for certain typecasted expressions inside comparisons
|
2022-03-28 01:38:01 +02:00 |
|
Irmen de Jong
|
bb1bf6a88c
|
working on vm
|
2022-03-28 00:40:15 +02:00 |
|
Irmen de Jong
|
4e33ab1e89
|
cx16 target: update float routine addresses to new r39 kernal FP package
|
2022-03-27 19:34:49 +02:00 |
|
Irmen de Jong
|
5494f309c0
|
working on vm
|
2022-03-27 17:46:15 +02:00 |
|
Irmen de Jong
|
3b6e7eccdd
|
simplified containment check, only possible on string and arrays (as per the docs)
|
2022-03-27 16:59:55 +02:00 |
|
Irmen de Jong
|
ed30108961
|
removed '**' power-operator. Use floats.pow() instead.
|
2022-03-27 13:16:34 +02:00 |
|
Irmen de Jong
|
0307f6b42c
|
working on vm
|
2022-03-25 20:22:41 +01:00 |
|
Irmen de Jong
|
3e44620966
|
add unit test for the string encoders special handling of 0x0000 and 0x8000-0x80ff
|
2022-03-25 18:26:23 +01:00 |
|
Irmen de Jong
|
7424f1f768
|
remove kernal bug workaround for joystick_get() routine. Fixes #39
|
2022-03-25 18:03:33 +01:00 |
|
Irmen de Jong
|
b5331d821c
|
fix string encoding for escaped characters
|
2022-03-25 00:17:41 +01:00 |
|
Irmen de Jong
|
27f6d47efa
|
working on vm codegen
|
2022-03-24 23:26:57 +01:00 |
|
Irmen de Jong
|
dbc7ad2ec4
|
no more Gosub node in new Ast, back to Functioncalls there.
|
2022-03-22 22:48:19 +01:00 |
|
Irmen de Jong
|
97b3a0b093
|
don't use the temp-variables introducing optimizations for the vm target
|
2022-03-22 20:21:32 +01:00 |
|
Irmen de Jong
|
06b38506d1
|
working on vm translator
|
2022-03-22 01:43:02 +01:00 |
|
Irmen de Jong
|
fd581ffc37
|
moved pattern_match() from prog8_lib to string module
|
2022-03-21 21:32:10 +01:00 |
|
Irmen de Jong
|
ff57c5e9d3
|
working on vm and new ast
|
2022-03-21 01:36:11 +01:00 |
|
Irmen de Jong
|
9b16d7c786
|
working on vm
|
2022-03-20 15:06:29 +01:00 |
|
Irmen de Jong
|
a99e77093f
|
added syscall() builtin functions (only useful for experimental code gen)
|
2022-03-17 01:19:58 +01:00 |
|
Irmen de Jong
|
92737bb695
|
better handling of loadAddress
|
2022-03-13 16:21:02 +01:00 |
|
Irmen de Jong
|
9b81955544
|
optimizing new Ast
|
2022-03-13 11:49:07 +01:00 |
|
Irmen de Jong
|
40e9fba312
|
working on new Ast and XML export to test it
|
2022-03-12 22:38:16 +01:00 |
|
Irmen de Jong
|
e75d0c58a9
|
reducing dependencies
|
2022-03-10 23:46:43 +01:00 |
|
Irmen de Jong
|
7d20458e82
|
fixed arrayliteral regression
|
2022-03-10 01:02:40 +01:00 |
|
Irmen de Jong
|
5a54066f81
|
unravel more dependency of SymbolTable on the ASt nodes (Expression), and fix initializing zp-allocated array
|
2022-03-09 01:42:05 +01:00 |
|
Irmen de Jong
|
f7aa0c45df
|
optimize imports
|
2022-03-05 15:54:42 +01:00 |
|
Irmen de Jong
|
094ecceaac
|
fix bug where non-inlined asmsub didn't always get a proper RTS, causing program crash
was caused by a change in 7.8; 8ae3bad6f7 "fix rts in empty asmsub"
|
2022-03-03 01:10:33 +01:00 |
|
Irmen de Jong
|
2812736ae5
|
preparing version 7.9
|
2022-03-03 00:42:53 +01:00 |
|
Irmen de Jong
|
6f87f8706c
|
can only call unary functions in pipe at this time
|
2022-03-02 23:16:40 +01:00 |
|
Irmen de Jong
|
fc1c3c6808
|
working on altered pipe syntax
|
2022-03-02 20:58:38 +01:00 |
|
Irmen de Jong
|
df35dfe3bf
|
added atari XEX output format with default $2000 load address
|
2022-02-26 15:36:22 +01:00 |
|
Irmen de Jong
|
891f870ec0
|
todo
|
2022-02-23 21:58:27 +01:00 |
|
Irmen de Jong
|
1b86117754
|
todo
|
2022-02-22 23:38:09 +01:00 |
|
Irmen de Jong
|
eeb3c968d6
|
streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher.
|
2022-02-22 22:43:14 +01:00 |
|
Irmen de Jong
|
406658a10f
|
reimplemented sys.memcopy and sys.memset on cx16 to work without kernal too
|
2022-02-22 21:07:19 +01:00 |
|
Irmen de Jong
|
6a0551cea1
|
added 'atari' compiler target beginnings (Atari 800 XL)
also default char and string encoding now taken from compiler target
|
2022-02-22 00:52:35 +01:00 |
|
Irmen de Jong
|
553f3b45d2
|
compile time calculated values of sin/cos routines fixed to be identical to the results of the run-time functions
|
2022-02-21 21:30:42 +01:00 |
|
Irmen de Jong
|
21e9723bb2
|
allow the last term in a pipe statement to be a variable, rewrites this as var = <rest of pipe>
|
2022-02-21 02:33:19 +01:00 |
|
Irmen de Jong
|
60b2c44a44
|
fix returntype handling of builtinfunctions, fix errors in pipe expressions
|
2022-02-21 01:44:29 +01:00 |
|
Irmen de Jong
|
c4fe3ecc0a
|
refactor
|
2022-02-20 22:04:18 +01:00 |
|
Irmen de Jong
|
2f18a8f6d0
|
introduced BuiltinFunctionCall (expression) node for codegen
|
2022-02-20 02:48:27 +01:00 |
|
Irmen de Jong
|
7a2164b4d0
|
introduced BuiltinFunctionCallStatement node for codegen
|
2022-02-18 23:27:11 +01:00 |
|
Irmen de Jong
|
0a43eae184
|
rework registerArgsViaStackEvaluation to use cpu hardware stack instead
|
2022-02-18 22:38:00 +01:00 |
|
Irmen de Jong
|
3117e2b2a3
|
more tweaks
|
2022-02-18 01:25:08 +01:00 |
|
Irmen de Jong
|
41fece4643
|
slight tweaks related to builtin functions in the ast
|
2022-02-17 01:25:13 +01:00 |
|
Irmen de Jong
|
7aa807ec7f
|
proper error if attempting to do a containment check against non const range, and some cleanup in asmgen
|
2022-02-16 00:39:19 +01:00 |
|
Irmen de Jong
|
4d16e1e14a
|
now checks for invalid text encodings for given compilation target
|
2022-02-15 01:39:12 +01:00 |
|
Irmen de Jong
|
2725c4ad4d
|
slight tweaks to zp and allocator
|
2022-02-12 00:15:52 +01:00 |
|
Irmen de Jong
|
c8cd6e9460
|
removed old @"screencodes" string encoding syntax (use sc:"hello" instead)
|
2022-02-11 22:07:14 +01:00 |
|
Irmen de Jong
|
0cd27d6129
|
fix empty lines in subroutine ast printing
|
2022-02-11 21:44:38 +01:00 |
|
Irmen de Jong
|
de6ef7ef5e
|
doc
|
2022-02-11 00:16:39 +01:00 |
|
Irmen de Jong
|
c13b7fd883
|
report free/occupied Zeropage space at end of compilation
|
2022-02-10 21:59:44 +01:00 |
|
Irmen de Jong
|
343f01d5e1
|
re-enabled unused variable removal from library modules (+fixed some @shared vars in libraries)
|
2022-02-10 03:10:47 +01:00 |
|
Irmen de Jong
|
08bacdd090
|
temp vars are now dynamically added to AST as needed
|
2022-02-10 02:52:47 +01:00 |
|
Irmen de Jong
|
41b1c80492
|
label name from memory() no longer interned as string var
|
2022-02-10 00:45:20 +01:00 |
|
Irmen de Jong
|
e5d7316e5d
|
streamlining non-zpvars asmgen using new mechanism
|
2022-02-10 00:09:09 +01:00 |
|
Irmen de Jong
|
98b2855b9c
|
cleanups
|
2022-02-09 16:35:52 +01:00 |
|
Irmen de Jong
|
f3c52c409f
|
variable zp allocation now only done in the allocator
|
2022-02-08 23:44:21 +01:00 |
|
Irmen de Jong
|
1307bdc612
|
more cleanups to the allocator
|
2022-02-08 22:46:49 +01:00 |
|
Irmen de Jong
|
8c2e6971fc
|
start using vars instead of callgraph (2)
|
2022-02-08 21:09:00 +01:00 |
|
Irmen de Jong
|
7d67005709
|
more rewrite variable allocation
|
2022-02-08 20:40:10 +01:00 |
|
Irmen de Jong
|
101fb0b8aa
|
some naming changes and cleanups
|
2022-02-06 23:14:44 +01:00 |
|
Irmen de Jong
|
10de7dc1f9
|
fixed the concurrent modification issue on zeropage when running unit tests in parallel, by not having machine targets be static objects
|
2022-02-06 21:29:06 +01:00 |
|
Irmen de Jong
|
6bdd81623f
|
cleaning up AsmGen interface
|
2022-02-06 17:07:03 +01:00 |
|
Irmen de Jong
|
8ae3bad6f7
|
fix rts in empty asmsub
|
2022-02-06 05:05:58 +01:00 |
|
Irmen de Jong
|
77de99b383
|
rts-check for non-inlined subroutines + var init adjustment when noreinit, moved out of codegen
|
2022-02-06 04:03:03 +01:00 |
|
Irmen de Jong
|
312949f336
|
added experimental codegen backend option
|
2022-02-05 21:42:03 +01:00 |
|
Irmen de Jong
|
08e052380a
|
comments
|
2022-02-05 03:14:26 +01:00 |
|
Irmen de Jong
|
6916b8bff7
|
remove redundant properties
|
2022-02-03 23:59:24 +01:00 |
|
Irmen de Jong
|
69b9dfa468
|
fix invalid recursion warning for code referencing subroutine but not via a call
|
2022-02-01 23:09:52 +01:00 |
|
Irmen de Jong
|
ab61b8ba0a
|
doc ref
|
2022-02-01 21:47:53 +01:00 |
|
Irmen de Jong
|
5c8c64242f
|
callgraph: nameInAssemblyCode searches smarter (for unused())
|
2022-02-01 00:33:05 +01:00 |
|
Irmen de Jong
|
e773be2f58
|
remove no longer needed asmSymbol scoping prefixing, now asmSymbolName are identical to asmVarName
|
2022-01-31 01:47:22 +01:00 |
|
Irmen de Jong
|
f965804e6d
|
fix invalid optimization of returning a parameter variable in a subroutine
|
2022-01-28 16:44:42 +01:00 |
|
Irmen de Jong
|
ec078eba72
|
optimize w=msb(w) => w>>=8, w=lsb(w) ==> w&=$00ff
|
2022-01-28 16:11:52 +01:00 |
|
Irmen de Jong
|
7b3cd71085
|
fixed improper optimization of word<<8 and word>>8
|
2022-01-28 13:54:06 +01:00 |
|
Irmen de Jong
|
06128b5d07
|
optimize word&=$ff00 and word&=$00ff
|
2022-01-28 13:40:28 +01:00 |
|
Irmen de Jong
|
a170506356
|
simplify IdentifierReference equality check back to default (name+pos)
|
2022-01-27 23:32:55 +01:00 |
|
Irmen de Jong
|
5ecf2a3357
|
enable more optimizations for typecasted assignments. Fixed missing codegen for assigning bytes to words in certain cases.
|
2022-01-27 18:05:25 +01:00 |
|
Irmen de Jong
|
e2b8c069d7
|
check for missing '&' in string + value expressions (can't just add a value to a string)
|
2022-01-24 23:30:40 +01:00 |
|
Irmen de Jong
|
08db72903c
|
for long containment checks use a subroutine instead of huge cmp-table
|
2022-01-24 22:40:22 +01:00 |
|
Irmen de Jong
|
46f9fab140
|
library API change: string.find now returns index of character + carry bit status (instead of substring address)
|
2022-01-24 21:37:04 +01:00 |
|
Irmen de Jong
|
b7d06f2c0a
|
API change: added alignment parameter to memory() function
|
2022-01-24 18:58:57 +01:00 |
|
Irmen de Jong
|
118196a0bf
|
library API change: moved cx16.vload() to cx16diskio module
|
2022-01-24 18:31:18 +01:00 |
|
Irmen de Jong
|
586ce1fc80
|
tweak return's use of intermediate variable
|
2022-01-24 01:10:04 +01:00 |
|
Irmen de Jong
|
adb979df38
|
tweak comment
|
2022-01-23 22:34:05 +01:00 |
|
Irmen de Jong
|
3401cb5b4a
|
fixed compiler recursion crash when returning certain typecasted value
|
2022-01-23 19:13:20 +01:00 |
|
Irmen de Jong
|
ebf1f12e97
|
inferred type for len() is now more precise
|
2022-01-23 17:24:39 +01:00 |
|
Irmen de Jong
|
5766208207
|
fix compiler crash when initializing an array var with another array var
|
2022-01-23 14:23:34 +01:00 |
|
Irmen de Jong
|
4bf4771f08
|
fix @requirezp in astToSource. Fix sometimes allocating zeropage variables in normal ram.
|
2022-01-23 13:42:52 +01:00 |
|
Irmen de Jong
|
0e87db9eb7
|
fix invalid size copied when initializing arrays in Zeropage
|
2022-01-23 13:00:01 +01:00 |
|
Irmen de Jong
|
1e053783f3
|
fix invalid size copied when assigning non-byte arrays
|
2022-01-23 02:42:36 +01:00 |
|
Irmen de Jong
|
7afc96112b
|
now correctly requires using & (address-of) when assigning the address of a label or subroutine, used to generate invalid code when it was omitted
|
2022-01-23 02:23:30 +01:00 |
|
Irmen de Jong
|
7bb41a30ed
|
fixed compiler crash when assigning number larger than 65535
|
2022-01-23 01:44:16 +01:00 |
|
Irmen de Jong
|
3d1b0eb843
|
fixed compiler crash when using cx16.r0H as function call argument
|
2022-01-23 01:28:16 +01:00 |
|
Irmen de Jong
|
5b9af0b5ae
|
tweaks
|
2022-01-21 23:38:54 +01:00 |
|
Irmen de Jong
|
9219ec539d
|
allow "goto pointervar" for indirect jumps
|
2022-01-21 22:55:59 +01:00 |
|
Irmen de Jong
|
c8bd57cd4d
|
fixed signature of mouse_get(): it returns the buttonstatus in A. Added convenience cx16.mouse_pos() routine.
|
2022-01-21 22:06:17 +01:00 |
|
Irmen de Jong
|
53bf8c09fd
|
fix screencode encoding selection
|
2022-01-19 21:37:27 +01:00 |
|
Irmen de Jong
|
651c383668
|
refactor encoder to be the same for all 3 machine targets now
|
2022-01-19 21:21:33 +01:00 |
|
Irmen de Jong
|
9ed7587e3e
|
document new string encoding syntax
|
2022-01-19 21:21:33 +01:00 |
|
Irmen de Jong
|
674295e800
|
improve error reporting from string encoders
|
2022-01-19 21:21:33 +01:00 |
|
Irmen de Jong
|
6b02f2eea0
|
implement iso encoding and new string encoding syntax, fixes #38
|
2022-01-19 21:21:32 +01:00 |
|
Irmen de Jong
|
3b59592110
|
generalize string encoding flag into enum
|
2022-01-18 21:21:49 +01:00 |
|
Irmen de Jong
|
72640ae058
|
no longer add nops around breakpoint for vice
|
2022-01-17 22:12:58 +01:00 |
|