Irmen de Jong
7d8b42d63e
allow Unicode letters in identifiers: things like 'knäckebröd' and 'π' are now valid identifiers. Added floats.π constant.
2023-12-05 01:36:54 +01:00
Irmen de Jong
6ebd4e821f
improved docs about subroutine scoping, fix possible optimizer crash for inlined sub
2023-12-04 23:23:52 +01:00
Irmen de Jong
d1806bfdc3
added remaining verafx registers
2023-12-03 22:15:29 +01:00
Irmen de Jong
1d2d7155da
palette: changed some of the available presets. Also fix sizeof(array) crash.
2023-12-03 17:14:40 +01:00
Irmen de Jong
b09e0a05bf
some tweaks to errors about long integer literals
2023-12-03 02:45:26 +01:00
Irmen de Jong
c609e982fe
allow const expression intermediate values to be 32 bits integers to avoid needless overflow errors.
2023-12-03 01:48:12 +01:00
Irmen de Jong
2b227b43fe
bmx: error for unsupported file version
2023-12-02 23:56:59 +01:00
Irmen de Jong
48f09f71ab
fix TODO crash on uword[0] = uword[0] or 128 (byte register assign to word array)
2023-12-02 21:29:14 +01:00
Irmen de Jong
ead8c59bda
allow all character encodings on all compilation targets.
2023-12-02 20:59:50 +01:00
Irmen de Jong
db52a9466c
fix weird compiler warning for while 1 {..}
2023-12-02 20:24:45 +01:00
Irmen de Jong
1509de390e
various fixes
...
print_f() no longer prints a leading space.
Better error message if using float in for loop.
Fix crash when using non-const as when choice value.
VM print_f() more closely resembles the CBM version.
2023-12-02 18:23:54 +01:00
Irmen de Jong
88a1aa4f3d
fix invalid optimization for integers (X/C1)*C2 , only ok for floats because of int rounding
2023-12-01 23:17:49 +01:00
Irmen de Jong
36bfef567d
comments
2023-12-01 20:20:18 +01:00
Irmen de Jong
e40ebd75a2
floats.parse_f uses kernal VAL if it's present
2023-11-30 23:50:50 +01:00
Irmen de Jong
992732f2cb
bmx support to save partial screens ('stamps')
2023-11-30 22:17:57 +01:00
Irmen de Jong
b58a3ba1bb
added cx16 sprites.move , movex and movey routines to move sprite by deltas
2023-11-30 20:49:47 +01:00
Irmen de Jong
afe521b0c9
simplify bmx loading
2023-11-29 21:57:17 +01:00
Irmen de Jong
5d9caef45f
bmx can load "stamps"
2023-11-29 21:07:22 +01:00
Irmen de Jong
278e2f5605
preparing for working kernal FP VAL_1() call
2023-11-29 00:27:02 +01:00
Irmen de Jong
1e299bf360
better pokef() code
2023-11-28 23:04:27 +01:00
Irmen de Jong
8dfa0bc38c
fix a compiler crash in certain vardecl initialization expressions
2023-11-28 21:01:58 +01:00
Irmen de Jong
fde136fb7b
bmx module only supports 320 or 640 image widths for now
2023-11-28 20:38:52 +01:00
Irmen de Jong
ee4da1a757
fix floats.parse_f() to use new kernal routine address for VAL
...
gives error message if it detects issues f.ex. with new kernal version that moves the routine
2023-11-27 23:58:28 +01:00
Irmen de Jong
ae2d96c455
added peekf
and pokef
builtin functions. Fixed sizeof() to allow number argument as well.
2023-11-27 23:36:02 +01:00
Irmen de Jong
2fa1d8f2e8
fix vm string hash
2023-11-27 01:27:50 +01:00
Irmen de Jong
1dff59e1d6
added string.hash()
2023-11-26 22:14:08 +01:00
Irmen de Jong
5f6cff739a
fix bmx palette writing from buffer
2023-11-26 01:50:25 +01:00
Irmen de Jong
45debff89f
bmx: allow palette to be loaded into memory buffer instead of vram
2023-11-25 17:58:43 +01:00
Irmen de Jong
c45fbe6310
continue stmt added
2023-11-25 01:14:35 +01:00
Irmen de Jong
9ef9c24388
IR: optimize redundant labels
2023-11-25 01:10:17 +01:00
Irmen de Jong
6a40f23578
cx16: added bmx library module and showbmx example
2023-11-24 23:39:05 +01:00
Irmen de Jong
0bee6f6b41
cx16: reorder processing of IRQ handlers
2023-11-24 01:12:27 +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
935450a45f
update kotest library
2023-11-22 18:40:07 +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
ab4bcdf12d
emudbg no longer clobbers r1
2023-11-20 00:20:48 +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
f81061dd42
error msg and comments
2023-11-18 01:03:34 +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
faf05582f8
improved cx16 emudbg library
2023-11-17 15:07:21 +01:00
Irmen de Jong
161c02ced3
message
2023-11-17 00:37:12 +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
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
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
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
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
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
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
16b24fadea
gfx2 future mode, upgrate to Kotlin 1.9.20
2023-11-01 23:18:44 +01: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
e15c5cde53
tiny fill() optimization
2023-10-18 23:11:16 +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
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
68539d6cc9
micro tweaks adpcm.p8
2023-10-13 00:55:56 +02:00
Irmen de Jong
836bc9d456
added verafx.available()
2023-10-10 22:12:21 +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
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
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