__________ _ _:_________/_________________/\_________\___ /\_______ ¦ ____/___.________ / ________ / / _____/____:__ _ __/\__ : \__ | _/ _/ \_ \ / / ___/ ¦ \ QQ / _ _¦______| |______\ \____| \_______/_______________¦__ _ /_\/_\ | |-Mo! \_____/ l______/aC! : \/ ____|____ | /\__________________ ________ /\_______________________ _/ _____/ |/ _____________ \_ ___/____/_ _________.______ / \ \| | \_ \ l/ / \ / ___/ ¦ _/ _/ \__________l____| \___/ /____________/____________¦____\ \_ l______/ \______/ · \_____/
: __________. .______ ________ ______: : ____\___ _|____ ____ __|__ |_ ___\ /________ _____\ : : _____\ / _| / / / / / /\ \ / : :/ / //___________\ _/| //_ _|_____\_______\ \\ /______\ : /______\ /____________\\| |÷e÷ \__________/___\ : :_____\ |______| : : :
- Desaster Fame Design - __ /\ \// \ __________ ______ / _______ _______. -Mo!/aL- \ _\_____. \ / \ / __\_. _|____ _________ \ \ \ _|_ _\ \ _\ \/ |_ _\ /_ _ / /________\ _\ /_____/ /_____/ _/________\ / /_ «- -----------/_________\ \--\_____|--------/___\_____\----- -» /______________\
By day, I help development teams as a consultant to successfully craft software using PHP.
By night, I enjoy Amiga retrocomputing
as well as hacking on open source software.
I stand on the shoulders of giants.
Stefan Franke, Krystian Bacławski, Christian Vogelgsang, and others are the real heroes.
"Hello World" C Example
Compile hello.c
Invoke the SAS/C linker
We can now execute our freshly compiled and linked executable
Richard Löwenstein working on Reshoot at Amiga30.de
(macOS with XCode and ASM-One inside FS-UAE)
“It should not be a surprise that countless Amiga users migrated to Linux and other open-source OSs as the Amiga's necessary ultimate fate became clear, for much of the spirit of the Amiga free-software community persisted in these communities without being tied to a single corporation's decisions and fate. Indeed, the Amiga's fate serves as an object lesson for the modern open-source movement, speaking to the way that even excellent hardware and software can wither when said excellence is proprietary and closed source.”
“Containers are UNIX processes,
not lightweight virtual machines.”
“Docker is a tool that can package an application and its dependencies in a virtual container that can run on any Linux [machine] ...”
"Docker: A 'Shipping Container' for Linux Code", Katherine Noyes
Please note that Docker is not required at all to use the tools shown in this presentation.
IMO, Docker makes it a lot easier to use these tools.
Especially since some of the tools require a 32bit Linux system.
"Hello World" C Example
Run a command in a new container
Make $HOME available as /host inside the container
Make /opt/amiga/sc available as /sc inside the container
Automatically remove the container when it exits
Use the sebastianbergmann/amitools image
Execute the vamos command inside the container
(with debugging messages suppressed)
Use /sc as AmigaOS volume sc:
Define some AmigaOS ASSIGNs
Define AmigaOS command search path
Invoke the SAS/C compiler
Compile /host/hello.c
(which is $HOME/hello.c on the host)
We now have an AmigaOS object in /host/hello.o
(which is $HOME/hello.o on the host)
When you use a Docker image for the first time ...
... it is automatically downloaded from hub.docker.com
We now have an AmigaOS object in /host/hello.o
(which is $HOME/hello.o on the host)
Invoke the SAS/C linker
We now have an AmigaOS executable in /host/hello
(which is $HOME/hello on the host)
We now have an AmigaOS executable in /host/hello
(which is $HOME/hello on the host)
We can now execute our freshly compiled and linked executable with vamos
Dockerfile
Line 1: Use sebastianbergmann/amitools as base image
Line 3: Extract sasc658.tar.xz to /sc (inside the new image)
Line 4: Copy _vamosrc to /root/.vamosrc (inside the new image)
_vamosrc
Building the Docker image
Invoke the SAS/C compiler
Invoke the SAS/C linker
We can now execute our freshly compiled and linked executable
GNU make build automation script
GNU make in action
C program that opens a window
Execute M68K/AmigaOS binary with FS-UAE
ASMTwo
“A cross-compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running.”
For example, a compiler that runs on a Linux PC but generates code that runs on an Amiga is a cross-compiler.
“A cross-compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running.”
For example, a compiler that runs on a Linux PC but generates code that runs on an Amiga is a cross-compiler.
Download http://coppershade.org/asmskool/Tut3.S example
Invoke the assembler
We now have an AmigaOS executable in /host/Tut3
(which is $HOME/Tut3 on the host)
Compile (and link) hello.c with GCC
We can now execute our freshly compiled and linked executable