Ry
56e41e3915
Ensure the MMU gets re-enabled if we fail to read an interrupt vector
2022-09-18 18:22:40 -07:00
Ry
eba264db70
Add rfp
register, remove debug message about intruction pointer == None
2022-09-18 16:30:52 -07:00
Ry
f7b2320138
No longer use setjmp/longjmp to ensure things are atomic
2022-09-18 16:21:35 -07:00
Ry
3aaebeaf3e
Always allow exceptions to occur, regardless of interrupt flag state
2022-09-17 14:51:18 -07:00
Ry
bf48300f2f
Open disks as read-write
2022-09-17 00:15:39 -07:00
Ry
9059889d3d
Ensure register pointers read the requested size, not always 32 bit
2022-09-16 23:29:16 -07:00
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