James Tauber
2492947e1d
made applepy.py executable
2012-04-18 07:36:57 -04:00
Greg Hewgill
9ff2dbb70e
add --pc switch for starting run at specific program counter
2012-04-18 07:43:19 +12:00
Greg Hewgill
4ee9b846f9
initialise display state variables in constructor
2011-10-01 08:17:38 +13:00
Greg Hewgill
a673f8a4d4
graceful shutdown if cpu core exits
2011-08-19 21:43:12 +12:00
Greg Hewgill
9f09818aa0
abandon startup if cpu module does not start
2011-08-19 21:07:19 +12:00
Greg Hewgill
15e174c02a
rename --ui switch to --bus
2011-08-19 20:30:55 +12:00
Greg Hewgill
cd692af6f3
use sockets for comms instead of stdio
2011-08-18 21:04:11 +12:00
Greg Hewgill
b8c7949d8e
attempt to skip to data part of tape
2011-08-16 18:22:41 +12:00
Greg Hewgill
6951db69ad
finish cassette support
2011-08-16 16:41:15 +12:00
Greg Hewgill
4963eeca9d
initial cassette input
2011-08-16 15:49:48 +12:00
Greg Hewgill
c9c609be1d
Separate CPU core and UI processes
...
This is a first step toward separating the CPU core and UI. The UI program
starts the CPU core as a subprocess and communicates through its standard input
and output. The protocol is deliberately simple at this point. Each bus request
from the core is exactly eight bytes:
+-------------------------+
| cpu cycle counter high |
+-------------------------+
| cpu cycle counter |
+-------------------------+
| cpu cycle counter |
+-------------------------+
| cpu cycle counter low |
+-------------------------+
| 0x00=read / 0x01=write |
+-------------------------+
| address high |
+-------------------------+
| address low |
+-------------------------+
| value (unused for read) |
+-------------------------+
A single-byte response from the UI is required for a read request, and a
response must not be sent for a write request.
The above protocol is expected to change. For example:
- the UI should tell the CPU core which address ranges are of interest
- needs ability to send memory images to the core (both ROM and RAM)
The stream communications is currently buggy because it expects that all eight
bytes will be read when requested (that is, partial reads are not handled). In
practice, this seems to work okay for the moment.
To improve portability, it may be better to communicate over TCP sockets
instead of stdin/stdout.
2011-08-16 12:54:23 +12:00
James Tauber
7c657a8dd8
removed unused import
2011-08-15 09:41:58 -04:00
James Tauber
a2fcbd5238
adjusted speaker sample length to allow for leading edge
2011-08-15 09:37:32 -04:00
James Tauber
fbd213e240
made options...um...optional param to Memory so tests pass
2011-08-15 09:34:49 -04:00
James Tauber
51acc8e156
Merge branch 'master' into options
...
Conflicts:
applepy.py
2011-08-15 09:27:53 -04:00
James Tauber
882e8478f8
Merge pull request #8 from ghewgill/arrowkeys
...
map left/right arrow keys to ^H/^U
2011-08-15 06:18:52 -07:00
Greg Hewgill
8827db4f6a
command line options: --rom, --ram, --quiet
2011-08-15 22:47:16 +12:00
Greg Hewgill
a543112ee9
map left/right arrow keys to ^H/^U
2011-08-15 22:19:03 +12:00
Greg Hewgill
27d7a717dc
add flash attribute to text mode
2011-08-15 21:58:10 +12:00
James Tauber
b9033a459a
moved speaker buffer playing into the Speaker class
2011-08-15 02:30:28 -04:00
James Tauber
4dd414dea8
implemented speaker; not a bad hack :-)
2011-08-15 02:22:58 -04:00
James Tauber
be91422317
refactored memory access so cycle can be passed in
2011-08-15 00:21:20 -04:00
James Tauber
a92dcfecd3
implemented cycle calculation (except for page boundary crossing)
2011-08-14 23:50:34 -04:00
James Tauber
fcb1d585a0
added test_run to run CPU over a fragment of memory with no UI event handling (for automated testings)
2011-08-14 17:21:03 -04:00
James Tauber
bdc7b3a1e2
improved coloured for better whites
2011-08-14 03:52:56 -04:00
James Tauber
96ad7be994
fixed missing self
2011-08-13 09:49:14 -04:00
James Tauber
f3e0cef441
refactored memory so RAM just subclasses ROM, adding write_byte
2011-08-13 09:47:18 -04:00
James Tauber
6b163f1c2d
whitespace nits
2011-08-13 09:43:55 -04:00
James Tauber
4c333ec125
added load_file to RAM
2011-08-13 09:41:45 -04:00
James Tauber
1be14989ca
implemented HIRES colour
2011-08-13 09:11:46 -04:00
Greg Hewgill
5a8bf9a516
use pregenerated character bitmaps for text mode
2011-08-14 00:16:42 +12:00
James Tauber
e37c4dcbcd
added HIRES graphics support based on code from ghewgill: 5aa8ca2caa
2011-08-13 07:52:17 -04:00
James Tauber
8f3b640393
always draw the spaces between scanlines
2011-08-13 07:24:23 -04:00
James Tauber
2f71ca9029
in mixed mode, assume monitor is colour
2011-08-13 07:22:10 -04:00
James Tauber
38736cf243
refactored update_text and update_lores into a single method
2011-08-13 07:06:11 -04:00
James Tauber
9e92bbba97
display full width of characters
2011-08-13 06:37:47 -04:00
James Tauber
588f913eb2
character heights are really 8 not 9
2011-08-13 06:36:21 -04:00
James Tauber
7cc9e8bdad
implemented LORES graphics
2011-08-13 06:33:12 -04:00
James Tauber
4267732d7f
make display optional (for testing)
2011-08-13 04:02:43 -04:00
James Tauber
d11aff5416
Merge branch 'master' into pygame
2011-08-13 04:00:56 -04:00
James Tauber
2e34927e7c
got tests working again after memory refactor
2011-08-13 04:00:40 -04:00
James Tauber
9220ec85db
ported to pygame and added bit-accurate characters
2011-08-13 03:52:07 -04:00
James Tauber
02714dff55
if writing to text screen row group 3 just skip instead of throwing exception
2011-08-07 07:03:50 -04:00
James Tauber
6525a27511
don't treat indices as signed in indexed addressing modes (ht: ghewgill)
2011-08-07 06:42:47 -04:00
James Tauber
4177ae0b25
consistent whitespace
2011-08-07 06:29:15 -04:00
James Tauber
772cdad470
Merge pull request #4 from ghewgill/master
...
add disassembler
2011-08-07 03:22:40 -07:00
James Tauber
c42c5044fc
split memory handling into separate classes for RAM, ROM and Soft Switches
2011-08-07 06:19:49 -04:00
Greg Hewgill
267d0c8e06
add disassembler, enable for dump mode
2011-08-07 21:52:26 +12:00
Greg Hewgill
56e82f7cb6
don't allow writes to ROM area (this caused the ][+ ROM to hang on boot)
2011-08-07 21:31:01 +12:00
Greg Hewgill
c9dcee2f08
fix typos for zero_page_y_mode in instruction dispatch table
2011-08-07 20:30:44 +12:00