Commit Graph

126 Commits

Author SHA1 Message Date
Ry
1211d4fdcc Use a more reliable method for detecting key presses 2022-09-16 18:34:16 -07:00
Ry
4a18af8f81 Allow switching the stack pointer automatically on interrupts/exceptions 2022-09-16 17:29:58 -07:00
Ry
3ce3af511e Hack memory writes to use longjmp if a page fault occurs 2022-09-16 00:27:23 -07:00
Ry
8259e5787e Fix an issue where write faults sometimes return the *physical* address 2022-09-15 23:59:46 -07:00
Ry
d30dad4797 Potentially fix a double page fault issue under certain conditions 2022-09-15 23:41:46 -07:00
Ry
02f3d04f4f Make page faults on page boundaries return the correct address 2022-09-15 18:35:17 -07:00
Ry
b55d7deb36 Page fault on writes to unmapped physical memory 2022-09-15 17:28:56 -07:00
Ry
8be5c65c73 Fix many issues relating to paging, split page fault into 2 vectors 2022-09-15 17:17:29 -07:00
Ry
3df3a98f3c Rework the paging system a little bit, add FLP instr., bump ver to 0.5.0 2022-09-13 17:34:37 -07:00
Ry
9970a04cc9 Implement an RTC, bump version to 0.4.0 2022-09-09 16:16:09 -07:00
Ry
38f81ce4e3 Move fox32.rom into the src folder 2022-08-18 23:18:27 -07:00
Ry
e630e15661 Don't fail to build if building outside of a git repo 2022-08-18 23:16:26 -07:00
Ry
7fd8d36281 Actually implement paging properly, bump version to 0.3.1
I was mixing up the virtual and physical addresses, oops
2022-08-15 19:43:28 -07:00
Ry
82edb1d8da Implement paging, bump version to 0.3.0
This works in a similar way to x86's paging, by using page directories
which point to page tables, which point to physical addresses.
2022-08-15 17:40:04 -07:00
Ry
17b14dd72f Remove the unused f32 file type, bump version to 0.2.1 2022-08-09 23:33:00 -07:00
Ry
4b506f3e65 Add int instruction, bump version to 0.2.0 2022-08-09 02:04:46 -07:00
Ry
ad6f402179 Add 3 additional audio channels for a total of 4 2022-08-09 01:37:21 -07:00
Ry
881b9c1620 Embed fox32rom into the main fox32 executable, prepare for 1st release 2022-07-31 17:15:27 -07:00
Ry
2d6730bb0b Allow adjusting the audio sample rate 2022-07-27 18:29:32 -07:00
Ry
8e4f2bc114 First audio buffer refill interrupt should play from buffer 0 2022-07-27 14:24:05 -07:00
Ry
d2d05f2d76 Hack to ensure the CPU thread exits when the window is closed 2022-07-27 14:09:54 -07:00
Ry
537b774667 Move the audio buffer locations into consts
No more magic values!!!
2022-07-26 15:54:44 -07:00
Ry
dfadccd68c Use a const for the framebuffer address 2022-07-24 17:08:45 -07:00
Ry
953b2cfffe Don't print the scancode on every key press 2022-07-24 16:57:28 -07:00
Ry
bd7eba3ddb Remove fox32core support
This works around the issue with building on Windows.
2022-07-23 17:56:09 -07:00
Ry
940023f47b Allow passing multiple arguments to mount multiple disks 2022-06-21 19:37:56 -07:00
Ry
c07eec2761 Fix application icon file 2022-06-21 00:31:11 -07:00
Ry
79517de317 fox32: Allow reading back the playing state from the audio IO port 2022-06-20 17:13:18 -07:00
Ry
e8960c569f fox32+fox32asm: Remove pow instruction 2022-05-30 00:48:19 -07:00
Ry
5deb4fd8f8 fox32: Add support for audio playback 2022-05-25 16:15:39 -07:00
Ry
a8d92c69b2 fox32+fox32core: Rework the interrupt system a little bit 2022-05-16 23:52:07 -07:00
Lua MacDougall
81ccead64c fox32: revert changes to release profile, switched back to step 2022-05-12 15:08:36 -07:00
Lua MacDougall
e6b74a3ae0 fox32: use resume with high count for core runtime, update release 2022-05-12 14:44:03 -07:00
Lua MacDougall
cb95b2b112 fox32: add FOX32_DEBUG environment variable 2022-05-12 14:11:11 -07:00
Lua MacDougall
fd3b83a15b fox32: added fox32core support :3 2022-05-12 01:37:55 -07:00
Ry
83a5d14775 fox32: Allow disks to be removed 2022-04-17 14:28:41 -07:00
Ry
7f796dd989 fox32: Dump RAM if bad opcode 2022-04-17 13:29:17 -07:00
Lua MacDougall
a8ff66c3a0 fox32: fix stack overflow when initializing memory 2022-04-16 23:30:54 -07:00
Ry
fb3d681f55 fox32+fox32rom: Add EVENT_TYPE_MOUSE_RELEASE 2022-04-16 15:15:03 -07:00
Ry
e7f81afa50 fox32: Reading/writing unmapped memory is now an error 2022-03-23 11:54:32 -07:00
Ry
1f89b59f83 fox32: Start implementing keyboard input support 2022-03-18 21:36:44 -07:00
Ry
22c7b26317 fox32: Use logo as window icon :3 2022-03-12 17:11:54 -08:00
Ry
93d331bb07 fox32+fox32rom: Use DMA for the disk controller
Instead of accessing one byte at a time, use a DMA-like system to
read/write a whole sector at a time directly to/from memory.
2022-03-12 13:12:10 -08:00
Ry
998646cb80 fox32+fox32asm: Add proper support for greater than and less than
This adds IFGT, IFGTEQ, IFLT, and IFLTEQ, which makes it easier to
check for these conditions.
2022-03-12 12:15:27 -08:00
Ry
342c3e6061 fox32+fox32rom: Remove the concept of "fast" and "shared" memory
Instead of having two banks of RAM, just have one bank. This requires
the use of some cursed code, but it's fine :P

