Commit Graph

189 Commits

Author SHA1 Message Date
Colin Leroy-Mira 7d7cf2d1e0 Implement aslax7/shlax7/asrax7/shrax7 2024-01-29 07:59:11 +01:00
Bob Andrews ba6f9f5d3f
Merge pull request #2381 from colinleroy/asm-fgets
Rewrite fgets in asm
2024-01-26 19:36:57 +01:00
Colin Leroy-Mira 1f820d0ae8 Rewrite fgets in asm
-104 bytes, -1% cycles
2024-01-24 10:16:26 +01:00
Colin Leroy-Mira 5d49fde788 add a return -1 helper 2024-01-24 09:58:09 +01:00
Colin Leroy-Mira b23a7ec407 Save two bytes in pushax and popptr1
It's not because Y must equal zero on rts that we should'nt spare one byte
and one cycle.
2024-01-19 21:14:47 +01:00
mrdudz f8f901b05e remove dangling spaces 2022-04-17 16:06:22 +02:00
Jesse Rosenstock 0482e4d6e4 Fix CRLFs introduced by fe3f267 2020-09-18 08:57:28 +02:00
acqn fe3f267233 Added new runtime sub bcasta/bcastax/bcasteax opposing to bnega/bnegax/bnegeax. 2020-09-11 13:33:54 +02:00
IrgendwerA8 f54e01781b Tiny optimizations for multiplication. 2020-08-29 16:34:20 +02:00
Piotr Fusik d38417b347 Optimize sign extension. 2019-11-07 21:45:19 +01:00
Piotr Fusik 985371433b Swap the positive/negative paths to save a branch. 2019-11-07 21:45:19 +01:00
Piotr Fusik 421c3f2b4f Don't set carry when already set. 2019-11-07 21:45:19 +01:00
Piotr Fusik 2bec637637 Optimize a negation in signed division. 2019-11-07 21:45:19 +01:00
IrgendwerA8 cc6559c3f6 Minor math optimizations 2019-02-28 19:48:29 +01:00
Oliver Schmidt e86a7db18b Some minor cleanups. 2018-07-26 14:35:26 +02:00
IrgendwerA8 465a651090 Free 2 bytes again. 2018-05-29 01:51:24 +02:00
IrgendwerA8 8a5d1b9674 Reestablished entry state of signed operation and optimized that (again). 2018-05-25 23:52:42 +02:00
IrgendwerA8 ba5b580368 Fixed first letter of comments (should be upper case). 2018-05-25 16:10:16 +02:00
IrgendwerA8 71420223bc Changed the name of the file too. 2018-05-24 11:37:17 +02:00
IrgendwerA8 9c1cb0801c Changed naming absvaludiv -> absvaludiv16. 2018-05-24 11:31:43 +02:00
IrgendwerA8 dd411efd1c Adapted div & mod for popptr1. 2018-05-24 03:55:40 +02:00
IrgendwerA8 6175271651 Removed optimizations which break the compiler ones. 2018-05-22 19:10:07 +02:00
IrgendwerA8 808d3ab471 Fix for 8x16 multiplication if operants are swapped. 2018-05-22 18:35:05 +02:00
IrgendwerA8 d7da827be8 Apply faster popptr1 to functions and/or use register instead of stack to save accu. 2018-05-21 18:18:01 +02:00
IrgendwerA8 d4081b43a6 Fixed comments. 2018-05-21 14:41:12 +02:00
Irgendwer 32bbacbb78
Merge branch 'master' into popptr1 2018-05-21 13:33:14 +02:00
IrgendwerA8 911b86de67 Fixed formatting and two import issues. 2018-05-21 13:02:56 +02:00
IrgendwerA8 c95ed4b8b5 Added "popptr1" which is of common use to save some bytes. 2018-05-20 15:30:18 +02:00
Oliver Schmidt be30c0bd70
Merge pull request #606 from pfusik/ldec
Optimize deceaxy
2018-03-10 11:28:46 +00:00
Piotr Fusik 18ada212e7 Fix coding style. 2018-03-09 18:48:24 +01:00
Piotr Fusik 970c5f6184 Add comments. 2018-03-08 22:10:11 +01:00
Piotr Fusik 5251b67d73 Fix comment typos. 2018-03-07 21:01:29 +01:00
Piotr Fusik a32c50a6bc Optimize deceaxy. 2018-03-07 20:45:50 +01:00
Lauri Kasanen a84463a3df callptr4 2017-05-01 21:08:03 +03:00
Oliver Schmidt 275b27647e Removed superfluous final linefeed. 2017-04-04 15:43:56 +02:00
Oliver Schmidt 233dd5062a Merge pull request #389 from IrgendwerA8/stringimprovements
Optimization of string functions (size & speed).
2017-04-04 15:39:37 +02:00
IrgendwerA8 1abfa98290 minor style changes 2017-03-19 20:51:54 +01:00
IrgendwerA8 0de44517ac few 6502 and some 65SC02 optimizations 2017-03-12 23:21:43 +01:00
IrgendwerA8 81115aa826 Added further optimizations and unit tests. 2017-03-05 02:09:12 +01:00
Oliver Schmidt 419eb700b5 Renamed INITBSS to INIT and INIT to ONCE.
The way we want to use the INITBSS segment - and especially the fact that it won't have the type bss on all ROM based targets - means that the name INITBSS is misleading. After all INIT is the best name from my perspective as it serves several purposes and therefore needs a rather generic name.

