Bob Andrews
3f72e59e93
Merge pull request #241 from blackystardust/c128-function-ram-emd
...
C128 function ram emd
2016-02-27 18:08:55 +01:00
silverdr
2bcdf32458
blackystardust pull request with post-review changes
2016-02-26 23:55:55 +01:00
Lauri Kasanen
a954e713ad
nes: Fix reading the second controller
...
See
http://wiki.nesdev.com/w/index.php/Controller_port_registers
2015-12-14 19:28:53 +02:00
Oliver Schmidt
377f31d085
Fixed soft80 shutdown.
...
A call to $FDA3 cannot be used because it re-enables the BASIC ROM. If a large program (such as Contiki's webbrowser80) has destructor code or data "behind" that ROM, then the program might crash when it tries to quit gracefully. Changing that code to set CIA2_PRA works well enough.
2015-12-02 21:34:08 +01:00
Marco van den Heuvel
433eeb1bc7
Renamed MMU_CFG_INT_FROM -> MMU_CFG_IFROM and MMU_CFG_EXT_FROM -> MMU_CFG_EFROM
2015-12-02 00:30:30 -08:00
Marco van den Heuvel
7cd80e7450
optimized the sei/cli pairing a bit.
2015-12-02 00:21:55 -08:00
Marco van den Heuvel
f55505820a
optimized the sei/cli pairing a bit for internal function ram emd as well.
2015-12-02 00:17:29 -08:00
Marco van den Heuvel
83c63a65c3
optimized the sei/cli pairing a bit.
2015-12-02 00:14:56 -08:00
mrdudz
8a499fdf4e
fixup conio.c some more. also includes merge of upstream/master because git is retarded.
2015-12-02 00:13:32 +01:00
mrdudz
7de50b17c7
fix comments
2015-12-01 16:55:02 +01:00
Marco van den Heuvel
2e2f19ba79
Finished adding c128 internal/external function ram emd's.
2015-11-30 20:14:45 -08:00
Marco van den Heuvel
7df35cac94
Started on making c128 function ram emd's.
2015-11-30 09:53:30 -08:00
mrdudz
a95c95a5d3
added black line :)
2015-11-30 18:49:52 +01:00
Marco van den Heuvel
18208f4d2e
Fixed the c128 ram (bank 1) emd.
2015-11-29 23:04:23 -08:00
Marco van den Heuvel
cf9e7856cf
Removed an 'rts'.
2015-11-29 11:35:25 -08:00
mrdudz
b39a8b7a61
more cleanup
2015-11-29 20:04:10 +01:00
mrdudz
c636675521
moved cart header into seperate file, moved nmi stub into several file, tweaked linker config
2015-11-29 16:01:36 +01:00
mrdudz
1893e24da9
updated
2015-11-29 01:24:01 +01:00
mrdudz
9fbf8a4299
conio and most other stuff working now
2015-11-29 01:14:59 +01:00
mrdudz
4a49b0c8f8
reset screen editor at shutdown
2015-11-22 19:20:58 +01:00
mrdudz
88e7b5776a
some more fiddling
2015-11-22 19:02:47 +01:00
mrdudz
60285097e3
initial import of the gamate stuff
2015-11-14 13:15:29 +01:00
Oliver Schmidt
f70acd9f51
Merge pull request #227 from mrdudz/soft80syms
...
remove unneeded exports
2015-11-07 13:37:46 +01:00
mrdudz
54de8ac031
remove unneeded exports
2015-11-07 11:45:38 +01:00
Greg King
5e36315d05
Style changes.
2015-11-07 00:29:07 -05:00
Greg King
999d57401c
Added a version of memset() that uses the HuC6280's TII instruction to get more speed.
2015-11-06 23:59:19 -05:00
Greg King
8180ac20d3
Added code to handle the special case of a zero-length move.
...
Added more tests of memcpy() and memmove().
2015-11-02 17:09:45 -05:00
Greg King
8e8d112029
Added pce-specific substitutes for memcpy() and memmove().
...
They are smaller and faster because they take advantage of the pce CPU's block-copy instructions.
Also, made a small improvement to the common memmove(), so that it is similar to the pce version.
2015-10-23 18:02:21 -04:00
mrdudz
8f8f12ceab
use tii instead of copy loop to copy data section to ram
2015-10-22 19:48:21 +02:00
mrdudz
60334c40e6
added size optimized monochrom soft80 driver
2015-10-19 02:49:32 +02:00
mrdudz
d6d016bb80
updated comments
2015-10-19 02:47:40 +02:00
mrdudz
8263083506
move variables into INITBSS
2015-10-15 15:11:05 +02:00
mrdudz
63d4c93006
Merge remote-tracking branch 'upstream/master' into soft80
2015-10-15 15:07:44 +02:00
Oliver Schmidt
76a5a72403
Adjusted current working directory initialization on Apple and Atari.
...
Moving __cwd from BSS into INITBSS does of course ;-) not only impact the CBM targets but all targets with disk I/O support.
Note: Code using `__cwd-1` may trigger an ld65 range error because __cwd may end up at the very begining of a segment. As far as I see this is an ld65 bug which I'm not try to fix - at least here.
2015-10-15 00:15:38 +02: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
mrdudz
b9c688d997
remove deleted function from comment
2015-10-14 17:52:14 +02:00
mrdudz
e6f5c7d8da
some comments
2015-10-14 17:50:44 +02:00
mrdudz
f391c1c3d5
remove soft80_bordercolor override
2015-10-14 17:33:58 +02:00
mrdudz
59dd15aa55
split regular color.s into color.s and bordercolor.s
2015-10-14 17:25:35 +02:00
mrdudz
c708031374
use 'soft80_internal_cellcolor' for the current cell color, and CHARCOLOR for the actual textcolor
2015-10-14 17:24:16 +02:00
Oliver Schmidt
023b461bb8
According to the contributor the VGA data is accessed only by the constructor.
2015-10-14 11:50:54 +02:00
Oliver Schmidt
8f67dd5cc7
Merge pull request #215 from greg-king5/c64-init
...
Save space by using the apple2 target's INIT overlay scheme on the c64 target.
2015-10-14 10:43:11 +02:00
mrdudz
08d7eefdd7
another size optimization, make bgcolor() much more robust
2015-10-13 04:14:04 +02:00
mrdudz
f462c173fb
move some stuff to init segment, saves roughly 1480 bytes :)
2015-10-12 23:39:47 +02:00
mrdudz
362a172477
remove chline/cvline dupes
2015-10-12 21:23:27 +02:00
mrdudz
f876ff4c09
Merge remote-tracking branch 'upstream/master' into soft80
2015-10-12 21:13:32 +02:00
Oliver Schmidt
5e960d106e
Allow to override chars used for horizontal and vertical lines.
2015-10-12 21:04:06 +02:00
mrdudz
d6f48629ad
export mouse driver related symbols
2015-10-12 21:02:48 +02:00
mrdudz
5840d1c08c
increase conio constructor priority
2015-10-12 20:46:53 +02:00
mrdudz
df3549f502
Merge remote-tracking branch 'upstream/master' into soft80
2015-10-12 20:43:19 +02:00
mrdudz
57a43b6735
style issues
2015-10-12 20:38:06 +02:00
Oliver Schmidt
08efc299ff
Allow to override mouse sprite location data.
2015-10-12 20:18:13 +02:00
mrdudz
e9f0b7943e
some renaming, preparing plot table names
2015-10-12 19:57:33 +02:00
mrdudz
bf3ea5328f
inverted result for checkchar, saving some bytes and cycles
2015-10-12 19:03:50 +02:00
mrdudz
4557e8d004
optimize charcode conversion, shorter and faster now :)
2015-10-12 18:53:55 +02:00
mrdudz
aed0549760
remove some commented out code
2015-10-12 18:09:50 +02:00
mrdudz
ead9950044
some code shuffling to get rid of long branches
2015-10-12 18:01:48 +02:00
mrdudz
cf8b21b27e
size optimization
2015-10-12 17:12:44 +02:00
mrdudz
bc85d90468
check for space bottom up, which is faster for the average case
2015-10-12 16:15:40 +02:00
mrdudz
a2b514a7cf
fix some style issues
2015-10-12 15:54:08 +02:00
mrdudz
21732e3c5b
maintain lsb of cursor x position internally, saves some bytes and some cycles too :)
2015-10-12 15:44:41 +02:00
mrdudz
2a0f6c420b
moved bordercolor function into a seperate file
2015-10-12 15:18:36 +02:00
mrdudz
7f2df8e8e6
move internal text/bgcolor variables into the file that also contains the init code for them. also rename them to avoid namespace pollution
2015-10-12 15:04:55 +02:00
mrdudz
07f1879f85
added some more comments and -headers
2015-10-12 14:40:12 +02:00
mrdudz
d8d7f53d1b
move charset to seperate file again, added comments on charset layout
2015-10-11 17:13:28 +02:00
Oliver Schmidt
c4966ac6a6
Fixed stupid adressing mode bug.
...
Thanks Greg for pointing out :-)
2015-10-10 11:15:43 +02:00
mrdudz
03c6af3e15
rewrote color voodoo
2015-10-09 23:39:37 +02:00
Oliver Schmidt
ccc7c2b1f9
Minor style adjustment.
2015-10-09 22:18:51 +02:00
Oliver Schmidt
326da85145
Consistently place constructors (and their exclusive subroutines) in "INIT".
2015-10-09 21:44:20 +02:00
Oliver Schmidt
575f859a03
Keep low level VIC sprite stuff out of user code.
2015-10-09 18:33:35 +02:00
Greg King
8c609dd931
Explained why two variables were moved out of the BSS segment.
2015-10-09 12:00:41 -04:00
Oliver Schmidt
f21e3ae895
According to the contributor the prio wasn't intentionally set.
2015-10-09 13:42:25 +02:00
mrdudz
0b9d67d8a8
use default prio for the constructor
2015-10-09 13:40:10 +02:00
mrdudz
f712e9448a
some cleanup/rework
2015-10-09 13:34:23 +02:00
mrdudz
e54ad81ce8
some more rework, second attempt on fixing the color issues. added ifdefs to disable the color voodoo alltogether for debugging purposes.
2015-10-08 20:43:25 +02:00
Greg King
ca70700a0b
Restored the old C-stack initiation code.
...
I had forgotten that the stack must be put below the CBM overlays.
2015-10-08 06:04:49 -04:00
Greg King
8a880580dc
Reduced the size of the moveinit subroutine.
...
Made other changes that were recommended by Oliver.
* Changed its name from move_init to moveinit.
* Used self-modifying code in the subroutine.
* The INIT segment doesn't need to be optional (it's used by the start-up file).
2015-10-07 14:56:14 -04:00
mrdudz
67dabb8489
attempted fix for the color problem noticed by oliver
2015-10-06 20:18:40 +02:00
mrdudz
ee54f7f40c
optimized clrscr for size
2015-10-06 19:33:43 +02:00
Greg King
074e10d288
Adapted, to the c64 target, the INIT-segment overlay scheme from the apple2 targets.
...
When a program starts running, INIT is moved from one place to another place. Then, INIT's code is executed; and, the first place is re-used for variables. After the INIT code has finished, the second place can be re-used by the heap and the C stack. That means that initiation code and data won't waste any RAM space after they stop being needed.
2015-10-05 05:47:43 -04:00
mrdudz
23473641f4
fix clrscr so it doesnt wipe sprite pointers
2015-10-01 17:16:02 +02:00
mrdudz
5ea842b88b
SCREEN->screensize
2015-10-01 15:03:11 +02:00
Greg King
6217f8fa3a
Made the Commodore version of exec() work in programs that are so big that they load into all of BASIC RAM.
...
The function won't cause an "out of memory" error.
2015-09-28 11:27:39 -04:00
mrdudz
4949836d16
fixed kplot
2015-09-28 17:12:20 +02:00
mrdudz
841d764a83
some cleanup, checked usage of __bgcolor and __textcolor
2015-09-28 16:10:11 +02:00
mrdudz
7486923c17
dont use seperate file for charset data
2015-09-28 15:57:16 +02:00
mrdudz
6cc654cca8
added extra check for graphical chars
2015-09-28 15:10:57 +02:00
mrdudz
257183fa55
removed duplicate copy of charset and shift it at init time, saves 1k
2015-09-27 19:34:43 +02:00
mrdudz
c221fe22f6
prepend soft80_ to some more internally used functions
2015-09-27 19:10:06 +02:00
mrdudz
b5a6578dca
include bitmap and vram row tables directly rather than generating them (saves space)
2015-09-27 18:49:30 +02:00
mrdudz
fba28f46f6
fix initial text- and background colors
2015-09-27 18:36:53 +02:00
mrdudz
9e08c53b01
initial commit of soft80 implementation
2015-09-27 18:12:25 +02:00
Greg King
b82bb4f5ba
Moved two errno helper functions into separate files.
...
Only the function that actually is needed will be linked. It is very useful for targets that do not have file-system I/O.
2015-09-25 14:06:58 -04:00
Oliver Schmidt
b2657ecef5
Merge pull request #177 from mrdudz/pcenginetarget
...
new target: PC Engine (TurboGrafx16)
2015-09-24 09:58:28 +02:00
mrdudz
7d453a72fb
use 'plot' instead of 'PLOT'
2015-09-20 12:18:41 +02:00
mrdudz
296489ba6c
added interruptor support
2015-09-19 15:55:43 +02:00
mrdudz
859604407b
fixed more flaws found by greg :)
2015-09-19 15:37:39 +02:00
Oliver Schmidt
45313075fe
Merge pull request #208 from greg-king5/big-jump
...
Improve the longjmp() and setjmp() functions.
2015-09-11 21:06:50 +02:00
Greg King
dbf0adcec9
Improved longjmp() and setjmp().
2015-09-11 14:18:22 -04:00
Greg King
031bd2ebf0
Fixed the random-seed generators for the Commodore targets.
...
They use a byte from the time counter; but, it is stored in big-endian order.
2015-09-11 10:03:07 -04:00
mrdudz
088a25437d
fixed VDC register assignments
2015-09-07 12:55:36 +02:00
mrdudz
af2ba26c62
fix gregs complaints :)
2015-09-04 14:14:17 +02:00
mrdudz
d0a1dc73b8
Merge remote-tracking branch 'upstream/master' into pcenginetarget
2015-09-04 13:40:52 +02:00
mrdudz
57b8af1adc
style fixes
2015-08-29 15:58:57 +02:00
Greg King
9c55bd1c96
Fixed bugs in the interface for C-level interrupt handlers.
...
* Added an important ".code" directive.
* Import a linker-created zero-page symbol as an absolute address; then, convert it to zero-page when it is used.
Fixes bug report #198 .
2015-08-26 19:33:34 -04:00
Oliver Schmidt
657cc003be
Merge pull request #184 from greg-king5/fastcall
...
Update some fastcall info.
2015-07-23 17:11:49 +02:00
Greg King
52eec1f236
Updated the fastcall information in a document and two Assembly files.
2015-07-22 13:31:14 -04:00
Oliver Schmidt
673b27cc1b
Added empty IRQ backend.
...
The driver kernels all require IRQ handling even if the actual drivers don't make use of it. So in order to successfully link a NES program using the joystick and/or TGI driver there has to be at least a "dummy" IRQ backend.
2015-07-22 11:36:54 +02:00
mrdudz
0e29a0993f
Merge remote-tracking branch 'upstream/master' into pcenginetarget
2015-07-20 18:42:04 +02:00
mrdudz
313d2dd210
added missing chline, cvline
2015-07-19 18:06:16 +02:00
Greg King
a9982de475
Added _directerrno() to the sim6502/sim65c02 libraries.
2015-07-18 18:23:08 -04:00
Greg King
0b6bcb565e
Fixed a hardware-stack leak.
2015-07-17 20:36:56 -04:00
mrdudz
996c7b493e
moved all notes into regular documentation
2015-07-16 21:39:13 +02:00
mrdudz
e77060458a
fixed joypad bits
2015-07-16 20:15:05 +02:00
mrdudz
3119be2a1e
added some cbm-like gfx chars to draw lines and boxes
2015-07-16 17:33:00 +02:00
mrdudz
d229d51be5
make sure clocktick starts at zero
2015-07-16 16:54:40 +02:00
mrdudz
21ef6b8510
fixed screensize, timertick, revers mode
2015-07-16 16:00:32 +02:00
mrdudz
1414411bba
added waitvblank and fixed get_tv
2015-07-15 19:46:26 +02:00
mrdudz
c3d45e4c47
fixed issues found by gregg
2015-07-15 13:18:12 +02:00
mrdudz
ac27ed301a
_tickcount -> tickcount
2015-07-14 19:55:41 +02:00
mrdudz
83391ab67c
some more tweaking, added docs page
2015-07-14 17:22:47 +02:00
mrdudz
515a61a302
added imports for conio init to conio functions, so the constructor will get linked and called automatically
2015-07-13 12:10:09 +02:00
mrdudz
9e1d39a409
more cleanup and fixing
2015-07-12 16:40:52 +02:00
mrdudz
891cb97b2f
more cleanup, joystick works again
2015-07-12 14:27:24 +02:00
mrdudz
21999b081f
simple conio test works again
2015-07-12 10:32:55 +02:00
mrdudz
877fd532c2
Merge remote-tracking branch 'upstream/master' into pcenginetarget
2015-07-11 13:05:26 +02:00
Greg King
146daa1d0a
Made some string output functions reject an invalid NULL buffer pointer.
2015-07-09 14:46:28 -04:00
Greg King
219905c6bc
Fix two string output functions' handling of their buffer-size parameter.
...
That parameter's type is unsigned; but, the functions return an int. If the size is too big for a signed integer, then return an error code.
If the size is zero, then don't write anything into a buffer (the buffer pointer may be NULL). But, do format and count the arguments.
2015-07-09 10:43:45 -04:00
Greg King
08e18c93c5
Added explicit settings of calling conventions in pointer-to-function declarations in system and library headers.
2015-06-22 00:15:48 -04:00
Oliver Schmidt
fe023a1218
Merge pull request #151 from greg-king5/fastcall
...
Make __fastcall__ be the default calling convention.
2015-05-26 22:39:33 +02:00
Oliver Schmidt
0f1c3b0181
Fixed comment.
2015-04-27 09:39:50 +02:00
Oliver Schmidt
1748bb1ab6
Use well-known location BLTU2 for "memmove()".
2015-04-26 14:09:21 +02:00
Oliver Schmidt
3c1cd0d867
Added cmdline support to exec().
...
The starting point is the CALL2051:REM <cmdline> approach. It uses the BASIC input buffer at $200. ProDOS stores the name of the loaded program at $280 (which we want for argv[0]) leaving us with 128 char buffer. If we run the program via exec() we don't need the CALL2051 but only the REM token (which is just one char). So have a maximum cmdline length of 126 (plus a terminating zero).
There's no specification for ProDOS BIN file cmdline parameters so exec() just supports the CALL2051:REM <cmdline> approach. In contrast ProDOS SYS files allow for a 'startup filename'. A ProDOS filename is short than 126 chars so having exec() general cut the cmdline after 126 chars seems reasonable. If the SYS file we exec() allows for less we cut the cmdline further.
Our 'loader.system' SYS file however allows for an unusually 126 char long "startup filename" as it is targeted towards cc65 BIN porgrams with their 126 cmdline length.
2015-04-26 14:09:20 +02:00
Oliver Schmidt
ae4f9336b3
Behave more like BASIC.SYSTEM and allow for argv[0].
2015-04-19 21:59:05 +02:00
Oliver Schmidt
24e902059c
Allow up 127 chars of cmdline for programs started by the loader.
2015-04-19 21:17:46 +02:00
Stephan Mühlstrasser
7fb206e381
Macro-based implementation of screen layout configuration modules.
2015-03-23 19:02:45 +01:00
Stephan Mühlstrasser
8b10534429
Improved fix with suggestions by Greg King.
2015-03-15 00:40:42 +01:00
Stephan Mühlstrasser
4836cf9842
Fix bad tabbing
2015-03-14 00:06:00 +01:00
Stephan Mühlstrasser
72a9e331e3
Fixed uninitialized use of low byte of address "load".
2015-03-14 00:01:12 +01:00
Greg King
38231a5cc6
Made _afailed() and uncompress() be fastcall functions.
2015-03-13 07:35:47 -04:00
Greg King
66d79da3c2
Made cbm_load() be a fastcall function.
2015-03-13 05:46:40 -04:00
Greg King
a798b1d648
Made __fastcall__ be the default calling convention for non-variadic functions.
2015-03-10 05:53:52 -04:00
Greg King
9dbce378fe
Described how to change the boot loader's actions.
2015-03-08 10:06:00 -04:00
Greg King
2d50267bd8
Added a second OSI C1P program file format.
...
Unlike the first format, the new format is already loadable; it doesn't need to be converted.
2015-03-07 16:39:44 -05:00
Stephan Mühlstrasser
981ab10fac
Replaced magic numbers with symbolic constants.
2015-03-01 20:53:57 +01:00
Stephan Mühlstrasser
1d6aa84d9a
Optimization by replacing absolute with relative jump.
2015-02-28 20:29:08 +01:00
Stephan Mühlstrasser
4737ad93d5
Temporarily undo the 25 line change.
...
This is not yet consistent with the first visible character on
the screen.
2015-02-25 23:50:02 +01:00
Stephan Mühlstrasser
52865410d2
Fix wrong expression for top of C stack.
...
Thanks to Greg King for this fix.
2015-02-25 23:48:57 +01:00
Stephan Mühlstrasser
8deeb2c59e
Match screen dimensions as in BASIC.
...
Experiments show that under BASIC by default
25 rows by 24 columns are used. 24 columns is
also the width that is fully displayed on a real
C1P on the monitor. conio now matches that now.
2015-02-23 23:07:00 +01:00
Stephan Mühlstrasser
772a98d1ec
Merge branch 'c1p_kbhit' into c1p_scrsize
2015-02-23 19:17:54 +01:00