SnoopCaster
Apple II bus to Pico W5500 Ethernet out
1
Components
Hardware componentsProject description
Original : https://github.com/jtflanagan/SnoopCaster
Author : jtflanagan
Published On : 2023-05-20
Last commit : 2023-06-28
This content was created with the assistance of ChatGPT, an artificial intelligence language model developed by OpenAI.
SnoopCaster
SnoopCaster is a project written in C, aiming to control the Apple II bus using the Raspberry Pi Pico and WIZnet's W5500.

Apple II bus
The Apple II bus is a peripheral interface used in the Apple II series of computers. This bus allows various expansion cards to be connected to the computer. The SnoopCaster project utilizes this Apple II bus to perform certain functions.
Raspberry Pi Pico
The Raspberry Pi Pico is a microcontroller board produced by the Raspberry Pi Foundation. This board uses the RP2040 chip, which features a dual-core Arm Cortex M0+ processor. It also provides a rich peripheral interface and 2MB of built-in flash memory. The SnoopCaster project uses this Raspberry Pi Pico to control communication with the Apple II bus.
W5500
WIZnet's W5500 is an Ethernet controller chip with a built-in hardware TCP/IP stack. This chip communicates with the microcontroller via SPI (Serial Peripheral Interface) and provides network communication capabilities. The SnoopCaster project uses this W5500 chip to perform network communication.
Raspberry Pi Pico PIO
The abus.pio file includes code that utilizes the PIO (Programmable I/O) functionality of the Raspberry Pi Pico. PIO is a feature built into the RP2040 microcontroller of the Raspberry Pi Pico, allowing users to execute their own defined low-level I/O logic. This allows for very fine I/O control beyond the GPIO functionality of standard microcontrollers.
The abus.pio file defines two PIO programs: abus and abus_device_read. The abus program implements the Apple II bus interface, and the abus_device_read program performs data read operations from the Apple II bus. These two programs control low-level communication with the Apple II bus using the PIO functionality of the Raspberry Pi Pico.

Main Files and Functions
abus.c / abus.h
Includes functions such as abus_device_read_setup, abus_init, abus_main_setup.
buffers.c / buffers.h
Includes variables such as bus_spinlock, raw_bus_queue.
eth.c / eth.h
eth_internal.c / eth_internal.h
These files include various functions and variables related to network communication, such as eth_init, eth_loop, eth_read, eth_write, process_rx, dummy_data, eth_cri_sec, eth_dma_channel_config_rx, eth_dma_channel_config_tx, eth_dma_rx, eth_dma_tx.
They also define various macros, enumerations, and structures.
main.c
Includes functions such as core1_main, main.
How to Use
To use this project, you first need to compile the source code. Compilation can be performed using the CMakeLists.txt file.
You can start the program by running the compiled executable file.
Thank you for reading.


