aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--Makefile4
-rw-r--r--README.txt5
-rw-r--r--a8cat.123
-rw-r--r--a8cat.c5
-rw-r--r--a8cat.rst17
-rw-r--r--a8eol.16
-rwxr-xr-xa8utf8172
-rw-r--r--a8utf8.1125
-rw-r--r--a8utf8.rst57
-rw-r--r--a8xd.1108
-rw-r--r--a8xd.c136
-rw-r--r--a8xd.rst84
-rw-r--r--atascii.78
-rw-r--r--atascii.rst2
-rw-r--r--atr2xfd.16
-rw-r--r--atrsize.16
-rw-r--r--axe.16
-rw-r--r--blob2c.16
-rw-r--r--blob2xex.16
-rw-r--r--cart2xex.16
-rw-r--r--cxrefbas.16
-rw-r--r--dasm2atasm.16
-rw-r--r--dumpbas.16
-rw-r--r--fenders.16
-rw-r--r--listbas.131
-rw-r--r--listbas.c24
-rw-r--r--listbas.rst25
-rw-r--r--manftr.rst36
-rw-r--r--protbas.16
-rw-r--r--renumbas.16
-rw-r--r--rom2cart.16
-rw-r--r--unmac65.16
-rw-r--r--unprotbas.16
-rw-r--r--vxrefbas.16
-rw-r--r--xex.56
-rw-r--r--xex1to2.16
-rw-r--r--xexamine.16
-rw-r--r--xexcat.16
-rw-r--r--xexsplit.16
-rw-r--r--xfd2atr.16
41 files changed, 450 insertions, 554 deletions
diff --git a/.gitignore b/.gitignore
index df9ea4e..98ef547 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,7 +13,9 @@
*.old
*.bak
*.o
+a8cat
a8eol
+a8xd
atr2xfd
atrsize
axe
@@ -23,6 +25,7 @@ cart2rom
fenders
rom2cart
unmac65
+xex1to2
xexcat
xexsplit
xfd2atr
@@ -31,6 +34,7 @@ blob2xex
vxrefbas
cxrefbas
dumpbas
+listbas
renumbas
protbas
unprotbas
diff --git a/Makefile b/Makefile
index 47cf854..ac7c4b3 100644
--- a/Makefile
+++ b/Makefile
@@ -17,8 +17,8 @@ CFLAGS=-Wall $(COPT) -ansi -D_GNU_SOURCE -DVERSION=\"$(VERSION)\"
# BINS and SCRIPTS go in $BINDIR, DOCS go in $DOCDIR
BINS=a8eol atr2xfd atrsize axe blob2c blob2xex cart2xex cxrefbas dumpbas fenders protbas renumbas rom2cart unmac65 unprotbas vxrefbas xex1to2 xexamine xexcat xexsplit xfd2atr listbas a8cat a8xd
-SCRIPTS=dasm2atasm a8utf8
-MANS=a8eol.1 xfd2atr.1 atr2xfd.1 blob2c.1 cart2xex.1 fenders.1 xexsplit.1 xexcat.1 atrsize.1 rom2cart.1 unmac65.1 axe.1 dasm2atasm.1 a8utf8.1 blob2xex.1 xexamine.1 xex1to2.1 unprotbas.1 protbas.1 renumbas.1 dumpbas.1 vxrefbas.1 cxrefbas.1 listbas.1 a8cat.1 a8xd.1
+SCRIPTS=dasm2atasm
+MANS=a8eol.1 xfd2atr.1 atr2xfd.1 blob2c.1 cart2xex.1 fenders.1 xexsplit.1 xexcat.1 atrsize.1 rom2cart.1 unmac65.1 axe.1 dasm2atasm.1 blob2xex.1 xexamine.1 xex1to2.1 unprotbas.1 protbas.1 renumbas.1 dumpbas.1 vxrefbas.1 cxrefbas.1 listbas.1 a8cat.1 a8xd.1
MAN5S=xex.5
MAN7S=atascii.7
DOCS=README.txt equates.inc *.dasm LICENSE ksiders/atr.txt
diff --git a/README.txt b/README.txt
index 9328188..76ff5cb 100644
--- a/README.txt
+++ b/README.txt
@@ -2,10 +2,13 @@ This is a collection of Atari 8-bit related utilities I've written for
or ported to Linux. They should be usable as-is on other UNIX-like
systems, including Cygwin for MS-Windows.
+a8cat - Convert Atari 8-bit text to/from UTF-8 encoded Unicode or plain
+ text.
+
a8eol - Convert Atari 8-bit text files to/from UNIX / DOS / Mac Classic
text file format.
-a8utf8 - Convert Atari 8-bit text to UTF-8 encoded Unicode.
+a8xd - ATASCII and Unicode aware hex dump.
atr2xfd - Convert an Atari 8-bit ATR disk image to a raw (XFD) image.
diff --git a/a8cat.1 b/a8cat.1
index 30f96d0..c9d5d2b 100644
--- a/a8cat.1
+++ b/a8cat.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "A8CAT" 1 "2024-06-29" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "A8CAT" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
a8cat \- Convert Atari 8-bit text to UTF-8 encoded Unicode (and back).
.SH SYNOPSIS
@@ -87,12 +87,17 @@ Unicode graphics character. In text mode, ATASCII tabs, backspace,
and bells are translated to the ASCII versions.
.TP
.B \-r
-Reverse conversion: Input is UTF\-8, output is ATASCII (or XL ICS, with \fB\-i\fP).
-Beware that printing ATASCII to a terminal may look funny, and may
-even confuse the terminal. Redirecting to a file is safe; piping
-to a pager usually is. Only the UTF\-8 codepoints that correspond to
-ATASCII characters will be converted. If the \fB\-i\fP option was used to
-create the input, it must be used with \fB\-r\fP also.
+Reverse conversion: Input is plain text, or UTF\-8 created by a previous
+run of \fBa8cat\fP; output is ATASCII (or XL ICS, with \fB\-i\fP). ASCII
+tabs, backspaces, and newlines will be coverted to the ATASCII
+equivalent. ASCII carriage returns will be silently ignored.
+.sp
+Only the UTF\-8 codepoints that correspond to ATASCII characters will
+be converted. If the \fB\-i\fP option was used to create the input, it
+must be used with \fB\-r\fP also.
+.sp
+\fBa8cat\fP will refuse to print ATASCII to a terminal. You must
+redirect or pipe the output.
.TP
.B \-m
Magazine listing mode. Rather than Unicode graphics characters,
@@ -132,8 +137,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -152,6 +158,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/a8cat.c b/a8cat.c
index e4a88bb..76ec67a 100644
--- a/a8cat.c
+++ b/a8cat.c
@@ -94,6 +94,8 @@ int a8revcat(const char *file) {
while( (c = fgetwc(input)) != WEOF ) {
if(c == 0x1b) {
inv = handle_escape_seq(inv, input, file, line);
+ } else if(c == '\r') {
+ continue; /* swallow carriage returns */
} else if(c == '\n') {
putchar(0x9b);
line++;
@@ -254,6 +256,9 @@ int main(int argc, char **argv) {
}
if(reverse) {
+ if(isatty(fileno(stdout)))
+ die("Refusing to write ATASCII to a terminal.");
+
if(underline || textmode || stripinv || magazine) {
die("-t, -u, -m, -s options don't make sense with -r.\n");
}
diff --git a/a8cat.rst b/a8cat.rst
index 8367e35..3909391 100644
--- a/a8cat.rst
+++ b/a8cat.rst
@@ -61,12 +61,17 @@ OPTIONS
and bells are translated to the ASCII versions.
-r
- Reverse conversion: Input is UTF-8, output is ATASCII (or XL ICS, with **-i**).
- Beware that printing ATASCII to a terminal may look funny, and may
- even confuse the terminal. Redirecting to a file is safe; piping
- to a pager usually is. Only the UTF-8 codepoints that correspond to
- ATASCII characters will be converted. If the **-i** option was used to
- create the input, it must be used with **-r** also.
+ Reverse conversion: Input is plain text, or UTF-8 created by a previous
+ run of **a8cat**; output is ATASCII (or XL ICS, with **-i**). ASCII
+ tabs, backspaces, and newlines will be coverted to the ATASCII
+ equivalent. ASCII carriage returns will be silently ignored.
+
+ Only the UTF-8 codepoints that correspond to ATASCII characters will
+ be converted. If the **-i** option was used to create the input, it
+ must be used with **-r** also.
+
+ **a8cat** will refuse to print ATASCII to a terminal. You must
+ redirect or pipe the output.
-m
Magazine listing mode. Rather than Unicode graphics characters,
diff --git a/a8eol.1 b/a8eol.1
index 78d501f..31648ce 100644
--- a/a8eol.1
+++ b/a8eol.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "A8EOL" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "A8EOL" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
a8eol \- convert Atari 8-bit text files to/from UNIX/Windows/Mac
.\" RST source for a8eol(1) man page. Convert with:
@@ -461,8 +461,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -481,6 +482,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/a8utf8 b/a8utf8
deleted file mode 100755
index 0cca2ac..0000000
--- a/a8utf8
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/perl -w
-
-# convert A8 text to UTF-8. Control graphics characters are replaced with
-# nearest Unicode equivalents (mostly from the box-drawing range, or from
-# the basic-latin range with -i option).
-
-# Careful editing this script: you need an editor that groks UTF-8, or at
-# least one that won't mangle the UTF-8 sequences embedded in the tables
-# below.
-
-($SELF = $0) =~ s,.*/,,;
-
-binmode(STDOUT, ":utf8");
-binmode(STDIN, ":bytes");
-
-use utf8;
-
-%atascii_table = (
- 0 => "♥",
- 1 => "┣",
- 2 => "┃",
- 3 => "┛",
- 4 => "┫",
- 5 => "┓",
- 6 => "╱",
- 7 => "╲",
- 8 => "◢",
- 9 => "▗",
- 10 => "◣",
- 11 => "▝",
- 12 => "▘",
- 13 => "▔",
- 14 => "▁",
- 15 => "▖",
- 16 => "♣",
- 17 => "┏",
- 18 => "━",
- 19 => "╋",
- 20 => "●",
- 21 => "▄",
- 22 => "▎",
- 23 => "┳",
- 24 => "┻",
- 25 => "▌",
- 26 => "┗",
- 27 => "␛",
- 28 => "↑",
- 29 => "↓",
- 30 => "←",
- 31 => "→",
- 96 => "◆",
- 123 => "♠",
- 125 => "↰",
- 126 => "◀",
- 127 => "▶",
- 136 => "◤",
- 137 => "▛",
- 138 => "◥",
- 139 => "▙",
- 140 => "▟",
- 141 => "▆",
- 142 => "🮅",
- 143 => "▜",
- 148 => "◙",
- 149 => "▀",
- 150 => "🮊",
- 153 => "▐",
- 155 => "\n",
- 156 => "⍐",
- 157 => "⍗",
- 158 => "⍇",
- 159 => "⍈",
- 160 => "█",
-);
-
-%xl_intl_table = (
- 0 => "á",
- 1 => "ù",
- 2 => "Ñ",
- 3 => "É",
- 4 => "ç",
- 5 => "ô",
- 6 => "ò",
- 7 => "ì",
- 8 => "£",
- 9 => "ï",
- 10 => "ü",
- 11 => "ä",
- 12 => "Ö",
- 13 => "ú",
- 14 => "ó",
- 15 => "ö",
- 16 => "Ü",
- 17 => "â",
- 18 => "û",
- 19 => "î",
- 20 => "é",
- 21 => "è",
- 22 => "ñ",
- 23 => "ê",
- 24 => "ȧ",
- 25 => "à",
- 26 => "Ȧ",
- 27 => "␛",
- 28 => "↑",
- 29 => "↓",
- 30 => "←",
- 31 => "→",
- 96 => "¡",
- 123 => "Ä",
- 126 => "◀",
- 127 => "▶",
- 155 => "\n",
-);
-
-undef $/;
-
-$table = \%atascii_table;
-$print_table = 0;
-while(@ARGV && $ARGV[0] =~ /^-/) {
- for($ARGV[0]) {
- /^-i$/ && do { $table = \%xl_intl_table; next; };
- /^-t$/ && do { $print_table = 1; next; };
- /^-r$/ && do { $reverse = 1; next; };
- /^--?h/ && do { usage(0) };
- warn "$SELF: unknown option: $_\n";
- usage(1);
- }
- shift @ARGV;
-}
-
-if($reverse) {
- binmode(STDOUT, ":bytes");
- for(keys %$table) {
- $revtable{ord($table->{$_})} = chr($_);
- }
- $table = \%revtable;
-}
-
-if($print_table) {
- for(sort { $a <=> $b } keys %$table) {
- my $chr = translate(chr $_);
- $chr = '\n' if $chr eq "\n";
- printf '"%d","$%02x","%s"' . "\n", $_, $_, $chr;
- }
- exit 0;
-}
-
-$_ = <>;
-s/(.)/translate($1)/seg;
-print;
-
-sub translate {
- my $o = ord(shift);
- my $ret;
-
- $ret = $table->{$o};
- return $ret if defined($ret);
-
- $ret = $table->{$o & 0x7f};
- return $ret if defined($ret);
-
- return chr($o & 0x7f);
-}
-
-sub usage {
- print <<EOF;
-Usage: $SELF [--help] | [-t [-r] [-i]] | [-r] [-i] infile [infile ...]
-See man page for details.
-EOF
- exit $_[0];
-}
diff --git a/a8utf8.1 b/a8utf8.1
deleted file mode 100644
index c2986eb..0000000
--- a/a8utf8.1
+++ /dev/null
@@ -1,125 +0,0 @@
-.\" 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 "A8UTF8" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
-.SH NAME
-a8utf8 \- Convert Atari 8-bit text to UTF-8 encoded Unicode.
-.\" RST source for a8utf8(1) man page. Convert with:
-.
-.\" rst2man.py a8utf8.rst > a8utf8.1
-.
-.\" rst2man.py comes from the SBo development/docutils package.
-.
-.SH SYNOPSIS
-.sp
-\fIa8utf8\fP [\fB\-r\fP] [\fB\-i\fP] [\fIinfile\fP] [\fIinfile ...\fP]
-.sp
-\fIa8utf8\fP [\fB\-r\fP] [\fB\-i\fP] \fB\-t\fP
-.SH DESCRIPTION
-.sp
-Convert Atari 8\-bit ATASCII or XL ICS (International Character
-Set) text to UTF\-8 encoded Unicode. Control graphics characters are
-replaced with their nearest Unicode equivalents (mostly from the Box
-Drawing block, or from the Basic Latin block with \fB\-i\fP option).
-.sp
-If no \fIinfile\fP is given, input is read from standard input. Output always
-goes to standard output; to write to a file, use a command like:
-.INDENT 0.0
-.INDENT 3.5
-.sp
-.nf
-.ft C
-a8utf8 atari.txt > converted.txt
-.ft P
-.fi
-.UNINDENT
-.UNINDENT
-.sp
-The output is plain UTF\-8 Unicode, without BOM.
-.sp
-Inverse video (characters codes above \fB$80\fP) are translated to
-their non\-inverse equivalents, except \fB$9B\fP (Atari EOL), which is
-translated to \fB\en\fP (newline).
-.SH OPTIONS
-.INDENT 0.0
-.TP
-.B \-i
-Input uses Atari XL/XE International Character Set encoding, rather than
-ATASCII graphics.
-.TP
-.B \-t
-Print table of Atari to Unicode equivalents, in CSV format. Can
-be used with or without \fB\-i\fP and/or \fB\-r\fP (four different tables).
-.TP
-.B \-r
-Reverse conversion: Input is UTF\-8, output is ATASCII (or XL ICS, with \fB\-i\fP).
-Beware that printing ATASCII to a terminal may look funny, and may even confuse
-the terminal. Redirecting to a file is safe.
-.UNINDENT
-.SH COPYRIGHT
-.sp
-WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
-.SH AUTHOR
-.INDENT 0.0
-.IP B. 3
-Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
-.UNINDENT
-.SH SEE ALSO
-.sp
-\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
-\fBatr2xfd\fP(1),
-\fBatrsize\fP(1),
-\fBaxe\fP(1),
-\fBblob2c\fP(1),
-\fBblob2xex\fP(1),
-\fBcart2xex\fP(1),
-\fBcxrefbas\fP(1),
-\fBdasm2atasm\fP(1),
-\fBdumpbas\fP(1),
-\fBf2toxex\fP(1),
-\fBfenders\fP(1),
-\fBlistbas\fP(1),
-\fBprotbas\fP(1),
-\fBrenumbas\fP(1),
-\fBrom2cart\fP(1),
-\fBunmac65\fP(1),
-\fBunprotbas\fP(1),
-\fBvxrefbas\fP(1),
-\fBxexamine\fP(1),
-\fBxexcat\fP(1),
-\fBxexsplit\fP(1),
-\fBxfd2atr\fP(1),
-\fBxex\fP(5),
-\fBatascii\fP(7).
-.sp
-Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
-Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
-.\" Generated by docutils manpage writer.
-.
diff --git a/a8utf8.rst b/a8utf8.rst
deleted file mode 100644
index ec9fbba..0000000
--- a/a8utf8.rst
+++ /dev/null
@@ -1,57 +0,0 @@
-.. RST source for a8utf8(1) man page. Convert with:
-.. rst2man.py a8utf8.rst > a8utf8.1
-.. rst2man.py comes from the SBo development/docutils package.
-
-======
-a8utf8
-======
-
---------------------------------------------------
-Convert Atari 8-bit text to UTF-8 encoded Unicode.
---------------------------------------------------
-
-.. include:: manhdr.rst
-
-SYNOPSIS
-========
-
-*a8utf8* [**-r**] [**-i**] [*infile*] [*infile ...*]
-
-*a8utf8* [**-r**] [**-i**] **-t**
-
-DESCRIPTION
-===========
-
-Convert Atari 8-bit ATASCII or XL ICS (International Character
-Set) text to UTF-8 encoded Unicode. Control graphics characters are
-replaced with their nearest Unicode equivalents (mostly from the Box
-Drawing block, or from the Basic Latin block with **-i** option).
-
-If no *infile* is given, input is read from standard input. Output always
-goes to standard output; to write to a file, use a command like::
-
- a8utf8 atari.txt > converted.txt
-
-The output is plain UTF-8 Unicode, without BOM.
-
-Inverse video (characters codes above **$80**) are translated to
-their non-inverse equivalents, except **$9B** (Atari EOL), which is
-translated to **\\n** (newline).
-
-OPTIONS
-=======
-
--i
- Input uses Atari XL/XE International Character Set encoding, rather than
- ATASCII graphics.
-
--t
- Print table of Atari to Unicode equivalents, in CSV format. Can
- be used with or without **-i** and/or **-r** (four different tables).
-
--r
- Reverse conversion: Input is UTF-8, output is ATASCII (or XL ICS, with **-i**).
- Beware that printing ATASCII to a terminal may look funny, and may even confuse
- the terminal. Redirecting to a file is safe.
-
-.. include:: manftr.rst
diff --git a/a8xd.1 b/a8xd.1
index d9d454c..1bfde97 100644
--- a/a8xd.1
+++ b/a8xd.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "A8XD" 1 "2024-06-30" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "A8XD" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
a8xd \- Atari 8-bit ATASCII-aware hex dump
.SH SYNOPSIS
@@ -42,36 +42,24 @@ The ATASCII codes are converted to UTF\-8, in the same way as
\fBa8cat\fP(1). Codes with the high bit set are displayed in inverse
video, using ANSI/VT\-100 escape sequences.
.sp
-By default, the output is colorized:
-.INDENT 0.0
-.INDENT 3.5
-.INDENT 0.0
-.IP \(bu 2
-Normal characters are green. This includes alphanumerics, spaces, and
-punctuation.
-.IP \(bu 2
-Codes \fB$00\fP (null, or ATASCII heart) and \fB$9B\fP (EOL) are red.
-.IP \(bu 2
-Control characters are yellow. This includes codes \fB$01\fP to \fB$1F\fP
-(control + letters/punctuation, escape, and arrow keys), \fB$60\fP, \fB$7B\fP, \fB$7D\fP
-(clear screen), \fB$7E\fP (backspace), and \fB$7F\fP (tab).
-.UNINDENT
-.UNINDENT
-.UNINDENT
-.sp
-The colors and inverse rendering apply to both the ATASCII and hex bytes.
+By default, the output is colorized (see \fBCOLORS\fP, below). The
+colors and inverse rendering apply to both the ATASCII and hex bytes.
.sp
Without \fIinfile\fP, or if \fIinfile\fP is \fB\-\fP, \fBa8xd\fP reads from standard input.
.SH OPTIONS
.INDENT 0.0
.TP
.B \-a
-ANTIC mode: treat the input as screen bytes. Can usefully be combined
-with \fB\-g\fP\&.
+ANTIC mode: treat the input as screen bytes (aka "internal codes")
+rather than ATASCII. Can usefully be combined with \fB\-g\fP or \fB\-f\fP\&.
+.TP
+.B \-f
+Like \fB\-g\fP, but using the top half of the character set. This is
+what you\(aqd see on the Atari with \fIGRAPHICS 1:POKE 756,226\fP\&.
.TP
.B \-g
-Graphics mode. Changes the colorization so it looks like \fIGRAPHICS 1\fP (or 2)
-on the Atari.
+Graphics mode. Changes the printed characters and colorization so it
+looks like \fIGRAPHICS 1\fP (or 2) on the Atari.
.TP
.B \-i
Print XL/XE International Character Set conversions instead of ATASCII.
@@ -123,6 +111,76 @@ Show built\-in help and exit.
.B \fB\-\-version\fP
Show version number and exit.
.UNINDENT
+.SH COLORS
+.sp
+The default color scheme is:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+Non\-control characters are green. This includes alphanumerics, spaces, and
+punctuation. These are the characters that ATASCII has in common with
+ASCII.
+.IP \(bu 2
+Graphics characters are yellow. This includes \fB$01\fP to \fB$1a\fP (the
+alphabet, with the Control key held down), \fB$60\fP (the diamond), and
+\fB$7b\fP (the spade).
+.IP \(bu 2
+Codes \fB$00\fP (null, or ATASCII heart) and \fB$9B\fP (EOL) are red. These
+characters are used as delimiters, so it makes sense for them to
+stand out.
+.IP \(bu 2
+Cursor control characters are purple. These are characters that perform
+some action when printed to the \fIE:\fP device. These are:
+.INDENT 2.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B \fB$1b\fP
+Escape.
+.TP
+.B \fB$1c\fP through \fB$1f\fP
+Cursor movement (up/down/left/right arrows).
+.TP
+.B \fB$7d\fP
+Clear screen.
+.TP
+.B \fB$7e\fP
+Backspace.
+.TP
+.B \fB$7f\fP
+Tab.
+.TP
+.B \fB$9c\fP
+Delete line.
+.TP
+.B \fB$9d\fP
+Insert line.
+.TP
+.B \fB$9e\fP
+Clear tab stop.
+.TP
+.B \fB$9f\fP
+Set tab stop.
+.TP
+.B \fB$fd\fP
+Bell.
+.TP
+.B \fB$fe\fP
+Delete character.
+.TP
+.B \fB$ff\fP
+Insert character.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+In \fB\-f\fP and \fB\-g\fP modes, the above doesn\(aqt apply. Instead, the
+colors are (close to) the colors that would appear in \fIGRAPHICS 1\fP,
+with the default palette.
.SH NOTES
.sp
\fBa8xd\fP requires the terminal emulator to support UTF\-8 and use a
@@ -174,8 +232,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -194,6 +253,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/a8xd.c b/a8xd.c
index 534267c..1a48312 100644
--- a/a8xd.c
+++ b/a8xd.c
@@ -14,6 +14,15 @@
#define UC_WORD_FMT "%04X"
#define UC_BYTE_FMT "%02X"
+/* colors. don't use black or white: one or the other is likely
+ the terminal's text color already.
+ don't use blue because it's hard to read. */
+#define C_RED 1
+#define C_GREEN 2
+#define C_YELLOW 3
+#define C_PURPLE 5
+#define C_CYAN 6
+
/* translation table (see atables.c), choices are
ata2utf, ics2utf, or magazine. */
const char **table = ata2utf;
@@ -31,7 +40,7 @@ const char *byte_format = LC_BYTE_FMT;
/* command line options change these. */
int verbose = 0, color = 1, disp_offset = 0, maxlen = 0;
int seek_whence = 0, seekpos = 0, filepos = 0, limit = 0;
-int graphics = 0, screencodes = 0;
+int graphics = 0, screencodes = 0, high_font = 0;
const char *self;
@@ -49,7 +58,7 @@ void die(const char *msg) {
}
void print_help(void) {
- printf("Usage:\n %s [-a] [-g] [-i] [-l limit] [-m] [-o offset] [-s [-]seek] [-u] [-v] [file]\n", self);
+ printf("Usage:\n %s [-a] [-f] [-g] [-i] [-l limit] [-m] [-o offset] [-s [-]seek] [-u] [-v] [file]\n", self);
printf(" -a: Input is ANTIC screencodes (default is ATASCII).\n");
printf(" -g: GR.1/2 style colorization.\n");
printf(" -i: Input is XL intl charset (default is ATASCII).\n");
@@ -128,32 +137,50 @@ FILE *open_input(const char *file) {
return input;
}
+int get_text_color(unsigned char c) {
+ unsigned char c7 = c & 0x7f;
+
+ if(c == 0 || c == 0x9b) {
+ return C_RED;
+ } else if((c7 >= 0x1b && c7 <= 0x1f) || (c7 >= 0x7d)) {
+ /* cursor control characters:
+ - 0x1b (esc)
+ - 0x1c-0x1f (arrows), 0x9c-0x9f
+ - 0x7d/0xf3 (cls, bell)
+ - 0x7e, 0xfe (delete line, char)
+ - 0x7f, 0xff (tab, insert char)
+ */
+ return C_PURPLE;
+ } else if(c7 < 32 || c7 == 0x60 || c7 == 0x7b) {
+ return C_YELLOW;
+ } else {
+ return C_GREEN;
+ }
+}
+
+int get_graphics_color(unsigned char c) {
+ if(c < 0x20)
+ return C_GREEN;
+ else if(c >= 0x20 && c < 0x60)
+ return C_YELLOW;
+ else if(c >= 0x60 && c < 0x80)
+ return C_GREEN;
+ else if(c >= 0x80 && c < 0xa0)
+ return C_RED;
+ else if(c >= 0xa0 && c < 0xe0)
+ return C_CYAN;
+ else /* c >= 0xe0 */
+ return C_RED;
+}
+
char *get_color(unsigned char c) {
int color;
- unsigned char c7 = c & 0x7f;
static char outbuf[32];
if(graphics) {
- if(c < 0x20)
- color = 2;
- else if(c >= 0x20 && c < 0x60)
- color = 3;
- else if(c >= 0x60 && c < 0x80)
- color = 2;
- else if(c >= 0x80 && c < 0xa0)
- color = 1;
- else if(c >= 0xa0 && c < 0xe0)
- color = 6; /* cyan (blue is too dark on most terminals) */
- else /* c >= 0xe0 */
- color = 1;
+ color = get_graphics_color(c);
} else {
- if(c == 0 || c == 0x9b) {
- color = 1; /* red */
- } else if(c7 < 32 || c7 == 0x60 || c7 == 0x7b || c7 == 0x7d || c7 == 0x7e || c7 == 0x7f) {
- color = 3; /* yellow/orange */
- } else {
- color = 2; /* green */
- }
+ color = get_text_color(c);
}
if(color) {
@@ -171,16 +198,22 @@ char *get_color(unsigned char c) {
$60-$7F get displayed in green, as $40-$5F.
for $80-$FF, same thing, but green is red, and orange is blue.
*/
-char *get_graphics(unsigned char c) {
- static char result[2];
+unsigned char get_graphics(unsigned char c) {
c &= 0x7f;
if(c < 0x20)
c += 0x20;
else if(c >= 0x60)
c -= 0x20;
- result[0] = c;
- result[1] = 0;
- return result;
+ return c;
+}
+
+unsigned char get_high_graphics(unsigned char c) {
+ c &= 0x7f;
+ if(c >= 0x20 && c < 0x40)
+ c -= 0x20;
+ else if(c >= 0x40)
+ c += 0x20;
+ return c;
}
unsigned char screen2ata(unsigned char c) {
@@ -231,6 +264,19 @@ void seek_input(FILE *input) {
}
}
+void append_str_f(char *buf, int *pos, const char *fmt, const char *str) {
+ *pos += sprintf(buf + *pos, fmt, str);
+}
+
+void append_str(char *buf, int *pos, const char *str) {
+ append_str_f(buf, pos, "%s", str);
+}
+
+void append_hex(char *buf, int *pos, const unsigned char byte) {
+ *pos += sprintf(buf + *pos, byte_format, byte);
+}
+
+
void dump_line(const unsigned char *buf, int len) {
char hex[1024], asc[1024];
int hpos = 0, apos = 0, count = len;
@@ -244,26 +290,35 @@ void dump_line(const unsigned char *buf, int len) {
while(len) {
c = *buf;
- if(screencodes) c = screen2ata(c);
inv = !graphics && (c & 0x80);
+ if(screencodes) c = screen2ata(c);
- if(color) hpos += sprintf(hex + hpos, "%s", get_color(c));
- if(inv) hpos += sprintf(hex + hpos, "%s", inverse_on);
- hpos += sprintf(hex + hpos, byte_format, c);
- if(color || inv) hpos += sprintf(hex + hpos, "%s", color_off);
- hex[hpos++] = ' ';
- if(count - len == 7) hex[hpos++] = ' ';
+ hpos += printf("%s", get_color(c));
+ if(inv) hpos += printf("%s", inverse_on);
+ hpos += printf(byte_format, *buf); /* *buf here, not c! */
+ if(color || inv) hpos += printf("%s", color_off);
+ putchar(' ');
+ hpos++;
+ if(count - len == 7) {
+ putchar(' ');
+ hpos++;
+ }
- if(color) apos += sprintf(asc + apos, "%s", get_color(c));
- if(inv) apos += sprintf(asc + apos, "%s", inverse_on);
- apos += sprintf(asc + apos, "%s", (graphics ? get_graphics(c) : table[c & 0x7f]));
- if(color || inv) apos += sprintf(asc + apos, "%s", color_off);
+ if(color) append_str(asc, &apos, get_color(c));
+ if(inv) append_str(asc, &apos, inverse_on);
+ if(graphics) {
+ if(high_font)
+ c = get_high_graphics(c);
+ else
+ c = get_graphics(c);
+ }
+ apos += sprintf(asc + apos, "%s", table[c & 0x7f]);
+ if(color || inv) append_str(asc, &apos, color_off);
filepos++;
buf++;
len--;
}
- printf("%s", hex);
/* what shall we use to fill the empty spaces? */
if(count < 8) putchar(' ');
@@ -316,7 +371,7 @@ int main(int argc, char **argv) {
exit(0);
}
- while( (opt = getopt(argc, argv, "vhimus:o:l:ga")) != -1) {
+ while( (opt = getopt(argc, argv, "vhimus:o:l:gaf")) != -1) {
switch(opt) {
case 'v': verbose = 1; break;
case 'h': print_help(); exit(0); break;
@@ -328,6 +383,7 @@ int main(int argc, char **argv) {
case 'l': limit = parse_limit_arg(optarg); break;
case 'g': graphics = 1; break;
case 'a': screencodes = 1; break;
+ case 'f': graphics = high_font = 1; break;
default: print_help(); exit(1); break;
}
}
diff --git a/a8xd.rst b/a8xd.rst
index 30d187b..3dc2b07 100644
--- a/a8xd.rst
+++ b/a8xd.rst
@@ -23,18 +23,8 @@ The ATASCII codes are converted to UTF-8, in the same way as
**a8cat**\(1). Codes with the high bit set are displayed in inverse
video, using ANSI/VT-100 escape sequences.
-By default, the output is colorized:
-
- - Normal characters are green. This includes alphanumerics, spaces, and
- punctuation.
-
- - Codes **$00** (null, or ATASCII heart) and **$9B** (EOL) are red.
-
- - Control characters are yellow. This includes codes **$01** to **$1F**
- (control + letters/punctuation, escape, and arrow keys), **$60**, **$7B**, **$7D**
- (clear screen), **$7E** (backspace), and **$7F** (tab).
-
-The colors and inverse rendering apply to both the ATASCII and hex bytes.
+By default, the output is colorized (see **COLORS**, below). The
+colors and inverse rendering apply to both the ATASCII and hex bytes.
Without *infile*, or if *infile* is **-**, **a8xd** reads from standard input.
@@ -43,11 +33,15 @@ OPTIONS
-a
ANTIC mode: treat the input as screen bytes (aka "internal codes")
- rather than ATASCII. Can usefully be combined with **-g**.
+ rather than ATASCII. Can usefully be combined with **-g** or **-f**.
+
+-f
+ Like **-g**, but using the top half of the character set. This is
+ what you'd see on the Atari with *GRAPHICS 1:POKE 756,226*.
-g
- Graphics mode. Changes the colorization so it looks like *GRAPHICS 1* (or 2)
- on the Atari.
+ Graphics mode. Changes the printed characters and colorization so it
+ looks like *GRAPHICS 1* (or 2) on the Atari.
-i
Print XL/XE International Character Set conversions instead of ATASCII.
@@ -89,6 +83,66 @@ OPTIONS
**--version**
Show version number and exit.
+COLORS
+======
+
+The default color scheme is:
+
+ - Non-control characters are green. This includes alphanumerics, spaces, and
+ punctuation. These are the characters that ATASCII has in common with
+ ASCII.
+
+ - Graphics characters are yellow. This includes **$01** to **$1a** (the
+ alphabet, with the Control key held down), **$60** (the diamond), and
+ **$7b** (the spade).
+
+ - Codes **$00** (null, or ATASCII heart) and **$9B** (EOL) are red. These
+ characters are used as delimiters, so it makes sense for them to
+ stand out.
+
+ - Cursor control characters are purple. These are characters that perform
+ some action when printed to the *E:* device. These are:
+
+ **$1b**
+ Escape.
+
+ **$1c** through **$1f**
+ Cursor movement (up/down/left/right arrows).
+
+ **$7d**
+ Clear screen.
+
+ **$7e**
+ Backspace.
+
+ **$7f**
+ Tab.
+
+ **$9c**
+ Delete line.
+
+ **$9d**
+ Insert line.
+
+ **$9e**
+ Clear tab stop.
+
+ **$9f**
+ Set tab stop.
+
+ **$fd**
+ Bell.
+
+ **$fe**
+ Delete character.
+
+ **$ff**
+ Insert character.
+
+In **-f** and **-g** modes, the above doesn't apply. Instead, the
+colors are (close to) the colors that would appear in *GRAPHICS 1*,
+with the default palette.
+
NOTES
=====
diff --git a/atascii.7 b/atascii.7
index fde78c4..ac08ec6 100644
--- a/atascii.7
+++ b/atascii.7
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ATASCII" 7 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ATASCII" 7 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
atascii \- Atari 8-bit character set
.\" RST source for atascii(7) man page. Convert with:
@@ -1714,7 +1714,7 @@ T{
T} T{
7e
T} T{
-[delete]
+[backspace]
T} T{
254
T} T{
@@ -2150,8 +2150,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -2170,6 +2171,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/atascii.rst b/atascii.rst
index 8f96d2a..54e47b8 100644
--- a/atascii.rst
+++ b/atascii.rst
@@ -155,7 +155,7 @@ brackets denote screen control codes.
"123", "7b", "♠", "251", "fb", ""
"124", "7c", "\|", "252", "fc", ""
"125", "7d", "[clear screen]", "253", "fd", "[bell]"
- "126", "7e", "[delete]", "254", "fe", "[delete char]"
+ "126", "7e", "[backspace]", "254", "fe", "[delete char]"
"127", "7f", "[tab]", "255", "ff", "[insert char]"
In the Atari XL and XE ROMs, there is a second character set, known as
diff --git a/atr2xfd.1 b/atr2xfd.1
index 824cd87..f46f6dd 100644
--- a/atr2xfd.1
+++ b/atr2xfd.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ATR2XFD" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ATR2XFD" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
atr2xfd \- Convert an Atari 8-bit ATR disk image to a raw (XFD) image
.\" RST source for atr2xfd(1) man page. Convert with:
@@ -181,8 +181,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -201,6 +202,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/atrsize.1 b/atrsize.1
index 878df71..08504ff 100644
--- a/atrsize.1
+++ b/atrsize.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ATRSIZE" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ATRSIZE" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
atrsize \- Change the size of an Atari 8-bit ATR disk image, or create a blank ATR image
.\" RST source for atrsize(1) man page. Convert with:
@@ -195,8 +195,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -215,6 +216,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/axe.1 b/axe.1
index 6bef0a5..f2eaef0 100644
--- a/axe.1
+++ b/axe.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "AXE" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "AXE" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
axe \- ATR/XFD Editor
.\" RST source for axe(1) man page. Convert with:
@@ -136,8 +136,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -156,6 +157,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/blob2c.1 b/blob2c.1
index 3f73de7..56c8977 100644
--- a/blob2c.1
+++ b/blob2c.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "BLOB2C" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "BLOB2C" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
blob2c \- Create C source and header files from a binary file
.\" RST source for blob2c(1) man page. Convert with:
@@ -116,8 +116,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -136,6 +137,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/blob2xex.1 b/blob2xex.1
index 507a16f..6f06b32 100644
--- a/blob2xex.1
+++ b/blob2xex.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "BLOB2XEX" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "BLOB2XEX" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
blob2xex \- Create Atari 8-bit executables from arbitrary data
.\" RST source for blob2xex(1) man page. Convert with:
@@ -207,8 +207,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -227,6 +228,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/cart2xex.1 b/cart2xex.1
index 7340d1f..349e637 100644
--- a/cart2xex.1
+++ b/cart2xex.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CART2XEX" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "CART2XEX" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
cart2xex \- Convert an Atari 8-bit ROM cartridge image to a binary load file
.\" RST source for cart2xex(1) man page. Convert with:
@@ -225,8 +225,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -245,6 +246,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/cxrefbas.1 b/cxrefbas.1
index c9a705f..893d47b 100644
--- a/cxrefbas.1
+++ b/cxrefbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CXREFBAS" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "CXREFBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
cxrefbas \- Code cross-reference for tokenized Atari 8-bit BASIC files
.SH SYNOPSIS
@@ -154,8 +154,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -174,6 +175,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/dasm2atasm.1 b/dasm2atasm.1
index e67f694..18f0100 100644
--- a/dasm2atasm.1
+++ b/dasm2atasm.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DASM2ATASM" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "DASM2ATASM" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
dasm2atasm \- Convert 6502 assembly source from dasm syntax to atasm or ca65 syntax.
.\" RST source for dasm2atasm(1) man page. Convert with:
@@ -223,8 +223,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -243,6 +244,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/dumpbas.1 b/dumpbas.1
index 5867bf4..7eff370 100644
--- a/dumpbas.1
+++ b/dumpbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DUMPBAS" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "DUMPBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
dumpbas \- Formatted hexdump for tokenized Atari 8-bit BASIC files
.SH SYNOPSIS
@@ -204,8 +204,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -224,6 +225,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/fenders.1 b/fenders.1
index 2cc4dcf..9aa9651 100644
--- a/fenders.1
+++ b/fenders.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "FENDERS" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "FENDERS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
fenders \- Install Fenders 3-sector loader in boot sectors of an ATR image
.\" RST source for fenders(1) man page. Convert with:
@@ -270,8 +270,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -290,6 +291,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/listbas.1 b/listbas.1
index a22e490..cf16a93 100644
--- a/listbas.1
+++ b/listbas.1
@@ -27,25 +27,24 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "LISTBAS" 1 "2024-06-26" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "LISTBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
listbas \- List the source of a tokenized Atari 8-bit BASIC program
.SH SYNOPSIS
.sp
-listbas [\fB\-v\fP] [\fB\-i\fP] [\fB\-a\fP | \fB\-u\fP ] \fBinput\-file\fP
+listbas [\fB\-v\fP] [\fB\-i\fP] [\fB\-a\fP | \fB\-m\fP ] \fBinput\-file\fP
.SH DESCRIPTION
.sp
\fBlistbas\fP acts like the \fILIST\fP command in BASIC. It reads a
tokenized (SAVEd) BASIC program and prints the code in human\-readable
format.
.sp
-By default, output is piped through \fBa8eol\fP(1), to convert ATASCII
-characters to human\-readable sequences. Raw ATASCII and Unicode output
-are also available.
+By default, output is piped through \fBa8cat\fP(1), to covert ATASCII
+characters into Unicode equivalents. Raw ATASCII and "magazine listing"
+mode are also available.
.sp
-\fBa8eol\fP(1) and \fBa8utf8\fP(1) (for \fB\-u\fP) are run as external
-processes. The executables are searched for first in the current
-directory, and then in \fIPATH\fP\&.
+\fBa8cat\fP is run as an external processe. The executables is searched
+for first in the current directory, and then in \fIPATH\fP\&.
.SH OPTIONS
.SS List options
.INDENT 0.0
@@ -57,8 +56,9 @@ Include the immediate mode command (line 32768) in the output.
Output raw ATASCII; no translation to the host character set. Must be
used with redirection; \fBlistbas\fP will not write ATASCII to the terminal.
.TP
-.B \fB\-u\fP
-Use \fBa8utf8\fP(1) to translate ATASCII to ASCII.
+.B \fB\-m\fP
+Output "magazine listing". Pipes output through \fBa8cat \-m\fP; see the man
+page for \fBa8cat\fP for details.
.UNINDENT
.SS General Options
.INDENT 0.0
@@ -88,9 +88,10 @@ protection.
\fBlistbas\fP doesn\(aqt show information about the variables. Use \fBvxrefbas\fP(1)
for that.
.IP \(bu 2
-\fBlistbas\fP will not write ATASCII data to your terminal. Instead, it uses
-\fBa8eol\fP(1) or \fBa8utf8\fP(1) to convert the output to something human\-readable
-that won\(aqt confuse the terminal.
+\fBlistbas\fP will not write ATASCII data to your terminal. By default, it uses
+\fBa8cat\fP(1) to convert the output to something human\-readable
+that won\(aqt confuse the terminal. When outputting raw ATASCII (\fB\-a\fP option),
+it refuses to run if standard output is a terminal.
.IP \(bu 2
\fBlistbas\fP only lists line 32768 (the immediate mode command) if
specifically asked to do so.
@@ -113,8 +114,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -133,6 +135,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/listbas.c b/listbas.c
index a278bd7..9577cec 100644
--- a/listbas.c
+++ b/listbas.c
@@ -12,7 +12,7 @@
#include "bcdfp.h"
#include "tokens.h"
-int immediate = 0, a8utf8 = 0, a8eol = 1;
+int immediate = 0, a8cat = 1, magazine = 0;
FILE *outfh;
@@ -21,18 +21,19 @@ void print_help(void) {
printf(" -v: verbose.\n");
printf(" -i: show immediate mode command (line 32768).\n");
printf(" -a: output raw ATASCII.\n");
- printf(" -u: output Unicode.\n");
+ printf(" -m: magazine style listing (see a8cat(1)).\n");
}
void parse_args(int argc, char **argv) {
int opt;
- while( (opt = getopt(argc, argv, "viau")) != -1) {
+ while( (opt = getopt(argc, argv, "viamh")) != -1) {
switch(opt) {
case 'v': verbose = 1; break;
case 'i': immediate = 1; break;
- case 'a': a8utf8 = a8eol = 0; break;
- case 'u': a8utf8 = 1; a8eol = 0; break;
+ case 'a': a8cat = magazine = 0; break;
+ case 'm': a8cat = magazine = 1; break;
+ case 'h': print_help(); exit(0);
default:
print_help();
exit(1);
@@ -50,10 +51,11 @@ void setup_outfh(void) {
/* search current dir before PATH. no easy way to detect errors here,
have to wait until we call pclose(). */
- if(a8eol) {
- cmd = "./a8eol -u -c 2>/dev/null || a8eol -u -c 2>/dev/null || exit 1";
- } else if(a8utf8) {
- cmd = "./a8utf8 2>/dev/null || a8utf8 2>/dev/null || exit 1";
+ if(a8cat) {
+ if(magazine)
+ cmd = "./a8cat -m 2>/dev/null || a8cat -m 2>/dev/null || exit 1";
+ else
+ cmd = "./a8cat 2>/dev/null || a8cat 2>/dev/null || exit 1";
} else {
if(isatty(fileno(stdout))) {
die("Refusing to write ATASCII data to the terminal.");
@@ -72,9 +74,9 @@ void setup_outfh(void) {
}
void close_outfh(void) {
- if(a8eol || a8utf8) {
+ if(a8cat) {
if(pclose(outfh)) {
- die("output filter failed; a8eol or a8utf8 not in current dir or $PATH.");
+ die("output filter failed; a8cat not in current dir or $PATH.");
}
}
}
diff --git a/listbas.rst b/listbas.rst
index c4a937a..d6d17b1 100644
--- a/listbas.rst
+++ b/listbas.rst
@@ -11,7 +11,7 @@ List the source of a tokenized Atari 8-bit BASIC program
SYNOPSIS
========
-listbas [**-v**] [**-i**] [**-a** | **-u** ] **input-file**
+listbas [**-v**] [**-i**] [**-a** | **-m** ] **input-file**
DESCRIPTION
===========
@@ -20,13 +20,12 @@ DESCRIPTION
tokenized (SAVEd) BASIC program and prints the code in human-readable
format.
-By default, output is piped through **a8eol**\(1), to convert ATASCII
-characters to human-readable sequences. Raw ATASCII and Unicode output
-are also available.
+By default, output is piped through **a8cat**\(1), to covert ATASCII
+characters into Unicode equivalents. Raw ATASCII and "magazine listing"
+mode are also available.
-**a8eol**\(1) and **a8utf8**\(1) (for **-u**) are run as external
-processes. The executables are searched for first in the current
-directory, and then in *PATH*.
+**a8cat** is run as an external processe. The executables is searched
+for first in the current directory, and then in *PATH*.
OPTIONS
=======
@@ -41,8 +40,9 @@ List options
Output raw ATASCII; no translation to the host character set. Must be
used with redirection; **listbas** will not write ATASCII to the terminal.
-**-u**
- Use **a8utf8**\(1) to translate ATASCII to ASCII.
+**-m**
+ Output "magazine listing". Pipes output through **a8cat -m**; see the man
+ page for **a8cat** for details.
.. include:: genopts.rst
@@ -61,9 +61,10 @@ protection.
- **listbas** doesn't show information about the variables. Use **vxrefbas**\(1)
for that.
-- **listbas** will not write ATASCII data to your terminal. Instead, it uses
- **a8eol**\(1) or **a8utf8**\(1) to convert the output to something human-readable
- that won't confuse the terminal.
+- **listbas** will not write ATASCII data to your terminal. By default, it uses
+ **a8cat**\(1) to convert the output to something human-readable
+ that won't confuse the terminal. When outputting raw ATASCII (**-a** option),
+ it refuses to run if standard output is a terminal.
- **listbas** only lists line 32768 (the immediate mode command) if
specifically asked to do so.
diff --git a/manftr.rst b/manftr.rst
index bdc3e58..6ec4525 100644
--- a/manftr.rst
+++ b/manftr.rst
@@ -11,29 +11,31 @@ B. Watson <urchlay@slackware.uk>; Urchlay on irc.libera.chat *##atari*.
SEE ALSO
========
-**a8eol**\(1),
-**a8utf8**\(1),
-**atr2xfd**\(1),
-**atrsize**\(1),
+**a8cat**\(1),
+**a8eol**\(1),
+**a8xd**\(1),
+**atr2xfd**\(1),
+**atrsize**\(1),
**axe**\(1),
-**blob2c**\(1),
-**blob2xex**\(1),
-**cart2xex**\(1),
-**cxrefbas**\(1),
-**dasm2atasm**\(1),
-**dumpbas**\(1),
-**f2toxex**\(1),
-**fenders**\(1),
+**blob2c**\(1),
+**blob2xex**\(1),
+**cart2xex**\(1),
+**cxrefbas**\(1),
+**dasm2atasm**\(1),
+**dumpbas**\(1),
+**f2toxex**\(1),
+**fenders**\(1),
**listbas**\(1),
**protbas**\(1),
-**renumbas**\(1),
-**rom2cart**\(1),
+**renumbas**\(1),
+**rom2cart**\(1),
**unmac65**\(1),
**unprotbas**\(1),
**vxrefbas**\(1),
-**xexamine**\(1),
-**xexcat**\(1),
-**xexsplit**\(1),
+**xex1to2**\(1),
+**xexamine**\(1),
+**xexcat**\(1),
+**xexsplit**\(1),
**xfd2atr**\(1),
**xex**\(5),
**atascii**\(7).
diff --git a/protbas.1 b/protbas.1
index 59c249c..6d60f3d 100644
--- a/protbas.1
+++ b/protbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "PROTBAS" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "PROTBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
protbas \- LIST-protect Atari 8-bit BASIC programs
.SH SYNOPSIS
@@ -111,8 +111,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -131,6 +132,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/renumbas.1 b/renumbas.1
index c0284a5..9252335 100644
--- a/renumbas.1
+++ b/renumbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "RENUMBAS" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "RENUMBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
renumbas \- Renumber Atari 8-bit BASIC programs
.SH SYNOPSIS
@@ -173,8 +173,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -193,6 +194,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/rom2cart.1 b/rom2cart.1
index bf5551d..bba640b 100644
--- a/rom2cart.1
+++ b/rom2cart.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ROM2CART" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ROM2CART" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
rom2cart \- Convert a raw ROM image to an Atari800 CART image, or vice versa
.\" RST source for rom2cart(1) man page. Convert with:
@@ -239,8 +239,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -259,6 +260,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/unmac65.1 b/unmac65.1
index 64dd41d..6a1598e 100644
--- a/unmac65.1
+++ b/unmac65.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "UNMAC65" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "UNMAC65" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
unmac65 \- Detokenize Atari 8-bit Mac/65 SAVEd files.
.\" RST source for unmac65(1) man page. Convert with:
@@ -371,8 +371,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -391,6 +392,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/unprotbas.1 b/unprotbas.1
index b6655e7..c521116 100644
--- a/unprotbas.1
+++ b/unprotbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "UNPROTBAS" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "UNPROTBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
unprotbas \- Unprotect LIST-protected Atari 8-bit BASIC programs
.SH SYNOPSIS
@@ -338,8 +338,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -358,6 +359,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/vxrefbas.1 b/vxrefbas.1
index 2038878..5804aa5 100644
--- a/vxrefbas.1
+++ b/vxrefbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "VXREFBAS" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "VXREFBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
vxrefbas \- Variable cross-reference for tokenized Atari 8-bit BASIC files
.SH SYNOPSIS
@@ -114,8 +114,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -134,6 +135,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/xex.5 b/xex.5
index 8400444..b44a612 100644
--- a/xex.5
+++ b/xex.5
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEX" 5 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEX" 5 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
xex \- Atari 8-bit executable file format.
.\" RST source for xex(5) man page. Convert with:
@@ -298,8 +298,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -318,6 +319,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/xex1to2.1 b/xex1to2.1
index 7ad599b..89d1698 100644
--- a/xex1to2.1
+++ b/xex1to2.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEX1TO2" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEX1TO2" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
xex1to2 \- Convert an Atari DOS 1.0 executable to a standard Atari executable
.\" RST source for xex1to2(1) man page. Convert with:
@@ -72,8 +72,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -92,6 +93,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/xexamine.1 b/xexamine.1
index 56fbc2b..31f8283 100644
--- a/xexamine.1
+++ b/xexamine.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEXAMINE" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEXAMINE" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
xexamine \- Show information on Atari 8-bit executables (XEX)
.\" RST source for xexamine(1) man page. Convert with:
@@ -130,8 +130,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -150,6 +151,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/xexcat.1 b/xexcat.1
index 9925c07..9c9a441 100644
--- a/xexcat.1
+++ b/xexcat.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEXCAT" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEXCAT" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
xexcat \- Concatenate Atari 8-bit executables (XEX) into a single XEX file.
.\" RST source for xexcat(1) man page. Convert with:
@@ -190,8 +190,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -210,6 +211,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/xexsplit.1 b/xexsplit.1
index 35727b1..e31ec48 100644
--- a/xexsplit.1
+++ b/xexsplit.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEXSPLIT" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEXSPLIT" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
xexsplit \- Split a multi-segment Atari 8-bit executable (XEX) into multiple single-segment files.
.\" RST source for xexsplit(1) man page. Convert with:
@@ -183,8 +183,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -203,6 +204,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
diff --git a/xfd2atr.1 b/xfd2atr.1
index 3ca34ea..9b23a6d 100644
--- a/xfd2atr.1
+++ b/xfd2atr.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XFD2ATR" 1 "2024-06-25" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XFD2ATR" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
.SH NAME
xfd2atr \- Convert an Atari 8-bit XFD (raw) disk image to an ATR image.
.\" RST source for xfd2atr(1) man page. Convert with:
@@ -111,8 +111,9 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
.UNINDENT
.SH SEE ALSO
.sp
+\fBa8cat\fP(1),
\fBa8eol\fP(1),
-\fBa8utf8\fP(1),
+\fBa8xd\fP(1),
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
@@ -131,6 +132,7 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),