dschmenk / apple2pi Goto Github PK
View Code? Open in Web Editor NEWApple II client/server for Raspberry Pi
License: GNU General Public License v3.0
Apple II client/server for Raspberry Pi
License: GNU General Public License v3.0
Hi,
The section...
Compile the daemon and tools with 'make' and copy the results to /usr/local/bin with 'sudo make install'. To build the FUSE driver needed to mount ProDOS devices under Linux, you will need the libfuse-dev package installed. Get this from apt-get, aptitude, or whichever package manager you like. Build with 'make fusea2pi' and install with 'sudo make fuse-install'.
...seems to imply that fusea2pi
is somewhat separate from the rest. However, that doesn't seems to be true (anymore?):
libfuse-dev
is already required for make
.fusea2pi
is already built with make
.Regards,
Oliver
Hi there,
Great piece of software !!
What happened to bintomon ? Can't find reference to it except in the documentation...
To enable:
sudo systemctl enable --system /home/USER/apple2pi/share/a2pi.service
and to start immediately:
sudo systemctl start a2pi
I got three warnings when running make under a fresh Raspbian Stretch install, which complained about a missing declaration for one function: nanosleep().
These were solved by inserting:
#include <time.h>
into a2joy.c, a2joymou.c, and a2joypad.c.
Then making resulted in a clean, warning-less build and gave me a little more confidence that everything was okay :)
pi@clearpi ~/apple2pi> make
make -C src
make[1]: Entering directory '/home/pi/apple2pi/src'
cc a2joy.c -o a2joy
a2joy.c: In function ‘main’:
a2joy.c:179:2: warning: implicit declaration of function ‘nanosleep’ [-Wimplicit-function-declaration]
nanosleep(&tv, NULL);
^~~~~~~~~
cc a2joymou.c -o a2joymou
a2joymou.c: In function ‘main’:
a2joymou.c:194:2: warning: implicit declaration of function ‘nanosleep’ [-Wimplicit-function-declaration]
nanosleep(&tv, NULL);
^~~~~~~~~
cc a2joypad.c -o a2joypad
a2joypad.c: In function ‘main’:
a2joypad.c:206:2: warning: implicit declaration of function ‘nanosleep’ [-Wimplicit-function-declaration]
nanosleep(&tv, NULL);
^~~~~~~~~
cc a2mon.c -o a2mon
cc a2term.c -o a2term
cc -I/usr/include/fuse -D_FILE_OFFSET_BITS=64 fusea2pi.c -lfuse -o fusea2pi
cc a2pidcmd.c -o a2pidcmd
cc dskread.c -o dskread
cc dskwrite.c -o dskwrite
cc bload.c -o bload
cc brun.c -o brun
cc -DSETSERCLK a2pid.c -o a2pid
make[1]: Leaving directory '/home/pi/apple2pi/src'
I am compiling a small C program, about 6K of source code (1 file), and gcc fails with out of memory:
gcc -v -time -S challenge.c
...
cc1: out of memory allocating 67108864 bytes after a total of 991232 bytes
The command was entered on one terminal session while running the top command on another terminal session. The compile filled all of memory running near 100% CPU, and when memory filled, the swap daemon took over using high CPU and filled the swap file.
The source compiles clean (all source errors that were hit have been corrected).
Apparently, gcc has memory issues (note: it also failed on the same souce file on my x86 Ubuntu 14.04.1 system with 3 gig memory 3 gig swapfile; haven't tried it yet on my UDOO Lubuntu 12.04 system yet).
Open to suggestions. I have the diagnostics from the above command.
So I downloaded the image for the latest A2pi from 2021, the latest update 3.2 and I am using the latest A2pi client 1.7 on my //e's here. Using the SSC on the //e's and I have troubleshot that it is not the SSC's, they both work for each machine in Windows as expected with ADTpro. I have tried a variety of images and I have even freshly installed Raspbian and compiled the software from the git. I have an Apple II Pi card here as well that I special ordered from ReactiveMicro that I have yet to use because I have been unable to get this functioning the old school way. Please help! Video link below:
I installed apple2pi on a raspberry pi running Raspbian Stretch.
Connection is establish, utils like a2mon a2term are running fine but I have no login prompt on the Apple //.
Any clues ?
In the file:
apple2pi/share/a2pi.service
... there is a line that references the a2pi program:
ExecStart=/sbin/a2pid $A2PID_OPTS
... yet that is not the installed location in the apple2pi/src/Makefile:
DESTDIR=/usr/local
SBINDIR=$(DESTDIR)/sbin
... which resolves to /usr/local/sbin/.
I'm just learning systemd, but shouldn't the path in ExecStart be /usr/local/sbin/a2pid to be consistent with the makefile install directories?
In one particular circumstance, I happened to be in a terminal session with userid apple2. I attempted to use sudo but that fails since I could not enter a password when prompted by sudo (it would not take an empty password promtp; how does one use sudo when the userid has no password?)
So, how did I get into a terminal session with userid apple2?
From the initial terminal session at boot, login as pi. I then issued startx to bring up the desktop (this allowed my inserted USB devices to be recognized). Then I did a logout from the desktop session, back to the terminal session under pi. Type exit, and you get requested to login.
I logged in as apple2. IT CAME UP AS A TERMINAL SESSION, not gsport.
This is where the sudo attempt failed.
However, running gsport from that apple2 logged in terminal session, provides a plus. If one then exits gsport with Alt-F4, it comes back to the terminal session (does not power off as indicated). This allows greater flexibility and the ability to run gsport again without power down.
As indicated above, inserted USB devices (flash drive and memory stick) are not recognized unless the desktop comes up first. I was referencing some image files in the gsport config file, and they could not be found unless the desktop was started, then exited.
Also, I tried KEGS and the configuration failed due to missing ROM files. I have to do some work here (or maybe the distro needs some work).
So, there's a2pi.s and a2piplus.s. I guess a GS version would be a2pigs.s. Some basic questions... how do the .s files get assembled (I assume by Merlin), how do they get invoked at the client end (I assume there is some init code in startup), and the coolest thing would probably be to autodetect which machine it was on and pick the appropriate client.
The GNU-style Emacs keybindings, default in Bash, are deeply ingrained into my mind. Control- K: cut to end of line, U: cut to start of line, H: delete backwards,
I have faint memories of using those keys on my //c as shortcuts to arrow keys. Control- H: left, J: down, K: right, and U: up. I turned on the printf debug lines and watched xev, and it appears that the arrow keycodes are being sent. The translation might be happening in the ROM, but I wouldn't know. Could it be in the a2pi.s assembly code? Could provision be made to turn off the arrow keys on h, j, k, and u: sending the Control-L keycodes and letters instead?
Is it possible to make things act more raw, so GNU/Bash and Emacs will work properly?
Hello!
I am currently using an Apple 2 emulator named AppleWin and it is at version 1.24.0. The disk boots properly. And as it happens the emulator does find my Pi which is running your program
via a2pid --daemon /dev/ttyUSB0 as its methods.
But the screen on the emulator never progresses past the screen which indicates a connection and what drives are where.
In apple2pi/src, all of the .c files are set to be executable, which makes it difficult to discern the newly minted executable files after they're made.
Or in apple2pi/share, a2pi.png is executable. All files in docs and pidrive are too.
Compile the daemon and tools with 'make' and copy the results to /usr/local/bin with 'sudo make install'.
The Makefile didn't put the newly made programs into /usr/local/bin as I expected, but rather put them into /usr/local/usr/bin ... Is that correct? It doesn't seem so to me.
This was my output:
pi@clearpi ~/a/src> sudo make install
mkdir -p /usr/local/usr/bin
cp a2joy a2joymou a2joypad a2mon a2term fusea2pi a2pidcmd dskread dskwrite bload brun a2mount /usr/local/usr/bin
cp a2joy a2joymou a2joypad a2mon a2term fusea2pi a2pidcmd dskread dskwrite bload brun a2setvd /usr/local/usr/bin
mkdir -p /usr/local/sbin
cp a2pid /usr/local/sbin
mkdir -p /usr/local/usr/share/a2pi
cp -R ../share/* /usr/local/usr/share/a2pi
Also, it doesn't appear necessary to even cd into src to do a "make".
I'm running a fresh install of Stretch Debian on my Pi with the Fish shell.
Dave, I have an Apple IIc and a Raspberry Pi 4 B with 8GB Ram with Raspian Buster installed. I purchased the Apple serial cable and the USB to Serial adapter cable from the links on the ADT Pro website. I have no problem connecting my IIc as a serial console to the Pi and use it that way regularly. After reading about the apple2pi project I attempted to give it a go and used the "owners manual" link on your site and the instructions on Github. I could not get the Apple IIc to go past the spinning / . I did not compile the program on my Pi but downloaded the compiled binary from the web and then installed it. I tried a fresh install of Raspian after it failed to work to see if my previous commands to make my usual serial console connection were keeping it from working. No help there. I am able to use ADT Pro but I have to stop the getty for ttyUSB0.service for the ADT Pro to connect. Does this project work with the hardware that I'm trying to use it with? Is there something specific about connecting via serial cable that I need to do differently? I would appreciate any help you can offer. Thanks!
Is there an easier way to find this pdf? I had to download the multi-gigabyte a2pi-2.3-10.img file, mount it, find it on the /rootfs/home/apple2/Desktop folder and copy it out. Lots of great info in here that has answered a lot of my questions.
Also, could a pointer be added in this repo to where to find the pre-built SD card image? Cool project, but I feel like it's an Easter egg hunt to find all the pieces.
Ditto for a link to the YouTube tutorials, which I've found to be helpful.
I download, prepared an SD card, and installed the RaspApple II distro. All went well including functions that were tried. However, I tried to compile a simple C program and got these messages:
pi@raspberrypi /media/A2SHARED/openssl $ gcc ssrnd.c
In file included from /usr/include/stdio.h:28:0,
from ssrnd.c:7:
/usr/include/features.h:356:25: fatal error: sys/cdefs.h: No such file or directory
compilation terminated.
pi@raspberrypi /media/A2SHARED/openssl $ man gcc
No manual entry for gcc
See 'man 7 undocumented' for help when manual pages are not available.
I checked the gcc version as follows:
pi@raspberrypi /media/A2SHARED/GSFILES/openssl $ cat /proc/version
Linux version 3.12.22+ (dc4@dc4-arm-01)
(gcc version 4.7.2 20120731 (prerelease)
(crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) )
#691 PREEMPT Wed Jun 18 18:29:58 BST 2014
This is backlevel from the standard Raspbian distro.
I ran the following commands to bring this distro up to date:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoremove
This was a very long process. The formerly missing file was now in place:
pi@raspberrypi /usr/include $ ls -l /usr/include/arm-linux-gnueabihf/sys/cdefs.h
-rw-r--r-- 1 root root 13326 Jul 29 02:22 /usr/include/arm-linux-gnueabihf/sys/cdefs.h
And, the compile of the C program now ran successfully.
FYI...the distro probably needs to be updated or users advised to make the updates after they are comfortable with the installation.
I get an error message indicating possible problem with a file system (points to boot). In indicates that I should run fsck on that file system.
However, fsch fails because boot if vfat format, and fsck.vfat is missing.
The system appears to boot okay. Any ideas about the missing fsck.vfat?
The swap on this system is SMALL, only about 100 meg (for a 512 meg size). It was built as part of the configuration when the disto was first booted. Any way to make it larger?
It's impossible to find the Apple 2 Pi hardware. When can I buy the hardware? Could you give the schematics?
on first connect the mouse moves in all directions correctly. after tens of seconds the mouse no longer moves up , all up commands are interpretted as down and left and right remain fine, down also remains fine.
Hi! I was wondering where/how I could buy an adapter?
I recently got an AppleII, and would love to try this!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.