Peter Evans
e826fc05d9
We can only write latch data that is > 128
2018-02-20 14:43:33 -06:00
Peter Evans
08f3899de4
Tracks don't move from shifting; sector work
...
The sector work being:
- We only wrap around if we go beyond the length of an encoded track, so
use ENC_ETRACK.
- If we DO wrap around, we don't use modulus; we simply reset to zero.
2018-02-20 14:33:36 -06:00
Peter Evans
c7fbb4aa50
Backward steps require adjacent phases
2018-02-20 14:30:20 -06:00
Peter Evans
28061c1d11
Adjust length/data for sectors; cleanup some magic numbers
2018-02-20 01:00:46 -06:00
Peter Evans
2318b1917a
This form needs two RORs to work
...
That's because the first ROR pushes the 1 in bit0 into the carry bit;
the second moves the carry bit into the bit7 position, which will match
128.
2018-02-19 22:01:30 -06:00
Peter Evans
d590a809d8
Tests should reflect how carry is handled in ROL/R now
2018-02-19 21:59:55 -06:00
Peter Evans
65f13bb1e4
Add missing output and fix buffer size issue
...
We use BUFSIZ everywhere, except in setvbuf(), which kinda needs to know
the proper buffer size. Because we were passing 256, which is (much!)
lower than BUFSIZ, we were wrapping output around in an odd, unexpected
way.
2018-02-19 21:49:58 -06:00
Peter Evans
9f0d7f5413
Fix some compile failures due to changed params
2018-02-19 20:03:25 -06:00
Peter Evans
9e26e215cd
In which we discover that image doesn't matter
2018-02-11 20:38:51 -06:00
Peter Evans
350a06890a
Split up logic for keyboard test
...
In accordance with the split in logic we had made for the source
function
2018-02-10 18:31:38 -06:00
Peter Evans
69d425db2d
Add tests for vm_di
2018-02-10 18:25:29 -06:00
Peter Evans
919869289e
Add missing test for reflect functions, init
2018-02-10 18:20:50 -06:00
Peter Evans
aee0521b0a
Change key to ALT+Q
2018-02-07 16:08:43 -06:00
Peter Evans
fa938470d3
Account for changes to vm_reflect functions
2018-02-07 14:44:37 -06:00
Peter Evans
8450ccd3c5
Unit-testing builds now define TESTING
2018-02-06 23:38:15 -06:00
Peter Evans
1f50ceb4c5
Add test file for apple2.reflect.c
2018-02-06 14:27:44 -06:00
Peter Evans
5cfdd28302
Add vm_event tests
2018-02-05 21:40:36 -06:00
Peter Evans
c1c42834ed
Add reflect system to virtual machine
2018-02-05 20:31:05 -06:00
Peter Evans
e691d33d42
Add dec_nib test
2018-02-04 16:09:02 -06:00
Peter Evans
70b0532a26
Add test for dec_dos
2018-02-04 16:06:54 -06:00
Peter Evans
599b7c9212
Add test for dec_track
2018-02-04 15:44:59 -06:00
Peter Evans
7dc97484e3
Add test for enc_track
2018-02-04 14:32:53 -06:00
Peter Evans
8469c09161
Add test for enc_nib
2018-02-04 14:18:42 -06:00
Peter Evans
caf2bc1c4e
Add test for map, note skipped tests
2018-02-04 14:15:38 -06:00
Peter Evans
9e4a842fdf
Add test for switch_rw
2018-02-04 11:50:58 -06:00
Peter Evans
f696346806
Add test for switch_latch
2018-02-04 11:32:23 -06:00
Peter Evans
50dfca476b
Add test for switch_drive
2018-02-04 11:30:38 -06:00
Peter Evans
edee060167
Add test for switch_phase function
2018-02-04 10:47:18 -06:00
Peter Evans
2752d82044
Add phaser test
2018-02-04 01:11:09 -06:00
Peter Evans
2d13e95d7f
Add encode/decode tests, skip for save
2018-02-04 00:22:14 -06:00
Peter Evans
bef19539f6
Implement (most of) text_area test
2018-02-03 22:43:00 -06:00
Peter Evans
c503189b7c
Add exception for 40col
2018-02-03 22:02:25 -06:00
Peter Evans
de67d5064b
Add test for vm_screen_dirty, exception for prepare
2018-02-03 22:01:27 -06:00
Peter Evans
3329753ef7
Add test for vm_segment_fwrite
2018-02-03 22:00:04 -06:00
Peter Evans
3a1784a5a7
Add image, stream to eject test
2018-02-03 20:50:30 -06:00
Peter Evans
2dd21f1487
Add image type, image segment
2018-02-03 18:10:29 -06:00
Peter Evans
f45a64dfe4
Add missing tests file
2018-02-03 17:43:04 -06:00
Peter Evans
a340c963a0
Add proper test for sector decode
2018-02-02 17:20:17 -06:00
Peter Evans
55c85b0ec6
Encoded code needed to change
2018-02-01 18:41:34 -06:00
Peter Evans
fadf5a9782
Add decode...code
2018-02-01 18:41:01 -06:00
Peter Evans
f4cdff0bfb
Add sector encoding test
2018-01-31 16:52:58 -06:00
Peter Evans
b202e70b9b
Add test suite for enc.c
2018-01-31 16:03:03 -06:00
Peter Evans
ce405531b8
We switched the logic for C015
2018-01-31 00:20:37 -06:00
Peter Evans
38d80078d9
Remove obsoleted test functions
2018-01-27 00:16:39 -06:00
Peter Evans
dde7312864
No need to deal with carry here
2018-01-27 00:15:06 -06:00
Peter Evans
9bbfb95b02
Carry is no longer factored
2018-01-26 22:04:47 -06:00
Peter Evans
d29dfd442a
Account for SLOTCXROM being on by default
2018-01-26 22:03:57 -06:00
Peter Evans
4509f61be6
dd_write no longer accepts the byte it will wryte
2018-01-26 20:00:10 -06:00
Peter Evans
47630fdc88
pha/php only push one byte onto the stack
2018-01-23 21:37:36 -06:00
Peter Evans
c946eb3f69
Fix incorrect stack info
...
(The previous behavior of RTS/JSR was not right.)
2018-01-23 21:35:59 -06:00
Peter Evans
2e334e2ee1
Update tests with correct expected text from disassembler
2018-01-23 21:19:26 -06:00
Peter Evans
80136e9360
Most status flags are now set when the CPU is created
2018-01-23 20:41:48 -06:00
Peter Evans
0b03fd24f5
Carry must also be factored in
2018-01-23 20:26:01 -06:00
Peter Evans
5656b271ee
Account for carry being set by default
2018-01-23 16:30:52 -06:00
Peter Evans
746e2246b3
Set negative and unset zero since the operand >= A
2018-01-23 16:29:53 -06:00
Peter Evans
3c7002c6c7
Carry is only unset if the operand >= A
2018-01-23 16:29:08 -06:00
Peter Evans
dc97a6996e
Account for carry being set by default
2018-01-23 16:28:39 -06:00
Peter Evans
b02679f6a0
Carry must be unset
2018-01-23 16:26:05 -06:00
Peter Evans
522905b39c
Carry must be unset in this test
2018-01-23 16:24:46 -06:00
Peter Evans
60ff0e5781
Carry is set by default now
2018-01-23 16:24:16 -06:00
Peter Evans
a3598ecd16
The stack pushes from the end of the page now
2018-01-23 16:21:43 -06:00
Peter Evans
8edf83f7ad
Carry is set only if the result is > 0xFF
2018-01-23 16:20:33 -06:00
Peter Evans
8133781fd3
Use the address mode enum itself
2018-01-23 16:18:22 -06:00
Peter Evans
7a0ea50aa3
The stack now only works with 8bit values; disable carry
2018-01-23 16:16:59 -06:00
Peter Evans
ef13fe4ef1
Require STATUS_DEFAULT, stack pointer at ff
2018-01-23 16:07:21 -06:00
Peter Evans
2f777ce881
Several core changes to status, soft switches
...
Regarding soft switches, we had several we should have been listening
for on both reads and writes, but were only doing so on writes; this is
now fixed.
Regarding statuses, we were incorrectly calculating both carry and
overflow. This should now be fixed, although some quick examinations of
disassembly output suggest there is something else amiss. Debugging will
continue shortly.
2018-01-20 21:01:26 -06:00
Peter Evans
2c319399d2
Change disassembly to add more info
2018-01-19 00:34:57 -06:00
Peter Evans
96b8b77f37
Use apple2.tests.h for setup/teardown
2018-01-17 15:31:12 -06:00
Peter Evans
c8dbf1c84c
Add missing tests for new vm_screen functions
2018-01-17 15:16:12 -06:00
Peter Evans
53f40ff960
Add tests for apple2.kb.c
2018-01-17 14:58:42 -06:00
Peter Evans
6670df930b
Remove unnecessary functions and tests
2018-01-17 14:02:37 -06:00
Peter Evans
8d4283b1dc
Add first work on keyboard support
...
Mainly the switch_read function, which had necessitated some work done
in the vm_screen area
2018-01-16 23:50:02 -06:00
Peter Evans
2c39120098
Rename video_mode -> display_mode
...
This also changes the _kind_ of field from an incrementally enumerated
one to a collection of bit flags.
2018-01-16 16:13:50 -06:00
Peter Evans
bcf6b213a6
Account for changes to rom segment structure
2018-01-16 15:46:35 -06:00
Peter Evans
caea83f9c6
Add missing unit tests for pc mapper functions
2018-01-16 14:22:08 -06:00
Peter Evans
a0a5132099
Add pc file for peripheral card ROM
2018-01-15 23:50:33 -06:00
Peter Evans
be23bb7166
Remove unneeded test stub
2018-01-13 15:57:02 -06:00
Peter Evans
cadc19b3e5
Add display buffer read/write mappers
2018-01-13 15:40:40 -06:00
Peter Evans
45eb7b5e58
Add zero page memory mapper functions
...
This also adds tests for those functions. We have, furthermore, removed
some redundant (and non-externed!) functions from apple2.mem.c which was
the old bank switching code that got moved to apple2.bank.c.
2018-01-13 00:38:29 -06:00
Peter Evans
3738d70a43
Switch bank code into its own file
2018-01-12 22:06:49 -06:00
Peter Evans
c953616a71
Finish refactor to separate bank_switch and memory_mode
...
There is one failing test, which I expect to fail at this point; that's
because we need to write a read/write map function for the stack and
zero page so that they use aux memory when BANK_ALTZP is on, and main
memory when not.
2018-01-12 21:04:21 -06:00
Peter Evans
647139924b
Small comment
2018-01-12 14:51:00 -06:00
Peter Evans
f69454c965
Some soft switches now require consecutive reads
...
To allow this to work, we had to allow the CPU struct to record what the
last opcode/operand/address were, although in truth we only needed the
last address.
2018-01-12 14:49:27 -06:00
Peter Evans
7d6886a3a8
Change last_addr field to eff_addr
2018-01-12 13:57:48 -06:00
Peter Evans
1b2e9d952b
Add missing test code for the aux bank switch
2018-01-11 22:35:23 -06:00
Peter Evans
c4c0312402
Add missing tests for read/write bank switches
2018-01-11 22:24:19 -06:00
Peter Evans
6d21774e78
Add missing tests
2018-01-11 21:58:17 -06:00
Peter Evans
578e0b291c
Allow us to switch main/aux; write bank switch mappers
2018-01-11 19:52:13 -06:00
Peter Evans
9d2f9b6f60
Refactor to remove ram2
...
Both main and auxiliary memory need to keep an extra 4k of memory that
is bank-switchable, so we have changed to store that memory literally
within the main and aux segments.
2018-01-11 13:19:17 -06:00
Peter Evans
288b4a9e8d
The boot procedure no longer defaults bank_switch to 0
2018-01-10 21:50:43 -06:00
Peter Evans
8d9b48912e
Add memory injection to 6502; main memory in apple2
...
Note that memory _is_ now managed in apple2, and _not_ in mos6502.
2018-01-10 21:28:05 -06:00
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
fcba14f91b
Add set16 function
2018-01-10 16:43:14 -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
04aab568df
Oh, little-endian issues; you are my bane
2018-01-09 16:28:14 -06:00
Peter Evans
68b1b79549
Added a "fix" to JSR test.
...
It's really wrong, because we _should_ be storing PC + 2 in the stack.
And software's definitely gonna bork when we try emulating them, because
they will invariably inspect the stack and assume that's what we have in
there.
But the proper fix is to not actually do next_byte(), and to never
advance PC outside of the execute function. But that's a bigger change
than I want to do at this specific moment.
So, in the meantime, you have me prattling on in a commit message. Lucky
you!
2018-01-09 16:26:21 -06:00
Peter Evans
b492b44e0c
We have a raft of changes here...
...
1. In some cases we corrected little-endian issues.
2. In others, we need to correct expected output to account for PC,
cycles and hex dumps.
2018-01-09 16:24:51 -06:00
Peter Evans
7e51339b88
Account for incremented PC byte in rel tests
2018-01-09 16:06:41 -06:00
Peter Evans
4beff0bff8
Remember that we must obey little-endian order
2018-01-09 16:00:15 -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