Irmen de Jong
aa949165c7
diskio.f_open_w() error handling back to what it was before
...
Otherwise it eats the status message. Added comment that you have to check this manually to be sure if the call succeeded or not!
2023-11-12 21:14:06 +01:00
Irmen de Jong
d22359b6e7
removed cx16.FB_cursor_position2() because it was only for use in the graphics module
2023-11-12 16:40:13 +01:00
Irmen de Jong
d73709653d
remove unused interned strings in the resulting code (for example from removed if/else blocks)
2023-11-12 05:28:24 +01:00
Irmen de Jong
405926e811
oops
2023-11-11 14:31:48 +01:00
Irmen de Jong
36758f41a4
fixed diskio.f_open_w() error handling, finally added f_seek_w() to be able to seek in files for writing.
2023-11-11 14:26:40 +01:00
Irmen de Jong
7ebc9c79cf
added string.append()
...
cleanup redundant diskio prefixes
2023-11-10 23:53:59 +01:00
Irmen de Jong
e0668b55b9
fix gfx2 safe_disc coloring
2023-11-10 01:08:13 +01:00
Irmen de Jong
76c09da961
make pokemon() be like poke, but also return the old value in the memory location.
2023-11-09 22:48:44 +01:00
Irmen de Jong
7e3b8c2c59
fix compiler crash on certain subroutine inlining attempts.
2023-11-09 21:16:12 +01:00
Irmen de Jong
ecca854c7c
Added cx16.edkeyvec and cx16.set_chrin_keyhandler(). mention the Github actions builds.
2023-11-09 01:03:31 +01:00
Irmen de Jong
3b0d7ea960
better const-evaluation of addressOf a memory mapped variable
2023-11-08 22:04:41 +01:00
Irmen de Jong
f70fa42eac
more accurate palette conversion
2023-11-08 01:33:55 +01:00
markjreed
5698de6cf4
feat: requirements.txt for convertsprite.py ( #112 )
2023-11-08 01:32:41 +01:00
Irmen de Jong
c5a333a904
CX16: diskio.f_write() now uses fast MCIOUT block writes, including hiram bank boundary wrap-over
2023-11-08 01:12:49 +01:00
markjreed
ff324955dd
Feature/read cursor position ( #111 )
...
* feat: add ability to read cursor position on CBM machines
* feat: implement plot()/column() for atari target; add get_cursor(), get_column(), row(), and get_row()
* feat: implement wait_key() for Commodore targets; add get_cursor(), get_column(), row(), get_row()
* feat: really implement waitkey() on CBM targets
* fix: make waitkey void for compatibility with atari
2023-11-07 22:19:16 +01:00
Irmen de Jong
70436f5dca
cx16.vpeek() use VERA_DATA0 instead of 1, to not cause ADDRSEL to be != 0 (interferes with kernal)
2023-11-07 22:09:53 +01:00
Irmen de Jong
31177a2b1b
added sys.disable_caseswitch() and sys.enable_caseswitch()
2023-11-07 00:27:34 +01:00
Irmen de Jong
4de012fc49
added notes to textio about PETSCII vs Screencode encoding.
2023-11-06 23:18:24 +01:00
Irmen de Jong
ee2888e744
verafx.mult/muls now return upper 16 bits of the result in r0
2023-11-06 21:55:58 +01:00
Irmen de Jong
efe4df92dc
optimize when with const value (remove other choices from code)
2023-11-06 00:08:07 +01:00
Irmen de Jong
723ab54f97
optimized all circle routines a little more. Added gfx2/monogfx safe_circle and safe_disc. Warning for when on const value.
2023-11-05 21:29:59 +01:00
Irmen de Jong
d9389afc66
fix compiler crash on certain constant expressions
2023-11-05 13:59:08 +01:00
Irmen de Jong
e7178ee496
optimized comparison with word variables
2023-11-05 00:20:12 +01:00
Irmen de Jong
d5f35bb3fb
added gfx2.init_mode()
2023-11-04 14:53:08 +01:00
Irmen de Jong
72f1a779f2
optimize monogfx.fill() and gfx2.fill(), also don't read outside screen area
2023-11-04 14:30:51 +01:00
Irmen de Jong
3277544295
optimize assigning word array value to byte variable
2023-11-04 00:33:50 +01:00
Irmen de Jong
98d2c64d5d
fix assembly error for uword[3] @zp @split word_addrs
2023-11-03 00:39:43 +01:00
Irmen de Jong
f68b46fc60
add a %zpallowed option to specify the range of zeropage register that can be used
2023-11-03 00:19:25 +01:00
Irmen de Jong
d54ab856e7
fix parameter passing bug introduced recently (byte not converted to word)
2023-11-02 00:31:35 +01:00
Irmen de Jong
16b24fadea
gfx2 future mode, upgrate to Kotlin 1.9.20
2023-11-01 23:18:44 +01:00
Irmen de Jong
b3803cbdf1
more opportunities to use LDA(zp) instead of LDA(zp),Y on 65c02
2023-10-31 21:26:55 +01:00
Irmen de Jong
2ceaa25181
optimized code for (infrequently used) logical operations on word array
2023-10-29 23:41:34 +01:00
Irmen de Jong
513611c5a6
IR: using EXT more
2023-10-29 02:57:21 +01:00
Irmen de Jong
7ec4ba40ad
optimize asmsub arg evaluation order and stack usage
2023-10-28 17:29:00 +02:00
Irmen de Jong
92374e122b
IR: optimize concat with msb 0 into ext
2023-10-28 12:53:41 +02:00
Irmen de Jong
94f12732ab
add math.diff() and math.diffw()
2023-10-27 22:36:43 +02:00
Irmen de Jong
0904712a00
remove last trace of getTempVar (arry index expression)
...
tiny optimization
2023-10-27 21:41:52 +02:00
Irmen de Jong
32becdbced
add monogfx lib to virtual target
2023-10-24 00:16:25 +02:00
Irmen de Jong
34aa21f7d9
improve function call arg type casting
2023-10-22 22:33:35 +02:00
Irmen de Jong
cc81dd7d3e
remove useless close calls from diskio load
2023-10-22 17:24:05 +02:00
Irmen de Jong
335213b55f
tweaks
2023-10-21 02:16:58 +02:00
Irmen de Jong
13ab4166c0
new kotest library version
2023-10-19 21:57:06 +02:00
Irmen de Jong
3dc5a0e7f8
some arrays can be in BSS
2023-10-18 23:59:37 +02:00
Irmen de Jong
e15c5cde53
tiny fill() optimization
2023-10-18 23:11:16 +02:00
Irmen de Jong
d88c09b098
fix signed byte to word casting issue uw = 8888 + (bb as ubyte)
2023-10-17 22:54:33 +02:00
Irmen de Jong
893b383bdf
fix signed byte to word sign extension in assignment
2023-10-17 03:08:37 +02:00
Irmen de Jong
dd7c9d62e6
remove assigment splitter, it now caused code bloat instead of more efficient code
2023-10-16 02:07:22 +02:00
Irmen de Jong
97c5c90eff
fix codegen for var1>>=var2 and var1<<=var2 when var2 is zero
2023-10-16 00:04:21 +02:00
Irmen de Jong
1fb94e7a7b
monogfx and gfx2: flood fill uses optimized horizontal line drawing
2023-10-15 23:19:11 +02:00
Irmen de Jong
daca87c6d0
added -breakinstr compiler option
2023-10-15 21:55:09 +02:00
Irmen de Jong
203ec5fa46
implement taking address of array var with variable index
2023-10-15 20:24:48 +02:00
Irmen de Jong
9ea69c07b8
optimize word array reads with indexvar
2023-10-14 07:30:54 +02:00
Irmen de Jong
68539d6cc9
micro tweaks adpcm.p8
2023-10-13 00:55:56 +02:00
Irmen de Jong
f75fd0811e
restructure play-adpcm example code, stream-wav can now play stereo adpcm wavs
2023-10-11 17:37:42 +02:00
Irmen de Jong
836bc9d456
added verafx.available()
2023-10-10 22:12:21 +02:00
Irmen de Jong
a37769aafe
cx16 adpcm example is now able to decode and play stereo music as well as mono.
2023-10-10 02:41:20 +02:00
Irmen de Jong
68e62e4bd2
added cx16.MCIOUT() kernal call
...
correct case of several other cx16 kernal calls.
corrected to upper case: cx16 kernal calls CLOSE_ALL, LKUPLA, LKUPSA, JSRFAR, PRIMM, MACPTR.
2023-10-09 22:44:36 +02:00
Irmen de Jong
a5cd3728c9
3d rotation multiplications now using verafx acceleration
2023-10-05 22:36:30 +02:00
Irmen de Jong
a48ce35f0b
added %option verafxmuls
2023-10-05 22:06:33 +02:00
Irmen de Jong
e1835b5775
removed dysfunctional c128.graphics library module
2023-10-05 21:03:47 +02:00
Irmen de Jong
433832b329
gfx2.clear_screen and monogfx.clear_screen() now have color parameter to clear the screen with
...
this is much faster than filling a rectangle of the full screen size with a color.
2023-10-05 21:00:39 +02:00
Irmen de Jong
ee81da14d6
cx16: removed monochrome modes from gfx2 (use monogfx instead). New screen mode numbering!
...
programs will now be a lot smaller than before if they use gfx2 (or monogfx if they were only using monochrome drawing)
monogfx also fixes some drawing errors with small horizontal lines, and stippled vertical lines.
2023-10-05 02:12:46 +02:00
Irmen de Jong
6395d1908e
cx16: added monogfx library module, replaces gfx2 for monochrome screenmodes.
2023-10-04 22:32:13 +02:00
Irmen de Jong
989a5a2f8a
some notes about array alignment
2023-10-04 01:10:36 +02:00
Irmen de Jong
b7a622c68e
fix alignment of uninitialized arrays in aligned blocks (make them initialized with zeros so they don't end up in the BSS section)
...
fix alignment of uninitialized arrays in aligned blocks (make them initialized with zeros so they don't end up in the BSS section)
2023-10-04 00:12:36 +02:00
Irmen de Jong
a8507b437d
add verafx.transparency()
2023-10-03 01:47:52 +02:00
Irmen de Jong
e505bf9ccf
added "emudbg" library (cx16 only) to interface with the emulator
2023-10-02 22:23:09 +02:00
Irmen de Jong
a289b32053
Revert "added -verafxmul compiler option to use vera fx multiplication routine on cx16"
...
This reverts commit 690782bf .
It was too risky, using vera (especially fx) transparently in multiple places especially perhaps in IRQ handlers will create havoc unless much intricate care is taken to save/restore the vera state. Better to do vera fx explicitly where the programmer has full control.
2023-10-02 21:08:52 +02:00
Irmen de Jong
c3f1f09ad1
added verafx.clear()
2023-10-02 01:34:56 +02:00
Irmen de Jong
70ee2026ff
fix gfx2 screen fill broken when using verafx
2023-10-02 00:12:48 +02:00
Irmen de Jong
690782bf60
added -verafxmul compiler option to use vera fx multiplication routine on cx16
2023-10-01 22:44:45 +02:00
Irmen de Jong
755cc4835e
\n (newline) now also maps to Petscii $0d (return), like \r.
...
It used to map to $8d (shift-return)
2023-09-29 01:49:15 +02:00
Irmen de Jong
a684ea46e4
fix c64 zp test and improve error for text encoding problem
2023-09-29 01:25:05 +02:00
Irmen de Jong
8fbe13f99d
c64: $a5 removed from free ZP (it's actually used by kernal disk routines)
2023-09-29 00:28:04 +02:00
Irmen de Jong
452e9e275f
diskio module: set correct read or write i/o channel every time f_read or f_write is called
2023-09-28 23:39:37 +02:00
Irmen de Jong
cd40088636
vm: added math.mul16_last_upper()
2023-09-28 03:18:49 +02:00
Irmen de Jong
9b9e6f4af5
added math.mul16_last_upper() to fetch the upper 16 bits of the last word multiplication
2023-09-25 23:59:57 +02:00
Irmen de Jong
ae6eeadf54
doc about range step value has to be a constant
2023-09-25 23:19:32 +02:00
Irmen de Jong
5268b05060
added bonkram chunk to chunkfile example
2023-09-25 22:24:40 +02:00
Irmen de Jong
390263a34e
added cx16 verafx library module
2023-09-24 23:00:40 +02:00
Irmen de Jong
55646edc3e
added cx16 chunkedfile example
2023-09-24 20:56:36 +02:00
Irmen de Jong
8d177beb78
fix possible register corruption when calling asmsubs that require Carry flag as a parameter
2023-09-24 14:03:31 +02:00
Irmen de Jong
1da0c59182
vm: remove BNER opcode -> CMP + BSTNE
2023-09-23 11:47:24 +02:00
Irmen de Jong
36e8f10d2b
vm: remove BEQR opcode -> CMP + BSTEQ
2023-09-23 11:42:58 +02:00
Irmen de Jong
cdf5a8f20f
vm: remove BNE opcode -> CMPI + BSTNE
2023-09-23 11:22:33 +02:00
Irmen de Jong
eb64d92333
vm: remove BEQ opcode -> CMPI + BSTEQ
2023-09-23 11:21:43 +02:00
Irmen de Jong
eb55da63ef
weird
2023-09-23 11:21:17 +02:00
Irmen de Jong
918302f79b
ir: fix possible crash in validity check about PREPARECALL
2023-09-23 01:35:18 +02:00
Irmen de Jong
9d7131d9f6
vm: setting status bits
2023-09-22 22:50:20 +02:00
Irmen de Jong
229c1114dd
vm: fixed array initialization values with address-ofs
2023-09-19 23:54:18 +02:00
Irmen de Jong
885df9156f
todo
2023-09-19 00:08:17 +02:00
Irmen de Jong
c319233ddc
ir: added preparecall 'meta' instruction for functioncalls
2023-09-18 23:22:03 +02:00
Irmen de Jong
958b5c0780
Merge branch 'addrof-arrayelt'
...
# Conflicts:
# docs/source/todo.rst
2023-09-18 04:48:45 +02:00
Irmen de Jong
880c0a5da8
allow taking address of array element
2023-09-18 04:37:41 +02:00
Irmen de Jong
237c6dc856
allow taking address of array element
2023-09-18 04:29:15 +02:00
Irmen de Jong
ccf6e32bf9
adding setlsb() and setmsb() builtin functions to 6502 codegen
2023-09-17 15:16:47 +02:00
Irmen de Jong
a1874f6f00
adding setlsb() and setmsb() builtin functions to 6502 codegen
2023-09-17 01:48:29 +02:00
Irmen de Jong
95e4490a8a
adding setlsb() and setmsb() builtin functions
2023-09-15 02:39:16 +02:00
Irmen de Jong
31c132c2eb
several optimizations and compiler error fix for @(&var) and @(&var+1)
2023-09-14 23:04:23 +02:00
Irmen de Jong
00b0ec58b4
update to Antlr 4.13.1
2023-09-14 21:11:55 +02:00
Irmen de Jong
a1d0e5bb65
added list of software to docs
2023-09-13 21:51:48 +02:00
Irmen de Jong
03e0d4b2e8
reducing expression codegen complexity (no longer splitting conditional expressions, and using r9 as temp var)
2023-09-13 01:08:42 +02:00
Irmen de Jong
6afdd4e6fd
preparing next version
2023-09-12 21:53:49 +02:00
Irmen de Jong
b500a0d477
c64: added a couple of routines that calculate the correct memory locations for video ram and sprite pointers etc. based on current VIC-II memory setup.
...
the examples with sprites, now use it.
2023-09-08 21:27:38 +02:00
Irmen de Jong
dd2463a440
proper fix for the previous commit. + fix for i/o channel reset in diskio.f_seek()
...
it wasn't the adressing mode, it was that it assumed the pointer variable was always in zeropage (which might not be)
2023-09-07 22:17:46 +02:00
Irmen de Jong
23a8bebd9e
fix invalid addressing mode on 6502 cpu for bytevalue +/- bytearray[i]
2023-09-07 21:40:07 +02:00
Irmen de Jong
3caf9108ad
finalizing 9.4.1 release
2023-09-06 21:18:01 +02:00
Irmen de Jong
bde4be8231
fix VM indexed instructions to only use lsb part of the index
2023-09-06 02:44:04 +02:00
Irmen de Jong
0bbbb12ed2
fix bench8 examples
2023-09-05 23:40:54 +02:00
Irmen de Jong
b570bdaed7
fix codegen for array[i] += float expression
2023-09-05 22:38:52 +02:00
Irmen de Jong
8c0843cc87
fix an invalid 6502 instruction on c64 in certain float assignment
2023-09-05 21:54:52 +02:00
Irmen de Jong
31458ffd81
examples cleanup and improving c64 graphics module (shift bitmap to higher ram area)
2023-09-05 20:39:12 +02:00
Irmen de Jong
c15c10a94e
fixed 'unroll CONSTANTEXPR' compiler errors
2023-09-05 01:03:35 +02:00
Irmen de Jong
9fca978725
optimized plasma examples even more
2023-09-05 00:23:50 +02:00
Irmen de Jong
b125901717
added cx16 plasma example
2023-09-04 23:54:13 +02:00
Irmen de Jong
eb018ae660
code optimization for bytearray[x] +/- bytearray[y]
...
use adc array,y or sbc array,y instead of tempvar
2023-09-04 23:01:53 +02:00
Irmen de Jong
7e5a9474fe
improve plasma example
2023-09-04 20:35:43 +02:00
Irmen de Jong
525a9b5036
prepare parser to allow chained array indexing later
2023-09-03 19:06:47 +02:00
Irmen de Jong
c3fbdf34ca
fixed c64 float problem
2023-09-03 16:40:10 +02:00
Irmen de Jong
48bd51e1a5
c64 float problem
2023-09-03 16:29:01 +02:00
Irmen de Jong
10d0b03a90
use less tempvars
2023-09-03 01:32:47 +02:00
Irmen de Jong
e1b3582f08
fix wordvar -= @(memory)
2023-09-03 01:12:26 +02:00
Irmen de Jong
95be1c9e22
fix optimized swapped in-place byte comparisons
2023-09-03 00:47:55 +02:00
Irmen de Jong
1ce8fe06d5
fix in-place <= for bytes
2023-09-03 00:01:11 +02:00
Irmen de Jong
15c649024e
float problems on c64
2023-09-02 23:09:55 +02:00
Irmen de Jong
e97303c226
fix word multiplication to not clobber r0 and r1 anymore
...
This was causing corruption in certain programs such as the cx16/amiga example.
The problem was introduced in 9.4 with the new multiply_words routine
2023-09-02 20:52:16 +02:00
Irmen de Jong
3b786c819d
avoid using temp var even more
2023-09-01 23:47:01 +02:00
Irmen de Jong
04959dbd8b
optimize asm: don't use temp var for some additions
2023-09-01 22:24:17 +02:00
Irmen de Jong
5cd4b874ea
tweak sprites module
2023-09-01 21:25:19 +02:00
Irmen de Jong
f14ea1b3de
micro optimization to save 2 cycles: change some pha+pla into tax+txa
2023-09-01 20:37:24 +02:00
Irmen de Jong
9cc0cda0fb
added sprites library module (cx16 only)
2023-09-01 17:35:07 +02:00
Irmen de Jong
09a7a4bbe5
optimize comparison against zero
2023-09-01 02:28:11 +02:00
Irmen de Jong
cfea8b3745
save a cycle
2023-09-01 00:50:24 +02:00
Irmen de Jong
28bf0b61ce
added math.log2() and math.log2w()
2023-09-01 00:42:15 +02:00
Irmen de Jong
2dc2429735
tweaks to the cx16 sprite example
2023-08-31 23:24:46 +02:00
Irmen de Jong
83d4592526
tweaks to the cx16 sprite example
2023-08-31 22:33:49 +02:00
Irmen de Jong
2d528c26ae
added cx16 sprite demo
2023-08-31 16:56:52 +02:00
Irmen de Jong
66b3dce794
doc tweak
2023-08-30 13:16:39 +02:00
Irmen de Jong
93f77a1045
version 9.4
2023-08-29 12:27:09 +02:00
Irmen de Jong
aa4d23a3d5
fix register stack saving on certain expression code that was broken on 6502 but not on 65c02
2023-08-29 11:50:35 +02:00
Irmen de Jong
2d7ebff8e9
fix shadowing warnings in asm and library code
2023-08-29 11:00:53 +02:00
Irmen de Jong
bad9dd3b3b
mention shadowing warnings from assembler
2023-08-28 16:55:28 +02:00
Irmen de Jong
2f4e517857
update to Kotlin 1.9.10
2023-08-28 16:45:59 +02:00
Irmen de Jong
ff35ba3696
added warnshadow cli option to enable assembler warnings about symbol shadowing
2023-08-28 16:41:46 +02:00
Irmen de Jong
72768e7fad
todo
2023-08-28 16:10:02 +02:00
Irmen de Jong
77f3852cdc
added floats.parse_f()
2023-08-16 14:47:20 +02:00
Irmen de Jong
66857ca477
prepare parser to be more flexible with array indexed expressions
2023-08-15 13:07:01 +02:00
Irmen de Jong
75514fc7af
fix some invalid instructions on 6502 (instead of 65c02) target for bit shifts
2023-08-14 21:58:26 +02:00
Irmen de Jong
be06d871b6
fix code for bitwise shifts by zero
2023-08-14 21:49:13 +02:00
Irmen de Jong
f98ee326b4
error when doing txt.print('@') where "@" was intended (byte for string parameter)
2023-08-14 19:25:31 +02:00
Irmen de Jong
bc8126eb16
2x faster word multiplication routine
2023-08-14 18:11:30 +02:00
Irmen de Jong
4c8beefdcb
slightly faster integer bytes multiplication routine
2023-08-14 17:00:16 +02:00
Irmen de Jong
bbb6c53457
slightly faster sqrt() routine for integers
2023-08-14 17:00:02 +02:00
Irmen de Jong
d8991894e3
added pet stubs for cbm.SETTIM,RDTIM,RDTIM16
2023-08-14 14:49:59 +02:00
Irmen de Jong
c7b7dcfd03
made pet textio more compatible with the other platforms by putting the (dummy) color arguments back
2023-08-14 13:51:15 +02:00
Irmen de Jong
2c9e50873c
use math.square for optimized X*X calculation (words only).
...
Added IR SQUARE instruction.
2023-08-14 01:05:17 +02:00
Irmen de Jong
923367296d
fix reset_system() on PET, added some missing kernal routines
2023-08-13 01:46:25 +02:00
Irmen de Jong
151a206617
experimental Commodore PET target
2023-08-12 23:25:07 +02:00
Irmen de Jong
e403c4cf99
version 9.3
2023-08-12 17:58:10 +02:00
Irmen de Jong
e3fbe37f9f
fixed optimized code for >= and <=
2023-08-12 13:45:08 +02:00
Irmen de Jong
dc870cd5ea
fixed optimized code for > and <
2023-08-12 13:15:32 +02:00
Irmen de Jong
584be44743
fix compiler error on float comparison expressions
2023-08-12 00:09:38 +02:00
Irmen de Jong
5fffd35ec1
IR: fix augmented assignment operators
2023-08-11 18:24:37 +02:00
Irmen de Jong
b92e22e4a6
IR: fix for loop over range with step
2023-08-11 03:05:47 +02:00
Irmen de Jong
3e6d16a7a8
add error message for invalid step size in range expression
2023-08-11 02:35:52 +02:00
Irmen de Jong
ecbcc277b8
improve -varshigh documentation
2023-08-10 00:17:50 +02:00
Irmen de Jong
dff1d9e4dd
cleanup range expression doc
2023-08-09 22:58:04 +02:00
Irmen de Jong
7c0bde7310
parser: allow curly brace on next line for asmsub too
...
downgrade antlr4 one version again to what is used in IntelliJ's antlr plugin, to avoid potential version conflicts
2023-08-09 20:01:12 +02:00
Irmen de Jong
a82d21ac05
fixed gfx2.plot in mode 1+5 with certain combinations of color and stipple
2023-08-08 00:01:43 +02:00
Irmen de Jong
0bf8378fcb
fixed gfx2.horizontal_line problem with monochrome stippling mode (regression since version 9.0)
...
todo
2023-08-07 22:56:07 +02:00
Irmen de Jong
017ef8a837
optimization of > and <= in expressions
2023-08-07 21:23:31 +02:00
Irmen de Jong
0d63cdcb96
optimization of < and >= in expressions
2023-08-07 04:54:35 +02:00
Irmen de Jong
68a6f99c9f
optimization of < in expressions
2023-08-07 02:32:07 +02:00
Irmen de Jong
60781bcfc4
optimization of == and != in expressions
2023-08-07 01:25:41 +02:00
Irmen de Jong
77fa2e2722
optimization in + or - assignment to word array
2023-08-05 23:28:40 +02:00
Irmen de Jong
c36afd872e
optimization in assignment to memory
2023-08-04 23:54:11 +02:00
Irmen de Jong
7e58a4c130
optimization in assignment to array
2023-08-04 23:06:55 +02:00
Irmen de Jong
19a4bf1088
clean up AugmentableAssignmentAsmGen a bit
2023-08-04 21:48:02 +02:00
Irmen de Jong
9678bbae4b
dedup
2023-08-02 23:19:52 +02:00
Irmen de Jong
a4d093afa1
added -sourcelines cli option to include src lines in generated assembly (which is now off by default)
2023-08-02 23:05:24 +02:00
Irmen de Jong
ba788bcf0f
put the original p8 source lines into the generated assembly as comments (not only the line numbers).
2023-08-02 02:18:13 +02:00
Irmen de Jong
f2c62bee7e
docs
2023-08-01 22:49:55 +02:00
Irmen de Jong
548721e306
docs
2023-07-31 22:17:43 +02:00
Irmen de Jong
1ae950a638
Merge branch 'remove_evalstack'
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/assignment/AssignmentAsmGen.kt
2023-07-31 21:57:43 +02:00
Irmen de Jong
c9385e93fe
fix postincr/decr on indexed pointervariables
2023-07-31 20:13:49 +02:00
Irmen de Jong
9bb16e293c
vm: fix postincr/decr on indexed pointervariables
2023-07-31 19:37:30 +02:00
Irmen de Jong
c223702ea0
code cleanups
2023-07-30 18:42:45 +02:00
Irmen de Jong
9167ba499d
Merge branch 'remove_evalstack'
2023-07-30 17:49:35 +02:00
Irmen de Jong
2d7e95e1b6
release 9.2.1
2023-07-30 17:39:18 +02:00
Irmen de Jong
0cba736446
Merge branch 'master' into remove_evalstack
2023-07-30 14:53:40 +02:00
Irmen de Jong
0816a57032
never add rts to inline asmsubs and always inline them regardless of optimization setting
...
otherwise they can't specify a sequence of assembly instructions that should be inserted in-place, such as those that manipulate the cpu stack.
for instance cx16.irqsafe_set_irqd() / cx16.irqsafe_clear_irqd()
2023-07-30 14:52:37 +02:00
Irmen de Jong
a0ab0bd3e2
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-29 18:57:06 +02:00
Irmen de Jong
b89ad4b328
don't optimize empty where choice away! It would call the else clause incorrectly.
2023-07-29 18:25:52 +02:00
Irmen de Jong
6cda76a116
comments
2023-07-29 17:32:27 +02:00
Irmen de Jong
c112b327ab
tiny optimization
2023-07-29 17:04:41 +02:00
Irmen de Jong
46c12a8899
fix byte in array assignment,
...
remove no longer needed array assignment ast transformation
2023-07-28 22:40:06 +02:00
Irmen de Jong
c5219dfb3f
fix assignment of register into byte array
2023-07-28 22:16:01 +02:00
Irmen de Jong
4a8ee6815a
merge
2023-07-28 03:34:58 +02:00
Irmen de Jong
e1b6bb154a
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# compiler/res/prog8lib/cx16/gfx2.p8
# docs/source/todo.rst
# examples/test.p8
2023-07-28 02:09:45 +02:00
Irmen de Jong
b19c282269
release 9.2
2023-07-28 01:40:14 +02:00
Irmen de Jong
e520921746
todo
2023-07-26 23:16:43 +02:00
Irmen de Jong
970642244b
optimized gfx2.text() for hires 4c mode
2023-07-26 04:17:44 +02:00
Irmen de Jong
3b90be2d9e
gfx2.text() per-pixel positioning implemented for screen modes 1 and 5
2023-07-25 00:43:45 +02:00
Irmen de Jong
2f756f1e3a
fix and optimize inplace invert and negate
2023-07-24 23:28:32 +02:00
Irmen de Jong
78e84182f0
todo
2023-07-24 22:36:17 +02:00
Irmen de Jong
65a7a8caf8
fix and optimize gfx2.position2(), added cx16.vaddr_clone()
2023-07-24 00:04:47 +02:00
Irmen de Jong
4c6a2f5df9
emphasize index value size on pointer var indexing
2023-07-23 00:11:18 +02:00
Irmen de Jong
fea297e409
cleanup some compilation warnings
2023-07-22 23:44:26 +02:00
Irmen de Jong
7cf6aba625
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-22 23:37:20 +02:00
Irmen de Jong
3bbc00cc8c
more caution notices about symbols in inlined asm
2023-07-22 23:22:06 +02:00
Irmen de Jong
70ed2b4203
fix compilation of large bitshifts
2023-07-22 23:08:22 +02:00
Irmen de Jong
0adce9b9c6
removed complexity restriction on array indexing expressions
2023-07-22 22:11:30 +02:00
Irmen de Jong
0e781d18fa
cx16: added cx16.vaddr_autoincr() and cx16.vaddr_autodecr()
2023-07-21 23:04:21 +02:00
Irmen de Jong
4575a8fffe
cx16: added cx16.vaddr_autoincr() and cx16.vaddr_autodecr()
2023-07-21 22:40:07 +02:00
Irmen de Jong
10d0ff252b
ignore buildversion changes
2023-07-21 00:14:06 +02:00
Irmen de Jong
c7d54570cc
IR: sXX, CONCAT instructions now use 3 register format
2023-07-21 00:07:56 +02:00
Irmen de Jong
7136b33f2e
cx16: change reset_system() to use Reset SMC sequence instead of hard reboot
2023-07-20 01:59:20 +02:00
Irmen de Jong
70a78e74f6
get rid of binexpr splitter
2023-07-20 01:36:43 +02:00
Irmen de Jong
d5707b7bf3
rebuilding floating point stack evaluation (using cpu stack)
2023-07-20 00:45:04 +02:00
Irmen de Jong
9f247901d4
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/BuiltinFunctionsAsmGen.kt
# codeGenCpu6502/src/prog8/codegen/cpu6502/assignment/AssignmentAsmGen.kt
# compiler/src/prog8/buildversion/BuildVersion.kt
# examples/test.p8
2023-07-16 23:45:04 +02:00
Irmen de Jong
5659742d97
fixed assigning byte to word not clearing msb sometimes
2023-07-16 23:16:32 +02:00
Irmen de Jong
450eaf7c4a
fixed lsb() to uword problem
2023-07-16 20:05:59 +02:00
Irmen de Jong
47485e4b49
added more missing codegen for bit shifts
2023-07-16 17:42:10 +02:00
Irmen de Jong
64254e758d
cleaned up cx16 keyboardhandler example and some compiler warnings for redundant else
2023-07-16 13:23:53 +02:00
Irmen de Jong
c1aa5d4e47
IR: optimized when statement translation
2023-07-16 12:10:46 +02:00
Irmen de Jong
ab8173637a
remove redundant asm optimizer
2023-07-16 11:15:28 +02:00
Irmen de Jong
3841cef497
implemented missing bitshift codegen (non-stack)
2023-07-15 22:26:56 +02:00
Irmen de Jong
b717f1c7eb
little refactor of huge if statement
2023-07-15 22:26:56 +02:00
Irmen de Jong
da57f76de3
fix augassign
2023-07-15 22:26:56 +02:00
Irmen de Jong
4784f1c65a
remove eval stack from documentation
2023-07-15 22:26:56 +02:00
Irmen de Jong
41af63b333
remove even more X register save/restore code
2023-07-15 22:26:54 +02:00
Irmen de Jong
e2bb0de24d
clean up X register save/store in compiler code, remove temp vars for register saving
2023-07-15 22:25:58 +02:00
Irmen de Jong
b791fae9ce
remove stack based ExpressionAsmGen
2023-07-15 22:24:22 +02:00
Irmen de Jong
6033a9e20c
remove optfloatx option
2023-07-15 22:24:22 +02:00
Irmen de Jong
9e8c8973d8
remove eval stack references from asm code
2023-07-15 22:24:22 +02:00
Irmen de Jong
3933bf5c1a
remove eval stack references from p8 code
2023-07-15 22:24:22 +02:00
Irmen de Jong
708e296774
remove eval stack assignment source and targets
2023-07-15 22:24:22 +02:00
Irmen de Jong
84925ab69c
remove eval stack options
2023-07-15 22:24:19 +02:00
Irmen de Jong
b3cb9b7fe2
added optimizer to remove needless pha/pla pairs
2023-07-15 22:19:48 +02:00
Irmen de Jong
9cb61fa34d
tweaks
2023-07-15 20:46:14 +02:00
Irmen de Jong
7c219d235c
fixed possible type mismatch error in when statements
2023-07-14 23:35:58 +02:00
Irmen de Jong
6938c79f88
IR: added CMPI instruction
2023-07-14 23:17:29 +02:00
Irmen de Jong
b8284a147d
allow boolean when conditions, optimize into a regular if
2023-07-11 21:33:29 +02:00
Irmen de Jong
15ee90e99c
no error about missing target when -vm is used.
...
also version 9.1
2023-07-11 18:13:49 +02:00
Irmen de Jong
795f80b4ec
fix forloop 6502 codegen in case of descending word values
2023-07-11 00:33:12 +02:00
Irmen de Jong
6b6427492d
fix forloop 6502 codegen in case of descending word values
2023-07-10 23:10:16 +02:00
Irmen de Jong
6055b8c3dc
IR: fix forloop codegen for steps != 1
2023-07-10 21:36:44 +02:00
Irmen de Jong
a98cb50d55
Revert "ir: SCC now sets all bits to 1 (or 0)"
...
This reverts commit 7245aece4f .
2023-07-09 23:16:13 +02:00
Irmen de Jong
e98bbc1c52
todo
2023-07-09 22:29:54 +02:00
Irmen de Jong
7245aece4f
ir: SCC now sets all bits to 1 (or 0)
2023-07-08 23:16:01 +02:00
Irmen de Jong
60cbb02822
vm: actually fix EXT(S) in vm too
2023-07-08 23:05:03 +02:00
Irmen de Jong
4e863ecdac
vm: fixed abs() and word-to-string conversion
2023-07-08 22:57:16 +02:00
Irmen de Jong
5037033fcf
ir: EXT and EXTS opcodes now have 2 registers to avoid type clash
2023-07-08 22:42:11 +02:00
Irmen de Jong
e6b158bc97
@(..) argument must be of type UWORD
2023-07-08 22:34:47 +02:00
Irmen de Jong
4cc0dfa10b
comment
2023-07-08 11:42:29 +02:00
Irmen de Jong
4ced8889d3
cx16: fix signature return values of cx16.screen_mode(), add get_screen_mode() and set_screen_mode() convenience routines
2023-07-08 11:37:29 +02:00
Irmen de Jong
d26967a87d
ir doc
2023-07-07 22:35:05 +02:00
Irmen de Jong
fc8955941b
slight optimization for certain word multiplications
2023-07-07 21:30:37 +02:00
Irmen de Jong
071a80360f
ir: fix some problem with comparison against zero
2023-07-07 21:17:28 +02:00
Irmen de Jong
d2154f5f2e
remove empty when choices, fixes ir compilation error on those
2023-07-07 20:34:24 +02:00
Irmen de Jong
334d382bfa
ir: JUMPI instruction added to support indirect jumps
2023-07-07 19:10:39 +02:00
Irmen de Jong
90c4b00f74
ir: fix any() all() reverse() sort() on memory mapped arrays and on byte arrays
2023-07-07 17:25:32 +02:00
Irmen de Jong
71261525e8
fix containment check on memory mapped arrays
2023-07-07 17:07:34 +02:00
Irmen de Jong
3126959576
ir: several fixes
2023-07-07 16:53:32 +02:00
Irmen de Jong
02e51d8282
ir: fix initial chunk linking
2023-07-07 00:30:56 +02:00
Irmen de Jong
ffb2027a19
repeat loop count now always rounded to integer
2023-07-06 23:58:02 +02:00
Irmen de Jong
70c9ab9074
upgrade libraries
2023-07-06 23:33:58 +02:00
Irmen de Jong
6d1fdf1ba6
upgrade to Kotlin 1.9.0
2023-07-06 23:03:47 +02:00
Irmen de Jong
1f7180d9a8
math.multiply_words returns lower 16 bits of the result also in AY (to avoid repeating some load instructions)
2023-07-06 22:54:13 +02:00
Irmen de Jong
b4e94ae4dd
optimizer: avoid symbol name clash when inlining subroutine
2023-07-05 23:15:04 +02:00
Irmen de Jong
07c606bfc9
optimizer: don't replace for loop with repeat loop (the loop variable might be used elsewhere!)
2023-07-05 21:16:17 +02:00
Irmen de Jong
e705a8bd89
discord info
2023-07-04 23:50:16 +02:00
Irmen de Jong
b3bdfb7f1f
more info about building the compiler
2023-07-04 22:41:38 +02:00
Irmen de Jong
5af1aeb092
added block comment /* ...... */
2023-07-04 00:46:29 +02:00
Irmen de Jong
be64fa674a
doc
2023-07-03 22:44:50 +02:00
Irmen de Jong
204f5591a9
todos
2023-07-03 21:57:32 +02:00
Irmen de Jong
ee3e3a3a40
optimize text rendering in gfx2
2023-07-03 21:45:09 +02:00
Irmen de Jong
f9200a2b75
fix IR loader for romsub calls (calls to an address)
2023-07-02 23:41:15 +02:00
Irmen de Jong
f570b70827
fix type error with returning an array from a subroutine returning uword
2023-07-02 22:09:19 +02:00
Irmen de Jong
0db141eeac
todo
2023-07-02 21:19:33 +02:00
Irmen de Jong
acb2ee53bb
Merge branch 'prefixing'
2023-07-02 21:15:30 +02:00
Irmen de Jong
c544b7f5ba
fixing up p8_ prefixing
2023-07-02 21:15:05 +02:00
Irmen de Jong
c0024e97e5
fix doc version
2023-07-02 21:01:11 +02:00
Irmen de Jong
bdf8aa9168
get rid of newexpr compiler option
2023-07-02 15:26:04 +02:00
Irmen de Jong
de5ce0f515
tiny optimization and doc
2023-07-02 11:17:18 +02:00
Irmen de Jong
bb95484c8a
uniform symbol prefixing with p8_
2023-07-02 06:15:09 +02:00
Irmen de Jong
cad18b8a3a
uniform symbol prefixing with p8_
2023-07-02 06:15:02 +02:00
Irmen de Jong
0f6a98751a
tiny optimization
2023-07-02 06:13:22 +02:00
Irmen de Jong
aac5a4c27f
optimize word repeat loop codegen
2023-07-02 04:51:22 +02:00
Irmen de Jong
d3f6415387
vm: fix repeat 256
2023-07-02 02:38:35 +02:00
Irmen de Jong
04da44eb98
fix certain inefficient codegen when assigning a type casted value
2023-06-29 22:56:26 +02:00
Irmen de Jong
7649be97b1
add git hash to compiler header output
2023-06-29 21:01:02 +02:00
Irmen de Jong
c9ef777e0f
fix rest of possible temp variable conflicts
2023-06-28 23:24:48 +02:00
Irmen de Jong
c0cb2438d5
1-letter symbols now also prefixed with 'p8p_'
...
to avoid assembly errors caused by confusing variable 'a' with register 'a' etc.
2023-06-28 23:17:59 +02:00
Irmen de Jong
30c531b39e
attempting to fix array expression inplace assign
2023-06-28 00:38:08 +02:00
Irmen de Jong
bf703a8a66
unittest
2023-06-27 23:43:35 +02:00
Irmen de Jong
e7b631b087
allow comment lines inside array initializer value
2023-06-27 23:30:37 +02:00
Irmen de Jong
a9f5dc036c
fix cpu stack corruption in array assignment codegen
2023-06-27 18:49:49 +02:00
Irmen de Jong
0a83b51e00
allow more curly brace styles
2023-06-27 01:59:22 +02:00
Irmen de Jong
eab63ecc6c
allow curly brace on next line also after subroutine and when
2023-06-27 01:29:25 +02:00
Irmen de Jong
b0794cf35e
added hiram bank number to -varshigh
2023-06-27 00:27:34 +02:00
Irmen de Jong
5b9e71a27d
docs
2023-06-25 21:35:30 +02:00
Irmen de Jong
eae41de27d
improve errors generated for undefined symbols
2023-06-25 15:19:51 +02:00
Irmen de Jong
e9163aa3a7
added cx16.save_virtual_registers() and cx16.restore_virtual_registers()
2023-06-24 21:04:47 +02:00
Irmen de Jong
8c617515ba
don't prefix 3-letter symbols too aggressively (could cause some compilation errors)
2023-06-23 23:36:59 +02:00
Irmen de Jong
04e4e71f2e
uword == str is now possible (sugar for string.compare)
2023-06-22 00:20:30 +02:00
Irmen de Jong
a587482edf
optimize dangling else
2023-06-18 13:46:02 +02:00
Irmen de Jong
0aac9350d5
rename math.atan() to math.atan2()
2023-06-18 13:05:36 +02:00
Irmen de Jong
f56c12ee4e
cx16 spotlight example
2023-06-18 12:49:22 +02:00
Irmen de Jong
4bb9ae61f2
library source links
2023-06-18 02:31:45 +02:00
Irmen de Jong
ff7f3484e4
atan
2023-06-17 23:01:47 +02:00
Irmen de Jong
5da3abe6b4
fix silent typecast on return statements that could lose data (word->byte)
2023-06-17 14:44:36 +02:00
Irmen de Jong
c0b398e0ce
add various math.atan() routines
2023-06-17 00:43:33 +02:00
Irmen de Jong
3de10adac2
bump required 64tass version
2023-06-16 23:24:31 +02:00
Irmen de Jong
1b573d6552
add note about lacking fp parse routine
2023-06-16 00:12:52 +02:00
Irmen de Jong
2a96f93919
vm: fix compiler error when dealing with label
2023-06-14 22:14:47 +02:00
Irmen de Jong
c6b2639ca4
fix compiler crash due to missing 6502 codegen
...
(assigning a direct memory read byte to a cx16 virtual register)
2023-06-14 21:10:01 +02:00
Irmen de Jong
b9abf37a7e
fix invalid code when subroutines are defined in a repeat loop
2023-06-13 00:46:32 +02:00
Irmen de Jong
373cbb4144
gradle build error explained
2023-06-11 17:51:18 +02:00
Irmen de Jong
a521982576
fix subroutine inline problem with strings
2023-06-09 21:45:05 +02:00
Irmen de Jong
a77fde577c
update GitHub action steps
2023-06-09 19:51:04 +02:00
Irmen de Jong
ea6926e57d
fix float expression crash: fl = abs/sqrt (fl)+0.5
2023-06-09 19:28:34 +02:00
Irmen de Jong
ba25b7fee6
fix diskio.diskname(). cx16: add diskio.curdir()
2023-06-07 22:38:51 +02:00
Irmen de Jong
7ee162d98b
preparing version 9.0
2023-06-05 19:47:00 +02:00
Irmen de Jong
380f557c45
vm: implement split incr/decr
2023-06-03 22:22:13 +02:00
Irmen de Jong
1bdae53f4e
fix unit tests
2023-06-03 21:39:34 +02:00
Irmen de Jong
9314c346da
-target option is now required; c64 no longer the default
2023-06-03 19:14:45 +02:00
Irmen de Jong
bfaad1388c
IR: handle split arrays without new custom opcodes
2023-06-03 01:51:02 +02:00
Irmen de Jong
0b580ad05d
v9 upgrading doc
2023-06-01 20:23:04 +02:00
Irmen de Jong
bb35a80177
%option splitarrays now also at module level
2023-05-31 21:50:41 +02:00
Irmen de Jong
24fc95ac81
fix atari target syslib
2023-05-31 20:58:00 +02:00
Irmen de Jong
8f864417c4
added %option splitarrays (block level)
2023-05-31 18:49:21 +02:00
Irmen de Jong
bb9d29b061
fix an array literal assignment type error for word arrays
2023-05-30 22:46:37 +02:00
Irmen de Jong
b9d8ec1463
add -splitarrays command line option
2023-05-30 19:08:34 +02:00
Irmen de Jong
1842a7660d
fix compiler crash on missing arguments for clamp,min,max
2023-05-30 18:13:58 +02:00
Irmen de Jong
5caa2f5536
attempt to get newer 64tass from debian testing repo
2023-05-29 23:46:47 +02:00
Irmen de Jong
d6078be8b7
attempt to get newer 64tass from debian testing repo
2023-05-29 23:44:10 +02:00
Irmen de Jong
cf60723f14
attempt to get newer 64tass from debian testing repo
2023-05-29 23:43:08 +02:00
Irmen de Jong
f7ff0a2b1d
attempt to get newer 64tass from debian testing repo
2023-05-29 23:39:00 +02:00
Irmen de Jong
cc49664b2f
attempt to get newer 64tass from debian testing repo
2023-05-29 23:34:34 +02:00
Irmen de Jong
99fe74f026
attempt to get newer 64tass from debian testing repo
2023-05-29 23:31:23 +02:00
Irmen de Jong
b021869eeb
attempt to get newer 64tass from debian testing repo
2023-05-29 23:24:48 +02:00
Irmen de Jong
b8806d163b
attempt to get newer 64tass from debian testing repo
2023-05-29 23:22:05 +02:00
Irmen de Jong
1116aae1de
attempt to get newer 64tass from debian testing repo
2023-05-29 23:18:15 +02:00
Irmen de Jong
5e5f60253b
attempt to get newer 64tass from debian testing repo
2023-05-29 23:14:22 +02:00
Irmen de Jong
bbc02752c9
use split word arrays in various examples, fix codegen issue, docs
2023-05-29 15:34:33 +02:00
Irmen de Jong
9896bc110e
fix some split array issues in 6502 codegen
2023-05-28 22:49:33 +02:00
Irmen de Jong
ca60f8ecdd
Merge branch 'master' into split-arrays
2023-05-28 22:35:16 +02:00
Irmen de Jong
544acd1e35
Merge branch 'v8_maintenance'
2023-05-28 22:30:52 +02:00
Irmen de Jong
6e07602d77
fix psg initial envelope maxvol setting
2023-05-28 22:30:34 +02:00
Irmen de Jong
82898f7bba
fix some split array issues in 6502 codegen
2023-05-28 22:24:56 +02:00
Irmen de Jong
d61283a8bc
Merge branch 'master' into split-arrays
2023-05-28 14:25:37 +02:00
Irmen de Jong
1ee3f826cc
fix sqrt() regression
2023-05-28 14:23:47 +02:00
Irmen de Jong
4a00a5ba9e
use split word arrays in various examples
2023-05-28 13:51:58 +02:00
Irmen de Jong
39eda67867
Merge branch 'master' into split-arrays
...
# Conflicts:
# examples/test.p8
2023-05-28 13:28:43 +02:00
Irmen de Jong
a99d38fdaa
Merge branch 'v8_maintenance'
...
# Conflicts:
# examples/test.p8
2023-05-28 13:26:05 +02:00
Irmen de Jong
0eb2d437e2
fix compiler error and codegen fault on signed value bitwise operation
2023-05-28 13:13:11 +02:00
Irmen de Jong
3ac9036c79
more split array stuff for 6502
2023-05-27 22:44:45 +02:00
Irmen de Jong
c94e292176
more split array stuff
2023-05-27 12:47:11 +02:00
Irmen de Jong
91d87c2d9b
Merge branch 'master' into split-arrays
2023-05-26 20:22:30 +02:00
Irmen de Jong
ff472f69c0
update gradle wrapper to 8.1.1
2023-05-26 20:21:34 +02:00
Irmen de Jong
e18119e24c
Merge branch 'master' into split-arrays
2023-05-26 19:25:57 +02:00
Irmen de Jong
4a592dc64c
kotlin 1.8.21
2023-05-26 19:20:56 +02:00
Irmen de Jong
d9e13201dd
fix kotlin version IDE warning
2023-05-26 19:14:19 +02:00
Irmen de Jong
5c75b19c5d
fix kotlin version IDE warning
2023-05-26 19:13:21 +02:00
Irmen de Jong
52a77db60f
adding split array type
2023-05-26 19:11:07 +02:00
Irmen de Jong
0513c250fb
Merge branch 'v8_maintenance'
2023-05-23 20:42:51 +02:00
Irmen de Jong
48864ad6cf
add a unit test that checks for 64tass availability
2023-05-23 20:42:36 +02:00
Irmen de Jong
cdbccad21e
optimized gfx2 plot and horizontal_line a bit more
2023-05-23 20:29:17 +02:00
Irmen de Jong
e15bc68c9b
added gfx2.fill() flood fill routine
2023-05-23 00:50:10 +02:00
Irmen de Jong
8bffd7672d
added sys.irqsafe_set_irqd()/irqsafe_clear_irqd()
2023-05-22 21:13:20 +02:00
Irmen de Jong
61df5b3060
Merge branch 'v8_maintenance'
...
# Conflicts:
# compiler/res/prog8lib/cx16/syslib.p8
2023-05-22 20:43:05 +02:00
Irmen de Jong
b5255444cd
irq-safe irqd handling for RDTIM16
2023-05-22 20:36:33 +02:00
Irmen de Jong
0c94e377fc
Merge branch 'v8_maintenance'
2023-05-21 16:09:31 +02:00
Irmen de Jong
8e5c67b4b2
ir: don't refuse complicated array lookup expressions
2023-05-21 16:07:19 +02:00
Irmen de Jong
b24f2f1756
Merge branch 'v8_maintenance'
...
# Conflicts:
# compiler/res/prog8lib/cx16/syslib.p8
# examples/test.p8
2023-05-21 15:05:17 +02:00
Irmen de Jong
c69c17de42
cx16 avoid ram bank issue with RDTIM in sys.wait() and c64.RDTIM16()
2023-05-21 15:03:33 +02:00
Irmen de Jong
061617122a
Merge branch 'v8_maintenance'
...
# Conflicts:
# examples/test.p8
2023-05-20 18:07:57 +02:00
Irmen de Jong
125ce3240f
expr operands assignment refactor
2023-05-20 18:04:46 +02:00
Irmen de Jong
7215efe167
fix expr eval error in certain situations
...
such as pokew() with 2 complex operands
2023-05-20 17:42:35 +02:00
Irmen de Jong
06d1570142
cx16: added diskio.save_raw() headerless save routine
2023-05-20 00:00:50 +02:00
Irmen de Jong
093c370faa
todo
2023-05-19 01:26:15 +02:00
Irmen de Jong
aec9574737
Merge branch 'v8_maintenance'
...
# Conflicts:
# compiler/res/version.txt
# docs/source/todo.rst
# examples/test.p8
2023-05-18 22:47:06 +02:00
Irmen de Jong
7ceb76cff5
fix compiler crash on certain operands type mismatch
2023-05-18 22:46:00 +02:00
Irmen de Jong
300e2fe9f8
IR: wrong attempt at optimizing register usage by reusing registers inside different code chunks
2023-05-18 21:57:21 +02:00
Irmen de Jong
91e1643627
update 3rd party libraries
2023-05-18 11:47:30 +02:00
Irmen de Jong
91421b0c62
IR handy sequence shortcut functions
2023-05-18 11:32:20 +02:00
Irmen de Jong
40f611664f
upgr
2023-05-18 00:04:31 +02:00
Irmen de Jong
dcba4f4098
fix resultregister crash
2023-05-18 00:00:37 +02:00
Irmen de Jong
c098ad2b3b
fix vm minf/maxf
2023-05-17 23:18:14 +02:00
Irmen de Jong
b43223cb7a
added clamp() builtin function and floats.clampf()
2023-05-17 23:12:58 +02:00
Irmen de Jong
e243531dab
upgrading
2023-05-17 00:49:47 +02:00
Irmen de Jong
1af38e62bc
removed floats.fabs() and floats.sqrt()/fsqrt()
2023-05-17 00:46:15 +02:00
Irmen de Jong
f37f062cdc
fix for loop pre-check
2023-05-17 00:33:55 +02:00
Irmen de Jong
7e734214dc
v8_maintenance branch made
2023-05-15 23:01:43 +02:00
Irmen de Jong
05d152746f
Merge branch 'master' into version_9
2023-05-15 22:43:03 +02:00
Irmen de Jong
dea7f37553
vm: fix % result when dividing by 0
2023-05-15 20:33:20 +02:00
Irmen de Jong
415c599310
update cx16 keyhandler example to r43 keyboard changes
2023-05-14 23:38:16 +02:00
Irmen de Jong
70cd4fedbe
Revert "update cx16 keyhandler example to r43 keyboard changes"
...
This reverts commit 1e6d7673bc .
2023-05-14 23:29:04 +02:00
Irmen de Jong
1e6d7673bc
update cx16 keyhandler example to r43 keyboard changes
2023-05-14 23:11:24 +02:00
Irmen de Jong
b4963b725b
Merge branch 'master' into version_9
...
# Conflicts:
# compiler/res/version.txt
2023-05-14 22:19:23 +02:00
Irmen de Jong
0371ffa4ce
'amiga' example using iso font
2023-05-14 21:55:35 +02:00
Irmen de Jong
6a664a7e15
Merge branch 'master' into version_9
2023-05-14 21:03:08 +02:00
Irmen de Jong
88ce9300bc
fix parse cpureg in IR regspec
2023-05-14 21:02:40 +02:00
Irmen de Jong
85cf0e311c
Merge branch 'master' into version_9
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# docs/source/todo.rst
# intermediate/src/prog8/intermediate/IRInstructions.kt
2023-05-14 20:47:09 +02:00
Irmen de Jong
0e3d75cfeb
move irType() to intermediate module
2023-05-14 20:44:32 +02:00
Irmen de Jong
630c8a5faa
IR: fix romsub encoding
2023-05-14 18:08:06 +02:00
Irmen de Jong
905921a684
IR: new (sys)call instructions that encapsulate the full subroutine call
...
to fix the bugs resulting from nesting subroutine calls (as param to another call etc)
2023-05-14 15:20:25 +02:00
Irmen de Jong
1e469b3b0f
Merge branch 'master' into version_9
...
# Conflicts:
# docs/source/todo.rst
# examples/test.p8
2023-05-09 22:45:21 +02:00
Irmen de Jong
bff3c4f95c
IR now converts IRInlineAsmChunk (of type IR) into regular code chunks directly.
...
.p8ir files usually won't contain <INLINEASM> nodes any longer
2023-05-09 21:04:31 +02:00
Irmen de Jong
bd2bcb6994
Merge branch 'master' into version_9
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/AssignmentGen.kt
# compiler/res/prog8lib/c128/syslib.p8
# compiler/res/prog8lib/c64/syslib.p8
# compiler/res/prog8lib/cx16/syslib.p8
# docs/source/todo.rst
# examples/test.p8
# intermediate/src/prog8/intermediate/IRInstructions.kt
2023-05-08 23:17:52 +02:00
Irmen de Jong
4c8898a639
fix typecheck crash on certain byte to word assignments
2023-05-08 23:02:48 +02:00
Irmen de Jong
97df33ab1a
IR: fix byte to word assignment not doing value extension
2023-05-08 22:47:00 +02:00
Irmen de Jong
ef46fb2685
refactor
2023-05-08 21:51:55 +02:00
Irmen de Jong
d5d6dd3614
optimize typecast expr
2023-05-08 03:30:14 +02:00
Irmen de Jong
6c233c6a0a
optimize add/sub expr
2023-05-08 02:41:34 +02:00
Irmen de Jong
6db715d879
optimize multiplication expr
2023-05-08 02:10:54 +02:00
Irmen de Jong
ab02e8a546
optimize more carry flag assembly
2023-05-07 23:55:34 +02:00
Irmen de Jong
8cbfe64f19
optimize some carry flag assembly
2023-05-07 23:27:49 +02:00
Irmen de Jong
fd1e9971e4
asmsub Pc params and returnvalue must be boolean
2023-05-07 22:59:30 +02:00
Irmen de Jong
68336a76c5
optimized word comparison expressions
2023-05-07 20:40:48 +02:00
Irmen de Jong
393e914a86
optimized word equality comparison expressions
2023-05-07 18:55:17 +02:00
Irmen de Jong
ffb54110e9
optimized byte comparison expressions
2023-05-07 15:15:58 +02:00
Irmen de Jong
533d825f1a
optimized ubyte comparison expressions
2023-05-07 14:47:31 +02:00
Irmen de Jong
c65279b672
optimized logical expressions more
2023-05-07 13:29:45 +02:00
Irmen de Jong
f9926beeef
fix cx16.psg irq issue
2023-05-04 00:16:24 +02:00
Irmen de Jong
add8a777d8
IR: binarydata fixes
2023-05-03 22:31:04 +02:00
Irmen de Jong
21bc505d85
for loops no longer execute when from var already reached beyond the end
2023-05-03 00:43:03 +02:00
Irmen de Jong
3fc49c001e
IR: fix for-loop codegen when step<0
2023-05-02 23:12:11 +02:00
Irmen de Jong
3d69a95c49
IR: fix for-loop codegen when step<0
2023-05-02 23:09:42 +02:00
Irmen de Jong
d81fdf6d6b
for loops...
2023-05-02 22:55:58 +02:00
Irmen de Jong
87d3109ffb
diskio f_seek_w() abandoned due to unreliability
2023-05-02 19:33:49 +02:00
Irmen de Jong
180dbbb521
cleaning up the diskio modules
...
for cx16: removed cx16diskio (merged everything into its regular diskio module)
for cx16: the load() and load_raw() routines that took an extra ram bank parameter are gone. You have to cx16.rambank() yourself before calling load().
2023-05-02 03:31:11 +02:00
Irmen de Jong
24aac7cee5
cleaning up the diskio modules
2023-05-02 02:15:22 +02:00
Irmen de Jong
53e18a5387
Api change: drivenumber parameter removed from all routines in diskio and cx16diskio modules
2023-05-02 01:48:56 +02:00
Irmen de Jong
92062d056d
divmod() now works on multiple data types including float.
...
divmodw() has been removed
2023-05-02 01:19:53 +02:00
Irmen de Jong
06368ab0a1
sqrt() now works on multiple data types including float.
...
no need to use floats.sqrtf() anymore
2023-05-02 01:19:53 +02:00
Irmen de Jong
38efe25c68
abs() now works on multiple data types including float.
...
no need to use floats.fabs() anymore
2023-05-02 01:19:53 +02:00
Irmen de Jong
319079de7a
sqrt
2023-05-02 01:19:53 +02:00
Irmen de Jong
025bf900a5
min max docs, added floats.minf() and maxf()
2023-05-02 01:19:53 +02:00
Irmen de Jong
2885f4f7b1
fix
2023-05-02 01:19:53 +02:00
Irmen de Jong
c07eda15b1
adding min() and max()
2023-05-02 01:19:53 +02:00
Irmen de Jong
4274296cf3
api change: new 'cbm' module that now contains the common CBM kernal variables and routines.
2023-05-02 01:19:53 +02:00
Irmen de Jong
76a203d4df
api change: rename builtin func sqrt16 to sqrtw
2023-05-02 01:19:53 +02:00
Irmen de Jong
24f37e2062
fix
2023-05-02 01:19:36 +02:00
Irmen de Jong
f465b2e2a0
some improvements to IR peephole optimizer
2023-05-02 00:29:04 +02:00
Irmen de Jong
ce00e49a89
version 8.12
2023-04-30 14:04:54 +02:00
Irmen de Jong
d494f9d66b
fix
2023-04-29 18:04:08 +02:00
Irmen de Jong
c35a183a64
extra fix
2023-04-29 17:24:01 +02:00
Irmen de Jong
9cdd5fe7f2
fix byte to word sign extension error in certain cases
2023-04-29 17:14:50 +02:00
Irmen de Jong
c21428215e
fix possible mkword() error
2023-04-29 14:39:14 +02:00
Irmen de Jong
64d5af46f5
fix IDEA kotlin version
2023-04-29 14:23:40 +02:00
Irmen de Jong
25846ea18a
fix zsound stream example (missing sound file)
2023-04-29 13:02:24 +02:00
Irmen de Jong
798383596d
fix %option merge possible error
2023-04-29 00:01:59 +02:00
Irmen de Jong
9ca71bc937
fix %option merge not choosing correct block to merge into
2023-04-28 23:52:02 +02:00
Irmen de Jong
5407429ec0
improve error message
2023-04-28 23:32:19 +02:00
Irmen de Jong
ee5c94f6db
c128: fix key status zp location symbols
2023-04-28 20:43:26 +02:00
Irmen de Jong
91045afbee
document limited fp support
2023-04-28 18:18:41 +02:00
Irmen de Jong
3f64782023
c128: remove floats module
2023-04-28 17:48:54 +02:00
Irmen de Jong
f8d35f9502
c128: no FP support
2023-04-28 17:43:42 +02:00
Irmen de Jong
ea78d3ec9a
c128: better ZP definition
2023-04-28 17:08:56 +02:00
Irmen de Jong
e056a28316
c128: fix memory bank resetting
2023-04-28 04:02:07 +02:00
Irmen de Jong
0bea721c2e
docs
2023-04-27 01:26:25 +02:00
Irmen de Jong
e1b89494d0
tiny psg improvement to avoid clicks more on changing freq or envelope, added cx16.vpoke_mask()
2023-04-26 22:45:32 +02:00
Irmen de Jong
cd8e7f3912
psg comment
2023-04-24 01:23:03 +02:00
Irmen de Jong
50604c25c2
remove obsolete comments, updated links and docs.
2023-04-23 15:13:53 +02:00
Irmen de Jong
aa6b2357d8
fix void warnings
2023-04-18 23:47:31 +02:00
Irmen de Jong
5b2d29bef6
improved and added a few system routines for the cx16
2023-04-18 23:20:28 +02:00
Irmen de Jong
a296d26328
api change: renamed cx16.push/pop_vera_context() to save/restore_vera_context()
...
this better reflects its capability because it doesn't use a stack, only a single buffer
2023-04-17 23:37:15 +02:00
Irmen de Jong
d01a26ec61
fix occasional crash when indexing an undefined array variable
2023-04-16 05:23:06 +02:00
Irmen de Jong
efd7d6f0c0
tweak IR call args setting now via special SETPARAM instruction
2023-04-14 02:10:39 +02:00
Irmen de Jong
b55be093be
tweak IR
2023-04-11 22:48:20 +02:00
Irmen de Jong
7c1d5cadd7
fix sort and reverse on strings on 6502 codegen
2023-04-10 19:33:24 +02:00
Irmen de Jong
dd1592b03b
ir syscalls args via stack instead of fixed r65500+
2023-04-10 18:02:37 +02:00
Irmen de Jong
9b37ac483f
vm fix str to word conversion
...
ir SYSCALL puts result(s) on value stack, instead of on hardcoded r0, r1
2023-04-10 16:26:42 +02:00
Irmen de Jong
090820958e
ir divmod returns its results on valuestack, to keep consistency with the rule that only 1 register can be a returnvalue
2023-04-10 15:26:30 +02:00
Irmen de Jong
ac21e1be5c
vm syscall instruction no longer fixed to r0
2023-04-10 13:44:05 +02:00
Irmen de Jong
5196443b26
fix
2023-04-10 12:16:52 +02:00
Irmen de Jong
c8531cbeb1
remove unused variables from IR output
2023-04-09 23:09:30 +02:00
Irmen de Jong
c560abedba
fix compiler crash on rol/ror array value
2023-04-09 22:29:11 +02:00
Irmen de Jong
9b952fbc44
tweaking IR instruction set branch instructions
2023-04-09 22:17:19 +02:00
Irmen de Jong
ccdf05e922
tweaking IR instruction formats
2023-04-09 16:12:16 +02:00
Irmen de Jong
c3d74f2ae9
fix golden ram area for x16, remove romsub restriction
...
note: romsubs still won't work in the VM but at least they compile again
2023-04-08 00:40:52 +02:00
Irmen de Jong
f47498888c
optimize imports
2023-04-07 22:34:23 +02:00
Irmen de Jong
5665a7f0cb
also track ir reg types
2023-04-07 22:24:17 +02:00
Irmen de Jong
b8178c6c8d
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# docs/source/todo.rst
2023-04-06 21:25:06 +02:00
Irmen de Jong
4a0f15eb88
some loose ends
2023-04-06 21:19:21 +02:00
Irmen de Jong
c4f53fe525
IR: small optimization
2023-04-05 22:55:54 +02:00
Irmen de Jong
8c93ec52de
IR: fix augmented assignments
2023-04-05 22:13:18 +02:00
Irmen de Jong
befe0fff2a
IR: fix comparison codegen errors in newexpr path
2023-04-05 00:15:09 +02:00
Irmen de Jong
b6a837cbea
fix boolean array with initialization value
2023-04-04 22:11:51 +02:00
Irmen de Jong
4861973899
vm: fix float arrays init values
2023-04-04 00:06:55 +02:00
Irmen de Jong
c593e4b500
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# docs/source/memorymap.odg
# docs/source/memorymap.svg
2023-04-03 23:04:29 +02:00
Irmen de Jong
5bf78c20d4
update to Kotlin 1.8.20, docs update
2023-04-03 23:04:00 +02:00
Irmen de Jong
5c672130e6
update to Kotlin 1.8.20
2023-04-03 22:42:27 +02:00
Irmen de Jong
d8214d4f12
fix IR array indexing for newexpr
2023-04-03 03:13:35 +02:00
Irmen de Jong
64d1f09ce0
new diagrams
2023-04-03 00:32:12 +02:00
Irmen de Jong
47d0f0ea40
implement missing operators in IR code gen
2023-04-01 02:29:33 +02:00
Irmen de Jong
2d85fd093e
Merge branch 'new-expr-codegen'
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/BuiltinFunctionsAsmGen.kt
# codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt
# examples/test.p8
2023-03-29 23:56:16 +02:00
Irmen de Jong
d936568b76
added divmod() and divmodw() builtin functions to efficiently compute division and remainder in a single call
2023-03-29 23:46:44 +02:00
Irmen de Jong
4598a83e8e
fixing new comparisons
2023-03-29 22:06:32 +02:00
Irmen de Jong
f4bf00ad31
fix string compare and ifelse
2023-03-28 22:46:01 +02:00
Irmen de Jong
07fde7f6cc
fix IR same register error
2023-03-28 20:01:26 +02:00
Irmen de Jong
729209574e
fixing str compares codegen
2023-03-28 20:01:26 +02:00
Irmen de Jong
f28206d989
new attempt
2023-03-28 20:01:26 +02:00
Irmen de Jong
0c81b32cac
todo
2023-03-28 20:01:26 +02:00
Irmen de Jong
11216017cb
fix IR same register error
2023-03-28 20:00:21 +02:00
Irmen de Jong
a7b9f53967
fix word comparison bug in asmgen
2023-03-26 23:44:06 +02:00
Irmen de Jong
1fa2e2e37d
3rd party library versions upgrades
2023-03-26 21:36:21 +02:00
Irmen de Jong
f67d5faeb7
allow .123 as float literal syntax. Fixes #103
2023-03-26 21:09:15 +02:00
Irmen de Jong
5cbf859458
cleanup
2023-03-26 15:08:57 +02:00
Irmen de Jong
629ed74d09
got rid of rpn deadend code...
2023-03-25 18:45:17 +01:00
Irmen de Jong
ca2af2ca63
todo
2023-03-25 18:23:33 +01:00
Irmen de Jong
52ab089615
rpn: implement more comparisons
2023-03-25 18:21:10 +01:00
Irmen de Jong
01461a196d
implementing optimized comparisons
2023-03-25 00:08:21 +01:00
Irmen de Jong
04832f052a
working on doing comparison codegen differently
2023-03-25 00:08:21 +01:00
Irmen de Jong
c8b2c8ae50
extra asmvars now also moved into BSS section instead of taking up space inline
2023-03-25 00:00:29 +01:00
Irmen de Jong
1b81c7fb22
fix warnings
2023-03-24 22:50:01 +01:00
Irmen de Jong
9ccda0247e
Merge pull request #102 from Frosty-J/vera
...
DC_VER0 through 3
2023-03-24 02:10:23 +01:00
Irmen de Jong
a7df4dcf25
added cx16 bubbleuniverse example
2023-03-24 01:59:00 +01:00
Irmen de Jong
d91f47c791
fix cx16 graphics.plot() colors, and FB_set_palette definition
2023-03-24 01:56:29 +01:00
Frosty-J
a9ac4e7f44
Even more VERA_DC constants!
2023-03-23 17:29:28 +00:00
Irmen de Jong
fc3ec57437
fix wrong branch in in-place byte equality expression
2023-03-23 00:45:47 +01:00
Irmen de Jong
266f6ab919
check
2023-03-22 20:15:24 +01:00
Irmen de Jong
6218c1c00b
fix too greedy expression simplification
...
could cause problems when variables occur multiple times in the same expression.
Fixes #101
2023-03-22 18:25:28 +01:00
Irmen de Jong
cc81d6fe82
remove traces of ** operator
2023-03-22 00:51:58 +01:00
Irmen de Jong
69f9102f2d
rtd fix attempt
2023-03-22 00:31:23 +01:00
Irmen de Jong
beb9275982
rtd fix attempt
2023-03-22 00:16:33 +01:00
Irmen de Jong
abe48713f2
rtd fix attempt
2023-03-22 00:12:47 +01:00
Irmen de Jong
82cfaf2fbb
rtd fix attempt
2023-03-22 00:10:18 +01:00
Irmen de Jong
3d3bc4738f
rtd fix attempt
2023-03-22 00:07:01 +01:00
Irmen de Jong
2d0746f5a4
rtd fix attempt
2023-03-21 23:52:49 +01:00
Irmen de Jong
9c71e2f1c8
rpn optimizations
2023-03-21 18:41:37 +01:00
Irmen de Jong
134fd62da8
RPN: better handling of bit shifts
2023-03-21 02:58:26 +01:00
Irmen de Jong
2afd283582
optimize RPN
2023-03-21 00:05:32 +01:00
Irmen de Jong
c66734bab0
fix cx16 ubyte to float cast (wrong rom routine)
2023-03-20 23:25:28 +01:00
Irmen de Jong
8e56a61f95
tweak
2023-03-20 22:41:58 +01:00
Irmen de Jong
d265271148
fix rpn variable depth clobber and type error
2023-03-20 22:18:10 +01:00
Irmen de Jong
b40e397b28
fix rpn result type mismatch
2023-03-20 00:58:48 +01:00
Irmen de Jong
35ff1d996a
only reuse actual counter vars
2023-03-19 21:53:49 +01:00
Irmen de Jong
deea0b05cb
tweak cx16 system init and reset to not reset Vera any more
...
uses new audio routine to silence the audio
2023-03-19 21:16:23 +01:00
Irmen de Jong
c50c9ca545
Merge branch 'rpn-expressions'
2023-03-19 17:36:20 +01:00
Irmen de Jong
a819b4a5a5
fix RPN issues
2023-03-19 17:35:28 +01:00
Irmen de Jong
df2d7d4734
fix RPN comparison exprs
2023-03-19 16:08:48 +01:00
Irmen de Jong
79ce4098cf
todo
2023-03-19 01:34:55 +01:00
Irmen de Jong
374464a1f8
weird condition operator...
2023-03-19 01:32:20 +01:00
Irmen de Jong
c8d0bf27af
get rid of useless scope param
2023-03-19 00:58:45 +01:00
Irmen de Jong
6e4ae034b2
more Rpn optimizations
2023-03-19 00:48:12 +01:00
Irmen de Jong
52b560e72d
more Rpn optimizations
2023-03-18 19:13:32 +01:00
Irmen de Jong
9b971ad222
fix PeekW and PokeW optimizations
2023-03-18 17:36:32 +01:00
Irmen de Jong
3613162d09
fix RPN string comparisons
2023-03-18 16:55:03 +01:00
Irmen de Jong
3a272e998d
Merge branch 'master' into rpn-expressions
2023-03-18 14:42:38 +01:00
Irmen de Jong
d4c750beb4
fix cx16/bdmusic and sincos examples
2023-03-18 14:42:15 +01:00
Irmen de Jong
84b31e65e1
more rpn optimization
2023-03-18 14:23:17 +01:00
Irmen de Jong
7b802bfd3d
Merge branch 'master' into rpn-expressions
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/AsmGen.kt
2023-03-18 13:39:14 +01:00
Irmen de Jong
f9c4632b8d
c64: remove 2 problematic ZP locations from the free list when using floating point
2023-03-18 13:36:19 +01:00
Irmen de Jong
e4764cd8a6
fix typo in comparison function and in pointer optimization
2023-03-18 12:55:35 +01:00
Irmen de Jong
dd78a3a686
fix typo in comparison function
2023-03-18 12:52:50 +01:00
Irmen de Jong
94c06e13f4
implementing Rpn optimizations 2
2023-03-18 12:43:45 +01:00
Irmen de Jong
e8bebe5a75
implementing Rpn optimizations
2023-03-18 01:13:02 +01:00
Irmen de Jong
5b0e1b4f9e
a little rpn refactor
2023-03-17 23:04:56 +01:00
Irmen de Jong
8c0a93779b
added first implementation of RPN 6502 codegen - all via stackeval still
2023-03-17 22:28:22 +01:00
Irmen de Jong
9241479da4
add "-rpn" command line switch to transform exprs to RPN in codegen
2023-03-17 22:28:22 +01:00
Irmen de Jong
8ffca93cd5
added transform routine for expr -> RPN
2023-03-17 22:28:22 +01:00
Irmen de Jong
7fea0c124a
introduce PtRpn node to replace PtBinaryExpression later
2023-03-17 22:28:22 +01:00
Irmen de Jong
20dbdb20d2
renamed the cx16 VIA register variables to more meaningful names
2023-03-17 22:28:09 +01:00
Irmen de Jong
e6b8e2e8be
attempt at doc fix
2023-03-17 22:15:21 +01:00
Irmen de Jong
7c5b7f77cc
attempt at doc fix
2023-03-17 22:12:47 +01:00
Irmen de Jong
de84547a21
attempt at doc fix
2023-03-17 22:06:06 +01:00
Irmen de Jong
44676756ae
don't print weird position link for library files
2023-03-17 00:50:17 +01:00
Irmen de Jong
b399b0f182
don't print weird position link for dummy positions
2023-03-16 23:37:33 +01:00
Irmen de Jong
1152191f48
add optimization: replace simple for loops by repeat loop
2023-03-15 21:11:37 +01:00
Irmen de Jong
af1b07ad44
add more referencesIdentifier() on ast nodes
2023-03-15 20:44:24 +01:00
Irmen de Jong
b8113fff1e
todo
2023-03-15 01:05:48 +01:00
Irmen de Jong
ff6948cf2d
syntax defs for unroll
2023-03-14 23:52:07 +01:00
Irmen de Jong
fd25e85d59
added unroll loop construct
2023-03-14 23:37:49 +01:00
Irmen de Jong
c07cd72e85
restored the non=problematic asm optimization steps...
2023-03-14 22:30:50 +01:00
Irmen de Jong
e2c101206c
removed a problematic asm optimization step that could result in dysfunctional code when writing to I/O addresses
2023-03-14 22:14:48 +01:00
Irmen de Jong
92276b5769
IR fix unneeded register allocated for array indexing with variable
2023-03-14 21:24:44 +01:00
Irmen de Jong
a2133f61a8
get rid of all the require() checks that test result regs to be different
2023-03-14 01:01:46 +01:00
Irmen de Jong
199adbbcf0
IR: don't allow to have 2 same registers on instructions
2023-03-14 00:45:41 +01:00
Irmen de Jong
dc316fd7b4
IR: more optimal branch instructions for comparisons against zero
2023-03-13 23:17:53 +01:00
Irmen de Jong
025183602f
refactor IR returnregs 6
2023-03-13 21:35:23 +01:00
Irmen de Jong
db4619a9d9
refactor IR returnregs 5
2023-03-13 04:16:50 +01:00
Irmen de Jong
451e527b7c
refactor IR returnregs 4
2023-03-13 03:54:16 +01:00
Irmen de Jong
54dd3a00df
refactor IR returnregs 3
2023-03-13 03:20:06 +01:00
Irmen de Jong
03c5dab79d
refactor IR returnregs 2
2023-03-13 02:50:41 +01:00
Irmen de Jong
1fdee861e8
refactor IR returnregs
2023-03-13 00:32:48 +01:00
Irmen de Jong
c12bf991b3
reintegrate into existing IR optimizer
2023-03-12 22:16:20 +01:00
Irmen de Jong
78a097585d
new IR call and return instructions to deal with returnregisters
2023-03-12 21:54:59 +01:00
Irmen de Jong
39132327cc
added optimizer for IR code
...
with two very simple optimizations
2023-03-12 20:30:51 +01:00
Irmen de Jong
dc32318cec
fix possible string error on inlined subroutines
2023-03-12 18:16:48 +01:00
Irmen de Jong
592f74124c
fix startup subroutine linking in VM
2023-03-12 16:09:55 +01:00
Irmen de Jong
e5e63cc5ac
catch wrong repeat value
2023-03-11 16:13:02 +01:00
Irmen de Jong
f40e0f786d
txt.width() and txt.height() added for vm target
2023-03-11 16:05:45 +01:00
Irmen de Jong
ebd9f1471b
fix crash when using const word as pointer and implement 2 missing assign codegen paths
2023-03-11 15:39:03 +01:00
Irmen de Jong
d76547ead4
don't crash on certain undefined symbols, give proper error instead
...
Also the error handlers in unit tests now de-duplicate messages just like the compiler itself does
2023-03-11 14:58:41 +01:00
Irmen de Jong
4600772e05
fix pokew mistake
2023-03-11 01:03:34 +01:00
Irmen de Jong
ed597423cd
fix problem with initializing certain array decls with single value
2023-03-11 00:43:30 +01:00
Irmen de Jong
f20ca06f85
give correct error when using memory mapped var as array pointer
2023-03-11 00:26:19 +01:00
Irmen de Jong
a636d3f394
give correct error on attempt to const array
2023-03-10 23:46:13 +01:00
Irmen de Jong
043df18daa
set X to bottom part of eval stack in irq handler. fixes #94
2023-03-10 23:29:34 +01:00
Irmen de Jong
96996bf18e
be less aggressive with translating adds/subs into auto inc/decrements, to avoid code bloat
2023-03-10 23:01:55 +01:00
Irmen de Jong
f350137a14
fix array in place assignments
...
fixes balls and snow examples amongst others
2023-03-10 04:07:50 +01:00
Irmen de Jong
b7a6f3ec75
fix compiler not optimizing x+=1 into x++ anymore
2023-03-10 02:45:25 +01:00
Irmen de Jong
6c34672549
array in-place assignment problem
2023-03-10 02:02:47 +01:00
Irmen de Jong
e779a07bce
allow when with byte 1,2,3 for word variables without having to cast the values to word explicitly
2023-03-09 22:15:56 +01:00
Irmen de Jong
9a36e8ba3b
todo
2023-03-09 00:00:03 +01:00
Irmen de Jong
c968bacb01
fix pokew() crash with certain address expressions
2023-03-08 23:29:57 +01:00
Irmen de Jong
25199dfb43
change tokenizer so that A,X,Y now are parsed correctly as identifiers as well
2023-03-08 22:57:19 +01:00
Irmen de Jong
48fed4e6fb
slight tweak to codegenerator backend interface
2023-03-08 00:14:38 +01:00
Irmen de Jong
fc253237c9
fix issues with reporting inlined subroutines as unused
2023-03-07 23:47:14 +01:00
Irmen de Jong
589948c7f4
fix IR translateIfElseNonZeroComparison for ints + floats
2023-03-07 23:07:51 +01:00
Irmen de Jong
7e69690605
fix IR translateIfFollowedByJustGoto for ints + floats
2023-03-07 22:04:02 +01:00
Irmen de Jong
95f498ba9b
fix IR translateIfElseZeroComparison for ints + floats
2023-03-07 21:26:34 +01:00
Irmen de Jong
fd07ae5225
fix various IR file and symboltable issues
2023-03-07 19:40:11 +01:00
Irmen de Jong
8acd94fc89
avoid work
2023-03-05 12:32:58 +01:00
Irmen de Jong
1436480eab
added a few more comparison expression optimizations
2023-03-04 16:01:40 +01:00
Irmen de Jong
448d176c24
fix vm crash on empty string
2023-03-04 15:35:54 +01:00
Irmen de Jong
fd269453a4
todos
2023-03-04 14:14:01 +01:00
Irmen de Jong
b3b380964c
remove searchParameter() from lookups
...
it shouldn't be needed to look up subroutine parameters by scoped name
2023-03-04 13:24:33 +01:00
Irmen de Jong
6e9025ebf2
cx16 fix irq statusbit handling and kefrenbars example
2023-03-03 21:58:08 +01:00
Irmen de Jong
3922691b3c
limit to 48828 hz sample rate (vera max)
2023-03-03 18:04:21 +01:00
Irmen de Jong
0545b77cf4
ask for filename
2023-03-03 17:24:16 +01:00
Irmen de Jong
6b3f39fa1a
oops
2023-03-03 17:17:19 +01:00
Irmen de Jong
3114ab87dc
add 8 bit sample width support
2023-03-03 17:12:44 +01:00
Irmen de Jong
00bc99cc7b
added cx16/stream-wav example, refactor pcmaudio code
2023-03-03 14:18:13 +01:00
Irmen de Jong
540b3ae2f4
tweak BinaryExpression splitting
2023-02-28 21:45:38 +01:00
Irmen de Jong
dbfe4140e1
improved import search paths
2023-02-28 20:08:11 +01:00
Irmen de Jong
d3675ec254
gone, deprecated
2023-02-27 23:41:22 +01:00
Irmen de Jong
ded2483fc0
cx16 startup code now properly turns off mouse cursor
2023-02-27 23:35:42 +01:00
Irmen de Jong
e62ea388e0
tweak cx16 adpcm example
2023-02-24 01:38:03 +01:00
Irmen de Jong
f20356e9be
cx16.callfar signature has been changed to be easier to use
2023-02-23 23:06:20 +01:00
Irmen de Jong
d282a2d846
remove cx16.callrom() just use callfar
2023-02-23 23:02:56 +01:00
Irmen de Jong
4641ac46e7
extra question in porting guide for high ram
2023-02-22 22:56:43 +01:00
Irmen de Jong
ba9268a09e
added -varshigh compiler option to move BSS section.
...
Documented BSS a bit in the manual.
2023-02-22 22:44:29 +01:00
Irmen de Jong
fb9902c536
avoid const fold loop on const bool thing=true
...
fixes #97
2023-02-22 21:27:08 +01:00
Irmen de Jong
5318ba6c6e
shrink evalstack from 2 to 1 page
...
c64=$cf00-$cfff, x16: $0700-$07ff
2023-02-21 22:52:04 +01:00
Irmen de Jong
fd5ebef488
cx16 startup code now also selects ram bank 1
2023-02-21 21:53:32 +01:00
Irmen de Jong
d9e4f39ddc
memset BSS section to zero all at once, less individual var=0 assigns
2023-02-21 00:26:21 +01:00
Irmen de Jong
435b9d8973
get rid of 'noreinit' option for now, because it resulted in unreliable code
2023-02-20 23:29:16 +01:00
Irmen de Jong
0ea70ba656
fix proper initialization of zeropagevars with 'noreinit'
2023-02-20 23:05:27 +01:00
Irmen de Jong
92a07b87d2
clearer
2023-02-20 02:32:36 +01:00
Irmen de Jong
c3c82282ba
reinitGlobals option is clearer than the inverse
2023-02-19 19:09:29 +01:00
Irmen de Jong
adc15c24ef
introduce bss segments
2023-02-19 18:12:37 +01:00
Irmen de Jong
dddf9a9396
remove explicit 'bss' from St var, changed to 'uninitialized'
2023-02-19 16:50:06 +01:00
Irmen de Jong
9ca6860ffa
tweak
2023-02-19 15:08:16 +01:00
Irmen de Jong
f7dd388954
remove unsupported floats.FTOSWRDAY routine. Fixes #96
2023-02-17 18:05:46 +01:00
Irmen de Jong
6012839f0e
todo
2023-02-16 23:06:09 +01:00
Irmen de Jong
8e9cbab053
todo
2023-02-16 22:53:16 +01:00
Irmen de Jong
aaf375a57b
move some utility methods into Pt Ast nodes itself
2023-02-16 22:45:35 +01:00
Irmen de Jong
3cce985f03
check float bits
2023-02-16 22:22:12 +01:00
Irmen de Jong
c59df6ec20
optimize isZpVar
2023-02-16 00:41:20 +01:00
Irmen de Jong
5c3f41f64d
reintroduce explicit PtAugmentedAssign ast node
2023-02-15 22:54:32 +01:00
Irmen de Jong
cf3523f49f
Merge branch 'codegen-on-new-ast'
2023-02-14 22:48:11 +01:00
Irmen de Jong
db794752cb
fix ast error on inline sub
2023-02-14 22:37:33 +01:00
Irmen de Jong
bceaebe856
fix crash on sort/reverse unused arrays
...
fixes #95
2023-02-14 00:26:29 +01:00
Irmen de Jong
3916de2921
attempt to clarify docs of cx16.numbanks()
2023-02-13 23:45:53 +01:00
Irmen de Jong
9e0f8c1a97
remove avg() from syntax defs, it doesn't exist anymore
2023-02-13 22:31:06 +01:00
Irmen de Jong
0cbc56b82e
remove unused ast print func
2023-02-13 00:19:48 +01:00
Irmen de Jong
b95608f68a
new common ICodeGeneratorBackend interface for all code generator classes
2023-02-12 23:52:54 +01:00
Irmen de Jong
b6e5dbd06c
optimized away VarDecl.subroutineParameter
2023-02-12 23:19:35 +01:00
Irmen de Jong
914f19be86
version 8.9
2023-02-12 17:38:13 +01:00
Irmen de Jong
f09bcf3fcf
Merge branch 'master' into codegen-on-new-ast
2023-02-12 17:36:18 +01:00
Irmen de Jong
d0b18dec8e
shuffle variable sorting around to attempt smaller compiled programs
2023-02-12 17:34:33 +01:00
Irmen de Jong
75d486b124
fix variable node casting
2023-02-12 17:04:58 +01:00
Irmen de Jong
4914609485
local varnames and fix uninitialized parents
2023-02-12 16:00:58 +01:00
Irmen de Jong
75bd66326a
fix variable zpwish
2023-02-11 15:18:57 +01:00
Irmen de Jong
8f904f75bb
Merge branch 'master' into codegen-on-new-ast
2023-02-11 14:40:23 +01:00
Irmen de Jong
549c598f51
variables sorted in asm
2023-02-11 14:35:56 +01:00
Irmen de Jong
ed68d604d6
fix break as indirect jump
...
fix subroutine param scoped name
2023-02-11 01:21:27 +01:00
Irmen de Jong
f83752f43b
update compiler internals diagram
2023-02-09 23:15:19 +01:00
Irmen de Jong
86c22636eb
Merge branch 'master' into codegen-on-new-ast
2023-02-09 23:05:54 +01:00
Irmen de Jong
30d20a453b
tweak SymbolTable and fix its unittest
2023-02-09 22:58:21 +01:00
Irmen de Jong
fe29d8a23f
tweak codegen of inline sub
2023-02-09 21:59:09 +01:00
Irmen de Jong
694d088160
some cleanups about asmsub return registers and types
2023-02-09 03:19:57 +01:00
Irmen de Jong
6aabbffc62
some cleanups
2023-02-09 02:34:18 +01:00
Irmen de Jong
7b59bc8d12
avoid division by zero if host fs hyperload is used which loads instantly
2023-02-08 01:37:49 +01:00
Irmen de Jong
79d0fb0b52
cx16.numbanks() now returns a word because the result can be >255
2023-02-08 00:51:34 +01:00
Irmen de Jong
edf56d34f8
doc about no conditional compilation, fixes #93
...
also added a note to MEMTOP about 0 result
2023-02-06 23:36:19 +01:00
Irmen de Jong
623329fb33
fix
2023-02-05 17:08:24 +01:00
Irmen de Jong
9f0074eef9
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# codeCore/src/prog8/code/ast/AstStatements.kt
2023-02-05 16:44:30 +01:00
Irmen de Jong
6733253826
added printer for Pt Ast tree
2023-02-05 16:42:06 +01:00
Irmen de Jong
f117805129
order
2023-02-05 12:36:32 +01:00
Irmen de Jong
c75b1581d2
lookup via new ST
2023-02-05 01:15:23 +01:00
Irmen de Jong
109e118aba
fix sub return register
2023-02-03 21:16:44 +01:00
Irmen de Jong
201b77d5b6
boolean vs byte cast fixing, and pointervar error
2023-02-02 00:57:20 +01:00
Irmen de Jong
a5ca08f33d
fix popCpuStack to load values into asmsub register params
2023-02-01 22:00:37 +01:00
Irmen de Jong
86210c4513
clarification
2023-02-01 20:58:40 +01:00
Irmen de Jong
988a3e4446
group the three Pt nodes that represent a variable in the p8 source under single interface IPtVariable
2023-01-31 23:29:15 +01:00
Irmen de Jong
0f5cd22bb7
more codegen fixes
2023-01-31 22:57:26 +01:00
Irmen de Jong
2f5bed36b3
remove bool to ubyte typecasts
2023-01-31 01:25:44 +01:00
Irmen de Jong
5b6534bb28
fix symbol lookup in new ast and minor codegen errors
2023-01-31 00:18:21 +01:00
Irmen de Jong
e31e5b2477
got rid of PtScopeVarsDecls
2023-01-29 13:49:27 +01:00
Irmen de Jong
07d5fafe2e
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# compiler/src/prog8/compiler/astprocessing/IntermediateAstMaker.kt
2023-01-29 13:34:00 +01:00
Irmen de Jong
e08da659e5
got rid of PtScopeVarsDecls node, just insert variable nodes directly
2023-01-29 13:25:15 +01:00
Irmen de Jong
8a4979f44c
vm target 'zeropage' more robust
2023-01-29 12:47:12 +01:00
Irmen de Jong
e67464325f
fix missing symboltable entries for asmgen
2023-01-28 00:00:23 +01:00
Irmen de Jong
94c9b0d23b
Merge branch 'master' into codegen-on-new-ast
2023-01-27 22:14:57 +01:00
Irmen de Jong
e9ec310d8a
upgrade to kotlin 1.8.0
2023-01-27 22:14:10 +01:00
Irmen de Jong
c78d1e3c39
implemented Pt findTarget and siblings
2023-01-27 01:51:21 +01:00
Irmen de Jong
e94319145f
test
2023-01-26 01:41:44 +01:00
Irmen de Jong
3f3b01b5f6
Merge branch 'master' into codegen-on-new-ast
2023-01-26 01:40:30 +01:00
Irmen de Jong
19a2791c65
vm target can't use asmsub at all, give better error for that
2023-01-26 01:38:13 +01:00
Irmen de Jong
4e8ccf0ef3
Merge branch 'master' into codegen-on-new-ast
2023-01-26 00:38:54 +01:00
Irmen de Jong
f1a7d5ecf7
docs
2023-01-26 00:37:30 +01:00
Irmen de Jong
8b05abb80d
proper error when attempting to refer to parameters of asmsub by name
2023-01-25 23:41:08 +01:00
Irmen de Jong
48c9349ce9
working on codegen fixes
2023-01-25 01:57:25 +01:00
Irmen de Jong
117d848466
consolidate builtin function definitions into codeCore
2023-01-25 00:23:00 +01:00
Irmen de Jong
9a2df072cc
tiny correction
2023-01-24 22:48:44 +01:00
Irmen de Jong
99c62aab36
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# examples/test.p8
2023-01-24 01:51:20 +01:00
Irmen de Jong
224278e07a
correct openjdk-11 sdk setting in project files instead of just 11
2023-01-24 01:49:38 +01:00
Irmen de Jong
74b69e191e
restructure keyboardhandler example due to X register bug, discussed in #94
2023-01-24 01:30:57 +01:00
Irmen de Jong
8cda8a727c
update vtui example to vtui 1.0
2023-01-24 01:00:21 +01:00
Irmen de Jong
a3c0c7c96f
Merge branch 'master' into codegen-on-new-ast
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/IRCodeGen.kt
# examples/test.p8
2023-01-22 18:30:37 +01:00
Irmen de Jong
4403e4ed62
optimize node renames
2023-01-22 18:26:37 +01:00
Irmen de Jong
9b209823f6
simple test
2023-01-22 17:10:52 +01:00
Irmen de Jong
b2cb125bd4
more 6502 codegen on new Pt-AST.
2023-01-22 17:10:52 +01:00
Irmen de Jong
5e8f767642
6502 codegen on new Pt-AST.
2023-01-22 17:10:52 +01:00
Irmen de Jong
6ee270d9d8
make name a var in new ast to allow cheap renames
2023-01-22 17:10:04 +01:00
Irmen de Jong
44fa309d20
tweak action
2023-01-21 15:29:11 +01:00
Irmen de Jong
58d88f3dd4
github action and update tool docs
2023-01-21 14:47:32 +01:00
Irmen de Jong
e980c23177
github action
2023-01-21 14:25:17 +01:00
Irmen de Jong
75224321bb
github action
2023-01-21 14:19:01 +01:00
Irmen de Jong
801af05b20
github action
2023-01-21 14:02:08 +01:00
Irmen de Jong
7611dbbddc
fix action
2023-01-21 13:47:09 +01:00
Irmen de Jong
6d40ca15bc
github action
2023-01-21 13:39:30 +01:00
Irmen de Jong
32c1c19224
tweak sys.wait() routines on various targets
...
add warning to docs about FP usage in IRQ
2023-01-20 03:29:10 +01:00
Irmen de Jong
bbf6357222
remove workaround for black cursor at boot as this was recently fixed in the kernal rom.
2023-01-17 23:27:27 +01:00
Irmen de Jong
dc16629c24
todo
2023-01-04 23:57:59 +01:00
Irmen de Jong
3718b9d768
less joins
2023-01-02 02:10:38 +01:00
Irmen de Jong
c25eb088ec
redo 8e730ef93d to avoid larger code generated
2023-01-01 23:43:33 +01:00
Irmen de Jong
3feb3e52f8
optimizing scoped names in zeropage
2022-12-31 03:57:51 +01:00
Irmen de Jong
8e730ef93d
optimizing scoped names more and fix scoping of identifier names in arrays (pointers) in SymbolTable
2022-12-31 03:20:20 +01:00
Irmen de Jong
e0913a39ab
optimizing
2022-12-30 18:50:45 +01:00
Irmen de Jong
7a27fbc001
add params for future changes
2022-12-30 17:43:55 +01:00
Irmen de Jong
ee0dbdad35
don't reshuffle 'start' routine to the top. Fixes zsound examples.
2022-12-30 17:12:01 +01:00
Irmen de Jong
9225f88f89
diskio comments
2022-12-30 15:49:53 +01:00
Irmen de Jong
a04839dd6b
vm: add property for custom breakpoint handler
2022-12-30 15:10:13 +01:00
Irmen de Jong
002006517a
rewrite bool=bool^1 into bool=not bool
2022-12-29 19:42:38 +01:00
Irmen de Jong
f5b202d438
fix ast type error in float cast to bool
2022-12-28 22:18:21 +01:00
Irmen de Jong
a7df094ff4
don't allow ~ on booleans, also introduce SZ and SNZ instructions in IR to complete the conditional-set instruction list.
2022-12-28 21:19:38 +01:00
Irmen de Jong
1e6fa77633
ir: 4 new instructions to branch on signed <0, >0, <=0, >=0
2022-12-28 13:14:20 +01:00
Irmen de Jong
eb4cff202c
removed redundant branch opcodes in IR: BLT(S), BLE(S). Just use swapped BGT(S), BGE(S).
2022-12-28 12:41:05 +01:00
Irmen de Jong
7ee777f405
vm/ir: for loop is now correctly skipped if loopvar>endvar
...
this is different still in the 6502 codegen, where it wraps around $00!
2022-12-27 18:12:41 +01:00
Irmen de Jong
81bd5c784e
don't remove consecutive assigns to IO space location
2022-12-24 18:01:54 +01:00
Irmen de Jong
b526e132a7
better warning + don't remove non-trivial initializer expression for unused variables
2022-12-24 17:22:30 +01:00
Irmen de Jong
1860f66de5
allow "x not in array" as equivalent to "not x in array"
...
update antlr parsing lib
2022-12-23 17:59:56 +01:00
Irmen de Jong
ded9ada9bc
allow "not xx in array" expression in 6502 codegen
...
fix compiler crash on certain bool to byte casts
2022-12-23 17:07:34 +01:00
Irmen de Jong
d0e6a2eb8b
fix compiler crash on hoisting certain vardecls from inner scopes
2022-12-22 18:49:53 +01:00
Irmen de Jong
4e103a1963
making snow example more interesting
2022-12-22 13:04:26 +01:00
Irmen de Jong
475e927178
version 8.8
2022-12-17 23:00:49 +01:00
Irmen de Jong
ca7932c4f0
no longer do return value optimization with tempvar, this caused invalid code sometimes.
2022-12-14 22:33:16 +01:00
Irmen de Jong
8ab47d3321
fix_autostart_square() now preserves X register correctly
2022-12-14 01:07:44 +01:00
Irmen de Jong
def7e87151
fixed silly if-goto expression code in IR codegen where it used too many branching instructions
2022-12-12 22:47:15 +01:00
Irmen de Jong
27568c2bef
fixed silly code generated by some NOT-expressions (unused temporary)
2022-12-12 21:57:22 +01:00
Irmen de Jong
0694a187d7
unsigned>0 now optimized into unsigned!=0
2022-12-12 20:37:57 +01:00
Irmen de Jong
832601b36b
workaround for black square issue at start
2022-12-11 11:48:41 +01:00
Irmen de Jong
578969c34c
optimize redundant rts/bra or rts/jmp generation in when statement
2022-12-10 17:21:15 +01:00
Irmen de Jong
d1d0115aed
removed unused option 'keepIR'
2022-12-09 18:44:44 +01:00
Irmen de Jong
c89e6ebfab
clarify
2022-12-08 22:21:45 +01:00
Irmen de Jong
ca1089b881
optimized codegen for logical expressions with simple right operand (such as c64.READST() & $40 )
2022-12-06 20:23:56 +01:00
Irmen de Jong
a1d04f2aad
added more $03xx vector definitions to C64/C128/CX16 syslib
2022-12-06 20:23:56 +01:00
Irmen de Jong
bf0604133c
fix error in IR for inline asm and BSS vars.
2022-12-04 16:48:44 +01:00
Irmen de Jong
a82b2da16e
Fix some FP related assignment issues in 6502 codegen.
2022-12-04 13:03:38 +01:00
Irmen de Jong
f2273c0acc
fix several FP rom routine addresses on cx16.
2022-12-03 19:56:54 +01:00
Irmen de Jong
17bedac96c
vm: memory is randomized on start instead of 0. P8ir file now has BSS segment. Vm clears BSS vars to 0.
2022-12-03 17:46:06 +01:00
Irmen de Jong
4831fad27a
x16 emulators are now launched with PULSE_LATENCY_MSEC=10 env setting to mitigate static noise
2022-12-03 16:19:26 +01:00
Irmen de Jong
5e896cf582
preparing to add Golden RAM
2022-12-03 00:21:31 +01:00
Irmen de Jong
add3491c57
fix possible vardecl issue for prefixed params
2022-11-30 22:56:54 +01:00
Irmen de Jong
f470576822
it's now possible to use symbols that are the same name as 6502 instructions
...
because these are now prefixed internally before generating assembly.
2022-11-30 18:39:56 +01:00
Irmen de Jong
10760a53a8
optimize cmp word equal/notequal
2022-11-29 20:14:35 +01:00
Irmen de Jong
eee805183c
don't overwrite temp vars in complex comparison expressions. Fixes #89
2022-11-29 04:13:25 +01:00
Irmen de Jong
b8fb391022
- ir codegen now allows subroutine having the same name as its block
...
this is not possible for the 6502 codegen due to 64tass scoping limitation
2022-11-28 21:54:33 +01:00
Irmen de Jong
3c698f1584
fileseek for writing not right now
2022-11-27 21:52:18 +01:00
Irmen de Jong
2fad52d684
the adpcm example can now read wav files directly (so no need anymore to extract the binary frame data from them)
2022-11-27 21:37:40 +01:00
Irmen de Jong
ec64a68a71
fixed compiler crash: unsigned = (-(unsigned as word) as uword)
2022-11-27 17:25:47 +01:00
Irmen de Jong
db55562f6a
fixed adpcm playback
2022-11-27 16:36:30 +01:00
Irmen de Jong
d8409a9d2b
fix compiler crash: if uwordvar > label
2022-11-26 14:39:03 +01:00
Irmen de Jong
0d0ce6eec1
adpcm plays pcm
2022-11-24 21:03:50 +01:00
Irmen de Jong
483f313eda
ir: keep correct child node order in blocks
2022-11-24 01:19:48 +01:00
Irmen de Jong
7b6c742178
fixed diskio.f_read() for small read sizes
2022-11-24 00:23:37 +01:00
Irmen de Jong
d4a35ba6ff
got rid of diskio.have_first_byte overhead
2022-11-23 21:53:36 +01:00
Irmen de Jong
68b112837a
fix cx16logo.logo() printing correct newlines
2022-11-23 02:25:20 +01:00
Irmen de Jong
e2f20ebf94
fix crash on empty conditional branch statement (if_cc { } )
2022-11-23 02:14:48 +01:00
Irmen de Jong
f870e4965a
added cx16diskio.f_seek() function to seek to a position in an opened file
...
f_open uses channel 12 now, f_open_w uses 13
2022-11-23 01:48:04 +01:00
Irmen de Jong
7ebcb219d6
void func() now gives warning if func doesn't return a value
2022-11-22 22:54:40 +01:00
Irmen de Jong
c21913a66b
ir: keep order of children in block
2022-11-22 02:04:24 +01:00
Irmen de Jong
77e956a29f
API change: diskio.list_files doesn't have an internal buffer anymore, you now have to supply a buffer + size yourself. Renamed to list_filenames
2022-11-20 23:27:22 +01:00
Irmen de Jong
08275c406a
added chdir/mkdir/rmdir/relabel to cx16diskio
2022-11-20 22:59:44 +01:00
Irmen de Jong
2931e1b87b
diskio file lister routines now also put file type (prg, seq, dir) in new diskio.list_filetype variable
2022-11-20 20:22:09 +01:00
Irmen de Jong
153b422496
cx16: retain display mode (composite etc)
2022-11-20 19:19:01 +01:00
Irmen de Jong
0f6a6d6fea
attempt to make gfx2 screen mode 0 cleanup more robust on real hardware
2022-11-18 22:53:28 +01:00
Irmen de Jong
91fdb3e2d4
ir: store labels in blocks, but still useless
2022-11-17 00:37:45 +01:00
Irmen de Jong
d8e87bd881
make uword xx = 1<<shift into a word shifting
2022-11-16 01:39:34 +01:00
Irmen de Jong
922033c1b2
main block element order now remains the same as in source
2022-11-16 00:32:00 +01:00
Irmen de Jong
df1793efbf
fixed: word << 12 is suddenly an uword (with optimizer on)
2022-11-15 03:00:41 +01:00
Irmen de Jong
836a2700f2
func(x>>1) no longer uses slow stack eval
2022-11-15 02:49:40 +01:00
Irmen de Jong
8f3aaf77a1
fix optimizer hanging on uword xx :: xx >>= 8 / xx=msb(xx)
2022-11-15 01:40:13 +01:00
Irmen de Jong
00c059e5b1
adding cx16/adpcm example
2022-11-15 01:17:28 +01:00
Irmen de Jong
f4f355c74a
added cx16/diskspeed example
2022-11-14 17:55:55 +01:00
Irmen de Jong
b465fc5aaf
fix bug in word array containment check (prog8_lib.containment_wordarray) that could hang the loop
2022-11-12 23:19:01 +01:00
Irmen de Jong
2d78eaa48d
fix gfx2 text color, added cx16 snow example
2022-11-12 22:08:07 +01:00
Irmen de Jong
d08451bccc
ir: Block can now contain inline binary
2022-11-12 20:17:23 +01:00
Irmen de Jong
d8e785aed0
ir: fix too greedy chunk removal
2022-11-12 19:56:54 +01:00
Irmen de Jong
267b6f49b5
IRFileReader parses the p8ir file with xml parser
2022-11-12 16:51:20 +01:00
Irmen de Jong
e6688f4b9d
clearer error for VM limitation cannot load label address as value
2022-11-12 13:45:02 +01:00
Irmen de Jong
9d7b9771c2
p8ir file format is now valid XML
2022-11-11 23:35:52 +01:00
Irmen de Jong
136a9a39de
kotlin 1.7.21
2022-11-10 22:52:07 +01:00
Irmen de Jong
3dcf628fdb
fixed subroutine name shadow check
2022-11-10 22:51:37 +01:00
Irmen de Jong
e614e9787a
ir: write values as hex into p8ir file
2022-11-08 21:59:05 +01:00
Irmen de Jong
e426fc0922
version 8.7
2022-11-06 22:58:39 +01:00
Irmen de Jong
5d4bfffc7e
float.rndseedf() now takes float seed value and is consistent for all CBM compilation targets
2022-11-06 22:53:57 +01:00
Irmen de Jong
207cdaf7a4
fix kefrenbars example (use gfx2 instead of kernal routines)
2022-11-06 17:33:30 +01:00
Irmen de Jong
7315b581ce
added gfx2.pget(x,y) to get the pixel color value
2022-11-06 13:40:55 +01:00
Irmen de Jong
38efaae7b2
ir/vm: syscall params in high base register to avoid push/pop
2022-11-06 12:52:09 +01:00
Irmen de Jong
469e042216
vm: replaced prog8_lib.string_compare and others with syscalls
2022-11-04 23:12:13 +01:00
Irmen de Jong
0f1a4b9d8f
fixed certain type check error when passing boolean value to ubyte function parameter
...
fixed virtual machine string comparison syscall
2022-11-03 23:06:03 +01:00
Irmen de Jong
7303c00296
vm: prog8lib.wordarray_contains() fixed
2022-11-03 22:48:47 +01:00
Irmen de Jong
fc55b34d84
ir: fix asmsub multi-value return codegen
2022-11-03 22:29:41 +01:00
Irmen de Jong
6f67fc0e02
ir: get rid of '_' symbol prefix
2022-11-03 21:54:53 +01:00
Irmen de Jong
562d722ad5
codegen: added missing codegen for float array inplace modification
2022-11-03 20:08:46 +01:00
Irmen de Jong
144c1ba3a6
ir: fix float instruction value in formatspec
2022-11-03 19:08:38 +01:00
Irmen de Jong
06b032af91
refactor
2022-11-03 00:20:31 +01:00
Irmen de Jong
3603140114
ir: fix unused code remover
2022-11-02 23:54:52 +01:00
Irmen de Jong
e094785cbd
ir: fix unused code remover
2022-11-02 23:16:51 +01:00
Irmen de Jong
e7408224ac
ir: remove position tracking from codechunk for now
2022-11-02 22:12:42 +01:00
Irmen de Jong
e67c05c274
ir: fix asmsub contents not appearing in IR file
2022-11-02 20:50:51 +01:00
Irmen de Jong
b22804efaf
ir: fix inlineasm linking
2022-10-31 23:59:33 +01:00
Irmen de Jong
890f55f91a
fixup compiler internals diagram
2022-10-31 00:39:43 +01:00
Irmen de Jong
cc5fc0b892
Merge branch 'master' into labeledchunks
...
# Conflicts:
# examples/test.p8
2022-10-30 23:46:44 +01:00
Irmen de Jong
5efe2b027a
ir: fix chunk linkage in optimizer
2022-10-30 23:42:41 +01:00
Irmen de Jong
5b6569d0f9
ir: fix overwriting chunk label
2022-10-30 19:03:02 +01:00
Irmen de Jong
0eda7ac498
vm: don't crash on empty code chunks
2022-10-30 17:05:08 +01:00
Irmen de Jong
a5ef353484
ir: fix memory mapped var as for loop counter
2022-10-30 14:54:47 +01:00
Irmen de Jong
67a36d8d31
more robust 'return' statement checks in subroutines
2022-10-30 14:41:28 +01:00
Irmen de Jong
7cc3cc3990
ir: fix non-code chunk linkage
2022-10-30 12:55:06 +01:00
Irmen de Jong
dc0edc4c2b
break also in for
2022-10-29 23:34:59 +02:00
Irmen de Jong
71d2f091e5
Merge pull request #88 from markjreed/fix-mouse_config2
...
fix: don't ignore shape argument to cx16.mouse_config2
2022-10-29 23:22:14 +02:00
Mark J. Reed
c2f062a391
fix: don't ignore shape argument to cx16.mouse_config2
2022-10-29 17:10:06 -04:00
Irmen de Jong
224f490455
Merge branch 'master' into labeledchunks
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/AssignmentGen.kt
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# examples/test.p8
2022-10-29 18:26:09 +02:00
Irmen de Jong
5b35232ab4
fix "fpReg1 out of bounds" crash for vm target for in-place float array assignment. #85
2022-10-29 17:04:39 +02:00
Irmen de Jong
6d6db70e42
remove type widening for bit shifts, to be consistent with other arithmetic operations. Fixes #83
2022-10-29 16:29:41 +02:00
Irmen de Jong
6830e15b4e
print warning when bit shifts are too large and result in 0. #83
2022-10-29 15:23:39 +02:00
Irmen de Jong
3f07cad35d
remove missing feature from docs
2022-10-29 14:31:40 +02:00
Irmen de Jong
e951340033
BASIC, VICE, C64, zeropage spelling
2022-10-29 14:17:40 +02:00
Irmen de Jong
db8912a735
Kernal spelling
2022-10-29 14:10:11 +02:00
Irmen de Jong
0e297731a3
PETSCII spelling
2022-10-29 14:07:04 +02:00
Irmen de Jong
f20c4f98ac
Merge pull request #86 from Frosty-J/docs
...
Fix typos in documentation
2022-10-29 12:57:55 +02:00
Irmen de Jong
05e60cc7c0
fix array type typo
2022-10-29 12:57:33 +02:00
Irmen de Jong
55b4469767
Merge pull request #87 from Frosty-J/basicsafe
...
`%zeropage basicsafe` in Hello World
2022-10-29 12:31:28 +02:00
Frosty-J
f15516e478
Bracket space
2022-10-29 00:25:54 +01:00
Frosty-J
17ceadbadf
%zeropage basicsafe in Hello World
2022-10-28 22:49:23 +01:00
Frosty-J
8c25b2b316
CommanderX16 -> Commander X16
2022-10-28 22:47:14 +01:00
Frosty-J
8b1ae404a3
Commodore-64 -> Commodore 64
2022-10-28 22:45:09 +01:00
Frosty-J
13534cd4a9
lowlevel -> low-level
2022-10-28 22:40:36 +01:00
Frosty-J
abfb345503
ofcourse -> of course
2022-10-28 22:39:54 +01:00
Frosty-J
42ae935496
Various typo fixes
2022-10-28 22:39:15 +01:00
Irmen de Jong
434515d957
fix: array[x] = ~array[x] no longer crashes the codegen
2022-10-27 23:56:38 +02:00
Irmen de Jong
094f7803b7
fix: array[x] = -array[x] no longer crashes the codegen
2022-10-27 23:20:40 +02:00
Irmen de Jong
b0c7bad391
fix: array[x] = -value no longer crashes the codegen
2022-10-27 21:58:37 +02:00
Irmen de Jong
e9a4a905ef
preparing to fix the array indexing compiler issue
2022-10-26 23:53:17 +02:00
Irmen de Jong
7b6cd0cfbe
cx16.macptr() now has additional argument in the carry flag, to reflect recent X16 kernal api change.
...
Also now allow bool type for status flag args and returnvalues.
2022-10-26 20:41:10 +02:00
Irmen de Jong
b718b12083
ir/vm fix chunk linkage
2022-10-26 00:12:56 +02:00
Irmen de Jong
cfa7258ff4
various
2022-10-25 23:18:42 +02:00
Irmen de Jong
b70e0a0870
mention syntax highlighting files in the docs
2022-10-25 21:24:38 +02:00
Irmen de Jong
da8eb464b8
add cx16diskio.vload_raw() to load headerless files into vram
2022-10-25 21:12:11 +02:00
Irmen de Jong
8f9d1cfa30
fix regression: indexing pointer variable with word (>255) didn't work anymore since release 8.2 or so
2022-10-24 23:43:47 +02:00
Irmen de Jong
585009ac5c
ir: fix syscall numbers and more
2022-10-24 01:57:37 +02:00
Irmen de Jong
30ee65fd14
ir: ensure that block and sub labels are also on the first chunk in said block/sub
2022-10-23 18:54:08 +02:00
Irmen de Jong
76428b16f0
Merge branch 'master' into labeledchunks
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt
# docs/source/todo.rst
# examples/test.p8
# virtualmachine/src/prog8/vm/VirtualMachine.kt
2022-10-23 12:19:02 +02:00
Irmen de Jong
0d7b14e2d8
fix crash when assigning certain memory read to word variable. Fixes #82
2022-10-23 11:57:23 +02:00
Irmen de Jong
a9d19d02b3
helpful error for programs still using the old builtin rnd() and rndw()
2022-10-22 22:36:44 +02:00
Irmen de Jong
adcbe55307
replaced integer RNG with smaller and faster routine.
2022-10-22 22:01:57 +02:00
Irmen de Jong
aa99a7df64
seed info
2022-10-22 17:54:24 +02:00
Irmen de Jong
00afa1ce52
ir: replace RND opcode by syscalls
2022-10-22 17:20:46 +02:00
Irmen de Jong
e94bf4c63c
replace rnd()/rndw() builtin functions by regular routines in math module
2022-10-22 17:02:43 +02:00
Irmen de Jong
ec5adffdc2
rnd()/rndf() routines can now be seeded with new rndseed()/rndseedf() routines. fixes #80
2022-10-22 13:34:22 +02:00
Irmen de Jong
733c17ad3a
improve docs on if syntax. fixes #81
2022-10-19 23:53:15 +02:00
Irmen de Jong
53b0b562e6
fix check for routine that returns multiple values but in status bit. Fixes #79
2022-10-19 23:23:49 +02:00
Irmen de Jong
fabae6e970
ir: fix handling of labeled chunks
2022-10-16 23:53:17 +02:00
Irmen de Jong
a9f9c40d8a
ir: fix handling of labeled chunks
2022-10-13 00:56:44 +02:00
Irmen de Jong
6fc89607d3
ir: moving to labeled chunks, no more IRLabel nodes
2022-10-07 00:34:56 +02:00
Irmen de Jong
2340760f53
rename
2022-10-04 22:54:14 +02:00
Irmen de Jong
39d6d2857e
ir: change inline binary a bit
2022-10-04 00:57:08 +02:00
Irmen de Jong
7b722a0001
ir: fix count register uses
2022-10-04 00:25:55 +02:00
Irmen de Jong
e7682119e0
ir: count register uses
2022-10-02 15:56:06 +02:00
Irmen de Jong
af6be44676
ir: adding register usage inspections
...
fix compiler problems with untrimmed inlined asm, and when only a single return statement is present in a subroutine
2022-09-30 20:25:00 +02:00
Irmen de Jong
5a8f97a0b6
ir: adding last missing features to be able to encode all of Prog8
2022-09-30 16:01:00 +02:00
Irmen de Jong
0d4dd385b8
added '%ir' to write inline IR code, '%asm' is now only for real 6502 assembly.
...
(%ir is probably only used in the library modules for the virtual machine target)
2022-09-30 15:12:26 +02:00
Irmen de Jong
94f0f3e966
ir: join code chunks
2022-09-30 02:47:33 +02:00
Irmen de Jong
43e31765e5
kotlin 1.7.20
2022-09-29 18:41:20 +02:00
Irmen de Jong
7c1bdfe713
ir: uninitialized vars remain empty, bss section classifier (unused for now as there are no segements yet)
2022-09-28 16:56:50 +02:00
Irmen de Jong
9f09784b55
version 8.6.2
2022-09-27 22:45:48 +02:00
Irmen de Jong
e7a3a89bfb
fix windows issue
2022-09-27 22:41:48 +02:00
Irmen de Jong
7ea7e63f44
use require() more often
2022-09-27 18:27:55 +02:00
Irmen de Jong
1d2ce2cbeb
consolidate IR line parse function
2022-09-27 18:02:57 +02:00
Irmen de Jong
06cf2e0bd7
vm: fix memory slabs (bsieve example)
2022-09-27 16:32:44 +02:00
Irmen de Jong
9d219ae4b9
refactor
2022-09-27 03:32:39 +02:00
Irmen de Jong
71f5a6c50e
remove p8virt from compiler diagram
2022-09-27 02:52:29 +02:00
Irmen de Jong
90b2be2bf4
vm: new memory initialization of array vars
2022-09-27 02:43:50 +02:00
Irmen de Jong
db1aa8fcbd
vm: new translation of IRProgram into vm program list
2022-09-27 01:50:00 +02:00
Irmen de Jong
11c000f764
moved codeGenVirtual module into virtualmachine module
2022-09-26 20:00:40 +02:00
Irmen de Jong
4d6dcbd173
ir: consolidate IRCodeInstruction and Instruction
2022-09-26 19:46:44 +02:00
Irmen de Jong
0da117efd2
vm: get rid of .p8virt file and cruft
2022-09-26 19:28:40 +02:00
Irmen de Jong
533c368e32
make IRFileReader's file source more general
2022-09-26 14:47:28 +02:00
Irmen de Jong
8883513b0e
attempt to fix readthedocs.io build
2022-09-25 22:19:32 +02:00
Irmen de Jong
dcc9a71455
version 8.6.1
2022-09-25 21:54:35 +02:00
Irmen de Jong
1a56743bb1
fix IR repeat loop codegen when amount is 0
2022-09-25 20:48:17 +02:00
Irmen de Jong
387a4b7c35
added string.lowerchar() and string.upperchar()
2022-09-25 20:20:38 +02:00
Irmen de Jong
1d65d63bd9
ir: making sure all names are scoped properly. textelite now runs in vm
2022-09-25 18:02:35 +02:00
Irmen de Jong
dda19c29fe
vm: fix symbols to be case sensitive properly in p8virt assembler
2022-09-25 15:51:50 +02:00
Irmen de Jong
ca41669f4f
vm: fix scoped name in address-of inside array
2022-09-24 18:26:35 +02:00
Irmen de Jong
0e1886e6bd
vm: fix nested label prefixing
2022-09-24 16:00:25 +02:00
Irmen de Jong
c26e116f0e
vm: fix crashes when array contains pointers/strings
2022-09-24 14:42:07 +02:00
Irmen de Jong
5c9c7f2c5e
adding more complex vm examples
2022-09-23 14:56:06 +02:00
Irmen de Jong
ca2fb6cef3
IR no longer depends on VM syscalls but has its own syscall list for the few builtin functions that still require it
2022-09-23 14:27:51 +02:00
Irmen de Jong
46dac909ef
vm/math.p8: complete the sin and cos routines
2022-09-22 15:49:19 +02:00
Irmen de Jong
b1e4347e10
fix compiler crash sometimes when casting byte to word
2022-09-22 13:00:47 +02:00
Irmen de Jong
97aa91c75e
removed 16 bits sin/cos routines from math library (sin16, sin16r etc)
2022-09-22 12:55:00 +02:00
Irmen de Jong
4f8fb32136
some docs about compiler internal architecture
2022-09-21 17:34:52 +02:00
Irmen de Jong
e0fbce0087
few more unittests for IR
2022-09-21 02:59:36 +02:00
Irmen de Jong
fb22f78fb3
added '-keepIR' option to save the IR file if it's generated.
2022-09-20 12:30:22 +02:00
Irmen de Jong
d6393cdbe5
'-vm' option now also reads .p8ir files
2022-09-20 12:14:33 +02:00
Irmen de Jong
5167fdb3f0
docs
2022-09-20 04:10:49 +02:00
Irmen de Jong
ab00822764
move IR optimizer to IR Codegen module
2022-09-19 19:41:43 +02:00
Irmen de Jong
b4352ad38b
refactor IR codegen into separate module
2022-09-19 19:24:24 +02:00
Irmen de Jong
d07d00fa41
Join codeAst and codeCore modules
2022-09-19 17:28:18 +02:00
Irmen de Jong
11d87e4725
VM: support cpu registers
2022-09-19 17:13:46 +02:00
Irmen de Jong
627ed51a1b
IR: mem mapped vars and memory slabs
2022-09-19 15:20:40 +02:00
Irmen de Jong
c8f3bfa726
vm assembler now understands simple indexed addresses (symbol+number)
2022-09-18 02:17:42 +02:00
Irmen de Jong
3091e3a1c8
IR support for instructions operating on cpu regs
2022-09-18 01:51:04 +02:00
Irmen de Jong
2f3e7d1c27
IR support for storing incbins and romsubs
2022-09-17 16:07:41 +02:00
Irmen de Jong
0e831d4b92
fix superfluous usage of addressOf()
2022-09-16 00:31:04 +02:00
Irmen de Jong
7294ec9a3c
working on address-of
2022-09-15 22:44:33 +02:00
Irmen de Jong
e34bab9585
change syntax of address-of in p8virt code to &X, instead of {X}
2022-09-13 23:28:52 +02:00
Irmen de Jong
7dd14955c1
added remaining signature stuff to IRAsmSubroutine
2022-09-13 23:06:05 +02:00
Irmen de Jong
6428ced157
added subroutine params to IRSubroutine
2022-09-13 23:06:05 +02:00
Irmen de Jong
30a42ec1bd
IR tweak
2022-09-13 23:06:05 +02:00
Irmen de Jong
aacea3e9db
incbin in IR
2022-09-13 23:06:05 +02:00
Irmen de Jong
6886b61186
also output inline asm chunks
2022-09-13 23:06:05 +02:00
Irmen de Jong
0744c9fa29
properly flatten label names for the IR code
2022-09-13 23:06:05 +02:00
Irmen de Jong
502a665ffc
getting address-of into IR without allocations
2022-09-13 23:06:05 +02:00
Irmen de Jong
3c315703c0
making IR file reader
2022-09-13 23:06:05 +02:00
Irmen de Jong
12ed07a607
comments
2022-09-13 23:06:05 +02:00
Irmen de Jong
101b33c381
split intermediate representation into separate module
2022-09-13 23:06:05 +02:00
Irmen de Jong
97f4316653
rename IR classes
2022-09-13 23:06:05 +02:00
Irmen de Jong
b0704e86f0
block structure
2022-09-13 23:06:05 +02:00
Irmen de Jong
a182b13e5a
fixup for memoryslabs
2022-09-13 23:06:05 +02:00
Irmen de Jong
80b630a1e4
added memoryslabs to symboltable
2022-09-13 23:06:05 +02:00
Irmen de Jong
475efbe007
steps to make actual IR based on VM code. For now, as experimental codegen.
2022-09-13 23:06:05 +02:00
Irmen de Jong
3ab5e5ac48
added cx16.kbdbuf_clear()
2022-09-01 18:40:17 +02:00
Irmen de Jong
c6c5ff2089
added joystick controls to cx16 tehtriz
2022-08-23 18:11:35 +02:00
Irmen de Jong
176ec8ac7d
fix 6502 codegen bug: complex comparison expression is evaluated wrong.
...
Fixed by reintroducing splitting of comparison expression in if statements by using a temporary variable and/or register to precompute left/right values.
2022-08-23 00:05:57 +02:00
Irmen de Jong
dcdd4b3255
found bug in comparison expr codegen
2022-08-22 23:16:56 +02:00
Irmen de Jong
fc0a0105b3
move memoryslab administration from allocator to symboltable
2022-08-21 19:48:56 +02:00
Irmen de Jong
f3960d21a8
fix xmlwriter
2022-08-21 19:12:01 +02:00
Irmen de Jong
a44d853c1b
added memoryslabs to symboltable
2022-08-21 19:05:01 +02:00
Irmen de Jong
6b41734d6a
check memory() calls before entering codegen
2022-08-21 19:02:34 +02:00
Irmen de Jong
c33dc0f3be
version
2022-08-21 14:37:10 +02:00
Irmen de Jong
bb5ffb24a8
add IDEA antlr parser build info to documentation
2022-08-21 13:32:31 +02:00
Irmen de Jong
a878c9a61d
add some documentation to the psg module
2022-08-19 22:17:23 +02:00
Irmen de Jong
6454bf8ec4
added mouse cursor to amiga example
...
slightly sped up text rendering in gfx2 highres mode
2022-08-16 04:25:59 +02:00
Irmen de Jong
40aa733ea7
clearer name
2022-08-15 20:55:35 +02:00
Irmen de Jong
f37a822725
move
2022-08-14 13:17:03 +02:00
Irmen de Jong
f249ccd414
added asm optimization for same pointer index
2022-08-14 12:50:46 +02:00
Irmen de Jong
7ef4ddf0f3
fixed operator precedence: bitwise must come before comparisons
2022-08-14 12:34:00 +02:00
Irmen de Jong
d8e18df3a1
added c64 starfield example
2022-08-14 12:02:23 +02:00
Irmen de Jong
78d3d9d27d
vm: get rid of jumpi traces, fix IR value issue with STOREIX
2022-08-13 20:00:13 +02:00
Irmen de Jong
0aa0ec5abd
fix c64 zeropage locations of cx16 virtual registers
2022-08-13 00:14:19 +02:00
Irmen de Jong
b6eef3612f
added some ported bench8 test programs
2022-08-12 22:08:27 +02:00
Irmen de Jong
666d62dd7a
fix cx16.r0 base address to be $04 on the C-64, and fix zeropage duplicate free addresses
2022-08-12 17:49:31 +02:00
Irmen de Jong
44ee4b989f
optimize code for logical expressions more if right operand is simple
2022-08-12 00:49:40 +02:00
Irmen de Jong
18790d867c
optimize conditional expression WORD & $ff00 to just msb(WORD)&$ff
2022-08-12 00:21:44 +02:00
Irmen de Jong
d6b8936376
fix mkword(@(ptr), 0) wrong asm
2022-08-11 23:01:19 +02:00
Irmen de Jong
4d840c7db8
optimized mkword(0, X)
2022-08-11 22:51:09 +02:00
Irmen de Jong
4d2b21816d
optimized uword <<8 and >>8
2022-08-11 22:25:15 +02:00
Irmen de Jong
2d34fdd28f
in a block marked option force_output, make all subroutines in asm use .block rather than .proc
...
this fixes some obscure assembly issues where subroutines were omitted from the output program by 64tass
2022-08-10 21:28:40 +02:00
Irmen de Jong
68abda1219
fix a few small compiler errors (removing functioncall, removing block, assigning virtual register return value)
2022-08-09 23:38:29 +02:00
Irmen de Jong
f778f08f76
tweak
2022-08-08 21:09:49 +02:00
Irmen de Jong
ac1bd2fb7b
virtual: properly output "memmapped" variables too
...
still as regular variables though
2022-08-08 20:42:17 +02:00
Irmen de Jong
4b7b1379d9
also binexpr split on and,or,xor if appropriate
2022-08-08 00:09:18 +02:00
Irmen de Jong
e560e2ab3f
vm instructions now contain info on input/output registers
2022-08-07 18:49:16 +02:00
Irmen de Jong
1e441c2ddf
tweak vm codegen
2022-08-07 13:45:03 +02:00
Irmen de Jong
93ce74eeb1
removed problematic expression "simplifications" (that introduced arbitrary r9 temp register usage)
2022-08-07 12:26:11 +02:00
Irmen de Jong
f718f4251b
working on better encoding of romsub in new ast/vmtarget
2022-08-07 12:21:10 +02:00
Irmen de Jong
4644c9b621
got rid of GoSub ast node and codegen complexity related to that.
...
sometimes programs get smaller, sometimes bigger.
2022-08-07 03:24:20 +02:00
Irmen de Jong
197081f10d
keyboardhandler
2022-08-04 23:04:16 +02:00
Irmen de Jong
00b717cde8
tweak
2022-08-04 18:35:10 +02:00
Irmen de Jong
34aa917ca4
allow bool return type (and arguments) for asmsub / romsub
2022-08-02 23:07:42 +02:00
Irmen de Jong
a38ddcb364
diskio use other filename buffer to avoid always having large buffer
2022-08-02 00:58:32 +02:00
Irmen de Jong
5b9576df4e
added diskio.send_command()
...
diskio now reuses some buffer internally for file names to save some memory
2022-08-01 22:59:27 +02:00
Irmen de Jong
310219e5d7
make sure memory slabs block is at the bottom of the asm file to not allocate needless space in the resulting prg
2022-07-31 15:37:36 +02:00
Irmen de Jong
a0deb463c9
optimized codegen for some equality comparison expressions and some logical expressions
2022-07-31 15:25:54 +02:00
Irmen de Jong
90ddec2ad8
avoid multiple change events in watch mode
...
added bsieve example
2022-07-31 11:58:27 +02:00
Irmen de Jong
f6b03d5a78
added diskio.diskname(), improved error checking in diskio.directory()
2022-07-30 13:35:42 +02:00
Irmen de Jong
f531daa872
on C64, the cx16.r0...cx16.r15 virtual regs are now in zeropage as well when using kernalsafe or full
2022-07-28 19:13:33 +02:00
Irmen de Jong
046dceb5c2
added optimized case for signed division by 2
2022-07-24 13:59:35 +02:00
Irmen de Jong
dcc1f00048
fix rounding errors in signed divide by power-of-two
...
The optimized bit-shifting division is removed (for now)
2022-07-24 12:34:55 +02:00
Irmen de Jong
05f935b598
simplify & fix recursion detector
2022-07-22 22:22:43 +02:00
Irmen de Jong
f2d27403c5
add string.endswith() to efficiently test for a suffix without copying
...
add string.startswith() to efficiently test for string prefix without copying
2022-07-21 00:38:30 +02:00
Irmen de Jong
473efbe67a
tweaks
2022-07-17 22:09:56 +02:00
Irmen de Jong
aeabf0f324
nicer colors
2022-07-17 21:37:15 +02:00
Irmen de Jong
80ab552ad8
fix wrong code for signed word >= 0
2022-07-17 19:02:56 +02:00
Irmen de Jong
7d4695c5b2
cx16: graphics module y resolution corrected from 200 to 240. added 'cx16/circles' example.
2022-07-17 18:59:52 +02:00
Irmen de Jong
5189eaca36
move the vm unit tests to codeGenVirtual module and remove virtualmachine dependency in the compiler module
2022-07-17 12:56:22 +02:00
Irmen de Jong
cfb31377fc
c64 zeropage: added a few more locations to Kernalsafe free list that should be safe
...
this makes $02-$21 inclusive, available for use later (x16 virtual registers are placed here on x16...)
2022-07-17 12:12:47 +02:00
Irmen de Jong
a07c52e112
conv.any2uword / conf.hex2uword can now deal with iso lower and upper case letters as well.
2022-07-17 02:39:40 +02:00
Irmen de Jong
8e1071aa89
fix compiler crashes: txt.chrout("a"), uword[] a = ["ls", subroutine] without & before subroutine.
2022-07-15 23:17:03 +02:00
Irmen de Jong
7cb9a6ba60
diskio.status() more robust (stops at newline char instead of overwriting buffer), diskio.f_open better detects error status
2022-07-15 22:21:34 +02:00
Irmen de Jong
350dc731f1
cx16: sys.reset_system() now resets vera fully as well (such as PSG sound), kernal didn't seem to do that
2022-07-14 23:44:53 +02:00
Irmen de Jong
f690f58bd4
callfar() now accepts a variable as address, so it can be used to indirect JSR to a subroutine whose address is not fixed. ('goto' already could indirect JMP to a variable address.)
2022-07-14 19:29:59 +02:00
Irmen de Jong
4bc65e9ef7
fix stack crash in cx16.push_vera_context()
2022-07-14 16:33:09 +02:00
Irmen de Jong
2d600da8b6
fix codegen crash on certain nested typecast
2022-07-13 22:24:31 +02:00
Irmen de Jong
35af53828a
fix endless loop in optimizer, fix cx16 register clobbering in psg interrupt handler, fix crash on certain arrays, fix undefined symbol when it's in another imported module
2022-07-13 18:42:06 +02:00
Irmen de Jong
10ddd5b127
fixed missing non-boolean operand cast in logical expressions
2022-07-12 22:28:06 +02:00
Irmen de Jong
f46e131f18
todo
2022-07-12 19:41:51 +02:00
Irmen de Jong
feb5c8be95
vm: some more peephole optimizations
2022-07-12 19:04:19 +02:00
Irmen de Jong
edf12bec71
improve bool params typecasting, fix compiler crash on abs(floatvar)
2022-07-12 17:52:37 +02:00
Irmen de Jong
ff1fc28287
added immediate value vm logical instructions because these are so common
2022-07-12 16:12:32 +02:00
Irmen de Jong
314398ba4c
added immediate value vm arithmetic instructions because these are so common
2022-07-12 15:21:26 +02:00
Irmen de Jong
840331347b
added a few more vm optimizations and unit tests
2022-07-12 12:42:37 +02:00
Irmen de Jong
6181b12ab8
added -esa option to override the evalstack location, and shift cx16.r0-r15 accordingly
2022-07-11 19:29:04 +02:00
Irmen de Jong
68da661edc
optimize comparison to true/1 into comparison to zero, optimize while/until conditions
2022-07-11 16:42:52 +02:00
Irmen de Jong
88cbb6913d
tweak bool type handling
2022-07-11 14:55:50 +02:00
Irmen de Jong
7a26646e1b
tweak bool type handling
2022-07-11 02:08:12 +02:00
Irmen de Jong
92eb3b0bf6
bool logical testcase
2022-07-09 22:29:38 +02:00
Irmen de Jong
fb63434eee
tweak maze example
2022-07-09 22:13:30 +02:00
Irmen de Jong
97f90d9684
Merge branch 'master' into bool_type
2022-07-09 22:09:49 +02:00
Irmen de Jong
f91786367f
added maze example
2022-07-09 22:00:46 +02:00
Irmen de Jong
6a57337a68
improved bool type checking
2022-07-08 22:59:35 +02:00
Irmen de Jong
211e2bb37a
improved bool type checking
2022-07-08 22:29:13 +02:00
Irmen de Jong
d2d08bf143
fix compiler error about bool vs ubyte
2022-07-08 22:03:05 +02:00
Irmen de Jong
8acb37b6c2
use bool type in examples and libraries
2022-07-08 21:50:32 +02:00
Irmen de Jong
81b3d2db4f
fix compiler crash
2022-07-08 21:50:06 +02:00
Irmen de Jong
9633c0b07a
added bool to syntax files
2022-07-07 23:30:41 +02:00
Irmen de Jong
1dfa8ee7d8
add ARRAY_BOOL array type
2022-07-07 23:07:30 +02:00
Irmen de Jong
1163543a98
fix bool param lookup problem
2022-07-07 22:23:56 +02:00
Irmen de Jong
bdb7de34be
added several compiler checks against weird boolean type use in expressions
2022-07-07 22:23:56 +02:00
Irmen de Jong
9500fc11ac
document new bool datatype and removal of boolean() conversion function
2022-07-07 22:23:56 +02:00
Irmen de Jong
65daf29acd
fix compiler crash related to word types in certain comparison expressions
2022-07-07 22:23:56 +02:00
Irmen de Jong
298b25cf7d
fix compiler crash on certain typecasting assignment
2022-07-07 22:23:56 +02:00
Irmen de Jong
41f4e22a17
introduce BOOL type
2022-07-07 22:23:56 +02:00
Irmen de Jong
288c57c144
ack to allow user to override the following two with command line redefinition:
2022-07-07 22:16:08 +02:00
Irmen de Jong
7ff8923569
document -D command
2022-07-06 23:45:41 +02:00
Irmen de Jong
b41779bd02
added -D command line option to define symbols in the assembly file
2022-07-06 23:40:36 +02:00
Irmen de Jong
beea6bc794
about bool
2022-07-04 20:26:03 +02:00
Irmen de Jong
fee58e98c5
tiny optimization
2022-07-03 13:05:30 +02:00
Irmen de Jong
c51c1da618
psg micro optimizations
2022-07-03 11:55:13 +02:00
Irmen de Jong
ea2812f50f
add max volume to psg envelope
2022-07-03 11:26:56 +02:00
Irmen de Jong
3ec05709d5
convert the sounds in cx16 tehtriz to use the psg module instead
2022-07-03 01:40:29 +02:00
Irmen de Jong
4bdac7404a
added sustain to psg envelope
2022-07-03 00:55:25 +02:00
Irmen de Jong
cc41218d37
added nicer vm example
2022-07-03 00:41:04 +02:00
Irmen de Jong
4b336b1853
if passing a subroutine or label name as an uword argument, without &, add the addressof automatically
2022-07-02 23:55:32 +02:00
Irmen de Jong
e1c77ce236
fix pop() name scoping
2022-07-02 23:27:08 +02:00
Irmen de Jong
064d412ec8
added cx16.push_vera_context() and cx16.pop_vera_context() for use in irq handlers
2022-07-02 23:13:00 +02:00
Irmen de Jong
7fff4f249d
optimize msb(cx16.r0) -> cx16.r0H, lsb(cx16.r0) -> cx16.r0L
2022-07-02 21:38:22 +02:00
Irmen de Jong
7a3745f642
psg tweaks
2022-07-02 20:33:40 +02:00
Irmen de Jong
f8658f6afa
precalc vera freq to not use floating point math anymore
2022-07-02 19:40:18 +02:00
Irmen de Jong
223b725a10
psg abstraction and attack/release envelope
2022-07-02 18:47:12 +02:00
Irmen de Jong
25aad8d7be
improve const-evaluation of builtin expressions
2022-07-02 16:29:01 +02:00
Irmen de Jong
b2c9b7635d
revert restriction on certain associative operator reshuffling
...
it caused larger generated code
2022-07-02 13:59:24 +02:00
Irmen de Jong
24d13dd120
fix problematic optimizations to logical expressions
2022-07-02 00:56:24 +02:00
Irmen de Jong
965340ff90
logical and/or/xor/not all replaced by bitwise &,|,^,~ (ast, codegens)
...
this also fixed some invalid outcomes of logical expressions!
2022-07-02 00:38:17 +02:00
Irmen de Jong
8e36fe6bef
temporary workaround for code problem around 'not'
2022-07-01 01:01:15 +02:00
Irmen de Jong
2eb41a8caf
temporary workaround for code problem around 'not'
2022-07-01 00:38:19 +02:00
Irmen de Jong
fb989ae62f
cx16: reset rom/ram/monitor banks at program exit to sane values.
2022-07-01 00:14:38 +02:00
Irmen de Jong
7901ec2a64
"not" no longer in LogicalOperators because it makes assembler generate invalid code somehow
2022-06-30 22:49:27 +02:00
Irmen de Jong
f675dbc726
vm var allocator now also recognises the memory-mapped variables. no longer crashes
2022-06-30 22:09:49 +02:00
Irmen de Jong
2ad4fdbbb9
added cx16 version of bdmusic, needs ADSR though
2022-06-30 21:33:48 +02:00
Irmen de Jong
97cb0cbd08
tweak "not" removal/rewriting
2022-06-30 02:16:30 +02:00
Irmen de Jong
4ca0805de1
bump version
2022-06-29 01:35:14 +02:00
Irmen de Jong
4b358abbb7
"not" operator removed from ast and codegen (it's been replaced with x==0 as equivalent)
2022-06-29 01:13:08 +02:00
Irmen de Jong
dc82a0fc16
better not(x) replacement by x==0
2022-06-28 23:50:23 +02:00
Irmen de Jong
435d6f6f3f
vm: and/or/xor/not are all bitwise operations again
2022-06-28 03:17:51 +02:00
Irmen de Jong
ef92451d1a
fix logical expressions on arbitrary values, for now with boolean() around the operands
2022-06-28 01:18:36 +02:00
Irmen de Jong
06184bdcb1
get rid of failed mccarthy shortcut evaluation
2022-06-27 21:44:52 +02:00
Irmen de Jong
af98d01053
failed attempt at McCarthy shortcut evaluation
2022-06-27 21:40:48 +02:00
Irmen de Jong
bb1cda0916
fix: boolean values of terms in logical expressions are now properly evaluated
2022-06-26 23:55:34 +02:00
Irmen de Jong
a6d0ea347c
bank caching not required for pcm_play()
2022-06-26 22:08:10 +02:00
Irmen de Jong
0fcd57192b
cx16diskio.f_read() now correctly deals with banked ram boundary
2022-06-26 21:42:56 +02:00
Irmen de Jong
a6ffa5738b
update to kotlin 1.7.0
2022-06-26 18:54:29 +02:00
Irmen de Jong
c75bd97537
update kotest
2022-06-26 18:51:03 +02:00
Irmen de Jong
eea09f4de5
fix invalid asm label sometimes generated for multiple loops in same subroutine
2022-06-24 02:26:45 +02:00
Irmen de Jong
5656ec11d3
fix missing abs(byte) routine
2022-06-24 01:51:54 +02:00
Irmen de Jong
eb53e44cb0
zsound stream test
2022-06-24 01:51:33 +02:00
Irmen de Jong
69f3106062
first vm peephole optimizer
2022-06-22 00:21:06 +02:00
Irmen de Jong
8ab99f6129
zsound combo example
2022-06-21 00:38:59 +02:00
Irmen de Jong
53a3c59a91
language for sphinx
2022-06-15 22:38:00 +02:00
Irmen de Jong
df36983049
version 8.2
2022-06-15 22:31:29 +02:00
Irmen de Jong
bda016bb3b
optimized 6502 codegen for logical expressions
2022-06-15 22:17:15 +02:00
Irmen de Jong
cc174b7b85
added boolean() builtin function and use it to get rid of !=0 comparisons
2022-06-14 23:34:45 +02:00
Irmen de Jong
bf9d120081
logical operators now always return a boolean byte result, instead of sometimes word type as well
...
(preparing for codegen simplifications for these)
2022-06-13 01:37:16 +02:00
Irmen de Jong
775c85fc18
don't swap operands that would change function evaluation order + vm: fix label casing error
2022-06-13 00:25:45 +02:00
Irmen de Jong
5a756aaed9
Pipe expression "|>" removed from the language
2022-06-12 18:41:42 +02:00
Irmen de Jong
dca092fd7c
fix pipe expression when start term is constant number
2022-06-12 16:59:28 +02:00
Irmen de Jong
c6e92ecac4
some code cleanup
2022-06-12 16:15:08 +02:00
Irmen de Jong
93008ff605
tweak zsound examples
2022-06-12 14:51:24 +02:00
Irmen de Jong
43c7b935df
fixed zsound pcm player example
2022-06-11 03:31:42 +02:00
Irmen de Jong
8f9a0a244a
trying to add zsound pcm player example as well
2022-06-10 23:35:37 +02:00
Irmen de Jong
fd13bd864e
some notes added to zsound demo player
2022-06-09 23:36:07 +02:00
Irmen de Jong
710f27afa9
bump library versions
2022-06-09 22:44:17 +02:00
Irmen de Jong
f537793b0b
added zsound demo player example (cx16)
2022-06-08 23:57:01 +02:00
Irmen de Jong
f7183e38ee
tweak trivial subroutine inlining
2022-06-08 21:05:03 +02:00
Irmen de Jong
0a65dfdd10
optimized codegen for some more simple expressions with +/-
2022-06-07 22:30:08 +02:00
Irmen de Jong
3075578245
optimized codegen for assigning value or variable to indexed pointer. (6502)
2022-06-06 18:30:19 +02:00
Irmen de Jong
b042b7705e
fix invalid removal of repeated assignments.
2022-06-06 17:27:06 +02:00
Irmen de Jong
d56eb397f9
fix codegen for rol/ror on pointer indexed
2022-06-06 16:07:45 +02:00
Irmen de Jong
3054a1d32d
api change: removed swap() builtin function (too complex in codegen for little used function)
2022-06-06 16:01:11 +02:00
Irmen de Jong
0a3cd652b0
vm: fix codegen for storing to pointer indexed
2022-06-06 14:18:12 +02:00
Irmen de Jong
f70b914779
fix optimized codegen for 2 arg functions, sometimes was passing wrong arg value due to register overwriting
2022-06-06 13:21:45 +02:00
Irmen de Jong
46ca0ac10d
properly optimize X - -1 and X + -1, this also fixes type change of ubyte - 2 + 10
2022-06-05 15:35:29 +02:00
Irmen de Jong
031f647952
allow casting negative numbers to unsigned, result = 2's complement
2022-06-05 14:21:10 +02:00
Irmen de Jong
8f1c86f550
fixed several old test files
2022-06-05 14:20:08 +02:00
Irmen de Jong
926fdecd13
fix problematic path handling on windows in error messages
2022-06-05 11:54:19 +02:00
Irmen de Jong
af2ca7a67e
fix problematic characters that cause path errors on Windows
2022-06-05 11:46:37 +02:00
Irmen de Jong
9e3e2ff81a
fix assembly generation error when pipe character is part of string literal
2022-06-04 22:25:51 +02:00
Irmen de Jong
a9fe6472d9
remove old screencode syntax from docs
2022-06-04 22:07:31 +02:00
Irmen de Jong
a862a81480
added unit test for name shadowing warning
2022-06-04 21:35:48 +02:00
Irmen de Jong
dbb92881a1
fixed X register corruption in some cases of rol() and ror()
2022-06-04 21:10:48 +02:00
Irmen de Jong
10bf7f5d07
fix: again gives proper name redefinition errors in same scope
2022-06-04 20:15:46 +02:00
Irmen de Jong
1e61d84fd1
vm: fix expression codegen for pointer indexing
2022-06-04 19:32:35 +02:00
Irmen de Jong
8618ba1b60
fix 6502 expression codegen for pointer indexing
2022-06-04 18:46:16 +02:00
Irmen de Jong
3c8c44155d
vm: loadix instruction added for indirect addressing via pointer
2022-06-04 18:07:57 +02:00
Irmen de Jong
2002412026
optimized codegen for pointer indexing (read expressions)
2022-06-04 17:20:17 +02:00
Irmen de Jong
7f69517fd4
preparing optimizing pointer indexing
2022-06-04 16:18:27 +02:00
Irmen de Jong
851f8645b5
Merge remote-tracking branch 'origin/master'
2022-06-04 14:23:41 +02:00
Irmen de Jong
c40cfaa388
preparing optimizing pointer indexing
2022-06-04 14:23:02 +02:00
Irmen de Jong
0349d1d57c
diskio: moved cx16 optimized f_read() to cx16diskio instead
...
so unfortunately you have to select the faster version yourself when on cx16
2022-06-04 00:33:27 +02:00
Irmen de Jong
53049c02ee
diskio: moved cx16 optimized f_read() to cx16diskio instead
...
so unfortunately you have to select the faster version yourself when on cx16
2022-06-04 00:25:17 +02:00
Irmen de Jong
73a3a61729
swap() checks for unsupported code gen
2022-06-03 23:41:24 +02:00
Irmen de Jong
5fe6aa2800
fix swap() code for pointervars
2022-06-03 23:13:35 +02:00
Irmen de Jong
c7eafd7c79
cx16: fix macptr() signature and use it in diskio.f_read() for big increase in load speed
2022-06-02 00:37:18 +02:00
Irmen de Jong
10b5fb5d72
fix for total size returnvalue of diskio.f_read_all()
2022-06-01 01:13:19 +02:00
Irmen de Jong
c4eaa944e2
thoughts
2022-05-30 23:37:41 +02:00
Irmen de Jong
a735939d1e
removed confusing GPL software license reference and copyright header from library files. (because of exclusion in output files)
...
Reworded software license and exclusion clause somewhat again in attempt to make it even clearer.
2022-05-30 20:12:20 +02:00
Irmen de Jong
6ed5f04970
version 8.1
2022-05-25 20:00:26 +02:00
Irmen de Jong
b459b09b2f
vm: fix comparison datatype error; primes.p8 works again
2022-05-24 18:26:07 +02:00
Irmen de Jong
3f5877dbcc
vm: fix array iteration
2022-05-23 21:24:36 +02:00
Irmen de Jong
e659b91c4d
vm: fix storezm/storezx instructions
2022-05-23 21:01:02 +02:00
Irmen de Jong
e09f054058
vm: implemented in-place bit rotate instructions
2022-05-23 20:30:25 +02:00
Irmen de Jong
b646f50265
vm: implemented in-memory bit shift instructions
2022-05-23 20:15:20 +02:00
Irmen de Jong
0a48ef3030
vm: just use new register instead of trying to (ab)use reg 0
2022-05-22 23:38:46 +02:00
Irmen de Jong
ba614801ee
cleanup
2022-05-22 23:11:22 +02:00
Irmen de Jong
fd6eb47e68
added inlining certain trivial non-asm subroutine calls
2022-05-22 20:22:09 +02:00
Irmen de Jong
e69aeb8b98
added warning about shadowing variables
2022-05-22 17:34:08 +02:00
Irmen de Jong
26ea1da146
vm: add in-place bitwise or,and,xor
2022-05-20 20:50:27 +02:00
Irmen de Jong
c9e8c7a290
vm: add in-place division
2022-05-19 23:38:16 +02:00
Irmen de Jong
5e4eb92443
vm: add in-place multiply
2022-05-19 23:18:54 +02:00
Irmen de Jong
461b6499ef
vm: add in-place add/sub
2022-05-19 22:54:50 +02:00
Irmen de Jong
c769920b6e
vm: fix signed divide
2022-05-19 22:24:57 +02:00
Irmen de Jong
181b98ef9e
vm: implemented some self-assign instructions
2022-05-18 22:15:42 +02:00
Irmen de Jong
4e1184a400
vm: added some of the sin cos tables in math.p8
2022-05-17 22:56:00 +02:00
Irmen de Jong
e52d9e3210
vm: split off assignment codegen to its own file
2022-05-17 22:38:31 +02:00
Irmen de Jong
dc6475c91b
vm: fixed non-byte array indexing
2022-05-17 18:53:33 +02:00
Irmen de Jong
52f9956e92
clarify use of direct-memory in functions that modify in place such as rol/swap
2022-05-16 22:41:31 +02:00
Irmen de Jong
0bf00d1ca4
c64/c128 targets: perform cleanup at program exit such as re-enabling run-stop key and character set switching.
2022-05-15 16:44:26 +02:00
Irmen de Jong
d1a707df57
fix assigning a pointer (uword) to string not copying the correct memory
2022-05-15 16:10:58 +02:00
Irmen de Jong
4dc9b45297
vm: fixed string comparisons, added missing vm string module
2022-05-13 23:10:13 +02:00
Irmen de Jong
6e31eebfb5
vm: ifElse codegen uses proper branching instructions now
2022-05-12 21:26:17 +02:00
Irmen de Jong
a7df828932
vm: codegen uses INCM/DECM if possible
2022-05-12 19:40:31 +02:00
Irmen de Jong
517cf61d11
vm: limit int instructions to just 2 register args
2022-05-11 22:36:47 +02:00
Irmen de Jong
4be7bc8323
vm: limit float instructions to just 2 register args
2022-05-11 22:09:46 +02:00
Irmen de Jong
74c05d00a9
vm: fix comparison operator codegen for floats
2022-05-11 17:07:21 +02:00
Irmen de Jong
677613d30a
vm: expressiongen: use resultRegister arg instead of allocating new leftResultReg
2022-05-11 15:58:55 +02:00
Irmen de Jong
bacba629a5
vm: use shift-one instructions in codegen
2022-05-11 15:50:51 +02:00
Irmen de Jong
14e36f1362
vm: fix assignment to array
2022-05-11 15:26:54 +02:00
Irmen de Jong
d43ad849d1
vm: actually use the store-zero instructions in codegen
2022-05-11 15:18:36 +02:00
Irmen de Jong
627aa61184
clean up subroutine inlining, basis for new try
2022-05-09 15:42:58 +02:00
Irmen de Jong
dad5b17ac8
fix regression compiler crash in string comparison
2022-05-08 13:47:24 +02:00
Irmen de Jong
fef52c0112
automatically convert multi-compare expression (if X==1 or X==2..) to contaiment check if X in [1,2,..]
2022-05-08 13:21:34 +02:00
Irmen de Jong
8c4765b386
vm: support non-unary functions in pipe expressions
2022-05-07 20:42:05 +02:00
Irmen de Jong
7c121bfc01
first steps to support multiple args in pipe expressions
2022-05-07 19:00:47 +02:00
Irmen de Jong
942c5cc04b
fix crash when optimizing pipe expression too aggressively
2022-05-07 17:29:36 +02:00
Irmen de Jong
348b3036ff
now correctly accepts "xxx" * constexpr (where constexpr is not just a single const number)
2022-05-05 23:21:20 +02:00
Irmen de Jong
09d3451d9d
vm: accept %asmbinary (but it is eventually ignored in code execution)
2022-05-05 21:43:31 +02:00
Irmen de Jong
b1a49e5f29
vm: implement rest of float instructions
2022-05-04 22:31:45 +02:00
Irmen de Jong
da01a5b4dc
vm: implement float to integer cast, any, all, reverse
2022-05-04 22:08:21 +02:00
Irmen de Jong
3f9cdd9b56
vm: fix mul and div instructions
2022-05-04 01:10:59 +02:00
Irmen de Jong
0f9e87d7bb
fixed compiler crash when casting float to integer, fixed float to int cast value error on cx16
2022-05-03 23:43:38 +02:00
Irmen de Jong
0869789214
vm: implement float type casts to integer types
2022-05-02 23:38:32 +02:00
Irmen de Jong
10c8cc35c5
vm: implement float divide multiply sub add
2022-05-02 21:53:43 +02:00
Irmen de Jong
30c2e3e8ff
vm: fix comparisons codegen
2022-05-02 21:32:45 +02:00
Irmen de Jong
86cc2f1075
vm: implementing more fp instructions
2022-05-02 21:06:14 +02:00
Irmen de Jong
fa357a450b
clarify license
2022-05-02 19:46:08 +02:00
Irmen de Jong
b32641db87
remove syscall() builtin functions
...
vm code can do this via inline assembly
2022-05-01 00:41:30 +02:00
Irmen de Jong
0ee790969d
vm: allow inline "assembly"
2022-04-30 23:24:25 +02:00
Irmen de Jong
7844ace934
vm: implementing floating-point
2022-04-29 22:27:02 +02:00
Irmen de Jong
f4993d6e5d
vm: fix instruction type checks
2022-04-28 22:19:46 +02:00
Irmen de Jong
0fab806f36
vm: some preparations for floating point
2022-04-27 17:45:58 +02:00
Irmen de Jong
be2113d291
vm: starting to implement floating point instructions
2022-04-26 21:25:59 +02:00
Irmen de Jong
625d5b2313
vm: some preparations for floating point
2022-04-26 21:08:32 +02:00
Irmen de Jong
6471c0c536
upgrade antlr to 4.10.1
2022-04-24 23:29:15 +02:00
Irmen de Jong
47c53fa60a
todo
2022-04-23 20:44:59 +02:00
Irmen de Jong
cf50e4f6ec
vm: printing of numbers now via conv module.
...
assigning strings now converted to strcopy function call in the compiler ast.
2022-04-23 02:15:51 +02:00
Irmen de Jong
7eea97d741
- floats: remove all floating point builtin functions and move them to the floats module instead
2022-04-22 00:45:54 +02:00
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
0f36be0001
vm: simple optimizations for +/-/*/div with constants
2022-04-14 22:42:25 +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
51bf33040a
vm: add many builtin functions
2022-04-11 22:39:33 +02:00
Irmen de Jong
a2c7273801
vm: use memory load instruction better
2022-04-11 20:55:06 +02:00
Irmen de Jong
ec6ac5bf24
vm: added swap()
2022-04-11 01:50:47 +02:00
Irmen de Jong
ec7501782d
vm: added 1-bit variants of lsr/lsl opcodes
2022-04-11 00:25:00 +02:00
Irmen de Jong
890b1c2d52
more readable
2022-04-10 22:31:37 +02:00
Irmen de Jong
c25d07259a
add block directive options to PtBlock
2022-04-10 21:37:47 +02:00
Irmen de Jong
c960246eee
add some utility methods to PtNode to find the defining subroutine/block
2022-04-10 21:20:01 +02:00
Irmen de Jong
a01aee3111
add sideEffects boolean to PtBuiltinFunctionCall
2022-04-10 21:08:54 +02:00
Irmen de Jong
e2e951efdf
constValue(expr) convenience function added for new Ast expression nodes
2022-04-10 18:45:33 +02:00
Irmen de Jong
3f6393f732
PtNumber can now be compared
2022-04-10 17:48:03 +02:00
Irmen de Jong
b6eb343234
moving string escaping out of antlr project
2022-04-10 17:31:30 +02:00
Irmen de Jong
207a7e5160
move operator lists
2022-04-10 13:24:17 +02:00
Irmen de Jong
a0face4a28
vm: implementing rol/ror
2022-04-09 11:13:49 +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
d78bfcc35c
vm: more optimal code when array index is constant value
2022-04-05 00:19:37 +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
9874fe2c23
fix superfluous printing of WARN/ERROR words
2022-04-02 22:16:47 +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
b133d51a83
make the parser report '&&' as an error instead of treating it as bitwise and followed by address-of.
2022-04-02 02:08:01 +02:00
Irmen de Jong
037b89f018
x16 r39: tweak kbdbuf_peek() result value
2022-04-01 23:47:09 +02:00
Irmen de Jong
20d06d9f9d
fix return type error for asmsubs with >1 result values
2022-04-01 22:30:15 +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
0a0c58d450
added for loop over constant ranges
2022-03-30 23:42:15 +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
30cbb6c9a8
implementing more of the vm
2022-03-27 21:59:46 +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
e41d6787bb
working on vm
2022-03-27 14:23:01 +02:00
Irmen de Jong
ed30108961
removed '**' power-operator. Use floats.pow() instead.
2022-03-27 13:16:34 +02:00
Irmen de Jong
12712ef812
working on vm
2022-03-27 11:48:44 +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
7b27d270a2
gosub only uses an identifier
2022-03-22 20:53:06 +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
4c1bb18956
refreshrate default value
2022-03-19 01:08:10 +01:00
Irmen de Jong
7d2bf892b1
added start of virtual machine compilation target
2022-03-19 00:57:35 +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
4a0031080a
getting rid of directives in new Ast
2022-03-13 00:30:20 +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
e227cc92ff
new ast: regular subroutine has just 0 or 1 return type
2022-03-12 14:12:06 +01:00
Irmen de Jong
73dbdbcbe6
module rename
2022-03-11 21:24:16 +01:00
Irmen de Jong
3961f26635
consolidating modules
2022-03-11 20:45:39 +01:00
Irmen de Jong
e51c274a18
reducing dependencies
2022-03-11 20:32:35 +01:00
Irmen de Jong
e75d0c58a9
reducing dependencies
2022-03-10 23:46:43 +01:00
Irmen de Jong
9a798360f4
introduced codeAst and codeCore modules to reduce dependencies
2022-03-10 22:38:16 +01:00
Irmen de Jong
844ad09464
reducing dependencies
2022-03-10 21:36:51 +01:00
Irmen de Jong
1e1d1efd90
reducing dependencies
2022-03-10 21:23:01 +01:00
Irmen de Jong
240e6835c2
decide sim is not worth it-remove it again
2022-03-10 21:23:01 +01:00
Irmen de Jong
61398ee8f8
decide sim is not worth it
2022-03-10 21:23:01 +01:00
Irmen de Jong
e6e84859b7
building more of the simulator
2022-03-10 21:23:01 +01:00
Irmen de Jong
abcdd331db
started with a simulator
2022-03-10 21:23:00 +01:00
Irmen de Jong
775d136b91
new compileText result
2022-03-10 21:22:32 +01:00
Irmen de Jong
dc93691fd9
working on new ast
2022-03-10 21:22:32 +01:00
Irmen de Jong
48d782c69c
added flat mapping to symboltable
2022-03-10 21:22:31 +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
e7c4bf5ebf
reducing dependencies
2022-03-10 21:17:31 +01:00
Irmen de Jong
546a416f7e
reducing dependencies
2022-03-10 20:57:36 +01:00
Irmen de Jong
179a7a2792
reducing dependencies
2022-03-10 02:17:06 +01:00
Irmen de Jong
251b6fcf70
reducing dependencies
2022-03-10 02:09:34 +01:00
Irmen de Jong
ab1fffb721
reducing dependencies
2022-03-10 01:41:42 +01:00
Irmen de Jong
da352a322c
reducing dependencies
2022-03-10 01:27:27 +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
a58e5a3399
simplify result handling of assembly phase
2022-03-08 18:51:07 +01:00
Irmen de Jong
9872f43cbf
repeat-forever loop is now replaced by label+jump
2022-03-08 03:25:34 +01:00
Irmen de Jong
1078cc4642
remove debug
2022-03-07 21:45:29 +01:00
Irmen de Jong
db7ae028b2
simplified CompilationResult a bit
2022-03-07 21:41:12 +01:00
Irmen de Jong
2b6f5dbd59
cleanup st use at variable asm generation
2022-03-06 19:50:15 +01:00
Irmen de Jong
f7aa0c45df
optimize imports
2022-03-05 15:54:42 +01:00
Irmen de Jong
a72d58cdf9
updated 3rd party library versions
2022-03-05 15:28:22 +01:00
Irmen de Jong
067283834a
got rid of old IVariablesAndConsts object
2022-03-05 14:40:41 +01:00
Irmen de Jong
cf362c4a61
getting rid of old IVariablesAndConsts object
2022-03-05 14:11:58 +01:00
Irmen de Jong
496245c801
working on symboltable
2022-03-05 12:10:20 +01:00
Irmen de Jong
859ab36347
variables extraction moved to the very end, so no need anymore to change the table after the fact
2022-03-04 23:12:24 +01:00
Irmen de Jong
1d740c7c36
removed need to store ast scope on each zp allocated var, now uses scoped name to find them
2022-03-04 22:58:05 +01:00
Irmen de Jong
a03c4c3659
working on symbol table
2022-03-04 22:26:46 +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
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
6cce47b2f1
fix launching emulator for atari target
2022-02-24 23:22:02 +01:00
Irmen de Jong
6185d5eca1
Merge remote-tracking branch 'origin/master'
2022-02-24 22:52:08 +01:00
Irmen de Jong
685ad1746e
Merge pull request #74 from FreddyOffenga/master
...
temporary fix for chrout and newline for atari and added two examples
2022-02-24 22:30:59 +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
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
064a8e785c
cleanups
2022-02-21 03:26:17 +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
5ac784e18a
cleanup
2022-02-19 00:30:59 +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
73fc18099e
properly report duplicate label names
2022-02-15 00:39:10 +01:00
Irmen de Jong
e34dac8dbb
remove unit test issue
2022-02-15 00:38:51 +01:00
Irmen de Jong
af0e7f7187
searching names in inlined assembly now ignores source comments
2022-02-13 13:41:12 +01:00
Irmen de Jong
a3a6812608
version 7.8
2022-02-12 17:40:32 +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
b47fc1c020
renames of some Ast node classes
2022-02-11 00:34:36 +01:00
Irmen de Jong
de6ef7ef5e
doc
2022-02-11 00:16:39 +01:00
Irmen de Jong
f95fe8f1da
note about removing VarDecls
2022-02-10 23:20:19 +01:00
Irmen de Jong
bd0dee5db5
cleanup
2022-02-10 22:22:50 +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
f7e74b3088
naming
2022-02-10 03:18:56 +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
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
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
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
9acc2f92d1
start to rewrite variable allocation
2022-02-08 20:40:10 +01:00
Irmen de Jong
72dfb0bda3
fix: undefined sys.memcopy when initializing array on cx16
2022-02-08 20:29:47 +01:00
Irmen de Jong
1635612430
tiny tweak in asm optimizer
2022-02-08 02:19:50 +01:00
Irmen de Jong
abda837d2f
split program structure codegen out of AsmGen into separate class ProgramGen
2022-02-07 00:12:25 +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
d2309b8114
introducing IVariableAllocation (WIP)
2022-02-06 18:57:23 +01:00
Irmen de Jong
6bdd81623f
cleaning up AsmGen interface
2022-02-06 17:07:03 +01:00
Irmen de Jong
f538c9f0c3
remove bogus double var decl check
2022-02-06 14:04:54 +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
1ab635bd7e
small tweak of parse messages
2022-02-05 14:02:24 +01:00
Irmen de Jong
b35abd548c
less noisy output about what module files are being imported.
2022-02-05 04:25:34 +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
0e824c35cc
Merge pull request #73 from akumanatt/master
...
Codegen and runtime library optimizations
2022-02-05 02:21:53 +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
Natt Akuma
9ad79fefc9
Merge branch 'master' of https://github.com/irmen/prog8
2022-02-04 22:55:41 +07:00
Natt Akuma
49d37c016e
Optimize strcmp_mem
2022-02-04 22:07:03 +07:00
Natt Akuma
7c70c79a84
Optimize in-place word subtraction and negation
2022-02-04 21:21:06 +07:00
Irmen de Jong
6916b8bff7
remove redundant properties
2022-02-03 23:59:24 +01:00
Natt Akuma
73dfb5f443
Optimize sign extension to AY
2022-02-04 00:59:44 +07: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
ddf96943f0
remove Nop ast node.
2022-01-31 22:36:10 +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
1815cb1bc3
fixed bug in assembly optimizer removing too many instructions
2022-01-28 15:19:08 +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
990c8e1f18
split out 6502 codegen module from various compilertargets module.
2022-01-28 00:32:09 +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
fa48746ba9
increase internal buffer for diskio.list_files to be able to list larger directories
2022-01-26 03:17:33 +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
14407bd1aa
fix memory() existing check typo
2022-01-24 23:21:31 +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
5237e55326
added txt.iso() to enable iso-charset on cx16
2022-01-18 21:35:29 +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
8966d2aa06
comments and prepare new version 7.7
2022-01-16 23:03:00 +01:00
Irmen de Jong
de7ea04f54
when zp option = dontuse, print error for any variable with @requirezp
2022-01-16 18:13:24 +01:00
Irmen de Jong
bf71fabe0e
fix codegen mistake for zp allocated loop vars
2022-01-16 18:09:09 +01:00
Irmen de Jong
b3368acb33
todos to fix broken examples
2022-01-16 17:57:47 +01:00
Irmen de Jong
87220c6697
docs for @requirezp
2022-01-16 17:20:36 +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
2bb2502d20
added @requirezp to syntax files
2022-01-16 17:20:36 +01:00
Irmen de Jong
fe51698579
tweak how zp varnames are stored
2022-01-16 17:20:36 +01:00
Irmen de Jong
0f0f40bff3
improved ForloopAsmGen loopvar zp allocation
2022-01-16 17:20:36 +01:00
Irmen de Jong
a798fe72d3
cx16 reserved zp vars (virtual registers)
2022-01-16 17:20:36 +01:00
Irmen de Jong
fba98d03a5
improve %zpreserved error messages
2022-01-16 17:20:36 +01:00
Irmen de Jong
7dd2517f67
fix Zp allocation issues
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
564a6a1f62
fix invalid removal of Jump
...
that would generate wrong code if occurs at the end of a subroutine
2022-01-16 14:05:42 +01:00
Irmen de Jong
69f0c80cd7
added pokemon() function
2022-01-15 19:04:04 +01:00
Irmen de Jong
6fcb51cea2
add warning when encoded string contains 0-byte
2022-01-15 17:11:40 +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
c8f4ab4f06
doc
2022-01-12 22:21:01 +01:00
Irmen de Jong
e425c4cca8
optimizing pipe codegen
2022-01-11 23:17:35 +01:00
Irmen de Jong
056ec986c2
use var initializer assignments in a clearer way
2022-01-11 00:34:44 +01:00
Irmen de Jong
de3b2fb95b
slightly optimized certain list iterations into sequences
2022-01-10 23:15:24 +01:00
Irmen de Jong
789e39c719
slightly optimized assembly file handling
2022-01-10 22:48:20 +01:00
Irmen de Jong
b29c3152db
Assignment: make its origin explicit
2022-01-10 02:25:02 +01:00
Irmen de Jong
3831679772
VarDecl: make its origin explicit
2022-01-10 01:53:03 +01:00
Irmen de Jong
596f9566d8
todo
2022-01-10 01:00:50 +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
b092d1a5d3
fixed code gen issue for uword >= comparison
2022-01-09 13:23:29 +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
6fa3f0b6cd
small refactor
2022-01-08 18:02:38 +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
d99d977d2b
fix more typecasting issues
2022-01-08 17:04:25 +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
17694c1d01
better error handling of invalid number casts
2022-01-07 22:12:13 +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
02c315c194
add missing unit tests and type checking for 'in' expression
2022-01-06 00:01:49 +01:00
Irmen de Jong
b697375573
add note about unspecified order of evaluation of expressions and subroutine call arguments
2022-01-05 23:21:45 +01:00
Irmen de Jong
c57ef7725e
preparing v7.6
2022-01-04 20:40:35 +01:00
Irmen de Jong
3ae07503f2
doc css styling: font size slightly bigger for code as well
2022-01-03 23:28:11 +01:00
Irmen de Jong
9a0341adde
doc css styling: font size slightly bigger
2022-01-03 23:16:07 +01:00
Irmen de Jong
96225efd96
library doc tweaks
2022-01-03 23:15:34 +01:00
Irmen de Jong
c3bd904f41
todo
2022-01-02 23:46:36 +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
9e90dbdde6
slight optimization of repeat loop (> 256 iters) code generation on 65c02 cpu
2022-01-01 14:42:37 +01:00
Irmen de Jong
1e8d8e40a2
slight optimization of repeat loop (0-256 iters) code generation on 65c02 cpu
2021-12-31 14:06:35 +01:00
Irmen de Jong
583e208c1e
remark
2021-12-31 11:34:53 +01:00
Irmen de Jong
9b91c427a1
add porting guide
...
sizeof(pointer) is hardcoded as 2 now
2021-12-31 00:16:23 +01:00
Irmen de Jong
196c5e9c24
v39->r39
2021-12-30 19:05:56 +01:00
Irmen de Jong
d8f7feb672
cleanup code style
2021-12-30 18:47:38 +01:00
Irmen de Jong
7c889f17b9
c128 fixes
2021-12-30 18:33:26 +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
5275c2e35f
todo porting guide
2021-12-30 18:20:09 +01:00
Irmen de Jong
5267e06969
added -asmlist cli option to produce assembler listing output
2021-12-30 14:42:09 +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
Irmen de Jong
a65404e63a
doc
2021-12-29 18:24:05 +01:00
Irmen de Jong
05a1ddad05
Merge branch 'master' into c128target
...
# Conflicts:
# examples/test.p8
2021-12-29 18:14:24 +01:00
Irmen de Jong
4be3d63c0e
slight optimization of if-in
2021-12-29 18:13:43 +01:00
Irmen de Jong
de6ce4a46e
add "X in [1,2,3]" expression (efficient containment check)
2021-12-29 17:26:00 +01:00
Irmen de Jong
7a9e5afb93
fix: for loop over array literal no longer crashes the compiler
2021-12-28 17:51:38 +01:00
Irmen de Jong
b2876b0a03
add a suggestion to use when statement if it seems appropriate
2021-12-28 16:38:12 +01:00
Irmen de Jong
b66f66fe6a
fix renames
2021-12-28 14:32:27 +01:00
Irmen de Jong
30f04962d4
Merge branch 'master' into c128target
...
# Conflicts:
# codeGeneration/src/prog8/codegen/target/C128Target.kt
# codeGeneration/src/prog8/codegen/target/c128/C128MachineDefinition.kt
# codeGeneration/src/prog8/codegen/target/c128/C128Zeropage.kt
# compiler/src/prog8/CompilerMain.kt
# compiler/src/prog8/compiler/Compiler.kt
2021-12-28 14:30:11 +01:00
Irmen de Jong
0feeb88024
codegen package rename 2
2021-12-28 14:23:36 +01:00
Irmen de Jong
b799f2e05b
codegen package rename
2021-12-28 14:18:04 +01:00
Irmen de Jong
56d21de001
Merge branch 'master' into c128target
...
# Conflicts:
# examples/test.p8
2021-12-28 13:57:27 +01:00
Irmen de Jong
7b54aa0c7d
more consistent naming of the statement classes
2021-12-28 13:56:47 +01:00
Irmen de Jong
6e11b8ada1
GoSub no longer inherits from Jump node, fixes subtle ast/codegen bugs related to jsrs
2021-12-28 01:55:13 +01:00
Irmen de Jong
98d25fc4e9
fix some unneeded open classes
2021-12-28 01:29:08 +01:00
Irmen de Jong
79405f47f6
fix if-gosub
2021-12-28 01:24:31 +01:00
Irmen de Jong
1c7c4fc3b0
optimized if-goto codegeneration
2021-12-28 00:42:00 +01:00
Irmen de Jong
97e84d0977
tweak if statement handling
2021-12-27 15:04:25 +01:00
Irmen de Jong
9906b58818
tweak while desugaring, moved postfixexpr optimizations to VariousCleanups regardless of optimizer setting because asmgen requires these for conditional expressions
2021-12-27 12:41:26 +01:00
Irmen de Jong
371f084884
comment
2021-12-27 02:17:04 +01:00
Irmen de Jong
1c10839c14
moved peek/poke desugaring to other walker
2021-12-27 02:08:47 +01:00
Irmen de Jong
c55fdd9834
removed special code generation for while and util expression (replaced by jumps)
...
also added exhaustive parent node checker in validation step
2021-12-27 02:04:28 +01:00
Irmen de Jong
67b0890a6e
remove unneeded var inits when an assignment is already present
2021-12-25 23:31:25 +01:00
Irmen de Jong
4da4f96669
lower code: break -> goto after (simplifies codegen)
2021-12-25 22:30:38 +01:00
Irmen de Jong
60a64c2558
test program for floating point issues on c128
2021-12-25 14:36:10 +01:00
Irmen de Jong
d4153da8b9
setup float routine addresses for c128
2021-12-25 02:34:52 +01:00
Irmen de Jong
fc33ab8905
shuffled some system functions back to c64 block to remain compatible with existing code, added missing float and graphics library stubs
2021-12-24 00:08:32 +01:00
Irmen de Jong
a123c64f59
Merge branch 'master' into c128target
2021-12-23 23:51:42 +01:00
Irmen de Jong
a090fe3834
no compiler optimizer crash on certain missing symbol
2021-12-23 23:51:21 +01:00
Irmen de Jong
8fa84de28e
fix c128 clearscreen and bdmusic sound issue
2021-12-22 22:59:36 +01:00
Irmen de Jong
3e3da38de1
correctly disable charset switching
2021-12-22 21:47:41 +01:00
Irmen de Jong
a3be8ccc87
Merge branch 'master' into c128target
2021-12-22 21:25:49 +01:00
Irmen de Jong
cdfef30c22
fixed docs on rsave()/rrestore() builtin functions
2021-12-22 21:24:36 +01:00
Irmen de Jong
cabf1e82e8
some shadow registers added to make uppercase()/lowercase() work
2021-12-22 21:20:34 +01:00
Irmen de Jong
608dc5e284
readme
2021-12-22 00:36:06 +01:00
Irmen de Jong
836d40072f
c128 evalstack corrections
2021-12-22 00:07:05 +01:00
Irmen de Jong
431401d90e
c128 corrections
2021-12-21 23:37:15 +01:00
Irmen de Jong
6da83e2bd7
first steps to add C128 compiler target
2021-12-21 19:08:33 +01:00
Irmen de Jong
7bccfc0006
proper position in recursion warning
2021-12-17 21:04:41 +01:00
Irmen de Jong
e051e09c1d
trim down number of warnings a bit
2021-12-17 20:21:14 +01:00
Irmen de Jong
1462c57d0c
no need for intermediary returnvalue var for prefix expressions
2021-12-16 21:00:38 +01:00
Irmen de Jong
77c2b2b326
fix position of @shared in array var declarations so that the order is now type[] @shared
2021-12-16 20:36:05 +01:00
Irmen de Jong
3cf9b9d9a5
code size optimization: subroutine calls with 2 byte arg will pass it via A/Y registers instead of separate param assignments at every call site
2021-12-16 01:48:22 +01:00
Irmen de Jong
629117e594
code size optimization: subroutine calls with 1 int arg will pass it via register instead of separate param assignment at every call site
2021-12-16 00:56:59 +01:00
Irmen de Jong
08f87c321f
fixed capitalization of operator sets to be consistent with other sets names
2021-12-15 23:43:14 +01:00
Irmen de Jong
1ff13723fe
implicit int to float conversion is now an error if floats are not enabled.
2021-12-15 01:52:28 +01:00
Irmen de Jong
510bda1b28
fix compiler crash when using floats in a comparison expression
2021-12-15 01:24:25 +01:00
Irmen de Jong
890327b381
the returnvalue of the diskio.load() function family now is just the last load address+1 (like kernal's LOAD routine).
...
This fixes the inconsistent attempt to calculate a size, just let the caller do this if required.
Added a small helper function in cx16diskio to do this for loads that span multiple banks.
2021-12-14 23:54:42 +01:00
Irmen de Jong
b21f7411dd
fix compiler crash when trying to concatenate string var and string literal.
2021-12-14 23:07:46 +01:00
Irmen de Jong
5df623bd2e
doc
2021-12-14 22:40:03 +01:00
Irmen de Jong
1e9d249f71
fixed output of float values in cmp instructions
2021-12-13 00:17:59 +01:00
Irmen de Jong
a7b5949e6a
fix compiler crash when using a gosub/subroutinecall in a branch statement
2021-12-11 15:11:16 +01:00
Irmen de Jong
02010170ce
fix compiler crash when attempting to call a non-function
2021-12-11 13:20:13 +01:00
Irmen de Jong
35998142fe
version 7.5
2021-12-10 20:18:17 +01:00
Irmen de Jong
75ea453bf4
fix asm code optimization problem caused in previous release where asm file is not read back in separate lines anymore
2021-12-10 15:37:53 +01:00
Irmen de Jong
33061aaa0d
fix: allow scoped variables such as cx16.rX as loop variable in forloops
2021-12-10 14:59:04 +01:00
Irmen de Jong
e342311bef
fix wrong code for inplace modification of a pointervariable's memory value
2021-12-10 14:48:53 +01:00
Irmen de Jong
3d743a1ba1
added more constfolding
2021-12-09 23:32:48 +01:00
Irmen de Jong
abca618008
added more constfolding
2021-12-09 23:12:12 +01:00
Irmen de Jong
0d2c3901a3
added more constfolding
2021-12-09 22:12:31 +01:00
Irmen de Jong
d901a1531f
added missing vectors to syslib
2021-12-09 21:38:00 +01:00
Irmen de Jong
d8d56b195f
comments
2021-12-09 21:13:13 +01:00
Irmen de Jong
a52699717c
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# compiler/src/prog8/compiler/astprocessing/AstChecker.kt
# compiler/test/TestSubroutines.kt
# examples/test.p8
2021-12-07 23:29:30 +01:00
Irmen de Jong
98315de723
allow using ubyte[] as subroutine parameter type (because it is equivalent to uword pointer var)
2021-12-07 23:28:45 +01:00
Irmen de Jong
68d2f7d4c0
allow using ubyte[] as subroutine parameter type (because it is equivalent to uword pointer var)
2021-12-07 23:21:49 +01:00
Irmen de Jong
c812b5ee09
elaborate pointervar indexing a bit more in the docs
2021-12-07 22:25:14 +01:00
Irmen de Jong
dcf487bdc1
fix: correctly insert return statement if needed to prevent 'fall through' into following subroutine
...
this wasn't working correctly anymore when the last statement before the subroutine was a jump/goto
2021-12-07 21:34:50 +01:00
Irmen de Jong
547b1d3720
comment corrections
2021-12-06 23:33:18 +01:00
Irmen de Jong
84f75f4156
tweaked some more .getOrElse
2021-12-06 21:22:00 +01:00
Irmen de Jong
ff69da3fa2
error when 'else' choice in when statemetn isn't the last one, also generate slightly better code for when statements
2021-12-05 21:54:46 +01:00
Irmen de Jong
edffe92a24
astchecker is smarter in detecting rts in inline assembly
2021-12-05 21:28:31 +01:00
Irmen de Jong
b6fe40ada4
fix: cx16.r0 now properly treated as zeropage var on cx16 so @(cx16.r0) won't copy it to temp var anymore
2021-12-05 21:21:41 +01:00
Irmen de Jong
837804b231
test for string x and u escape sequences
2021-12-05 18:39:34 +01:00
Irmen de Jong
81deed143b
fix grammar problem: \x and \u escape sequences didn't work in character literals.
2021-12-05 18:11:40 +01:00
Irmen de Jong
900cdd3fa1
added cx16diskio with load() and load_raw() that are HIMEM bank-aware
2021-12-05 02:20:48 +01:00
Irmen de Jong
0018dc6ce7
refactor machinedefinition
2021-12-04 19:07:19 +01:00
Irmen de Jong
c92f914081
gradle build settings tweak to avoid jdk version conflict
2021-12-04 18:36:47 +01:00
Irmen de Jong
0498444ef2
moved all unit tests into single project to avoid dependency issues
2021-12-04 18:20:22 +01:00
Irmen de Jong
ce3c34e458
tweak in error output for file links, corrected column number off-by-one
2021-12-04 16:52:03 +01:00
Irmen de Jong
20401b99d8
added cx16.getrambank() / getrombank() to retrieve the current ram and rom bank numbers.
2021-12-04 15:27:54 +01:00
Irmen de Jong
397f98513b
optimize loading A from pointervar
2021-12-04 05:36:48 +01:00
Irmen de Jong
e545ea9504
fix and optimize storing A into pointervar
2021-12-04 04:43:58 +01:00
Irmen de Jong
b867d8f731
cleanups
2021-12-04 01:03:51 +01:00
Irmen de Jong
9a68864b67
version 7.5-dev
2021-12-04 00:18:44 +01:00
Irmen de Jong
72d7178762
added diskio.load_raw() to load headerless files
2021-12-04 00:07:21 +01:00
Irmen de Jong
fbcd9a0c1d
reduce number of similar errors for type problem in assignment
2021-12-02 17:44:52 +01:00
Irmen de Jong
c3144a20db
spacing
2021-12-02 00:10:06 +01:00
Irmen de Jong
5b56e0462d
also deal with zero args
2021-12-01 22:26:36 +01:00
Irmen de Jong
b7fffbb6df
release 7.4.1 - oops, funcion call arg count validation was broken
2021-12-01 21:44:03 +01:00
Irmen de Jong
1f346230e3
release 7.4
2021-11-30 22:50:12 +01:00
Irmen de Jong
a2860a7c8c
todo
2021-11-30 22:45:43 +01:00
Irmen de Jong
df997e5d3b
don't write the asm file twice
2021-11-30 03:47:57 +01:00
Irmen de Jong
a67a82c921
tweak
2021-11-30 03:05:25 +01:00
Irmen de Jong
ea0fe8d3d2
PrefixExpression doesn't cause clobber risk
2021-11-30 02:32:37 +01:00
Irmen de Jong
2560042ac7
fix compiler crashes on in-place operations on cx16 registers or invalid signed types
2021-11-30 02:27:37 +01:00
Irmen de Jong
3d1d0696b9
refactor compiler arguments passing
2021-11-30 01:40:21 +01:00
Irmen de Jong
83f893f50b
doc
2021-11-30 00:54:03 +01:00
Irmen de Jong
9ecf95b075
fix syntaxerror in const processing of ranges if it contained variables
2021-11-29 23:36:41 +01:00
Irmen de Jong
7748c261da
rsave/rrestore moved from sys to builtin function to solve the stack related problem when calling it as a regular subroutine
2021-11-29 23:13:04 +01:00
Irmen de Jong
a2db44f80c
also consider Y register for clobber check for functioncall arguments
2021-11-29 22:09:05 +01:00
Irmen de Jong
b438d8aec0
fix invalid range size check when stepval is not a positive integer
2021-11-29 02:01:19 +01:00
Irmen de Jong
4ac169b210
formatting
2021-11-29 01:25:21 +01:00
Irmen de Jong
56dc6d7f1e
comment
2021-11-29 01:10:11 +01:00
Irmen de Jong
45b8762188
use inc/ina instead of adc
2021-11-29 00:07:15 +01:00
Irmen de Jong
cafab98d10
correction
2021-11-28 18:59:36 +01:00
Irmen de Jong
9256f910f0
rollback binexpr splitting, caused slowdowns
2021-11-28 18:50:05 +01:00
Irmen de Jong
32068a832a
split some additional binary expressions to avoid stack-based evaluation
2021-11-28 18:27:28 +01:00
Irmen de Jong
47c2c0376a
added some cpu stack related assembly-level optimizations
2021-11-28 17:27:01 +01:00
Irmen de Jong
f0dadc4a43
optimize 1-arg functioncalls
2021-11-28 16:55:10 +01:00
Irmen de Jong
960b60cd2d
tweak
2021-11-28 14:06:12 +01:00
Irmen de Jong
d6abd72e55
fix push() of signed values
2021-11-28 13:01:46 +01:00
Irmen de Jong
0a568f2530
fix the check of double-defined subroutine variables
2021-11-28 12:52:32 +01:00
Irmen de Jong
c52aa648c0
use an AnonymousScope to contain GoSub changes instead of adding separate statements
2021-11-28 12:09:13 +01:00
Irmen de Jong
3d23b39f4c
moved A to the end of the param list to avoid having to store its value
2021-11-28 04:03:18 +01:00
Irmen de Jong
f3a4048ebf
improved setting Carry bit as asmsub parameter
2021-11-28 03:31:32 +01:00
Irmen de Jong
1b07637cc4
better error checking for wrong pop()
2021-11-28 02:49:18 +01:00
Irmen de Jong
68b75fd558
fix: also allow pass-by-reference arguments to builtin functions that accept UWORD (adds implicit type cast)
2021-11-28 02:34:53 +01:00
Irmen de Jong
7c5ec1853d
nice error message if pop() argument is wrong
2021-11-28 02:20:35 +01:00
Irmen de Jong
e8f4686430
undid failed attempt of using sys.push/sys.pop for stack args - now using new push(), pushw(), pop(), popw() builtin functions
2021-11-28 01:22:40 +01:00
Irmen de Jong
02348924d0
failed attempt of using sys.push/pop for stack args
2021-11-27 23:52:47 +01:00
Irmen de Jong
69dcb4dbda
fix reporting of (not) unused code after GoSub jump
2021-11-27 21:22:34 +01:00
Irmen de Jong
c838821615
refactor fuction arguments codegen a bit
2021-11-27 21:14:21 +01:00
Irmen de Jong
8b4ac7801f
fix sys.push() signature for c64
2021-11-27 20:18:41 +01:00
Irmen de Jong
64a411628d
doc fixes
2021-11-27 19:58:08 +01:00
Irmen de Jong
e8e25c6fd6
added sys.push() and sys.pop() to put values on cpu stack. Added missing builtin functions to syntax-files.
2021-11-27 18:09:15 +01:00
Irmen de Jong
62485b6851
allow assigns to asmsub parameters (registers), but this is not very useful in practice.
2021-11-27 15:41:44 +01:00
Irmen de Jong
54025d2bf5
small refactor and spelling fixes
2021-11-27 14:49:18 +01:00
Irmen de Jong
f5ebf79e71
make sure X register is also saved if needed when GoSub is used
2021-11-26 22:11:52 +01:00
Irmen de Jong
66d5490702
just added missing FAC2 assign possibility
2021-11-26 21:34:00 +01:00
Irmen de Jong
42fe052f9f
got rid of old getScopedSymbolNameForTarget routine
2021-11-26 21:09:29 +01:00
Irmen de Jong
58d9c46a9b
got rid of old makeScopedName routine
2021-11-26 20:56:30 +01:00
Irmen de Jong
e4648e2138
proper rounding of builtin functions that return int from float
2021-11-26 20:32:12 +01:00
Irmen de Jong
110e047681
replace subroutine calls (statement) by GoSub
2021-11-26 19:47:01 +01:00
Irmen de Jong
17d403d812
Merge branch 'ref-subroutine-param' into v7.4-dev
...
# Conflicts:
# compilerAst/src/prog8/ast/AstToplevel.kt
2021-11-26 01:12:14 +01:00
Irmen de Jong
0a53bd4956
fix parameter name conflict
2021-11-26 01:01:59 +01:00
Irmen de Jong
e52d05c7db
fix some scoping related symbol lookup issues, clarified scoping rules in docs
2021-11-23 23:43:23 +01:00
Irmen de Jong
b00db4f8a2
no longer report unknown type errors as well for unknown symbols,
...
added a bunch more unit tests for symbol scoping rules
2021-11-23 22:45:57 +01:00
Irmen de Jong
0c2f30fd45
links to 6502 bresenham line algorithms
2021-11-23 21:51:18 +01:00
Irmen de Jong
e08871c637
oops! replace phx/plx 65C02 (cx16) instructions by 6502 (c64) compatible alternative.
...
Couldn't assemble code that used some of the routines in conv on c64 before...
2021-11-22 21:02:43 +01:00
Irmen de Jong
ff715881bc
allow scoped identifiers to reference a subroutine parameter directly.
...
also for asmsubroutines, but the asm generation for that is not yet done.
2021-11-21 23:21:39 +01:00
Irmen de Jong
0e2e5ffa52
fix parameter name conflict
2021-11-21 22:12:35 +01:00
Irmen de Jong
8095c4c155
added GoSub node (internal use only later for calling subroutines)
2021-11-21 16:23:48 +01:00
Irmen de Jong
e86246a985
todo
2021-11-21 14:00:19 +01:00
Irmen de Jong
625aaa02eb
documented the compiler's command line options in more detail
2021-11-21 13:53:22 +01:00
Irmen de Jong
787e35c9f3
asm optimizer can now also see of a symbol reference if it is in IO space or not (to a certain extent), so that these instructions are no longer optimized away
2021-11-21 13:12:51 +01:00
Irmen de Jong
8887e6af91
fix substituting 0 only if its actually the same variable that's substituted
2021-11-21 12:34:57 +01:00
Irmen de Jong
dde4c751da
version 7.4-dev
2021-11-21 03:28:13 +01:00
Irmen de Jong
3c39baf1d6
don't optimize seemingly redundant assembly instructions away that manipulate IO memory space
2021-11-21 03:24:03 +01:00
Irmen de Jong
b292124f3c
replaced many short/int values by unsigned types if appropriate
2021-11-21 00:55:56 +01:00
Irmen de Jong
c0035ba1a2
char encodings now use UByte type instead of short
2021-11-21 00:07:17 +01:00
Irmen de Jong
2491509c6a
add assignment optimization X=value-X --> X=-X ; X+=value (to avoid need of stack-evaluation)
2021-11-20 23:43:10 +01:00
Irmen de Jong
107935ed31
add some more const folding patterns
2021-11-20 22:47:49 +01:00
Irmen de Jong
31491c62c5
add some more const folding patterns
2021-11-20 22:40:12 +01:00
Irmen de Jong
eacf8b896a
fix augmentable check to align with what the asmgen understands
2021-11-20 22:06:51 +01:00
Irmen de Jong
7936fc5bd8
tiny optimization of negating a register
2021-11-20 21:42:55 +01:00
Irmen de Jong
adfaddbcf4
give a nicer error when given a wrong compilation target.
2021-11-20 18:30:55 +01:00
Irmen de Jong
74db5c6be7
fix referencesIdentifier() and better removal of unnecessary assignments
2021-11-20 17:41:41 +01:00
Irmen de Jong
f9399bcce7
r=(q+r)-c and r=q+(r-c) are now both also 'augmentable', and BinExprSplitter doesn't check for associativeOperator anymore
2021-11-20 02:03:32 +01:00
Irmen de Jong
87600b23db
fix constvalue parent linkage for prefix and typecast
2021-11-20 00:20:35 +01:00
Irmen de Jong
cedfb17b18
fix too aggressive removal of vars that weren't completely unused
2021-11-19 22:49:35 +01:00
Irmen de Jong
fa4c83df6b
added 3 tests for discovered problems
2021-11-18 23:55:20 +01:00
Irmen de Jong
42c8720e8b
fix float rounding tests
2021-11-18 22:54:49 +01:00
Irmen de Jong
b334d89715
refactor and fix the way memory addresses are checked to be in IO space or regular ram
2021-11-18 22:47:58 +01:00
Irmen de Jong
4f5d36a84d
optimization added: bitwise operations with a negative constant number -> replace the number by its positive 2 complement
2021-11-18 02:51:42 +01:00
Irmen de Jong
8f379e2262
give an error when initializing an integer var with a float value instead of silently rounding
2021-11-18 01:56:11 +01:00
Irmen de Jong
fa11a6e18b
removed faulty and too aggressive assembly optimization of double-store
2021-11-18 01:43:22 +01:00
Irmen de Jong
52bedce8f4
added test for assignment.isAugmented
2021-11-18 01:05:16 +01:00
Irmen de Jong
4c82af36e6
fix improperly changed behavior about =0 initializer
2021-11-18 00:17:22 +01:00
Irmen de Jong
dafa0d9138
fix compiler crash bug due to reused ast expression nodes. Now all (relevant) Nodes have a copy() function to make a clone.
2021-11-17 23:05:59 +01:00
Irmen de Jong
2e0450d7ed
fix bug where variable=0 initializer was forgotten if vardecl is followed by an augmented assignment
2021-11-17 22:31:43 +01:00
Irmen de Jong
6af3209d4d
add more const foldings
2021-11-17 00:57:00 +01:00
Irmen de Jong
5d362047e2
add some more comparison expression optimizations to compare against 0 if possible
2021-11-17 00:04:52 +01:00
Irmen de Jong
f48d6ca9f8
simplified NumericLiteral to always just contain a Double instead of a Number for the value
2021-11-16 23:52:54 +01:00
Irmen de Jong
964e8e0a17
update to Kotlin 1.6.0
2021-11-16 22:36:23 +01:00
Irmen de Jong
1f60a2d8b9
comments
2021-11-15 01:30:12 +01:00
Irmen de Jong
5fd83f2757
version 7.3
2021-11-14 22:55:13 +01:00
Irmen de Jong
c80df4140b
until-loop condition now also simplified to avoid stack-eval
2021-11-14 22:51:02 +01:00
Irmen de Jong
53e1729e2f
introduce option to use internal scratch variables via prog8_lib definitions (ony for compiler, not for user code!)
2021-11-14 16:01:54 +01:00
Irmen de Jong
ab2d1122a9
conditional expressions are optimized more intelligently (simple ones are not split off in separate assignments)
2021-11-14 12:38:56 +01:00
Irmen de Jong
5190594c8a
added several more assembly-level optimizations to remove redundant instructions
2021-11-14 12:23:46 +01:00
Irmen de Jong
c858ceeb58
compiler shouldn't use cx16.r15 as temp var
2021-11-14 02:38:59 +01:00
Irmen de Jong
f0f52b9166
optimize typecasted binary expression to avoid even more estack use. also fix wrong parent crash in removal of unused variable's assignments.
2021-11-13 14:22:37 +01:00
Irmen de Jong
00c6f74481
tweak temp float
2021-11-13 12:56:59 +01:00
Irmen de Jong
2177ba0ed2
added signed versions of the cx16 virtual registers
2021-11-13 02:42:21 +01:00
Irmen de Jong
3483515346
preparing for more optimizations
2021-11-12 23:23:51 +01:00
Irmen de Jong
75a06d2a40
preparing for more optimizations
2021-11-12 02:17:37 +01:00
Irmen de Jong
53ac11983b
better unused variable removal
2021-11-11 03:03:21 +01:00
Irmen de Jong
69f4a4d4f8
tweak expr.typecastTo() a bit
2021-11-11 00:15:09 +01:00
Irmen de Jong
222bcb808f
optimize load-store-load combo in output asm
2021-11-10 23:47:35 +01:00
Irmen de Jong
686483f51a
fixed division of signed byte number by 2. (!)
2021-11-10 00:17:56 +01:00
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
84dafda0e4
fix error message for type mismatch on builtin-function parameter
2021-11-09 22:19:07 +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
7780d94de1
discovered crash related to float typecasting in asm assignment codegen
2021-11-09 03:45:07 +01:00
Irmen de Jong
f2c440e466
new sin/cos idea
2021-11-09 02:38:43 +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
c8a4b6f23c
refactor expressionsAsmGen so that it now has just 1 single public function
...
this makes replacing it by a non-stack based solution easier in the future.
2021-11-08 19:21:55 +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
a9b0400d13
fixed 'not' operator priority: it now has higher priority as or/and/xor.
2021-11-08 18:38:04 +01:00
Irmen de Jong
2d1e5bbc7e
remove unimportant empty tests
2021-11-08 17:00:10 +01:00
Irmen de Jong
60627ce756
kotest migration done, fixes #70
2021-11-08 16:19:24 +01:00
Irmen de Jong
7961a09d16
converting compiler module's testcases to kotest assertions
2021-11-08 16:14:22 +01:00
Irmen de Jong
613efcacc7
converting compiler module's testcases to kotest (ongoing)
2021-11-08 15:08:48 +01:00
Irmen de Jong
7e8db16e18
moved to kotest assertions in compilerAst module tests
2021-11-07 21:18:18 +01:00
Irmen de Jong
1fbbed7e23
remove unittest machinery from modules that don't have tests
2021-11-07 17:34:14 +01:00
Irmen de Jong
984272beb4
migrated compilerAst module to KoTest (but not finished with the assertions yet)
2021-11-07 17:25:53 +01:00
Irmen de Jong
b9ce94bb68
migrated codeGeneration module to KoTest
2021-11-07 15:40:05 +01:00
Irmen de Jong
f4c4ee78d9
re-use global returnvalue temp var instead of duplicating it in every subroutine that needs it
2021-11-07 14:19:21 +01:00
Irmen de Jong
793596614e
attempt to fix ReadTheDocs build issue
2021-11-07 00:37:31 +01:00
Irmen de Jong
136280100c
attempt to fix ReadTheDocs build issue
2021-11-07 00:23:44 +01:00
Irmen de Jong
29f1e4d2c9
attempt to fix ReadTheDocs build issue
2021-11-07 00:18:51 +01:00
Irmen de Jong
72a7e61fd0
version 7.2
2021-11-06 23:42:13 +01:00
Irmen de Jong
381cfca67f
Merge branch 'v7.2'
...
# Conflicts:
# compiler/res/version.txt
2021-11-06 23:41:39 +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
4270c04856
don't crash but give proper error on "-X" expression where X is not a signed type
2021-11-06 18:06:01 +01:00
Irmen de Jong
74456d1135
optimized prefix-expression in to use stack evaluation less
2021-11-06 17:57:00 +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
23961f695d
fixed some parse tree node position end-columns. cleanup some todo's
2021-11-05 22:48:28 +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
f09c04eeac
fix invalid asm addressing mode for certain value-to-evalstack transfers
2021-11-04 22:44:31 +01:00
Irmen de Jong
be73739c62
todo
2021-11-03 23:08:11 +01:00
Irmen de Jong
eea3fb48a8
add command line option 'optfloatx' to explicitly re-enable float expr optimization as this can increase code size significantly.
...
The output size of the various example programs using floating point, when not using this optimization, has been reduced significantly.
The resulting code runs a (tiny) bit slower though.
2021-11-03 22:52:08 +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
7f49731618
fix: don't initialize block vars twice, fix: make sure the prog8_init_vars generated routine is correctly called when needed
2021-11-02 23:13:28 +01:00
Irmen de Jong
3410aea788
fix regression: don't add 0 initializer when variable is assigned to anyway (or is loopvar in a for-loop)
2021-11-02 21:23:59 +01:00
Irmen de Jong
bc0a133bb1
doc
2021-11-02 20:24:45 +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
03ac9b6956
various cleanups, slight update to dbus
2021-10-30 19:30:19 +02:00
Irmen de Jong
dfbef8495d
got rid of ParsingFailedError
2021-10-30 17:05:23 +02:00
Irmen de Jong
7b17c49d8f
update petscii tables with improvements to box drawing chars. fixes #68
2021-10-30 16:45:23 +02:00
Irmen de Jong
4b3f31c2ee
added option to suppress assembler output (and enabled this in unit tests)
2021-10-30 15:26:40 +02:00
Irmen de Jong
9ccc65bf8f
more petscii tests
2021-10-30 15:15:11 +02:00
Irmen de Jong
f9e22add03
fix crash when using array as paramater type
2021-10-30 15:15:00 +02:00
Irmen de Jong
846951cda7
kotlin 1.5.31
2021-10-30 12:26:05 +02:00
Irmen de Jong
97836e18b2
simplified gradle config, automatically run installDist task after build
2021-10-30 12:01:52 +02:00
Irmen de Jong
7b69df4db2
todos
2021-10-30 00:38:48 +02:00
Irmen de Jong
3767b4bbe7
'Program' is not an ast Node
2021-10-30 00:25:34 +02:00
Irmen de Jong
d7d2eefa4f
implemented CharLiteral.constValue()
2021-10-30 00:05:55 +02:00
Irmen de Jong
6737f28d1e
moved unittests of compilerInterfaces into compiler module itself
2021-10-29 23:46:51 +02:00
Irmen de Jong
3da9404c2d
removed memsizer arg from all builtin functions
2021-10-29 23:38:31 +02:00
Irmen de Jong
4d5bd0fa32
simplify ZeroPage reserved locations handling a bit
2021-10-29 17:34:42 +02:00
Irmen de Jong
1137da37c3
reshuffle ErrorReporter
2021-10-29 17:02:03 +02:00
Irmen de Jong
495a18805c
move asmgen test to codeGeneration module
2021-10-29 16:20:53 +02:00
Irmen de Jong
a226b82d0b
cleanup imports
2021-10-29 05:30:12 +02:00
Irmen de Jong
0b5ddcdc9b
split out the code generator into own project submodule
2021-10-29 05:00:30 +02:00
Irmen de Jong
82da8f4946
adding tests to the new project's submodules
2021-10-29 03:36:42 +02:00
Irmen de Jong
5ff481ce3c
make sure tmp folders exist for unit tests
2021-10-29 03:04:16 +02:00
Irmen de Jong
f21dcaa6fb
split out the code optimizers into own project submodule
2021-10-29 02:42:10 +02:00
Irmen de Jong
2c940de598
better name
2021-10-29 01:06:01 +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
6cb8b3b5cd
removed unneeded scope param from lookup()
2021-10-29 00:01:28 +02:00
Irmen de Jong
2bf4017f2b
fix nested label lookups in anon scopes
...
fixed non-global qualified names lookup
2021-10-28 23:48:01 +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
3cc7ad7d20
slightly improve error message for unknown module import
2021-10-27 00:38:36 +02:00
Irmen de Jong
d4513364fb
fix compiler crash when file on command line doesn't exist
2021-10-27 00:23:54 +02:00
Irmen de Jong
9684f4e42a
add unit tests for AnonScope refactoring, cleaned up imports
2021-10-27 00:05:46 +02:00
Irmen de Jong
f4186981fd
todo
2021-10-26 23:30:48 +02:00
Irmen de Jong
141689e697
change many uses of .definingScope to just the parent node
2021-10-26 23:25:16 +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
17175df835
more precise error messages checks
2021-10-24 19:14:46 +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
7f8fe75ab2
version 7.1
2021-10-24 14:00:11 +02:00
Irmen de Jong
2815a14bb5
(7.2) can now test for specific error messages, and specify to omit invoking assembler in tests
2021-10-22 01:25:26 +02:00
Irmen de Jong
f4dfa60790
(7.2) tests for pass by ref parameters
2021-10-22 00:41:34 +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
4d5094a517
(7.2) cleanup Petscii converter errorhandling, add unit tests for error scenarios
2021-10-20 23:48:20 +02:00
Irmen de Jong
dd5abae721
move testcase to proper location
2021-10-20 23:08:40 +02:00
Irmen de Jong
8f2fb20934
Merge branch 'v7.1' into v7.2
2021-10-20 22:51:14 +02:00
Irmen de Jong
44143f481a
Merge branch 'v7.1'
2021-10-20 22:50:35 +02:00
Irmen de Jong
440abf4998
fix test to recognise inserted return statements
2021-10-20 22:50:18 +02:00
Irmen de Jong
3c10427e04
Merge branch 'v7.1'
2021-10-20 22:38:23 +02:00
Irmen de Jong
74555a32ed
Merge branch 'v7.1' into v7.2
2021-10-20 22:37:43 +02:00
Irmen de Jong
85956b5828
code generator: add a return (RTS) to empty subroutines. Fixes #67
2021-10-20 22:36:13 +02:00
Irmen de Jong
41e40cad03
optimizer bug: don't remove empty subroutine if it's referenced. Fixes #67
2021-10-20 22:25:10 +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
1a111b706e
Merge branch 'v7.1' into v7.2
2021-10-19 23:59:31 +02:00
Irmen de Jong
f696fce187
Merge branch 'v7.1'
2021-10-19 23:59:07 +02:00
Irmen de Jong
82d3d81bb2
don't want to complicate things by introducing a boolean literal
2021-10-19 23:58:50 +02:00
Irmen de Jong
4668932bac
todo
2021-10-19 23:38:07 +02:00
Irmen de Jong
e6c41eac93
Merge branch 'v7.1' into v7.2
2021-10-19 23:22:38 +02:00
Irmen de Jong
f0cff661df
Merge branch 'v7.1'
2021-10-19 23:21:44 +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
804bb06859
clarified isInRegularRAM() by making it an extension method on AssignTarget
2021-10-19 22:36:05 +02:00
Irmen de Jong
5afa7e53f8
got rid of program arg for isInRegularRAM
2021-10-19 22:30:30 +02:00
Irmen de Jong
7f15b7b716
remove unneeded check for duplicate module names as this is now caught by the logic in Program.addModule itself
2021-10-19 22:12:54 +02:00
Irmen de Jong
552e0c2248
rename mainModule to toplevelModule.
...
failed module no longer retains in the Ast.
improved some tests on that.
2021-10-19 21:49:05 +02:00
Irmen de Jong
e5b9e1f5e7
string object identity hashcode can be negative sometimes, so allow a '-' character.
2021-10-19 21:08:15 +02:00
Irmen de Jong
502bf90007
comments
2021-10-19 01:12:28 +02:00
Irmen de Jong
40bf117497
avoid crash when parser doesn't report an offending token for a parse error
2021-10-19 00:44:33 +02:00
Irmen de Jong
4011dce31b
added a few more tests for the file element of Position
2021-10-19 00:26:02 +02:00
Irmen de Jong
9e881e32f8
version 7.1-beta2
2021-10-16 18:47:16 +02:00
Irmen de Jong
14aad2358f
version 7.2 started
2021-10-16 18:46:08 +02:00
Irmen de Jong
637a8899c5
Merge pull request #65 from irmen/v7.1
...
more V7.1 updates
2021-10-16 17:51:56 +02:00
Irmen de Jong
cf0e395921
got rid of SourceCode.pathString() and the 'need' to strip < and >
2021-10-16 17:15:22 +02:00
Irmen de Jong
6ef438ce50
todo
2021-10-16 15:08:36 +02:00
Irmen de Jong
46e4b977a4
another attempt to fix Windows path issues
2021-10-16 15:02:15 +02:00
Irmen de Jong
9626c5dead
attempt to fix Windows path issue with "library:" prefixes in AsmGen
2021-10-16 14:50:08 +02:00
Irmen de Jong
aea364e43d
paths are now always relative to the current directory. Fixes #64
2021-10-16 14:26:33 +02:00
Irmen de Jong
06defd0cb0
paths are now always relative
2021-10-16 02:43:22 +02:00
Irmen de Jong
0f80897c50
todo
2021-10-15 01:02:32 +02:00
Irmen de Jong
57bb1c2c0d
performance optimized checks against short ranges of values
2021-10-15 00:51:45 +02:00
Irmen de Jong
7b35b414e8
tweak check of DataType against multiple values
2021-10-15 00:39:42 +02:00
Irmen de Jong
761aac7a23
replace inferredType.istype() by infix form
2021-10-15 00:28:23 +02:00
Irmen de Jong
15a02d7664
making InferredType easier to use
2021-10-15 00:18:13 +02:00
Irmen de Jong
16ed68c1ec
Module.name is now derived back from the source's origin string
2021-10-14 23:58:14 +02:00
Irmen de Jong
e63cf660c6
petscii now use Result instead of Either
2021-10-13 23:22:46 +02:00
Irmen de Jong
aaff484306
refactor executeImportDirective
2021-10-13 23:14:27 +02:00
Irmen de Jong
3281d9a215
fix error when sourcepaths is empty
2021-10-13 23:08:51 +02:00
Irmen de Jong
0fcd61e00f
refactor tryGetModuleFromResource
2021-10-13 23:00:22 +02:00
Irmen de Jong
c4523ea470
refactor tryGetModuleFromFile
2021-10-13 22:32:52 +02:00
Irmen de Jong
0447b3e4cc
remove testcase that attempted to check invalid %import syntax.
...
we only allow unquoted names, without filename suffix, in %import.
2021-10-13 22:10:35 +02:00
Irmen de Jong
4d27c2901b
fix weird error printing when doing %import textio.p8
2021-10-13 21:55:51 +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
d790878af6
enabled test
2021-10-13 20:28:42 +02:00
Irmen de Jong
85b244df2f
remove remains of %target
2021-10-13 20:13:57 +02:00
Irmen de Jong
6070afa6b6
cleanup SourceCode class
2021-10-13 19:16:01 +02:00
Irmen de Jong
975594703d
doc
2021-10-13 18:21:48 +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
9b22f05381
7.1 beta
2021-10-13 01:36:20 +02:00
Irmen de Jong
ca3a990f9e
todo
2021-10-13 01:33:29 +02:00
Irmen de Jong
557f4f689f
doc
2021-10-13 00:50:54 +02:00
Irmen de Jong
66574d058a
renamed InferredType.typeOrElse to getOr()
...
this is closer to the convention of most functional return types
2021-10-13 00:21:38 +02:00
Irmen de Jong
1c7c67060d
better result and error handling for importModule()
2021-10-12 23:54:48 +02:00
Irmen de Jong
9827ee97ad
better returnvalue/errorhandling for Petscii encoding
2021-10-12 23:26:45 +02:00
Irmen de Jong
71a9a84211
don't throw basic AstException but SyntaxError instead
2021-10-12 22:30:38 +02:00
Irmen de Jong
367a2a4cee
cleaner return type
2021-10-12 22:21:38 +02:00
Irmen de Jong
4f7465ba44
better return types
2021-10-12 21:59:19 +02:00
Irmen de Jong
f891fc698c
switched to more featureful Result library
2021-10-12 21:35:27 +02:00
Irmen de Jong
36bec62c9a
Merge branch 'master' into v7.1
2021-10-12 20:28:44 +02:00
Irmen de Jong
dd5a2c8315
get rid of automated CI builds for now
...
the tests that actually run the compiler + assember don't work there (for now)
2021-10-12 20:27:25 +02:00
Irmen de Jong
56bff46481
Update gradle.yml
2021-10-12 18:19:07 +02:00
Irmen de Jong
b83a0adb19
Update gradle.yml
2021-10-12 18:17:50 +02:00
Irmen de Jong
92ffefe656
create github CI action to replace travis CI
2021-10-12 18:15:12 +02:00
Irmen de Jong
51b2e41879
libs updated to maven
2021-10-12 03:33:52 +02:00
Irmen de Jong
ef43bc9208
lib update
2021-10-12 02:33:34 +02:00
Irmen de Jong
33733a4001
improve errorhandling
2021-10-12 01:45:32 +02:00
Irmen de Jong
e5a1b37981
simplify
2021-10-12 01:22:17 +02:00
Irmen de Jong
30aa72dc8e
fix unittest and use kotlin.test method to test for exceptions
2021-10-11 21:22:06 +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
c55ac0450f
unified @embedded@ and library: into the latter
2021-10-11 19:22:56 +02:00
Irmen de Jong
2d26b9c994
fixed module parent linking mistakes in unit tests: module's parent should always be the GlobalNamespace
2021-10-11 01:34:55 +02:00
Irmen de Jong
f38fe092ee
optimized imports
2021-10-11 00:22:04 +02:00
Irmen de Jong
7a33eb163b
also use output path when launching emulator, fixes #61
2021-10-11 00:19:48 +02:00
Irmen de Jong
5db0408b9f
syntactic sugar: turned some functions into read only properties
2021-10-11 00:05:51 +02:00
Irmen de Jong
3557d38ce0
cleanup: fix spelling errors and some compiler warnings/suggestions
2021-10-10 23:35:02 +02:00
Irmen de Jong
7de4e9e66a
exclude some more build folders from the IDE
2021-10-10 23:04:31 +02:00
Irmen de Jong
73838ccb8b
ref github issue
2021-10-10 23:00:31 +02:00
Irmen de Jong
0509de76d5
Merge pull request #53 from meisl/testability_steps_1_2_3_again
...
Implement plan for testability
2021-10-10 22:30:29 +02:00
Irmen de Jong
f4b3d19059
fix merge conflict
2021-10-10 22:26:18 +02:00
Irmen de Jong
f37fb82d53
Merge branch 'v7.1' into testability_steps_1_2_3_again
...
# Conflicts:
# compilerAst/src/prog8/ast/antlr/Antlr2Kotlin.kt
# compilerAst/src/prog8/parser/ModuleParsing.kt
# compilerAst/test/TestAntlrParser.kt
# parser/antlr/Prog8ANTLR.g4
2021-10-10 22:20:08 +02:00
Irmen de Jong
dbe98f3fa5
remove unittest of %target directive, which is removed in 7.1
2021-10-09 18:43:18 +02:00
Irmen de Jong
371d4768e6
fix filename case issue
2021-10-09 17:59:40 +02:00
Irmen de Jong
562d8386ec
fix antlr generator settings
2021-10-09 16:57:56 +02:00
Irmen de Jong
1625e4eb85
rename prog8Parser (generated java) to Prog8ANTLRParser
2021-10-09 16:56:39 +02:00
Irmen de Jong
2365a076ac
clean test.p8
2021-10-09 16:33:52 +02:00
Irmen de Jong
9898791771
clean test.p8
2021-10-09 16:32:44 +02:00
Irmen de Jong
a1c658274d
Merge pull request #50 from meisl/v7.1
...
*/+ fix comments & test messages, *add CompilerDevelopment.md*
2021-10-09 16:27:14 +02:00
Irmen de Jong
be9998b48b
Merge branch 'irmen:v7.1' into v7.1
2021-10-09 14:48:19 +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
9c4582e283
optimized codegen of swap of two memread values with index on the same pointer; like swap(@(ptr+i1), @(ptr+i2))
2021-10-08 18:19:16 +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
06b3bf27b5
slightly improve sys.waitvsync() on c64
2021-10-03 21:35:12 +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
4bd4733e52
fix index calc bug in palette.set_color
2021-09-28 23:12:59 +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
5988ba76b5
test example for fixed float ranges
2021-09-12 19:10:50 +02:00
Irmen de Jong
1a06e7a16e
expand range expression in float array decls, fixes issue #55
2021-09-12 19:02:07 +02:00
Irmen de Jong
7241cef7a5
fix char range in float-range test and exclude test.p8 example from tests
2021-09-12 18:59:53 +02:00
Irmen de Jong
5145296486
fix test assertion for float ranges (and re-enable test)
2021-09-12 18:53:12 +02:00
Irmen de Jong
2cbf2d2226
fix regression in imported module order (reversed)
...
this caused an error in determining the main module and correct compilation options
2021-09-12 18:16:24 +02:00
Irmen de Jong
754664aefa
correctly allow codegen to proceed for byte->word register assignment. Fixes crash #58
2021-09-06 23:22:43 +02:00
Irmen de Jong
af99173cd7
range expressions are on integers only
2021-09-06 22:15:27 +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
d9ab2f8b90
upgrade to kotlin 1.5.30
2021-09-03 23:00:00 +02:00
meisl
bd6c60cf8a
* improve test method names in helpers_pathsTests by means of backtick syntax
2021-08-02 15:47:42 +02:00
meisl
f0c150d93b
* improve test method names in TestProg8Parser by means of backtick syntax
2021-08-02 15:36:08 +02:00
meisl
c2986eaf47
* structure TestProg8Parser with @Nested
2021-08-02 14:52:46 +02:00
meisl
ef0c4797bb
Merge remote-tracking branch 'remotes/origin/v7.1' into testability_steps_1_2_3_again
2021-08-02 10:26:48 +02:00
meisl
ac02a99934
* move ModuleImporter to prog8.compiler (package & module), together with its tests
2021-08-02 10:07:19 +02:00
meisl
fb67d1155f
* structure TestCompilerOnImportsAndIncludes, add (@Disabled for now) test re %import with string arg
2021-08-02 08:57:09 +02:00
meisl
eb46852bb9
* restrict access to Program.modules, add tests
2021-08-02 08:15:20 +02:00
meisl
007d8d2811
* ModuleImporter tests: refactor, more precise assertions about the program's modules
2021-08-01 17:27:41 +02:00
meisl
ebe04fc114
* @Disable ModuleImporter test re importing a faulty module twice - no easy fix for this atm
2021-08-01 16:26:27 +02:00
meisl
d7dd7f70c0
* rename file ModuleParsing.kt to ModuleImporter.kt (nothing else, still in compilerAst)
2021-08-01 15:38:21 +02:00
meisl
f2cb89a128
- ModuleImporter: deduplicate code
2021-08-01 15:37:57 +02:00
meisl
b8fade23de
* (first quick) fix: ModuleImporter should look in given "libdirs" (or better "srcdirs"?) for module file
2021-08-01 15:17:47 +02:00
meisl
3b97a17648
* *little bit* of cleanup in ModuleImporter - *only refactoring*
2021-08-01 11:18:45 +02:00
meisl
0d06e3ff22
*/+ refactor tests of ModuleImporter, add some tests related to libdirs issue
2021-08-01 10:48:28 +02:00
meisl
c914f7bbcf
+ TestCompilerOptionLibdirs.kt: libdirs option doesn't seem to work
2021-08-01 10:16:37 +02:00
meisl
1b451180c1
* test helpers assumeXyz (helpers/paths.kt) return the resulting path (unless they fail, of course); test directories are checked automatically at init, so no sanityCheckDirectories is needed anymore
2021-07-31 14:44:02 +02:00
meisl
ed061b362b
* #53 step6: move IStringEncoding to prog8.compiler (package as well as module)
2021-07-30 19:25:18 +02:00
meisl
e1026584c8
* split up test helpers into separate files, move mapCombinations(..) down to compilerAst/test/helpers since they're generic and don't depend on compiler
2021-07-30 18:37:12 +02:00
meisl
4c615e4fac
* solve problem re shared test helpers: a) don't use the same file name (results in same JVM class name) & b) tell gradle about it (put them in extra dir(s) test/helpers/ and add this to test source set)
2021-07-30 17:19:44 +02:00
meisl
7c9d48833b
Merge branch 'irmen:v7.1' into v7.1
2021-07-22 12:14:34 +02:00
Irmen de Jong
b60b195aec
update junit and hamcrest unittest lib versions
2021-07-20 22:42:27 +02:00
meisl
db76c8d7f4
-/* remove IStringEncoding as param in compilerAst, and all other uses that were only because of that.
...
For good measure we also turn on *all* compiler tests with examples (they do take some time).
Note that the total *mentions* of IStringEncoding in the entire project went down from ~50 to 6, only 3 of which are *actual uses* (the others are 2 imports and 1 supertype ref in ICompilationTarget : IStringEncoding)!
2021-07-17 22:08:17 +02:00
meisl
de92740e87
* simple refactoring: move IStringEncoding, IMemSizer and IBuiltinFunctions to files of their own, also ext method Number.toHex to file compilerAst/src/prog8/ast/Extensions.kt. Moved the other interfaces that are indeed closely related to Node to the top of AstToplevel.kt. *This is really ONLY moving text around*, so it's easier to find things. Nothing else.
2021-07-17 21:29:01 +02:00
meisl
522bf91c30
* refactor RangeExpr, step 2: make toConstantIntegerRange and size *extension methods* and move them to compiler/astprocessing/AstExtensions.kt (along with the simple helper makeRange). They are in fact *only* used from the compiler module - strong indication that they actually belong there.
2021-07-17 21:13:34 +02:00
meisl
48d3abc1fe
* refactor RangeExpr, step 1: remove IStringEncoding as ctor arg and instead put it as arg to the two methods that actually depend on it: toConstantIntegerRange and size (as *it* calls the former)
2021-07-17 20:45:17 +02:00
meisl
3f6f25e06f
* @Disable tests re unsolved #55 , "float[] initializer with range and no explicit array size"
2021-07-17 17:12:16 +02:00
meisl
34ba07ee3b
+ expose #55 : float[] initializer as range where no array size is stated
2021-07-17 16:30:16 +02:00
meisl
ac37319d20
Merge branch 'bug_asmbinary' into testability_steps_1_2_3_again
2021-07-17 15:08:32 +02:00
meisl
b2c6274f74
* fix #54 / step 3: avoid some (= not all) complaints re the .binary filename 64tass still had/has.
...
Actually, I don't quite understand why it still says "not the real name of the file". The 64tass docs say:
> -Wno-portable
> Don't warn about source portability problems.
> These cross platform development annoyances are checked for:
> * Case insensitive use of file names or use of short names.
> * Use of backslashes for path separation instead of forward slashes.
> * Use of reserved characters in file names.
> * Absolute paths
2021-07-17 13:03:05 +02:00
meisl
402884b5ce
* fix #54 / step 2: the path stated with assembler directive .binary must be *relative to the .asm file*, not the working directory
2021-07-17 13:02:48 +02:00
meisl
23c99002c0
* fix #54 / step 1: relativize threw IllegalArgumentException if called on non-absolute path with absolute path as argument ("different type of path")
2021-07-17 13:02:35 +02:00
meisl
ee115b3337
+ expose #54 , %asmbinary when outputDir != workingDir; also: refactor compiler tests on examples and add test helpers
2021-07-17 13:02:20 +02:00
meisl
82f5a141ed
* reintroduce the conversion of CharLiteral to UBYTE literals, but now *during AST preprocessing*, not in the parser
2021-07-11 22:03:32 +02:00
meisl
0567168ea9
+ add AST node CharLiteral, *without* turning them into ubyte s. This breaks tests, particularly 3 in TestCompilerOnCharLit. I'm comitting this separately since the failure modes might be of interest (compiler says "internal error").
2021-07-11 21:32:18 +02:00
meisl
c80a15846d
* some more housekeeping re tests: gradle doesn't like .* imports for annotations, added @Disabled comments, made warnings go away
2021-07-11 19:04:53 +02:00
meisl
5e194536a8
* refactor compiler tests, again prog8test.helpers (TODO: remove duplication)
2021-07-11 18:18:27 +02:00
meisl
43c5ab8ecc
* refactor compilerAst tests, intro prog8test.helpers, @Disable the 3 tests that will pass after subsequent steps of "the plan"
2021-07-11 17:32:29 +02:00
meisl
cd295228ef
+ TestCompilerOnImportsAndIncludes.kt: 2 tests, both passing (but see FIXME in asmIncludeFromSameFolder.p8)
2021-07-11 15:33:44 +02:00
meisl
6c42221620
* fix AstToSourceCode: missing semicolon in header and footer, missing "@" for strings with altEncoding
2021-07-11 14:28:09 +02:00
meisl
0d73a7cd07
+ add TestAstToSourceCode.kt (all 8 new tests failing due to missing semicolon)
2021-07-11 14:11:32 +02:00
meisl
39d5b7edb0
+ test examples for both platforms, cx16 and c64; test two more: tehtriz and textelite (the largest ones, 20KB / 36KB)
2021-07-10 21:41:51 +02:00
meisl
6fa50a699f
+ add two tests for parseModule with empty source text (from File and from String)
2021-07-10 21:03:40 +02:00
meisl
ddaef3e5d5
+ add tests for SourceCode.fromResources; refactor tests
2021-07-10 20:55:23 +02:00
meisl
c3e9d4a9f8
* make resources available in compilerAst/test s; *you may have to re-import the gradle project into IDEA*
...
Note: these resources are NOT going into the production .jar
2021-07-10 20:50:07 +02:00
meisl
7530fb67c8
+ add tests for inner nodes' positions; refactor tests
2021-07-10 10:10:41 +02:00
meisl
19bb56df47
* no more scattering magic "@embedded@" all over the place: add SourceCode.isFromResources, *change Module.source from type Path to type SourceCode*
2021-07-09 17:32:33 +02:00
meisl
b0073ac933
* used "@embedded@" convention instead of "<res:...>", put it into SourceCode
2021-07-09 16:28:04 +02:00
meisl
137a89da15
* fix (hack) .name, .source and .position of Modules from the parser (via temp. subclass ParsedModule)
...
The temporary subclass ParsedModule : Module is introduced to concentrate all the workaround stuff in one place *while still not changing any public signature* such as of the Module ctor.
The convention used to indicate stuff from resources is still "<res:...>" not "@embedded@"- *note that this is caught by 3 tests in compiler*
2021-07-09 15:52:03 +02:00
meisl
44da7a302f
+ temporarily hack together a module name inside Prog8Parser.parseModule, to make the current all-too-simple import resolution work
2021-07-09 14:01:07 +02:00
meisl
4096aae8d4
* SourceCode.toString() now states both, java class and .origin
2021-07-09 13:55:56 +02:00
meisl
d3e026d82a
+/* non-unique module names: provide more info, add TODO
2021-07-09 13:44:44 +02:00
meisl
fa5ecd6495
* refactor ModuleImporter: throw the proper NoSuchFileException if import isn't found, return SourceCode? from both, tryGetModuleFromResource and tryGetModuleFromFile
2021-07-09 13:44:24 +02:00
meisl
af209ad50e
+ intro SourceCode, tying together source code text with its *origin*; Prog8Parser now only accepts this
2021-07-09 13:24:05 +02:00
meisl
7b89228fa7
+ add TODOs re ICompilationTarget
2021-07-09 13:14:02 +02:00
meisl
d31a88206c
* importModule(Path): make tests pass (TODO: importLibraryModule with non-existent path)
2021-07-09 13:13:42 +02:00
meisl
cd4ed8765b
+ add tests for importModule(Path) with invalid path (non-existent or directory) - *failing*
2021-07-09 13:10:42 +02:00
meisl
b6f780d70d
* ModuleImporter: make tests pass
2021-07-09 13:02:30 +02:00
meisl
b071a58ca7
+ add tests - 4 failing in TestModuleImporter
2021-07-09 12:51:07 +02:00
meisl
ce554f7718
* rename test file
2021-07-09 12:49:55 +02:00
meisl
99b1cec2e1
*/+ move ParsingFailedError to Prog8Parser.kt, intro ParseError (soon to replace ParsingFailedError), start testing proper error location info
2021-07-09 12:49:30 +02:00
meisl
46911a8905
+ temporarily add PetsciiEncoding (and Petscii.kt copied from compiler) to parser; .linkParents for child nodes of Module
2021-07-09 12:31:46 +02:00
meisl
4eb61529f6
*/+ rename prog8Parser (generated java) to Prog8ANTLRParser; add Kotlin class Prog8Parser to interface with it
2021-07-09 12:24:17 +02:00
meisl
81abf29bec
Merge branch 'irmen:v7.1' into v7.1
2021-07-09 11:03:31 +02:00
Irmen de Jong
85897ef8cd
launch box16 emulator with the vice monlist file that contains symbols+breakpoints
2021-07-06 22:27:47 +02:00
Irmen de Jong
b824c0b125
kotlin code style setting
2021-07-05 23:41:40 +02:00
Irmen de Jong
6367c6d116
add support for second alternative emulator (box16 in case of cx16 target)
2021-07-05 22:47:51 +02:00
Irmen de Jong
a7736d88a9
got rid of Module.isLibraryModule variable, is now function that derives it from source path
2021-07-04 15:44:25 +02:00
Irmen de Jong
049dbf5a78
improve compiler error when defining duplicate block names
2021-07-04 15:14:39 +02:00
meisl
4ac92caeb5
Update CompilerDevelopment.md
2021-07-03 15:11:34 +02:00
meisl
7af3da2a97
Merge branch 'irmen:v7.1' into v7.1
2021-07-03 15:08:29 +02:00
Irmen de Jong
95a62fcdd1
tidy up todo doc
2021-07-02 21:47:27 +02:00
Irmen de Jong
7872d20554
rename spelling mistake
2021-07-02 20:58:17 +02:00
meisl
a598eb7e98
+ add mention of ParseError : ParsingFailedError - particularly for testability this is something that needs to be done
2021-07-02 18:42:38 +02:00
meisl
c786acc39b
+ CompilerDevelopment.md, outlining what to do to improve testability (atm only for the parsing stage)
2021-07-02 15:41:38 +02:00
meisl
07d8052a57
* fix comments: no more problem with exitProcess
2021-07-02 13:28:19 +02:00
meisl
db9edb477e
* less confusing assertion messages (seemingly contradictory in case of failure)
2021-07-02 12:38:24 +02:00
Irmen de Jong
9bd3a6758a
improve testability: use error returnvalues instead of using exitProcess()
2021-07-02 00:11:21 +02:00
Irmen de Jong
2cb1560bbd
Merge pull request #49 from meisl/master
...
A few automatic tests with examples, *of the whole process*...
2021-06-30 23:30:10 +02:00
meisl
006059438f
+ same warning on the other "TestCompilerXyz" file
2021-06-28 18:49:01 +02:00
meisl
84ea3b9788
+ compiler/test/TestCompilerOnExamples.kt: *not actually unit tests - just a kludge!* (but better than nothing)
2021-06-28 18:42:05 +02:00
meisl
b667abde10
+ compiler/test/TestCompilerOnCharLit.kt
2021-06-28 18:24:35 +02:00
Irmen de Jong
aa10997171
upgrade to kotlin 1.5.20
2021-06-25 19:38:44 +02:00
Irmen de Jong
7880ac1909
wording and version
2021-06-24 21:34:11 +02:00
Irmen de Jong
f53848b4b9
wording and version
2021-06-24 21:25:35 +02:00
Irmen de Jong
82f2f38680
Merge pull request #48 from meisl/issue40(EOF,EOL)
...
* fix 47, add tests
2021-06-19 01:55:44 +02:00
meisl
dcc2549574
* fix 47, add tests
2021-06-18 21:55:03 +02:00
Irmen de Jong
cfe4753913
Merge pull request #45 from meisl/issue40(EOF,EOL)
...
Issue #40 , EOF/EOL
2021-06-18 20:22:59 +02:00
meisl
fcb1a7e4d4
* #40 : fix grammar rules module and block s.t. we don't need a "synthesized double EOF" (behavior remains exactly the same)
2021-06-14 22:17:30 +02:00
meisl
ce76a7dfa5
* #40 : fix grammar wrt line endings - tests pass
2021-06-14 22:04:22 +02:00
meisl
7c1de81861
* #40 : fix mixed line endings test, now intentionally failing (!): also test sole \r AND do not allow any recovery, neither from parser not lexer.
2021-06-14 22:02:26 +02:00
meisl
eddad20acc
Merge remote-tracking branch 'remotes/origin/master' into issue40(EOF,EOL)
2021-06-13 22:56:24 +02:00
meisl
7daad57862
+ #40 : test for mixed (Unix/Win/Mac) line endings - *TODO: test doesn't actually fail with old grammar, but a built jar does - WHY?!*
2021-06-13 22:49:54 +02:00
meisl
1468049fe9
+ #40 : test that (module-level) blocks *before the last* still must have a newline after their closing }
2021-06-13 22:43:27 +02:00
meisl
3b91e59a79
* #40 : refactor tests
2021-06-13 20:28:01 +02:00
meisl
3496a30528
* #40 : put back in fix for EOL-after-block - tests pass
2021-06-13 20:10:35 +02:00
meisl
32bad5df15
+/* #40 : add tests; temporarily undo fix for EOL-after-block so we can see that tests actually fail
2021-06-13 20:08:50 +02:00
Irmen de Jong
3f58eca1be
updated gradle scripts (fixed warnings), updated some library dependencies
2021-06-13 18:10:07 +02:00
meisl
2350843d1d
Merge remote-tracking branch 'remotes/origin/master' into issue40(EOF,EOL)
2021-06-13 16:06:50 +02:00
Irmen de Jong
a2588a178c
added some simple unit tests to the ast parser
2021-06-13 14:59:57 +02:00
meisl
e5292696c4
- #40 grammar: remove obsolete note about line endings
2021-06-13 14:38:25 +02:00
meisl
34b2a65ccb
Merge branch 'irmen:master' into issue40(EOF,EOL)
2021-06-12 20:29:37 +02:00
meisl
3aa3659bc7
* #40 grammar: handle different EOLs (Win, Unix, Mac) purely in grammar
2021-06-12 20:24:15 +02:00
meisl
b8117394c0
* #40 grammar: don't require EOL after blocks, so .p8 files need not end with that
2021-06-12 17:52:44 +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
f2844bdf1a
fix crash when using labels in pointerexpression lab+index
2021-06-10 00:44:12 +02:00
Irmen de Jong
c5bfef4264
slight improvement on scope doc, added doc example for %asminclude/%asmbinary
2021-06-09 23:46:07 +02:00
Irmen de Jong
73863acc12
version bump
2021-06-06 10:50:05 +02:00
Irmen de Jong
19e99204b9
fix asm symbol name scoping bug and add unit tests for this
2021-06-04 22:42:28 +02:00
Irmen de Jong
13f5b94c3e
Clarified instructions of how to obtain the compiler. Fixed sphinx css config issue.
2021-06-03 21:21:44 +02:00
Irmen de Jong
3a2498401d
working on unit tests for symbol scope bug
2021-06-03 21:21:38 +02:00
Irmen de Jong
53b20ba625
name
2021-06-01 22:22:58 +02:00
Irmen de Jong
e7f6f0950f
identified asm symbol name scoping bugs
2021-06-01 22:21:50 +02:00
Irmen de Jong
9fbe1b38a5
fix old block syntax in ast print routine
2021-06-01 22:08:23 +02:00
Irmen de Jong
078485134d
split up unittests files
2021-06-01 22:07:39 +02:00
Irmen de Jong
67b1766e32
don't use ./ prefix for %asmbinary paths
2021-06-01 19:30:53 +02:00
Irmen de Jong
d4b69ac79c
improved repeat counter vars allocation (re-use var if possible)
2021-05-30 15:30:34 +02:00
Irmen de Jong
e61a2d7083
slightly optimized repeat loop asmgen
2021-05-30 13:10:05 +02:00
Irmen de Jong
c03f6604af
added free words counting method to zeropage
2021-05-30 00:55:11 +02:00
Irmen de Jong
572bb38ddb
update to kotlin 1.5.10
2021-05-29 15:25:17 +02:00
Irmen de Jong
42c5c0cb9f
start of cx16 colorbars example
2021-05-26 22:13:23 +02:00
Irmen de Jong
e145d2255e
added palette.set_all_black() and set_all_white()
2021-05-26 21:33:18 +02:00
Irmen de Jong
442fa07dd4
relax name conflict rule regarding block names vs subroutine params
2021-05-26 21:32:54 +02:00
Irmen de Jong
31ae9e1243
refactor repeat loop counter var creation into single routine
2021-05-22 13:01:51 +02:00
Irmen de Jong
d7f83f8df2
version bump
2021-05-20 23:38:41 +02:00
Irmen de Jong
29e2d4e0c8
give error when passing invalid command line option
2021-05-20 23:34:20 +02:00
Irmen de Jong
2732d2c844
exclude d64 files
2021-05-19 18:49:38 +02:00
Irmen de Jong
c4a037b277
added '@shared' to syntax files
2021-05-19 18:48:18 +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
ca1a8cd617
improve doc about string (im)mutability
2021-05-19 00:15:17 +02:00
Irmen de Jong
ba96a637be
remove strdedup compiler argument again
...
(string deduplication is the default again but only for known-const strings, i.e. string literals)
2021-05-18 23:52:43 +02:00
Irmen de Jong
c2cac772e3
validate string interning
2021-05-18 23:37:52 +02:00
Irmen de Jong
6b7216f4ec
todo
2021-05-17 19:00:20 +02:00
Irmen de Jong
e4fb5946dd
optimize cx16 sys.wait and sys.waitvsync to use WAI instruction
2021-05-17 18:44:42 +02:00
Irmen de Jong
ca61248861
printing 2-letter strings is now only optimized into direct CHROUT if it's a const string literal
2021-05-16 15:00:40 +02:00
Irmen de Jong
68d7b4649e
label and directive location docs
2021-05-16 12:32:08 +02:00
Irmen de Jong
0416aacbbd
fix %asminclude by removing scopelabel argument and improving docs to remove false promise about labels
2021-05-16 00:14:57 +02:00
Irmen de Jong
bc731e6f8e
fix compiler crash when taking address of label
2021-05-16 00:07:48 +02:00
Irmen de Jong
ae5d7705bb
allow correct parsing of source files that don't end in a EOL character. Fixes #40
2021-05-14 17:14:44 +02:00
Irmen de Jong
b9bd541532
restored optimization of printing short strings into just CHROUT
...
but added comment about known-constness still to be resolved
2021-05-13 01:46:43 +02:00
Irmen de Jong
83639c2535
code style
2021-05-13 01:00:19 +02:00
Irmen de Jong
25d80f4df1
added compiler option to choose string literal deduplication yes/no -- default changed to NO
2021-05-13 00:35:22 +02:00
Irmen de Jong
74f918d911
fix crashes for string encoding errors: give normal compiler error instead
2021-05-11 21:33:11 +02:00
Irmen de Jong
a20efa56eb
print unmappable character in escaped form in errormessage
2021-05-11 18:09:09 +02:00
Irmen de Jong
f4d83075be
Merge pull request #35 from meisl/master
...
Notepad++ syntax-file: add notes re update / alt installation
2021-05-07 21:44:58 +02:00
Irmen de Jong
254592c383
Merge pull request #36 from meisl/pull36
...
docs: fix typo
2021-05-07 20:04:00 +02:00
meisl
ee23ac0537
* docs: fix typo
2021-05-07 15:28:22 +02:00
meisl
a48cf0bb24
+ #23 Notepad++ syntax-file: add notes re update / alt installation
2021-05-07 15:12:01 +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
09a1de69e7
Merge pull request #33 from meisl/master
...
+ docs: add missing word
2021-05-06 23:45:44 +02:00
meisl
63d67bc6cb
+ docs: add missing word
2021-05-06 15:49:58 +02:00
Irmen de Jong
7099245204
Notepad++ syntax file contributor added
2021-05-05 00:39:19 +02:00
Irmen de Jong
4d097d2139
Merge pull request #32 from meisl/master
...
syntax file for Notepad++
thanks for your contribution!!
2021-05-05 00:33:06 +02:00
meisl
6485bf9ad9
+/- #23 add test file and screenshot; fix: remove if/else as "Folding in code 2", just keywords
2021-05-04 21:55:12 +02:00
meisl
b7c5b1bfc7
* #23 rename to .md for nicer link to homepage
2021-05-04 21:34:04 +02:00
meisl
2b7546e827
+ #23 syntax file for Notepad++
2021-05-04 21:30:53 +02:00
Irmen de Jong
3549ccf4b3
software license
2021-05-02 15:31:14 +02:00
Irmen de Jong
e2f5752d9a
add f_open_w, f_write, f_close_w to diskio to be able to save parts of memory sequentially
2021-05-01 19:13:56 +02:00
Irmen de Jong
1a59019fc8
add generic error in diskio.status() if drive status can't be read
2021-05-01 15:39:39 +02:00
Irmen de Jong
7bac7bdc3e
more precise
2021-05-01 13:39:02 +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
d5214e2505
fix import paths
2021-04-30 00:16:36 +02:00
Irmen de Jong
d906fcea0e
refactor some type checks
2021-04-30 00:09:15 +02:00
Irmen de Jong
29c8e8b740
doc
2021-04-29 19:57:14 +02:00
Irmen de Jong
71fec4c555
added a few more simple special codegen segements for the logic operators on a memmory-read
2021-04-29 19:38:42 +02:00
Irmen de Jong
5ee36c897d
todo
2021-04-29 00:57:32 +02:00
Irmen de Jong
4aba0c7405
unused variables are removed more aggressively (no longer checking asm blocks for their names)
2021-04-29 00:48:16 +02:00
Irmen de Jong
ed7479c854
version 7 due to removal of structs and v39 cx16 support changes
2021-04-29 00:15:54 +02:00
Irmen de Jong
8d3d5f726a
removed Datatype.STRUCT
2021-04-29 00:13:17 +02:00
Irmen de Jong
a9a7068818
removed support for structs. It was too much hassle and complexity and subtle bugs.
2021-04-29 00:01:20 +02:00
Irmen de Jong
1bde7c7718
ver
2021-04-28 20:05:56 +02:00
Irmen de Jong
17068130bb
removed PROG8_LIBDIR env variables and replaced with -libdirs command line option
2021-04-28 20:04:23 +02:00
Irmen de Jong
81a91d62cb
improved horizontal_line in highres 4c
2021-04-28 02:55:49 +02:00
Irmen de Jong
2575263438
optimized gfx2.plot() for hires-4c
2021-04-28 02:49:25 +02:00
Irmen de Jong
7f0e25cb50
optimized gfx2.plot() for hires-monochrome
2021-04-28 02:32:11 +02:00
Irmen de Jong
a1e4e9c50f
optimized gfx2.plot() for lores-256c
2021-04-28 02:22:21 +02:00
Irmen de Jong
98eff2701b
optimized gfx2.plot() for lores-monochrome
2021-04-28 02:15:07 +02:00
Irmen de Jong
8b84f87217
removed fastrnd8() because it was hilariously bad, just use rnd()
2021-04-28 01:53:12 +02:00
Irmen de Jong
306a1b7bc2
optimized gfx2.vertical_line for hires monochrome mode
2021-04-28 01:19:10 +02:00
Irmen de Jong
481214c46e
optimized gfx2.vertical_line for lores monochrome mode
2021-04-28 01:02:29 +02:00
Irmen de Jong
a5961cbeab
optimized gfx2.vertical_line for highres 4c mode
2021-04-28 00:29:21 +02:00
Irmen de Jong
3bf335e0a0
todo
2021-04-27 23:13:46 +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
319ac3a641
preparing optimizations for if statements
2021-04-12 03:34:58 +02:00
Irmen de Jong
0a03c46351
preparing optimization plan for if statements
2021-04-12 02:37:15 +02:00
Irmen de Jong
ae1b62e147
optimized integer comparison expressions some more
2021-04-12 01:23:17 +02:00
Irmen de Jong
8d567f6b06
added cx16.joystick_get2() for convenience api
2021-04-12 01:07:46 +02:00
Irmen de Jong
b1ef09675b
fix compiler crash for some struct/array initialization assignment literals containing not just numbers
2021-04-10 00:28:32 +02:00
Irmen de Jong
2b7b925090
codegen now uses correct machine target's string encoder/decoder. Encoding more robust by checking upper case mapping if lowercase mapping fails.
2021-04-09 23:33:32 +02:00
Irmen de Jong
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
d116eb7655
paranoid, be sure to not kill carry
2021-04-06 23:55:20 +02:00
Irmen de Jong
bc726c6334
optimized slow evaluation of byte-to-wordarray assignment
2021-04-06 22:50:16 +02:00
Irmen de Jong
123473dfc8
cleanup
2021-04-06 00:16:29 +02:00
Irmen de Jong
d9eccd4fba
set correct rom banks when using floats
2021-04-05 23:21:07 +02:00
Irmen de Jong
5b890847e5
make sure BASIC rom is banked in again when program exits
2021-04-05 23:12:10 +02:00
Irmen de Jong
64c85b9617
fix cx16 rom v39 float changes
2021-04-05 22:54:40 +02:00
Irmen de Jong
3e3b0bcd8b
callgraph improved unused node checking
2021-04-05 20:45:18 +02:00
Irmen de Jong
4c1eb1b12a
callgraph
2021-04-05 20:32:30 +02:00
Irmen de Jong
530d03d284
callgraph
2021-04-05 18:50:46 +02:00
Irmen de Jong
619fa9b65e
callgraph
2021-04-05 18:03:36 +02:00
Irmen de Jong
0032235933
tweak to fix for windows line ending (\r\n) parse errors
2021-04-05 01:49:52 +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
2f62271453
callgraph
2021-04-05 00:55:27 +02:00
Irmen de Jong
75d5117a2d
fix struct flattening parent node mismatch
2021-04-05 00:30:42 +02:00
Irmen de Jong
b4700af2f5
fix windows line ending (\r\n) parse errors
2021-04-05 00:12:04 +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
38ccbac97c
stop after a couple of parse errors (it's not useful to continue for long if there are parse errors)
2021-04-04 12:29:56 +02:00
Irmen de Jong
6b4896b8f5
doc
2021-04-02 21:28:23 +02:00
Irmen de Jong
d582d1cc42
fix inlining subroutines multiple times
2021-04-02 21:23:40 +02:00
Irmen de Jong
9e2b8a2aa9
fix ast node duplication/reference bug in certain optimizers
2021-04-02 19:01:46 +02:00
Irmen de Jong
6fdc733941
inlining subroutines that contain variable declarations is now possible (gives a warning though)
2021-04-02 18:30:32 +02:00
Irmen de Jong
422b390c48
fix ast node duplication/reference bug in certain optimizers
2021-04-02 16:56:52 +02:00
Irmen de Jong
67a9d1285c
some words about how the X register can't or can be used
2021-04-02 00:19:46 +02:00
Irmen de Jong
8e26e38ecc
fix RTS-issue with inlined return statement
2021-04-01 23:30:19 +02:00
Irmen de Jong
02e12d8575
improvements for inlined subroutines: fix identifier scoping
2021-04-01 23:16:04 +02:00
Irmen de Jong
fe2954ce08
todo
2021-04-01 22:10:04 +02:00
Irmen de Jong
1fe4439395
fixed wrong return value when calling other subroutines in the return expression
2021-04-01 21:56:24 +02:00
Irmen de Jong
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
129e17b33a
added sys.waitvsync() + missing documentation
2021-04-01 18:31:33 +02:00
Irmen de Jong
bf2d8c3f4b
update kotlin plugin to 1.4.32
2021-03-31 20:52:05 +02:00
Irmen de Jong
b29f04ce01
fix unittest
2021-03-31 20:49:35 +02:00
Irmen de Jong
d185ebad48
Merge pull request #27 from Elektron72/cbm-package
...
Move code used for all Commodore systems to new package
2021-03-31 20:34:58 +02:00
Elektron72
605df7c91c
Move code used for all CBM systems to new package
...
AssemblyProgram.kt and Petscii.kt are not only used for the Commodore
64; they are also used for the Commander X16, and will likely be used
for any future Commodore systems added to Prog8. Therefore, they should
be moved to a new package containing functionality shared between these
systems.
2021-03-29 17:21:48 -04:00
Irmen de Jong
ec60cad8bb
commander-x16 prototype board #2 (rom v39+) address changes
2021-03-27 22:20:46 +01:00
Irmen de Jong
6aa0f5a392
small optimization
2021-03-27 15:45:30 +01:00
Irmen de Jong
4cae2c56ec
implemented last remaining codegen for word-byte division and remainders.
2021-03-25 22:03:36 +01:00
Irmen de Jong
d840975054
remove unreached error checks
2021-03-25 21:47:05 +01:00
Irmen de Jong
1b14da6c03
compiler warning instead of crash when attempting to assign invalid array value to other array
2021-03-24 22:01:22 +01:00
Irmen de Jong
292640b17a
asmgen: string values cannot be typecasted
2021-03-24 21:49:33 +01:00
Irmen de Jong
112a7b09f2
added codegen for expression that needs the status-flag register result as a value on the stack
2021-03-24 21:42:27 +01:00
Irmen de Jong
863ec9ce8a
Merge pull request #26 from Elektron72/vim-syntax
...
Add support for built-in functions to Vim syntax file (and other fixes)
2021-03-24 20:50:53 +01:00
Elektron72
2eb346a205
Add support for built-ins to Vim syntax file
...
This commit adds support for highlighting built-in functions and
variables to the Vim syntax file.
2021-03-23 19:53:20 -04:00
Elektron72
8092355acb
Add syntax sync to Vim syntax file
...
This will make the highlighting slightly slower, but will fix issues
with assembly not being highlighted properly.
2021-03-23 19:41:34 -04:00
Irmen de Jong
e7ef2ed31b
todo
2021-03-23 23:48:53 +01:00
Irmen de Jong
af4de6d2fc
replacing complex array indexer expressions moved to BeforeAsmGeneration + use cx16 virtualregister instead of adding temp variables for this
2021-03-23 23:44:14 +01:00
Elektron72
69f73dd779
Add void operator to Vim syntax file
2021-03-23 18:12:52 -04:00
Irmen de Jong
9706b46012
credits
2021-03-23 02:50:16 +01:00
Irmen de Jong
6d75dd3bb8
Merge pull request #25 from Elektron72/vim-syntax
...
Add Vim syntax highlighting file
2021-03-23 01:29:57 +01:00
Irmen de Jong
bd295ffc99
array indexer complexity is now dealt with in the asm-generator only
2021-03-22 19:40:57 +01:00
Elektron72
07ce3e3c9d
Add Vim syntax highlighting file
...
The readme file in syntax-files/Vim/ was also modified to give simple
installation instructions.
2021-03-22 12:13:20 -04:00
Irmen de Jong
cbc3e37a89
stuff
2021-03-22 02:29:59 +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
0991131fa8
don't stript unused asmsub definitions
2021-03-21 19:55:21 +01:00
Irmen de Jong
2e928bd3c2
fix compiler crash for certain str argument to asm functions
2021-03-21 18:39:39 +01:00
Irmen de Jong
ca868ae19e
added cx16.vload() (like the VLOAD basic instruction)
2021-03-20 02:39:53 +01:00
Irmen de Jong
3e286dd14c
move test
2021-03-18 19:34:54 +01:00
Irmen de Jong
11247d52b1
fix bugs in word <= and >= comparisons
2021-03-18 19:20:48 +01:00
Irmen de Jong
1dbc902513
fix bugs in uword <= and >= comparisons
2021-03-18 18:41:41 +01:00
Irmen de Jong
330e691b78
wip
2021-03-18 02:43:08 +01:00
Irmen de Jong
6780d4f562
fix bug in uword > comparison
2021-03-18 02:21:21 +01:00
Irmen de Jong
b30b8b7368
fix bug in float < and > comparisons
2021-03-18 01:41:54 +01:00
Irmen de Jong
3df182b8c3
created extensive comparison test suite
2021-03-18 00:50:13 +01:00
Irmen de Jong
7f21d89fea
moved test programs to test folder in compiler module
2021-03-17 20:15:16 +01:00
Irmen de Jong
2b267b4ba1
IDE syntax
2021-03-17 19:36:37 +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
6381d2b6ac
improve word '<', word (u)word '<=' , uword '>=' codegen
2021-03-16 18:15:47 +01:00
Irmen de Jong
d2ab5f230d
example TODOs
2021-03-16 01:09:25 +01:00
Irmen de Jong
824b41d457
improve word '>' and '>=' codegen
2021-03-16 00:48:03 +01:00
Irmen de Jong
b5523c7077
don't optimize with inlining too aggressively (code bloat)
2021-03-16 00:33:15 +01:00
Irmen de Jong
eb3594b18c
revert to just using comparison expressions in graphics code (we're optimizing these now!)
2021-03-16 00:11:55 +01:00
Irmen de Jong
852d85d010
improve uword '<' and '>' codegen
2021-03-16 00:03:51 +01:00
Irmen de Jong
5e0aef04fe
improve (u)byte '>=' codegen
2021-03-15 23:20:16 +01:00
Irmen de Jong
a00c693f93
improve (u)byte '<=' codegen
2021-03-15 23:17:04 +01:00
Irmen de Jong
c943da1448
improve ubyte '<' and '>' codegen
2021-03-15 23:12:52 +01:00
Irmen de Jong
b630fae580
refactor byte '==', '!=', '<' and '>' codegen 2
2021-03-15 23:08:30 +01:00
Irmen de Jong
38e40084f1
refactor byte '==', '!=', '<' and '>' codegen
2021-03-15 22:47:18 +01:00
Irmen de Jong
bf23ad78e6
improve byte '<' and '>' codegen
2021-03-15 22:26:00 +01:00
Irmen de Jong
ded1d19737
improve '==' and '!=' codegen
2021-03-15 19:29:32 +01:00
Irmen de Jong
496a3b0d2c
todo
2021-03-15 18:56:25 +01:00
Irmen de Jong
6922333755
add a cmp(x,y) function that returns no value but only sets the status bits based off the comparison (can be used with a conditional jump afterwards)
2021-03-13 15:11:22 +01:00
Irmen de Jong
a00c39e9cf
compiler error instead of crash when using functioncall without returnvalue
2021-03-12 19:31:04 +01:00
Irmen de Jong
1c1da8e38e
additional optimization to the bresenham line routines
2021-03-10 18:49:40 +01:00
Irmen de Jong
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
2431ed811a
don't remove typecasts in asmsub argument lists
2021-03-09 21:29:48 +01:00
Irmen de Jong
6bd205c02a
fix c64 bresenham line inaccuracy
2021-03-09 21:07:55 +01:00
Irmen de Jong
62ec77e148
ver
2021-03-08 23:35:52 +01:00
Irmen de Jong
9120e1de88
fix ubyte/uword to float conversion crashes on Commander X16
2021-03-08 23:21:52 +01:00
Irmen de Jong
60e169bd87
added optimized integer square (x*x) routine
2021-03-08 23:08:47 +01:00
Irmen de Jong
e4bca5fe47
version
2021-03-06 23:07:30 +01:00
Irmen de Jong
a1729b65ab
fix min(), max(), sum(), abs()
2021-03-06 22:57:22 +01:00
Irmen de Jong
2950d26c8e
array and struct value assignments now via memcopy instead of assignment per element
2021-03-06 22:10:03 +01:00
Irmen de Jong
4f8d4a9585
use memcopy to assign arrays
2021-03-06 19:01:16 +01:00
Irmen de Jong
d787795759
simplified
2021-03-06 15:43:23 +01:00
Irmen de Jong
cf74e73e27
IDEA syntax colors
2021-03-06 15:23:58 +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
6c66f86103
todo
2021-03-05 21:07:35 +01:00
Irmen de Jong
26502c949a
add unlimited bobs example
2021-03-05 19:05:13 +01:00
Irmen de Jong
8dfe510883
avoid compiler crash when evaluating const expressions fails due to things like integer out of bounds
2021-03-04 01:32:02 +01:00
Irmen de Jong
96ba9f5902
spelling correction
2021-03-04 01:31:29 +01:00
Irmen de Jong
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
9fe32c1c34
codegen uses 'bra' on 65c02 instead of 'jmp'
2021-02-28 16:46:08 +01:00
Irmen de Jong
0e0278c84a
for loops now use 'bra' if available
2021-02-28 16:35:59 +01:00
Irmen de Jong
dea775a9cd
package refactor
2021-02-28 16:29:15 +01:00
Irmen de Jong
7e3e18a5c7
deal with 'bra' better on 65c02
2021-02-28 16:20:03 +01:00
Irmen de Jong
8e3ebc84f0
readme
2021-02-28 15:40:04 +01:00
Irmen de Jong
e6079dfd71
don't always use pha/pla in pointer expression code
2021-02-27 16:21:46 +01:00
Irmen de Jong
2b435fe6a5
vtui example updated to vtui 0.6
2021-02-27 03:30:21 +01:00
Irmen de Jong
4e640b11fd
added kernal bank switch trick to rasterbars
2021-02-26 01:16:06 +01:00
Irmen de Jong
8b1e1e68fa
switch to Kotlin's new JVM IR compilation
2021-02-26 01:10:00 +01:00
Irmen de Jong
fd11927708
optimized highres 4c position calc a bit
2021-02-26 00:43:51 +01:00
Irmen de Jong
cd500fee8c
wording
2021-02-25 00:52:27 +01:00
Irmen de Jong
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
d14dac3872
got rid of final traces of heapid, fixed compiler warnings
2021-02-24 00:01:04 +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
0e62f5b759
don't remove subroutines in a block marked with "force_output"
2021-02-21 23:25:26 +01:00
Irmen de Jong
edf9a500d3
kernel -> kernal
2021-02-21 22:48:06 +01:00
Irmen de Jong
001d01fdaf
slight tweak to 64tass .cpu to enable wdc65c02 variant on cx16 with its extra opcodes
2021-02-21 22:45:23 +01:00
Irmen de Jong
a95677564e
changed system irq/rasterirq setting routines
2021-02-21 22:23:50 +01:00
Irmen de Jong
4aca8bb8df
also track subroutines in the callgraph that only get their address taken
2021-02-21 22:09:49 +01:00
Irmen de Jong
5540482888
compiler error for duplicate when choice labels
2021-02-21 21:26:15 +01:00
Irmen de Jong
00d735249b
fix pointer write outside zeropage
2021-02-21 16:22:44 +01:00
Irmen de Jong
b5289511ba
don't remove empty when choice from the list of choices!
2021-02-21 15:11:19 +01:00
Irmen de Jong
b6ded8501f
added 'align_word' and 'align_page' block options to control block start address alignment in the assembler
2021-02-21 01:24:44 +01:00
Irmen de Jong
781915d2cf
reducing dependencies
2021-02-20 17:54:33 +01:00
Irmen de Jong
f4cef3eaf2
reducing dependencies
2021-02-20 17:19:54 +01:00
Irmen de Jong
d23c2eed86
test
2021-02-20 16:58:24 +01:00
Irmen de Jong
15695a304e
start address of blocks without explicit memory address, is now word-aligned in memory
2021-02-20 03:06:00 +01:00
Irmen de Jong
6319269976
underscore '_' is now also mapped to petscii, to the graphical symbol
2021-02-20 02:55:06 +01:00
Irmen de Jong
0ed3d951a7
don't require carry parameter Pc to asmsubs to be last
2021-02-20 02:27:57 +01:00
Irmen de Jong
2aa39757b4
reduce dependencies on global compilationtarget
2021-02-19 19:02:29 +01:00
Irmen de Jong
39d32a3600
refactor cpuCheck
2021-02-19 18:48:12 +01:00
Irmen de Jong
219d17de34
reduce dependencies on global compilaiontarget
2021-02-19 18:33:54 +01:00
Irmen de Jong
9bb5b454e4
reduce dependencies on global compilaiontarget
2021-02-18 23:44:26 +01:00
Irmen de Jong
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
b543cc34cd
no longer warn about removing unused asmsubs
2021-02-18 01:52:56 +01:00
Irmen de Jong
791dbbab9b
fixed block label itself not getting the correct memory address in the assembly
...
fixed %asmbinary relative path issues
2021-02-18 01:28:33 +01:00
Irmen de Jong
ac0b1da3fc
machinedefinition doesn't import system libs itself anymore
2021-02-18 00:43:32 +01:00
Irmen de Jong
2f97aedc3c
fixed invalid removal of string tag from memory()
2021-02-16 23:58:31 +01:00
Irmen de Jong
ab544ee965
improved string constant interning; no longer output duplicate strings in the Ast
2021-02-16 23:43:38 +01:00
Irmen de Jong
fa527f8624
restored optimization of txt.print() with strings of lengths 1 or 2
2021-02-16 23:37:11 +01:00
Irmen de Jong
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
194fbcdd91
todos
2021-02-15 04:41:33 +01:00
Irmen de Jong
1e3930aae2
fix bug in evaluating logical expressions if one of the operands was not boolean 1 or 0
2021-02-14 18:29:05 +01:00
Irmen de Jong
62dda4d891
fix asm bug in conv.any2uword
2021-02-14 17:13:56 +01:00
Irmen de Jong
2b870fb9f7
get rid of compiled examples. Just compile them yourself...
2021-02-14 17:13:29 +01:00
Irmen de Jong
53f0318187
version 6.1
2021-02-14 00:07:45 +01:00
Irmen de Jong
5e6e711f33
optimize pokew()
2021-02-14 00:05:57 +01:00
Irmen de Jong
78af2cd4dc
optimize peekw()
2021-02-13 23:52:08 +01:00
Irmen de Jong
02cb237623
added poke() and pokew() builtin functions
2021-02-13 23:16:50 +01:00
Irmen de Jong
cc0f19653e
added peek() and peekw() builtin functions
2021-02-13 22:38:39 +01:00
Irmen de Jong
4fff150c7b
fixed mkword() bug
2021-02-13 22:00:13 +01:00
Irmen de Jong
f6136891cc
optimized for loop over const bytes, fixed downto 1
2021-02-13 13:46:02 +01:00
Irmen de Jong
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
321fdd10d1
ported tehtriz to Cx16
2021-02-10 21:55:14 +01:00
Irmen de Jong
9867dfcdeb
ported tehtriz to Cx16
2021-02-10 21:44:35 +01:00
Irmen de Jong
7c09ac632c
got rid of the --longOptionNames in the cli argparser
2021-02-10 21:26:46 +01:00
Irmen de Jong
3502f65332
reducing dependencies
2021-02-09 19:03:21 +01:00
Irmen de Jong
628390c3b5
reducing dependencies
2021-02-09 18:56:47 +01:00
Irmen de Jong
bc37097df2
reducing dependencies
2021-02-09 18:49:25 +01:00
Irmen de Jong
7d98275763
reducing dependencies
2021-02-09 02:06:27 +01:00
Irmen de Jong
d6ffb549f6
reducing dependencies
2021-02-09 01:47:05 +01:00
Irmen de Jong
bcd0db984d
reducing ast dependencies - moved ErrorReporter back to compiler module
2021-02-09 01:15:31 +01:00
Irmen de Jong
d9244f22c2
reducing ast dependencies - separate Ast compilation module
2021-02-09 01:06:11 +01:00
Irmen de Jong
c97d76dbf2
reducing ast dependencies
2021-02-09 00:05:56 +01:00
Irmen de Jong
9e05e97d7f
reducing ast dependencies
2021-02-07 19:38:20 +01:00
Irmen de Jong
1070dedd7c
todo
2021-02-07 19:08:47 +01:00
Irmen de Jong
ccd1516637
reducing ast dependencies
2021-02-07 18:44:38 +01:00
Irmen de Jong
f1f51a01c6
reducing ast dependencies
2021-02-07 18:34:55 +01:00
Irmen de Jong
be75b8dbe5
reducing ast dependencies
2021-02-07 07:05:00 +01:00
Irmen de Jong
02fae0e722
reducing ast dependencies
2021-02-07 06:50:59 +01:00
Irmen de Jong
e35b739579
reducing ast dependencies
2021-02-07 06:39:08 +01:00
Irmen de Jong
34aa6cc8a2
compiler checks for conflicting register usage in sub arguments vs target parameter registers
2021-02-07 05:25:50 +01:00
Irmen de Jong
d7a6b20028
todo
2021-02-07 01:14:10 +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
f1478d776b
fix vertical line highres 4color
2021-02-05 18:09:21 +01:00
Irmen de Jong
40e4cfb686
amiga
2021-02-04 17:47:52 +01:00
Irmen de Jong
76f459ee95
amiga
2021-02-02 23:09:03 +01:00
Irmen de Jong
c478718019
fixed and optimized horiz_line for highres 4c
2021-02-01 22:03:10 +01:00
Irmen de Jong
c27248a58b
amiga
2021-01-29 23:52:29 +01:00
Irmen de Jong
51bc539468
added palette.set_rgb()
2021-01-29 02:46:07 +01:00
Irmen de Jong
2395863e7e
asmsubs: fix clobbering and optimize register usage for loading the arguments
2021-01-29 01:52:49 +01:00
Irmen de Jong
69c459c8ac
gfx2 highres 4colors
2021-01-28 22:28:14 +01:00
Irmen de Jong
c8855b2b10
better error msg
2021-01-27 02:40:56 +01:00
Irmen de Jong
a910c0fddb
gfx2 highres 4colors
2021-01-27 02:31:20 +01:00
Irmen de Jong
fd55611cac
asmsubs: don't use stack for simple lsb/msb/mkword arguments
2021-01-27 01:41:55 +01:00
Irmen de Jong
52f6be2bb0
gfx2: changed screen mode numbering to a more intuitive sequence
2021-01-26 18:17:20 +01:00
Irmen de Jong
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
9d4ec4a9b2
syntaxfile
2021-01-24 00:42:26 +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
195cd7597d
fix pointer-to-pointer assignment
2021-01-23 18:50:46 +01:00
Irmen de Jong
4a81406262
fix diskio rename() and delete()
2021-01-23 17:57:30 +01:00
Irmen de Jong
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
6f0103398b
fix Y register clobbering in pointer access code
2021-01-23 15:24:41 +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
5c13918f11
cx16 reset_system() bank selection change
2021-01-17 18:28:43 +01:00
Irmen de Jong
40cc216557
optimize pointer var access if var is already on zeropage
2021-01-16 18:31:37 +01:00
Irmen de Jong
1481f92cb0
optimize memory read expression of ptr + constant index
2021-01-16 17:41:15 +01:00
Irmen de Jong
76d54fbe5c
optimize assignment to memory pointer with fixed byte offset
2021-01-15 20:46:47 +01:00
Irmen de Jong
9f72779cdc
optimize assignment from memory pointer with fixed byte offset
2021-01-15 20:09:13 +01:00
Irmen de Jong
3dcef89a74
optimize (zp),y instructions for 65c02 to use (zp)
2021-01-15 19:14:35 +01:00
Irmen de Jong
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
cb5d6ddf80
readme
2021-01-13 22:48:59 +01:00
Irmen de Jong
e0794db33a
version 6.0beta
2021-01-13 22:41:11 +01:00
Irmen de Jong
b128b79132
clearer description of memory()
2021-01-13 22:32:17 +01:00
Irmen de Jong
79e6d4b8dd
better check for EOF status
2021-01-13 22:11:51 +01:00
Irmen de Jong
b9ddde0f12
assem
2021-01-12 03:45:18 +01:00
Irmen de Jong
a0ec37b35b
compiler error for missing return value
2021-01-10 16:36:08 +01:00
Irmen de Jong
506ac8014c
fix diskio.f_readline() that skipped first char. It also doesn't leave the end of line char in the string now.
2021-01-10 16:21:25 +01:00
Irmen de Jong
72b4198301
added string.lower() / string.upper()
2021-01-10 15:29:43 +01:00
Irmen de Jong
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
4b6d045df1
idea syntaxfile updated
2021-01-08 16:57:16 +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
d61420f1c6
oops
2021-01-08 01:31:28 +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
7d6a0ab256
added conv.any2uword()
2021-01-05 22:28:46 +01:00
Irmen de Jong
4309a0dc68
assem
2021-01-05 04:46:25 +01:00
Irmen de Jong
dde6919446
allow when choice values to be replaced in ast (const-folding)
2021-01-05 03:49:11 +01:00
Irmen de Jong
54fc9c91ac
fix hole in scratch zp allocation of cx16
2021-01-05 03:48:36 +01:00
Irmen de Jong
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
5a846bdeb5
fixed invalid integer constant expression evaluation leading to wrong results
2021-01-02 20:33:59 +01:00
Irmen de Jong
baf9dfb46c
assem
2021-01-02 20:33:07 +01:00
Irmen de Jong
edd3a22848
added strfind()
2021-01-02 17:49:58 +01:00
Irmen de Jong
583428b19c
assem
2021-01-02 15:40:36 +01:00
Irmen de Jong
08d44ae553
fix compiler errors
2021-01-02 15:40:24 +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
b4931c9a1f
optimize horzontal_line drawing
2020-12-30 18:58:47 +01:00
Irmen de Jong
ddfcf45d40
added some missing clobbers() specs
2020-12-30 16:59:31 +01:00
Irmen de Jong
ee12236d53
added rect functions
2020-12-30 00:53:13 +01:00
Irmen de Jong
df6698c98f
fixed circle and disc geometry
2020-12-30 00:11:42 +01:00
Irmen de Jong
c3b82f2cfa
optimized disc()
2020-12-29 23:58:11 +01:00
Irmen de Jong
64c89f1c8f
fix circle and disc geometry, added rect and line routines
2020-12-29 23:52:48 +01:00
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
3378586098
update gradle to 6.7
2020-12-28 00:46:30 +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
ffffcdd50a
project restructure, add experiment for httpCompilerService
2020-12-27 14:37:09 +01:00
Irmen de Jong
d37d62574c
project restructure
2020-12-27 07:21:39 +01:00
Irmen de Jong
f2380457d6
update to new kotlin CLI parser library
2020-12-27 05:04:50 +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
7607d3d64a
check for unexecuted statements in blocks is now done for all blocks, not only main
2020-12-27 03:35:20 +01:00
Irmen de Jong
d7d7147d43
added error message when not using returnvalue of a functioncall
2020-12-27 02:28:40 +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
9002c67639
cleanup of cx16 regs lists
2020-12-25 14:00:07 +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
80e3a11268
fix faulty word[x]-- , fix invalid stz addressing modes
2020-12-24 04:08:52 +01:00
Irmen de Jong
38a6c6a866
error message for too large repeat iteration count
2020-12-24 03:25:46 +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
dc600cc3ed
fix crash when printing Ast for asmsubroutine with multiple return values
2020-12-23 02:03:27 +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
118aed2e31
optimized code for 65c02 when setting constant 0 value
2020-12-22 17:59:47 +01:00
Irmen de Jong
85abf4d123
update docs
2020-12-22 16:44:05 +01:00
Irmen de Jong
44b8291540
update docs
2020-12-22 13:29:16 +01:00
Irmen de Jong
d6444bba66
don't remove 'double' assignments that are actually doing something like calling a function
2020-12-22 12:52:55 +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
b7c1450121
upgrade to Antlr 4.9
2020-12-21 19:19:04 +01:00
Irmen de Jong
787f52d1f8
doc
2020-12-21 18:28:10 +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
7f2aea60c9
addition
2020-12-19 03:36:52 +01:00
Irmen de Jong
168621f7c2
addition
2020-12-19 03:27:08 +01:00
Irmen de Jong
8b630798d8
documented the subroutine calling convention
2020-12-19 03:18:40 +01:00
Irmen de Jong
52e8a44517
version 5.4
2020-12-15 22:59:02 +01:00
Irmen de Jong
59f33658ad
removed the rom path argument for launching the x16emu which made it fail on a non-Linux system
2020-12-15 22:51:10 +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
8b75ceb412
diskio.list_files now has a bigger buffer to store more filenames (around 30-40 max)
2020-12-14 14:29:42 +01:00
Irmen de Jong
c39fc4010d
textio.clear_screen() now uses kernal routine to clear the text screen, this also resets the cursor to top left.
2020-12-14 14:28:53 +01:00
Irmen de Jong
8df778a515
fixed crash when importing modules from the same directory as the main program
2020-12-14 13:14:12 +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
251f947293
fixed parameter signature for FB_set_8_pixels_opaque() (docs are wrong)
2020-12-12 03:32:01 +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
43c0afdea0
fixed strlen() to work on arguments other than just a variable
2020-12-11 23:32:29 +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
bedc3bdb56
allow bit shifting to be as large as the target variable's datatype
2020-12-10 22:49:27 +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
1d299c56e0
fix float '**' (pow) on cx16
2020-12-10 22:19:07 +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
b5dc5fc615
added iterative file loading to diskio
2020-12-10 00:58:59 +01:00
Irmen de Jong
7a7270d769
adding CI (CommanderX16 Image) file viewer
2020-12-10 00:03:47 +01:00
Irmen de Jong
7549ddcd2b
added TODOs for missing assignments
2020-12-10 00:03:20 +01:00
Irmen de Jong
08f0303178
diskio status() now returns the status string instead of printing it
2020-12-10 00:02:21 +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
ac94236614
fixed compiler crash when declaring a str(pointer) array without initializer
2020-12-08 22:19:11 +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
106fc5daa4
tweak
2020-12-08 03:39:45 +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
b3348eb22b
formatting
2020-12-06 07:52:58 +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
00071d53d5
optimized disc (filled circle) drawing on c64, fixed off by 1 disc width in cx16 version
2020-12-06 00:33:32 +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
fa2d87f3dd
optimized disc (filled circle) drawing on cx16
2020-12-06 00:01:19 +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
3e63a29c59
diskio now properly closes files after a load or save
2020-12-03 16:01:58 +01:00
Irmen de Jong
261c0fc9b6
started adding syntax highlighting files
2020-12-02 20:48:50 +01:00
Irmen de Jong
895b30f7e5
version 5.2
2020-12-01 22:49:08 +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
57ac820767
readme
2020-11-30 22:42:51 +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
2b43353eb4
readme
2020-11-26 02:04:01 +01:00
Irmen de Jong
a74403c347
float typecasts optimization
2020-11-26 01:52:48 +01:00
Irmen de Jong
2f4c6c8697
float typecasts optimization
2020-11-26 01:39:27 +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
2a0ffaf45d
started to optimize typecasts to use translateExpression() less
2020-11-25 00:17:42 +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
a88b40d6c1
fix stack corruption with bitshifts
2020-11-24 21:58:14 +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
6d8c4f403f
updated Kotlin version to 1.4.20, updated targeted JDK version to 11 (LTS)
2020-11-23 22:28:24 +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
acdbd0c391
todos for next version
2020-11-22 19:18:57 +01:00
Irmen de Jong
d9a8cfed8c
updated the compiled examples disk
2020-11-22 18:45:40 +01:00
Irmen de Jong
122796fbba
version 5.1
2020-11-22 18:36:04 +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
38d06a7e94
optimized float var comparison without translateExpression()
2020-11-22 15:05:45 +01:00
Irmen de Jong
49db10539a
optimized float var equality comparison without translateExpression()
2020-11-22 14:33:03 +01:00
Irmen de Jong
8efe4c6267
Fixed compiler watch to work with multiple compilation modules
2020-11-22 13:11:33 +01:00
Irmen de Jong
04d8bb8fbf
Fixed compiler watch flag crashing when not used on a subdirectory. Fixes #20
2020-11-22 12:07:14 +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
d1febc0208
all in-place byte assignments now without translateExpression()
2020-11-22 01:38:53 +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
72509eef44
inplace modification for memory now without translateExpression()
2020-11-18 23:23:06 +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
4278f64682
fixed invalid value push for memreads with expression
2020-11-18 22:45:04 +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
8bd4914e2f
fix stack error for float casts
2020-11-15 17:34:27 +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
1eecdd6fa3
fix error when taking address of struct var
2020-11-05 02:39:04 +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
ebc2c614d7
use non-stack call conv for builtin functions
2020-11-02 19:59:27 +01:00
Irmen de Jong
29f5a85158
callconv
2020-11-01 19:25:23 +01:00
Irmen de Jong
8af2380a47
pair
2020-11-01 18:00:20 +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
5f337a0bd9
fix typecheck of multiple returnvalues
2020-10-30 21:45:37 +01:00
Irmen de Jong
87862f772a
better handling of inferred type errors
2020-10-30 21:24:49 +01:00
Irmen de Jong
3ab641aa21
removed @stack in subroutine args and returnvalues, can only use variables or registers now
2020-10-30 15:02:42 +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
66bb98c479
fixed bugs in code assigning values from eval stack
2020-10-23 03:45:09 +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
3eaf111e7d
added 'slowwarn' cli option
2020-10-20 21:38:37 +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
e35ad0cc8f
code cleanups
2020-10-20 17:54:16 +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
82a28bb555
extra attempt to simplify add and subtract with negative numbers
2020-10-19 23:01:32 +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
Irmen de Jong
aec3b82476
fixed bitshifting by more than the number of bits in the value
2020-10-19 02:05:01 +02:00
Irmen de Jong
e83796b5b9
fixed bit shifting by 0. optimized bitshifting code.
2020-10-18 17:12:52 +02:00
Irmen de Jong
8eb69d6eda
vardecl with initializer expression are now optimized again (unless floats)
2020-10-18 16:15:05 +02:00
Irmen de Jong
74b5124a42
removed restriction on array indexer expression again from docs and code... :)
2020-10-18 14:05:26 +02:00
Irmen de Jong
b9706a180b
fix array indexer bug
2020-10-18 13:49:53 +02:00
Irmen de Jong
8aeb8a9bb7
reintroduce expressions for array indexing
2020-10-18 13:33:11 +02:00
Irmen de Jong
8f2e166a22
annotated some high prio todos
2020-10-17 22:57:54 +02:00
Irmen de Jong
fdd91170dc
allow simple binary expressions as array indexing too, but not more
2020-10-17 22:43:35 +02:00
Irmen de Jong
c40ddb061b
example adjustments
2020-10-17 21:00:59 +02:00
Irmen de Jong
353d6cfc55
doc about array index restriction
2020-10-17 20:35:36 +02:00
Irmen de Jong
f37564c49c
fixed
2020-10-17 19:59:48 +02:00
Irmen de Jong
157484d94b
adapted p8 code to restricted array indexing
2020-10-17 19:57:55 +02:00
Irmen de Jong
7626c9fff7
only allow array indexing via a number, or a variable (eliminate complex expression calcs for array indexing, force explicit use of an index variable)
2020-10-17 19:57:55 +02:00
Irmen de Jong
1f55f9fc49
removed 2 problematic ZP locations for the C64
2020-10-17 19:57:10 +02:00
Irmen de Jong
2554bc7ef8
ordered the functions in the docs
2020-10-17 02:14:19 +02:00
Irmen de Jong
7cb4100419
string can be compared directly (uses strcmp() automatically in asm)
2020-10-17 02:01:00 +02:00
Irmen de Jong
2d3b7eb878
started making string compares use strcmp() automatically
2020-10-17 01:11:01 +02:00
Irmen de Jong
4d01a78731
introduced strcmp() builtin function
2020-10-16 19:00:06 +02:00
Irmen de Jong
a03e36828a
fixed lines in assembly source optimizer
2020-10-16 01:48:03 +02:00
Irmen de Jong
260fb65b06
making strcmp
2020-10-16 00:11:46 +02:00
Irmen de Jong
9fb8526136
added conv.bin and hex string to number
2020-10-15 23:47:10 +02:00
Irmen de Jong
26fc5ff5e2
preparing conv.bin and hex string to number
2020-10-15 23:10:28 +02:00
Irmen de Jong
5060f0bb19
fixed assigning a memory byte from an array
2020-10-15 22:15:00 +02:00
Irmen de Jong
beaf6d449b
added short overview of the library modules
2020-10-15 21:30:03 +02:00
Irmen de Jong
4d68b508a2
proper error if variable name is the same as its subroutine or block (that would create naming problems in the assembly code)
2020-10-15 20:48:18 +02:00
Irmen de Jong
cd825e386d
fix invalid address-of error when taking address of struct variable
2020-10-15 20:14:17 +02:00
Irmen de Jong
095c8b2309
corrected name and added cx16logo library module for fun
2020-10-15 00:58:41 +02:00
Irmen de Jong
8b6eb74c58
refactor
2020-10-14 23:43:38 +02:00
Irmen de Jong
aba437e5a2
diskio load and save use kernel routines for load and save, and don't bother with SEQ files
2020-10-14 22:33:49 +02:00
Irmen de Jong
efe3ed499b
starting with load/save in textelite
2020-10-14 02:51:00 +02:00
Irmen de Jong
5595564a1f
todo strcmp
2020-10-14 01:22:43 +02:00
Irmen de Jong
439761cb67
fixed C64 ZP addresses to allow disk I/O, introduced diskio library module
2020-10-14 01:17:18 +02:00
Irmen de Jong
bee6c65293
fixed several bugs in the repeat assembly for loop sizes like 0 and 256
2020-10-13 21:48:15 +02:00
Irmen de Jong
10145b946b
invalid repeat loop code is generated...
2020-10-13 16:27:40 +02:00
Irmen de Jong
ebf4b50059
reused existing CallGraph to check for recursion, which is now fixed. It's a warning too now.
2020-10-12 23:04:00 +02:00
Irmen de Jong
07cce3b3fc
version 4.5
2020-10-11 21:59:38 +02:00
Irmen de Jong
f2c19afd95
version 4.5
2020-10-11 21:47:41 +02:00
Irmen de Jong
d159e70e1c
textelite travel commands
2020-10-11 21:38:25 +02:00
Irmen de Jong
ac693a2541
textelite buy and sell commands
2020-10-11 19:29:18 +02:00
Irmen de Jong
1e988116ce
fixed precedence of comparison and bitwise operators
2020-10-11 19:02:53 +02:00
Irmen de Jong
ec9e722927
added conv.str2byte and conv.str2ubyte
2020-10-11 18:36:20 +02:00
Irmen de Jong
4cd5e8c378
textelite
2020-10-11 18:19:09 +02:00
Irmen de Jong
b759d5e06a
fixed X register corruption on Cx16 verions of float.GIVUAYFAY and GIVAYFAY
2020-10-11 17:46:19 +02:00
Irmen de Jong
1469033c1e
todo
2020-10-11 16:53:00 +02:00
Irmen de Jong
c15fd75df7
asmassignment can now use arbitrary source symbols; optimized byte-word sign extesion with this to not use stack anymore
2020-10-11 15:44:08 +02:00
Irmen de Jong
73524e01a6
really fix byte-word sign extension for function args as expression
2020-10-11 03:07:45 +02:00
Irmen de Jong
9e54e11113
fixed string + string/ string * number
2020-10-11 02:34:04 +02:00
Irmen de Jong
01ac5f29db
fix byte-word sign extension for function args as expression
2020-10-11 01:38:34 +02:00
Irmen de Jong
67a2241e32
textelite market start
2020-10-11 00:38:38 +02:00
Irmen de Jong
72b6dc3de7
avoid crash when optimizer has multiple replacements of the same node
2020-10-11 00:37:35 +02:00
Irmen de Jong
6f5b645995
textelite market start
2020-10-10 23:24:15 +02:00
Irmen de Jong
458ad1de57
fix strlen on uword (pointer) instead of str
2020-10-10 23:24:05 +02:00
Irmen de Jong
216f48b7c1
txtelite
2020-10-10 22:45:03 +02:00
Irmen de Jong
b2d1757e5a
asmgen: byte to word sign extensions
2020-10-10 15:39:48 +02:00
Irmen de Jong
6e53eb9d5c
asmgen: only generate storage byte for register saves in subroutine when it's actually needed
2020-10-10 15:02:56 +02:00
Irmen de Jong
e5ee5be9c5
textelite
2020-10-10 04:42:17 +02:00
Irmen de Jong
bd237b2b95
it's now possible in more places to assign arrays and put array literals without the need to define explicit variable.
2020-10-10 04:30:28 +02:00
Irmen de Jong
d31cf766eb
added missing doc picture
2020-10-10 02:51:02 +02:00
Irmen de Jong
56d530ff04
txtelite with input loop
2020-10-10 01:46:19 +02:00
Irmen de Jong
0bbb2240f2
txtelite with input loop
2020-10-10 01:35:46 +02:00
Irmen de Jong
1c8e4dba73
added \' escape character
2020-10-10 01:28:57 +02:00
Irmen de Jong
4a9956c4a4
txtelite species and planet naming fix
2020-10-10 01:15:26 +02:00
Irmen de Jong
59c0e6ae32
added some more missing assignment codegens (word * byte etc)
2020-10-09 23:48:33 +02:00
Irmen de Jong
94c30fc21e
textelite
2020-10-09 22:47:42 +02:00
Irmen de Jong
8bb3b3be20
fix repeat loop for variables when var == 0
2020-10-09 22:30:21 +02:00
Irmen de Jong
85e3c2c5a2
textelite
2020-10-09 22:25:12 +02:00
Irmen de Jong
4be381c597
fixed compiler optimizer crash because of conflicting expression replacements
2020-10-09 21:51:54 +02:00
Irmen de Jong
6ff5470cf1
txtelite
2020-10-09 21:01:06 +02:00
Irmen de Jong
151dcfdef9
code style
2020-10-08 21:47:07 +02:00
Irmen de Jong
c282b4cb9f
code style
2020-10-07 23:24:30 +02:00
Irmen de Jong
c426f4626c
added some more missing aug assign operator code
2020-10-07 22:53:18 +02:00
Irmen de Jong
0e3c92626e
fixed handling of main module when importing another. fixed diskdir closedown.
2020-10-07 21:55:00 +02:00
Irmen de Jong
5099525e24
added missing register pair assignments. fixed compiler crashes
2020-10-07 03:43:02 +02:00
Irmen de Jong
e22b4cbb67
fixed invalid errormessage about memory mapped strings
2020-10-07 01:35:39 +02:00
Irmen de Jong
2b48828179
examples issues
2020-10-07 01:21:41 +02:00
Irmen de Jong
3e181362dd
optimized code for processing return values from asmsubs without intermediate estack.
2020-10-07 00:51:57 +02:00
Irmen de Jong
71fd98e39e
allow asmsub routines with multiple return values to be called (special case for return values in status register)
2020-10-07 00:33:42 +02:00
Irmen de Jong
71cd8b6d51
cx16 cross-compile teaser screenshot
2020-10-05 19:59:51 +02:00
Irmen de Jong
ad75fcbf7e
txtelite
2020-10-05 19:49:13 +02:00
Irmen de Jong
f8b04a6357
added status return flags to some kernel i/o operations
2020-10-05 19:48:21 +02:00
Irmen de Jong
d8fcbb78d3
txtelite goatsoup
2020-10-04 21:53:16 +02:00
Irmen de Jong
8408bf3789
another compiler crash fixed when dealing with functioncall returning a str
2020-10-04 21:53:08 +02:00
Irmen de Jong
3e1185658e
txtelite goatsoup
2020-10-04 21:35:37 +02:00
Irmen de Jong
d778cdcd61
another compiler crash fixed when dealing with functioncall returning a str
2020-10-04 21:11:42 +02:00
Irmen de Jong
90b303fc03
fix error message for invalid number of arguments
2020-10-04 19:28:22 +02:00
Irmen de Jong
eb86b1270d
txtelite
2020-10-04 19:23:36 +02:00
Irmen de Jong
a1f0cc878b
correct error message for faulty string variable declarations
2020-10-04 19:13:19 +02:00
Irmen de Jong
f2e2720b15
compiler crash fixed when dealing with functioncall returning a str
2020-10-04 18:47:47 +02:00
Irmen de Jong
ec8cfe1591
make string-assignment actually work (using strcpy)
2020-10-04 18:18:58 +02:00
Irmen de Jong
22eac159e5
txtelite
2020-10-04 17:47:57 +02:00
Irmen de Jong
956b0c3fa7
added \xHH escape character to strings, allow strings of length zero.
2020-10-04 13:05:43 +02:00
Irmen de Jong
a6427e0949
added \$HH escape character to strings
2020-10-03 15:11:09 +02:00
Irmen de Jong
22031f39b0
update compiled examples
2020-10-02 23:39:20 +02:00
Irmen de Jong
c4673d3a67
v4.4
2020-10-02 23:32:45 +02:00
Irmen de Jong
e83e021541
doc
2020-10-02 23:31:49 +02:00
Irmen de Jong
c1f2ecd413
struct assignment from array value now checks number of elements
2020-10-02 22:48:39 +02:00
Irmen de Jong
46fbe01df9
added codengeration for assigment of array of values to a struct variable (all members at once)
2020-10-02 22:37:52 +02:00
Irmen de Jong
8647a8290e
fix code generation for using struct vars in arrays and such
2020-10-02 22:21:18 +02:00
Irmen de Jong
bac51f4b31
fix subtraction error for bytes
2020-10-02 21:30:32 +02:00
Irmen de Jong
582aab180a
oops
2020-10-02 02:39:19 +02:00
Irmen de Jong
5fb714fcb2
expression splitter integrated into expression simplifier
2020-10-02 01:54:37 +02:00
Irmen de Jong
3994de77d0
fix expression splitter handling related to code ballooning
2020-10-02 01:49:55 +02:00
Irmen de Jong
24c8d1f1f4
expression splitter for vardecls with binexpr init expression
2020-10-02 00:34:12 +02:00
Irmen de Jong
110f877dcc
binexpr expression splitter for assignments
2020-10-02 00:04:21 +02:00
Irmen de Jong
9cd3a9f8e8
fix isSameAs for ArrayIndexed expressions, and by extension, assignment.isAugmentable()
2020-10-01 23:26:43 +02:00
Irmen de Jong
1464050bf5
expression splitter moved to separate optimizer
2020-10-01 02:58:12 +02:00
Irmen de Jong
95e9e1b550
avoid adding unneeded variable initalization assignments. Improved removal of useless double assignments.
2020-10-01 00:39:49 +02:00
Irmen de Jong
bda1c1c1eb
reduce slow estack usage by splitting up simple binary expressions
2020-09-30 19:57:16 +02:00
Irmen de Jong
d020a7974a
reduce slow estack usage by splitting up simple binary expressions
2020-09-30 17:51:35 +02:00
Irmen de Jong
a51fad3aab
parentheses around binary exprs in source output
2020-09-30 16:38:54 +02:00
Irmen de Jong
3cd32778bb
don't split expressions referencing the target variable wrongly
2020-09-30 01:11:33 +02:00
Irmen de Jong
8d67056f84
fixed estack corruption caused by c64 print_f
2020-09-29 21:12:16 +02:00
Irmen de Jong
e986973b5e
wrong floats
2020-09-29 04:05:45 +02:00
Irmen de Jong
448c934cba
optimized neg(x) and abs(x)
2020-09-29 03:58:17 +02:00
Irmen de Jong
96ef7ba55d
fixed ast to source for structs
2020-09-29 00:28:11 +02:00
Irmen de Jong
4372de1e7e
allow creating arrays of pointers to other arrays. Usefullness is very limited though...
2020-09-29 00:03:47 +02:00
Irmen de Jong
af0fb88adf
allow creating string arrays. Fixed array index scaling for word arrays.
2020-09-28 02:23:36 +02:00
Irmen de Jong
066233eee8
todos
2020-09-27 22:05:44 +02:00
Irmen de Jong
b6f85d10b0
reintroduced system reset at program exit if zeropage is clobbered
2020-09-27 22:00:36 +02:00
Irmen de Jong
6f75413c09
some more optimizations in expressions with memreads
2020-09-27 21:43:40 +02:00
Irmen de Jong
d45fe4ce74
fixed invalid eval stack ptr issue
2020-09-27 20:55:34 +02:00
Irmen de Jong
e828c013e6
fix word+/-byte errors if byte was unsigned
2020-09-27 20:23:42 +02:00
Irmen de Jong
988459f744
don't generate a byte storage for every single time a register needs saving
2020-09-27 16:26:02 +02:00
Irmen de Jong
7c701bdf3f
corrections
2020-09-27 14:14:45 +02:00
Irmen de Jong
446fc35d5c
avoid excessive comparisons for certain comparison expressions against zero
2020-09-27 03:55:59 +02:00
Irmen de Jong
bec9cc7047
asm store/load same optimizer back....
2020-09-27 02:45:59 +02:00
Irmen de Jong
961380acb6
optimized float ==0 or 1 comparisons
2020-09-27 01:56:08 +02:00
Irmen de Jong
84c0685a60
fix faulty comparison optimization
2020-09-27 01:40:12 +02:00
Irmen de Jong
629222f103
larger
2020-09-26 19:59:57 +02:00
Irmen de Jong
8c448e5bc2
finished optimized comparison asm generation
2020-09-26 19:55:04 +02:00
Irmen de Jong
b5fa6c2d0a
library modules imported from embedded resource now contain proper file path (useful for error messages)
2020-09-26 19:30:17 +02:00
Irmen de Jong
680b2df08a
just call the asmsub
2020-09-26 19:14:06 +02:00
Irmen de Jong
09bd47f98b
>
2020-09-26 19:02:29 +02:00
Irmen de Jong
7f69f9ce4f
<=
2020-09-26 18:04:43 +02:00
Irmen de Jong
4179b4e543
all unsigned comparisons
2020-09-26 17:45:35 +02:00
Irmen de Jong
66364554c4
new comparisons testprog
2020-09-26 16:11:47 +02:00
Irmen de Jong
43f2448789
added (u)byte and (u)word '>'
2020-09-26 13:15:03 +02:00
Irmen de Jong
130cee1e70
tweak '<' code
2020-09-26 12:47:40 +02:00
Irmen de Jong
b976360248
fix fallthrough problem with 'when'. Fix too greedy asm optimization that caused conditional jumps to fail sometimes because the condition value wasn't loaded.
2020-09-26 00:22:55 +02:00
Irmen de Jong
225bfc4164
fix 16+8 bit add and sub sign extensions
2020-09-25 22:51:59 +02:00
Irmen de Jong
d7ceda4d82
removed the automatic system reset at program exit, this did't work with the new init code
2020-09-25 22:12:14 +02:00
Irmen de Jong
14d091e60a
crashes :(
2020-09-24 23:50:20 +02:00
Irmen de Jong
2809668ef4
new asm code for (u)word and (u)byte <
2020-09-24 23:08:36 +02:00
Irmen de Jong
bafb86e00b
new asm code for (n)equals
2020-09-24 22:28:24 +02:00
Irmen de Jong
f5db31b8ff
do..until condition can now refer to variables defined in the loop's inner scope.
2020-09-24 19:26:07 +02:00
Irmen de Jong
e1d0dbed0c
do..until condition can now refer to variables defined in the loop's inner scope.
2020-09-23 23:24:32 +02:00
Irmen de Jong
1d1fe364d0
added %option no_sysinit to avoid having the system re-initialization code executed at the start of the program
2020-09-23 23:01:47 +02:00
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
c50cbbb526
typo
2020-09-23 18:50:32 +02:00
Irmen de Jong
b93d9ecd7e
memtop cx16
2020-09-23 02:34:49 +02:00
Irmen de Jong
96243db88b
refresh compiled examples
2020-09-23 00:29:40 +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
8c63d7cf5b
diskdir
2020-09-22 23:22:20 +02:00
Irmen de Jong
6f78a32e64
diskdir
2020-09-22 23:12:43 +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
e8679ae03b
fixed print_f on cx16. Some more examples are now multi-platform.
2020-09-22 01:45:51 +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
df995f7bc9
fixed float zp problem on C64, added more zp locations to block list
2020-09-22 01:05:07 +02:00
Irmen de Jong
af39502450
doc
2020-09-22 00:47:02 +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
ae2619602d
lib renames in docs
2020-09-21 18:21:24 +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
3ff3f5e1cc
compiler errors in standard format so that you can click on them in IDE to jump to the line
2020-09-20 22:24:35 +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
4e74873eae
better swap() code
2020-09-19 17:32:29 +02:00
Irmen de Jong
f0cd03d14f
removed invalid duplicate name check about subroutine parameters
2020-09-19 16:04:04 +02:00
Irmen de Jong
f2b069c562
correction, we don't allow address-of as a value for memory mapped vars, improved the error message instead
2020-09-19 15:54:42 +02:00
Irmen de Jong
bc89306dc1
better detection of duplicate variable definitions
2020-09-19 15:46:51 +02:00
Irmen de Jong
bf4da1655b
doc
2020-09-18 23:57:40 +02:00
Irmen de Jong
d819aa270f
test
2020-09-18 23:38:50 +02:00
Irmen de Jong
e6d945f835
doc
2020-09-18 23:35:02 +02:00
Irmen de Jong
4fe408f1fd
doc
2020-09-18 23:34:32 +02:00
Irmen de Jong
c376e42092
implemented hidden line removal
2020-09-18 23:15:08 +02:00
Irmen de Jong
63a653cdf0
preparing for hidden line removal
2020-09-18 22:51:44 +02:00
Irmen de Jong
5d900800f2
vardecl value inits must not be shuffled around but stay at their original line at all times
2020-09-18 22:24:26 +02:00
Irmen de Jong
def06dbc0b
allow address-of to be used as a value for a memory pointer variable
2020-09-18 22:10:20 +02:00
Irmen de Jong
9b66a597bb
array literal const check added
2020-09-18 21:30:59 +02:00
Irmen de Jong
f1ee3b4e60
version 4.2
2020-09-16 23:04:18 +02:00
Irmen de Jong
6395e39d63
avoid generating superfluous '0' variable initializations, and fix erroneous vardecl order shifting
2020-09-16 22:15:06 +02:00
Irmen de Jong
2a6d9d7e31
more optimal codegen for some typecasts
2020-09-15 03:26:57 +02:00
Irmen de Jong
32a7cd31da
more optimal codegen for if statements
2020-09-15 00:31:44 +02:00
Irmen de Jong
dd4a56cb5f
cx16 safe clobbers for now
2020-09-15 00:14:36 +02:00
Irmen de Jong
d110d1cb5f
c64 system reset now banks kernel rom back in
2020-09-15 00:10:20 +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
e39a38b0d9
things
2020-09-13 21:04:51 +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
d5e5485d2e
fixed estack X corruption in float augmented assignments
2020-09-13 19:44:03 +02:00
Irmen de Jong
97b9c8f320
don't clobber A when trying to save X at functioncall
2020-09-12 19:04:44 +02:00
Irmen de Jong
35aebbc209
optimize unneeded type casts for register args
2020-09-12 02:48:16 +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
18f5963b09
cobra mk3
2020-09-10 01:31:21 +02:00
Irmen de Jong
836509c1d1
mult todos.
2020-09-10 00:53:35 +02:00
Irmen de Jong
949d536e42
mult todo's. Fixed wrong compilation target when compiling multiple files at once.
2020-09-10 00:26:35 +02:00
Irmen de Jong
f69b17e165
mult todo's
2020-09-10 00:07:06 +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
40071b1431
fix compiler crash with adding too many typecasts to args. useless lsb() and msb() are optimized away.
2020-09-09 21:37:56 +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
137d506e42
improve register arg passing again
2020-09-07 02:29:03 +02:00
Irmen de Jong
90c4a26d52
we don't implement asmsub params via @stack yet
2020-09-07 01:24:10 +02:00
Irmen de Jong
f378a8997b
improved ability to use register X in asm subroutine fuction arguments
2020-09-07 00:25:51 +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
37f6c2858f
warning about attempt to put floats in zp
2020-09-05 01:45:58 +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
a6f3c84e28
fix cx16 word sign extend in bitshift
2020-09-04 22:38:03 +02:00
Irmen de Jong
fe4e0e9835
cleanups
2020-08-31 23:00:53 +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
4bea31f051
fl_zero fix
2020-08-31 01:04:04 +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
0f9ce319d4
readme
2020-08-30 18:36:02 +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
a18de75da9
fix compiler loop and missing type checks on for loop range values
2020-08-29 01:48:41 +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
3ad7fb010f
clearer about emulator
2020-08-27 21:09:59 +02:00
Irmen de Jong
3f64d1bb5a
oops.
2020-08-27 21:04:08 +02:00
Irmen de Jong
a6f564ad88
version 4.0
2020-08-27 20:54:08 +02:00
Irmen de Jong
d97da3bb7b
implemented almost all math operations
2020-08-27 20:47:22 +02:00
Irmen de Jong
a77d3c92ad
implemented remaining float operations
2020-08-27 19:47:50 +02:00
Irmen de Jong
6d17e5307c
fixed typecasting of const arguments once again
2020-08-27 19:06:27 +02:00
Irmen de Jong
c2205e473a
fix example
2020-08-27 18:21:12 +02:00
Irmen de Jong
4ffb194847
readme and version
2020-08-27 18:18:29 +02:00
Irmen de Jong
744cd6ec42
updated examples
2020-08-27 18:11:49 +02:00
Irmen de Jong
f08fc18ab5
renamed c64scr. to txt.
2020-08-27 18:10:22 +02:00
Irmen de Jong
462af76770
cx16 link
2020-08-26 20:54:36 +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
e896d5a1a6
ver
2020-08-26 02:03:18 +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
256781bba5
added missing in-place bitwise operator code
2020-08-25 22:26:05 +02:00
Irmen de Jong
19705196d6
separate varnames and other symbol names
2020-08-25 22:08:52 +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
5da9379c37
making zeropage more configurable for future different machine targets
2020-08-25 18:10:06 +02:00
Irmen de Jong
032d20ff37
added the missing stack assignments
2020-08-25 17:43:35 +02:00
Irmen de Jong
d19b17cbfe
optimize strlen()
2020-08-25 17:31:47 +02:00
Irmen de Jong
4a4f8ff5db
subroutine parameters can be allocated on the zp now as well
2020-08-25 16:47:21 +02:00
Irmen de Jong
60a9209a14
plasma
2020-08-25 01:48:23 +02:00
Irmen de Jong
0f9e167df3
proper name
2020-08-25 00:59:02 +02:00
Irmen de Jong
2e2b8c498e
slightly optimize loop
2020-08-25 00:35:51 +02:00
Irmen de Jong
144199730f
refactored and optimized load/store byte from pointervar
2020-08-25 00:18:33 +02:00
Irmen de Jong
4bb4eab3b2
cleanup
2020-08-24 23:18:46 +02:00
Irmen de Jong
cf9151f669
use AsmAssignment preferrably over creating new ast node for codegen
2020-08-24 22:45:43 +02:00
Irmen de Jong
aef4598cec
comments
2020-08-24 02:56:22 +02:00
Irmen de Jong
3ada0fdf84
function call register args code consolidation, fix asm for loading word value from variable into register
2020-08-24 01:42:44 +02:00
Irmen de Jong
a5d97b326e
bugfix byte array assignment
2020-08-24 00:48:19 +02:00
Irmen de Jong
2640015fb1
move
2020-08-24 00:26:26 +02:00
Irmen de Jong
6cd42ddafe
cleanup
2020-08-23 23:28:25 +02:00
Irmen de Jong
1f17c22132
more array access optimizations
2020-08-23 22:36:49 +02:00
Irmen de Jong
5c62f612cc
cleanup
2020-08-23 20:34:27 +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
93b2ff2e52
fix postincrdecr on array value
2020-08-23 18:52:19 +02:00
Irmen de Jong
3991d23a69
refactoring
2020-08-23 18:20:57 +02:00
Irmen de Jong
1be139759c
better names
2020-08-23 16:08:31 +02:00
Irmen de Jong
d0674ad688
better names, reorder
2020-08-23 14:36:24 +02:00
Irmen de Jong
ffb47458ff
better names
2020-08-23 13:56:21 +02:00
Irmen de Jong
84ec1be8a4
assign type relax
2020-08-23 13:31:14 +02:00
Irmen de Jong
f4dafec645
assign type assert
2020-08-23 12:52:27 +02:00
Irmen de Jong
97ce72521d
for arrays, use the element's datatype more instead of the array decl type
2020-08-23 12:03:52 +02:00
Irmen de Jong
d2f0e74879
use sourcetype
2020-08-23 11:31:33 +02:00
Irmen de Jong
d9e3895c45
start with yet another codegen restructure, this time to make the assignment of values even more explicit for the codegen
2020-08-23 02:05:01 +02:00
Irmen de Jong
5075901830
work
2020-08-22 23:39:27 +02:00
Irmen de Jong
f1193bb5a0
Better error message
2020-08-22 23:13:53 +02:00
Irmen de Jong
d3dc279105
updated the compiled examples
2020-08-22 22:57:30 +02:00
Irmen de Jong
acc942f690
added some more asm code optimizations by splitting certain assignments
2020-08-22 22:53:21 +02:00
Irmen de Jong
e947067dcf
fixed source code output issue
2020-08-22 22:23:00 +02:00
Irmen de Jong
bd9ebf4603
flipped the order of the parameters of mkword() so it's now mkword(msb, lsb) for easier readability
2020-08-22 21:13:38 +02:00
Irmen de Jong
f41192a52a
added cube3d-gfx example
2020-08-22 19:00:03 +02:00
Irmen de Jong
ff54d6abd7
reorder const for all associative operators
2020-08-22 17:44:32 +02:00
Irmen de Jong
f40bcc219f
better errormsg
2020-08-22 17:29:35 +02:00
Irmen de Jong
679965410a
todo
2020-08-22 17:13:23 +02:00
Irmen de Jong
c6e13ae2a3
better error message
2020-08-22 17:12:09 +02:00
Irmen de Jong
20cdcc673b
identifiers can no longer start with an underscore. (this interfered with 64tass syntax)
2020-08-22 17:03:40 +02:00
Irmen de Jong
89f46222d9
fix compiler crash when calling a non-subroutine
2020-08-22 17:01:47 +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
31c946aeeb
bugfix
2020-08-22 16:39:17 +02:00
Irmen de Jong
bfc8a26381
implemented bit shifting for non-const amounts
2020-08-22 16:13:52 +02:00
Irmen de Jong
9d98746501
version 3.2
2020-08-21 18:02:49 +02:00
Irmen de Jong
63b03ba70c
fix typecasting
2020-08-21 18:02:01 +02:00
Irmen de Jong
70bab76b36
added plasma example
2020-08-21 17:58:43 +02:00
Irmen de Jong
15d24d4308
adding plasma example
2020-08-21 17:27:18 +02:00
Irmen de Jong
9ec62eb045
fixed lsb(), fixed const value type mismatch, fixed and() const evaluation.
2020-08-21 16:26:40 +02:00
Irmen de Jong
12f841e30d
just prints
2020-08-21 09:25:32 +02:00
Irmen de Jong
335599ed22
restored certain memoryread asm gen
2020-08-21 07:44:50 +02:00
Irmen de Jong
0b717f9e76
clear messages about slow expression code generation points
2020-08-21 05:45:39 +02:00
Irmen de Jong
e941f6ecca
fix asm bug
2020-08-21 04:23:08 +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
335684caf7
don't remove asmsub definitions...
2020-08-21 03:01:07 +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
39ea5c5f99
fix parse error for <<= and >>=
2020-08-20 23:24:01 +02:00
Irmen de Jong
b03597ac13
fixed bug in operand equality comparison, could lead to compiler endless loop
2020-08-20 22:21:26 +02:00
Irmen de Jong
58f323c087
implemented missing memory postincrdecr codegen
2020-08-20 21:48:15 +02:00
Irmen de Jong
513a68584c
implemented more optimized prefix expression codegen
2020-08-20 21:42:38 +02:00
Irmen de Jong
88d5c68b32
don't inc/dec a memory mapped register
2020-08-20 21:16:48 +02:00
Irmen de Jong
14f9382cf9
typecheck prefix expressions better
2020-08-20 20:46:28 +02:00
Irmen de Jong
cffb582568
added start of optimized in-place assignment code (for prefix expressions)
2020-08-20 18:43:10 +02:00
Irmen de Jong
e1812ce16c
fix typecast removal error.
2020-08-20 18:07:48 +02:00
Irmen de Jong
7a3163f59a
bugfix in direct memory assignment
2020-08-20 17:02:22 +02:00
Irmen de Jong
6f3b2749b0
refactoring assignments codegen
2020-08-20 16:47:43 +02:00
Irmen de Jong
c144d4e501
improved warnings about unreachable code
2020-08-20 14:28:17 +02:00
Irmen de Jong
edfd9d55ba
added sizeof() function
2020-08-20 13:50:28 +02:00
Irmen de Jong
774897260e
avoid silent type casts that remove precision (such as float -> word)
2020-08-20 12:49:48 +02:00
Irmen de Jong
65ba91411d
improved function arg type checking and error message
2020-08-20 12:38:22 +02:00
Irmen de Jong
9cbb8e1a64
version 3.1
2020-08-18 16:26:23 +02:00
Irmen de Jong
53e9ad5088
better asm code for repeat loops
2020-08-18 16:02:40 +02:00
Irmen de Jong
cf6ea63fa6
forloop asm done
2020-08-18 15:29:39 +02:00
Irmen de Jong
1de0ebb7bc
more forloop asm
2020-08-18 15:16:56 +02:00
Irmen de Jong
77c1376d6d
proper error message for arrays that are declared too big
2020-08-18 14:47:52 +02:00
Irmen de Jong
353f1954a5
for loop codegen
2020-08-18 14:03:31 +02:00
Irmen de Jong
8bf3406cf8
gradle version
2020-08-18 00:53:14 +02:00
Irmen de Jong
936bf9a05c
gradle version
2020-08-18 00:47:23 +02:00
Irmen de Jong
4487499663
more forloop codegen
2020-08-17 23:42:43 +02:00
Irmen de Jong
3976cc26a2
more forloop codegen
2020-08-17 23:19:23 +02:00
Irmen de Jong
e6ff87ecd0
upgraded to Kotlin 1.4, fixed several compilation warnings
2020-08-17 19:36:07 +02:00
Irmen de Jong
c0887b5f08
removed 'continue' statement to be able to generate more optimized loop assembly code. started with for loop optimizations
2020-08-17 19:22:29 +02:00
Irmen de Jong
f14dda4eca
fix certain corruption of A register argument on asm sub call
2020-08-16 19:15:44 +02:00
Irmen de Jong
bd7f75c130
loop todos
2020-07-30 02:54:37 +02:00
Irmen de Jong
fbe3ce008b
slight expression rewrite in case of certain in-place assignments, to try to get the in-place variable operand to the leftmost position
2020-07-30 01:30:21 +02:00
Irmen de Jong
7ac6c8f2d1
todo related to in-place assignment
2020-07-27 00:32:59 +02:00
Irmen de Jong
fdfbb7bdf0
improved call arguments type check
2020-07-27 00:28:48 +02:00
Irmen de Jong
1c16bbb742
tweaks for string handling as arguments
2020-07-27 00:12:27 +02:00
Irmen de Jong
9735527062
cleanup double code
2020-07-26 23:46:06 +02:00
Irmen de Jong
402827497e
fix float array assignment
2020-07-26 23:32:20 +02:00
Irmen de Jong
f81aa0d867
Merge branch 'remove_aug_assign'
2020-07-26 19:23:34 +02:00
Irmen de Jong
d32a970101
partly optimize assignments so that simple increments and decrements can be done via separate statements (postincrdecr)
2020-07-26 19:22:12 +02:00
Irmen de Jong
cd651aa416
use repeat
2020-07-26 13:50:14 +02:00
Irmen de Jong
8a3189123a
to reduce complexity, augmented assignment has been removed again from internal Ast and codegen for now.
2020-07-26 13:48:31 +02:00
Irmen de Jong
b37231d0f5
version 3.0
2020-07-26 01:33:02 +02:00
Irmen de Jong
3c55719bf1
finalize repeat asmgen
2020-07-26 01:32:27 +02:00
Irmen de Jong
af8279a9b9
empty for loops are removed
2020-07-25 22:54:50 +02:00
Irmen de Jong
c38508c262
introduced repeat loop. repeat-until changed to do-util.
...
forever loop is gone (use repeat without iteration count).
struct literal is now same as array literal [...] to avoid parsing ambiguity with scope blocks.
2020-07-25 16:56:34 +02:00
Irmen de Jong
b0e8738ab8
remove unused c64 resources
2020-07-25 14:47:31 +02:00
Irmen de Jong
cae480768e
version is work in progress
2020-07-25 14:45:06 +02:00
Irmen de Jong
a70276c190
use indexOfFirst. Also avoid initializing a for loop variable twice in a row.
2020-07-25 14:44:24 +02:00
Irmen de Jong
0c461ffe2e
removed Register expression (directly accessing cpu register)
2020-07-25 14:14:24 +02:00
Irmen de Jong
237511f2d6
v2.4
2020-07-04 18:56:47 +02:00
Irmen de Jong
cdcb652033
optimized arg passing if all args are registers
2020-07-04 18:56:30 +02:00
Irmen de Jong
71e678b382
fixed possible register subroutine arg clobbering
2020-07-04 17:05:36 +02:00
Irmen de Jong
3050156325
reverted subroutine inlining, it was a mistake
2020-07-04 01:02:36 +02:00
Irmen de Jong
4bfdbad2e4
added mandel gfx to examples
2020-07-03 23:56:36 +02:00
Irmen de Jong
06137ecdc4
v2.3
2020-07-03 23:51:27 +02:00
Irmen de Jong
d89f5b0df8
todo about fixing argclobbering
2020-07-03 23:49:17 +02:00
Irmen de Jong
b6e2b36692
refactor
2020-07-03 23:37:38 +02:00
Irmen de Jong
a6d789cfbc
fixed function argument type cast bug
2020-07-03 17:24:43 +02:00
Irmen de Jong
c07907e7bd
fixed missing shifts codegen
2020-07-02 21:28:48 +02:00
Irmen de Jong
7d8496c874
fixed missing shifts codegen
2020-07-02 19:18:47 +02:00
Irmen de Jong
164ac56db1
compiler error todos
2020-07-01 22:31:38 +02:00
Irmen de Jong
fdddb8ca64
slight optimization
2020-07-01 22:23:46 +02:00
Irmen de Jong
a9d4b8b0fa
fixed ast modifications on node arrays, in particular function call parameter lists
2020-07-01 22:03:54 +02:00
Irmen de Jong
ec7b9f54c2
subroutine inlining is an optimizer step
2020-07-01 12:41:10 +02:00
Irmen de Jong
307558a7e7
removed some double code related to call tree
2020-06-30 20:42:55 +02:00
Irmen de Jong
febf423eab
tehtriz compilation issues
2020-06-30 20:42:13 +02:00
Irmen de Jong
a999c23014
simple subroutine inlining added
2020-06-27 17:03:03 +02:00
Irmen de Jong
69f1ade595
gfx mandelbrot example added
2020-06-18 01:35:24 +02:00
Irmen de Jong
b166576e54
comments
2020-06-17 23:27:54 +02:00
Irmen de Jong
ee2ba5f398
some more optimizations for swap() function call asm code generation
2020-06-17 22:40:57 +02:00
Irmen de Jong
cb9825484d
some more optimized in-array assignments codegeneration
2020-06-17 21:41:38 +02:00
Irmen de Jong
76cda82e23
v2.2
2020-06-16 01:43:44 +02:00
Irmen de Jong
37b61d9e6b
v2.2
2020-06-16 01:39:11 +02:00
Irmen de Jong
52f0222a6d
Got rid of old Ast transformer Api, some compiler error fixes
2020-06-16 01:25:49 +02:00
Irmen de Jong
75ccac2f2c
refactoring last of old Ast modification Api
2020-06-16 00:36:02 +02:00
Irmen de Jong
5c771a91f7
refactoring last of old Ast modification Api
2020-06-14 16:56:48 +02:00
Irmen de Jong
a242ad10e6
fix double printing of sub param vardecl
2020-06-14 13:46:46 +02:00
Irmen de Jong
b5086b6a8f
refactoring last of old Ast modification Api
2020-06-14 03:17:42 +02:00
Irmen de Jong
3e47dad12a
clearer no modifications
2020-06-14 02:54:29 +02:00
Irmen de Jong
235610f40c
refactored StatementOptimizer
2020-06-14 02:41:23 +02:00
Irmen de Jong
6b59559c65
memory address assignment codegen
2020-06-14 02:12:40 +02:00
Irmen de Jong
23e954f716
refactoring StatementOptimizer
2020-06-14 02:00:32 +02:00
Irmen de Jong
983c899cad
refactor AstIdentifierChecker
2020-06-13 00:14:19 +02:00
Irmen de Jong
c2f9385965
refactor AstIdentifierChecker
2020-06-12 21:34:27 +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
68a7f9c665
version 2.1
2020-06-04 23:03:18 +02:00
Irmen de Jong
ffd8d9c7c1
more assignment expression optimizations
2020-06-04 22:57:32 +02:00
Irmen de Jong
c66fc8630c
fixed missing repeated constant folding in expression optimization
2020-06-04 20:22:37 +02:00
Irmen de Jong
9ca1c66f2b
added some optimizations for >= 0 and <0 comparisons for integers
2020-06-04 01:43:37 +02:00
Irmen de Jong
33647a29d0
be smarter about certain implicit type casts
2020-06-03 23:55:41 +02:00
Irmen de Jong
02b12cc762
optimized swap() for byte and word vars, optimized graphics line routine
2020-06-03 23:27:50 +02:00
Irmen de Jong
3280993e2a
stricter type checking in assignments (less implicit typecasts)
2020-06-02 22:36:57 +02:00
Irmen de Jong
3723c22054
fix string param type
2020-06-02 02:09:52 +02:00
Irmen de Jong
0a2c4ea0c4
improved ast printing
2020-06-02 01:51:27 +02:00
Irmen de Jong
58a83c0439
improved code gen for passing string and array types.
2020-06-02 01:44:42 +02:00
Irmen de Jong
d665489054
implemented asm for addressof-assignment
2020-06-02 00:31:56 +02:00
Irmen de Jong
9200992024
slightly improved asm gen error messages
2020-06-02 00:31:20 +02:00
Irmen de Jong
6408cc46a8
cmdrx16 github ref
2020-05-15 00:32:45 +02:00
Irmen de Jong
961bcdb7ae
some more todo's noted down
2020-05-15 00:24:25 +02:00
Irmen de Jong
edee70cf31
use new api for ast mods in unused code remover
2020-05-15 00:16:53 +02:00
Irmen de Jong
1978a9815a
version 2.0
2020-05-14 23:59:18 +02:00
Irmen de Jong
f5e6db9d66
big compiler speedup due to optimized scope lookups
2020-05-14 23:59:02 +02:00
Irmen de Jong
a94bc40ab0
performance todo's
2020-05-08 20:41:10 +02:00
Irmen de Jong
534b5ced8f
updated the compiled examples
2020-04-10 23:36:29 +02:00
Irmen de Jong
5ebd9b54e4
added some more optimized array assignments
2020-04-10 23:30:19 +02:00
Irmen de Jong
cc4e272526
the new assignment code (once complete) really is a big enough change to bump the version to 2.0
2020-04-09 00:24:37 +02:00
Irmen de Jong
295e199bfa
optimized asm output for unneeded typecasts, fixed parent node linking issues with replaceChildNode, Assignment aug_op field is now mutable to avoid having to recreate many Assignment nodes
2020-04-09 00:12:50 +02:00
Irmen de Jong
df3371b0f0
slight gfx optimizations
2020-04-08 22:53:23 +02:00
Irmen de Jong
e4fe1d2b8d
attempts to optimize in-place assignments
2020-04-08 03:11:38 +02:00
Irmen de Jong
b8b9244ffa
merged AddressOfInserter into StatementReorderer
2020-04-06 15:23:54 +02:00
Irmen de Jong
3be3989e1c
version
2020-04-06 14:31:23 +02:00
Irmen de Jong
ed54cf680a
fixed ast parent link bug in AstWalker, rewrote StatementReorderer using new API, when labels are sorted.
2020-04-06 14:31:02 +02:00
Irmen de Jong
95e76058d3
version
2020-04-03 23:55:29 +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
f01173d8db
fixed compilation of clear/set_carry() and clear/set_irqd() functions
2020-04-03 00:00:58 +02:00
Irmen de Jong
15e8e0bf6d
implemented asm for lsr array values
2020-04-02 23:38:45 +02:00
Irmen de Jong
2c59cbdece
fixed a crash in astchecking of array init values
2020-04-02 18:40:04 +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
267adb4612
doc
2020-03-29 03:06:51 +02:00
Irmen de Jong
05c73fa8bc
version
2020-03-28 17:06:59 +01:00
Irmen de Jong
bfe9f442e6
balloon
2020-03-28 17:06:17 +01:00
Irmen de Jong
0deadb694b
updated the compiled examples
2020-03-28 14:31:31 +01:00
Irmen de Jong
bed34378be
doc
2020-03-28 14:24:00 +01:00
Irmen de Jong
5927cf2d43
added turtle graphics example
2020-03-28 14:17:35 +01:00
Irmen de Jong
fffe36e358
fix bresenham line
2020-03-28 13:42:24 +01:00
Irmen de Jong
fac2a2d7cb
fast asm plot
2020-03-28 00:36:44 +01:00
Irmen de Jong
0af5582ca7
fix compiler crash for undefined symbol in expression
2020-03-27 23:09:46 +01:00
Irmen de Jong
582d31263c
better lines and circles
2020-03-27 00:09:17 +01:00
Irmen de Jong
4108a528e1
proepr compiler error when there's no main module
2020-03-26 23:22:01 +01:00
Irmen de Jong
ab7d7c2907
fix comparison of memory expressions (this error prevented some optimizations)
2020-03-26 22:59:42 +01:00
Irmen de Jong
152888ee93
fix direcetmemoryread invalid asm
2020-03-26 22:46:05 +01:00
Irmen de Jong
22f8f4f359
fixed memory pointer access asm code for direct reads and direct assignments
2020-03-26 19:20:39 +01:00
Irmen de Jong
5f3a9e189a
doc
2020-03-26 01:20:04 +01:00
Irmen de Jong
b734dc44fd
fix invalid assembly for @(address)++/--
2020-03-26 01:13:20 +01:00
Irmen de Jong
fab224f509
fix compiler crashing with invalid array initializer built from single integer
2020-03-25 01:23:54 +01:00
Irmen de Jong
2f05ebb966
bitmap lines and circles
2020-03-25 01:07:42 +01:00
Irmen de Jong
a335ba519a
fix warnings about unreachable code
2020-03-24 22:37:42 +01:00
Irmen de Jong
8805693ed2
cleaned up the way return statements are added to avoid code falling through in/out of subroutines
2020-03-24 22:02:50 +01:00
Irmen de Jong
f2bb238e9b
cleaned up various ast checks/mutations
2020-03-24 19:37:54 +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
3881ebe429
begun skramble clone
2020-03-24 01:47:02 +01:00
Irmen de Jong
29d1b8802e
whitespace
2020-03-24 00:24:51 +01:00
Irmen de Jong
bcc75732e9
optimize asm jsr+rts into jmp
2020-03-23 23:51:27 +01:00
Irmen de Jong
50a85ee6b0
attempt to optimize asm for bitshifts more.
2020-03-23 22:59:29 +01:00
Irmen de Jong
2c7424fd43
fix: datatype mismatch in optimized bitshift const value
2020-03-23 22:35:23 +01:00
Irmen de Jong
7426587c38
fix: add proper return statement type cast if needed, now also for non constant values
2020-03-23 19:49:11 +01:00
Irmen de Jong
1f39749a5e
tweak bitshift asm
2020-03-23 17:35:58 +01:00
Irmen de Jong
ca63051c71
replaced todo's that aren't real todo's with regular exception
2020-03-23 13:00:44 +01:00
Irmen de Jong
6dd44aaf0d
compiler main cleanup
2020-03-23 02:54:04 +01:00
Irmen de Jong
f89457ba68
fixed var initialization bug in anonymous scopes
2020-03-23 02:09:30 +01:00
Irmen de Jong
efef205fcf
doc
2020-03-23 01:24:54 +01:00
Irmen de Jong
0c561d8528
fixed subroutine parameter value issue
2020-03-23 00:13:46 +01:00
Irmen de Jong
8bfa2c4c02
proper initialization of block-level global variables
2020-03-22 22:47:05 +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
3a99115070
Initial variable values semantics changed: now always sets value at program (re)start (except strings/arrays).
...
This may change later by introducing a compiler option to choose a strategy, perhaps.
2020-03-22 15:12:26 +01:00
Irmen de Jong
7232134931
fix some compiler errors
2020-03-22 13:47:13 +01:00
Irmen de Jong
954e911eb3
optimized zeros array initializer
2020-03-22 02:58:51 +01:00
Irmen de Jong
63c073c93f
got rid of the Simulator / AST VM
2020-03-22 02:50:34 +01:00
Irmen de Jong
78feef9d59
simplified handling of initial vardecl values in codegeneration
2020-03-22 02:45:42 +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
9409f17372
bugfixes in new optimization routines
2020-03-21 23:09:18 +01:00
Irmen de Jong
43781c02d0
tweaked ast modifications
2020-03-21 18:42:40 +01:00
Irmen de Jong
824f06e17f
new var init values
2020-03-21 14:54:19 +01:00
Irmen de Jong
21dbc6da97
doc
2020-03-21 12:51:32 +01:00
Irmen de Jong
270ea54ff7
now properly compile assignment of struct literal value to struct variable (outside of vardecl)
2020-03-21 00:57:20 +01:00
Irmen de Jong
771ac7aba7
error when struct literal value element count doesn't match struct members in assignment
2020-03-20 23:14:03 +01:00
Irmen de Jong
97d36243f2
don't include the generated parser java files in git
2020-03-20 22:53:56 +01:00
Irmen de Jong
511b47bac4
fix compiler crash when initializing struct var with something other than a struct literal
2020-03-20 22:48:33 +01:00
Irmen de Jong
f265199fbe
replaced typecastsAdder with version based on astwalker
2020-03-20 22:28:18 +01:00
Irmen de Jong
a191ec71a4
this is not modifying the ast
2020-03-19 23:16:58 +01:00
Irmen de Jong
82dce2dd53
added Foreverloop statement to the ast simulator
2020-03-19 22:45:27 +01:00
Irmen de Jong
29ac160811
applying new astwalker for modifications
2020-03-19 22:40:49 +01:00
Irmen de Jong
5e50ea14f8
applying new astwalker for modifications
2020-03-19 21:30:01 +01:00
Irmen de Jong
40e6091506
new astvisitor tryout
2020-03-19 00:01:57 +01:00
Irmen de Jong
0ee4d420b1
slight tweaks on the Ast, Program (the top level) is now a Node as well
2020-03-18 22:29:30 +01:00
Irmen de Jong
66acce9e8e
doc
2020-03-15 01:49:16 +01:00
Irmen de Jong
6c23ae14ab
ver
2020-03-15 01:37:01 +01:00
Irmen de Jong
6f000d0d26
fix datatype warning
2020-03-15 01:14:44 +01:00
Irmen de Jong
9d7eb3be5a
fix error reporting of constantfolding, and number of errors printed
2020-03-15 01:10:08 +01:00
Irmen de Jong
835555171e
fix function call arg type mismatch crash
2020-03-15 00:50:59 +01:00
Irmen de Jong
68ce4a1bf0
labels are now prefixed with underscore in assembly to fix undefined symbol errors from the assembler
2020-03-15 00:23:54 +01:00
Irmen de Jong
a995867deb
added check for duplicate label definitions
2020-03-15 00:16:50 +01:00
Irmen de Jong
6bd99d63b4
cleanup of error reporting
2020-03-14 23:47:26 +01:00
Irmen de Jong
baf5d3041a
cleanup of error reporting
2020-03-14 23:15:44 +01:00
Irmen de Jong
a326ffa00a
added warning about sgn() of unsigned type
2020-03-14 21:09:34 +01:00
Irmen de Jong
d28dd92b47
refreshed examples
2020-03-14 18:11:38 +01:00
Irmen de Jong
1de328b2e8
added forever-loop and optimizer
2020-03-14 18:11:04 +01:00
Irmen de Jong
51bb902162
added bresenham and circle example
2020-03-14 17:11:10 +01:00
Irmen de Jong
4fd14f1366
doc updates
2020-03-14 15:20:04 +01:00
Irmen de Jong
91d9559f79
avoid pulling in the dbus libraries for now
2020-03-14 14:40:39 +01:00
Irmen de Jong
3245a9b157
restricted block to only directive/subroutine/vardecl/inlineasm
2020-03-14 14:20:55 +01:00
Irmen de Jong
2b28493bba
simplified module grammar rules
2020-03-14 13:44:13 +01:00
Irmen de Jong
1382728bd2
warning about unreachable code after a return statement
...
added some dbus experiments for future compilation service
2020-03-14 13:12:01 +01:00
Irmen de Jong
0422ad080a
added exit function to astvm simulator
2020-03-13 02:44:01 +01:00
Irmen de Jong
64d682bfde
todo
2020-03-13 02:33:02 +01:00
Irmen de Jong
b182f7e693
optimizer removes unreachable code following call to exit()
2020-03-13 02:31:53 +01:00
Irmen de Jong
e6be428589
compiler warning for unreachable code following a call to exit()
2020-03-13 02:21:37 +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
796d07a7f8
fix crash in asm code generated for bitshift operation with memory address operand
2020-03-13 01:26:53 +01:00
Irmen de Jong
2af86a10b2
remove stack error comments
2020-03-13 00:52:52 +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
87e5a9859a
remove autogenerated labels from vice mon list, fixes #17
2020-03-12 22:33:58 +01:00
Irmen de Jong
b036e5ed72
refreshed the compiled examples
2020-03-12 01:14:10 +01:00
Irmen de Jong
5f1ec80ae0
improved array literal datatype handling, fixed some datatype compiler errors related to this
2020-03-12 01:10:19 +01:00
Irmen de Jong
fbecedaf41
added error for unsupported sort(floatarray)
2020-03-11 23:33:06 +01:00
Irmen de Jong
aa36acd65a
implemented reverse(floatarray) builtin function
2020-03-11 23:18:03 +01:00
Irmen de Jong
8d1a4588d3
added 'downto' range expression
2020-03-11 20:59:14 +01:00
Irmen de Jong
66d2af4453
added '@' alternative string/char encoding
2020-03-11 00:41:58 +01:00
Irmen de Jong
ef6c731bb3
added '@' alternative string/char encoding
2020-03-11 00:32:50 +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
3162b10392
optimize callgraph
2020-03-10 21:47:15 +01:00
Irmen de Jong
e2358de27c
ver
2020-03-10 20:39:30 +01:00
Irmen de Jong
7facb4f372
correct version 1.70
2020-02-09 01:41:05 +01:00
Irmen de Jong
ee90fed489
readme
2020-02-09 01:33:20 +01:00
Irmen de Jong
4796c56c35
antlr code back
2020-02-09 01:29:58 +01:00
Irmen de Jong
e2cb031386
added 'void' keyword to explicitly ignore subroutine return values (and no longer get a warning)
2020-02-09 01:29:09 +01:00
Irmen de Jong
a0bc97b90c
fix byte array iteration for bb in [1,2,3]
...
improved array literal datatype detection
2020-02-09 00:45:53 +01:00
Irmen de Jong
fd240899bd
fix CHROUT in simulator
2020-02-09 00:12:50 +01:00
Irmen de Jong
885b22df40
fixed while and repeat warning messages line number
...
fixed invalid while and repeat asm label names
fixed boolean checking of numbers
2020-02-08 19:45:30 +01:00
Irmen de Jong
11de3db25f
simplified heapId for arrayvalues
2020-02-08 18:49:48 +01:00
Irmen de Jong
14a13da7ec
simplified heapId for stringvalue
2020-02-08 15:54:03 +01:00
Irmen de Jong
875a71c786
removed datatype from StringValue classes (is always STR now)
2020-02-08 02:21:18 +01:00
Irmen de Jong
0ff5b79353
code inspection cleanups
2020-02-08 01:31:41 +01:00
Irmen de Jong
8c4d276810
improvements to string encoding/decoding and text output in the simulator
2020-02-08 01:12:30 +01:00
Irmen de Jong
3dd38c0ac8
antlr library updated to 4.8
2020-02-07 23:58:07 +01:00
Irmen de Jong
b8816a0e2f
got rid of separate str_s datatype
2020-02-07 20:47:38 +01:00
Irmen de Jong
a01a9e76f9
removed bogus clang target
...
fixed various simulator bugs regarding strings and chars
2020-02-07 01:22:07 +01:00
Irmen de Jong
357d704aec
clean up version specifier
2020-02-02 19:33:40 +01:00
Irmen de Jong
868df1865c
got rid of obsolete code
2020-02-02 19:18:40 +01:00
Irmen de Jong
654d74da1e
automatic selection of best Vice C64 emulator executable
2020-02-02 13:39:56 +01:00
Irmen de Jong
59939c727a
gradle updated
2020-02-02 13:39:25 +01:00
Irmen de Jong
fbcf190324
sync gradle version with my manjaro packaged gradle
2020-01-27 21:32:42 +01:00
Irmen de Jong
b9922a90cc
update gradle wrapper to 6.1.1
2020-01-26 18:36:51 +01:00
Irmen de Jong
66e0b07428
gradle updates
2020-01-07 01:29:25 +01:00
Irmen de Jong
01e617ae8f
new kotlin version
2019-12-09 16:17:20 +01:00
Irmen de Jong
52769decd4
fix assembler float truncation warning
2019-11-27 22:36:59 +01:00
Irmen de Jong
165eec4054
started a c++ language compiler code target
...
(meant to be an intermediate step before direct Wasm/binaryen, via clang compilation to wasm)
2019-10-30 00:15:03 +01:00
Irmen de Jong
8c2e602cc7
preparing for multiple compiler backends/targets
2019-10-26 23:41:15 +02:00
Irmen de Jong
b68f141568
some more old code cleanups
2019-10-21 00:12:26 +02: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
b5b24636ae
removed sim65 because it was moved to a separate repository
2019-09-11 02:24:44 +02:00
Irmen de Jong
9dedbbf47c
use more modern java date/time api
2019-09-10 01:29:33 +02:00
Irmen de Jong
c493c3e5c6
implemented IRQ handling
2019-09-09 23:28:41 +02:00
Irmen de Jong
61d4ca1d24
added functional test files to git
2019-09-09 19:57:51 +02:00
Irmen de Jong
2cf9af4a6e
implemented sim timer and clock
2019-09-09 04:51:18 +02:00
Irmen de Jong
bdcd10512f
6502 simulator passes all tests for regular opcodes
2019-09-09 00:27:06 +02:00
Irmen de Jong
fec8db6a75
fixed sbc and adc
2019-09-08 22:35:08 +02:00
Irmen de Jong
b400010426
separated the 6502 test suite into separate unit tests
2019-09-08 19:11:06 +02:00
Irmen de Jong
28109a39ac
clean up of c64 tests
2019-09-08 17:19:40 +02:00
Irmen de Jong
651f0ec445
fixed IZY addressing mode address calc
...
added test harness for Wolfgang Lorenz's 6502 test suite
2019-09-08 16:40:46 +02:00
Irmen de Jong
e61d3df380
added missing testfiles
2019-09-06 01:09:23 +02:00
Irmen de Jong
15710207b2
fixed bcd (but the bcd test code still fails, strange)
2019-09-06 00:38:48 +02:00
Irmen de Jong
adfddddac6
attempt to fix bcd
2019-09-05 21:38:40 +02:00
Irmen de Jong
e46982f652
fixes
2019-09-05 01:41:48 +02:00
Irmen de Jong
900c2aea23
fixed all instructions except BCD arithmetic
2019-09-05 01:26:01 +02:00
Irmen de Jong
42f8e98cab
cpu unit test suite ported from Py65
2019-09-04 22:23:31 +02:00
Irmen de Jong
bed0e33b4f
unit test
2019-09-04 02:41:09 +02:00
Irmen de Jong
8d6542905d
beginnings of 6502 cpu simulator
2019-09-03 23:58:46 +02:00
Irmen de Jong
39798a1a4f
todos
2019-08-29 22:31:29 +02:00
Irmen de Jong
befe4b8e9f
try to fix windows path issue with drive letter
2019-08-27 01:02:31 +02:00
Irmen de Jong
772e48105e
fixed some type cast compiler errors in for loops
2019-08-26 23:38:59 +02:00
Irmen de Jong
9afe451b8d
fix build script to target jdk 1.8
2019-08-26 21:27:45 +02:00
Irmen de Jong
89d469e77e
examples
2019-08-25 00:46:46 +02:00
Irmen de Jong
59a43889a5
examples
2019-08-25 00:24:00 +02:00
Irmen de Jong
7caa0daffc
examples
2019-08-24 21:40:50 +02:00
Irmen de Jong
5e854c2cf8
more forloop asm
2019-08-24 21:26:29 +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
aa94300bdd
added output directory command line option
...
improved cli parser by using kotlinx.cli
2019-08-23 00:11:08 +02:00
Irmen de Jong
2d768c3f28
code cleanups
2019-08-22 22:06:21 +02:00
Irmen de Jong
b79af624ae
added more asmgen for bitshift operations
2019-08-22 00:34:17 +02:00
Irmen de Jong
38208a7c9e
removed fake vm functions
2019-08-21 22:00:05 +02:00
Irmen de Jong
8eff51904e
taking down the heapvalue mess further
2019-08-21 00:29:31 +02:00
Irmen de Jong
c717f4573d
taking down the heapvalue mess further
2019-08-20 23:02:13 +02:00
Irmen de Jong
984d251a6d
taking down the heapvalue mess, RuntimeValue class separation
2019-08-20 00:01:31 +02:00
Irmen de Jong
8c3b43f3ed
taking down the heapvalue mess
2019-08-19 22:28:41 +02:00
Irmen de Jong
0f1485f30b
added sorted, sgn, reverse to the AstVm
2019-08-18 16:39:08 +02:00
Irmen de Jong
eb94c678bd
doc
2019-08-18 14:18:46 +02:00
Irmen de Jong
50d792a121
fix doc about for loops
2019-08-18 14:14:14 +02:00
Irmen de Jong
f0d4654917
v1.60
2019-08-18 14:06:30 +02:00
Irmen de Jong
4ce93b5d9d
restored proper compiler error when trying to modify a constant
2019-08-18 14:05:20 +02:00
Irmen de Jong
fb0d7a1908
some array literals weren't put on the heap
2019-08-18 13:46:13 +02:00
Irmen de Jong
bb7b063757
revert inline var declaration in for loops
2019-08-18 03:16:23 +02:00
Irmen de Jong
c495f54bbb
don't fall-through into nested subroutine
2019-08-18 02:33:42 +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
cbb7083307
fix problem with typechecking of const arrays
2019-08-17 21:43:48 +02:00
Irmen de Jong
d4a17dfad1
fixed builtin functions no longer const-folding over arrays
2019-08-17 20:16:39 +02:00
Irmen de Jong
59f8b91e25
tweak
2019-08-17 18:44:44 +02:00
Irmen de Jong
80113f9208
version 1.52
2019-08-17 16:44:46 +02:00
Irmen de Jong
27f987f0ae
fixed bit shifts, added sgn() function
2019-08-17 16:44:28 +02:00
Irmen de Jong
3ae2597261
irq driven music player example
2019-08-17 13:13:15 +02:00
Irmen de Jong
248e7b808c
split codegen
2019-08-16 22:49:29 +02:00
Irmen de Jong
a983a896f2
some asm and some for loop asm fixed, renamed asmgen2 back to just asmgen
2019-08-16 21:37:27 +02:00
Irmen de Jong
68df1730f5
cleaned up some stuff, improved checking of asmsub statement body
2019-08-14 23:17:50 +02:00
Irmen de Jong
d62ab93b24
word >> 8 optimized to msb(word)
2019-08-14 22:28:44 +02:00
Irmen de Jong
47297f7e31
improved handling of inferredType
2019-08-14 02:25:27 +02:00
Irmen de Jong
b64d611e02
split array and string literal classes
2019-08-13 03:00:17 +02:00
Irmen de Jong
9fb9bcfebd
correction
2019-08-12 23:25:19 +02:00
Irmen de Jong
dff9c5f53e
tweak travis
2019-08-11 22:58:45 +02:00
Irmen de Jong
d4a77321d2
tweak gradle to work with openjdk-11
2019-08-11 22:56:54 +02:00
Irmen de Jong
2665618fa6
zp test added, some cleanups
2019-08-11 22:23:18 +02:00
Irmen de Jong
b5c5560af8
info
2019-08-11 18:21:15 +02:00
Irmen de Jong
065587525e
version
2019-08-11 17:43:14 +02:00
Irmen de Jong
58e5d5c071
hash
2019-08-11 17:32: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
2ce6bc5946
fix strlen
2019-08-11 14:02:53 +02:00
Irmen de Jong
fe5b225732
asmsub stack arg
2019-08-11 12:29:18 +02:00
Irmen de Jong
d499e40a4b
doc tweaks
2019-08-11 10:56:36 +02:00
Irmen de Jong
62a66d89c6
was not needed
2019-08-11 10:15:34 +02:00
Irmen de Jong
e1b26ae287
readme
2019-08-10 21:38:08 +02:00
Irmen de Jong
1c151f4a3f
remove dysfunctional repl
2019-08-10 21:36:26 +02:00
Irmen de Jong
8917926996
new version
2019-08-10 20:45:41 +02:00
Irmen de Jong
b54a9b9831
fix output of word arrays containing addressofs
2019-08-10 20:43:27 +02:00
Irmen de Jong
f08906dba1
fix byte->word typecast
2019-08-10 14:20:42 +02:00
Irmen de Jong
a6bba824d3
fixed some array codegen issues
2019-08-10 12:55:27 +02:00
Irmen de Jong
fd84152a2b
import cleanups
2019-08-09 02:21:04 +02:00
Irmen de Jong
3466106119
fixed some array codegen issues
2019-08-09 02:15:31 +02:00
Irmen de Jong
c79b587eea
nonconst forloops (bytes)
2019-08-08 23:13:02 +02:00
Irmen de Jong
4862fb7db1
asmsub return value in registers is now put on evalstack, and loopvar sequence numbering
2019-08-08 00:13:58 +02:00
Irmen de Jong
2136db0e61
fix auto var naming collisions
2019-08-07 22:25:57 +02:00
Irmen de Jong
2f0c0f6fcd
fix function arguments
2019-08-07 02:31:27 +02:00
Irmen de Jong
7ddc01f883
added continuous compilation mode (file watching)
2019-08-05 23:36:24 +02:00
Irmen de Jong
126c2162f1
syntax fix in readme
2019-08-05 21:11:58 +02:00
Irmen de Jong
094c8ab94c
Merge branch 'asmgen2-ast-only'
2019-08-05 21:07:32 +02:00
Irmen de Jong
efe2723874
version
2019-08-05 21:06:41 +02:00
Irmen de Jong
bccfeb2fa2
fix some unittests
2019-08-05 21:04:15 +02:00
Irmen de Jong
d498d5445c
added more examples/test programs
2019-08-05 21:01:41 +02:00
Irmen de Jong
5095d090cc
added optimized multiplications to asmgen2
2019-08-05 21:00:55 +02:00
Irmen de Jong
6544fcdc36
fixed output of force_output blocks
2019-08-04 23:08:58 +02:00
Irmen de Jong
e834924857
more ++ and -- code, 'dontuse' zeropage option
2019-08-04 22:44:20 +02:00
Irmen de Jong
2c3b8a9819
more ++ and -- code, 'dontuse' zeropage option
2019-08-04 22:35:27 +02:00
Irmen de Jong
309c82fc9e
fixed some compiler errors
2019-08-04 19:54:32 +02:00
Irmen de Jong
0f91ce6441
removed a few more hazardous zp addresses
2019-08-04 19:40:31 +02:00
Irmen de Jong
f29ec3b4e1
relaxed symbol shadowing
2019-08-04 18:52:03 +02:00
Irmen de Jong
cc1fc869cf
fix param type casts for builtin functions
2019-08-04 18:25:00 +02:00
Irmen de Jong
0431d3cddc
implemented asm for continue and break
2019-08-04 16:05:50 +02:00
Irmen de Jong
a1cd202cd2
some more array asm
2019-08-04 15:33:00 +02:00
Irmen de Jong
b842493cf0
trying to fix arithmetic and funcion calls and var scoping issues
2019-08-03 13:21:38 +02:00
Irmen de Jong
4718f09cb7
trying to fix arithmetic and funcion calls
2019-08-03 01:51:12 +02:00
Irmen de Jong
e9c357a885
fix range typing issues and function call param cleanup bug for asmsub
2019-08-02 01:26:28 +02:00
Irmen de Jong
fb00ff74d1
simplistic repeat and while loops
2019-08-01 21:23:55 +02:00
Irmen de Jong
b740b079db
simplified mapping of builtin functions to just a jsr
2019-08-01 21:03:21 +02:00
Irmen de Jong
6394841041
fix byte/word add/sub mixup
2019-08-01 20:42:09 +02:00
Irmen de Jong
3f4050c647
more for loops, words
2019-08-01 00:35:25 +02:00
Irmen de Jong
82f01d84c2
more for loops
2019-07-31 22:15:20 +02:00
Irmen de Jong
299ea72d70
various for loops
2019-07-31 21:47:30 +02:00
Irmen de Jong
50aa286d3a
begin of for asm
2019-07-31 00:54:04 +02:00
Irmen de Jong
6f7322150f
fix string literal replacing by identifierref
2019-07-31 00:14:12 +02:00
Irmen de Jong
cc9965cc96
improved deduction of array datatypes
2019-07-30 23:35:25 +02:00
Irmen de Jong
ae90a957c6
fix var prefix issues in asm gen of anonscopes
2019-07-30 21:13:52 +02:00
Irmen de Jong
8cec032e7d
more asm for byte writes to memory
2019-07-30 02:49:13 +02:00
Irmen de Jong
3732ab1e62
fix compilation errors
2019-07-30 02:26:30 +02:00
Irmen de Jong
fba149ee28
removed the ~ before block names
2019-07-29 23:11:13 +02:00
Irmen de Jong
4661cba974
asm for when statements added
2019-07-29 22:47:04 +02:00
Irmen de Jong
025be8cb7c
fix infinte loop in constantfolding of when choices
2019-07-29 22:06:59 +02:00
Irmen de Jong
3aea32551b
fixes
2019-07-29 02:47:01 +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
2c25df122a
merge strings in asm output
2019-07-28 21:29:49 +02:00
Irmen de Jong
7cb5702b37
array asm
2019-07-28 21:03:09 +02:00
Irmen de Jong
b7502c7eaa
fixed some node update issues in Modifying Ast visitor
2019-07-28 15:18:53 +02:00
Irmen de Jong
fed020825a
some more asmgen v2; fixed duplicate label namings, if stmt, and vars in anon scopes
2019-07-28 13:12:13 +02:00
Irmen de Jong
1c411897df
some more asmgen v2, and seemingly useless assignments to memory variables are no longer optimized away
2019-07-27 03:11:15 +02:00
Irmen de Jong
f94e241fb2
fix array datatypes in vardecls
2019-07-26 23:51:53 +02:00
Irmen de Jong
757cbfd1ba
readme
2019-07-24 00:45:04 +02:00
Irmen de Jong
3de80319db
readme
2019-07-24 00:43:37 +02:00
Irmen de Jong
f9617d777a
floats from rom
2019-07-24 00:39:01 +02:00
Irmen de Jong
9961a404ae
got rid of bytecode based compiler and vm
2019-07-23 20:44:11 +02:00
Irmen de Jong
776c844d02
more ast-codegen v2
2019-07-23 01:36:49 +02:00
Irmen de Jong
03782a37a2
begin of ast-codegen v2
2019-07-21 23:50:13 +02:00
Irmen de Jong
173663380b
slight optimization for creating the asmpatterns list
2019-07-20 22:37:16 +02:00
Irmen de Jong
c6fdd65c63
shuffling some things around
2019-07-18 22:23:31 +02:00
Irmen de Jong
d9546f9dc7
version
2019-07-18 01:38:35 +02:00
Irmen de Jong
2a6b0f5db7
remove some more dead code
2019-07-18 01:31:12 +02:00
Irmen de Jong
b4e1b42cec
remove some dead code
2019-07-17 22:35:38 +02:00
Irmen de Jong
a8898a5993
using sealed class instead of interface
2019-07-17 02:35:26 +02:00
Irmen de Jong
e03c68b632
optimize imports
2019-07-17 02:11:16 +02:00
Irmen de Jong
a0074de12b
updated the compiled examples
2019-07-17 00:39:03 +02:00
Irmen de Jong
411bedcc46
fixed assignment type error with structs
...
added structs example
2019-07-16 23:56:00 +02:00
Irmen de Jong
07d8caf884
string literal concatenation and repeating added again
2019-07-16 23:34:43 +02:00
Irmen de Jong
c0e83ef8df
wordings
2019-07-16 21:31:14 +02:00
Irmen de Jong
4dbf4b2005
tweaks about initialization values
2019-07-16 20:32:23 +02:00
Irmen de Jong
61af72b906
struct literals
2019-07-16 02:36:32 +02:00
Irmen de Jong
17be722e2b
arrays without init value are once again cleared with zeros
2019-07-15 23:05:04 +02:00
Irmen de Jong
16d7927d2f
fix arrays and some struct parsing issues
2019-07-15 22:28:05 +02:00
Irmen de Jong
55a7a5d9d5
fix aggregate functions in astvm
2019-07-15 03:57:51 +02:00
Irmen de Jong
78d7849197
fixes
2019-07-15 03:08:26 +02:00
Irmen de Jong
d5b12fb01d
made astchecker readonly
2019-07-15 01:47:59 +02:00
Irmen de Jong
31f4e378aa
split up Literalvalue into numeric and reference ones
2019-07-15 01:11:32 +02:00
Irmen de Jong
8a26b7b248
- fixed lookup of members in structs defined in another scope
...
- preserve order of variable definitions in the Ast (and thus, the output)
2019-07-13 23:03:22 +02:00
Irmen de Jong
87c28cfdbc
restructure c64 machinedefinition
2019-07-13 03:16:48 +02:00
Irmen de Jong
1f5420010d
prevent struct member vars from shuffling around, can take address of struct now
2019-07-13 01:16:34 +02:00
Irmen de Jong
a089c48378
finalize v 1.11
2019-07-12 20:31:18 +02:00
Irmen de Jong
3e5deda46c
struct finished
2019-07-12 20:07:41 +02:00
Irmen de Jong
7500c6efd0
struct fixes
2019-07-12 17:57:56 +02:00
Irmen de Jong
717b5f3b07
struct fixes
2019-07-12 16:40:18 +02:00
Irmen de Jong
9f6fa60bf1
prepare
2019-07-12 14:38:37 +02:00
Irmen de Jong
1e9586f635
Structs can be compiled and executed in the vm! structs are just syntactic sugar for a set of variables for now.
2019-07-12 12:41:08 +02:00
Irmen de Jong
44f9d5e69e
added struct syntax
2019-07-12 06:14:59 +02:00
Irmen de Jong
7c9b8f7d43
cleaned up some buildprocess scripts
2019-07-11 17:27:57 +02:00
Irmen de Jong
845a99d623
return statement only has one single possible value
...
astvm can now more or less run all examples
2019-07-10 19:27:44 +02:00
Irmen de Jong
3d7a4bf81a
astvm can now more or less run all examples
2019-07-10 18:44:54 +02:00
Irmen de Jong
d4b3e35bd2
astvm almost complete
2019-07-10 16:50:41 +02:00
Irmen de Jong
a59f7c75dc
fixed some compile time and vm arithmetic errors
2019-07-10 13:33:52 +02:00
Irmen de Jong
44fe2369d6
multitarget assignments removed
2019-07-10 10:11:37 +02:00
Irmen de Jong
aaaab2cfcf
fix asm gen for loops when dealing with registers as loopvar
2019-07-10 08:51:05 +02:00
Irmen de Jong
9a3dab20dc
extra warnings about register usage in loops
2019-07-10 08:30:17 +02:00
Irmen de Jong
20379b5927
fixed astvm postincrdecr and rsave/rrestore
2019-07-10 08:13:42 +02:00
Irmen de Jong
34dcce67e4
fixed petscii conversion when printing text
2019-07-10 07:10:34 +02:00
Irmen de Jong
0c7f107d01
fix irq routine removal
2019-07-10 03:57:03 +02:00
Irmen de Jong
1f89571aa5
proper NOP removal
2019-07-10 03:06:31 +02:00
Irmen de Jong
7eed1ebbf8
optimized typecasting more
2019-07-10 02:54:39 +02:00
Irmen de Jong
12cb7d7abe
optimize redundant typecasts more
2019-07-10 01:52:04 +02:00
Irmen de Jong
c9b16dcbd9
nicer printing of arrays, fix inc/dec overflow issue in runtimevalue
2019-07-10 01:16:32 +02:00
Irmen de Jong
dcab6d00bb
ver
2019-07-10 00:50:18 +02:00
Irmen de Jong
a85743f241
docs about 'when' statement
2019-07-10 00:45:53 +02:00
Irmen de Jong
14cabde5cf
when statement extended with multiple choice values
2019-07-10 00:25:21 +02:00
Irmen de Jong
cc078503e3
tehtriz example uses when statement
2019-07-09 23:39:03 +02:00
Irmen de Jong
2a0c3377f9
fixed Nop statements without parent
2019-07-09 23:27:09 +02:00
Irmen de Jong
16454f5560
optimized when asm
2019-07-09 21:59:50 +02:00
Irmen de Jong
c1343a78f1
when working correctly in asm (corrected dup & cmp)
2019-07-09 21:41:47 +02:00
Irmen de Jong
9d0c65c682
when working correctly in stackvm and astvm
2019-07-09 20:39:08 +02:00
Irmen de Jong
9e6408244f
fix scoping of variables in when statement
2019-07-09 19:44:59 +02:00
Irmen de Jong
3581017489
added ast printing of when statement
2019-07-09 09:02:56 +02:00
Irmen de Jong
9bc36b4d99
Merge remote-tracking branch 'origin/master'
...
# Conflicts:
# compiler/src/prog8/ast/Interfaces.kt
# compiler/src/prog8/ast/expressions/AstExpressions.kt
# compiler/src/prog8/ast/processing/AstChecker.kt
# compiler/src/prog8/ast/processing/IAstModifyingVisitor.kt
# compiler/src/prog8/ast/processing/IAstVisitor.kt
# compiler/src/prog8/ast/processing/StatementReorderer.kt
# compiler/src/prog8/ast/statements/AstStatements.kt
# compiler/src/prog8/compiler/AstToSourceCode.kt
# compiler/src/prog8/compiler/target/c64/AsmGen.kt
# compiler/src/prog8/optimizer/StatementOptimizer.kt
# examples/test.p8
2019-07-09 08:44:23 +02:00
Irmen de Jong
e8caf6d319
1.9
2019-07-09 08:42:38 +02:00
Irmen de Jong
5b9cc9592f
removed kotlin.reflection dependency
...
optimized gradle build now using shadowjar
2019-07-09 08:27:47 +02:00
Irmen de Jong
3cf87536ff
fix asmsub syntax
2019-07-09 07:24:21 +02:00
Irmen de Jong
cc452dffb8
restructure asmgen to improve compilation and IDE performance issues
2019-07-09 06:23:11 +02:00
Irmen de Jong
e414d301a4
script fixes
2019-07-09 05:09:13 +02:00
Irmen de Jong
5ff79073f4
added DUP opcodes
2019-07-09 04:09:29 +02:00
Irmen de Jong
70462ffe6d
syntax check and optimization of 'when'
2019-07-09 02:42:56 +02:00
Irmen de Jong
158fe7596b
astvm eval of 'when'
2019-07-09 00:17:34 +02:00
Irmen de Jong
f4f113da7b
parser for 'when' statement
2019-07-09 00:02:38 +02:00
Irmen de Jong
d6b6254b72
simplified the asmsub syntax
2019-07-08 23:00:18 +02:00
Irmen de Jong
65fa8c4613
ast source printer fixes
2019-07-08 22:29:22 +02:00
Irmen de Jong
c1102393bb
should not shuffle assignments.
2019-07-08 22:18:25 +02:00
Irmen de Jong
dbe048158c
cleaned up the ast processing:
...
- visitor pattern names are now used for the interfaces and the methods
- separated a modifying and a read-only ast visitor
There is now also an AstPrinter that produces original source code back from an AST
2019-07-08 21:51:16 +02:00
Irmen de Jong
2b3382ff8e
cleaned up the ast processing:
...
- visitor pattern names are now used for the interfaces and the methods
- separated a modifying and a read-only ast visitor
There is now also an AstPrinter that produces original source code back from an AST
2019-07-08 21:32:32 +02:00
Irmen de Jong
c970d899fa
DirectMemoryWrite is not an expression
2019-07-08 16:59:11 +02:00
Irmen de Jong
3c563d281a
restructuring more things
2019-07-08 15:13:24 +02:00
Irmen de Jong
1794f704e7
restructuring more things
2019-07-08 14:38:51 +02:00
Irmen de Jong
ade7a4c398
restructuring vm
2019-07-08 13:40:52 +02:00
Irmen de Jong
5a27b035b0
restructuring of the AST package
2019-07-08 13:33:31 +02:00
Irmen de Jong
e84bb8d94a
some attempts to make the gradle build faster
2019-07-08 12:26:15 +02:00
Irmen de Jong
5ed0893d96
tweak
2019-07-02 22:27:31 +02:00
Irmen de Jong
89314a0e1a
fix reading and writing rtc jiffy clock, memory can now intercept reads and writes
2019-07-02 20:48:14 +02:00
Irmen de Jong
fd0abf61df
fix build script docs
2019-07-02 04:56:31 +02:00
Irmen de Jong
ac70ae6a76
scripts
2019-07-02 04:39:53 +02:00
Irmen de Jong
d83f49d84f
remove unused variables, subroutines, blocks
2019-07-02 04:29:51 +02:00
Irmen de Jong
ff1294207e
improved parameter name shadowing check
2019-07-02 00:32:55 +02:00
Irmen de Jong
a56956797a
chars can now have a color
2019-07-01 23:41:30 +02:00
Irmen de Jong
3242495b0b
slightly improved warning about implicit float casts
2019-07-01 18:43:39 +02:00
Irmen de Jong
49eb7e7803
remove bogus
2019-07-01 18:11:16 +02:00
Irmen de Jong
1d7f0d3537
streamline moving values to heap
2019-07-01 18:01:36 +02:00
Irmen de Jong
31137743f0
simplified string handling a little in LiteralValue
2019-07-01 14:19:41 +02:00
Irmen de Jong
2c69e10489
heapId writable
2019-07-01 14:10:52 +02:00
Irmen de Jong
3a1fa9e069
fixed constantfolding of array values
2019-07-01 13:53:29 +02:00
Irmen de Jong
2c08d2f9c6
fix array size in vardecls
2019-06-30 20:10:53 +02:00
Irmen de Jong
4743cacb73
fix swap()
2019-06-30 18:06:11 +02:00
Irmen de Jong
5f5a1447e0
array on heap fix
2019-06-30 17:58:08 +02:00
Irmen de Jong
a3004555a8
branch
2019-06-30 17:07:08 +02:00
Irmen de Jong
267c678292
more swap logic, some typing fixes
2019-06-28 22:10:01 +02:00
Irmen de Jong
6c50043a4a
swap isn't yet finished
2019-06-28 02:57:13 +02:00
Irmen de Jong
3ee1b2efdd
left and right of a binary expression should usually have the same datatype, insert typecast if needed
2019-06-28 02:39:55 +02:00
Irmen de Jong
75d8c832ad
implemented Jump
2019-06-28 01:21:31 +02:00
Irmen de Jong
53a4379c45
implemented all builtin functions in the AstVm
2019-06-28 00:10:27 +02:00
Irmen de Jong
29b3a7e94e
optimize redundant typecasts, fix some runtime type casting errors
2019-06-27 21:09:21 +02:00
Irmen de Jong
0782f6ecf1
function call arguments
2019-06-27 00:07:41 +02:00
Irmen de Jong
595e58ec46
taking care of memory mapped vars
2019-06-26 03:28:34 +02:00
Irmen de Jong
060e05c868
strlen and strings with zeros in them should terminate at the zero
2019-06-26 02:34:43 +02:00
Irmen de Jong
f49eefad6f
some builtin functions
2019-06-26 00:01:23 +02:00
Irmen de Jong
d68360461b
registers
2019-06-25 22:48:40 +02:00
Irmen de Jong
343978d164
for loop and cleaner iteration over values
2019-06-25 21:49:02 +02:00
Irmen de Jong
b11d10e2ff
fix Return when dealing with non-subroutine scopes
2019-06-25 01:44:57 +02:00
Irmen de Jong
268856823a
got rid of old Value in favor of new RuntimeValue implementation
2019-06-24 22:45:27 +02:00
Irmen de Jong
4bac5043b6
fix integer wraparounds for RuntimeValue
2019-06-24 22:18:50 +02:00
Irmen de Jong
eb25b4c800
fix some initial value datatypes and type casting in assignments
2019-06-24 04:09:30 +02:00
Irmen de Jong
a079e44b02
fix some initial value datatypes and type casting in assignments
2019-06-24 01:31:25 +02:00
Irmen de Jong
e53c860f1a
first go at ast-based virtual machine (rather than the stackvm that uses intermediate code)
2019-06-24 00:17:48 +02:00
Irmen de Jong
99121004bf
more sensible subroutine inlining
2019-06-23 20:06:35 +02:00
Irmen de Jong
6dd3371781
some infix functions
2019-06-23 15:43:52 +02:00
Irmen de Jong
f473be8951
simple cleaup script
2019-06-23 14:10:50 +02:00
Irmen de Jong
ebd38f27e6
cleaned up some symbol visibilities
2019-06-23 13:49:35 +02:00
Irmen de Jong
a6c3251668
simple subroutine inlining
2019-06-23 03:15:23 +02:00
Irmen de Jong
560047adee
variables init subroutine must never be optimized away (fixes primes example)
2019-06-21 23:56:45 +02:00
Irmen de Jong
a86852874f
readme
2019-06-21 23:41:20 +02:00
Irmen de Jong
6d44d6a901
travis ci
2019-06-21 23:22:34 +02:00
Irmen de Jong
968f02823f
travis ci
2019-06-21 23:14:53 +02:00
Irmen de Jong
5d321d759e
travis ci
2019-06-21 23:12:25 +02:00
Irmen de Jong
7de7d5234f
callgraph fixed scanning asm subroutines, and deletion of unused subs and modules
2019-06-21 23:08:29 +02:00
Irmen de Jong
b374af3526
remove unused/empty modules
2019-06-21 00:12:22 +02:00
Irmen de Jong
b35430214b
some more program node cleanups
2019-06-20 21:46:59 +02:00
Irmen de Jong
e96d3d4455
update kotlin version
...
cleaning up the way the root of the Ast and the global namespace work (introduced ProgramAst node)
2019-06-20 20:15:18 +02:00
Irmen de Jong
6a17f7a0ad
Merge remote-tracking branch 'origin/master'
2019-05-30 16:04:09 +02:00
Irmen de Jong
c559682c0b
refresh IDE project files
2019-05-30 16:03:53 +02:00
Irmen de Jong
6ce1277438
fix classpaths in windows command files
2019-05-06 17:14:13 +02:00
Irmen de Jong
262e0bd6b9
fix avg() on float arrays
2019-04-21 03:04:36 +02:00
Irmen de Jong
755af6010e
fix some more issues with array vardecls without array size specifier
2019-04-21 03:04:13 +02:00
Irmen de Jong
0298cf8b90
scripts use gradle build dirs
2019-04-20 13:26:04 +02:00
Irmen de Jong
a6d0aecd66
fix invalid assignment reordering
2019-04-20 13:24:42 +02:00
Irmen de Jong
ef6e364339
intellij idea config
2019-04-20 01:18:47 +02:00
Irmen de Jong
3b37e0f99d
new build scripts
2019-04-20 00:50:15 +02:00
Irmen de Jong
78fbbf7119
%asmbinary implemented
2019-04-17 01:33:07 +02:00
Irmen de Jong
0ee43294c4
check for file with %asmbinary, %asminclude
2019-04-17 00:55:42 +02:00
Irmen de Jong
a81b82495c
fix wrong values generated from range expression in array vardecl
2019-04-17 00:27:27 +02:00
Irmen de Jong
390043e9e8
some fixes in syntaxchecking array initializer values
2019-04-16 01:50:12 +02:00
Irmen de Jong
e384822b2c
array size in vardecl is optional when initializer array value is given
2019-04-16 01:19:51 +02:00
Irmen de Jong
730e08698d
comment
2019-04-13 00:58:39 +02:00
Irmen de Jong
5497de4234
optimize @( &thing )) in ast into just thing
2019-04-12 23:59:26 +02:00
Irmen de Jong
c71b78dee6
use array of pointers to blocks instead of a large if statement
2019-04-12 23:35:27 +02:00
Irmen de Jong
dfcb57a0b0
couple of small shortcuts on identifier ast to lookup what it is pointing to
2019-04-12 23:04:19 +02:00
Irmen de Jong
f219ae43f7
more inspiring code example
2019-04-12 22:34:43 +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
35aa954be8
doc
2019-04-12 01:06:46 +02:00
Irmen de Jong
78ddcf9db7
address-of works the test program
2019-04-12 00:58:40 +02:00
Irmen de Jong
cd0fa9405a
comments
2019-04-12 00:54:04 +02:00
Irmen de Jong
4462def8ea
fix array processing and ASM code gen of arrays with addressOf in them
2019-04-12 00:37:33 +02:00
Irmen de Jong
3f93b87745
fix array processing and ASM code gen of arrays with addressOf in them
2019-04-12 00:04:15 +02:00
Irmen de Jong
9f302cc640
docs about '&' operator
2019-04-11 21:41:46 +02:00
Irmen de Jong
0a73125606
fix auto-insertion of AddressOf expression in function call arguments
2019-04-11 21:32:23 +02:00
Irmen de Jong
7780441524
fix build scripts to point to new IntelliJ version
2019-04-11 21:26:46 +02:00
Irmen de Jong
8bec4eaa87
rename PointerOf to AddressOf
2019-04-11 21:01:02 +02:00
Irmen de Jong
4434d31a3b
upgrade to Kotlin 1.3.30 and increase memory settings for command line build script
2019-04-11 19:58:28 +02:00
Irmen de Jong
51454c71c7
Merge branch 'master' into pointerto
...
# Conflicts:
# compiler/res/prog8lib/c64flt.p8
2019-04-10 23:16:08 +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
f3c1783bf2
correct intermediate code output of pointers in arrayvalues
2019-04-10 22:08:21 +02:00
Irmen de Jong
ce8853ab50
restore tweaks in c64flt.p8
2019-04-08 00:36:19 +02:00
Irmen de Jong
5e3e00fbad
fix stackvm
2019-04-08 00:29:10 +02:00
Irmen de Jong
1dde49d644
Merge branch 'master' into pointerto
...
# Conflicts:
# compiler/res/prog8lib/c64flt.p8
# compiler/src/prog8/stackvm/StackVm.kt
2019-04-08 00:19:18 +02:00
Irmen de Jong
fd19298a05
fixed stackvm pop signed byte into register
2019-04-08 00:08:23 +02:00
Irmen de Jong
ede2b83ce4
got rid of unused avg syscalls and fixed stackvm iterable functions (min, max, avg, sum, any, all)
2019-04-08 00:00:43 +02:00
Irmen de Jong
fc47d3feb8
repaired min(f) max(f) fixes #13
2019-04-07 23:19:31 +02:00
Irmen de Jong
87446028e0
no more duplicate auto heap vars, attempt at automatic insertion of & expression for subroutine params
2019-04-05 13:14:19 +02:00
Irmen de Jong
b200f9945f
asmgen array with pointer values (w.i.p)
2019-04-04 23:51:22 +02:00
Irmen de Jong
eebd4e5f18
fix float constants prefix mistakes, removed broken max_f/min_f (fix pending), tweaked sum_f
2019-04-04 23:39:28 +02:00
Irmen de Jong
1069b5f5d5
w.i.p pointer-to
2019-04-04 21:45:30 +02:00
Irmen de Jong
3e7e44acfe
no hard crash anymore for invalid string escape sequences or unknown petscii characters
2019-04-03 22:25:26 +02:00
Irmen de Jong
518c3bfd76
actually, get rid of integer pow() because a naive multiplication loop approach is way too slow
2019-03-31 18:05:41 +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
b57c02b0ba
don't remove 'duplicate' assignments that aren't removable (i.e. not literalvalues)
2019-03-31 16:10:02 +02:00
Irmen de Jong
03d0411679
pow_f implemented
2019-03-31 14:28:38 +02:00
Irmen de Jong
83ace753b2
got rid of problematic signed POW operator, added compiler checks for this
2019-03-31 13:56:03 +02:00
Irmen de Jong
ec2e7db23e
doc fix
2019-03-30 00:40:09 +01:00
Irmen de Jong
c4615591c9
fixing label names, fixes #11
2019-03-30 00:31:40 +01:00
Irmen de Jong
25e3b599e7
fixing label names
2019-03-30 00:15:50 +01:00
Irmen de Jong
5502a3e3ee
optimized name checking, no longer depends on scopedname
2019-03-28 21:30:30 +01:00
Irmen de Jong
62ceace941
block names are global (unscoped)
2019-03-25 23:46:58 +01:00
Irmen de Jong
7114d3193c
some cleanups in library asm code
2019-03-21 22:36:46 +01:00
Irmen de Jong
f6bc69139d
added some example images to the index page of the docs
2019-03-19 21:39:01 +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
1e045b6a62
fixed multi-return value assignment
2019-03-18 04:44:20 +01:00
Irmen de Jong
747c9604dd
improve ast check for multiple returnvalues assignment
2019-03-18 04:01:25 +01:00
Irmen de Jong
1e5b2e0be3
for loops can now be over an iterable literal value directly (don't require a variable to hold the iterable)
2019-03-17 23:58:07 +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
223bab21aa
less verbose anon label names
2019-03-16 00:11:04 +01:00
Irmen de Jong
563122ac92
stricter argument check for boolean operator
2019-03-15 23:34:15 +01:00
Irmen de Jong
bc9d00922e
implemented difference between printing and writing text in vm screen
2019-03-15 23:27:54 +01:00
Irmen de Jong
d9d83248fe
implemented strlen() function
2019-03-15 23:10:26 +01:00
Irmen de Jong
f2397527f1
improved text output in stackvm
2019-03-13 22:45:12 +01:00
Irmen de Jong
bf3caaefe1
stackvm now uses a proper instruction pointer call stack instead of instruction linking
2019-03-13 22:00:41 +01:00
Irmen de Jong
1aaf854ef7
identified issue with single instruction linking in vm
2019-03-12 21:59:40 +01:00
Irmen de Jong
ce40f6f862
defined a few more sysasm routines
2019-03-11 22:30:32 +01:00
Irmen de Jong
a349599943
serious endless for loop bug in stackvm because Z and N flags weren't set properly, now fixed
2019-03-11 22:02:00 +01:00
Irmen de Jong
ac7faa8d25
stackvm can now intercept system asm calls (to a rom address)
2019-03-11 02:05:30 +01:00
Irmen de Jong
747ee32e81
updated tehtriz screenshot
2019-03-10 20:22:33 +01:00
Irmen de Jong
75fadaa24f
added holding area
2019-03-10 20:17:58 +01:00
Irmen de Jong
e4ea1f1014
tweaked controls, score, sounds
2019-03-10 19:24:11 +01:00
Irmen de Jong
cd2c4e13da
cleanups
2019-03-10 18:30:01 +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
87d6312a37
tetriz screen
2019-03-10 05:38:14 +01:00