development/zooey: Added (6502 cross-assembler for Atari 8-bit)

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2022-12-28 17:42:25 +00:00 committed by Willy Sudiarto Raharjo
parent 1f4cc25436
commit 2472b8b7d6
No known key found for this signature in database
GPG key ID: 3F617144D7238786
5 changed files with 579 additions and 0 deletions

10
development/zooey/README Normal file
View file

@ -0,0 +1,10 @@
zooey (6502 cross-assembler for Atari 8-bit systems)
ZooEY is a cross assembler designed for 6502 processors. Binaries
are generated specially for 8-bit Atari systems (Atari DOS II and
SpartaDOS X formats supported). This tool is compatible with Quick
Assembler, one of most popular assemblers in Poland.
Also included are atari2unix and unix2atari (convert text files
between Atari and Unix line-endings) and syntax highlighting for
Midnight Commander (mcedit).

View file

@ -0,0 +1,447 @@
diff -Naur zooey-1.4.orig/zooey.1 zooey-1.4/zooey.1
--- zooey-1.4.orig/zooey.1 2006-12-29 06:17:20.000000000 -0500
+++ zooey-1.4/zooey.1 2022-12-27 19:45:47.730325765 -0500
@@ -3,66 +3,65 @@
ZooEY \- 6502 crossassembler.
.SH SYNOPSIS
-.B zooey
- [\fIOPTIONS\fR] source
+.B zooey \fB\-o output\fR [\fIOPTIONS\fR] \fBsource\fR
.SH DESCRIPTION
.PP
ZooEY is a crossassembler designed for 6502 processors. Binaries are generated specially for
-8-bit Atari systems (Atari DOS II and SpartaDOS X formats supported). This tool is
+8\-bit Atari systems (Atari DOS II and SpartaDOS X formats supported). This tool is
compatible with Quick Assembler, one of most popular assemblers in Poland.
.SH OPTIONS
.TP
-\fB\ -d\fR
+\fB\ \-d\fR
More information about assembly process.
.TP
-\fB\ -h\fR
+\fB\ \-h\fR
Help.
.TP
-\fB\ -i path\fR
-Add directory to search path for icl files. Order is: current dir is first, next is first -i path,
-second -i path and next.
+\fB\ \-i path\fR
+Add directory to search path for icl files. Order is: current dir is first, next is first \-i path,
+next is second \-i path, etc.
.TP
-\fB\ -l filename\fR
+\fB\ \-l filename\fR
Generate labels report. Each line consists of 5 fields:
label name, decimal value, hexadecimal value, declaration line number and
(optional) additional information.
-In last filed can be two values: 'Reloc' means that label is relocable. 'Unused' means
+In last field can be two values: 'Reloc' means that label is relocatable. 'Unused' means
that label is unused.
.TP
-\fB\ -m\fR
+\fB\ \-m\fR
Check memory collisions. You can check collisions only with 'd' and 's' block types.
All other blocks are ignored.
.TP
-\fB\ -o filename\fR
-Output fle name.
+\fB\ \-o filename\fR
+Output file name.
.TP
-\fB\ -r\fR
-Remove previously created file if assembly fail. Name is taken from \fI-o\fR option.
+\fB\ \-r\fR
+Remove previously created file if assembly fails. Name is taken from \fI\-o\fR option.
.TP
-\fB\ -s\fR
+\fB\ \-s\fR
Turn on SpartaDOS X filenames for ICL directive. Ordinary paths looks like 'D2:filename.ext'.
If you have sources from SDX, your paths' syntax may be like 'D:>dir1>dir2>filename.ext'.
All included file must be in current directory.
.TP
-\fB\ -v\fR
-Prints version and exit.
+\fB\ \-v\fR
+Prints version and exits.
.TP
-\fB\ -w\fR
+\fB\ \-w\fR
Turn display warnings on.
.TP
-\fB\ -z\fR
+\fB\ \-z\fR
Turn off QA strange behavior. Currently works:
.br
-- pseudodirective \fIend\fR used in file included by \fIicl\fR conclude current file and back
+\- pseudodirective \fIend\fR used in file included by \fIicl\fR conclude current file and back
to previous file, not to main,
-- pseudodirectove \fIopt\fR are not skipped in file included by \fIicl\fR.
+\- pseudodirectove \fIopt\fR are not skipped in file included by \fIicl\fR.
.SH QA INCOMPATIBILITIES
ZooEY is a Quick Assembler descendant. As such it should work well with
-any code written natively with Quick Assembler. However when porting some
+any code written natively with Quick Assembler. However, when porting some
code from original QA sources, you have to be aware that not all options
of native OPT directive are supported. Those that work are generating
binary headers and generating source printout. For details, look at pseudo
@@ -70,51 +69,51 @@
.SH VALUES AND TYPES
-A numeric value is a number from 0 to $FFFF (0-65535).
+A numeric value is a number from 0 to $FFFF (0\-65535).
It can be put down in any of the following ways, which
defines how it is treated by the assembler:
.RS 0
-.B - \fI:lda 2000,x\fR
+.B \- \fI:lda 2000,x\fR
generates opcode of the mnemonic in specified addressing mode,
.BR
.br
-.B - \fI<$2000\fR
+.B \- \fI<$2000\fR
generates LSB of the word,
.BR
.br
-.B - \fI>$2000\fR
+.B \- \fI>$2000\fR
generates MSB of the word,
.BR
.br
-.B - \fI'A'\fR
+.B \- \fI'A'\fR
generates an ATASCII/ASCII code of the value,
.BR
.br
-.B - \fI'A'*\fR
+.B \- \fI'A'*\fR
generates an ATASCII/ASCII code of the value +128 (highest bit inverted),
.BR
.br
-.B - \fI"A"\fR
+.B \- \fI"A"\fR
generates an internal code of the value,
.BR
.br
-.B - \fI"A"*\fR
+.B \- \fI"A"*\fR
generates an internal code of the value +128 (highest bit inverted),
.BR
.br
-.B - \fI*\fR
-current PC (Program Counter) value. This is a 16-bit value,
+.B \- \fI*\fR
+current PC (Program Counter) value. This is a 16\-bit value,
.BR
.br
-.B - \fI$1010\fR
+.B \- \fI$1010\fR
a hex representation of the value,
.BR
.br
-.B - \fI%1010\fR
+.B \- \fI%1010\fR
a binary representation of the value,
.BR
.br
-.B - \fI1010\fR
+.B \- \fI1010\fR
a decimal representation of the value.
.BR
.TP
@@ -128,8 +127,8 @@
multiplication, division, modulo, division,
.BR
.br
-.B \fI+ -\fR
-addition, substraction,
+.B \fI+ \-\fR
+addition, subtraction,
.BR
.br
.B \fI< >\fR
@@ -158,8 +157,8 @@
.SH MACROS
-Macro must be enclosed in \fImac\fR and \fIenm\fR directives.
-And the macro arguments must start with \\ and
+A macro must be enclosed in \fImac\fR and \fIenm\fR directives.
+The macro arguments must start with \\ and
be decimal numbers which correspond to macro argument
sequence. To use a macro you just call its name and arguments
like: macro_name arg1,arg...,argN.
@@ -181,12 +180,12 @@
.br
enm
.PP
-.RS -7
+.RS \-7
Using the macro:
.br
.RS 7
blah $2000,$2001
-.RS -7
+.RS \-7
.PP
The above macro will be unrolled by assembler into:
.br
@@ -202,7 +201,7 @@
.RS 4
.ifdef value
.br
- .if codition
+ .if condition
.br
.elif condition
.br
@@ -210,7 +209,7 @@
.br
.fi
.br
-.RS -4
+.RS \-4
where 'condition' is any arithmetic or logical argument, and 'value' is const symbol defined or not.
.br
An example:
@@ -225,26 +224,26 @@
.br
cmp 20
.br
-beq *-2
-.RS -3
+beq *\-2
+.RS \-3
.fi
.SH ADDITIONAL DIRECTIVES
Those two are automatic. I.e assembler recognizes the EOLs anyway.
-If, for some reason the assembler can't parse the EOLs, those directive can
+If, for some reason the assembler can't parse the EOLs, these directives can
force it into a specified EOL mode.
.RS 0
.B \fI.atari\fR
-forces the assembler to assume that the sourcefile has atari EOLs (9B)
+forces the assembler to assume that the sourcefile has Atari EOLs (9B)
.BR
.br
.B \fI.unix\fR
-forces the assembler to assume that the sourcefile has unix EOLs (0A)
+forces the assembler to assume that the sourcefile has Unix EOLs (0A)
.BR
.PP
The assembling of unpublished (illegal) or extended (65C02) instructions.
-By default Zooey uses the op-code list of a generic vanilla MOS6502.
+By default Zooey uses the op\-code list of a generic vanilla MOS6502.
If you want to extend the instruction set use the following:
.RS 0
.B \fI.65c02\fR
@@ -261,7 +260,7 @@
.PP
.B \fIbin 'fname'[,A[,B]]\fR
includes contents of the file 'fname'.
-If A is present - readout starts at the offset A, if B is present,
+If A is present \- readout starts at the offset A, if B is present,
B bytes of file are read in.
.BR
.PP
@@ -275,33 +274,33 @@
.BR
.RS 5
.br
-.B - a
-- address - 16-bit value.
-You can write adresses in a row like this: 'dta a(1,2,3,4)',
+.B \- a
+\- address \- 16\-bit value.
+You can write addresses in a row like this: 'dta a(1,2,3,4)',
.BR
.br
-.B - b
-- byte - 8-bit value,
+.B \- b
+\- byte \- 8\-bit value,
.BR
.br
-.B - c
-- ATASCII/ASCII code(s) for given argument e.g. dta c'ABCD',
+.B \- c
+\- ATASCII/ASCII code(s) for given argument e.g. dta c'ABCD',
.BR
.br
-.B - d
-- Internal Antic Character code(s) for given argument,
+.B \- d
+\- Internal Antic Character code(s) for given argument,
.BR
.br
-.B - h
-- MSB of argument,
+.B \- h
+\- MSB of argument,
.BR
.br
-.B - l
-- LSB of argument,
+.B \- l
+\- LSB of argument,
.BR
.br
-.B - v
-- vector - 16bit value, relocatable.
+.B \- v
+\- vector \- 16bit value, relocatable.
.BR
.br
\fINOTICE\fR: Relocatable values work only when declared indirectly
@@ -309,86 +308,86 @@
.br
Example:
.br
-dta v($1000) - unrelocatable vector value (constant)
+dta v($1000) \- unrelocatable vector value (constant)
.br
-dta v(*) - relocatable vector value
+dta v(*) \- relocatable vector value
.br
-dta v(*+100) - relocatable, if inside a relocatable block.
-.RS -5
+dta v(*+100) \- relocatable, if inside a relocatable block.
+.RS \-5
.PP
.B \fImem A,B\fR
define(reserve) memory block started at A and size B. Usefull only
-with \fI-m\fR option (memory checking).
+with \fI\-m\fR option (memory checking).
.PP
.B \fIopt\fR
-assembling options. You can use a number, p+ and p- as arguments.
+assembling options. You can use a number, p+ and p\- as arguments.
.RS 5
.br
-.B - a number
-is a value from 0 to 255 (compatible with QA opt -
+.B \- a number
+is a value from 0 to 255 (compatible with QA opt \-
but not all bit setups are supported),
.BR
.br
-.B - p+, p-
+.B \- p+, p\-
source printout on and off.
.BR
.br
-.B - h+, h-
+.B \- h+, h\-
standard DOS header (FFFF) on and off.
-.RS -5
+.RS \-5
.PP
.B \fIorg\fR
binary header block generation (interchangable with 'blk').
The parameters are:
.RS 5
.br
-.B - addr
-- address (exactly like in QA),
+.B \- addr
+\- address (exactly like in QA),
.BR
.br
-.B - n,addr
-- headerless block, beginning with addr,
+.B \- n,addr
+\- headerless block, beginning with addr,
.BR
.br
-.B - d,addr<,addr2>
-- a generic DOS block with FFFF header.
-Source is assembled from addr. If addr2 is provided, the block addres is addr2.
+.B \- d,addr<,addr2>
+\- a generic DOS block with FFFF header.
+Source is assembled from addr. If addr2 is provided, the block address is addr2.
.BR
.br
-.B - e,[m|e],size
-- dummy block. Reserves a memory block in lowmem or xms.
+.B \- e,[m|e],size
+\- dummy block. Reserves a memory block in lowmem or xms.
Does not contain data, only reserves address space of size 'size',
.BR
.br
-.B - s,addr
-- generic Sparta block with FAFF header. Symbols and jumps
+.B \- s,addr
+\- generic Sparta block with FAFF header. Symbols and jumps
to 'r' type block are supported.
After using the two, one must use 'u,a' and 'u,s' blocks
(using the same rules as apply for 'r' type blocks),
.BR
.br
-.B - r,[m|e]
-- relocatable sparta block with FEFF header.
+.B \- r,[m|e]
+\- relocatable sparta block with FEFF header.
After the last 'r' block, you must use 'u,a' block(s).
-And, if you used symbols - 'u,s' block(s),
+And, if you used symbols \- 'u,s' block(s),
.BR
.br
-.B - u,a
-- address update block (must follow 'r' block - see above),
+.B \- u,a
+\- address update block (must follow 'r' block \- see above),
.BR
.br
-.B - u,s
-- symbol update block (must follow 'r' block - see above),
+.B \- u,s
+\- symbol update block (must follow 'r' block \- see above),
.BR
.br
-.B - u,n,'name',addr
-- symbol declaration block. Defines symbol 'name' (max 8 chars) beginning at addr.
+.B \- u,n,'name',addr
+\- symbol declaration block. Defines symbol 'name' (max 8 chars) beginning at addr.
.BR
.PP
-.RS -5
+.RS \-5
.B \fIsin A,B[,C]\fR
generates a sine table with MAX of A and table length of B.
-The aplitude level is at 0 or C (if specified).
+The amplitude level is at 0 or C (if specified).
.BR
.PP
.B \fIsmb\fR
@@ -419,7 +418,7 @@
.PP
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111\-1307 USA
.SH AUTHORS
.TP
@@ -430,12 +429,12 @@
Testing and documentation.
.SH REPORTING BUGS
-Report bugs to <zooey-devel@lists.sourceforge.net>.
+Report bugs to <zooey\-devel@lists.sourceforge.net>.
.SH EXIT CODES
0 assembly OK,
.br
-1 warnigs (if displayed),
+1 warnings (if displayed),
.br
2 errors,
.br

View file

@ -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------------------------------------------------------|
zooey: zooey (6502 cross-assembler for Atari 8-bit systems)
zooey:
zooey: ZooEY is a cross assembler designed for 6502 processors. Binaries
zooey: are generated specially for 8-bit Atari systems (Atari DOS II and
zooey: SpartaDOS X formats supported). This tool is compatible with Quick
zooey: Assembler, one of most popular assemblers in Poland.
zooey:
zooey: Also included are atari2unix and unix2atari (convert text files
zooey: between Atari and Unix line-endings) and syntax highlighting for
zooey: Midnight Commander (mcedit).
zooey:

View file

@ -0,0 +1,93 @@
#!/bin/bash
# Slackware build script for zooey
# 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=zooey
VERSION=${VERSION:-1.4}
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
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tgz
cd $PRGNAM-$VERSION
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 {} \+
# Use our CFLAGS and man page path (hate when it's hardcoded).
sed -i -e "/CFLAGS/s,-O2,$SLKCFLAGS," \
-e 's,share/man,man,g' Makefile
# Fix some typos and formatting errors in the man page.
patch -p1 < $CWD/manpagefixes.diff
# Author's name in the source is hard-coded ISO-8859-2. The Polish
# l-with-slash in "zooey -h" output displays as a superscript 3 in an
# ISO-8859-1 (Latin-1 or Windows-1232) terminal, or just gibberish in
# a UTF-8 terminal. Make it UTF-8 in the source.
mv $PRGNAM.c $PRGNAM.c.orig
iconv -f iso-8859-2 -t utf-8 $PRGNAM.c.orig > $PRGNAM.c
make $PRGNAM
make install PREFIX=$PKG/usr
# Binary is already stripped.
gzip -9 $PKG/usr/man/man?/*.?
# mcedit (midnight commander) syntax support, untested by SlackBuild
# author. Wish there was one for vim...
mkdir -p $PKG/usr/share/mc/syntax
install -m0644 asm.syntax $PKG/usr/share/mc/syntax
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKGDOC
install -m0644 ChangeLog ToDo $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE

View file

@ -0,0 +1,10 @@
PRGNAM="zooey"
VERSION="1.4"
HOMEPAGE="https://atari8.sourceforge.net/zooey.html"
DOWNLOAD="https://downloads.sourceforge.net/project/atari8/zooey/Zooey-1.4/zooey-1.4.tgz"
MD5SUM="a3d78e15f21f6e68fc55e83212c01f72"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
EMAIL="urchlay@slackware.uk"