Co-authored-by: Lua <lua@foxgirl.dev>
2022-03-11 17:13:18 -08:00
Ry
cb2712cbf4 fox32: Exit on CPU halt 2022-03-11 11:52:05 -08:00
Ry
fe279c4d85 fox32: Introduce better error handling
Instead of panicing, we now just print an error and exit in some
situations where a panic is too verbose. Maybe we should just change
the panic handler instead though?
2022-03-11 11:03:27 -08:00
Ry
9674cbb2dd fox32: Show memory sizes in MiB and KiB 2022-03-11 10:47:41 -08:00
ry755
69a47b9336 fox32: Prevent div from modifying the carry flag 2022-02-26 16:41:35 -08:00
ry755
738ccd16e8 fox32: Allow specifying a disk to be inserted using command line args 2022-02-23 10:49:39 -08:00
ry755
27f308e785 fox32+fox32rom: Rename "mount"/"unmount" to "insert"/"remove" 2022-02-22 14:05:39 -08:00
ry755
eebeff2073 fox32: Set the stack pointer to zero by default 2022-02-11 20:33:39 -08:00
ry755
7083e7a704 fox32+fox32asm: Make ImmediatePtr encoding consistent for src and dest 2022-02-02 04:43:23 -08:00
ry755
e8287097ad fox32: Use the instruction size when reading from an immediate pointer
Previously, Operand::ImmediatePtr always read 32 bits from memory, then
truncated the value if the instruction size was smaller. Technically
this worked, but it would cause fox32 to print warnings if reading a
value at the very end of memory, because it would attempt to read past
the end of memory. Now, Operand::ImmediatePtr contains the instruction
size which is used by read_source().

This reverts commit 634a776a631c8e34f138dfbbfebf1c5cc74b6f05
2022-02-02 04:18:57 -08:00
ry755
deed31144f fox32: Remove outdated TODO 2022-02-02 04:07:09 -08:00
ry755
fe476414b7 fox32: Add 3 extra bytes at the end of fast and shared memory
Because Operand::ImmediatePtr always reads 4 bytes (even if the
instruction size is smaller), attempting to read the last byte of
memory through a pointer would cause fox32 to warn about reading
unmapped memory. Adding 3 extra bytes to the end of memory prevents
this.
2022-02-01 23:07:51 -08:00
ry755
20c71b8e70 fox32: Temporarily remove audio output support
IMO this wasn't implemented very well, so I'm removing this until I can
come up with a better implementation.
2022-01-30 17:04:23 -08:00
ry755
3b9c7b8bee fox32: Set title of open file dialog 2022-01-30 02:50:01 -08:00
ry755
6a319071c0 fox32: Allow any file type to be selected for mounting 2022-01-30 02:49:07 -08:00
ry755
64035f9629 fox32: Don't print a message to the terminal when the mouse is clicked 2022-01-30 01:01:25 -08:00
ry755
b957b58fb2 fox32: Implement a very basic disk controller
Any file type can be mounted as a disk, as long as the code running
inside fox32 can understand its data.
2022-01-29 23:17:51 -08:00
ry755
4f278bc58b fox32: Show version info on startup and in the window title 2022-01-27 18:30:59 -08:00
ry755
5c07305a5f fox32+fox32rom: Change the IO port base to 0x80000000 2022-01-27 18:11:54 -08:00
ry755
7a507fd768 fox32: Show ROM size on startup 2022-01-27 18:01:36 -08:00
ry755
d56648aa79 fox32: Clean up Memory stuff, and change the shared memory base
Shared memory is now mapped starting at 0x80000000
2022-01-27 17:50:07 -08:00
ry755
34de523f4d fox32: Set the stack pointer to the end of fast memory by default 2022-01-27 17:22:00 -08:00
ry755
982b4c7b89 fox32: Make fast_memory and rom public 2022-01-27 17:21:01 -08:00
ry755
06f69b322b fox32: Restructure Memory a little bit, and print sizes on startup 2022-01-27 17:17:11 -08:00
ry755
abee6efc82 fox32: Use ../fox32rom/fox32.rom if ./fox32.rom doesn't exist 2022-01-27 16:57:54 -08:00
ry755
99621394ec fox32: Move Memory to a separate file 2022-01-27 16:42:57 -08:00
ry755
994f6d7152 fox32: Move Bus to a separate file 2022-01-27 16:23:35 -08:00
ry755
3c6fda4b5c fox32: Rename CPU to Cpu 2022-01-27 16:20:17 -08:00
ry755
cf835927cb fox32: Use read_register() and write_register() everywhere 2022-01-26 23:43:02 -08:00
ry755
601874a6e4 fox32: Show a slightly more friendly error if fox32.rom doesn't exist 2022-01-26 23:39:50 -08:00
ry755
51551e1c50 fox32: Change ROM filename from rom.bin to fox32.rom 2022-01-26 22:48:58 -08:00
ry755
9b21b663f4 Initial commit
I should've made a git repo for this much sooner, oops :p
2022-01-26 22:21:21 -08:00