Commit Graph

79 Commits

Author SHA1 Message Date
Terence Boldt
aa5910cee8
Initial Pico hardware support
* Added assemble.cmd for Windows.

In the long run, some (c)make-based cross-plafrom solution seems preferable.

* Fill up the menu page just like the other pages.

* Allow to assemble for different hardware types.

The first script parameter is used to set the ca65 symbol HW_TYPE. Without parameter, HW_TYPE is set to 0.

* Avoid unwanted i/o access.

Depending on the 6502, LDA addr,X and/or STA addr,X produce additional phantom reads. In order to avoid those phantom reads to do i/o access, I used the "classic" approach of moving those reads from page $C0 to page $BF.

* Made use of BIT instruction to access InputFlags from firmware.

Doing the same for access from disk-based software would require selfmodifying code as there's not bit <addr>,x instruction.

* Removed push/pop from GetByte.

After the replacing the rol instructions with bit instructions with a recent chnage, the only reason left to save a to the stack was setting the OutputFlags. But that can be done using x.

* Added InputFlags check for consistency.

* Added support for an alternative hardware type.

The new hardware type has simple UART-type interface. Beside the two data registers, there are only the two bits to indicate readability and writability of the data registers.

* Added another comminucation interface implementation.

Use ACM CDC (or another proprietary) USB serial device for communication.

Currently VID / PID of a Raspberry Pi Pico SDK CDC UART are hardcoded - see https://github.com/raspberrypi/usb-pid

* Revert "Avoid unwanted i/o access."

Neither the original hardware type nor the alternative hardware type have any read and write i/o port share addresses. Therefore phantom reads aren't an issue with those hardware types.

This reverts commit ae5cb754fb.

* Adapt to the different error signatures on Linux.

So far the code was only tested on Windows.

* Added implementation of the alternative hardware type.

The implemenation is based on a Raspberry Pi Pico - see https://github.com/a2retrosystems/A2retroNET

The new hardware type has a simple UART-type interface. Beside the two data registers, there are only the two bits to indicate readability and writability of the data registers.

* Modify the HD image for the alternative hardware type.

It is likely desirable to have two HD images for the two hardware types. And likely the apple2driver program should default to the right one based on its protocol setting. BUt given that the HD image(s) shouldn't be part of the actual Git repo anyhow, I don't do anything about this here and now.

* Fixed shell startup (?)

At least on the alternative hardware, this "blindly sending" a reset command causes the shell to be terminated right away:
The driver acknowldges the reset command with a zero byte - and that byte ends up being read by DumpOutput causing it to branch to endOutput.

Maybe that sending a reset command is beneficial on the original hardware. Then another .if is required. Or DumpOutput shouldn't quit on reading a zero byte - the shell handler doesn't seem to send it on purpose(?)

* Upate HD image with recent shell change.

* Fix shell shutdown (?)

At least on the alternative hardware, things happen this way:
1. The shell 'exit' command has ptyOut signal outputComplete and terminate. At this point, ptyIn is still blocked up to one second in ReadCharacter - and can therefore not react on outputComplete.
2. The outputComplete handler in ShellCommand sends a zero byte. This makes on the A2 DumpOutput return and the caller send a zero byte. ShellCommand must not return here as ptyIn is still blocked.
3. The zero byte from the A2 has ptyIn return from ReadCharacter, signal userCancelled and terminate.
4. ShellCommand can now return, but it must not send a zero byte, as the A2 is not expecting it - and will therefore later misinterpret it.

Maybe the original hardware needs another handling, then differentiation of behavior in shell.go becomes necessary.

* Moved boot text out of IIgs copyright message area.

Having the boot text start at the left border of the third line makes it look nice on the cold boot screen of all Apple II's - and there's where the user sees it for some time while waiting for the RPi to come up.

* Several adjustements:

