summaryrefslogtreecommitdiffstats
path: root/network/fujinet-pc
diff options
context:
space:
mode:
author B. Watson <urchlay@slackware.uk>2022-08-20 21:43:38 +0100
committer Willy Sudiarto Raharjo <willysr@slackbuilds.org>2022-08-27 22:50:20 +0700
commit346d647f43136be36d304c20267c52e5c180020a (patch)
treed154616103fda9343b7b200fd89f8c0f925fcdad /network/fujinet-pc
parent8c2383418e0e09ab1a29ca9752e37fad621e60f5 (diff)
downloadslackbuilds-346d647f43136be36d304c20267c52e5c180020a.tar.gz
slackbuilds-346d647f43136be36d304c20267c52e5c180020a.tar.xz
network/fujinet-pc: Added (Linux port of FujiNet firmware)
Signed-off-by: Dave Woodfall <dave@slackbuilds.org> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'network/fujinet-pc')
-rw-r--r--network/fujinet-pc/README24
-rw-r--r--network/fujinet-pc/doinst.sh9
-rw-r--r--network/fujinet-pc/fnconfig.ini.gzbin0 -> 391 bytes
-rw-r--r--network/fujinet-pc/fujinet-pc.1157
-rw-r--r--network/fujinet-pc/fujinet-pc.SlackBuild135
-rw-r--r--network/fujinet-pc/fujinet-pc.desktop9
-rw-r--r--network/fujinet-pc/fujinet-pc.info12
-rw-r--r--network/fujinet-pc/fujinet-pc.rst117
-rw-r--r--network/fujinet-pc/fujinet-pc.sh33
-rw-r--r--network/fujinet-pc/slack-desc19
10 files changed, 515 insertions, 0 deletions
diff --git a/network/fujinet-pc/README b/network/fujinet-pc/README
new file mode 100644
index 0000000000..df9c8f7fa0
--- /dev/null
+++ b/network/fujinet-pc/README
@@ -0,0 +1,24 @@
+fujinet-pc (Linux port of FujiNet firmware)
+
+FujiNet is a network adaptor for the Atari 8-bit line of computers. It
+has many features, including the ability to netboot the Atari from a
+disk image on an Internet TNFS server. It's a piece of hardware which
+plugs into the Atari's SIO port and connects to a wireless network.
+
+fujinet-pc is a Linux port of the FujiNet firmware, which allows using
+most of the FujiNet's features with just an SIO2PC cable and a PC.
+The package contains both fujinet-pc and the Atari disk images from
+the fujinet-sd-card git repo.
+
+See https://github.com/FujiNetWIFI/fujinet-pc for the current
+status of fujinet-pc. See also the FujiNet documentation wiki:
+https://github.com/FujiNetWIFI/fujinet-platformio/wiki
+
+Since fujinet-pc wasn't designed to be installed systemwide on a Linux
+system, this SlackBuild includes a wrapper script which allows each
+user to have a fujinet-pc environment in his home directory. Simply
+run "fujinet-pc" or choose FujiNet-PC from your desktop's application
+menu; the ~/.fujinet-pc directory will be created and populated if it
+doesn't already exist.
+
+To exit fujinet-pc, press ^C or close the terminal it's running in.
diff --git a/network/fujinet-pc/doinst.sh b/network/fujinet-pc/doinst.sh
new file mode 100644
index 0000000000..3e5691a052
--- /dev/null
+++ b/network/fujinet-pc/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/network/fujinet-pc/fnconfig.ini.gz b/network/fujinet-pc/fnconfig.ini.gz
new file mode 100644
index 0000000000..927f41f4c2
--- /dev/null
+++ b/network/fujinet-pc/fnconfig.ini.gz
Binary files differ
diff --git a/network/fujinet-pc/fujinet-pc.1 b/network/fujinet-pc/fujinet-pc.1
new file mode 100644
index 0000000000..21b51e4e2c
--- /dev/null
+++ b/network/fujinet-pc/fujinet-pc.1
@@ -0,0 +1,157 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "FUJINET-PC" 1 "2022-07-19" "2206.1" "SlackBuilds.org"
+.SH NAME
+fujinet-pc \- peripheral emulator and network adaptor for Atari 8-bit computers
+.\" RST source for fujinet-pc(1) man page. Convert with:
+.
+.\" rst2man.py fujinet-pc.rst > fujinet-pc.1
+.
+.\" rst2man.py comes from the SBo development/docutils package.
+.
+.SH SYNOPSIS
+.sp
+fujinet\-pc [\fB\-V\fP] [\fB\-u\fP \fIhost:port\fP] [\fB\-c\fP \fIconfig\-file\fP] [\fB\-s\fP \fISD\-directory\fP]
+.SH DESCRIPTION
+.sp
+FujiNet is a network adaptor for the Atari 8\-bit line of computers. It
+has many features, including the ability to netboot the Atari from a
+disk image on an Internet TNFS server. It\(aqs a piece of hardware which
+plugs into the Atari\(aqs SIO port and connects to a wireless network.
+.sp
+fujinet\-pc is a Linux port of the FujiNet firmware, which allows using
+most of the FujiNet\(aqs features with just an SIO2PC cable and a PC.
+.sp
+FujiNet features that work with fujinet\-pc:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+Disk drive (D:) emulation with support for ATR disk images and XEX files (no ATX yet)
+.IP \(bu 2
+Modem emulation (R:)
+.IP \(bu 2
+Printer emulation (P:)
+.IP \(bu 2
+APETIME protocol
+.IP \(bu 2
+TNFS File System to access image files over network
+.IP \(bu 2
+Web interface to control program\(aqs settings, browse TNFS hosts and mount disk images
+.IP \(bu 2
+FujiNet network device (N:) with support for various network protocols:
+TCP, UDP, TNFS, HTTP, FTP, Telnet \fB[*]\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Not (yet) working:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+CP/M emulation
+.IP \(bu 2
+SSH and SMB support for N:
+.IP \(bu 2
+SAM voice synthesizer
+.IP \(bu 2
+MIDIMaze support
+.IP \(bu 2
+Program recorder (tape) emulation
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+\fB[*]\fP Note that some applications using the N: device may rely on the SIO
+\fBPROCEED\fP line being connected. Most SIO2PC cables don\(aqt have this
+line connected.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-V\fP
+Print version number (including build date and OS).
+.TP
+.B \fB\-u\fP \fIhost:port\fP
+Host interface and port to listen on, for the web user interface. Default is
+\fB0.0.0.0:8000\fP, meaning TCP port 8000 on all interfaces. To access the
+web UI, point a browser at e.g. \fBhttp://localhost:8000\fP\&. Leaving off
+the \fI:port\fP isn\(aqt actually an error, but it causes \fBfujinet\-pc\fP to
+choose a random port number (which it doesn\(aqt tell you; you\(aqd have
+to use \fBnetstat\fP(8) to find it).
+.TP
+.B \fB\-c\fP \fIconfig\-file\fP
+Use \fIconfig\-file\fP instead of the default \fBfnconfig.ini\fP\&.
+.TP
+.B \fB\-s\fP \fISD\-directory\fP
+Use \fISD\-directory\fP instead of the default \fBSD/\fP for the virtual
+SD card.
+.UNINDENT
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fB~/.fujinet\-pc/\fP
+The default directory for \fBfujinet\-pc\fP, containing the following:
+.TP
+.B \fBfnconfig.ini\fP
+The default config file for \fBfujinet\-pc\fP\&. This is where settings
+are saved when they\(aqre changed with the web user interface. This file
+can also be edited with a regular text editor.
+.TP
+.B \fBSD/\fP
+The FujiNet hardware device has a slot for a Micro\-SD card. For fujinet\-pc,
+the contents of this directory will be available in the host list, under
+the name \fBSD\fP\&. The default contents of this directory include a good
+selection of DOS and utility disk images.
+.UNINDENT
+.\" AUTHOR
+.
+.\" ======
+.
+.\" normally I would put the upstream author's name here, but I have
+.
+.\" no idea what it is. The github user is just called FujiNetWIFI,
+.
+.\" and I haven't found any contact info anywhere in the source git
+.
+.\" repo. *shrug*.
+.
+.SH COPYRIGHT
+.sp
+See the file /usr/doc/fujinet\-pc\-2206.1/LICENSE for license information.
+.SH SEE ALSO
+.sp
+\fBatariserver\fP(1), \fBtnfsd\fP(1), \fBtnfs\-fuse\fP(1)
+.sp
+The fujinet\-pc homepage: \fI\%https://github.com/FujiNetWIFI/fujinet\-pc\fP
+.sp
+The FujiNet documentation wiki: \fI\%https://github.com/FujiNetWIFI/fujinet\-platformio/wiki\fP
+.\" Generated by docutils manpage writer.
+.
diff --git a/network/fujinet-pc/fujinet-pc.SlackBuild b/network/fujinet-pc/fujinet-pc.SlackBuild
new file mode 100644
index 0000000000..febf79d1da
--- /dev/null
+++ b/network/fujinet-pc/fujinet-pc.SlackBuild
@@ -0,0 +1,135 @@
+#!/bin/bash
+
+# Slackware build script for fujinet-pc
+
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fujinet-pc
+VERSION=${VERSION:-2206.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+SRCVER="release-$VERSION"
+
+SDVER="${SDVER:-2021-04-29}"
+
+HOST="${HOST:-$( hostname -s )}"
+PORT="${PORT:-/dev/ttyUSB0}"
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$SRCVER
+tar xvf $CWD/$PRGNAM-$SRCVER.tar.gz
+cd $PRGNAM-$SRCVER
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+PKGBIN=$PKG/usr/bin
+PKGLIBX=$PKG/usr/libexec/$PRGNAM
+PKGSHARE=$PKG/usr/share/$PRGNAM
+mkdir -p $PKGDOC $PKGBIN $PKGLIBX $PKGSHARE
+
+# fujinet-pc itself:
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make VERBOSE=1
+ make dist
+ install -s -m2755 -oroot -gdialout dist/fujinet $PKGLIBX/fujinet
+
+ cp -a dist/{SD,data} $PKGSHARE
+
+ # we don't need the upstream run-fujinet script
+cd ..
+
+cp -a CREDITS.md README.md LICENSE $PKGDOC
+
+# config file has \r\n line endings, keep it gzipped in git to avoid
+# git "fixing" it.
+gzip -dc < $CWD/fnconfig.ini.gz | \
+ sed -e "s,_HOST_,$HOST," \
+ -e "s,_PORT_,$PORT," \
+ > $PKGSHARE/fnconfig.ini
+
+# our wrapper script replaces run-fujinet
+install -m0755 -oroot -groot $CWD/$PRGNAM.sh $PKGBIN/$PRGNAM
+
+# fujinet-sd-card content:
+tar xvfC \
+ $CWD/fujinet-sd-card-fujinet-sd-card-$SDVER.tar.gz \
+ $PKGSHARE/SD \
+ --strip-components=1
+
+ln -s ../../share/$PRGNAM/SD/README.md $PKGDOC/README-fujinet-sd-card.md
+
+# .desktop and man page written for this SlackBuild.
+mkdir -p $PKG/usr/man/man1
+gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
+
+mkdir -p $PKG/usr/share/applications
+cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
+
+for px in 16 32 48 64 128; do
+ size="${px}x${px}"
+ DIR=$PKG/usr/share/icons/hicolor/$size/apps
+ mkdir -p $DIR
+ convert -resize "$size!" \
+ $PKGSHARE/data/www/favicon.ico \
+ PNG32:$DIR/$PRGNAM.png
+done
+
+mkdir -p $PKG/usr/share/pixmaps
+ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
+
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/network/fujinet-pc/fujinet-pc.desktop b/network/fujinet-pc/fujinet-pc.desktop
new file mode 100644
index 0000000000..e288dea544
--- /dev/null
+++ b/network/fujinet-pc/fujinet-pc.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Name=FujiNet-PC
+GenericName=Atari 8-bit Peripheral Emulator
+Icon=fujinet-pc
+Exec=/usr/bin/fujinet-pc
+Terminal=true
+Type=Application
+Categories=Network;
diff --git a/network/fujinet-pc/fujinet-pc.info b/network/fujinet-pc/fujinet-pc.info
new file mode 100644
index 0000000000..8dc82909f1
--- /dev/null
+++ b/network/fujinet-pc/fujinet-pc.info
@@ -0,0 +1,12 @@
+PRGNAM="fujinet-pc"
+VERSION="2206.1"
+HOMEPAGE="https://github.com/FujiNetWIFI/fujinet-pc"
+DOWNLOAD="https://github.com/FujiNetWIFI/fujinet-pc/archive/release-2206.1/fujinet-pc-release-2206.1.tar.gz \
+ https://github.com/FujiNetWIFI/fujinet-sd-card/archive/fujinet-sd-card-2021-04-29/fujinet-sd-card-fujinet-sd-card-2021-04-29.tar.gz"
+MD5SUM="f1d3dd2aafaf052309a56601ab5a448e \
+ d53e0b655351b987223106fadee9e5a2"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/network/fujinet-pc/fujinet-pc.rst b/network/fujinet-pc/fujinet-pc.rst
new file mode 100644
index 0000000000..0296f813df
--- /dev/null
+++ b/network/fujinet-pc/fujinet-pc.rst
@@ -0,0 +1,117 @@
+.. RST source for fujinet-pc(1) man page. Convert with:
+.. rst2man.py fujinet-pc.rst > fujinet-pc.1
+.. rst2man.py comes from the SBo development/docutils package.
+
+.. |version| replace:: 2206.1
+.. |date| date::
+
+==========
+fujinet-pc
+==========
+
+-----------------------------------------------------------------
+peripheral emulator and network adaptor for Atari 8-bit computers
+-----------------------------------------------------------------
+
+:Manual section: 1
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+fujinet-pc [**-V**] [**-u** *host:port*] [**-c** *config-file*] [**-s** *SD-directory*]
+
+DESCRIPTION
+===========
+
+FujiNet is a network adaptor for the Atari 8-bit line of computers. It
+has many features, including the ability to netboot the Atari from a
+disk image on an Internet TNFS server. It's a piece of hardware which
+plugs into the Atari's SIO port and connects to a wireless network.
+
+fujinet-pc is a Linux port of the FujiNet firmware, which allows using
+most of the FujiNet's features with just an SIO2PC cable and a PC.
+
+FujiNet features that work with fujinet-pc:
+
+ - Disk drive (D:) emulation with support for ATR disk images and XEX files (no ATX yet)
+ - Modem emulation (R:)
+ - Printer emulation (P:)
+ - APETIME protocol
+ - TNFS File System to access image files over network
+ - Web interface to control program's settings, browse TNFS hosts and mount disk images
+ - FujiNet network device (N:) with support for various network protocols:
+ TCP, UDP, TNFS, HTTP, FTP, Telnet **[\*]**
+
+Not (yet) working:
+
+ - CP/M emulation
+ - SSH and SMB support for N:
+ - SAM voice synthesizer
+ - MIDIMaze support
+ - Program recorder (tape) emulation
+
+**[\*]** Note that some applications using the N: device may rely on the SIO
+**PROCEED** line being connected. Most SIO2PC cables don't have this
+line connected.
+
+OPTIONS
+=======
+
+**-V**
+ Print version number (including build date and OS).
+
+**-u** *host:port*
+ Host interface and port to listen on, for the web user interface. Default is
+ **0.0.0.0:8000**, meaning TCP port 8000 on all interfaces. To access the
+ web UI, point a browser at e.g. **http://localhost:8000**. Leaving off
+ the *:port* isn't actually an error, but it causes **fujinet-pc** to
+ choose a random port number (which it doesn't tell you; you'd have
+ to use **netstat**\(8) to find it).
+
+**-c** *config-file*
+ Use *config-file* instead of the default **fnconfig.ini**.
+
+**-s** *SD-directory*
+ Use *SD-directory* instead of the default **SD/** for the virtual
+ SD card.
+
+FILES
+=====
+
+**~/.fujinet-pc/**
+ The default directory for **fujinet-pc**, containing the following:
+
+**fnconfig.ini**
+ The default config file for **fujinet-pc**. This is where settings
+ are saved when they're changed with the web user interface. This file
+ can also be edited with a regular text editor.
+
+**SD/**
+ The FujiNet hardware device has a slot for a Micro-SD card. For fujinet-pc,
+ the contents of this directory will be available in the host list, under
+ the name **SD**. The default contents of this directory include a good
+ selection of DOS and utility disk images.
+
+.. AUTHOR
+.. ======
+.. normally I would put the upstream author's name here, but I have
+.. no idea what it is. The github user is just called FujiNetWIFI,
+.. and I haven't found any contact info anywhere in the source git
+.. repo. *shrug*.
+
+COPYRIGHT
+=========
+
+See the file /usr/doc/fujinet-pc-|version|/LICENSE for license information.
+
+SEE ALSO
+========
+
+**atariserver**\(1), **tnfsd**\(1), **tnfs-fuse**\(1)
+
+The fujinet-pc homepage: https://github.com/FujiNetWIFI/fujinet-pc
+
+The FujiNet documentation wiki: https://github.com/FujiNetWIFI/fujinet-platformio/wiki
diff --git a/network/fujinet-pc/fujinet-pc.sh b/network/fujinet-pc/fujinet-pc.sh
new file mode 100644
index 0000000000..51e44f101e
--- /dev/null
+++ b/network/fujinet-pc/fujinet-pc.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+SHARE=/usr/share/fujinet-pc
+EXE=/usr/libexec/fujinet-pc/fujinet
+
+if [ "$1" = "-help" -o "$1" = "--help" -o "$1" = "-h" ]; then
+ echo -n "Usage: $( basename $0 ) "
+ $EXE --help 2>&1 | grep '^Usage:' | cut -d' ' -f3-
+ exit 0
+fi
+
+FUJINET_HOME="${FUJINET_HOME:-$HOME/.fujinet-pc}"
+if [ ! -e "$FUJINET_HOME" ]; then
+ echo "$FUJINET_HOME does not exist, populating from $SHARE"
+ mkdir -p "$FUJINET_HOME" || exit 1
+ cp -a $SHARE/* "$FUJINET_HOME" || exit 1
+fi
+
+cd "$FUJINET_HOME" || exit 1
+
+echo "Starting FujiNet"
+$EXE "$@"
+rc=$?
+
+# from sysexits.h
+# #define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
+while [ $rc -eq 75 ]; do
+ echo "Restarting FujiNet"
+ $EXE "$@"
+ rc=$?
+done
+
+echo "FujiNet ended with exit code $rc"
diff --git a/network/fujinet-pc/slack-desc b/network/fujinet-pc/slack-desc
new file mode 100644
index 0000000000..745c06b444
--- /dev/null
+++ b/network/fujinet-pc/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fujinet-pc: fujinet-pc (Linux port of FujiNet firmware)
+fujinet-pc:
+fujinet-pc: FujiNet is a network adaptor for the Atari 8-bit line of computers. It
+fujinet-pc: has many features, including the ability to netboot the Atari from a
+fujinet-pc: disk image on an Internet TNFS server. It's a piece of hardware which
+fujinet-pc: plugs into the Atari's SIO port and connects to a wireless network.
+fujinet-pc:
+fujinet-pc: fujinet-pc is a Linux port of the FujiNet firmware, which allows using
+fujinet-pc: most of the FujiNet's features with just an SIO2PC cable and a PC.
+fujinet-pc:
+fujinet-pc: