Commit Graph

1180 Commits

Author SHA1 Message Date
neauoire 222246748e (screen.c) Inlined sprite drawing function 2023-08-05 10:31:22 -07:00
neauoire 789fb0cd8b (screen.c) Faster sprite drawing 2023-08-05 09:59:08 -07:00
neauoire b4d7818632 Added auto byte sprite flipping 2023-08-04 11:55:17 -07:00
Derek Stevens ffc604fba3 run: set window title from rom
Signed-off-by: Derek Stevens <nilix@nilfm.cc>
2023-08-04 11:47:37 -07:00
neauoire 2ddc20b1b6 (uxnasm) Generalized lambdas as common labels 2023-08-02 19:48:48 -07:00
Cellmaker 9ca8e9623d added microtonality to the audio device 2023-07-30 15:03:34 -07:00
Devine Lu Linvega 3a8cc42e0e Better labels for lambdas 2023-07-29 16:24:39 -07:00
Devine Lu Linvega 32cc690539 (uxnasm) Lambdas support 2023-07-29 16:14:19 -07:00
Devine Lu Linvega 0efea06b46 Only update viewport rect on resize 2023-07-26 08:37:58 -07:00
Devine Lu Linvega 289d13aeb4 Returned emulator border 2023-07-25 21:43:26 -07:00
Devine Lu Linvega 12509b7e6b Merged show() and gameloop() 2023-07-25 14:56:26 -07:00
Devine Lu Linvega db2117ee0a Resize emulator on start 2023-07-25 14:46:37 -07:00
Devine Lu Linvega 4286e0ba53 Grouped emulator routines together in uxnemu 2023-07-25 14:42:10 -07:00
Devine Lu Linvega 969f03e0ba Uxnemu skips resizing window until reset vector is done. 2023-07-25 14:30:51 -07:00
Devine Lu Linvega dcb434760b Housekeeping 2023-07-24 09:48:49 -07:00
Devine Lu Linvega 26bc456a1b (screen.c) Blending 00 only clears in accordance to sprite at addr 2023-07-23 19:32:41 -07:00
Devine Lu Linvega 867883409e Emulator functions prefixed with emu_ instead of uxn_ 2023-07-23 19:18:11 -07:00
Devine Lu Linvega ec973c2ea6 Only set emu size on screen resize, no constant checks 2023-07-23 16:24:09 -07:00
Devine Lu Linvega 29e664c6b8 Do not re-set window size when unchanged 2023-07-23 16:10:48 -07:00
Devine Lu Linvega 4db53c1cc6 (uxn.c) Housekeeping 2023-07-23 11:06:21 -07:00
Devine Lu Linvega cb41bdfa9a (uxn.c) Removed PUSH/PUSH2 macros 2023-07-23 10:13:16 -07:00
Devine Lu Linvega bf1ee0298d (uxn.c) Fixed issue where JSRr was pushing to wrong stack 2023-07-23 09:57:32 -07:00
Devine Lu Linvega db6f7d9fbf (uxn.c) Aligned BRK/JCI/JMI 2023-07-23 09:52:20 -07:00
Devine Lu Linvega bc4ec9ea5f (uxn.c) JSI makes use of SET() macro 2023-07-23 09:41:11 -07:00
Devine Lu Linvega 6f15a96d91 (uxn.c) LIT opcodes use SET() macro 2023-07-23 09:36:18 -07:00
Devine Lu Linvega b020732d6d (uxn.c) PUT2 should use POKE2 macro 2023-07-23 09:21:09 -07:00
Devine Lu Linvega 41a3a6b358 (uxn) Removed z stack assignment 2023-07-22 20:53:23 -07:00
Devine Lu Linvega 92e06e2eda Removed window padding 2023-07-22 19:52:17 -07:00
Sigrid Solveig Haflínudóttir 0c9e67b9be uxncli: stop on EOF as there is nothing left to run (besides endless loop) 2023-07-17 00:52:52 +02:00
Sigrid Solveig Haflínudóttir 51d43a6989 screen: don't leak memory and don't crash if failed to adjust for new screen size 2023-07-17 00:50:19 +02:00
Sigrid Solveig Haflínudóttir dbcb8ed050 retry_realpath: check before possibly writing out of bounds 2023-07-10 17:21:36 +00:00
Sigrid Solveig Haflínudóttir 784467564c uxnemu: fix two warnings on 9front build 2023-07-10 15:37:42 +00:00
Sigrid Solveig Haflínudóttir 05356e23b1 capture_screen: check for errors 2023-07-10 15:35:35 +00:00
Devine Lu Linvega ff6d9e39ca (uxnemu) Fixes issue where non-zero console/type occurs even when empty, fixed by hikari_no_yume 2023-06-29 14:23:16 -07:00
Weeble f5c816d215 (screen.c) Fix sprite draw at screen edge
Problem - Sprites can be drawn at X/Y coordinates >= 0xfff9 to appear
partially over the left/upper screen boundary. But the dirty-rectangle
calculation doesn't account for this, so these updates will only appear
on the screen if something *else* dirties this area of the screen. This
can be observed in /projects/examples/devices/screen.tal where these
edges of the screen show stale content.

Solution - Detect wrapping and expand the dirty rectangle appropriately.
Change screen_change to take Uint16 to make sure values are truncated to
the intended range. Ignore changes that are fully off the screen.
2023-06-29 07:41:42 -07:00
Devine Lu Linvega e930804c4b Do not print message on quit 2023-06-09 09:29:25 -07:00
Devine Lu Linvega fe10cfecef Improved usage standard message 2023-06-08 09:47:18 -07:00
neauoire 5dd7fec729 Removed clear between redraws and moved to set_window_size 2023-06-07 08:23:42 -07:00
neauoire e147b46b55 Snake_cased some SDL variables 2023-06-07 08:03:28 -07:00
Devine Lu Linvega 1d4ae74e41 Removed multiplication from SET macro in uxn core 2023-05-17 20:39:03 -07:00
Sevan Janiyan 305b8469b0 Use the correct definition to obtain snprintf(3)
At some point snprintf(3) prototype became guarded off in stdio.h.
Defining _C99_SOURCE makes it visible.
On legacy Darwin, such a guard was not present so the definition
has no impact on the build, but on "modern" macos it has the desired
effect.
Build tested on OS X 10.4 and macos 10.15.
2023-05-15 08:32:48 -07:00
Sevan Janiyan b5b3177c68 Switch to using SDL_CreateRGBSurface() SDL_CreateRGBSurfaceWithFormat() was introduced in SDL 2.0.5 whereas SDL_CreateRGBSurface() is available since SDL 2.0. This allows uxn to run on legacy systems where it's not possible to reach SDL 2.0.5 but prior versions are, such as Mac OS X Tiger. 2023-05-14 19:34:55 -07:00
Sevan Janiyan 822a7fea54 Use the audio format native to host AUDIO_S16 defaults to little endian format which causes issues when running on big endian systems. Use AUDIO_S16SYS instead which sets to whatever endian the system uxn is being built on is. 2023-05-14 19:34:55 -07:00
~d6 310ba97ef6 Improve screen vector timing somewhat.
This patch tries to improve the accuracy of our
screen refresh timing. Notably, it tries to ensure
we don't introduce extra delay in our timing based
on how long the screen vector takes to evaluate.

We also try to ensure we only call SDL_Delay when
we have at least 1ms to wait.
2023-05-09 13:12:23 -07:00
Devine Lu Linvega 09d9990a62 (screen) Fixes warnings 2023-05-04 20:45:52 -07:00
Devine Lu Linvega 77edd1dbbf (screen) Renamed pixels attr to layer 2023-05-04 20:32:44 -07:00
Devine Lu Linvega d80885ee22 (screen) Housekeeping 2023-05-04 20:17:38 -07:00
Devine Lu Linvega 98bd2a7849 (screen) Use uxn_screen global 2023-05-04 17:43:44 -07:00
Devine Lu Linvega 9416a0e813 Removed layer struct 2023-05-04 11:33:31 -07:00
Devine Lu Linvega 8f98281d89 (screen) Only repaint changed pixels 2023-05-04 11:15:16 -07:00
Sigrid Solveig Haflínudóttir c7f3014fe9 zoom: ignore if 0, ie if the screen is somehow TOO small to do any scaling 2023-05-02 22:53:07 +00:00
Devine Lu Linvega 83ba7e05ea Added mock behavior for the friend port 2023-05-02 10:31:33 -07:00
Matus Laslofi d2e054346f Declare snprintf to fix builds on macOS
For some reason on macOS, the functions `snprintf` and `vsnprintf` are
not in the X/Open 5 (ANSI C89) standard but rather in the X/Open
6 (ISO C99). A simplest solution seems to be to declaring the missing
functions before using them, which is what I did here. Another option
is to use the C99 standard with `#define _XOPEN_SOURCE 600`, which
seems to be an overkill for such a niche issue.

Quoting from the STANDARDS section in `man 3 snprintf` on macOS:

> ...the snprintf() and vsnprintf() functions conform to ISO/IEC
> 9899:1999 (“ISO C99”)...
2023-05-01 09:27:49 -07:00
Devine Lu Linvega ce0cc5a352 Do not center on resize 2023-04-26 12:04:44 -07:00
Devine Lu Linvega 0da70d6bd1 Allow tiny sizes for the screen 2023-04-26 12:01:45 -07:00
Devine Lu Linvega ebf31ecb03 (uxnemu) Removed debug line 2023-04-22 14:57:26 -07:00
Devine Lu Linvega 40d6c889bc Set Console/type after memory is initialized 2023-04-22 14:56:12 -07:00
Devine Lu Linvega 3038d5c40b (console) Use 0x00 for no-queue 2023-04-17 11:27:54 -07:00
Devine Lu Linvega d8bee29626 (console) Use 0x1 for no-args 2023-04-17 11:19:37 -07:00
Devine Lu Linvega 98282cb1a6 Moved error printing to system.c 2023-04-17 11:03:11 -07:00
Devine Lu Linvega 9a882a64c7 (uxnemu) Write arguments end in console device 2023-04-17 10:41:03 -07:00
Devine Lu Linvega 1bf0ffc5e5 (uxnemu) Display usage when no roms and no params 2023-04-17 10:29:39 -07:00
Devine Lu Linvega 453f491918 (uxnemu) Display new zoom values in usage 2023-04-17 09:59:00 -07:00
Devine Lu Linvega 72e23f0260 (uxnemu) Simplified boot sequence 2023-04-17 09:48:27 -07:00
Devine Lu Linvega d1dc143912 (uxnemu) Only set zoom scale once on boot 2023-04-17 09:36:55 -07:00
Devine Lu Linvega a9527fbd95 (console.tal) Added input type port to example 2023-04-16 22:03:44 -07:00
Devine Lu Linvega fbba9b304d (console) Implemented 0x17 port with stream type based on design by zzo38 2023-04-16 21:13:50 -07:00
Devine Lu Linvega 32fa0f95c3 (uxn.c) Catch div-by-zero errors 2023-04-15 09:52:08 -07:00
Devine Lu Linvega 25cc4a1329 (screen.tal) Improved screen testing rom 2023-04-14 19:51:05 -07:00
Devine Lu Linvega c7203de2ea (uxn.c) Less indirections in uxn core 2023-04-14 10:30:08 -07:00
Devine Lu Linvega 99874908e4 (screen.c) Skip blit when color is 0 2023-04-14 10:19:57 -07:00
Devine Lu Linvega 0f75b123a4 (screen) sprite address wrapping 2023-04-14 10:05:15 -07:00
Devine Lu Linvega 04554dd1d3 (screen.c) Reduced number of variables indirections 2023-04-14 09:51:50 -07:00
Devine Lu Linvega b6e6839d25 (screen.c) Removed pixel function 2023-04-13 21:57:17 -07:00
Devine Lu Linvega d0db4f9223 (screen.c) Improved readability of the code 2023-04-13 21:33:16 -07:00
Devine Lu Linvega 891204610a Fixed issue with screen/fill layer 2023-04-13 09:58:09 -07:00
Devine Lu Linvega 2acc7edb6f Added comment for blending LUT 2023-04-13 09:53:05 -07:00
Devine Lu Linvega d043ce633d (screen.c) Faster drawing of pixel 2023-04-13 09:42:59 -07:00
Devine Lu Linvega a44dbd9696 (screen.c) Merge all checks 2023-04-12 20:00:17 -07:00
Devine Lu Linvega 8aae16a9d0 (screen) Removed clamp function 2023-04-12 19:20:11 -07:00
Devine Lu Linvega 540847694e Removed screen_wipe 2023-04-12 14:35:48 -07:00
Devine Lu Linvega be138f5952 Removed FIXED_SIZE flag 2023-04-12 12:22:17 -07:00
Devine Lu Linvega 11e9b635c8 Removed mono mode to screen 2023-04-12 11:58:32 -07:00
Lior Stern 847b3f2b56 uxnemu: Add dpad support
More info about joyhats in SDL2:
	https://wiki.libsdl.org/SDL2/SDL_JoyHatEvent
2023-04-12 11:08:48 -07:00
Devine Lu Linvega 344c5c9904 Added flip-x/flip-y to pixel fill mode 2023-04-11 11:31:36 -07:00
Devine Lu Linvega 07e8306616 (screen) Created static fill function 2023-04-11 11:11:12 -07:00
Devine Lu Linvega 24dbc7d5f8 (screen) Rename screen_clear to screen_fill 2023-04-11 10:42:32 -07:00
Devine Lu Linvega daa421c259 (uxn.c) Cache stack pointer 2023-04-11 10:32:23 -07:00
Devine Lu Linvega fc8400dcac (uxn.c) Formatting 2023-04-11 10:24:54 -07:00
Devine Lu Linvega 3973bc2ab8 Made the uxn stacks private again 2023-04-11 10:14:29 -07:00
Devine Lu Linvega 6f55ed496c (uxncli) Fixed issue with DateTime device mask 2023-04-08 08:53:56 -07:00
Devine Lu Linvega eaf7d095ec (system.c) The debug port will always print the stacks, even if empty 2023-04-06 17:50:03 -07:00
Devine Lu Linvega 00ed056e51 (uxnasm) Added support for label sized pads 2023-04-04 20:02:33 -07:00
Devine Lu Linvega 3b10969f9e Fixed issue where a screen redraw might occur after it has been unset 2023-04-02 20:27:15 -07:00
Devine Lu Linvega 8b43d0d7ae Removed redundant pixel param from screen routines 2023-03-27 08:38:54 -07:00
Sigrid Solveig Haflínudóttir 8a3c86a879 core: in plan 9 C it does not wrap around, fix the crash 2023-03-20 16:29:46 +00:00
Sigrid Solveig Haflínudóttir 37afbc25fb file: sprintf → snprintf 2023-03-20 16:58:45 +01:00
Sigrid Solveig Haflínudóttir 562153d09e fix a few long-standing compilation warnings 2023-03-20 16:58:09 +01:00
Devine Lu Linvega e386c3aeaa Fixed issue with Windows builds 2023-03-19 14:12:14 -07:00
Deadly Headshot 05fd9771ca A more elegant solution to the Windows bugs in filepaths and MinGW compilation 2023-03-19 14:11:42 -07:00
Devine Lu Linvega 7d66d81e63 Fixed issue with datetime mask 2023-03-17 21:45:03 -07:00
Devine Lu Linvega 4f9b375895 Fixed issue with device deo mask in uxnemu 2023-03-14 12:40:31 -07:00
Andrew Alderwick c701b95541 Detect stack overflows with greater than 255 bytes. 2023-03-13 06:04:33 +00:00
Andrew Alderwick 4464b1ec56 Correct SET values for NIP. 2023-03-13 06:03:44 +00:00
Devine Lu Linvega b68af3d173 Replaced macros in PUT2/PUSH2 2023-03-12 18:29:08 -07:00
Devine Lu Linvega 1de2cea576 Ordered the SWP writes 2023-03-12 16:15:27 -07:00
Devine Lu Linvega 3ecbfe5e03 Make use of macros in PUT/PUSH 2023-03-12 15:54:20 -07:00
Devine Lu Linvega 4e77d3d5ae Renamed PEEK16/POKE16 to PEEK2/POKE2 2023-03-12 15:25:52 -07:00
Devine Lu Linvega 43ce262a07 Moved opcodes side-by-side 2023-03-12 15:16:10 -07:00
Devine Lu Linvega 6c068b7774 Removed device page from addressable memory 2023-03-12 14:56:44 -07:00
Devine Lu Linvega bdd071cab4 Archived old core 2023-03-12 14:49:58 -07:00
Devine Lu Linvega 13ab0e5d95 Temporarily override uxn.c with fast until I can port the devices macros 2023-03-11 23:00:32 -08:00
Sigrid Solveig Haflínudóttir 8420c81d52 system.h: no need to redefine the same macro 2023-03-12 02:39:20 +01:00
Devine Lu Linvega 75af0e3cad Removed redundant mask in SFT opcode 2023-03-08 09:25:55 -08:00
Devine Lu Linvega c4856aabf0 Added missing ports in device mask 2023-03-07 19:48:24 -08:00
Devine Lu Linvega 77c8e82419 Moved dei/deo masks into emulators 2023-03-06 10:36:24 -08:00
Devine Lu Linvega 76be67efa0 (uxn-fast.c) Housekeeping 2023-03-06 08:40:00 -08:00
Devine Lu Linvega d08efece3d (uxn-fast.c) Removed redundant macro 2023-03-06 08:31:08 -08:00
Devine Lu Linvega 2c20d282a8 (uxn-fast) Standardized STH opcodes 2023-03-05 11:35:53 -08:00
Devine Lu Linvega 9f4231c59a (uxn-fast) Housekeeping 2023-03-05 11:33:33 -08:00
Devine Lu Linvega 3da461e14d (uxn-fast) Housekeeping 2023-03-05 11:31:37 -08:00
Devine Lu Linvega 211c4afa2d (uxn-fast) Use macros for STH 2023-03-05 11:29:58 -08:00
Devine Lu Linvega 8ae1c191d7 (uxn-fast.c) Removed function pointers, instead use exterm 2023-03-05 10:44:23 -08:00
Devine Lu Linvega 3190cf3238 Catch overflow in lit opcodes 2023-03-05 10:02:26 -08:00
Devine Lu Linvega 268ec45780 (Screen) Use fast timer if vector short is set 2023-03-04 11:07:11 -08:00
Devine Lu Linvega 3457f665a7 Use device masks for DEI 2023-03-04 10:51:23 -08:00
Devine Lu Linvega aeceaf75bf Removed file dei event 2023-03-03 21:04:26 -08:00
Devine Lu Linvega 9ac7f06fde (uxn-fast) Housekeeping 2023-03-03 20:47:20 -08:00
Devine Lu Linvega 4cacc0d26b Removed unused deo param 2023-03-03 20:37:43 -08:00
Devine Lu Linvega 8f979ec0fe Use uxn-fast in bug until the callback masks are ported 2023-03-03 12:02:42 -08:00
Devine Lu Linvega 32539d02a9 Added file device mask 2023-03-03 11:16:24 -08:00
Devine Lu Linvega 6eac5226e1 (bunnymark) Ported to immediate opcodes 2023-03-03 11:03:38 -08:00
Devine Lu Linvega 895bfc8675 (mandelbrot.tal) Migrated to immediate opcodes 2023-03-02 20:45:19 -08:00
Devine Lu Linvega 617e3d1f41 (uxn-fast) Added overflow error 2023-03-02 19:47:24 -08:00
Devine Lu Linvega 61393d0d83 (uxn-fast) First draft 2023-03-02 16:37:14 -08:00
Devine Lu Linvega 8c4b1b0592 Use switch for console_deo 2023-03-01 12:04:05 -08:00
Devine Lu Linvega ea0d81a9b1 (uxnasm) Fixed refs limit check 2023-03-01 11:46:44 -08:00
Devine Lu Linvega 96a19b4887 Merge branch 'main' of git.sr.ht:~rabbits/uxn 2023-03-01 11:31:10 -08:00
Devine Lu Linvega dae025af20 Date and Screen devices DEI do no need device ptr 2023-03-01 11:28:14 -08:00
Andrew Alderwick 075747f2bd Address compiler warning about switch case falling through. 2023-03-01 19:24:18 +00:00
Andrew Alderwick d12b948e82 Remove unitialised memory. 2023-03-01 19:23:13 +00:00
Devine Lu Linvega abd7ab403e Removed POKDEV 2023-03-01 10:53:44 -08:00
Devine Lu Linvega 486a60b1bd Removed PEKDEV macro 2023-03-01 10:49:25 -08:00
Devine Lu Linvega 53f3c18dcf Removed GETVEC macro 2023-03-01 10:42:03 -08:00
Devine Lu Linvega 87de244d37 Replaced some macros 2023-03-01 10:35:42 -08:00
Devine Lu Linvega 18de47cc1c Fixed issue with out-of-screen painting 2023-02-28 21:54:52 -08:00
Devine Lu Linvega 85df5f2d36 (uxnasm) Fixed issue with makeref() 2023-02-28 21:47:45 -08:00
Devine Lu Linvega bd01e71c35 Sprite wipe helper 2023-02-28 20:54:32 -08:00
Devine Lu Linvega 5709511c7e (screen.c) Do not shift a zero in 1bpp 2023-02-28 19:34:13 -08:00
Devine Lu Linvega 3818720eb2 Removed opacity lut 2023-02-28 17:00:21 -08:00
Devine Lu Linvega 91386f4832 (uxn.c) Housekeeping 2023-02-26 14:28:50 -08:00
Devine Lu Linvega 254f0031e5 (uxn.c) Housekeeping 2023-02-26 13:07:48 -08:00
Devine Lu Linvega c6110a50d5 Removed param in PUSH() macro 2023-02-26 09:55:39 -08:00
Andrew Alderwick f07775a9a2 (file device) Fix buffer overflow. 2023-02-17 21:39:14 +00:00
Devine Lu Linvega 60080d8fe8 (file device)Add / suffix to folder names 2023-02-17 10:08:00 -08:00
~d6 c61be654d6 Pass through more keysyms when control is pressed. 2023-02-14 18:33:51 -08:00
Devine Lu Linvega 1014229b8c (uxncli)Use System/halt as exit code 2023-02-13 09:33:57 -08:00
Sigrid Solveig Haflínudóttir c11dcc3771 remove nonsense return 0 2023-02-07 12:08:17 +00:00
Devine Lu Linvega 9f4e85b1b3 Named arguments in system_cmd 2023-02-02 10:40:47 -08:00
Devine Lu Linvega 36a70ed605 Protect system_cmd from reading out of bounds 2023-02-02 10:20:19 -08:00
Devine Lu Linvega 33d6ef8cd2 Reversed arguments in system loader 2023-02-02 09:35:05 -08:00
Devine Lu Linvega 0dcc3b4c2e Simplified system_cmd 2023-01-31 09:49:32 -08:00
Devine Lu Linvega e20b572c20 Moved all system memory functions into system.c 2023-01-31 09:38:06 -08:00
Andrew Alderwick 5538e539d2 Minor optimisation. 2023-01-31 17:11:54 +00:00
Andrew Alderwick 9d9d094e6a Bare minimum changes to get Windows builds running again. 2023-01-31 17:05:01 +00:00
Devine Lu Linvega 0aa4aeff41 Load rom in chunks of 64kb 2023-01-28 18:38:37 -08:00
Devine Lu Linvega 390ae8138a Extend loaded rom size 2023-01-28 15:05:24 -08:00
Devine Lu Linvega fd84ff44d7 Initial draft for MMU 2023-01-28 14:45:31 -08:00
Devine Lu Linvega 22797644b5 Returned to simpler run function 2023-01-28 10:54:54 -08:00
Devine Lu Linvega b894ba4c57 Fixed issue with screen vector run 2023-01-27 09:36:04 -08:00
Devine Lu Linvega 63108c178a Tighter run 2023-01-26 10:56:14 -08:00
Devine Lu Linvega b5fa665cdb Reduce refresh requests without screen vector 2023-01-26 09:35:56 -08:00
Devine Lu Linvega e327373950 Increased refs limit 2023-01-21 18:24:11 -08:00
Devine Lu Linvega cfeeb85712 Catch invalid sublabels 2023-01-14 15:08:40 -08:00
Devine Lu Linvega ffb0a9c9bc (uxnasm.c) Auto-start at 0x100 2023-01-13 10:14:20 -08:00
Devine Lu Linvega fad574816d Removed errcode from stacks 2023-01-12 20:35:42 -08:00
Devine Lu Linvega bc26d9d60d (uxn.c) Removed mask to LDR and write in Uint16 var instead 2023-01-12 19:00:54 -08:00
Devine Lu Linvega c7d574b230 (uxn.c) Unallow LDR/STR to reach outside of ram 2023-01-12 18:47:19 -08:00
Devine Lu Linvega a5442ea4fd (uxn.c) Swapped JMI/JCI 2023-01-12 09:44:27 -08:00
Devine Lu Linvega 5e1c896554 (uxnasm) endian-agnostic handling of symbols file writing 2023-01-12 08:40:33 -08:00
Andrew Alderwick f202944566 Make JMI, JCI and JSI relative. 2023-01-12 13:22:21 +00:00
Andrew Alderwick 7490666878 (uxnasm) Simplify handling of references. 2023-01-12 13:15:07 +00:00
Andrew Alderwick 230e8dda34 Optimize opcode 0 handling. 2023-01-12 13:02:04 +00:00
Devine Lu Linvega e0c2da0700 (uxnasm) Use correct address in symbol export 2023-01-11 21:01:56 -08:00
Devine Lu Linvega d5d6a7a186 Removed DEO masks, already fed to Uint8 expecting function 2023-01-09 15:54:05 -08:00
Devine Lu Linvega a1bc00ce5f (uxnasm) Fixed buffer overflow in tokenizer 2023-01-07 11:59:00 -08:00
Devine Lu Linvega 4e68dc7753 Fixed crash vector where STR/LDR can access outside of bounds 2023-01-07 11:31:03 -08:00
Devine Lu Linvega 6cbe51b4ab (uxn.c)Use same macro format sequence for all CALL opcodes 2023-01-03 11:17:55 -08:00
Devine Lu Linvega 9b8cd748ad Faster CALL opcodes 2023-01-03 10:48:17 -08:00
Devine Lu Linvega 0e7137e016 (uxnasm) Experimental implementation of JM/JC/JS runes 2023-01-02 17:45:06 -08:00
Devine Lu Linvega 5b6aad6be2 Clearer routing of LIT/CALL opcodes 2023-01-02 13:11:52 -08:00
Devine Lu Linvega cc2b2e77b0 Merge branch 'main' of git.sr.ht:~rabbits/uxn 2023-01-02 09:50:57 -08:00
Devine Lu Linvega 491e4b7435 Returned the k variable in uxn core 2023-01-02 09:50:09 -08:00
Andrew Alderwick 5cacb3f241 Fix macOS build. 2023-01-02 15:23:28 +00:00
Andrew Alderwick d94a84bc93 Port Audio to new devices scheme. 2023-01-02 15:01:55 +00:00
Andrew Alderwick c2b0667496 Update Copyright years. 2023-01-02 14:40:23 +00:00
Devine Lu Linvega a450959e9f Removed extraneous j variable 2023-01-01 18:26:28 -08:00
Devine Lu Linvega 6d0b51fa7f Added support for CALL 2023-01-01 18:03:36 -08:00
Devine Lu Linvega 22cbd38fab Do not check twice for short mode in LIT opcode 2023-01-01 16:44:18 -08:00
Devine Lu Linvega 48596a6ee7 Removed PEEK16 macro 2023-01-01 16:22:37 -08:00
Devine Lu Linvega 7f275772ef Added HALT macro 2023-01-01 16:21:05 -08:00
Devine Lu Linvega 5ac6ff4313 All devices but audio ported to new devices scheme 2023-01-01 16:13:34 -08:00
Devine Lu Linvega 2fb5f560a7 Use the File device load_rom function 2023-01-01 14:18:27 -08:00
Devine Lu Linvega 794ce1bdfd Housekeeping 2023-01-01 13:40:58 -08:00
Devine Lu Linvega bf4ee03d27 Ported screen to new device 2023-01-01 13:34:20 -08:00
Devine Lu Linvega 7afe1f39c7 Screen device is half ported to new device handlers 2023-01-01 13:19:40 -08:00
Devine Lu Linvega 679aec047a Device memory is not a member of ram 2023-01-01 12:21:30 -08:00
Devine Lu Linvega 68d706be25 Will connect devices to devold while I migrate to new router 2023-01-01 12:12:59 -08:00
Devine Lu Linvega 0fd68e96f0 Connecting new device ports to uxn core 2023-01-01 12:04:54 -08:00
Devine Lu Linvega d1ca328b98 Removed devmouse and devctrl globals 2023-01-01 11:47:52 -08:00
Devine Lu Linvega 9aefeebf25 Removed Device struct from controller device 2023-01-01 11:37:34 -08:00
Devine Lu Linvega 062bbac37d Removed Device struct from mouse device 2023-01-01 11:31:14 -08:00
Sigrid Solveig Haflínudóttir 6317b5cf18 fix uxnasm: missing semicolon 2022-12-11 04:54:58 +01:00
neauoire c97aa87faf (uxnasm)Allow more space for symbols filename, and check for length 2022-12-10 11:07:45 -08:00
neauoire 2f3954d398 Uxnasm should use BE to store addresses 2022-12-09 12:52:34 -08:00
neauoire d4c55e2f48 Uxnasm now outputs a symbols file 2022-12-09 12:30:04 -08:00
neauoire c8fc397054 Relaunch boot rom if launcher is not found 2022-11-11 21:12:30 -08:00
neauoire f59b214ac1 Added _rune 2022-11-10 20:54:53 -08:00
neauoire da5e581442 (uxnasm) Fixed issue with = rune 2022-11-09 16:40:07 -08:00
neauoire 261b574671 (uxnasm) Added support for = and - runes 2022-11-09 16:21:07 -08:00
Devine Lu Linvega 24285d1d5d Fixed issue with monochromatic 2022-09-15 11:12:57 -07:00
Devine Lu Linvega ac6e4fed10 Toggle monochromatic mode 2022-09-15 09:11:20 -07:00
Devine Lu Linvega f348d24606 Removing rawchr run 2022-08-14 12:06:23 -07:00
Devine Lu Linvega ef30fb8f8e Removed JSR JMP2r tail-call optimisations for now 2022-08-06 11:05:16 -07:00
Andrew Alderwick fb030288f9 Disable execution timeouts for now.
This is a quick hack to disable the execution timeout, while still
making the application able to exit if the window is requested to close.
Execution limits may be reintroduced with more debugging features, but
not enabled by default.
2022-06-13 09:15:20 +01:00
Andrew Alderwick 04352a8c89 Switch back to single thread for handling redraws.
This reverts commit a283264df2 while
keeping the enhancements made later on (detection of overlong
execution).

This change fixes compatibility for learn-uxn and current npe.
2022-06-10 07:58:29 +01:00
Andrew Alderwick 978713474a (uxnasm) Prevent tail call optimisation when required, fixes asma
Literals do not get squashed across absolute or relative pads and
labels, now the tail call optimisations do not occur under the same
conditions. etc/asma-test.tal was identifying serious errors with
asma.rom, which uses "JSR2 &skip JMP2r" in @asma-macro-body.
2022-06-07 20:03:12 +01:00
Andrew Alderwick 0ff2a3586d Deal with compiler warnings. 2022-06-07 19:39:43 +01:00
Devine Lu Linvega 0fafd652f1 (uxnasm) Better parent label reference counting 2022-06-06 09:42:26 -07:00
Devine Lu Linvega bf81d07113 (uxnasm)Quiet label warnings with sublabels 2022-06-06 07:57:29 -07:00
phoebos a014cd8da9 (uxnasm) only ignore [ or ] if it is a whole token
Currently, tokens beginning with a [ or ] character are completely
ignored, which forbids a macro from beginning with these characters.
Specifically, a macro can be declared eg. as `%[x { ... }` but cannot be
dereferenced as `[x`.
This patch only ignores these tokens if they have a length of 1;
otherwise the switch falls through to the default case.
2022-06-05 16:29:06 -07:00
Andrew Alderwick eb8c496feb Revert "Fix for hanging on quit", replacing it with improved code 2022-06-03 22:42:54 +01:00
Devine Lu Linvega 17fd40af43 (uxnasm) Minor cleanup 2022-05-31 14:04:54 -07:00
Devine Lu Linvega 18b73f4861 (uxnasm)Optimize tail-call for subroutines too 2022-05-31 13:55:00 -07:00
Devine Lu Linvega 3c06af41c3 Tiny change to uxnasm 2022-05-31 13:38:21 -07:00
Devine Lu Linvega 8176ab93c8 Extended timeout to 20 frames to give RPIs a chance 2022-05-31 12:29:55 -07:00
Devine Lu Linvega 56d08285b7 Fix for hanging on quit 2022-05-31 12:25:25 -07:00
Devine Lu Linvega 5a0e0c56aa Added tail-call optimization 2022-05-26 20:26:21 -07:00
Andrew Alderwick e00e74b9d0 (uxnasm) Raise an error if the output rom would be empty. 2022-05-09 21:13:28 +01:00
neauoire fec233db2a Use helpers for LIT 2022-04-18 12:33:30 -07:00
Andrew Alderwick d5253086b5 Move stack opcodes. 2022-04-18 09:45:33 +01:00
Andrew Alderwick c2ffe63cc3 (uxnasm) Fix valid macro names being rejected.
Macro names that begin with the name of an opcode were being rejected
incorrectly. “STA” would not be a valid macro name since it is an
opcode, but “STACK” should be fine.
2022-04-14 18:24:48 +01:00
neauoire d49981c4ce Removed runes 2022-04-11 17:27:33 -07:00
neauoire a3c42c23b9 Fixed issue with oprunes 2022-04-11 17:16:05 -07:00
neauoire dcc37fd0d5 Added logic/arithmetic symbols to uxnasm 2022-04-11 16:07:15 -07:00
neauoire 60315ff3dc Raised label limit in uxnasm 2022-04-11 15:34:53 -07:00
Andrew Alderwick 4c59498f14 (Windows) Fix uxnemu freezing on exit. 2022-04-09 12:22:24 +01:00
Andrew Alderwick 219cfee472 (Windows) Fix output not flushing automatically. 2022-04-09 12:21:39 +01:00
Andrew Alderwick 72c7296a47 Revert "Switch to SDL Timer for redraw handler." 2022-04-09 12:19:27 +01:00
Andrew Alderwick 96f4510a03 Switch to SDL Timer for redraw handler. 2022-04-09 11:37:51 +01:00
Andrew Alderwick a35ef6b242 Fix build warning on Windows. 2022-04-09 11:37:06 +01:00
Sigrid Solveig Haflínudóttir 2a892a23b1 uxnemu: fix a memory leak (ram) in start() and reduce types clutter 2022-03-29 19:24:15 +02:00
Andrew Alderwick 47f65c7b82 (uxncli) Load ROM using the File device functions. 2022-03-28 18:51:29 +01:00
Andrew Alderwick 42dea5b914 Replace file_i_deo and file_i_dei. 2022-03-28 18:16:44 +01:00
Sigrid Solveig Haflínudóttir 0b75afc415 uxnemu: use read() in stdin thread and close(0) at shutdown for the thread to exit 2022-03-28 17:49:54 +02:00
Sigrid Solveig Haflínudóttir f06494477a uxnemu: fix the stuck threads on quit, SOMEWHAT
Create threads in detached mode and check if events failed to be
pushed. Stdin thread is still blocking on fread hence the "SOMEWHAT".
2022-03-28 17:24:35 +02:00
neauoire c4f7483027 Arranged include order 2022-03-27 09:18:02 -07:00
Andrew Alderwick 0e7ebb69e6 (uxnemu) Interrupt infinite loops with an error. 2022-03-27 13:53:25 +01:00
Andrew Alderwick b9ff19d857 (uxnemu) Update indentation with clang-format.
The main loop now uses SDL_WaitEvent instead of SDL_PollEvent, and the
indentation level needs to change. For clarity, the previous commit
contains the code changes, while this one updates the indentation.
2022-03-27 13:18:37 +01:00
Andrew Alderwick a283264df2 (uxnemu) Use a separate thread for triggering redraws.
The main loop now uses SDL_WaitEvent instead of SDL_PollEvent, and the
indentation level needs to change. For clarity, this commit contains the
code changes, while the next one updates the indentation.
2022-03-27 13:16:40 +01:00
Andrew Alderwick f2c644f680 Move DateTime to 0xc0, add second File to 0xb0. 2022-03-26 17:54:29 +00:00
Andrew Alderwick 7ce8cc1d24 Add file reading with .File/read DEI(2). 2022-03-17 19:09:34 +00:00
Andrew Alderwick 205cc89bcb Keep a local copy of File/name; don't try to read it beyond end of RAM. 2022-03-17 18:41:55 +00:00
Andrew Alderwick 27089a77e4 Prepare for more than one File device. 2022-03-17 18:35:49 +00:00
Andrew Alderwick bca73244f0 Minor fix to audio.c. 2022-03-17 18:29:44 +00:00
Andrew Alderwick a3b87e021f Rename file_deo variables. 2022-03-17 17:08:03 +00:00
Andrew Alderwick 5dcf0a2b35 Make the UxnAudio struct private to audio.c. 2022-03-17 16:59:36 +00:00
Andrew Alderwick 1d694c43ea Fix sprite address check. 2022-03-06 20:39:27 +00:00
Andrew Alderwick fef8806493 Fix comment at end of uxn.h. 2022-03-06 18:02:34 +00:00
Andrew Alderwick 314dd5a431 screen/auto: Replace draft looping with block width control. 2022-03-06 18:02:34 +00:00
Andrew Alderwick 1b04e0814b (draft) Add looping functionality to Screen/auto. 2022-03-06 13:42:59 +00:00
Bad Diode 11c9ec8b49 Add header guard to uxn.h 2022-03-05 13:58:03 -08:00
Andrew Alderwick 0c819b9f59 clang-format 2022-02-19 01:02:47 +00:00
Andrew Alderwick 550aceee23 (uxnasm) Allow writing the 0xffff byte of RAM. 2022-02-19 00:29:40 +00:00
Andrew Alderwick 8b84813c6e (uxnasm) Raise error when memory is overwritten. 2022-02-19 00:27:28 +00:00
Andrew Alderwick da4f0e70a5 (uxnasm) Allow returning errors from writebyte(). 2022-02-19 00:26:55 +00:00
Andrew Alderwick 0ae6992089 (uxnasm) Fix calculation of usage. 2022-02-18 23:02:42 +00:00
Andrew Alderwick f06498f6a6 Remove unused constants. 2022-02-17 18:17:17 +00:00
Liam Cooke 33940d3b5b Fix blurry pixels on high-DPI displays
Creates the uxnemu window in high-DPI mode when supported. Now it looks
pixel perfect on a display with 2:1 pixel density.

Should have no effect on a 1:1 display, but I don't have access to one
to test this.
2022-02-04 08:52:31 -08:00
Andrew Alderwick 055fa9bcd0 Close some security holes. 2022-01-23 23:17:54 +00:00
Andrew Alderwick deace3b79a Remove old debugging support. 2022-01-23 19:35:18 +00:00
Andrew Alderwick edd05ed1d1 Fix compiler warning. 2022-01-23 11:23:52 +00:00
Andrew Alderwick 6577d3c8a0 Remove jump-based infinite loop detection. 2022-01-23 11:17:07 +00:00
Andrew Alderwick fbd9c49f84 Fix resize when only width or height are set. 2022-01-20 01:34:44 +00:00
Andrew Alderwick d186b7a038 Perform resizing of SDL screen during redraw. 2022-01-20 01:24:22 +00:00
Andrew Alderwick cd0ca2eb17 Move clamp() to screen.c. 2022-01-20 01:24:20 +00:00
Andrew Alderwick cf84a5d661 Prevent invalid screen sizes. 2022-01-19 18:30:32 +00:00
Andrew Alderwick 2c47425c41 Remove trailing space in stack printing 2022-01-14 07:59:42 +00:00
neauoire 4ea8cc2819 Removed extra specing around bytes in stack printing 2022-01-13 14:52:37 -08:00
neauoire fc659b9094 Removed devsystem 2022-01-13 10:55:02 -08:00
neauoire b48db8278f (monospace.tal) Added a 8x8 label drawing example 2022-01-13 10:25:31 -08:00
neauoire f1cc022e9b Uxncli now uses the system_inspect 2022-01-13 08:34:32 -08:00
neauoire 44a7f5ef0e Removed old debug files 2022-01-13 08:26:35 -08:00
neauoire 031f63a13c Print stack with DEO on 0x0f 2022-01-13 08:25:59 -08:00
neauoire ee4308196a Starting a debugging device 2022-01-12 21:22:33 -08:00
neauoire 6a6a2ec383 Removed external memory bank 2022-01-12 18:56:59 -08:00
neauoire 459855d825 Removed supervisor 2022-01-12 18:40:51 -08:00
Andrew Alderwick 696ef03f12 Remove goto/label for jumps. 2022-01-12 13:09:45 +00:00
Andrew Alderwick 41de322a75 Add support for interrupting Uxn during execution. 2022-01-12 11:33:49 +00:00
Andrew Alderwick b1ba95336c Remove unistd.h from uxnemu.c. 2022-01-11 23:50:41 +00:00
neauoire 5e2bb92e4c Removed unistd from uxncli 2022-01-11 15:13:12 -08:00
neauoire 06b694d406 Removed ram helper in uxn 2022-01-11 14:51:25 -08:00
neauoire 61c7f9f0c1 Removed device globals 2022-01-11 14:38:55 -08:00
neauoire cd30b48665 Rename memory banks 2022-01-11 14:16:27 -08:00
neauoire ede186b226 Minor cleanup 2022-01-11 11:07:25 -08:00
neauoire 38d2c7cbd7 (boot.rom) Renamed to launcher.rom 2022-01-10 20:35:34 -08:00
Andrew Alderwick 9fcb0c335b Remove use of snprintf. 2022-01-10 11:35:45 +00:00
Andrew Alderwick 0d242d704e Correct cast for snprintf 2022-01-10 09:59:00 +00:00
neauoire 37497060dc Removed stdlib from screen header 2022-01-08 19:38:53 -08:00
neauoire 5004ee1339 The file device cannot write on the supervisor 2022-01-08 10:03:21 -08:00
neauoire c866b0938a Use proper memory size 2022-01-07 16:51:43 -08:00
neauoire 8fdb039926 Merge branch 'main' of git.sr.ht:~rabbits/uxn 2022-01-07 16:47:01 -08:00
neauoire f5278f3a13 Removed device vector variable 2022-01-07 16:46:50 -08:00
Sigrid Solveig Haflínudóttir eeb0dc9e45 put back newlines to avoid compilation warnings 2022-01-07 23:46:39 +01:00
neauoire 180984f8fb Removed device port masks 2022-01-07 11:48:09 -08:00
neauoire b328a4e87d Commented the fkey controls temporarily 2022-01-07 11:36:04 -08:00
neauoire 38334a633b Pass fn keys directly to the supervisor 2022-01-07 10:55:09 -08:00
neauoire 19a8e56cd6 Started device port masking 2022-01-07 10:02:28 -08:00
neauoire 41d0911d13 The supervisor program now uses its own vectors 2022-01-06 19:51:34 -08:00
neauoire 1a7af4d8d0 Supervisor is now watching the device page 2022-01-06 19:20:50 -08:00
neauoire 28b9265042 Let us make a device page in shadow memory 2022-01-06 18:49:54 -08:00
neauoire a82f7d79f8 Defined the location of stacks in shadow memory 2022-01-06 17:29:34 -08:00
neauoire 4c6821189e Merge branch 'main' of git.sr.ht:~rabbits/uxn 2022-01-06 14:32:35 -08:00
neauoire ed1f6e6263 Connected error reporting and the hypervisor 2022-01-06 14:32:28 -08:00
Sigrid Solveig Haflínudóttir d21bfb20e0 SDL_PIXELFORMAT_XRGB8888 → SDL_PIXELFORMAT_RGB888 (for older SDL2 versions) 2022-01-06 18:24:35 +01:00
neauoire 3cc2ba98f0 First hypervisor 2022-01-05 20:44:33 -08:00
neauoire b9a37077c3 Started work on the hypervisor 2022-01-05 19:48:51 -08:00
Sigrid Solveig Haflínudóttir 4cd52209ac make the SDL texture XRGB8888 (no alpha) and remove padding pixels from it 2022-01-05 22:45:49 +01:00
Andrew Alderwick f48a09c482 Stop LeakSanitizer complaining about Uxn's RAM. 2022-01-05 18:18:13 +00:00
Andrew Alderwick 4cbb661f48 Implement System/vector for debugging. 2022-01-05 17:27:24 +00:00
Andrew Alderwick 0fd288de79 Fix compiler suggestion. 2022-01-05 14:37:37 +00:00
Andrew Alderwick 291cb3d1a2 Simplify stack determination logic. 2022-01-05 14:02:06 +00:00
Andrew Alderwick 646d79fff5 Factor out common parts of system_dei/deo. 2022-01-05 13:29:18 +00:00
Andrew Alderwick c77799dac2 Just pass an error code to uxn_halt. 2022-01-05 13:07:04 +00:00
Andrew Alderwick c37831749f Split uxn_halt into beginnings of System device file. 2022-01-05 13:03:17 +00:00
Andrew Alderwick c827fdc960 Move errored stack identification to after error handling label.
Partial revert of commits 1ce8b9bc27 (and
c296187ea9).
2022-01-05 01:27:27 +00:00
Andrew Alderwick c296187ea9 Rename ERROR/err to FAULT/fault 2022-01-04 02:15:38 +00:00
Andrew Alderwick 2a825de2fd Switch void context increments from pre to post 2022-01-04 02:05:32 +00:00
Andrew Alderwick 1ce8b9bc27 Bring back working/return stack identification on errors 2022-01-04 02:05:32 +00:00
Andrew Alderwick 7e3353ea72 Rename u->ram.dat to u->ram, u->ram.ptr to pc. 2022-01-04 01:40:48 +00:00
Andrew Alderwick 205f63cc43 Clear up SDL_KEYDOWN/SDL_TEXTINPUT logic 2022-01-04 01:12:17 +00:00
neauoire 4789d8ccef Removed peek16 2022-01-03 13:29:47 -08:00
neauoire 0ee477615b Removed poke16 2022-01-03 13:23:57 -08:00
cancel 416389bcf4 Improvements to uxn.c 2022-01-03 13:41:20 +00:00
cancel 1cab0dffeb Removed unused fields in uxn.h 2022-01-02 23:26:13 +00:00
Andrew Alderwick 52598bdad7 Remove uxn-fast.c since new reference core is almost as fast. 2022-01-02 23:05:28 +00:00
cancel 6980abacfc Refactor uxn.c. 2022-01-02 23:03:06 +00:00
neauoire ecc2654165 Prefixed helpers in uxn.c 2022-01-02 11:04:13 -08:00
neauoire cca1253376 Use calloc for memory array 2022-01-01 15:20:48 -08:00
Sigrid Solveig Haflínudóttir 22c6e07fca emu: make sure to handle key down event if the same key is up at the same frame 2021-12-29 23:32:18 +01:00