- Get latest Go version as of now.
- Nowadays (?) GitHub 'git clone' seems to only work with a GitHub account. Therefore the zip download workaround. The becomes hopefully unnecessary soon with Go module magic.
- Use 'go mod tidy' to update .sum file for now.
- Error handling for an empty drive 2 is currently not exactly great, so download Total Replay for drive 2. Unfortunately there's no stable URL as of now.
- Use $USER and $HOME instead of hardcoded values.
- Removed deprecated syslog output directives.

* Added brief fork description.

* Added ProDOS-Utilities reference.

* Reverted back to using 'git clone'.

I've no idea why git acted up the other day :-( Now, everything is back to normal...

* Ignore Pico build directory.

* Updated from https://github.com/a2retrosystems/A2retroNET

* Updated from https://github.com/a2retrosystems/A2retroNET

At this point, nothing at all is done on an A2 reset. This can likely be improved. However, Apple2-IO-RPi doesn't seem to handle A2 reset exactly gracefully anyhow.

In general, it seems desirable to introduce some simple framing protocol - like SLIP - that allows to recover from an A2 reset in the middle of an Apple2-IO-RPi command execution.

Such a framing protocol would allow to introduce different frame types. One frame type could then be an A2 reset frame sent by the A2retroNET firmware.

* Make use of brand new stable Total Replay download URL.

Thanks to 4am :-)

* Fixed typos.

* Clone upstream ProDOS-Utilities.

My ProDOS-Utilities pull request was merged.

* Added support for boards without LED.

* Updated link.

* Adjusted to the current A2retroNET hardware.

* Removed support for the Pico W.

* Updated URL.

* Updated URL.

* Make use A2Pico library.

* Added link to A2Pico.

* Remove intermediates from repo.

* Build intermediates from Pico build.

* Have LED reflect status of logic ACM connection.

* Update upstream repo references.

* Adjust build instructions.

* Update README.md

* Fix build and update dependencies

* Fix binary comparison

* Fix firware bug on classic hardware

---------

