Commit Graph

95 Commits

Author SHA1 Message Date
James Tauber
a0ef706a55 renamed SoftSwitches to IO as it's about to do more 2011-08-16 20:03:06 -04:00
James Tauber
6f1005693c Merge pull request #11 from ghewgill/cassette
Cassette
2011-08-16 03:59:27 -07: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
James Tauber
360f415fc9 Merge pull request #10 from ghewgill/splitcore
Separate CPU core and UI processes
2011-08-15 20:10:14 -07: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
cba0ce064c Merge branch 'options' 2011-08-15 09:28:19 -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
James Tauber
2b1680a6a7 Merge pull request #7 from ghewgill/flash
add flash attribute to text mode
2011-08-15 06:17:44 -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
96787a2667 Merge branch 'cycles' 2011-08-15 02:23:25 -04:00
James Tauber
4dd414dea8 implemented speaker; not a bad hack :-) 2011-08-15 02:22:58 -04:00
James Tauber
35c0e69991 pass in None for cycles so tests run 2011-08-15 00:26:52 -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
1159cef81c added notes on implementation that seems to give the right result 2011-08-14 23:45:10 -04:00
James Tauber
e2211e4189 more groking of why memory-based ASL, DEC, INC, LSR, ROL and ROR take what they take 2011-08-14 21:50:55 -04:00
James Tauber
12671d81cb worked out why STA seemed an exception 2011-08-14 21:37:34 -04:00
James Tauber
2caed7b36d updated notes, fixing what seems to a mistake on the webpage I referenced 2011-08-14 20:57:22 -04:00
James Tauber
8e1b71dbca typo and formatting fixes in cycle notes 2011-08-14 20:36:48 -04:00
James Tauber
d7035ca480 notes on cycle times 2011-08-14 20:26:51 -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
bc0406f211 updated README credits and status 2011-08-13 09:30:39 -04:00
James Tauber
ecd9d00066 Merge branch 'pygame' 2011-08-13 09:16:30 -04:00
James Tauber
1be14989ca implemented HIRES colour 2011-08-13 09:11:46 -04:00
James Tauber
b28d03439b Merge pull request #5 from ghewgill/pygame
Use bitmaps for characters in text mode
2011-08-13 05:21:29 -07: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