Irmen de Jong
|
e227cc92ff
|
new ast: regular subroutine has just 0 or 1 return type
|
2022-03-12 14:12:06 +01:00 |
|
Irmen de Jong
|
abcdd331db
|
started with a simulator
|
2022-03-10 21:23:00 +01:00 |
|
Irmen de Jong
|
0a04e626d7
|
added new intermediate (simplified) AST meant for new codegen
|
2022-03-10 21:21:15 +01:00 |
|
Irmen de Jong
|
a03c4c3659
|
working on symbol table
|
2022-03-04 22:26:46 +01:00 |
|
Irmen de Jong
|
38beebe720
|
fix pipe check for number of args
|
2022-03-02 21:29:09 +01:00 |
|
Irmen de Jong
|
fc1c3c6808
|
working on altered pipe syntax
|
2022-03-02 20:58:38 +01:00 |
|
Irmen de Jong
|
96ba895b84
|
working on altered Pipe syntax
|
2022-02-27 02:42:28 +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
|
c5504c6657
|
added ATASCII encoding table for atari
|
2022-02-25 23:48:39 +01:00 |
|
Irmen de Jong
|
530e109433
|
added altirra as atari emu2
|
2022-02-25 19:16:37 +01:00 |
|
Irmen de Jong
|
6185d5eca1
|
Merge remote-tracking branch 'origin/master'
|
2022-02-24 22:52:08 +01:00 |
|
Irmen de Jong
|
891f870ec0
|
todo
|
2022-02-23 21:58:27 +01:00 |
|
Freddy
|
ad9933f0f6
|
fixed chrout for atari and added two examples
|
2022-02-23 16:42:22 +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
|
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
|
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
|
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
|
73fc18099e
|
properly report duplicate label names
|
2022-02-15 00:39:10 +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
|
c13b7fd883
|
report free/occupied Zeropage space at end of compilation
|
2022-02-10 21:59:44 +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
|
b043c3a6da
|
streamlining vars asmgen using new mechanism
|
2022-02-09 21:58:25 +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
|
8c2e6971fc
|
start using vars instead of callgraph (2)
|
2022-02-08 21:09:00 +01:00 |
|
Irmen de Jong
|
1903990f30
|
start using vars instead of callgraph
|
2022-02-08 20:40:10 +01:00 |
|
Irmen de Jong
|
7d67005709
|
more rewrite variable allocation
|
2022-02-08 20:40:10 +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
|
30e1c3307c
|
simplify SourceCode: just read the full text immediately. Also optimized imports.
|
2022-02-05 03:50:54 +01:00 |
|
Irmen de Jong
|
08e052380a
|
comments
|
2022-02-05 03:14:26 +01:00 |
|
Irmen de Jong
|
548374ac2d
|
fix: do proper sign exension when multiplying signed word and byte vars
|
2022-02-05 01:52:13 +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
|
5c8c64242f
|
callgraph: nameInAssemblyCode searches smarter (for unused())
|
2022-02-01 00:33:05 +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
|
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
|
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
|
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
|
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
|
9ed7587e3e
|
document new string encoding syntax
|
2022-01-19 21:21:33 +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 |
|
Irmen de Jong
|
d916027e75
|
labels no longer start with '_' fixes #62
|
2022-01-17 22:03:53 +01:00 |
|
Irmen de Jong
|
b3368acb33
|
todos to fix broken examples
|
2022-01-16 17:57:47 +01:00 |
|
Irmen de Jong
|
a3b5c2ad71
|
fix zp address output and adjust vars datastructure
|
2022-01-16 17:20:36 +01:00 |
|
Irmen de Jong
|
fb4c1473c5
|
array and string initialization in zeropage
|
2022-01-16 17:20:36 +01:00 |
|
Irmen de Jong
|
641477d6f6
|
add @requirezp and allow str/array to be on zp (with warning)
|
2022-01-16 17:20:32 +01:00 |
|
Irmen de Jong
|
8e56656c8d
|
fix broken code generated for certain ==/!= expressions
|
2022-01-16 17:10:49 +01:00 |
|
Irmen de Jong
|
c58b8a4973
|
fix ast to source: @shared wasn't printed
fix grammar: @shared and @zp can occur in any order now in vardecl
|
2022-01-13 02:29:55 +01:00 |
|
Irmen de Jong
|
e425c4cca8
|
optimizing pipe codegen
|
2022-01-11 23:17:35 +01:00 |
|
Irmen de Jong
|
3831679772
|
VarDecl: make its origin explicit
|
2022-01-10 01:53:03 +01:00 |
|
Irmen de Jong
|
124befe9d6
|
slightly optimized code for assigning boolean expressions such as `b = xx>99 `
|
2022-01-09 18:49:44 +01:00 |
|
Irmen de Jong
|
895534f32b
|
don't remove dead variable assignments if they are a function call
|
2022-01-09 18:41:01 +01:00 |
|
Irmen de Jong
|
50c16fe6de
|
code size optimization: don't copy floats with inlined copy code but use copy_float routine
|
2022-01-09 16:18:13 +01:00 |
|
Irmen de Jong
|
a9b45630d7
|
optimized code for variable comparisons to zero
|
2022-01-09 13:10:01 +01:00 |
|
Irmen de Jong
|
c1a39c269e
|
optimized code for stack eval comparisons with zero
|
2022-01-09 03:19:49 +01:00 |
|
Irmen de Jong
|
9e5e3d1559
|
pipe expression not evaluated via stack
|
2022-01-08 17:51:23 +01:00 |
|
Irmen de Jong
|
7135205299
|
fix codegen bug for pipe expressions to actually return correct value and not corrupt X register
|
2022-01-08 17:41:46 +01:00 |
|
Irmen de Jong
|
7dd7e562bc
|
pipes also as expressions, cleanup codegen, fix various typecasting issues
|
2022-01-08 13:45:19 +01:00 |
|
Irmen de Jong
|
75d857027e
|
cleanup of Pipe codegen
|
2022-01-08 01:33:40 +01:00 |
|
Irmen de Jong
|
749ad700d8
|
naming consistency for some expression classes
|
2022-01-07 21:02:55 +01:00 |
|
Irmen de Jong
|
8f3df3039a
|
added pipe operator `|> `
|
2022-01-06 22:54:18 +01:00 |
|
Irmen de Jong
|
c57ef7725e
|
preparing v7.6
|
2022-01-04 20:40:35 +01:00 |
|
Irmen de Jong
|
96225efd96
|
library doc tweaks
|
2022-01-03 23:15:34 +01:00 |
|
Irmen de Jong
|
74257163b1
|
fix that memory("name", ...) also allocates a STR variable for the name
|
2022-01-02 17:07:04 +01:00 |
|
Irmen de Jong
|
7bc75fd220
|
fix that memory("a b c", ...) produces invalid symbol
|
2022-01-02 16:11:53 +01:00 |
|
Irmen de Jong
|
a23281afab
|
added experimental -noreinit option
|
2022-01-01 16:35:36 +01:00 |
|
Irmen de Jong
|
c15a75556d
|
Merge branch 'master' into c128target
# Conflicts:
# compiler/src/prog8/CompilerMain.kt
# examples/test.p8
|
2021-12-30 18:22:05 +01:00 |
|
Irmen de Jong
|
b62183adcb
|
slightly optimized binexpr evaluation for ==/!= in some cases
|
2021-12-30 02:00:36 +01:00 |
|
Irmen de Jong
|
5d2dec1803
|
added missing codegen for augmented ==/!=
|
2021-12-30 01:34:10 +01:00 |
|
Irmen de Jong
|
4a98dab948
|
fix compiler warnings
|
2021-12-30 00:58:33 +01:00 |
|
Irmen de Jong
|
9f8c70b326
|
fix warning about testing multiple values
|
2021-12-30 00:49:36 +01:00 |
|