Peter Evans
3db536a83d
Change memory_mode -> bank_switch
...
This also changes the concept of the field; bank_switch is a collection
of bit flags now.
2018-01-10 19:59:33 -06:00
Peter Evans
343d870399
Add missing mach parameter to set_video/set_memory
2018-01-10 16:59:02 -06:00
Peter Evans
aa486656b3
Set the reset vector to the applesoft interpreter address
2018-01-10 16:47:18 -06:00
Peter Evans
cb53c70cda
We missed a doc-block for the new set16 func
2018-01-10 16:46:55 -06:00
Peter Evans
fcba14f91b
Add set16 function
2018-01-10 16:43:14 -06:00
Peter Evans
6af0ae85a4
Also force bank switch mode back to ROM
2018-01-10 15:16:12 -06:00
Peter Evans
c9188a288d
Reset should change the video mode to 40 column text
2018-01-10 15:14:07 -06:00
Peter Evans
7f6b8d3587
We can no longer assume PC increments during address handling
...
This change required a number of consequent changes to assumptions we'd
made, and I'm not 100% confident we have things right at this point in
time.
2018-01-09 20:59:14 -06:00
Peter Evans
e3ab043aee
We no longer need to pass the opcode here
2018-01-09 20:58:53 -06:00
Peter Evans
80a7671a19
Remove next_byte, read_byte; execute works without an opcode arg
...
This also adds RTS and RTI as instructions that "would jump".
2018-01-09 20:58:19 -06:00
Peter Evans
de859bcea8
We were not obeying little-endianness here
2018-01-09 16:24:25 -06:00
Peter Evans
d7148b88bf
Relative address was not being calculated correctly.
...
The disassembler is using the correct approach, so I adapted it to the
execution code.
2018-01-09 15:57:37 -06:00
Peter Evans
a267065059
Include cycle information
2018-01-09 15:57:20 -06:00
Peter Evans
8201117223
Change init routine to use peripheral function
2018-01-09 15:56:48 -06:00
Peter Evans
0e0244162f
Change objstore structure to contain all peripheral ROM
2018-01-09 15:56:21 -06:00
Peter Evans
3c46a41351
Fix little-endian issue with IND output
...
Also change the ADDR label to emit a hex code, not a decimal code.
2018-01-08 23:36:11 -06:00
Peter Evans
1abf0223c8
The value of PC by that point is correct.
...
Adding 2 skips us ahead farther than we should be going.
2018-01-08 22:25:37 -06:00
Peter Evans
f7b8740c2e
Let the CPU run for longer before it dies
2018-01-08 22:24:30 -06:00
Peter Evans
b21b48cac0
Fix a couple of issues...
...
1. The execute function should not be incrementing the PC register, as
this happens in other places.
2. The push_ and pop_stack functions were not considering that the data
should be in little-endian order.
2018-01-08 21:22:29 -06:00
Peter Evans
e4049a6a11
Better info on each opcode sequence
...
Plus fix a display bug that showed the operand in the wrong order.
2018-01-08 21:21:09 -06:00
Peter Evans
7c899122ad
We should advance to the next byte in execution
2018-01-08 21:15:56 -06:00
Peter Evans
a8bba409c3
Change 16-bit references to respect little-endianness
...
As the Apple II (or rather the 6502 chip) is little-endian, meaning the
least significant byte is the first byte you read going forward, rather
than the last byte.
2018-01-08 17:10:26 -06:00
Peter Evans
3f59db311b
Allow us to ignore some docblock errors
2018-01-07 20:08:46 -06:00
Peter Evans
b2add9c3de
Move vm_area logic into its own file
2018-01-07 20:05:02 -06:00
Peter Evans
95e57a8e19
Add get_map_machine function.
...
Mostly useless except for testing.
2018-01-07 20:00:09 -06:00
Peter Evans
ba47de0e4b
Add objstore_clear(), tests for objstore
2018-01-07 16:30:33 -06:00
Peter Evans
1c36c4ea4d
Add missing docblock comments
2018-01-07 16:07:29 -06:00
Peter Evans
cccf6df354
Move address resolver
2018-01-07 15:47:57 -06:00
Peter Evans
888eb25797
Refactor a bit for easier testing; add log_stream()
2018-01-07 15:05:20 -06:00
Peter Evans
5da65e0a9e
Change apple2dd -> apple2_dd
2018-01-07 14:46:54 -06:00
Peter Evans
665f7de37c
Rename apple2dd_ to apple2_dd_
...
Except for the struct object (apple2dd).
2018-01-07 13:44:07 -06:00
Peter Evans
8ad1311536
Add set_memory function
2018-01-06 21:37:15 -06:00
Peter Evans
d9527db033
Retrieve the 16-bit PC address.
...
This fixes a bug where we only got an 8-bit address from $FFFC and
ignored the LSB at $FFFD.
2018-01-05 16:15:13 -06:00
Peter Evans
70516a7f91
Add function to return 16-bit value from a segment address
2018-01-05 16:14:51 -06:00
Peter Evans
c6799db689
Separate reset logic from boot function
2018-01-05 16:04:01 -06:00
Peter Evans
af7dae6924
Advance PC by # of bytes consumed
2018-01-05 15:52:20 -06:00
Peter Evans
7ceee608b3
Stop delaying by 2 seconds
2018-01-05 15:52:04 -06:00
Peter Evans
c7aa9e9fc3
Resolver may be NULL; don't call if so
...
This change also registers a default value for operand (0).
2018-01-05 14:57:38 -06:00
Peter Evans
d5b6205713
Actually execute some opcodes
2018-01-05 14:55:33 -06:00
Peter Evans
fd8f36b34e
We need to use the mach cpu
2018-01-05 14:19:13 -06:00
Peter Evans
1de1e7788a
Rename status flags to MOS_
2018-01-05 14:18:39 -06:00
Peter Evans
2da613f7aa
Provisional state upon reboot
2018-01-04 20:09:53 -06:00
Peter Evans
3f0a091520
Use const pointers; fix function name typo
2018-01-04 19:59:04 -06:00
Peter Evans
700bc31465
Copy system rom into $C800..$CFFF; document.
...
Things are getting a little hairy...at least, as to my own
comprehension. Documentation is a must.
2018-01-04 19:53:12 -06:00
Peter Evans
e184304ec5
A little more documentation post-rwops changes
2018-01-04 14:21:05 -06:00
Peter Evans
171ff62551
Change create to use objstore vm_8bit data
2018-01-03 21:50:30 -06:00
Peter Evans
565dd1b34b
Make sure the object store got built
2018-01-03 21:50:01 -06:00
Peter Evans
06d37d24d7
Allow us to call objstore_init more than once.
...
This also separates some code into objstore_ready().
2018-01-03 21:49:26 -06:00
Peter Evans
7182608473
Copy vm_8bit buffer into rom/memory directly
2018-01-03 21:10:46 -06:00
Peter Evans
90d6c637c5
Add function to copy a buffer into a segment
2018-01-03 21:10:25 -06:00