Compare commits
7 Commits
50d55b8143
...
main
Author | SHA1 | Date | |
---|---|---|---|
bdfae1562b | |||
3220e8fcc8 | |||
a6cff03a70 | |||
3e5734bcf0 | |||
e55ad58419 | |||
3759b9a6db | |||
c0dec1a388 |
99
.devcontainer/Dockerfile
Normal file
99
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
|
FROM ubuntu:24.04 AS build
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
build-essential \
|
||||||
|
make \
|
||||||
|
unzip \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
ADD https://github.com/z00m128/sjasmplus.git#v1.21.0 /sjasmplus
|
||||||
|
RUN cd /sjasmplus && make -j8 && make install
|
||||||
|
ADD https://boarstone.mcphail.uk/mcphail/spectrum_remload.git /ttttt
|
||||||
|
RUN cd /ttttt && make ttttt
|
||||||
|
ADD https://github.com/einar-saukas/ZX0.git /zx0
|
||||||
|
RUN cd /zx0/src/ \
|
||||||
|
&& gcc -O2 -o zx0 zx0.c optimize.c compress.c memory.c \
|
||||||
|
&& gcc -O2 -o dzx0 dzx0.c
|
||||||
|
ADD https://www.boriel.com/files/zxb/zxbasic-1.18.1-linux64.tar.gz .
|
||||||
|
RUN tar xf zxbasic*
|
||||||
|
ADD https://github.com/Mastodon-/inpaws.git /inpaws
|
||||||
|
RUN cd /inpaws/ \
|
||||||
|
&& make -j8
|
||||||
|
|
||||||
|
FROM build AS z88dk
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
bison \
|
||||||
|
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 \
|
||||||
|
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 --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 \
|
||||||
|
&& sed -i -e "s/make/make -j8/g" build.sh \
|
||||||
|
&& BUILD_SDCC=1 BUILD_SDCC_HTTP=1 ./build.sh \
|
||||||
|
&& make install-clean bins-clean
|
||||||
|
|
||||||
|
FROM ubuntu:24.04
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
fuse-emulator-utils \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
openssh-client \
|
||||||
|
pasmo \
|
||||||
|
python3 \
|
||||||
|
z80asm \
|
||||||
|
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
|
||||||
|
COPY --from=build /zxbasic/zxbasm.py /opt/zxbasic/zxbasm
|
||||||
|
COPY --from=build /zxbasic/zxbc.py /opt/zxbasic/zxbc
|
||||||
|
COPY --from=build /zxbasic/zxbpp.py /opt/zxbasic/zxbpp
|
||||||
|
COPY --from=build /zxbasic/src /opt/zxbasic/src
|
||||||
|
COPY --from=build /inpaws/inpaws /bin/inpaws
|
||||||
|
COPY --from=z88dk /opt/z88dk/bin /opt/z88dk/bin
|
||||||
|
COPY --from=z88dk /opt/z88dk/lib /opt/z88dk/lib
|
||||||
|
COPY --from=z88dk /opt/z88dk/include /opt/z88dk/include
|
||||||
|
ENV PATH="${PATH}:/opt/z88dk/bin:/opt/zxbasic"
|
||||||
|
ENV ZCCCFG="/opt/z88dk/lib/config"
|
||||||
|
USER ubuntu
|
||||||
|
RUN echo "PATH=$PATH:/opt/z88dk/bin:/opt/zxbasic" >> ~/.profile
|
||||||
|
RUN echo "export ZCCCFG=/opt/z88dk/lib/config/" >> ~/.profile
|
25
.devcontainer/devcontainer.json
Normal file
25
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"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:stable",
|
||||||
|
"remoteUser": "ubuntu",
|
||||||
|
"runArgs": [
|
||||||
|
"--network=host"
|
||||||
|
],
|
||||||
|
"customizations": {
|
||||||
|
"vscode": {
|
||||||
|
"extensions": [
|
||||||
|
"maziac.dezog",
|
||||||
|
"maziac.asm-code-lens",
|
||||||
|
"maziac.z80-instruction-set",
|
||||||
|
"maziac.hex-hover-converter",
|
||||||
|
"maziac.sna-fileviewer",
|
||||||
|
"maziac.nex-fileviewer",
|
||||||
|
"ms-vscode.makefile-tools",
|
||||||
|
"jsjlogin.zxbasic",
|
||||||
|
"thenestruo.z80-asm-meter"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
.devcontainer/hooks/post_checkout
Executable file
3
.devcontainer/hooks/post_checkout
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
# From https://stackoverflow.com/questions/54055666/docker-hub-and-git-submodules/59640438#59640438
|
||||||
|
git submodule update --init
|
106
.vscode/launch.json
vendored
Normal file
106
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "dezog",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Simulator - ZX81 56k RAM",
|
||||||
|
"remoteType": "zsim",
|
||||||
|
"zsim": {
|
||||||
|
"visualMemory": true,
|
||||||
|
"preset": "zx81",
|
||||||
|
"memoryModel": "ZX81-56K"
|
||||||
|
},
|
||||||
|
"sjasmplus": [
|
||||||
|
{
|
||||||
|
"path": "myprog.sld"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commandsAfterLaunch": [],
|
||||||
|
"history": {
|
||||||
|
"reverseDebugInstructionCount": 1000000,
|
||||||
|
"spotCount": 10,
|
||||||
|
"codeCoverageEnabled": true
|
||||||
|
},
|
||||||
|
"startAutomatically": false,
|
||||||
|
"rootFolder": "${workspaceFolder}",
|
||||||
|
"load": "myprog.p"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dezog",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Simulator - ZX128K Spectrum",
|
||||||
|
"remoteType": "zsim",
|
||||||
|
"zsim": {
|
||||||
|
"visualMemory": true,
|
||||||
|
"preset": "spectrum",
|
||||||
|
"memoryModel": "ZX128K"
|
||||||
|
},
|
||||||
|
"sjasmplus": [
|
||||||
|
{
|
||||||
|
"path": "myprog.sld"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commandsAfterLaunch": [],
|
||||||
|
"history": {
|
||||||
|
"reverseDebugInstructionCount": 1000000,
|
||||||
|
"spotCount": 10,
|
||||||
|
"codeCoverageEnabled": true
|
||||||
|
},
|
||||||
|
"startAutomatically": false,
|
||||||
|
"rootFolder": "${workspaceFolder}",
|
||||||
|
"load": "myprog.sna",
|
||||||
|
"topOfStack": "0x5d58"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dezog",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "CSpect",
|
||||||
|
"remoteType": "cspect",
|
||||||
|
"sjasmplus": [
|
||||||
|
{
|
||||||
|
"path": "myprog.sld"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commandsAfterLaunch": [],
|
||||||
|
"history": {
|
||||||
|
"reverseDebugInstructionCount": 1000000,
|
||||||
|
"spotCount": 10,
|
||||||
|
"codeCoverageEnabled": false
|
||||||
|
},
|
||||||
|
"startAutomatically": false,
|
||||||
|
"rootFolder": "${workspaceFolder}",
|
||||||
|
"load": "myprog.sna",
|
||||||
|
"topOfStack": "0x5d58",
|
||||||
|
"cspect": {
|
||||||
|
// Change "host.docker.internal" to "localhost" if running on Linux
|
||||||
|
"hostname": "host.docker.internal"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dezog",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Simulator - ZX48K Spectrum",
|
||||||
|
"remoteType": "zsim",
|
||||||
|
"zsim": {
|
||||||
|
"visualMemory": true,
|
||||||
|
"preset": "spectrum",
|
||||||
|
"memoryModel": "ZX48K"
|
||||||
|
},
|
||||||
|
"sjasmplus": [
|
||||||
|
{
|
||||||
|
"path": "myprog.sld"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commandsAfterLaunch": [],
|
||||||
|
"history": {
|
||||||
|
"reverseDebugInstructionCount": 1000000,
|
||||||
|
"spotCount": 10,
|
||||||
|
"codeCoverageEnabled": true
|
||||||
|
},
|
||||||
|
"startAutomatically": false,
|
||||||
|
"rootFolder": "${workspaceFolder}",
|
||||||
|
"load": "myprog.sna",
|
||||||
|
"topOfStack": "0x5d58"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
123
char.paw
123
char.paw
@@ -2,21 +2,21 @@ CHARACTERS
|
|||||||
{
|
{
|
||||||
0, 0, 0, 0, 0, 0, 0, 255,
|
0, 0, 0, 0, 0, 0, 0, 255,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 60, 24, 60, 126, 126, 60, 0,
|
48, 192, 120, 14, 120, 192, 48, 0,
|
||||||
6, 30, 28, 60, 112, 96, 128, 0,
|
6, 30, 28, 60, 112, 96, 128, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 250,
|
0, 0, 0, 0, 0, 255, 1, 255,
|
||||||
255, 254, 252, 248, 240, 224, 192, 128,
|
0, 0, 0, 0, 0, 255, 128, 255,
|
||||||
255, 127, 63, 31, 15, 7, 3, 1,
|
0, 255, 128, 128, 128, 255, 0, 0,
|
||||||
1, 3, 7, 15, 31, 63, 127, 255,
|
0, 255, 0, 0, 0, 255, 0, 0,
|
||||||
128, 192, 224, 240, 248, 252, 254, 255,
|
0, 255, 1, 1, 1, 255, 0, 0,
|
||||||
0, 0, 0, 15, 8, 8, 8, 8,
|
0, 0, 255, 128, 128, 128, 255, 0,
|
||||||
0, 0, 0, 248, 8, 8, 8, 8,
|
0, 0, 255, 0, 0, 0, 255, 0,
|
||||||
8, 8, 8, 15, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 255, 0, 255,
|
||||||
8, 8, 8, 248, 0, 0, 0, 0,
|
0, 0, 255, 1, 1, 1, 255, 0,
|
||||||
8, 8, 8, 8, 8, 8, 8, 8,
|
8, 8, 8, 8, 8, 8, 8, 8,
|
||||||
0, 0, 0, 255, 0, 0, 0, 0,
|
0, 0, 0, 255, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 170, 85,
|
0, 0, 31, 31, 31, 31, 0, 0,
|
||||||
16, 8, 16, 8, 16, 8, 16, 8,
|
24, 28, 254, 255, 255, 254, 28, 24,
|
||||||
170, 85, 170, 85, 170, 85, 170, 85,
|
170, 85, 170, 85, 170, 85, 170, 85,
|
||||||
255, 255, 255, 255, 255, 255, 255, 255,
|
255, 255, 255, 255, 255, 255, 255, 255,
|
||||||
170, 85, 170, 85, 170, 85, 170, 85,
|
170, 85, 170, 85, 170, 85, 170, 85,
|
||||||
@@ -35,6 +35,103 @@ CHARACTERS
|
|||||||
195, 60, 195, 60, 195, 60, 195, 60,
|
195, 60, 195, 60, 195, 60, 195, 60,
|
||||||
4, 4, 255, 64, 64, 64, 255, 4,
|
4, 4, 255, 64, 64, 64, 255, 4,
|
||||||
1, 3, 6, 12, 24, 48, 96, 192,
|
1, 3, 6, 12, 24, 48, 96, 192,
|
||||||
0
|
1,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
24, 24, 24, 24, 24, 0, 24, 0,
|
||||||
|
0, 54, 54, 36, 0, 0, 0, 0,
|
||||||
|
108, 108, 254, 108, 254, 108, 108, 0,
|
||||||
|
24, 62, 88, 62, 26, 124, 24, 0,
|
||||||
|
0, 198, 204, 24, 48, 102, 198, 0,
|
||||||
|
56, 108, 56, 118, 220, 204, 118, 0,
|
||||||
|
24, 24, 48, 0, 0, 0, 0, 0,
|
||||||
|
12, 24, 48, 48, 48, 24, 12, 0,
|
||||||
|
48, 24, 12, 12, 12, 24, 48, 0,
|
||||||
|
0, 108, 56, 16, 56, 108, 0, 0,
|
||||||
|
0, 24, 24, 126, 24, 24, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 24, 24, 48,
|
||||||
|
0, 0, 0, 60, 60, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 24, 24, 0,
|
||||||
|
6, 12, 24, 48, 96, 192, 128, 0,
|
||||||
|
124, 198, 206, 214, 230, 198, 124, 0,
|
||||||
|
24, 56, 24, 24, 24, 24, 126, 0,
|
||||||
|
60, 102, 6, 60, 96, 102, 126, 0,
|
||||||
|
60, 102, 6, 28, 6, 102, 60, 0,
|
||||||
|
24, 56, 88, 152, 254, 24, 60, 0,
|
||||||
|
126, 98, 96, 124, 6, 102, 60, 0,
|
||||||
|
60, 102, 96, 124, 102, 102, 60, 0,
|
||||||
|
126, 126, 6, 12, 24, 24, 24, 0,
|
||||||
|
60, 102, 102, 60, 102, 102, 60, 0,
|
||||||
|
60, 102, 102, 62, 6, 102, 60, 0,
|
||||||
|
0, 0, 24, 24, 0, 24, 24, 0,
|
||||||
|
0, 0, 24, 24, 0, 24, 24, 48,
|
||||||
|
0, 0, 12, 24, 48, 24, 12, 0,
|
||||||
|
0, 0, 0, 126, 0, 126, 0, 0,
|
||||||
|
0, 0, 48, 24, 12, 24, 48, 0,
|
||||||
|
60, 102, 6, 12, 24, 0, 24, 0,
|
||||||
|
124, 198, 222, 214, 222, 192, 124, 0,
|
||||||
|
60, 102, 102, 126, 102, 102, 102, 0,
|
||||||
|
252, 102, 102, 124, 102, 102, 252, 0,
|
||||||
|
62, 98, 96, 96, 96, 98, 62, 0,
|
||||||
|
248, 108, 102, 102, 102, 108, 248, 0,
|
||||||
|
254, 98, 104, 120, 104, 98, 254, 0,
|
||||||
|
254, 98, 104, 120, 104, 96, 240, 0,
|
||||||
|
60, 102, 192, 192, 206, 102, 62, 0,
|
||||||
|
102, 102, 102, 126, 102, 102, 102, 0,
|
||||||
|
126, 24, 24, 24, 24, 24, 126, 0,
|
||||||
|
30, 12, 12, 12, 204, 204, 120, 0,
|
||||||
|
230, 102, 108, 120, 108, 102, 230, 0,
|
||||||
|
240, 96, 96, 96, 98, 102, 254, 0,
|
||||||
|
198, 238, 254, 254, 214, 198, 198, 0,
|
||||||
|
198, 230, 246, 222, 206, 198, 198, 0,
|
||||||
|
124, 198, 198, 198, 198, 198, 124, 0,
|
||||||
|
252, 102, 102, 124, 96, 96, 240, 0,
|
||||||
|
124, 198, 198, 214, 202, 196, 118, 0,
|
||||||
|
252, 102, 102, 124, 108, 102, 230, 0,
|
||||||
|
60, 102, 96, 60, 6, 102, 60, 0,
|
||||||
|
126, 90, 24, 24, 24, 24, 60, 0,
|
||||||
|
102, 102, 102, 102, 102, 102, 60, 0,
|
||||||
|
102, 102, 102, 102, 102, 60, 24, 0,
|
||||||
|
198, 198, 198, 214, 254, 238, 198, 0,
|
||||||
|
102, 126, 60, 24, 60, 126, 102, 0,
|
||||||
|
102, 102, 102, 60, 24, 24, 24, 0,
|
||||||
|
126, 70, 14, 28, 56, 114, 126, 0,
|
||||||
|
60, 48, 48, 48, 48, 48, 60, 0,
|
||||||
|
192, 96, 48, 24, 12, 6, 2, 0,
|
||||||
|
60, 12, 12, 12, 12, 12, 60, 0,
|
||||||
|
24, 60, 126, 24, 24, 24, 24, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 255,
|
||||||
|
60, 102, 96, 248, 96, 102, 254, 0,
|
||||||
|
0, 0, 60, 6, 62, 102, 58, 0,
|
||||||
|
224, 224, 124, 102, 102, 102, 188, 0,
|
||||||
|
0, 0, 60, 102, 96, 102, 60, 0,
|
||||||
|
28, 12, 124, 204, 204, 204, 118, 0,
|
||||||
|
0, 0, 60, 102, 126, 96, 60, 0,
|
||||||
|
28, 54, 48, 120, 48, 48, 120, 0,
|
||||||
|
0, 0, 62, 102, 102, 62, 6, 124,
|
||||||
|
112, 48, 60, 54, 54, 54, 118, 0,
|
||||||
|
24, 0, 56, 24, 24, 24, 60, 0,
|
||||||
|
6, 0, 30, 6, 6, 6, 102, 60,
|
||||||
|
224, 96, 102, 108, 120, 108, 230, 0,
|
||||||
|
56, 24, 24, 24, 24, 24, 60, 0,
|
||||||
|
0, 0, 108, 254, 214, 214, 198, 0,
|
||||||
|
0, 0, 220, 102, 102, 102, 102, 0,
|
||||||
|
0, 0, 60, 102, 102, 102, 60, 0,
|
||||||
|
0, 0, 220, 102, 102, 124, 96, 240,
|
||||||
|
0, 0, 118, 204, 204, 124, 12, 30,
|
||||||
|
0, 0, 220, 118, 96, 96, 240, 0,
|
||||||
|
0, 0, 60, 96, 60, 6, 124, 0,
|
||||||
|
48, 48, 124, 48, 48, 54, 28, 0,
|
||||||
|
0, 0, 102, 102, 102, 102, 60, 0,
|
||||||
|
0, 0, 102, 102, 102, 60, 24, 0,
|
||||||
|
0, 0, 198, 214, 214, 254, 108, 0,
|
||||||
|
0, 0, 198, 108, 56, 108, 198, 0,
|
||||||
|
0, 0, 102, 102, 102, 62, 6, 124,
|
||||||
|
0, 0, 126, 76, 24, 50, 126, 0,
|
||||||
|
14, 24, 24, 112, 24, 24, 14, 0,
|
||||||
|
24, 24, 24, 24, 24, 24, 24, 0,
|
||||||
|
112, 24, 24, 14, 24, 24, 112, 0,
|
||||||
|
118, 216, 0, 0, 0, 0, 0, 0,
|
||||||
|
56, 68, 186, 162, 186, 68, 56, 60
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
122
lmtvg.paw
122
lmtvg.paw
@@ -3,12 +3,17 @@
|
|||||||
PROCESS examine;
|
PROCESS examine;
|
||||||
PROCESS help;
|
PROCESS help;
|
||||||
PROCESS crunch;
|
PROCESS crunch;
|
||||||
|
PROCESS yourcroft_status;
|
||||||
|
PROCESS yourcroft_parse;
|
||||||
|
PROCESS say_help;
|
||||||
|
|
||||||
FLAG crunchvol;
|
FLAG crunchvol;
|
||||||
|
FLAG yourcroftstate;
|
||||||
|
FLAG say_help;
|
||||||
|
|
||||||
DEFAULTS
|
DEFAULTS
|
||||||
{
|
{
|
||||||
CHARSET: 0;
|
CHARSET: 1;
|
||||||
INK: 9;
|
INK: 9;
|
||||||
PAPER: 0;
|
PAPER: 0;
|
||||||
FLASH: 0;
|
FLASH: 0;
|
||||||
@@ -34,12 +39,12 @@ LOCATION intro
|
|||||||
You play as {16}{6}Wimpy{16}{7}, host of the Linux Matters podcast with friends {16}{5}Popey{16}{7} and
|
You play as {16}{6}Wimpy{16}{7}, host of the Linux Matters podcast with friends {16}{5}Popey{16}{7} and
|
||||||
{16}{4}Mark{16}{7}.^^
|
{16}{4}Mark{16}{7}.^^
|
||||||
In common with the classic adventures, you can control Wimpy by entering simple words and sentences in English.
|
In common with the classic adventures, you can control Wimpy by entering simple words and sentences in English.
|
||||||
A simple example may be {20}{1}GET CAKE{20}{0} whereas a more complex one such as {20}{1}SAY
|
A simple example may be {0}GET CAKE{1} whereas a more complex one such as {0}SAY
|
||||||
TO MARK \"GO NORTH AND QUICKLY RUB THE DEPRESSING FERRET ON THE BALLOON THEN RELEASE IT\"{20}{0} may
|
TO MARK \"GO NORTH AND QUICKLY RUB THE DEPRESSING FERRET ON THE BALLOON THEN RELEASE IT\"{1} may
|
||||||
also be possible. Depending on how well I've programmed the game, either the ferret or the balloon will
|
also be possible. Depending on how well I've programmed the game, either the ferret or the balloon will
|
||||||
be free.^^
|
be free.^^
|
||||||
Perhaps the first command to enter might be {20}{1}HELP{20}{0}, but it pays to be curious so make sure
|
Perhaps the first command to enter might be {0}HELP{1}, but it pays to be curious so make sure
|
||||||
you always {20}{1}EXAMINE{20}{0} everything you can.";
|
you always {0}EXAMINE{1} everything you can.";
|
||||||
}
|
}
|
||||||
|
|
||||||
LOCATION scene
|
LOCATION scene
|
||||||
@@ -50,7 +55,7 @@ LOCATION scene
|
|||||||
LOCATION trap
|
LOCATION trap
|
||||||
{
|
{
|
||||||
"Wimpy is trapped in a room with no obvious exits.
|
"Wimpy is trapped in a room with no obvious exits.
|
||||||
He is rather perplexed.^Oh, bother!";
|
He is rather perplexed.^Oh, bother!^(This is placeholder text)^";
|
||||||
}
|
}
|
||||||
|
|
||||||
VOCABULARY
|
VOCABULARY
|
||||||
@@ -109,11 +114,23 @@ VOCABULARY
|
|||||||
ADVERB 143: "LOUDL";
|
ADVERB 143: "LOUDL";
|
||||||
ADVERB 144: "CAREF", "SOFTL", "GENTL";
|
ADVERB 144: "CAREF", "SOFTL", "GENTL";
|
||||||
|
|
||||||
NOUN: "PASSW", "1234", "HUNTER", "12345";
|
NOUN 15: "MARK";
|
||||||
|
NOUN 16: "POPEY", "ALAN";
|
||||||
|
NOUN 17: "GRAHA", "DEGVI";
|
||||||
|
NOUN: "PASSW", "1234", "HUNTER", "12345", "BEANS";
|
||||||
NOUN: "BISCU", "PACKE";
|
NOUN: "BISCU", "PACKE";
|
||||||
NOUN: "MUG", "CUP";
|
NOUN: "MUG", "CUP";
|
||||||
|
NOUN: "USBDR", "DRIVE";
|
||||||
|
ADJECTIVE: "USB";
|
||||||
|
NOUN: "PORT";
|
||||||
|
NOUN 18: "YOURC", "LADYC", "COMPU", "ASSIS", "CYLIN", "DEVIC";
|
||||||
|
NOUN: "FLAP";
|
||||||
|
NOUN: "DOOR";
|
||||||
VERB: "HELP";
|
VERB: "HELP";
|
||||||
VERB: "EAT";
|
VERB: "EAT", "CONSU", "BITE", "CRUNC", "CHOMP", "MUNCH";
|
||||||
|
VERB: "WAIT";
|
||||||
|
VERB: "OPEN";
|
||||||
|
VERB: "CLOSE";
|
||||||
}
|
}
|
||||||
|
|
||||||
OBJECT notused 0
|
OBJECT notused 0
|
||||||
@@ -127,7 +144,7 @@ OBJECT notused 0
|
|||||||
OBJECT mug 1
|
OBJECT mug 1
|
||||||
{
|
{
|
||||||
"A large, chipped mug";
|
"A large, chipped mug";
|
||||||
INITIALLYAT CARRIED;
|
INITIALLYAT NOTCREATED;
|
||||||
WORDS MUG _;
|
WORDS MUG _;
|
||||||
WEIGHT 1;
|
WEIGHT 1;
|
||||||
PROPERTY CONTAINER;
|
PROPERTY CONTAINER;
|
||||||
@@ -143,14 +160,28 @@ PROCESS examine
|
|||||||
OBJECT biscuits
|
OBJECT biscuits
|
||||||
{
|
{
|
||||||
"An inexhaustible supply of delicious biscuits";
|
"An inexhaustible supply of delicious biscuits";
|
||||||
INITIALLYAT CARRIED;
|
INITIALLYAT NOTCREATED;
|
||||||
WORDS BISCU _;
|
WORDS BISCU _;
|
||||||
WEIGHT 1;
|
WEIGHT 1;
|
||||||
}
|
}
|
||||||
PROCESS examine
|
PROCESS examine
|
||||||
{
|
{
|
||||||
_ BISCU: PRESENT biscuits
|
_ BISCU: PRESENT biscuits
|
||||||
MESSAGE "Crunchy and tasty, a supply which will never be exhausted; beloved of all Linux podcasters."
|
MESSAGE "Crunchy and tasty; beloved of all Linux podcasters."
|
||||||
|
DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
OBJECT usbdrive
|
||||||
|
{
|
||||||
|
"A USB Drive";
|
||||||
|
INITIALLYAT CARRIED;
|
||||||
|
WORDS DRIVE USB;
|
||||||
|
WEIGHT 1;
|
||||||
|
}
|
||||||
|
PROCESS examine
|
||||||
|
{
|
||||||
|
_ DRIVE: PRESENT usbdrive
|
||||||
|
MESSAGE "A 16GB 'SpamDisk' USB-A Drive with a handwritten label saying 'Wimpy's leet hacking boot drive'."
|
||||||
DONE;
|
DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +279,25 @@ RESPONSE
|
|||||||
NOTDONE;
|
NOTDONE;
|
||||||
EAT BISCU: PRESENT biscuits
|
EAT BISCU: PRESENT biscuits
|
||||||
MESSAGE "Wimpy munches loudly on a delicious and nutritious biscuity treat."
|
MESSAGE "Wimpy munches loudly on a delicious and nutritious biscuity treat."
|
||||||
PLUS crunchvol 1;
|
PLUS crunchvol 1
|
||||||
|
ADVERB LOUDL
|
||||||
|
MESSAGE "He tries to crunch louder, to no avail. Maybe many mouths make loud work?";
|
||||||
|
EAT BISCU: PRESENT biscuits
|
||||||
|
ADVERB QUIET
|
||||||
|
MESSAGE "He tries to be quiet but they're just too tasty.";
|
||||||
|
WAIT _: MESSAGE "Wimpy waits for a moment."
|
||||||
|
DONE;
|
||||||
|
|
||||||
|
SAY _: AT trap
|
||||||
|
PROCESS yourcroft_parse
|
||||||
|
DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
PROCESS say_help
|
||||||
|
{
|
||||||
|
_ _: ZERO say_help
|
||||||
|
SET say_help
|
||||||
|
MESSAGE "(Remember to enclose anything you want Wimpy to say in double quotes, like {0}SAY \"HELLO\"{1}. On a Spectrum, hold {0}SYMBOL-SHIFT{1} and press {0}P{1}. On an emulator, you'll probably need to hold {0}Ctrl{1} and press {0}P{1}.)";
|
||||||
}
|
}
|
||||||
|
|
||||||
PROCESS 1
|
PROCESS 1
|
||||||
@@ -269,6 +318,9 @@ PROCESS 1
|
|||||||
GOTO trap
|
GOTO trap
|
||||||
DESC;
|
DESC;
|
||||||
|
|
||||||
|
* YOURC: AT trap
|
||||||
|
PROCESS yourcroft_status;
|
||||||
|
|
||||||
* _: NEWLINE ZERO 0 ABSENT 0 LISTOBJ;
|
* _: NEWLINE ZERO 0 ABSENT 0 LISTOBJ;
|
||||||
* _: PRESENT 0 LISTOBJ;
|
* _: PRESENT 0 LISTOBJ;
|
||||||
}
|
}
|
||||||
@@ -301,3 +353,49 @@ PROCESS crunch
|
|||||||
MESSAGE "The whole room buckles under the crunching boom.";
|
MESSAGE "The whole room buckles under the crunching boom.";
|
||||||
_ _: CLEAR crunchvol;
|
_ _: CLEAR crunchvol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PROCESS yourcroft_status
|
||||||
|
{
|
||||||
|
_ _: ZERO yourcroftstate
|
||||||
|
MESSAGE "A bodged-together cheap-looking plastic cylinder device is perched on the floor."
|
||||||
|
DONE;
|
||||||
|
_ _: EQ yourcroftstate 1
|
||||||
|
MESSAGE "Yourcroft surveys Wimpy with its tacky, green, blinking LED eye and barks 'I'm watching you, mister!'.";
|
||||||
|
_ _: EQ yourcroftstate 2
|
||||||
|
MESSAGE "Yourcroft's eye flashes indignantly and burns with shame at its open flap and exposed port.";
|
||||||
|
_ _: EQ yourcroftstate 3
|
||||||
|
MESSAGE "Yourcroft's LED eye keeps flicking with rage between Wimpy's face and its new USB appendage.";
|
||||||
|
_ _: EQ yourcroftstate 4
|
||||||
|
MESSAGE "The smouldering remains of Yourcroft sparks and fizzles.";
|
||||||
|
}
|
||||||
|
|
||||||
|
PROCESS examine
|
||||||
|
{
|
||||||
|
_ CYLIN: ZERO yourcroftstate
|
||||||
|
MESSAGE "'What you looking at, buddy?', barks the device. 'I'm a Yourcroft(TM) mark 1 cylindrical assistant, and I've been charged with keeping this door closed.'^^'Don't get any bright ideas for escape or I'll zap you!'^^Its voice sounds like a strangely robotic-yet-feminine version of popey's dulcet tones. A cheap LED array is lit to form a green, blinking eye which follows Wimpy's every movement. Below is a flap with a label saying 'USB', which is closed and obscuring any port.^'By the way, please fund our Kickstarter for version 2.0!'"
|
||||||
|
PLUS yourcroftstate 1
|
||||||
|
DONE;
|
||||||
|
|
||||||
|
_ YOURC: EQ yourcroftstate 1
|
||||||
|
MESSAGE "'Don't go poking around - I'm password protected you know!'"
|
||||||
|
DONE;
|
||||||
|
_ YOURC: EQ yourcroftstate 2
|
||||||
|
MESSAGE "Yourcroft is clearly annoyed that its USB port and control touch screen are showing."
|
||||||
|
DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
PROCESS yourcroft_parse
|
||||||
|
{
|
||||||
|
* *: PARSE
|
||||||
|
MESSAGE "'Keep it simple, buddy - I ain't ChattyJeeps.'"
|
||||||
|
PROCESS say_help
|
||||||
|
DONE;
|
||||||
|
|
||||||
|
_ PASSW: LT yourcroftstate 2
|
||||||
|
MESSAGE "'Hey - that's the right password! You some kind of genius hacker? You can't stop me guarding this door, buddy...'.^^The flap drops open, revealing a USB socket and a small touch screen.^^'Do you mind?', admonishes Yourcroft, 'you're exposing my circuits!'."
|
||||||
|
LET yourcroftstate 2
|
||||||
|
DONE;
|
||||||
|
|
||||||
|
_ _: MESSAGE "'You ain't the boss of me!'"
|
||||||
|
DONE;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user