Unfortunately this means that the current INIT segment needs to be renamed too. Looking for a short (ideally 4 letter) name I came up with ONCE as it contains all code (and data) accessed only once during initialization.
2016-03-06 21:27:19 +01:00
Oliver Schmidt 0ee9b2e446 Changed run location of INIT segment.
So far the INIT segment was run from the later heap+stack. Now the INIT segment is run from the later BSS. The background is that so far the INIT segment was pretty small (from $80 to $180 bytes). But upcoming changes will increase the INIT segment in certain scenarios up to ~ $1000 bytes. So programs with very limited heap+stack might just not been able to move the INIT segment to its run location. But moving the INIT segment to the later BSS allows it to occupy the later BSS+heap+stack.

In order to allow that the constructors are _NOT_ allowed anymore to access the BSS. Rather they must use the DATA segment or the new INITBSS segment. The latter isn't cleared at any point so the constructors may use it to expose values to the main program. However they must make sure to always write the values as they are not pre-initialized.
2015-10-14 22:52:09 +02:00
Greg King 74c2415795 Changed literal zeroes of the style "#>0" into the style "#>$0000". 2014-09-10 19:15:07 -04:00
Greg King f82a43b98d Fixed the comments to say where the actual Left-Hand Side and Right-Hand Side are put.
A description of positions [left, right] is appropriate more for C code than for Assembly code.  (A description of timing [first argument, second argument] is more appropriate for the way that Assembly code is written.)
2014-05-11 10:43:06 -04:00
Greg King 228b9d1718 Added a fast subroutine to multiply two signed 8-bit numbers. 2014-05-11 01:08:27 -04:00
Oliver Schmidt 5edcd639e0 Made EXTZP segment option for modules.
This allows to remove the "add empty EXTZP segement to avoid warnings"
approach.
2013-06-28 00:30:24 +02:00
Oliver Schmidt 85885001b1 Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
Oliver Schmidt 008b4c4e1d Replaced whole bunch for Makefiles with a single generic Makefile.
- No complex shell logic.
- "Source file shadowing" for all targets via vpath.
- Dependency handling.
- True incremental build.
- Don't write into source directories.
- Easy cleanup by just removing 'wrk'.
2013-05-04 22:10:48 +02:00
ol.sc 7c9171ee87 Moved IRQ hooking / unhooking from startup code to constructor / destructor to avoid linking in the hooking / unhooking code (and callirq) for the majority of cc65 prorams not linking in interruptors.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5985 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-02-12 22:39:38 +00:00
uz dc4e898abd Use the new declarations from the zeropage include file. In interrupt handlers
that call C code, we don't need to save the register bank, because the C code
will save it, when needed.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5909 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-11-04 15:23:05 +00:00
uz 7b34609930 Have the callirq module export __CALLIRQ__ and changed all config files so
this symbol is a forced import for all interruptors.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5902 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-11-03 21:59:15 +00:00