Co-authored-by: Oliver Schmidt <ol.sc@web.de>
2024-02-05 22:49:09 -05:00
Terence Boldt
2281d03128 Update copyright for 2024 2024-01-02 19:54:35 -08:00
Terence Boldt
ad6d103cca
Fix hang after shell exit (#131) 2023-01-30 20:45:24 -05:00
Terence Boldt
813ab1caee
Change bas files to symlinks (#123) 2023-01-25 23:07:09 -05:00
Terence Boldt
841b11f9ae
Add graphics conversion
* Update copyright year

* Update module to add image support
2023-01-14 10:51:39 -05:00
Terence Boldt
d90b94f4b1 Fix compare for build 2022-12-31 12:39:15 -05:00
Terence Boldt
91efe725b7 Add dynamic drive support 2022-12-31 12:39:15 -05:00
Terence Boldt
da04931665 Add error handling 2022-04-27 22:36:27 -04:00
Terence Boldt
55d94dd1f0 Update RPi.Command and driver for it 2022-03-03 22:34:45 -05:00
Terence Boldt
d33264edf5 Fix Codacy warning 2022-03-02 21:54:28 -05:00
Terence Boldt
d897149901 Verify generated binaries 2022-03-02 21:46:45 -05:00
Terence Boldt
a751737bf1 Update version numbers 2022-03-01 22:46:03 -05:00
Terence Boldt
049e8770d2 Fix keyboard input glitch on read 2022-02-23 22:42:19 -05:00
Terence Boldt
1f4c9ddf4d Fix #56 shell crash on key autorepeat 2022-02-22 15:43:54 -05:00
Terence Boldt
78d0b86b2f Add version info 2022-02-07 22:01:06 -05:00
Terence Boldt
b1dc22c838 Auto-detect slot number for RPI.COMMAND 2022-02-06 21:06:22 -05:00
Terence Boldt
c6fc90e21f Update copyright notices 2022-01-10 23:00:58 -05:00
Terence Boldt
d900120907 Fixes #57 reset state on shell exit 2022-01-10 19:28:41 -05:00
Terence Boldt
23b7a69acb Add slot detection for Shell 2021-12-31 13:09:53 -05:00
Terence Boldt
285d23af55 Initial mostly working RPI command 2021-12-28 16:23:27 -05:00
Terence Boldt
a80939355b Initial attempt at adding command to basic 2021-12-28 09:49:12 -05:00
Terence Boldt
de69c54007
Fix cursor and improve shell (#48)
* Fix cursor and improve shell

* Update README
2021-11-26 22:51:52 -05:00
Terence Boldt
a929790624
Top fix (#47)
* Add workaround for bug in top command

* Update README with terminal emulation
2021-11-25 21:55:52 -05:00
Terence Boldt
5910d66fa2
Auto boot with recovery and improved VT100 support (#45)
* Improve vt100 support to make vim work

* Fix home and add line clear

* Auto boot with recovery
2021-11-25 18:45:56 -05:00
Terence Boldt
453a644a0b
Add shell command with TTY support (#44)
* Add tty support for shell

* Update shell command
2021-11-21 14:56:13 -05:00
Terence Boldt
5cc32ea9cc
Add partial vt100 emulation to shell (#39) 2021-11-10 21:44:28 -05:00
Terence Boldt
5f365e01a6
Add new shell command (#34) 2021-11-05 15:15:54 -04:00
Terence Boldt
b37855dbfd
Fix Codacy lint/security warnings 2021-11-03 05:33:09 -04:00
Terence Boldt
5acdebb022 Test GitHub Action successful assembly 2021-10-31 14:35:55 -04:00
Terence Boldt
33216cc373 Force assembly failure to test GitHub action 2021-10-31 14:35:55 -04:00
Terence Boldt
f293e44d7e Add exit on failure of assemble.sh 2021-10-31 14:35:55 -04:00
Terence Boldt
d1bdaef2a6 Add binaries for building assember 2021-10-31 14:35:55 -04:00
Terence Boldt
e728b02f67 Add support for stderr output 2021-10-26 23:13:06 -04:00
Terence Boldt
0c0ddefe48 Update exec command firmware 2021-10-26 21:29:40 -04:00
Terence Boldt
8d6cbd2043 Add input to commands 2021-10-24 20:39:23 -04:00
Terence Boldt
0d73855663 Add basic source from drive image 2021-10-11 09:02:54 -04:00
Terence Boldt
7e56516acc Fix firmware and driver to support drive 2 2021-10-06 20:40:08 -04:00
Terence Boldt
ccab3e801f Update firmware to send ddrive unit 2021-10-06 20:40:08 -04:00
Terence Boldt
18c25108b3 Fix filename 2021-08-07 07:11:54 -04:00
Terence Boldt
5315c55827 Remove 27256 EPROM firmware 2021-08-07 07:10:15 -04:00
Terence Boldt
33e4cbbf36 Update defines for consistency 2021-07-17 10:17:52 -04:00
Terence Boldt
a32857e021 Fix inverted dot 2021-07-17 10:13:25 -04:00
Terence Boldt
6036b6e76e Update parameters to match latest version of ProDOS-Utilities 2021-07-03 10:01:14 -04:00
Terence Boldt
0b281a93f9 Add basic source from drive image 2021-07-02 07:55:24 -04:00
Terence Boldt
34af9d54c7 Assembler clean-up 2021-07-01 22:34:09 -04:00
Terence Boldt
24b9f62d88 Update firmware on drive image 2021-07-01 03:46:21 +01:00
Terence Boldt
b4ae7b7134 Update firmware to add pointer to get/send byte 2021-06-30 05:12:32 +01:00
Terence Boldt
3a2d6a9b52 Move menu from firmware to RPi 2021-06-01 19:10:55 -04:00
Terence Boldt
460440ea42 Change firmware to wait for RPi ready 2021-06-01 00:37:38 +00:00
Terence Boldt
75c953052f Remove trailing quote 2021-05-29 13:01:13 -04:00