Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cc6b9f03c5 | |||
| af01775e41 | |||
| 6b66f9ba30 | |||
| 010477fa4a | |||
| 04e355a2ee | |||
| 91e987b972 |
+21
-50
@@ -1,5 +1,8 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
# My current workflow is to build this on an M1 MacBook for both amd64 and arm64 using:
|
||||
# docker buildx build --platform linux/arm64/v8,linux/amd64 -t boarstone.mcphail.uk/mcphail/speccydev:tagname .
|
||||
|
||||
FROM ubuntu:24.04 AS build
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
@@ -7,12 +10,13 @@ RUN apt-get update \
|
||||
automake \
|
||||
build-essential \
|
||||
fpc \
|
||||
libdsk4-dev \
|
||||
make \
|
||||
python3-pip \
|
||||
unzip \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ADD https://github.com/z00m128/sjasmplus.git#v1.21.1 /sjasmplus
|
||||
ADD https://github.com/z00m128/sjasmplus.git#v1.23.0 /sjasmplus
|
||||
RUN cd /sjasmplus && make -j8 && make install
|
||||
ADD https://boarstone.mcphail.uk/mcphail/spectrum_remload.git /ttttt
|
||||
RUN cd /ttttt && make ttttt
|
||||
@@ -35,54 +39,15 @@ RUN cd /hdfmonkey/ \
|
||||
&& ./configure \
|
||||
&& make -j16 \
|
||||
&& make install
|
||||
ADD https://github.com/pleumann/pasta80.git#v0.96 /opt/pasta80
|
||||
ADD https://github.com/pleumann/pasta80.git#v0.98 /opt/pasta80
|
||||
RUN cd /opt/pasta80 \
|
||||
&& fpc pasta
|
||||
|
||||
FROM ubuntu:24.04 AS z88dk
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
bison \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
cpanminus \
|
||||
curl \
|
||||
dos2unix \
|
||||
flex \
|
||||
gdb \
|
||||
git \
|
||||
libboost-all-dev \
|
||||
libcapture-tiny-perl \
|
||||
libclone-perl \
|
||||
libdata-hexdump-perl \
|
||||
libfile-slurp-perl \
|
||||
libgmp3-dev \
|
||||
liblocal-lib-perl \
|
||||
libmodern-perl-perl \
|
||||
libpath-tiny-perl \
|
||||
libregexp-common-perl \
|
||||
libtext-table-perl \
|
||||
libxml2-dev \
|
||||
libyaml-perl \
|
||||
m4 \
|
||||
make \
|
||||
perl \
|
||||
pkg-config \
|
||||
ragel \
|
||||
re2c \
|
||||
texi2html \
|
||||
texinfo \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ENV Z88DK_PATH="/opt/z88dk"
|
||||
RUN cpanm -l $HOME/perl5 --no-wget local::lib Template::Plugin::YAML \
|
||||
&& git clone --depth 1 --branch v2.4 --recursive https://github.com/z88dk/z88dk.git ${Z88DK_PATH} \
|
||||
&& cd ${Z88DK_PATH} \
|
||||
&& eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" \
|
||||
&& chmod 777 build.sh \
|
||||
&& BUILD_SDCC=1 BUILD_SDCC_HTTP=1 MAKE_CONCURRENCY=-j8 ./build.sh \
|
||||
&& make install-clean bins-clean
|
||||
ADD --unpack https://www.seasip.info/ZX/taptools-1.1.3.tar.gz taptools/
|
||||
RUN cd taptools/taptools* \
|
||||
&& cp /usr/share/automake-1.16/config.guess . \
|
||||
&& ./configure \
|
||||
&& make -j8 \
|
||||
&& make install
|
||||
|
||||
FROM ubuntu:24.04
|
||||
RUN apt-get update \
|
||||
@@ -90,6 +55,8 @@ RUN apt-get update \
|
||||
ca-certificates \
|
||||
fuse-emulator-utils \
|
||||
git \
|
||||
libdsk4 \
|
||||
libdsk-utils \
|
||||
m4 \
|
||||
make \
|
||||
openssh-client \
|
||||
@@ -99,7 +66,6 @@ RUN apt-get update \
|
||||
z80dasm \
|
||||
zmakebas \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=build /usr/local/bin/sjasmplus /bin/sjasmplus
|
||||
COPY --from=build /ttttt/ttttt /bin/ttttt
|
||||
COPY --from=build /zx0/src/zx0 /bin/zx0
|
||||
COPY --from=build /zx0/src/dzx0 /bin/dzx0
|
||||
@@ -111,9 +77,14 @@ COPY --from=build /zxbasic/tools /opt/zxbasic/tools
|
||||
COPY --from=build /inpaws/inpaws /bin/inpaws
|
||||
COPY --from=build /usr/local/bin/ /usr/local/bin/
|
||||
COPY --from=build /usr/local/lib/python3.12/dist-packages/skoolkit/ /usr/local/lib/python3.12/dist-packages/skoolkit/
|
||||
COPY --from=build /usr/local/bin/hdfmonkey /bin/hdfmonkey
|
||||
COPY --from=build /opt/pasta80 /opt/pasta80
|
||||
COPY --from=z88dk /opt/z88dk/ /opt/z88dk/
|
||||
|
||||
# z88dk takes a long time to cross compile so I'm keeping this in a separate container
|
||||
# so it doesn't require building every time the cache expires. The Dockerfile for z88dk
|
||||
# is in a subdirectory of this one. If you're building the container yourself you may
|
||||
# want to alter the next line to your own tagged build of z88dk but you're welcome to
|
||||
# use mine.
|
||||
COPY --from=boarstone.mcphail.uk/mcphail/z88dk:v2.4 /opt/z88dk/ /opt/z88dk/
|
||||
ENV PATH="${PATH}:/opt/z88dk/bin:/opt/zxbasic:/opt/zxbasic/tools:/opt/pasta80"
|
||||
ENV ZCCCFG="/opt/z88dk/lib/config"
|
||||
USER ubuntu
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "ZX Spectrum dev tools",
|
||||
//"build": { "dockerfile": "Dockerfile" },
|
||||
// The Dockerfile takes an age to build due to z88dk, so pull from prebuilt:
|
||||
"image": "boarstone.mcphail.uk/mcphail/speccydev:v5.2",
|
||||
"image": "boarstone.mcphail.uk/mcphail/speccydev:v8.0",
|
||||
"remoteUser": "ubuntu",
|
||||
"runArgs": [
|
||||
"--network=host"
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
# Similar to the speccydev container, I'm building this with:
|
||||
# docker buildx build --platform linux/arm64/v8,linux/amd64 -t boarstone.mcphail.uk/mcphail/z88dk:tagname .
|
||||
|
||||
FROM ubuntu:24.04 AS build
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
bison \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
cpanminus \
|
||||
curl \
|
||||
dos2unix \
|
||||
flex \
|
||||
gdb \
|
||||
git \
|
||||
libboost-all-dev \
|
||||
libcapture-tiny-perl \
|
||||
libclone-perl \
|
||||
libdata-hexdump-perl \
|
||||
libfile-slurp-perl \
|
||||
libgmp3-dev \
|
||||
liblocal-lib-perl \
|
||||
libmodern-perl-perl \
|
||||
libpath-tiny-perl \
|
||||
libregexp-common-perl \
|
||||
libtext-table-perl \
|
||||
libxml2-dev \
|
||||
libyaml-perl \
|
||||
m4 \
|
||||
make \
|
||||
perl \
|
||||
pkg-config \
|
||||
ragel \
|
||||
re2c \
|
||||
texi2html \
|
||||
texinfo \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ENV Z88DK_PATH="/opt/z88dk"
|
||||
RUN cpanm -l $HOME/perl5 --no-wget local::lib Template::Plugin::YAML \
|
||||
&& git clone --depth 1 --branch v2.4 --recursive https://github.com/z88dk/z88dk.git ${Z88DK_PATH} \
|
||||
&& cd ${Z88DK_PATH} \
|
||||
&& eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" \
|
||||
&& chmod 777 build.sh \
|
||||
&& BUILD_SDCC=1 BUILD_SDCC_HTTP=1 ./build.sh \
|
||||
&& make install-clean bins-clean
|
||||
|
||||
FROM ubuntu:24.04
|
||||
COPY --from=build /opt/z88dk/ /opt/z88dk/
|
||||
ENV PATH="$(PATH):/opt/z88dk/bin"
|
||||
ENV ZCCCFG="/opt/z88dk/lib/config"
|
||||
USER ubuntu
|
||||
@@ -1,10 +1,10 @@
|
||||
# Development tools for the ZX Spectrum v5.2
|
||||
# Development tools for the ZX Spectrum v8.0
|
||||
|
||||
The Dockerfile is the basis of the devcontainer and can be changed to add or remove tools. It will take a long time to build locally, so by default the devcontainer will pull a prebuilt version. Edit `.devcontainer/devcontainer.json` if you would rather build your own.
|
||||
|
||||
The devcontainer contains:
|
||||
- pasmo version 0.5.3 (assembler)
|
||||
- sjasmplus version 1.21.1 (assembler)
|
||||
- sjasmplus version 1.23.0 (assembler)
|
||||
- z80asm version 1.8 (assembler)
|
||||
- z80dasm version 1.1.6 (disassembler)
|
||||
- zmakebas version 1.2b (creates BASIC programs)
|
||||
@@ -36,7 +36,7 @@ The devcontainer contains:
|
||||
- various tools including nextcreator.py to build .nex files
|
||||
- ttttt (converts binaries into .tap blocks)
|
||||
- inpaws version 1.0.2 (interactive fiction compiler/extractor for Gilsoft's PAW)
|
||||
- skoolkit version 9.6 (tools for creating browseable disassemblies of Spectrum games)
|
||||
- skoolkit version 10.0 (tools for creating browseable disassemblies of Spectrum games)
|
||||
- sna2ctl.py
|
||||
- sna2skool.py
|
||||
- skool2html.py
|
||||
@@ -53,22 +53,35 @@ The devcontainer contains:
|
||||
- bin2sna.py
|
||||
- snapmod.py
|
||||
- sna2img.py
|
||||
- pasta80 version 0.96 (PASCAL compiler)
|
||||
- pasta80 version 0.98 (PASCAL compiler)
|
||||
- hdfmonkey version 0.4 (for manipulating sdcard files for the Spectrum Next)
|
||||
- git (version control)
|
||||
- make (build control)
|
||||
- John Elliott's TAPTOOLS version 1.1.3
|
||||
- specform (add +3DOS header to a file)
|
||||
- unspecform (removes +3DOS header)
|
||||
- tapcat (combines files into a .tap file)
|
||||
- tapls (lists content of a .tap file)
|
||||
- tapget (extracts one or more files from a .tap file)
|
||||
- tapsplit (extracts everything from a .tap file in one go)
|
||||
- tap2dsk (builds a +3 or PCDOS image from a .tap file)
|
||||
- mkp3fs (builds a +3 or PCDOS image from separate files)
|
||||
- bin2bas (wraps a machine code program in a 2-line BASIC program that runs it)
|
||||
- sna2tap (converts a .sna format snapshot to a .tap file)
|
||||
- sna2dsk (converts a .sna format snapshot to a .dsk file)
|
||||
- dsk2tap (converts a .dsk image to a .tap file which when run on a +3 recreates the original disk)
|
||||
|
||||
Several useful VSCode extentsions will be installed, including a Z80 assembly language server, Z80 and C debugger, Makefile support, BASIC syntax highlighter and more.
|
||||
|
||||
Thanks to the many authors of these wonderful tools and extensions; to think what we could have made with these in 1985!
|
||||
|
||||
## Breaking changes from v4.x
|
||||
## Breaking changes from v7.x
|
||||
|
||||
Boriel BASIC (zxbasic) has been updated. There have been further bug fixes to array bounds which may break old code reliant on previous behaviour.
|
||||
No breaking changes, but this version brings full support for Apple silicon which was not present in previous releases.
|
||||
|
||||
## New additions from v5.1
|
||||
## New additions from v7.0
|
||||
|
||||
Boriel BASIC updated with bugfix for rounding error.
|
||||
Native arm64 build for Apple devices.
|
||||
|
||||
## Install
|
||||
|
||||
@@ -134,3 +147,5 @@ skoolkit - copyright Richard Dymond and Philip M Anderson and released under GPL
|
||||
hdfmonkey - copyright Matt Westcott and released under GPL v3
|
||||
|
||||
PASTA/80 - copyright Jörg Pleumann and released under GPL v3 with linking exception
|
||||
|
||||
TAPTOOLS - copyright John Elliott and released under GPL v2
|
||||
|
||||
Reference in New Issue
Block a user