Irmen de Jong
82a15b5a16
65C02 cpu: use TRB and TSB instructions for in-place AND/OR.
2023-11-24 00:50:52 +01:00
Irmen de Jong
11b7c4459e
omission
2023-11-23 00:29:31 +01:00
Irmen de Jong
98570ac456
cx16: optimized sys.set_rasterline()
2023-11-23 00:02:04 +01:00
Irmen de Jong
1b2296ad5b
move cx16 irq examples to new API, fix some bugs in the handler
2023-11-22 23:25:39 +01:00
Irmen de Jong
16851746d6
new X16 irq handler routines and examples
2023-11-22 20:03:21 +01:00
Irmen de Jong
ba67fd318b
renamed cx16.VERA_IRQ_LINE_L to VERA_IRQLINE_L and added VERA_SCANLINE_L, to align with official register naming.
...
Also added a multi-irq example for the X16 to show the updated irq handler semantics.
2023-11-22 18:36:24 +01:00
Irmen de Jong
08ac459a41
breaking change: sys.set_irq() and sys.set_rasterirq() no longer have useKernal parameter! The irq handler routine must return a boolean instead in the A register.
...
When it returns true it means run the system IRQ handler afterwards. When it returns false, the system handler is NOT ran afterwards.
2023-11-21 23:22:53 +01:00
Irmen de Jong
a83e9d9a0a
added sys.save_prog8_internals() and restore_prog8_internals()
2023-11-21 22:00:43 +01:00
Irmen de Jong
62d3f01948
fix name check in inline asm
...
this no longer removes a subroutine that is otherwise only called from inlined asm.
2023-11-21 01:26:50 +01:00
Irmen de Jong
af5ca2d0b8
vm: treat floats as 64 bits doubles. 0.0 printed as "0".
2023-11-21 00:57:56 +01:00
Irmen de Jong
a6756d2cea
removed diskio.set_drive(), just set the diskio.drivenumber variable directly
...
there already wasn't a getter
2023-11-19 22:15:56 +01:00
Irmen de Jong
8e2c304b3c
txt.waitkey() now returns the key that was pressed
2023-11-17 20:31:19 +01:00
Irmen de Jong
f21adaa3ef
fix compiler error caused by removal of string symbol in txt.print() optimization
2023-11-17 19:51:48 +01:00
Irmen de Jong
2637939e62
cx16.vaddr_clone now leaves vera CTRL selected port intact
2023-11-17 19:22:23 +01:00
Irmen de Jong
161c02ced3
message
2023-11-17 00:37:12 +01:00
Irmen de Jong
ff8de8e42d
removing redundant compares
2023-11-16 22:56:19 +01:00
Irmen de Jong
09d506194f
note
2023-11-15 22:27:16 +01:00
Irmen de Jong
42db3085df
improve the way %option merge works, you can now merge your own code with library code for instance.
2023-11-14 23:04:13 +01:00
Irmen de Jong
ad14c88fde
give error when using %option merge in module scope
2023-11-14 21:53:50 +01:00
Irmen de Jong
0c9daf6eaf
fix compiler crash on ptrvar[n+1] = ptrvar[2]
2023-11-14 21:46:11 +01:00
Irmen de Jong
86c6530e46
palette: more accurate color conversion from 8 to 4 bits channels
...
set_rgb8(), color8to4(), channel8to4()
2023-11-14 20:40:48 +01:00
Irmen de Jong
159f80d629
next version
2023-11-14 19:06:47 +01:00
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
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
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
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
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
f70fa42eac
more accurate palette conversion
2023-11-08 01:33:55 +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
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
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
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
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
94f12732ab
add math.diff() and math.diffw()
2023-10-27 22:36:43 +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
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
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
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
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
eb55da63ef
weird
2023-09-23 11:21:17 +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
880c0a5da8
allow taking address of array element
2023-09-18 04:37:41 +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
95e4490a8a
adding setlsb() and setmsb() builtin functions
2023-09-15 02:39:16 +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
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
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
95be1c9e22
fix optimized swapped in-place byte comparisons
2023-09-03 00:47:55 +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
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
28bf0b61ce
added math.log2() and math.log2w()
2023-09-01 00:42:15 +02:00
Irmen de Jong
66b3dce794
doc tweak
2023-08-30 13:16:39 +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
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
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
bbb6c53457
slightly faster sqrt() routine for integers
2023-08-14 17:00:02 +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
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
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
b92e22e4a6
IR: fix for loop over range with step
2023-08-11 03:05:47 +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
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
77fa2e2722
optimization in + or - assignment to word array
2023-08-05 23:28:40 +02:00
Irmen de Jong
19a4bf1088
clean up AugmentableAssignmentAsmGen a bit
2023-08-04 21:48:02 +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
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
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
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
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