edwards@uab.edu (John Edwards) (12/20/89)
INFO:
John Edwards, jr. sys. prog., UAB, edwards%uab.edu@relay.cs.net
gcc version 1.36.1 (based on GCC 1.36)
Used m68k.md and tm-sun3.h.
Compiled on Sun 3/280 running SunOS 4.0.3
Note:I included as much info in this mail as possible w/o sending you the works
and w/ limited space/time I have to work with.
SYNOPSIS:
When compiling libg++.a, got 'invalid operand' error from Sun 'as' for '.stab'
symbol table directives in builtin, BitString, EH, Rational, String, and stream.
Here's script of compilation where error occurred:
Script started on Tue Dec 5 09:43:36 198
cisa(12)% make src/libg++.a
(cd src; make GXX="/export/root/c++/bin/g++" GXXFLAGS=" -I/export/root/c++/libg++/g++-include -g -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -Wall -v " GXXLDFLAGS="-L/export/root/c++/libg++/src -lg++ -lm
" LIBDIR="/export/root/c++/lib" SRCIDIR="/export/root/c++/libg++/g++-include" CC="/export/root/c++/bin/gcc" CFLAGS=" -I/export/root/c++/lib/gcc-include -I/usr/include -I/export/root/c++/libg++/g++-include -g -O -fstrength-reduce -fdelayed-branch -Wall -
v " RANLIB="ranlib" LDXX="/export/root/c++/lib/gcc-ld" GXXCRT1="/export/root/c++/lib/crt1+.o" MAKE="make" prefix="/export/root/c++" )
/export/root/c++/bin/g++ -I/export/root/c++/libg++/g++-include -g -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -Wall -v -c builtin.cc
gcc version 1.36.1 (based on GCC 1.36)
/export/root/c++/lib/gcc-cpp -+ -v -I/export/root/c++/libg++/g++-include -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__OPTIMIZE__ -Wall -D__HAVE_68881__ -Dmc68020 builtin.cc /usr/tmp/cca20040.cpp
GNU CPP version 1.36
/export/root/c++/lib/gcc-cc1plus /usr/tmp/cca20040.cpp -quiet -dumpbase builtin.cc -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -g -O -Wall -version -o /usr/tmp/cca20040.s
GNU C++ version 1.36.1 (based on GCC 1.36) (68k, MIT syntax) compiled by GNU C version 1.36.
default target switches: -m68020 -mc68020 -m68881 -mbitfield
builtin.cc: In function char *dtoa (double, char (= 103 ), int (= 0 ), int (= 6 )):
builtin.cc:499: warning: unused variable `carry'
builtin.cc:386: warning: unused variable `fworkend'
/export/root/c++/libg++/g++-include/time.h: At top level:
In file included from /export/root/c++/libg++/g++-include/osfcn.h:4, from builtin.cc:763:
/export/root/c++/libg++/g++-include/time.h:60: warning: type declaration of timezone shadows previous declaration
/export/root/c++/libg++/g++-include/time.h:60: warning: `timezone' was declared `extern' and later `static'
builtin.cc:848: warning: structure has no data members
as -mc68020 -o builtin.o /usr/tmp/cca20040.s
as: error (/usr/tmp/cca20040.s:2415): Invalid operand
as: error (/usr/tmp/cca20040.s:2442): Invalid operand
*** Error code 1
make: Fatal error: Command failed for target `builtin.o'
Current working directory /export/root/c++/libg++/src
*** Error code 1
make: Fatal error: Command failed for target `src/libg++.a'
13.0u 2.7s 0:26 58% 0+384k 85+37io 203pf+0w
cisa(13)% exit
cisa(14)%
script done on Tue Dec 5 09:44:21 198
Here's script of separate compilation of 'trouble' files.
Script started on Tue Dec 19 14:58:46 198
cisa(41)% as -mc68020 -o Bitstring.o BitString.s
as: error (BitString.s:5464): Invalid operand
as: error (BitString.s:5474): Invalid operand
cisa(42)% as -mc68020 -o EH.o EH.s
as: error (EH.s:81): Invalid operand
as: error (EH.s:92): Invalid operand
cisa(43)% as -mc68020 -o Rational.o Rational.s
as: error (Rational.s:2929): Invalid operand
as: error (Rational.s:2945): Invalid operand
cisa(44)% as -mc68020 -o String.o String.s
as: error (String.s:5092): Invalid operand
as: error (String.s:5186): Invalid operand
cisa(45)% as -mc68020 -o stream.o stream.s
as: error (stream.s:2275): Invalid operand
as: error (stream.s:2299): Invalid operand
cisa(46)% exit
cisa(47)%
script done on Tue Dec 19 15:01:10 198
Here's the Makefile in libg++ I made a few changes to possibly:
# Makefile for g++ library version 1.36.1
# Copyright (C) 1989 Free Software Foundation, Inc.
# written by Doug Lea (dl@rocky.oswego.edu)
#This file is part of GNU libg++.
#GNU libg++ is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 1, or (at your option)
#any later version.
#GNU libg++ is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with GNU libg++; see the file COPYING. If not, write to
#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
###########################################################################
#
# Directories, paths, compilation flags and program names.
#
# Please make sure these are correct.
#
# ------ source locations
# Manually set PWD to *this* directory if you are not using gnu make
# source include directory
SRCIDIR= /export/root/c++/libg++/g++-include
# ------ installation destinations
# ------ You will require write-permission on the destination directories
# ------ in order to `make install'
# set `prefix' to something else if you want to install things
# in nonstandard places
prefix =/export/root/c++
# libg++.a destination
LIBDIR = $(prefix)/lib
# executables directory: location to install the genclass class generator
BINDIR = $(prefix)/bin
# location to install include file directory
IDIR = $(prefix)/lib/g++-include
# ------- System-dependent defines
# ------- use the second form of each for SystemV (USG)
# g++ flags
OSFLAG= -Dsun3
#OSFLAG = -DUSG
# use this only if you have a strange stdio implementation
# -- recommended for DGUX and HPUX
#OSFLAG = -DDEFAULT_filebuf
# use this if you do not want gnulib3 in libg++.a
#OSFLAG = -DNO_GNULIB3
# ld or ld++ flags
OSLDFLAG =
#OSLDFLAG= -lPW
# how to install
INSTALL=install -c
#INSTALL=cp
# ranlib if necessary
RANLIB=ranlib
#RANLIB=echo
# which make?
MAKE=make
# not used, but convenient for those who preprocess things while compiling
SHELL=/bin/sh
# ------ compiler names
# GNU C++ compiler name
GXX = /export/root/c++/bin/g++
#GXX=gcc
# GNU CC compiler name (needed for some .c files in libg++.a)
CC = /export/root/c++/bin/gcc
# GNU loader
LDXX = $(LIBDIR)/gcc-ld
#LDXX = $(LIBDIR)/gcc-ld++
# crt0+.o location (for dynamic loading tests)
GXXCRT1=$(LIBDIR)/crt1+.o
# ------ Other compilation flags
# ------ modify as you like -- the ones here are sheer overkill
#GXX_OPTIMIZATION_FLAGS= -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized
GXX_OPTIMIZATION_FLAGS= -O
#GCC_OPTIMIZATION_FLAGS= -O -fstrength-reduce -fdelayed-branch
GCC_OPTIMIZATION_FLAGS= -O
DEBUG_FLAGS=
#use this only if you like to look at lots of useless messages
#VERBOSITY_FLAGS= -v
VERBOSITY_FLAGS= -Wall -v
GXX_INCLUDE_DIRS= -I$(SRCIDIR)
GCC_INCLUDE_DIRS= -I$(prefix)/lib/gcc-include -I/usr/include -I$(SRCIDIR)
# Don't want pipe if using as
#PIPE_AS= -pipe
# Flags for all C++ compiles
GXXFLAGS = $(OSFLAG) $(GXX_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GXX_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)
# Flags for all C compiles
CFLAGS= $(OSFLAG) $(GCC_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GCC_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)
# g++ load time flags
GXXLDFLAGS = -L/export/root/c++/libg++/src -lg++ -lm $(OSLDFLAG)
###########################################################################
#
# compilation actions
#
src/libg++.a:
(cd src; $(MAKE) GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)" )
.PHONY: tests etc gperf clean
tests: src/libg++.a
(cd tests; $(MAKE) checktests GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)")
etc:
(cd etc; $(MAKE) GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)")
gperf:
(cd gperf; $(MAKE) GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" prefix="$(prefix)")
genclass: genclass.sh
echo "/^PROTODIR=/c\\" > sedscript
echo "PROTODIR=$(IDIR)" >> sedscript
sed < genclass.sh > genclass -f sedscript
chmod 0755 genclass
rm -f sedscript
###########################################################################
#
# Installation
#
all: src/libg++.a install tests etc gperf
install: install-libg++.a install-genclass install-include-files
install-libg++.a: src/libg++.a
(cd src; $(INSTALL) libg++.a $(LIBDIR))
$(RANLIB) $(LIBDIR)/libg++.a
install-genclass: genclass
$(INSTALL) genclass $(BINDIR)
install-include-files:
-mkdir $(IDIR)
-mkdir $(IDIR)/sys
-cd $(SRCIDIR); \
FILES=`find . -type f -print`; \
cd $(IDIR); \
rm -fr $$FILES; \
rm -f Stack.ccP Queue.ccP Deque.ccP; \
cd $(SRCIDIR); \
FILES=`find . -type f -print`; \
for file in $$FILES; do \
rm -f $(IDIR)/$$file; \
cp $$file $(IDIR)/$$file; \
chmod 0444 $(IDIR)/$$file; \
echo $$file installed; \
done
###########################################################################
#
# Destructors
#
clean:
(cd src; $(MAKE) clean)
(cd tests; $(MAKE) clean)
(cd etc; $(MAKE) clean)
(cd gperf; $(MAKE) realclean)
-rm -f genclass libg++.info* libg++.?? libg++.??s libg++.log libg++.toc libg++.*aux
-rm -f *.orig src/*.orig tests/*.orig etc/*.orig g++-include/*.orig g++-include/sys/*.orig
-rm -f *~ src/*~ tests/*~ etc/*~ g++-include/*~ g++-include/sys/*~
-rm -f a.out src/a.out tests/a.out etc/a.out
-rm -f *.s src/*.s tests/*.s etc/*.s
###########################################################################
#
# Some helpful things for folks on Suns, from Ron Guilmette
# NOTE: these do not refer to libg++, but might be helpful in configuration
# with MCC/ESKIT systems
SUN_INCLUDE_SUBDIRS=\
arpa \
pixrect \
rpcsvc \
sun \
sundev \
suntool \
sunwindow \
sys
# WARNING! If you add sys/time.h to the list below, it will mess up the generation
# of the sun-incl-patches file (see below).
SUN_INCLUDE_FILES=\
netdb.h \
signal.h \
strings.h \
time.h \
arpa/inet.h \
pixrect/memvar.h \
pixrect/pixfont.h \
pixrect/pixrect.h \
pixrect/pixrect_hs.h \
pixrect/traprop.h \
rpcsvc/rstat.h \
sun/fbio.h \
sundev/kbio.h \
sundev/msio.h \
sundev/vuid_event.h \
suntool/canvas.h \
suntool/icon.h \
suntool/icon_load.h \
suntool/panel.h \
suntool/scrollbar.h \
suntool/sunview.h \
suntool/walkmenu.h \
suntool/window.h \
suntool/wmgr.h \
sunwindow/attr.h \
sunwindow/notify.h \
sunwindow/pixwin.h \
sunwindow/win_cursor.h \
sys/dir.h \
sys/fcntl.h \
sys/ioctl.h \
sys/stat.h \
sys/vfs.h \
sys/wait.h \
sys/resource.h \
sys/ttychars.h \
sys/types.h \
sys/param.h
sun-include-files:
cd g++-include; \
rm -fr $(SUN_INCLUDE_SUBDIRS); \
mkdir $(SUN_INCLUDE_SUBDIRS); \
for file in $(SUN_INCLUDE_FILES); do \
cp /usr/include/$$file ./$$file; \
done; \
sh -x ../sun-incl-patches
# Note that there is a problem if you use "diff -re". The problem is that if
# there are sundirectories, the shell script which is produced fails to have
# the whole (relative) pathname of the files to be edited in the "ed - "
# command lines. Thus, we have to edit the patches file to put these full
# relative pathnames in. This is done automagically below.
sun-incl-patches:
-rm -fr sun-include
-mkdir sun-include
cd sun-include; \
for DIR in $(SUN_INCLUDE_SUBDIRS); do \
mkdir $$DIR; \
done
for FILE in $(SUN_INCLUDE_FILES); do \
ln g++-include/$$FILE sun-include/$$FILE; \
done
-rm -f /tmp/sun-incl-patches /tmp/patches-patches ./sun-incl-patches
-cd sun-include; \
diff -re /usr/include . > /tmp/sun-incl-patches
-rm -fr sun-include
touch /tmp/patches-patches
for PATH in $(SUN_INCLUDE_FILES); do \
BASE=`/usr/bin/basename $$PATH`; \
echo 's%^ed - '$$BASE'%ed - '$$PATH'%' >> /tmp/patches-patches; \
done
sed -f /tmp/patches-patches /tmp/sun-incl-patches > ./sun-incl-patches
-rm -f /tmp/sun-incl-patches /tmp/patches-patches
**********************************************************************
Here's Makefile from libg++/src I might have changed a little.
# Makefile for libg++.a
# Copyright (C) 1988 Free Software Foundation
# written by Doug Lea (dl@rocky.oswego.edu)
# This file is part of GNU CC.
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY. No author or distributor
# accepts responsibility to anyone for the consequences of using it
# or for whether it serves any particular purpose or works at all,
# unless he says so in writing. Refer to the GNU CC General Public
# License for full details.
# Everyone is granted permission to copy, modify and redistribute
# GNU CC, but only under the conditions described in the
# GNU CC General Public License. A copy of this license is
# supposed to have been given to you along with GNU CC so you
# can know your rights and responsibilities. It should be in a
# file named COPYING. Among other things, the copyright notice
# and this notice must be preserved on all copies.
# make parameters -- these should normally be inherited from parent make
# ------ source locations
# source directory for libg++.a
SRCDIR = ../src
# source include directory
SRCIDIR= ../g++-include
# ------ installation destinations
# ------ You will require write-permission on the destination directories
# ------ in order to `make install'
prefix =/export/root/c++
# libg++.a destination
LIBDIR = $(prefix)/lib
# executables directory: location to install the genclass class generator
BINDIR = $(prefix)/bin
# location to install include file directory
IDIR = $(prefix)/lib/g++-include
# ------- System-dependent defines
# ------- use the second form of each for SystemV (USG)
# g++ flags
OSFLAG=
#OSFLAG = -DUSG
# use this only if you have a strange stdio implementation
#OSFLAG = -DDEFAULT_filebuf
# ld or ld++ flags
OSLDFLAG =
#OSLDFLAG= -lPW
# how to install
INSTALL=install -c
#INSTALL=cp
# ranlib if necessary
RANLIB=ranlib
#RANLIB=echo
# which make?
MAKE=make
# not used, but convenient for those who preprocess things while compiling
SHELL=/bin/sh
# ------ compiler names
# GNU C++ compiler name
GXX = /export/root/c++/bin/g++
#GXX=gcc
# GNU CC compiler name (needed for some .c files in libg++.a)
CC = /export/root/c++/bin/gcc
# GNU loader
LDXX = $(LIBDIR)/gcc-ld++
# crt0+.o location (for dynamic loading tests)
GXXCRT1=$(LIBDIR)/crt1+.o
# ------ Other compilation flags
# ------ modify as you like -- the ones here are sheer overkill
#GXX_OPTIMIZATION_FLAGS= -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized
GXX_OPTIMIZATION_FLAGS= -O
#GCC_OPTIMIZATION_FLAGS= -O -fstrength-reduce -fdelayed-branch
GCC_OPTIMIZATION_FLAGS= -O
DEBUG_FLAGS=
#use this only if you like to look at lots of useless messages
VERBOSITY_FLAGS= -Wall -v
GXX_INCLUDE_DIRS= -I$(SRCIDIR)
GCC_INCLUDE_DIRS= -I$(prefix)/lib/gcc-include -I/usr/include -I$(SRCIDIR)
# Don't want pipe when using as
#PIPE_AS= -pipe
# Flags for all C++ compiles
GXXFLAGS = $(OSFLAG) $(GXX_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GXX_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)
# Flags for all C compiles
CFLAGS= $(OSFLAG) $(GCC_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GCC_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)
# g++ load time flags
GXXLDFLAGS = -L$(SRCDIR) -lg++ -lm $(OSLDFLAG)
# these flags tell test0 where ld++ and crt1+.o are
TFLAGS = -DLDXX=\"$(LDXX)\" -DCRT1X=\"$(GXXCRT1)\"
# g++ files should have extension .cc
.SUFFIXES: .cc
.cc.o:
$(GXX) $(GXXFLAGS) -c $<
###########################################################################
#
# declarations from here on should not normally need to be changed
# in order to compile libg++.a
#
# library sources
SRCS = AllocQueue.cc builtin.cc File.cc \
stream.cc streambuf.cc PlotFile.cc SFile.cc \
Obstack.cc regex.cc String.cc Integer.cc Rational.cc Complex.cc \
BitSet.cc BitString.cc Random.cc RNG.cc ACG.cc MLCG.cc Sample.cc \
Fix.cc Fix16.cc Fix24.cc Curses.cc GetOpt.cc gnulib3.c EH.cc
OBJS = AllocQueue.o builtin.o File.o stream.o streambuf.o \
PlotFile.o SFile.o \
Obstack.o regex.o String.o Integer.o Rational.o Complex.o \
BitSet.o BitString.o Random.o RNG.o ACG.o MLCG.o Sample.o \
Fix.o Fix16.o Fix24.o Curses.o GetOpt.o gnulib3.o EH.o
###########################################################################
#
# compilation actions
#
all: libg++.a
libg++.a: $(OBJS)
ar r libg++.a $(OBJS)
$(RANLIB) libg++.a
clean:
rm -f *.o core libg++.a C++.hack*
###########################################################################
#
# dependencies
#
regex.o: $(SRCIDIR)/regex.h
File.o: $(SRCIDIR)/File.h $(SRCIDIR)/std.h $(SRCIDIR)/stddef.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h
stream.o: $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h $(SRCIDIR)/streambuf.h
streambuf.o: $(SRCIDIR)/File.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h $(SRCIDIR)/streambuf.h
PlotFile.o: $(SRCIDIR)/PlotFile.h $(SRCIDIR)/File.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h
SFile.o: $(SRCIDIR)/SFile.h $(SRCIDIR)/File.h $(SRCIDIR)/std.h $(SRCIDIR)/stddef.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h
Obstack.o: $(SRCIDIR)/Obstack.h $(SRCIDIR)/builtin.h
String.o: $(SRCIDIR)/String.h $(SRCIDIR)/stream.h $(SRCIDIR)/regex.h $(SRCIDIR)/std.h $(SRCIDIR)/builtin.h $(SRCIDIR)/File.h
Integer.o: $(SRCIDIR)/Integer.h $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/builtin.h
Rational.o: $(SRCIDIR)/Rational.h $(SRCIDIR)/Integer.h $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/builtin.h
Complex.o: $(SRCIDIR)/Complex.h $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/builtin.h
BitSet.o: $(SRCIDIR)/BitSet.h $(SRCIDIR)/stream.h $(SRCIDIR)/builtin.h $(SRCIDIR)/File.h
BitString.o: $(SRCIDIR)/BitString.h $(SRCIDIR)/stream.h $(SRCIDIR)/builtin.h $(SRCIDIR)/File.h
AllocQueue.o: $(SRCIDIR)/AllocQueue.h
builtin.o: $(SRCIDIR)/builtin.h $(SRCIDIR)/math.h $(SRCIDIR)/AllocQueue.h
RNG.o: $(SRCIDIR)/assert.h $(SRCIDIR)/RNG.h
MLCG.o: $(SRCIDIR)/RNG.h $(SRCIDIR)/MLCG.h
ACG.o: $(SRCIDIR)/assert.h $(SRCIDIR)/RNG.h $(SRCIDIR)/ACG.h
Random.o: $(SRCIDIR)/Random.h $(SRCIDIR)/RNG.h \
$(SRCIDIR)/Binomial.h $(SRCIDIR)/Erlang.h $(SRCIDIR)/Geometric.h \
$(SRCIDIR)/HyperGeometric.h $(SRCIDIR)/NegativeExpntl.h $(SRCIDIR)/Normal.h \
$(SRCIDIR)/LogNormal.h $(SRCIDIR)/Poisson.h $(SRCIDIR)/DiscreteUniform.h \
$(SRCIDIR)/Uniform.h $(SRCIDIR)/Weibull.h
Sample.o: $(SRCIDIR)/SampleStatistic.h $(SRCIDIR)/SampleHistogram.h $(SRCIDIR)/File.h
Fix.cc: $(SRCIDIR)/Fix.h $(SRCIDIR)/File.h
Fix16.cc: $(SRCIDIR)/Fix16.h $(SRCIDIR)/File.h
Fix24.cc: $(SRCIDIR)/Fix24.h $(SRCIDIR)/File.h
Curses.o: $(SRCIDIR)/curses.h $(SRCIDIR)/CursesWindow.h
GetOpt.o: $(SRCIDIR)/std.h $(SRCIDIR)/GetOpt.h
============ Listing of BitString.cc ============ PAGE 1
1 /*
2 Copyright (C) 1988 Free Software Foundation
3 written by Doug Lea (dl@rocky.oswego.edu)
4
5 This file is part of GNU CC.
6
7 GNU CC is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY. No author or distributor
9 accepts responsibility to anyone for the consequences of using it
10 or for whether it serves any particular purpose or works at all,
11 unless he says so in writing. Refer to the GNU CC General Public
12 License for full details.
13
14 Everyone is granted permission to copy, modify and redistribute
15 GNU CC, but only under the conditions described in the
16 GNU CC General Public License. A copy of this license is
17 supposed to have been given to you along with GNU CC so you
18 can know your rights and responsibilities. It should be in a
19 file named COPYING. Among other things, the copyright notice
20 and this notice must be preserved on all copies.
21 */
22
23 /*
24 BitString class implementation
25 */
26
27 #include <BitString.h>
28 #include <std.h>
29 #include <values.h>
30 #include <Obstack.h>
31 #include <AllocQueue.h>
32
33 void BitString::error(char* msg)
34 {
35 (*lib_error_handler)("BitString", msg);
36 }
37
38 // globals
39
40 BitStrRep _nilBitStrRep = { 0, 1, {0} };
41
42 static BitString _nil_BitString;
43
44
45 #define MINBitStrRep_SIZE 8
46 #define MAXBitStrRep_SIZE (1 << (SHORTBITS - 1) - 1)
47 #define MALLOC_OVERHEAD 4
48
49 #define ONES ((unsigned short)(~0L))
50 #define MAXBIT (1 << (BITSTRBITS - 1))
51
52 /*
53 * bit manipulation utilities
54 */
55
============ Listing of BitString.cc ============ PAGE 2
56 // break things up into .s indices and positions
57
58 inline static int BitStr_len(int l)
59 {
60 return (unsigned)(l) / BITSTRBITS + 1;
61 }
62
63
64 // mask out low bits
65
66 static inline unsigned short lmask(int p)
67 {
68 if (p <= 0)
69 return ONES;
70 else
71 return ONES << p;
72 }
73
74 // mask out high bits
75
76 static inline unsigned short rmask(int p)
77 {
78 int s = BITSTRBITS - 1 - p;
79 if (s <= 0)
80 return ONES;
81 else
82 return ONES >> s;
83 }
84
85
86 // mask out unused bits in last word of rep
87
88 inline static void check_last(BitStrRep* r)
89 {
90 r->s[r->len / BITSTRBITS] &= ONES >> (BITSTRBITS - (r->len & (BITSTRBITS - 1)));
91 }
92
93 // merge bits from next word
94
95 static inline unsigned short borrow_hi(unsigned short a[], int ind,
96 int maxind, int p)
97 {
98 if (ind < maxind)
99 return (a[ind] >> p) | (a[ind+1] << (BITSTRBITS - p));
100 else
101 return (a[ind] >> p);
102 }
103
104 // merge bits from prev word
105
106 static inline unsigned short borrow_lo(unsigned short a[], int ind,
107 int minind, int p)
108 {
109 if (ind > minind)
110 return (a[ind] << (BITSTRBITS - 1 - p)) | (a[ind-1] >> (p + 1));
============ Listing of BitString.cc ============ PAGE 3
111 else
112 return (a[ind] << (BITSTRBITS - 1 - p));
113 }
114
115 // same with bounds check (for masks shorter than patterns)
116
117 static inline unsigned short safe_borrow_hi(unsigned short a[], int ind,
118 int maxind, int p)
119 {
120 if (ind > maxind)
121 return 0;
122 else if (ind == maxind)
123 return(a[ind] >> p);
124 else
125 return (a[ind] >> p) | (a[ind+1] << (BITSTRBITS - p));
126 }
127
128
129 static inline unsigned short safe_borrow_lo(unsigned short a[], int ind,
130 int minind, int p)
131 {
132 if (ind < minind)
133 return 0;
134 else if (ind == minind)
135 return (a[ind] << (BITSTRBITS - 1 - p));
136 else
137 return (a[ind] << (BITSTRBITS - 1 - p)) | (a[ind-1] >> (p + 1));
138 }
139
140 // copy bits from a word boundary
141
142 static inline void bit_copy(unsigned short* ss, unsigned short* ds, int nbits)
143 {
144 if (ss != ds)
145 {
146 int n = (unsigned)(nbits) / BITSTRBITS;
147 if (n > 0) bcopy((void*)ss, (void*)ds, n * sizeof(short));
148 unsigned short m = ONES << (nbits & (BITSTRBITS - 1));
149 ds[n] = (ss[n] & ~m) | (ds[n] & m);
150 }
151 }
152
153 // clear bits from a word boundary
154
155 static inline void bit_clear(unsigned short* ds, int nbits)
156 {
157 int n = (unsigned)(nbits) / BITSTRBITS;
158 if (n > 0) bzero((void*)ds, n * sizeof(short));
159 ds[n] &= ONES << (nbits & (BITSTRBITS - 1));
160 }
161
162
163
164 // copy ss from starts to fences-1 into ds starting at startd
165 // this will work even if ss & ds are the same
============ Listing of BitString.cc ============ PAGE 4
166 // The g++ optimizer does very good things with the messy shift expressions!
167
168 static void bit_transfer(unsigned short* ss, int starts, int fences,
169 unsigned short* ds, int startd)
170 {
171 if (starts >= fences || ss == 0 || (ss == ds && starts == startd))
172 return;
173
174 int sind = BitStr_index(starts);
175 int spos = BitStr_pos(starts);
176 int dind = BitStr_index(startd);
177 int dpos = BitStr_pos(startd);
178
179 if (spos == 0 && dpos == 0)
180 {
181 bit_copy(&ss[sind], &ds[dind], fences - starts);
182 return;
183 }
184
185 int ends = fences - 1;
186 int endsind = BitStr_index(ends);
187 int endspos = BitStr_pos(ends);
188 int endd = startd + (ends - starts);
189 int enddind = BitStr_index(endd);
190 int enddpos = BitStr_pos(endd);
191
192 if (dind == enddind)
193 {
194 if (sind == endsind)
195 ds[dind] = (ds[dind] & ((ONES >> (BITSTRBITS - dpos)) |
196 (ONES << (enddpos + 1)))) |
197 (((ss[sind] >> spos) << dpos) &
198 ~((ONES >> (BITSTRBITS - dpos)) | (ONES << (enddpos + 1))));
199 else
200 ds[dind] = (ds[dind] & ((ONES >> (BITSTRBITS - dpos)) |
201 (ONES << (enddpos + 1)))) |
202 ((((ss[sind] >> spos) | (ss[sind+1] << (BITSTRBITS - spos))) << dpos) &
203 ~((ONES >> (BITSTRBITS - dpos)) | (ONES << (enddpos + 1))));
204 return;
205 }
206 else if (sind == endsind)
207 {
208 unsigned short saveend = (ds[enddind] & (ONES << (enddpos + 1))) |
209 (((ss[sind] << (BITSTRBITS - 1 - endspos)) >>
210 (BITSTRBITS - 1 - enddpos)) & ~(ONES << (enddpos + 1)));
211 ds[dind] = (ds[dind] & (ONES >> (BITSTRBITS - dpos))) |
212 (((ss[sind] >> spos) << dpos) & ~(ONES >> (BITSTRBITS - dpos)));
213 ds[enddind] = saveend;
214 return;
215 }
216
217 unsigned short saveend = (ds[enddind] & (ONES << (enddpos + 1))) |
218 ((((ss[endsind] << (BITSTRBITS - 1 - endspos)) |
219 (ss[endsind-1] >> (endspos + 1))) >>
220 (BITSTRBITS - 1 - enddpos)) & ~(ONES << (enddpos + 1)));
============ Listing of BitString.cc ============ PAGE 5
221 unsigned short savestart = (ds[dind] & (ONES >> (BITSTRBITS - dpos))) |
222 ((((ss[sind] >> spos) | (ss[sind+1] << (BITSTRBITS - spos))) << dpos)
223 & ~(ONES >> (BITSTRBITS - dpos)));
224
225
226 if (ds != ss || startd < starts)
227 {
228 int pos = spos - dpos;
229 if (pos < 0)
230 pos += BITSTRBITS;
231 else
232 ++sind;
233
234 for (;;) // lag by one in case of overlaps
235 {
236 if (dind == enddind - 1)
237 {
238 ds[dind] = savestart;
239 ds[enddind] = saveend;
240 return;
241 }
242 else
243 {
244 unsigned short tmp = ss[sind] >> pos;
245 if (++sind <= endsind) tmp |= ss[sind] << (BITSTRBITS - pos);
246 ds[dind++] = savestart;
247 savestart = tmp;
248 }
249 }
250 }
251 else
252 {
253 int pos = endspos - enddpos;
254 if (pos <= 0)
255 {
256 pos += BITSTRBITS;
257 --endsind;
258 }
259 for (;;)
260 {
261 if (enddind == dind + 1)
262 {
263 ds[enddind] = saveend;
264 ds[dind] = savestart;
265 return;
266 }
267 else
268 {
269 unsigned short tmp = ss[endsind] << (BITSTRBITS - pos);
270 if (--endsind >= sind) tmp |= ss[endsind] >> pos;
271 ds[enddind--] = saveend;
272 saveend = tmp;
273 }
274 }
275 }
============ Listing of BitString.cc ============ PAGE 6
276 }
277
278
279 inline static BitStrRep* BSnew(int newlen)
280 {
281 unsigned int siz = sizeof(BitStrRep) + BitStr_len(newlen) * sizeof(short)
282 + MALLOC_OVERHEAD;
283 unsigned int allocsiz = MINBitStrRep_SIZE;;
284 while (allocsiz < siz) allocsiz <<= 1;
285 allocsiz -= MALLOC_OVERHEAD;
286 if (allocsiz >= MAXBitStrRep_SIZE * sizeof(short))
287 (*lib_error_handler)("BitString", "Requested length out of range");
288
289 BitStrRep* rep = (BitStrRep *) new char[allocsiz];
290 bzero(rep, allocsiz);
291 rep->sz = (allocsiz - sizeof(BitStrRep) + sizeof(short)) / sizeof(short);
292 return rep;
293 }
294
295 BitStrRep* BStr_alloc(BitStrRep* old, unsigned short* src,
296 int startpos, int endp, int newlen)
297 {
298 if (old == &_nilBitStrRep) old = 0;
299 if (newlen < 0) newlen = 0;
300 int news = BitStr_len(newlen);
301 BitStrRep* rep;
302 if (old == 0 || news > old->sz)
303 rep = BSnew(newlen);
304 else
305 rep = old;
306 rep->len = newlen;
307
308 if (src != 0 && endp > 0 && (src != rep->s || startpos > 0))
309 bit_transfer(src, startpos, endp, rep->s, 0);
310
311 check_last(rep);
312
313 if (old != rep && old != 0) delete old;
314
315 return rep;
316 }
317
318 BitStrRep* BStr_resize(BitStrRep* old, int newlen)
319 {
320 BitStrRep* rep;
321 if (newlen < 0) newlen = 0;
322 int news = BitStr_len(newlen);
323 if (old == 0 || old == &_nilBitStrRep)
324 {
325 rep = BSnew(newlen);
326 }
327 else if (news > old->sz)
328 {
329 rep = BSnew(newlen);
330 bcopy(old->s, rep->s, BitStr_len(old->len) * sizeof(short));
============ Listing of BitString.cc ============ PAGE 7
331 delete old;
332 }
333 else
334 rep = old;
335
336 rep->len = newlen;
337 check_last(rep);
338 return rep;
339 }
340
341 BitStrRep* BStr_copy(BitStrRep* old, BitStrRep* src)
342 {
343 if (old == src) return old;
344 BitStrRep* rep;
345 if (old == &_nilBitStrRep) old = 0;
346 if (src == &_nilBitStrRep) src = 0;
347 if (src == 0)
348 {
349 if (old == 0)
350 rep = BSnew(0);
351 else
352 rep = old;
353 rep->len = 0;
354 }
355 else
356 {
357 int newlen = src->len;
358 int news = BitStr_len(newlen);
359 if (old == 0 || news > old->sz)
360 {
361 rep = BSnew(newlen);
362 if (old != 0) delete old;
363 }
364 else
365 rep = old;
366
367 bcopy(src->s, rep->s, news * sizeof(short));
368 rep->len = newlen;
369 }
370 check_last(rep);
371 return rep;
372 }
373
374
375 int operator == (BitString& x, BitString& y)
376 {
377 return x.rep->len == y.rep->len &&
378 bcmp((void*)x.rep->s, (void*)y.rep->s,
379 BitStr_len(x.rep->len) * sizeof(short)) == 0;
380 }
381
382 int operator <= (BitString& x, BitString& y)
383 {
384 unsigned int xl = x.rep->len;
385 unsigned int yl = y.rep->len;
============ Listing of BitString.cc ============ PAGE 8
386 if (xl > yl)
387 return 0;
388
389 unsigned short* xs = x.rep->s;
390 unsigned short* ys = y.rep->s;
391 unsigned short* topx = &(xs[BitStr_len(xl)]);
392
393 while (xs < topx)
394 {
395 unsigned short a = *xs++;
396 unsigned short b = *ys++;
397 if ((a | b) != b)
398 return 0;
399 }
400 return 1;
401 }
402
403 int operator < (BitString& x, BitString& y)
404 {
405 unsigned short xl = x.rep->len;
406 unsigned short yl = y.rep->len;
407 if (xl > yl)
408 return 0;
409
410 unsigned short* xs = x.rep->s;
411 unsigned short* ys = y.rep->s;
412 unsigned short* topx = &(xs[BitStr_len(xl)]);
413 unsigned short* topy = &(ys[BitStr_len(yl)]);
414 int one_diff = 0;
415 while (xs < topx)
416 {
417 unsigned short a = *xs++;
418 unsigned short b = *ys++;
419 unsigned short c = a | b;
420 if (c != b)
421 return 0;
422 else if (c != a)
423 one_diff = 1;
424 }
425 if (one_diff)
426 return 1;
427 else
428 {
429 while (ys < topy)
430 if (*ys++ != 0)
431 return 1;
432 return 0;
433 }
434 }
435
436 int lcompare(BitString& x, BitString& y)
437 {
438 unsigned int xl = x.rep->len;
439 unsigned int yl = y.rep->len;
440
============ Listing of BitString.cc ============ PAGE 9
441 unsigned short* xs = x.rep->s;
442 unsigned short* topx = &(xs[BitStr_len(xl)]);
443 unsigned short* ys = y.rep->s;
444 unsigned short* topy = &(ys[BitStr_len(yl)]);
445
446 while (xs < topx && ys < topy)
447 {
448 unsigned short a = *xs++;
449 unsigned short b = *ys++;
450 if (a != b)
451 {
452 unsigned short mask = 1;
453 for (;;)
454 {
455 unsigned short abit = (a & mask) != 0;
456 unsigned short bbit = (b & mask) != 0;
457 int diff = abit - bbit;
458 if (diff != 0)
459 return diff;
460 else
461 mask <<= 1;
462 }
463 }
464 }
465 return xl - yl;
466 }
467
468 int BitString::count(int b = 1)
469 {
470 check_last(rep);
471 int xwds = BitStr_len(rep->len);
472 int xlast = BitStr_pos(rep->len);
473 int l = 0;
474 unsigned short* s = rep->s;
475 unsigned short* tops = &(s[xwds - 1]);
476 unsigned short a;
477 int i;
478 if (b != 0)
479 {
480 while (s < tops)
481 {
482 a = *s++;
483 for (i = 0; i < BITSTRBITS && a != 0; ++i)
484 {
485 if (a & 1)
486 ++l;
487 a >>= 1;
488 }
489 }
490 a = *s;
491 for (i = 0; i < xlast && a != 0; ++i)
492 {
493 if (a & 1)
494 ++l;
495 a >>= 1;
============ Listing of BitString.cc ============ PAGE 10
496 }
497 }
498 else
499 {
500 unsigned short maxbit = 1 << (BITSTRBITS - 1);
501 while (s < tops)
502 {
503 a = *s++;
504 for (i = 0; i < BITSTRBITS; ++i)
505 {
506 if ((a & maxbit) == 0)
507 ++l;
508 a <<= 1;
509 }
510 }
511 maxbit = 1 << (xlast - 1);
512 a = *s;
513 for (i = 0; i < xlast; ++i)
514 {
515 if ((a & maxbit) == 0)
516 ++l;
517 a <<= 1;
518 }
519 }
520 return l;
521 }
522
523
524 BitStrRep* cmpl(BitStrRep* src, BitStrRep* r)
525 {
526 r = BStr_copy(r, src);
527 unsigned short* rs = r->s;
528 unsigned short* topr = &(rs[BitStr_len(r->len)]);
529 while (rs < topr)
530 {
531 unsigned short cmp = ~(*rs);
532 *rs++ = cmp;
533 }
534 check_last(r);
535 return r;
536 }
537
538
539
540 BitStrRep* and(BitStrRep* x, BitStrRep* y, BitStrRep* r)
541 {
542 int xrsame = x == r;
543 int yrsame = y == r;
544
545 unsigned int rl = x->len <? y->len;
546 r = BStr_resize(r, rl);
547
548 unsigned short* rs = r->s;
549 unsigned short* topr = &(rs[BitStr_len(rl)]);
550 unsigned short* xs = (xrsame)? rs : x->s;
============ Listing of BitString.cc ============ PAGE 11
551 unsigned short* ys = (yrsame)? rs : y->s;
552
553 while (rs < topr) *rs++ = *xs++ & *ys++;
554 check_last(r);
555 return r;
556 }
557
558 BitStrRep* or(BitStrRep* x, BitStrRep* y, BitStrRep* r)
559 {
560 unsigned int xl = x->len;
561 unsigned int yl = y->len;
562 unsigned int rl = xl >? yl;
563 int xrsame = x == r;
564 int yrsame = y == r;
565
566 r = BStr_resize(r, rl);
567
568 unsigned short* rs = r->s;
569 unsigned short* xs = (xrsame)? rs : x->s;
570 unsigned short* topx = &(xs[BitStr_len(xl)]);
571 unsigned short* ys = (yrsame)? rs : y->s;
572 unsigned short* topy = &(ys[BitStr_len(yl)]);
573
574 if (xl <= yl)
575 {
576 while (xs < topx) *rs++ = *xs++ | *ys++;
577 if (rs != ys) while (ys < topy) *rs++ = *ys++;
578 }
579 else
580 {
581 while (ys < topy) *rs++ = *xs++ | *ys++;
582 if (rs != xs) while (xs < topx) *rs++ = *xs++;
583 }
584 check_last(r);
585 return r;
586 }
587
588
589 BitStrRep* xor(BitStrRep* x, BitStrRep* y, BitStrRep* r)
590 {
591 unsigned int xl = x->len;
592 unsigned int yl = y->len;
593 unsigned int rl = xl >? yl;
594 int xrsame = x == r;
595 int yrsame = y == r;
596
597 r = BStr_resize(r, rl);
598
599 unsigned short* rs = r->s;
600 unsigned short* xs = (xrsame)? rs : x->s;
601 unsigned short* topx = &(xs[BitStr_len(xl)]);
602 unsigned short* ys = (yrsame)? rs : y->s;
603 unsigned short* topy = &(ys[BitStr_len(yl)]);
604
605 if (xl <= yl)
============ Listing of BitString.cc ============ PAGE 12
606 {
607 while (xs < topx) *rs++ = *xs++ ^ *ys++;
608 if (rs != ys) while (ys < topy) *rs++ = *ys++;
609 }
610 else
611 {
612 while (ys < topy) *rs++ = *xs++ ^ *ys++;
613 if (rs != xs) while (xs < topx) *rs++ = *xs++;
614 }
615 check_last(r);
616 return r;
617 }
618
619
620 BitStrRep* difference(BitStrRep* x, BitStrRep* y, BitStrRep* r)
621 {
622 unsigned int xl = x->len;
623 unsigned int yl = y->len;
624 int xrsame = x == y;
625 int yrsame = y == r;
626
627 r = BStr_resize(r, xl);
628
629 unsigned short* rs = r->s;
630 unsigned short* xs = (xrsame)? rs : x->s;
631 unsigned short* topx = &(xs[BitStr_len(xl)]);
632 unsigned short* ys = (yrsame)? rs : y->s;
633 unsigned short* topy = &(ys[BitStr_len(yl)]);
634
635 if (xl <= yl)
636 {
637 while (xs < topx) *rs++ = *xs++ & ~(*ys++);
638 }
639 else
640 {
641 while (ys < topy) *rs++ = *xs++ & ~(*ys++);
642 if (rs != xs) while (xs < topx) *rs++ = *xs++;
643 }
644 check_last(r);
645 return r;
646 }
647
648
649 BitStrRep* concat(BitStrRep* x, BitStrRep* y, BitStrRep* r)
650 {
651 unsigned int xl = x->len;
652 unsigned int yl = y->len;
653 unsigned int rl = xl + yl;
654 int xrsame = x == r;
655 int yrsame = y == r;
656
657 if (yrsame)
658 {
659 if (xrsame)
660 {
============ Listing of BitString.cc ============ PAGE 13
661 r = BStr_resize(r, rl);
662 bit_transfer(r->s, 0, yl, r->s, xl);
663 }
664 else
665 {
666 BitStrRep* tmp = BStr_copy(0, y);
667 r = BStr_resize(r, rl);
668 bit_copy(x->s, r->s, xl);
669 bit_transfer(tmp->s, 0, yl, r->s, xl);
670 delete tmp;
671 }
672 }
673 else
674 {
675 r = BStr_resize(r, rl);
676 if (!xrsame) bit_copy(x->s, r->s, xl);
677 bit_transfer(y->s, 0, yl, r->s, xl);
678 }
679 check_last(r);
680 return r;
681 }
682
683 BitStrRep* concat(BitStrRep* x, int bit, BitStrRep* r)
684 {
685 unsigned int xl = x->len;
686 int xrsame = x == r;
687 r = BStr_resize(r, xl+1);
688 if (!xrsame) bit_copy(x->s, r->s, xl);
689 if (bit)
690 r->s[BitStr_index(xl)] |= (1 << (BitStr_pos(xl)));
691 else
692 r->s[BitStr_index(xl)] &= ~(1 << (BitStr_pos(xl)));
693 check_last(r);
694 return r;
695 }
696
697 BitStrRep* rshift(BitStrRep* x, int s, BitStrRep* r)
698 {
699 int xrsame = x == r;
700 int xl = x->len;
701 int rl = xl + s;
702 if (s == 0)
703 r = BStr_copy(r, x);
704 else if (rl <= 0)
705 {
706 r = BStr_resize(r, 0);
707 r->len = 0;
708 r->s[0] = 0;
709 }
710 else if (s > 0)
711 {
712 r = BStr_resize(r, rl);
713 unsigned short* xs = (xrsame)? r->s : x->s;
714 bit_transfer(xs, 0, xl, r->s, s);
715 bit_clear(r->s, s);
============ Listing of BitString.cc ============ PAGE 14
716 }
717 else if (xrsame)
718 {
719 r = BStr_resize(r, xl);
720 r->len = rl;
721 bit_transfer(r->s, -s, xl, r->s, 0);
722 }
723 else
724 {
725 r = BStr_resize(r, rl);
726 bit_transfer(x->s, -s, xl, r->s, 0);
727 }
728 check_last(r);
729 return r;
730 }
731
732
733 void BitString::set(int p)
734 {
735 if (p < 0) error("Illegal bit index");
736 if (p >= rep->len) rep = BStr_resize(rep, p + 1);
737 rep->s[BitStr_index(p)] |= (1 << (BitStr_pos(p)));
738 }
739
740 void BitString::assign(int p, int bit)
741 {
742 if (p < 0) error("Illegal bit index");
743 if (p >= rep->len) rep = BStr_resize(rep, p + 1);
744 if (bit)
745 rep->s[BitStr_index(p)] |= (1 << (BitStr_pos(p)));
746 else
747 rep->s[BitStr_index(p)] &= ~(1 << (BitStr_pos(p)));
748 }
749
750 void BitString::clear(int p)
751 {
752 if (p < 0) error("Illegal bit index");
753 if (p >= rep->len) rep = BStr_resize(rep, p + 1);
754 rep->s[BitStr_index(p)] &= ~(1 << (BitStr_pos(p)));
755 }
756
757 void BitString::clear()
758 {
759 if (rep == &_nilBitStrRep) return;
760 bit_clear(rep->s, rep->len);
761 }
762
763 void BitString::set()
764 {
765 if (rep == &_nilBitStrRep) return;
766 unsigned short* s = rep->s;
767 unsigned short* tops = &(s[BitStr_len(rep->len)]);
768 while (s < tops) *s++ = ONES;
769 check_last(rep);
770 }
============ Listing of BitString.cc ============ PAGE 15
771
772 void BitString::invert(int p)
773 {
774 if (p < 0) error("Illegal bit index");
775 if (p >= rep->len) rep = BStr_resize(rep, p + 1);
776 rep->s[BitStr_index(p)] ^= (1 << (BitStr_pos(p)));
777 }
778
779
780
781 void BitString::set(int from, int to)
782 {
783 if (from < 0 || from > to) error("Illegal bit index");
784 if (to >= rep->len) rep = BStr_resize(rep, to+1);
785
786 int ind1 = BitStr_index(from);
787 int pos1 = BitStr_pos(from);
788 int ind2 = BitStr_index(to);
789 int pos2 = BitStr_pos(to);
790 unsigned short* s = &(rep->s[ind1]);
791 unsigned short m1 = lmask(pos1);
792 unsigned short m2 = rmask(pos2);
793 if (ind2 == ind1)
794 *s |= m1 & m2;
795 else
796 {
797 *s++ |= m1;
798 unsigned short* top = &(rep->s[ind2]);
799 *top |= m2;
800 while (s < top)
801 *s++ = ONES;
802 }
803 }
804
805 void BitString::clear(int from, int to)
806 {
807 if (from < 0 || from > to) error("Illegal bit index");
808 if (to >= rep->len) rep = BStr_resize(rep, to+1);
809
810 int ind1 = BitStr_index(from);
811 int pos1 = BitStr_pos(from);
812 int ind2 = BitStr_index(to);
813 int pos2 = BitStr_pos(to);
814 unsigned short* s = &(rep->s[ind1]);
815 unsigned short m1 = lmask(pos1);
816 unsigned short m2 = rmask(pos2);
817 if (ind2 == ind1)
818 *s &= ~(m1 & m2);
819 else
820 {
821 *s++ &= ~m1;
822 unsigned short* top = &(rep->s[ind2]);
823 *top &= ~m2;
824 while (s < top)
825 *s++ = 0;
============ Listing of BitString.cc ============ PAGE 16
826 }
827 }
828
829 void BitString::invert(int from, int to)
830 {
831 if (from < 0 || from > to) error("Illegal bit index");
832 if (to >= rep->len) rep = BStr_resize(rep, to+1);
833
834 int ind1 = BitStr_index(from);
835 int pos1 = BitStr_pos(from);
836 int ind2 = BitStr_index(to);
837 int pos2 = BitStr_pos(to);
838 unsigned short* s = &(rep->s[ind1]);
839 unsigned short m1 = lmask(pos1);
840 unsigned short m2 = rmask(pos2);
841 if (ind2 == ind1)
842 *s ^= m1 & m2;
843 else
844 {
845 *s++ ^= m1;
846 unsigned short* top = &(rep->s[ind2]);
847 *top ^= m2;
848 while (s < top)
849 {
850 unsigned short cmp = ~(*s);
851 *s++ = cmp;
852 }
853 }
854 }
855
856
857 int BitString::test(int from, int to)
858 {
859 if (from < 0 || from > to || from >= rep->len) return 0;
860
861 int ind1 = BitStr_index(from);
862 int pos1 = BitStr_pos(from);
863 int ind2 = BitStr_index(to);
864 int pos2 = BitStr_pos(to);
865
866 if (to >= rep->len)
867 {
868 ind2 = BitStr_index(rep->len - 1);
869 pos2 = BitStr_pos(rep->len - 1);
870 }
871
872 unsigned short* s = &(rep->s[ind1]);
873 unsigned short m1 = lmask(pos1);
874 unsigned short m2 = rmask(pos2);
875
876 if (ind2 == ind1)
877 return (*s & m1 & m2) != 0;
878 else
879 {
880 if (*s++ & m1)
============ Listing of BitString.cc ============ PAGE 17
881 return 1;
882 unsigned short* top = &(rep->s[ind2]);
883 if (*top & m2)
884 return 1;
885 while (s < top)
886 if (*s++ != 0)
887 return 1;
888 return 0;
889 }
890 }
891
892 int BitString::next(int p, int b = 1)
893 {
894 if (++p >= rep->len)
895 return -1;
896
897 int ind = BitStr_index(p);
898 int pos = BitStr_pos(p);
899 int l = BitStr_len(rep->len);
900
901 int j = ind;
902 unsigned short* s = rep->s;
903 unsigned short a = s[j] >> pos;
904 int i = pos;
905
906 if (b != 0)
907 {
908 for (; i < BITSTRBITS && a != 0; ++i)
909 {
910 if (a & 1)
911 return j * BITSTRBITS + i;
912 a >>= 1;
913 }
914 for (++j; j < l; ++j)
915 {
916 a = s[j];
917 for (i = 0; i < BITSTRBITS && a != 0; ++i)
918 {
919 if (a & 1)
920 return j * BITSTRBITS + i;
921 a >>= 1;
922 }
923 }
924 return -1;
925 }
926 else
927 {
928 int last = BitStr_pos(rep->len);
929 if (j == l - 1)
930 {
931 for (; i < last; ++i)
932 {
933 if ((a & 1) == 0)
934 return j * BITSTRBITS + i;
935 a >>= 1;
============ Listing of BitString.cc ============ PAGE 18
936 }
937 return -1;
938 }
939
940 for (; i < BITSTRBITS; ++i)
941 {
942 if ((a & 1) == 0)
943 return j * BITSTRBITS + i;
944 a >>= 1;
945 }
946 for (++j; j < l - 1; ++j)
947 {
948 a = s[j];
949 if (a != ONES)
950 {
951 for (i = 0; i < BITSTRBITS; ++i)
952 {
953 if ((a & 1) == 0)
954 return j * BITSTRBITS + i;
955 a >>= 1;
956 }
957 }
958 }
959 a = s[j];
960 for (i = 0; i < last; ++i)
961 {
962 if ((a & 1) == 0)
963 return j * BITSTRBITS + i;
964 a >>= 1;
965 }
966 return -1;
967 }
968 }
969
970 int BitString::previous(int p, int b = 1)
971 {
972 if (--p < 0)
973 return -1;
974
975 int ind = BitStr_index(p);
976 int pos = BitStr_pos(p);
977
978 unsigned short* s = rep->s;
979
980 if (p >= rep->len)
981 {
982 ind = BitStr_index(rep->len - 1);
983 pos = BitStr_pos(rep->len - 1);
984 }
985
986 int j = ind;
987 unsigned short a = s[j];
988
989 int i = pos;
990 unsigned short maxbit = 1 << pos;
============ Listing of BitString.cc ============ PAGE 19
991
992 if (b != 0)
993 {
994 for (; i >= 0 && a != 0; --i)
995 {
996 if (a & maxbit)
997 return j * BITSTRBITS + i;
998 a <<= 1;
999 }
1000 maxbit = 1 << (BITSTRBITS - 1);
1001 for (--j; j >= 0; --j)
1002 {
1003 a = s[j];
1004 for (i = BITSTRBITS - 1; i >= 0 && a != 0; --i)
1005 {
1006 if (a & maxbit)
1007 return j * BITSTRBITS + i;
1008 a <<= 1;
1009 }
1010 }
1011 return -1;
1012 }
1013 else
1014 {
1015 if (a != ONES)
1016 {
1017 for (; i >= 0; --i)
1018 {
1019 if ((a & maxbit) == 0)
1020 return j * BITSTRBITS + i;
1021 a <<= 1;
1022 }
1023 }
1024 maxbit = 1 << (BITSTRBITS - 1);
1025 for (--j; j >= 0; --j)
1026 {
1027 a = s[j];
1028 if (a != ONES)
1029 {
1030 for (i = BITSTRBITS - 1; i >= 0; --i)
1031 {
1032 if ((a & maxbit) == 0)
1033 return j * BITSTRBITS + i;
1034 a <<= 1;
1035 }
1036 }
1037 }
1038 return -1;
1039 }
1040 }
1041
1042
1043 int BitString::search(int startx, int lengthx,
1044 unsigned short* ys, int starty, int lengthy)
1045 {
============ Listing of BitString.cc ============ PAGE 20
1046 unsigned short* xs = rep->s;
1047 int ylen = lengthy - starty;
1048 int righty = lengthy - 1;
1049 int rev = startx < 0;
1050 if (rev)
1051 {
1052 int leftx = 0;
1053 int rightx = lengthx + startx;
1054 startx = rightx - ylen + 1;
1055 if (ylen == 0) return startx;
1056 if (starty < 0 || righty < 0 || startx < 0 || startx >= lengthx) return -1;
1057
1058 int xind = BitStr_index(startx);
1059 int xpos = BitStr_pos(startx);
1060 int yind = BitStr_index(starty);
1061 int ypos = BitStr_pos(starty);
1062
1063 int rightxind = BitStr_index(rightx);
1064
1065 unsigned short x = borrow_hi(xs, xind, rightxind, xpos);
1066
1067 int rightyind = BitStr_index(righty);
1068 int rightypos = BitStr_pos(righty);
1069 unsigned short y = borrow_hi(ys, yind, rightyind, ypos);
1070 unsigned short ymask;
1071 if (yind == rightyind)
1072 ymask = rmask(rightypos);
1073 else if (yind+1 == rightyind)
1074 ymask = rmask(BITSTRBITS - ypos + rightypos + 1);
1075 else
1076 ymask = ONES;
1077
1078 int p = startx;
1079 for (;;)
1080 {
1081 if ((x & ymask) == y)
1082 {
1083 int xi = xind;
1084 int yi = yind;
1085 for (;;)
1086 {
1087 if (++yi > rightyind || ++xi > rightxind)
1088 return p;
1089 unsigned short tx = borrow_hi(xs, xi, rightxind, xpos);
1090 unsigned short ty = borrow_hi(ys, yi, rightyind, ypos);
1091 if (yi == rightyind)
1092 tx &= rmask(rightypos);
1093 else if (yi+1 == rightyind)
1094 tx &= rmask(BITSTRBITS - ypos + rightypos + 1);
1095 if (tx != ty)
1096 break;
1097 }
1098 }
1099 if (--p < leftx)
1100 return -1;
============ Listing of BitString.cc ============ PAGE 21
1101 if (--xpos < 0)
1102 {
1103 xpos = BITSTRBITS - 1;
1104 --xind;
1105 }
1106 x = borrow_hi(xs, xind, rightxind, xpos);
1107 }
1108 }
1109 else
1110 {
1111
1112 int rightx = lengthx - 1;
1113 if (ylen == 0) return startx;
1114 if (starty < 0 || righty < 0 || startx < 0 || startx >= lengthx) return -1;
1115
1116 int xind = BitStr_index(startx);
1117 int xpos = BitStr_pos(startx);
1118 int yind = BitStr_index(starty);
1119 int ypos = BitStr_pos(starty);
1120
1121 int rightxind = BitStr_index(rightx);
1122
1123 unsigned short x = borrow_hi(xs, xind, rightxind, xpos);
1124 unsigned short nextx = (xind >= rightxind) ? 0 : (xs[xind+1] >> xpos);
1125
1126 int rightyind = BitStr_index(righty);
1127 int rightypos = BitStr_pos(righty);
1128 unsigned short y = borrow_hi(ys, yind, rightyind, ypos);
1129 unsigned short ymask;
1130 if (yind == rightyind)
1131 ymask = rmask(rightypos);
1132 else if (yind+1 == rightyind)
1133 ymask = rmask(BITSTRBITS - ypos + rightypos + 1);
1134 else
1135 ymask = ONES;
1136
1137 int p = startx;
1138 for (;;)
1139 {
1140 if ((x & ymask) == y)
1141 {
1142 int xi = xind;
1143 int yi = yind;
1144 for (;;)
1145 {
1146 if (++yi > rightyind || ++xi > rightxind)
1147 return p;
1148 unsigned short tx = borrow_hi(xs, xi, rightxind, xpos);
1149 unsigned short ty = borrow_hi(ys, yi, rightyind, ypos);
1150 if (yi == rightyind)
1151 tx &= rmask(rightypos);
1152 else if (yi+1 == rightyind)
1153 tx &= rmask(BITSTRBITS - ypos + rightypos + 1);
1154 if (tx != ty)
1155 break;
============ Listing of BitString.cc ============ PAGE 22
1156 }
1157 }
1158 if (++p > rightx)
1159 return -1;
1160 if (++xpos == BITSTRBITS)
1161 {
1162 xpos = 0;
1163 x = xs[++xind];
1164 nextx = (xind >= rightxind) ? 0 : xs[xind+1];
1165 }
1166 else
1167 {
1168 x >>= 1;
1169 if (nextx & 1)
1170 x |= MAXBIT;
1171 nextx >>= 1;
1172 }
1173 }
1174 }
1175 }
1176
1177
1178 int BitPattern::search(unsigned short* xs, int startx, int lengthx)
1179 {
1180 unsigned short* ys = pattern.rep->s;
1181 unsigned short* ms = mask.rep->s;
1182 int righty = pattern.rep->len - 1;
1183 int rightm = mask.rep->len - 1;
1184
1185 int rev = startx < 0;
1186 if (rev)
1187 {
1188 int leftx = 0;
1189 int rightx = lengthx + startx;
1190 startx = rightx - righty;
1191
1192 if (righty < 0) return startx;
1193 if (startx < 0 || startx >= lengthx) return -1;
1194
1195 int xind = BitStr_index(startx);
1196 int xpos = BitStr_pos(startx);
1197
1198 int rightxind = BitStr_index(rightx);
1199
1200 int rightmind = BitStr_index(rightm);
1201 int rightyind = BitStr_index(righty);
1202
1203 unsigned short x = safe_borrow_hi(xs, xind, rightxind, xpos);
1204 unsigned short m = safe_borrow_hi(ms, 0, rightmind, 0);
1205 unsigned short y = safe_borrow_hi(ys, 0, rightyind, 0) & m;
1206
1207 int p = startx;
1208 for (;;)
1209 {
1210 if ((x & m) == y)
============ Listing of BitString.cc ============ PAGE 23
1211 {
1212 int xi = xind;
1213 int yi = 0;
1214 for (;;)
1215 {
1216 if (++yi > rightyind || ++xi > rightxind)
1217 return p;
1218 unsigned short tm = safe_borrow_hi(ms, yi, rightmind, 0);
1219 unsigned short ty = safe_borrow_hi(ys, yi, rightyind, 0);
1220 unsigned short tx = safe_borrow_hi(xs, xi, rightxind, xpos);
1221 if ((tx & tm) != (ty & tm))
1222 break;
1223 }
1224 }
1225 if (--p < leftx)
1226 return -1;
1227 if (--xpos < 0)
1228 {
1229 xpos = BITSTRBITS - 1;
1230 --xind;
1231 }
1232 x = safe_borrow_hi(xs, xind, rightxind, xpos);
1233 }
1234 }
1235 else
1236 {
1237
1238 int rightx = lengthx - 1;
1239
1240 if (righty < 0) return startx;
1241 if (startx < 0 || startx >= lengthx) return -1;
1242
1243 int xind = BitStr_index(startx);
1244 int xpos = BitStr_pos(startx);
1245
1246 int rightxind = BitStr_index(rightx);
1247
1248 int rightmind = BitStr_index(rightm);
1249 int rightyind = BitStr_index(righty);
1250
1251 unsigned short x = safe_borrow_hi(xs, xind, rightxind, xpos);
1252 unsigned short m = safe_borrow_hi(ms, 0, rightmind, 0);
1253 unsigned short y = safe_borrow_hi(ys, 0, rightyind, 0) & m;
1254
1255 unsigned short nextx = (xind >= rightxind) ? 0 : (xs[xind+1] >> xpos);
1256
1257 int p = startx;
1258 for (;;)
1259 {
1260 if ((x & m) == y)
1261 {
1262 int xi = xind;
1263 int yi = 0;
1264 for (;;)
1265 {
============ Listing of BitString.cc ============ PAGE 24
1266 if (++yi > rightyind || ++xi > rightxind)
1267 return p;
1268 unsigned short tm = safe_borrow_hi(ms, yi, rightmind, 0);
1269 unsigned short ty = safe_borrow_hi(ys, yi, rightyind, 0);
1270 unsigned short tx = safe_borrow_hi(xs, xi, rightxind, xpos);
1271 if ((tx & tm) != (ty & tm))
1272 break;
1273 }
1274 }
1275 if (++p > rightx)
1276 return -1;
1277 if (++xpos == BITSTRBITS)
1278 {
1279 xpos = 0;
1280 x = xs[++xind];
1281 nextx = (xind >= rightxind) ? 0 : xs[xind+1];
1282 }
1283 else
1284 {
1285 x >>= 1;
1286 if (nextx & 1)
1287 x |= MAXBIT;
1288 nextx >>= 1;
1289 }
1290 }
1291 }
1292 }
1293
1294 int BitString::match(int startx, int lengthx, int exact,
1295 unsigned short* ys, int starty, int yl)
1296 {
1297 unsigned short* xs = rep->s;
1298 int ylen = yl - starty;
1299 int righty = yl - 1;
1300
1301 int rightx;
1302 int rev = startx < 0;
1303 if (rev)
1304 {
1305 rightx = lengthx + startx;
1306 startx = rightx - ylen + 1;
1307 if (exact && startx != 0)
1308 return 0;
1309 }
1310 else
1311 {
1312 rightx = lengthx - 1;
1313 if (exact && rightx - startx != righty)
1314 return 0;
1315 }
1316
1317 if (ylen == 0) return 1;
1318 if (righty < 0 || startx < 0 || startx >= lengthx) return 0;
1319
1320 int xi = BitStr_index(startx);
============ Listing of BitString.cc ============ PAGE 25
1321 int xpos = BitStr_pos(startx);
1322 int yi = BitStr_index(starty);
1323 int ypos = BitStr_pos(starty);
1324
1325 int rightxind = BitStr_index(rightx);
1326 int rightyind = BitStr_index(righty);
1327 int rightypos = BitStr_pos(righty);
1328
1329 for (;;)
1330 {
1331 unsigned short x = borrow_hi(xs, xi, rightxind, xpos);
1332 unsigned short y = borrow_hi(ys, yi, rightyind, ypos);
1333 if (yi == rightyind)
1334 x &= rmask(rightypos);
1335 else if (yi+1 == rightyind)
1336 x &= rmask(BITSTRBITS - ypos + rightypos + 1);
1337 if (x != y)
1338 return 0;
1339 else if (++yi > rightyind || ++xi > rightxind)
1340 return 1;
1341 }
1342 }
1343
1344 int BitPattern::match(unsigned short* xs, int startx, int lengthx, int exact)
1345 {
1346 unsigned short* ys = pattern.rep->s;
1347 int righty = pattern.rep->len - 1;
1348 unsigned short* ms = mask.rep->s;
1349 int rightm = mask.rep->len - 1;
1350
1351 int rightx;
1352 int rev = startx < 0;
1353 if (rev)
1354 {
1355 rightx = lengthx + startx;
1356 startx = rightx - righty;
1357 if (exact && startx != 0)
1358 return 0;
1359 }
1360 else
1361 {
1362 rightx = lengthx - 1;
1363 if (exact && rightx - startx != righty)
1364 return 0;
1365 }
1366
1367 if (righty < 0) return 1;
1368 if (startx < 0 || startx >= lengthx) return 0;
1369
1370 int xind = BitStr_index(startx);
1371 int xpos = BitStr_pos(startx);
1372 int yind = 0;
1373
1374 int rightxind = BitStr_index(rightx);
1375 int rightyind = BitStr_index(righty);
============ Listing of BitString.cc ============ PAGE 26
1376 int rightmind = BitStr_index(rightm);
1377
1378 for(;;)
1379 {
1380 unsigned short m = safe_borrow_hi(ms, yind, rightmind, 0);
1381 unsigned short x = safe_borrow_hi(xs, xind, rightxind, xpos) & m;
1382 unsigned short y = safe_borrow_hi(ys, yind, rightyind, 0) & m;
1383 if (x != y)
1384 return 0;
1385 else if (++yind > rightyind || ++xind > rightxind)
1386 return 1;
1387 }
1388 }
1389
1390 BitSubString::BitSubString(BitString* x, int first, int l)
1391 {
1392 if (first < 0 || l <= 0 || first + l > x->rep->len)
1393 {
1394 S = &_nil_BitString; pos = len = 0;
1395 }
1396 else
1397 {
1398 S = x; pos = first; len = l;
1399 }
1400 }
1401
1402
1403
1404 void BitSubString::operator = (BitString& y)
1405 {
1406 if (S == &_nil_BitString) return;
1407 BitStrRep* targ = S->rep;
1408
1409 int ylen = y.rep->len;
1410 int sl = targ->len - len + ylen;
1411
1412 if (y.rep == targ || ylen > len)
1413 {
1414 BitStrRep* oldtarg = targ;
1415 targ = BStr_alloc(0, 0, 0, 0, sl);
1416 bit_transfer(oldtarg->s, 0, pos, targ->s, 0);
1417 bit_transfer(y.rep->s, 0, ylen, targ->s, pos);
1418 bit_transfer(oldtarg->s, pos+len, oldtarg->len, targ->s, pos + ylen);
1419 delete oldtarg;
1420 }
1421 else if (len == ylen)
1422 bit_transfer(y.rep->s, 0, len, targ->s, pos);
1423 else if (ylen < len)
1424 {
1425 bit_transfer(y.rep->s, 0, ylen, targ->s, pos);
1426 bit_transfer(targ->s, pos+len, targ->len, targ->s, pos + ylen);
1427 targ->len = sl;
1428 }
1429 check_last(targ);
1430 S->rep = targ;
============ Listing of BitString.cc ============ PAGE 27
1431 }
1432
1433 void BitSubString::operator = (BitSubString& y)
1434 {
1435 if (S == &_nil_BitString) return;
1436 BitStrRep* targ = S->rep;
1437
1438 if (len == 0 || pos >= targ->len)
1439 return;
1440
1441 int sl = targ->len - len + y.len;
1442
1443 if (y.S->rep == targ || y.len > len)
1444 {
1445 BitStrRep* oldtarg = targ;
1446 targ = BStr_alloc(0, 0, 0, 0, sl);
1447 bit_copy(oldtarg->s, targ->s, pos);
1448 bit_transfer(y.S->rep->s, y.pos, y.pos+y.len, targ->s, pos);
1449 bit_transfer(oldtarg->s, pos+len, oldtarg->len, targ->s, pos + y.len);
1450 delete oldtarg;
1451 }
1452 else if (len == y.len)
1453 bit_transfer(y.S->rep->s, y.pos, y.pos+y.len, targ->s, pos);
1454 else if (y.len < len)
1455 {
1456 bit_transfer(y.S->rep->s, y.pos, y.pos+y.len, targ->s, pos);
1457 bit_transfer(targ->s, pos+len, targ->len, targ->s, pos + y.len);
1458 targ->len = sl;
1459 }
1460 check_last(targ);
1461 S->rep = targ;
1462 }
1463
1464 BitSubString BitString::at(int first, int len)
1465 {
1466 return BitSubString(this, first, len);
1467 }
1468
1469 BitSubString BitString::before(int pos)
1470 {
1471 return BitSubString(this, 0, pos);
1472 }
1473
1474 BitSubString BitString::after(int pos)
1475 {
1476 return BitSubString(this, pos + 1, rep->len - (pos + 1));
1477 }
1478
1479 BitSubString BitString::at(BitString& y, int startpos = 0)
1480 {
1481 int first = search(startpos, rep->len, y.rep->s, 0, y.rep->len);
1482 return BitSubString(this, first, y.rep->len);
1483 }
1484
1485 BitSubString BitString::before(BitString& y, int startpos = 0)
============ Listing of BitString.cc ============ PAGE 28
1486 {
1487 int last = search(startpos, rep->len, y.rep->s, 0, y.rep->len);
1488 return BitSubString(this, 0, last);
1489 }
1490
1491 BitSubString BitString::after(BitString& y, int startpos = 0)
1492 {
1493 int first = search(startpos, rep->len, y.rep->s, 0, y.rep->len);
1494 if (first >= 0) first += y.rep->len;
1495 return BitSubString(this, first, rep->len - first);
1496 }
1497
1498
1499 BitSubString BitString::at(BitSubString& y, int startpos = 0)
1500 {
1501 int first = search(startpos, rep->len, y.S->rep->s, y.pos, y.len);
1502 return BitSubString(this, first, y.len);
1503 }
1504
1505 BitSubString BitString::before(BitSubString& y, int startpos = 0)
1506 {
1507 int last = search(startpos, rep->len, y.S->rep->s, y.pos, y.len);
1508 return BitSubString(this, 0, last);
1509 }
1510
1511 BitSubString BitString::after(BitSubString& y, int startpos = 0)
1512 {
1513 int first = search(startpos, rep->len, y.S->rep->s, y.pos, y.len);
1514 if (first >= 0) first += y.len;
1515 return BitSubString(this, first, rep->len - first);
1516 }
1517
1518 BitSubString BitString::at(BitPattern& r, int startpos = 0)
1519 {
1520 int first = r.search(rep->s, startpos, rep->len);
1521 return BitSubString(this, first, r.pattern.rep->len);
1522 }
1523
1524
1525 BitSubString BitString::before(BitPattern& r, int startpos = 0)
1526 {
1527 int first = r.search(rep->s, startpos, rep->len);
1528 return BitSubString(this, 0, first);
1529 }
1530
1531 BitSubString BitString::after(BitPattern& r, int startpos = 0)
1532 {
1533 int first = r.search(rep->s, startpos, rep->len);
1534 if (first >= 0) first += r.pattern.rep->len;
1535 return BitSubString(this, first, rep->len - first);
1536 }
1537
1538 BitStrTmp common_prefix(BitString& x, BitString& y, int startpos = 0)
1539 {
1540 unsigned int xl = x.rep->len;
============ Listing of BitString.cc ============ PAGE 29
1541 unsigned int yl = y.rep->len;
1542
1543 int startx, starty;
1544 if (startpos < 0)
1545 {
1546 startx = xl + startpos;
1547 starty = yl + startpos;
1548 }
1549 else
1550 startx = starty = startpos;
1551
1552 if (startx < 0 || startx >= xl || starty < 0 || starty >= yl)
1553 return (&_nilBitStrRep);
1554
1555 unsigned short* xs = &(x.rep->s[BitStr_index(startx)]);
1556 unsigned short a = *xs++;
1557 int xp = startx;
1558
1559 unsigned short* ys = &(y.rep->s[BitStr_index(starty)]);
1560 unsigned short b = *ys++;
1561 int yp = starty;
1562
1563 for(; xp < xl && yp < yl; ++xp, ++yp)
1564 {
1565 unsigned short xbit = 1 << (BitStr_pos(xp));
1566 unsigned short ybit = 1 << (BitStr_pos(yp));
1567 if (((a & xbit) == 0) != ((b & ybit) == 0))
1568 break;
1569 if (xbit == MAXBIT)
1570 a = *xs++;
1571 if (ybit == MAXBIT)
1572 b = *ys++;
1573 }
1574 return (BStr_alloc(0, x.rep->s, startx, xp, xp - startx));
1575 }
1576
1577
1578 BitStrTmp common_suffix(BitString& x, BitString& y, int startpos = -1)
1579 {
1580 unsigned int xl = x.rep->len;
1581 unsigned int yl = y.rep->len;
1582
1583 int startx, starty;
1584 if (startpos < 0)
1585 {
1586 startx = xl + startpos;
1587 starty = yl + startpos;
1588 }
1589 else
1590 startx = starty = startpos;
1591
1592 if (startx < 0 || startx >= xl || starty < 0 || starty >= yl)
1593 return (&_nilBitStrRep);
1594
1595 unsigned short* xs = &(x.rep->s[BitStr_index(startx)]);
============ Listing of BitString.cc ============ PAGE 30
1596 unsigned short a = *xs--;
1597 int xp = startx;
1598
1599 unsigned short* ys = &(y.rep->s[BitStr_index(starty)]);
1600 unsigned short b = *ys--;
1601 int yp = starty;
1602
1603 for(; xp >= 0 && yp >= 0; --xp, --yp)
1604 {
1605 unsigned short xbit = 1 << (BitStr_pos(xp));
1606 unsigned short ybit = 1 << (BitStr_pos(yp));
1607 if (((a & xbit) == 0) != ((b & ybit) == 0))
1608 break;
1609 if (xbit == 1)
1610 a = *xs--;
1611 if (ybit == 1)
1612 b = *ys--;
1613 }
1614 return (BStr_alloc(0, x.rep->s, xp+1, startx+1, startx - xp));
1615 }
1616
1617 BitStrTmp reverse(BitString& x)
1618 {
1619 unsigned int yl = x.rep->len;
1620 BitStrRep* y = BStr_resize(0, yl);
1621 if (yl > 0)
1622 {
1623 unsigned short* ls = x.rep->s;
1624 unsigned short lm = 1;
1625 unsigned short* rs = &(y->s[BitStr_index(yl - 1)]);
1626 unsigned short rm = 1 << (BitStr_pos(yl - 1));
1627 for (unsigned int l = 0; l < yl; ++l)
1628 {
1629 if (*ls & lm)
1630 *rs |= rm;
1631 if (lm == MAXBIT)
1632 {
1633 ++ls;
1634 lm = 1;
1635 }
1636 else
1637 lm <<= 1;
1638 if (rm == 1)
1639 {
1640 --rs;
1641 rm = MAXBIT;
1642 }
1643 else
1644 rm >>= 1;
1645 }
1646 }
1647 return y;
1648 }
1649
1650 extern Obstack _libgxx_io_ob;
============ Listing of BitString.cc ============ PAGE 31
1651 extern char* _libgxx_io_oblast;
1652
1653 extern AllocQueue _libgxx_fmtq;
1654
1655 const char* BitStringtoa(BitString& x, char f = '0', char t = '1')
1656 {
1657 int wrksiz = x.length() + 2;
1658 char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
1659 char* fmt = fmtbase;
1660 unsigned int xl = x.rep->len;
1661 unsigned short* s = x.rep->s;
1662 unsigned short a = 0;
1663
1664 for (unsigned int i = 0; i < xl; ++i)
1665 {
1666 if (i % BITSTRBITS == 0)
1667 a = *s++;
1668 *fmt++ = (a & 1)? t : f;
1669 a >>= 1;
1670 }
1671
1672 *fmt = 0;
1673
1674 return fmtbase;
1675 }
1676
1677 BitStrTmp atoBitString(const char* s, char f = '0', char t = '1')
1678 {
1679 int sl = strlen(s);
1680 BitStrRep* r = BStr_resize(0, sl);
1681 if (sl != 0)
1682 {
1683 unsigned int rl = 0;
1684 unsigned short* rs = r->s;
1685 unsigned short a = 0;
1686 unsigned short m = 1;
1687 unsigned int i = 0;
1688 for(;;)
1689 {
1690 char ch = s[i];
1691 if (ch != t && ch != f)
1692 {
1693 *rs = a;
1694 break;
1695 }
1696 ++rl;
1697 if (ch == t)
1698 a |= m;
1699 if (++i == sl)
1700 {
1701 *rs = a;
1702 break;
1703 }
1704 else if (i % BITSTRBITS == 0)
1705 {
============ Listing of BitString.cc ============ PAGE 32
1706 *rs++ = a;
1707 a = 0;
1708 m = 1;
1709 }
1710 else
1711 m <<= 1;
1712 }
1713 r = BStr_resize(r, rl);
1714 }
1715 return (r);
1716 }
1717
1718 ostream& operator << (ostream& s, BitString& x)
1719 {
1720 return s << BitStringtoa(x);
1721 }
1722
1723
1724 const char* BitPatterntoa(BitPattern& p, char f = '0',char t = '1',char x='X')
1725 {
1726 unsigned int pl = p.pattern.rep->len;
1727 unsigned int ml = p.mask.rep->len;
1728 unsigned int l = pl <? ml;
1729
1730 int wrksiz = l + 2;
1731 char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
1732 char* fmt = fmtbase;
1733
1734 unsigned short* ps = p.pattern.rep->s;
1735 unsigned short* ms = p.mask.rep->s;
1736 unsigned short a = 0;
1737 unsigned short m = 0;
1738
1739 for (unsigned int i = 0; i < l; ++i)
1740 {
1741 if (i % BITSTRBITS == 0)
1742 {
1743 a = *ps++;
1744 m = *ms++;
1745 }
1746 if (m & 1)
1747 *fmt++ =(a & 1)? t : f;
1748 else
1749 *fmt++ = x;
1750 a >>= 1;
1751 m >>= 1;
1752 }
1753
1754 *fmt = 0;
1755 return fmtbase;
1756 }
1757
1758 BitPattern atoBitPattern(const char* s,char f = '0',char t = '1',char x = 'X')
1759 {
1760 BitPattern r;
============ Listing of BitString.cc ============ PAGE 33
1761 int sl = strlen(s);
1762 if (sl != 0)
1763 {
1764 unsigned int rl = 0;
1765 r.pattern.rep = BStr_resize(r.pattern.rep, sl);
1766 r.mask.rep = BStr_resize(r.mask.rep, sl);
1767 unsigned short* rs = r.pattern.rep->s;
1768 unsigned short* ms = r.mask.rep->s;
1769 unsigned short a = 0;
1770 unsigned short b = 0;
1771 unsigned short m = 1;
1772 unsigned int i = 0;
1773 for(;;)
1774 {
1775 char ch = s[i];
1776 if (ch != t && ch != f && ch != x)
1777 {
1778 *rs = a;
1779 *ms = b;
1780 break;
1781 }
1782 ++rl;
1783 if (ch == t)
1784 {
1785 a |= m;
1786 b |= m;
1787 }
1788 else if (ch == f)
1789 {
1790 b |= m;
1791 }
1792 if (++i == sl)
1793 {
1794 *rs = a;
1795 *ms = b;
1796 break;
1797 }
1798 else if (i % BITSTRBITS == 0)
1799 {
1800 *rs++ = a;
1801 *ms++ = b;
1802 a = 0;
1803 b = 0;
1804 m = 1;
1805 }
1806 else
1807 m <<= 1;
1808 }
1809 r.pattern.rep = BStr_resize(r.pattern.rep, rl);
1810 r.mask.rep = BStr_resize(r.mask.rep, rl);
1811 }
1812 return r;
1813 }
1814
1815 ostream& operator << (ostream& s, BitPattern& x)
============ Listing of BitString.cc ============ PAGE 34
1816 {
1817 return s << BitPatterntoa(x);
1818 }
1819
1820 int BitString::OK()
1821 {
1822 int v = rep != 0; // have a rep;
1823 v &= BitStr_len(rep->len) <= rep->sz; // within allocated size
1824 if (!v) error("invariant failure");
1825 return v;
1826 }
1827
1828 int BitSubString::OK()
1829 {
1830 int v = S != 0; // point to a bitstring
1831 v &= S->OK(); // that is valid
1832 v &= pos >= 0 && len >= 0; // valid indices
1833 v &= pos + len <= S->rep->len; // within bounds of targ
1834 if (!v) (*lib_error_handler)("BitSubString", "invariant failure");
1835 return v;
1836 }
1837
1838 int BitPattern::OK()
1839 {
1840 int v = pattern.OK() && mask.OK();
1841 if (!v) (*lib_error_handler)("BitPattern", "invariant failure");
1842 return v;
1843 }
1844
============ Listing Complete ============
============ Listing of BitString.s ============ PAGE 1
1 #NO_APP
2 gcc_compiled.:
3 .text
4 .even
5 ___9BitStrTmpP9BitStrRep:
6 link a6,#0
7 movel a6@(8),a0
8 movel #__nilBitStrRep,a0@
9 movel a6@(12),a0@
10 movel a0,d0
11 unlk a6
12 rts
13 LC0:
14 .ascii "illegal bit index\0"
15 LC1:
16 .ascii "BitString\0"
17 .even
18 .globl _error__9BitStringPc
19 _error__9BitStringPc:
20 link a6,#0
21 movel a6@(12),sp@-
22 pea LC1
23 movel _lib_error_handler,a0
24 jbsr a0@
25 unlk a6
26 rts
27 .globl __nilBitStrRep
28 .data
29 .even
30 __nilBitStrRep:
31 .long 0
32 .word 1
33 .word 0
34 .even
35 __nil_BitString:
36 .skip 4
37 .text
38 .even
39 _bit_transfer__FPUsiiT0i:
40 link a6,#-12
41 moveml #0x3f3c,sp@-
42 movel a6@(8),a4
43 movel a6@(16),d0
44 movel a6@(20),a5
45 cmpl a6@(12),d0
46 jle L1390
47 tstl a4
48 jeq L1390
49 cmpl a4,a5
50 jne L1391
51 movel a6@(12),d7
52 cmpl a6@(24),d7
53 jeq L1390
54 L1391:
55 movel a6@(12),d6
============ Listing of BitString.s ============ PAGE 2
56 lsrl #4,d6
57 moveq #15,d7
58 andl a6@(12),d7
59 movel d7,a6@(-4)
60 movel a6@(24),d7
61 lsrl #4,d7
62 movel d7,a0
63 moveq #15,d7
64 andl a6@(24),d7
65 movel d7,a3
66 tstl a6@(-4)
67 jne L1397
68 tstl a3
69 jne L1397
70 lea a4@(d6:l:2),a3
71 lea a5@(a0:l:2),a2
72 movel d0,d3
73 subl a6@(12),d3
74 cmpl a3,a2
75 jeq L1390
76 movel d3,d2
77 lsrl #4,d2
78 tstl d2
79 jle L1400
80 movel d2,d7
81 asll #1,d7
82 movel d7,sp@-
83 movel a2,sp@-
84 movel a3,sp@-
85 jbsr _bcopy
86 L1400:
87 moveq #15,d0
88 andl d3,d0
89 movel #65535,d1
90 asll d0,d1
91 movew d1,d0
92 notw d0
93 andw a3@(d2:l:2),d0
94 andw a2@(d2:l:2),d1
95 orw d1,d0
96 movew d0,a2@(d2:l:2)
97 jra L1390
98 L1397:
99 subql #1,d0
100 movel d0,d5
101 lsrl #4,d5
102 moveq #15,d7
103 andl d0,d7
104 movel d7,a6@(-8)
105 subl a6@(12),d0
106 addl a6@(24),d0
107 movel d0,d7
108 lsrl #4,d7
109 movel d7,a6@(-12)
110 moveq #15,d7
============ Listing of BitString.s ============ PAGE 3
111 andl d7,d0
112 movel d0,a2
113 cmpl a6@(-12),a0
114 jne L1405
115 cmpl d6,d5
116 jne L1406
117 moveq #16,d1
118 subl a3,d1
119 movel #65535,d0
120 asrl d1,d0
121 movel a2,d1
122 addql #1,d1
123 movel #65535,d2
124 asll d1,d2
125 orw d2,d0
126 movew d0,d2
127 andw a5@(a0:l:2),d2
128 clrl d1
129 movew a4@(d6:l:2),d1
130 movel a6@(-4),d7
131 asrl d7,d1
132 jra L1428
133 L1406:
134 moveq #16,d1
135 subl a3,d1
136 movel #65535,d0
137 asrl d1,d0
138 movel a2,d1
139 addql #1,d1
140 movel #65535,d2
141 asll d1,d2
142 orw d2,d0
143 movew d0,d2
144 andw a5@(a0:l:2),d2
145 clrl d1
146 movew a4@(d6:l:2),d1
147 movel a6@(-4),d7
148 asrl d7,d1
149 clrl d3
150 movew a4@(2,d6:l:2),d3
151 moveq #16,d4
152 subl d7,d4
153 asll d4,d3
154 orl d3,d1
155 L1428:
156 movel a3,d7
157 asll d7,d1
158 notw d0
159 andw d0,d1
160 orw d1,d2
161 movew d2,a5@(a0:l:2)
162 jra L1390
163 L1405:
164 cmpl d6,d5
165 jne L1408
============ Listing of BitString.s ============ PAGE 4
166 movel a2,d0
167 addql #1,d0
168 movel #65535,d3
169 asll d0,d3
170 movew d3,d1
171 movel a6@(-12),d7
172 andw a5@(d7:l:2),d1
173 clrl d0
174 movew a4@(d6:l:2),d0
175 moveq #15,d2
176 subl a6@(-8),d2
177 movel d0,d7
178 asll d2,d7
179 movel d7,d2
180 moveq #15,d4
181 subl a2,d4
182 asrl d4,d2
183 notw d3
184 andw d3,d2
185 moveq #16,d4
186 subl a3,d4
187 movel #65535,d3
188 asrl d4,d3
189 movew d3,d4
190 andw a5@(a0:l:2),d4
191 movel a6@(-4),d7
192 asrl d7,d0
193 movel a3,d7
194 asll d7,d0
195 notw d3
196 andw d3,d0
197 orw d0,d4
198 movew d4,a5@(a0:l:2)
199 orw d2,d1
200 movel a6@(-12),d7
201 movew d1,a5@(d7:l:2)
202 jra L1390
203 L1408:
204 movel a2,d0
205 addql #1,d0
206 movel #65535,d1
207 asll d0,d1
208 movew d1,d2
209 movel a6@(-12),d7
210 andw a5@(d7:l:2),d2
211 clrl d0
212 movew a4@(d5:l:2),d0
213 moveq #15,d3
214 subl a6@(-8),d3
215 asll d3,d0
216 clrl d3
217 movew a4@(-2,d5:l:2),d3
218 movel a6@(-8),d4
219 addql #1,d4
220 asrl d4,d3
============ Listing of BitString.s ============ PAGE 5
221 orl d3,d0
222 moveq #15,d3
223 subl a2,d3
224 asrl d3,d0
225 notw d1
226 andw d1,d0
227 orw d0,d2
228 movew d2,a1
229 moveq #16,d0
230 subl a3,d0
231 movel #65535,d1
232 asrl d0,d1
233 movew d1,d2
234 andw a5@(a0:l:2),d2
235 clrl d0
236 movew a4@(d6:l:2),d0
237 movel a6@(-4),d7
238 asrl d7,d0
239 clrl d3
240 movew a4@(2,d6:l:2),d3
241 moveq #16,d4
242 subl d7,d4
243 asll d4,d3
244 orl d3,d0
245 movel a3,d7
246 asll d7,d0
247 notw d1
248 andw d1,d0
249 movew d2,d4
250 orw d0,d4
251 cmpl a5,a4
252 jne L1411
253 movel a6@(24),d7
254 cmpl a6@(12),d7
255 jge L1410
256 L1411:
257 movel a6@(-4),d3
258 subl a3,d3
259 jpl L1412
260 moveq #16,d7
261 addl d7,d3
262 jra L1413
263 L1412:
264 addql #1,d6
265 L1413:
266 movel a6@(-12),a3
267 subqw #1,a3
268 clrl d2
269 moveq #16,d7
270 subl d3,d7
271 movel d7,a2
272 L1414:
273 cmpl a0,a3
274 jne L1417
275 movew d4,a5@(a0:l:2)
============ Listing of BitString.s ============ PAGE 6
276 movel a6@(-12),d7
277 movew a1,a5@(d7:l:2)
278 jra L1390
279 L1417:
280 movew a4@(d6:l:2),d2
281 movel d2,d0
282 asrl d3,d0
283 movew d0,d1
284 addql #1,d6
285 cmpl d6,d5
286 jlt L1419
287 movew a4@(d6:l:2),d2
288 movel d2,d0
289 movel a2,d7
290 asll d7,d0
291 orw d0,d1
292 L1419:
293 movew d4,a5@(a0:l:2)
294 addqw #1,a0
295 movew d1,d4
296 jra L1414
297 L1410:
298 movel a6@(-8),d3
299 subl a2,d3
300 tstl d3
301 jgt L1421
302 moveq #16,d7
303 addl d7,d3
304 subql #1,d5
305 L1421:
306 lea a0@(1),a3
307 clrl d2
308 moveq #16,d7
309 subl d3,d7
310 movel d7,a2
311 L1422:
312 cmpl a6@(-12),a3
313 jne L1425
314 movel a6@(-12),d7
315 movew a1,a5@(d7:l:2)
316 movew d4,a5@(a0:l:2)
317 jra L1390
318 L1425:
319 movew a4@(d5:l:2),d2
320 movel d2,d0
321 movel a2,d7
322 asll d7,d0
323 movew d0,d1
324 subql #1,d5
325 cmpl d5,d6
326 jgt L1427
327 movew a4@(d5:l:2),d2
328 movel d2,d0
329 asrl d3,d0
330 orw d0,d1
============ Listing of BitString.s ============ PAGE 7
331 L1427:
332 movel a6@(-12),d7
333 movew a1,a5@(d7:l:2)
334 subql #1,a6@(-12)
335 movew d1,a1
336 jra L1422
337 L1390:
338 moveml a6@(-52),#0x3cfc
339 unlk a6
340 rts
341 LC2:
342 .ascii "Requested length out of range\0"
343 .even
344 .globl _BStr_alloc__FP9BitStrRepPUsiii
345 _BStr_alloc__FP9BitStrRepPUsiii:
346 link a6,#0
347 moveml #0x3f30,sp@-
348 movel a6@(8),a3
349 movel a6@(12),d4
350 movel a6@(16),d6
351 movel a6@(20),d5
352 movel a6@(24),d3
353 cmpl #__nilBitStrRep,a3
354 jne L1442
355 subl a3,a3
356 L1442:
357 tstl d3
358 jge L1443
359 clrl d3
360 L1443:
361 movel d3,d0
362 lsrl #4,d0
363 movel d0,d1
364 addql #1,d1
365 tstl a3
366 jeq L1446
367 clrl d0
368 movew a3@(4),d0
369 cmpl d1,d0
370 jge L1445
371 L1446:
372 movel d3,d0
373 lsrl #4,d0
374 addql #1,d0
375 asll #1,d0
376 moveq #12,d7
377 addl d7,d0
378 moveq #8,d2
379 cmpl d2,d0
380 jls L1458
381 L1451:
382 lsll #1,d2
383 cmpl d2,d0
384 jhi L1451
385 L1458:
============ Listing of BitString.s ============ PAGE 8
386 subql #4,d2
387 cmpl #32767,d2
388 jls L1452
389 pea LC2
390 pea LC1
391 movel _lib_error_handler,a0
392 jbsr a0@
393 addqw #8,sp
394 L1452:
395 movel d2,sp@-
396 jbsr ___builtin_new
397 movel d0,a2
398 movel d2,sp@-
399 movel a2,sp@-
400 jbsr _bzero
401 movel d2,d0
402 subql #6,d0
403 lsrl #1,d0
404 movew d0,a2@(4)
405 addw #12,sp
406 jra L1453
407 L1445:
408 movel a3,a2
409 L1453:
410 movel d3,a2@
411 tstl d4
412 jeq L1454
413 tstl d5
414 jle L1454
415 movel a2,d0
416 addql #6,d0
417 cmpl d4,d0
418 jne L1455
419 tstl d6
420 jle L1454
421 L1455:
422 clrl sp@-
423 pea a2@(6)
424 movel d5,sp@-
425 movel d6,sp@-
426 movel d4,sp@-
427 jbsr _bit_transfer__FPUsiiT0i
428 addw #20,sp
429 L1454:
430 movel a2@,d0
431 lsrl #4,d0
432 moveq #15,d1
433 andl a2@,d1
434 moveq #16,d7
435 subl d1,d7
436 movel d7,d1
437 movel #65535,d2
438 asrl d1,d2
439 andw d2,a2@(6,d0:l:2)
440 cmpl a3,a2
============ Listing of BitString.s ============ PAGE 9
441 jeq L1457
442 tstl a3
443 jeq L1457
444 movel a3,sp@-
445 jbsr ___builtin_delete
446 L1457:
447 movel a2,d0
448 moveml a6@(-32),#0xcfc
449 unlk a6
450 rts
451 .even
452 .globl _BStr_resize__FP9BitStrRepi
453 _BStr_resize__FP9BitStrRepi:
454 link a6,#0
455 moveml #0x3830,sp@-
456 movel a6@(8),a3
457 movel a6@(12),d3
458 jge L1460
459 clrl d3
460 L1460:
461 movel d3,d0
462 lsrl #4,d0
463 movel d0,d1
464 addql #1,d1
465 tstl a3
466 jeq L1463
467 cmpl #__nilBitStrRep,a3
468 jne L1462
469 L1463:
470 movel d3,d0
471 lsrl #4,d0
472 addql #1,d0
473 asll #1,d0
474 moveq #12,d4
475 addl d4,d0
476 moveq #8,d2
477 cmpl d2,d0
478 jls L1482
479 L1468:
480 lsll #1,d2
481 cmpl d2,d0
482 jhi L1468
483 L1482:
484 subql #4,d2
485 cmpl #32767,d2
486 jls L1469
487 pea LC2
488 pea LC1
489 movel _lib_error_handler,a0
490 jbsr a0@
491 addqw #8,sp
492 L1469:
493 movel d2,sp@-
494 jbsr ___builtin_new
495 movel d0,a2
============ Listing of BitString.s ============ PAGE 10
496 movel d2,sp@-
497 movel a2,sp@-
498 jbsr _bzero
499 movel d2,d0
500 subql #6,d0
501 lsrl #1,d0
502 movew d0,a2@(4)
503 jra L1470
504 L1462:
505 clrl d0
506 movew a3@(4),d0
507 cmpl d1,d0
508 jge L1471
509 movel d3,d0
510 lsrl #4,d0
511 addql #1,d0
512 asll #1,d0
513 moveq #12,d4
514 addl d4,d0
515 moveq #8,d2
516 cmpl d2,d0
517 jls L1481
518 L1476:
519 lsll #1,d2
520 cmpl d2,d0
521 jhi L1476
522 L1481:
523 subql #4,d2
524 cmpl #32767,d2
525 jls L1477
526 pea LC2
527 pea LC1
528 movel _lib_error_handler,a0
529 jbsr a0@
530 addqw #8,sp
531 L1477:
532 movel d2,sp@-
533 jbsr ___builtin_new
534 movel d0,a2
535 movel d2,sp@-
536 movel a2,sp@-
537 jbsr _bzero
538 movel d2,d0
539 subql #6,d0
540 lsrl #1,d0
541 movew d0,a2@(4)
542 addw #12,sp
543 movel a3@,d0
544 lsrl #4,d0
545 addql #1,d0
546 asll #1,d0
547 movel d0,sp@-
548 pea a2@(6)
549 pea a3@(6)
550 jbsr _bcopy
============ Listing of BitString.s ============ PAGE 11
551 movel a3,sp@-
552 jbsr ___builtin_delete
553 jra L1470
554 L1471:
555 movel a3,a2
556 L1470:
557 movel d3,a2@
558 movel d3,d0
559 lsrl #4,d0
560 moveq #15,d1
561 andl a2@,d1
562 moveq #16,d4
563 subl d1,d4
564 movel d4,d1
565 movel #65535,d2
566 asrl d1,d2
567 andw d2,a2@(6,d0:l:2)
568 movel a2,d0
569 moveml a6@(-20),#0xc1c
570 unlk a6
571 rts
572 .even
573 .globl _BStr_copy__FP9BitStrRepT0
574 _BStr_copy__FP9BitStrRepT0:
575 link a6,#0
576 moveml #0x3c38,sp@-
577 movel a6@(8),a3
578 movel a6@(12),a4
579 cmpl a3,a4
580 jne L1484
581 movel a3,d0
582 jra L1483
583 L1484:
584 cmpl #__nilBitStrRep,a3
585 jne L1485
586 subl a3,a3
587 L1485:
588 cmpl #__nilBitStrRep,a4
589 jne L1486
590 subl a4,a4
591 L1486:
592 tstl a4
593 jne L1487
594 tstl a3
595 jne L1488
596 moveq #14,d0
597 moveq #8,d2
598 L1493:
599 lsll #1,d2
600 cmpl d2,d0
601 jhi L1493
602 subql #4,d2
603 cmpl #32767,d2
604 jls L1494
605 pea LC2
============ Listing of BitString.s ============ PAGE 12
606 pea LC1
607 movel _lib_error_handler,a0
608 jbsr a0@
609 addqw #8,sp
610 L1494:
611 movel d2,sp@-
612 jbsr ___builtin_new
613 movel d0,a2
614 movel d2,sp@-
615 movel a2,sp@-
616 jbsr _bzero
617 movel d2,d0
618 subql #6,d0
619 lsrl #1,d0
620 movew d0,a2@(4)
621 jra L1495
622 L1488:
623 movel a3,a2
624 L1495:
625 clrl a2@
626 jra L1496
627 L1487:
628 movel a4@,d3
629 movel d3,d0
630 lsrl #4,d0
631 movel d0,d4
632 addql #1,d4
633 tstl a3
634 jeq L1499
635 clrl d0
636 movew a3@(4),d0
637 cmpl d4,d0
638 jge L1498
639 L1499:
640 movel d3,d0
641 lsrl #4,d0
642 addql #1,d0
643 asll #1,d0
644 moveq #12,d5
645 addl d5,d0
646 moveq #8,d2
647 cmpl d2,d0
648 jls L1509
649 L1504:
650 lsll #1,d2
651 cmpl d2,d0
652 jhi L1504
653 L1509:
654 subql #4,d2
655 cmpl #32767,d2
656 jls L1505
657 pea LC2
658 pea LC1
659 movel _lib_error_handler,a0
660 jbsr a0@
============ Listing of BitString.s ============ PAGE 13
661 addqw #8,sp
662 L1505:
663 movel d2,sp@-
664 jbsr ___builtin_new
665 movel d0,a2
666 movel d2,sp@-
667 movel a2,sp@-
668 jbsr _bzero
669 movel d2,d0
670 subql #6,d0
671 lsrl #1,d0
672 movew d0,a2@(4)
673 addw #12,sp
674 tstl a3
675 jeq L1507
676 movel a3,sp@-
677 jbsr ___builtin_delete
678 addqw #4,sp
679 jra L1507
680 L1498:
681 movel a3,a2
682 L1507:
683 asll #1,d4
684 movel d4,sp@-
685 pea a2@(6)
686 pea a4@(6)
687 jbsr _bcopy
688 movel d3,a2@
689 L1496:
690 movel a2@,d0
691 lsrl #4,d0
692 moveq #15,d1
693 andl a2@,d1
694 moveq #16,d5
695 subl d1,d5
696 movel d5,d1
697 movel #65535,d2
698 asrl d1,d2
699 andw d2,a2@(6,d0:l:2)
700 movel a2,d0
701 L1483:
702 moveml a6@(-28),#0x1c3c
703 unlk a6
704 rts
705 .even
706 .globl _op$eq__FR9BitStringT0
707 _op$eq__FR9BitStringT0:
708 link a6,#0
709 moveml #0x2030,sp@-
710 movel a6@(8),a3
711 movel a6@(12),a2
712 clrl d2
713 movel a3@,a1
714 movel a2@,a0
715 movel a1@,d1
============ Listing of BitString.s ============ PAGE 14
716 cmpl a0@,d1
717 jne L1511
718 movel d1,d0
719 lsrl #4,d0
720 addql #1,d0
721 asll #1,d0
722 movel d0,sp@-
723 movel a2@,d1
724 addql #6,d1
725 movel d1,sp@-
726 movel a3@,d1
727 addql #6,d1
728 movel d1,sp@-
729 jbsr _bcmp
730 tstl d0
731 jne L1511
732 moveq #1,d2
733 L1511:
734 movel d2,d0
735 moveml a6@(-12),#0xc04
736 unlk a6
737 rts
738 .even
739 .globl _op$le__FR9BitStringT0
740 _op$le__FR9BitStringT0:
741 link a6,#0
742 movel a2,sp@-
743 movel a6@(8),a1
744 movel a6@(12),a2
745 movel a1@,a0
746 movel a0@,d0
747 movel a2@,a0
748 cmpl a0@,d0
749 jhi L1521
750 movel a1@,a0
751 addqw #6,a0
752 movel a2@,a1
753 addqw #6,a1
754 lsrl #4,d0
755 addql #1,d0
756 lea a0@(d0:l:2),a2
757 L1522:
758 cmpl a0,a2
759 jls L1520
760 movew a1@+,d0
761 movew a0@+,d1
762 orw d0,d1
763 cmpw d1,d0
764 jeq L1522
765 L1521:
766 clrl d0
767 jra L1513
768 L1520:
769 moveq #1,d0
770 L1513:
============ Listing of BitString.s ============ PAGE 15
771 movel a6@(-4),a2
772 unlk a6
773 rts
774 .even
775 .globl _op$lt__FR9BitStringT0
776 _op$lt__FR9BitStringT0:
777 link a6,#0
778 moveml #0x3030,sp@-
779 movel a6@(8),a1
780 movel a6@(12),a2
781 movel a1@,a0
782 movew a0@(2),d1
783 movel a2@,a0
784 movew a0@(2),d2
785 cmpw d1,d2
786 jcs L1539
787 movel a1@,a1
788 addqw #6,a1
789 movel a2@,a0
790 addqw #6,a0
791 clrl d0
792 movew d1,d0
793 lsrl #4,d0
794 addql #1,d0
795 lea a1@(d0:l:2),a2
796 clrl d0
797 movew d2,d0
798 lsrl #4,d0
799 addql #1,d0
800 lea a0@(d0:l:2),a3
801 clrl d3
802 L1541:
803 cmpl a1,a2
804 jls L1540
805 movew a1@+,d2
806 movew a0@+,d0
807 movew d2,d1
808 orw d0,d1
809 cmpw d1,d0
810 jne L1539
811 cmpw d1,d2
812 jeq L1541
813 moveq #1,d3
814 jra L1541
815 L1540:
816 tstl d3
817 jne L1542
818 jra L1535
819 L1538:
820 tstw a0@+
821 jeq L1535
822 L1542:
823 moveq #1,d0
824 jra L1523
825 L1535:
============ Listing of BitString.s ============ PAGE 16
826 cmpl a0,a3
827 jhi L1538
828 L1539:
829 clrl d0
830 L1523:
831 moveml a6@(-16),#0xc0c
832 unlk a6
833 rts
834 .even
835 .globl _lcompare__FR9BitStringT0
836 _lcompare__FR9BitStringT0:
837 link a6,#0
838 moveml #0x3e30,sp@-
839 movel a6@(8),a1
840 movel a6@(12),a0
841 movel a1@,a2
842 movel a2@,d2
843 movel a0@,a2
844 movel a2@,d1
845 movel a1@,a1
846 addqw #6,a1
847 movel d2,d0
848 lsrl #4,d0
849 addql #1,d0
850 lea a1@(d0:l:2),a2
851 movel a0@,a0
852 addqw #6,a0
853 movel d1,d0
854 lsrl #4,d0
855 addql #1,d0
856 lea a0@(d0:l:2),a3
857 L1556:
858 cmpl a1,a2
859 jls L1547
860 cmpl a0,a3
861 jls L1547
862 movew a1@+,d6
863 movew a0@+,d5
864 cmpw d6,d5
865 jeq L1556
866 moveq #1,d2
867 clrl d4
868 clrl d3
869 L1549:
870 movew d6,d0
871 andw d2,d0
872 sne d1
873 andw #1,d1
874 movew d5,d0
875 andw d2,d0
876 sne d0
877 andw #1,d0
878 movew d1,d4
879 movew d0,d3
880 movel d4,d0
============ Listing of BitString.s ============ PAGE 17
881 subl d3,d0
882 jne L1543
883 lslw #1,d2
884 jra L1549
885 L1547:
886 movel d2,d0
887 subl d1,d0
888 L1543:
889 moveml a6@(-28),#0xc7c
890 unlk a6
891 rts
892 .even
893 .globl _count__9BitStringi
894 _count__9BitStringi:
895 link a6,#0
896 moveml #0x3e00,sp@-
897 movel a6@(8),a0
898 movel a0@,a1
899 movel a1@,d0
900 lsrl #4,d0
901 moveq #15,d1
902 andl a1@,d1
903 moveq #16,d6
904 subl d1,d6
905 movel d6,d1
906 movel #65535,d2
907 asrl d1,d2
908 andw d2,a1@(6,d0:l:2)
909 movel a0@,a1
910 movel a1@,d1
911 movel d1,d0
912 lsrl #4,d0
913 addql #1,d0
914 moveq #15,d5
915 andl d1,d5
916 clrl d3
917 movel a0@,a0
918 addqw #6,a0
919 lea a0@(-2,d0:l:2),a1
920 tstl a6@(12)
921 jeq L1561
922 L1593:
923 cmpl a0,a1
924 jls L1592
925 movew a0@+,d2
926 clrl d1
927 L1568:
928 tstw d2
929 jeq L1593
930 btst #0,d2
931 jeq L1567
932 addql #1,d3
933 L1567:
934 lsrw #1,d2
935 addql #1,d1
============ Listing of BitString.s ============ PAGE 18
936 moveq #15,d6
937 cmpl d1,d6
938 jge L1568
939 jra L1593
940 L1592:
941 movew a0@,d2
942 clrl d1
943 cmpl d1,d5
944 jle L1575
945 L1574:
946 tstw d2
947 jeq L1575
948 btst #0,d2
949 jeq L1573
950 addql #1,d3
951 L1573:
952 lsrw #1,d2
953 addql #1,d1
954 cmpl d1,d5
955 jgt L1574
956 jra L1575
957 L1561:
958 movew #32768,d4
959 cmpl a0,a1
960 jls L1590
961 L1583:
962 movew a0@+,d2
963 clrl d1
964 L1582:
965 movew d2,d0
966 andw d4,d0
967 jne L1581
968 addql #1,d3
969 L1581:
970 lslw #1,d2
971 addql #1,d1
972 moveq #15,d6
973 cmpl d1,d6
974 jge L1582
975 cmpl a0,a1
976 jhi L1583
977 L1590:
978 movel d5,d0
979 subql #1,d0
980 moveq #1,d1
981 asll d0,d1
982 movew d1,d4
983 movew a0@,d2
984 clrl d1
985 cmpl d1,d5
986 jle L1575
987 L1588:
988 movew d2,d0
989 andw d4,d0
990 jne L1587
============ Listing of BitString.s ============ PAGE 19
991 addql #1,d3
992 L1587:
993 lslw #1,d2
994 addql #1,d1
995 cmpl d1,d5
996 jgt L1588
997 L1575:
998 movel d3,d0
999 moveml a6@(-20),#0x7c
1000 unlk a6
1001 rts
1002 .even
1003 .globl _cmpl__FP9BitStrRepT0
1004 _cmpl__FP9BitStrRepT0:
1005 link a6,#0
1006 moveml #0x3020,sp@-
1007 movel a6@(12),a1
1008 movel a6@(8),sp@-
1009 movel a1,sp@-
1010 jbsr _BStr_copy__FP9BitStrRepT0
1011 movel d0,a1
1012 lea a1@(6),a0
1013 movel a1@,d0
1014 lsrl #4,d0
1015 addql #1,d0
1016 lea a0@(d0:l:2),a2
1017 cmpl a0,a2
1018 jls L1600
1019 L1598:
1020 notw a0@+
1021 cmpl a0,a2
1022 jhi L1598
1023 L1600:
1024 movel a1@,d0
1025 lsrl #4,d0
1026 moveq #15,d1
1027 andl a1@,d1
1028 moveq #16,d3
1029 subl d1,d3
1030 movel d3,d1
1031 movel #65535,d2
1032 asrl d1,d2
1033 andw d2,a1@(6,d0:l:2)
1034 movel a1,d0
1035 moveml a6@(-12),#0x40c
1036 unlk a6
1037 rts
1038 .even
1039 .globl _and__FP9BitStrRepN20
1040 _and__FP9BitStrRepN20:
1041 link a6,#0
1042 moveml #0x3c3c,sp@-
1043 movel a6@(8),a2
1044 movel a6@(12),a5
1045 movel a6@(16),a3
============ Listing of BitString.s ============ PAGE 20
1046 cmpl a2,a3
1047 seq d0
1048 moveq #1,d3
1049 andl d0,d3
1050 cmpl a5,a3
1051 seq d0
1052 moveq #1,d4
1053 andl d0,d4
1054 movel a2@,d2
1055 cmpl a5@,d2
1056 jls L1602
1057 movel a5@,d2
1058 L1602:
1059 movel d2,sp@-
1060 movel a3,sp@-
1061 jbsr _BStr_resize__FP9BitStrRepi
1062 movel d0,a3
1063 lea a3@(6),a1
1064 movel d2,d0
1065 lsrl #4,d0
1066 addql #1,d0
1067 lea a1@(d0:l:2),a4
1068 tstl d3
1069 jeq L1604
1070 movel a1,a2
1071 jra L1605
1072 L1604:
1073 addqw #6,a2
1074 L1605:
1075 tstl d4
1076 jeq L1606
1077 movel a1,a0
1078 jra L1613
1079 L1606:
1080 lea a5@(6),a0
1081 jra L1613
1082 L1610:
1083 movew a2@+,d5
1084 andw a0@+,d5
1085 movew d5,a1@+
1086 L1613:
1087 cmpl a1,a4
1088 jhi L1610
1089 movel a3@,d0
1090 lsrl #4,d0
1091 moveq #15,d1
1092 andl a3@,d1
1093 moveq #16,d5
1094 subl d1,d5
1095 movel d5,d1
1096 movel #65535,d2
1097 asrl d1,d2
1098 andw d2,a3@(6,d0:l:2)
1099 movel a3,d0
1100 moveml a6@(-32),#0x3c3c
============ Listing of BitString.s ============ PAGE 21
1101 unlk a6
1102 rts
1103 .even
1104 .globl _or__FP9BitStrRepN20
1105 _or__FP9BitStrRepN20:
1106 link a6,#0
1107 moveml #0x3f3c,sp@-
1108 movel a6@(8),a3
1109 movel a6@(12),d5
1110 movel a6@(16),a4
1111 movel a3@,d4
1112 movel d5,a5
1113 movel a5@,d3
1114 movel d4,d1
1115 cmpl d4,d3
1116 jls L1615
1117 movel d3,d1
1118 L1615:
1119 cmpl a3,a4
1120 seq d2
1121 moveq #1,d7
1122 andl d7,d2
1123 cmpl d5,a4
1124 seq d0
1125 moveq #1,d6
1126 andl d0,d6
1127 movel d1,sp@-
1128 movel a4,sp@-
1129 jbsr _BStr_resize__FP9BitStrRepi
1130 movel d0,a4
1131 lea a4@(6),a2
1132 tstl d2
1133 jeq L1616
1134 movel a2,a1
1135 jra L1617
1136 L1616:
1137 lea a3@(6),a1
1138 L1617:
1139 movel d4,d0
1140 lsrl #4,d0
1141 addql #1,d0
1142 lea a1@(d0:l:2),a5
1143 movel a5,d1
1144 tstl d6
1145 jeq L1619
1146 movel a2,a0
1147 jra L1620
1148 L1619:
1149 movel d5,a0
1150 addqw #6,a0
1151 L1620:
1152 movel d3,d0
1153 lsrl #4,d0
1154 addql #1,d0
1155 lea a0@(d0:l:2),a3
============ Listing of BitString.s ============ PAGE 22
1156 cmpl d4,d3
1157 jcs L1643
1158 cmpl a1,d1
1159 jls L1642
1160 L1625:
1161 movew a1@+,d7
1162 orw a0@+,d7
1163 movew d7,a2@+
1164 cmpl a1,d1
1165 jhi L1625
1166 L1642:
1167 cmpl a2,a0
1168 jeq L1630
1169 cmpl a0,a3
1170 jls L1630
1171 L1629:
1172 movew a0@+,a2@+
1173 cmpl a0,a3
1174 jhi L1629
1175 jra L1630
1176 L1633:
1177 movew a1@+,d7
1178 orw a0@+,d7
1179 movew d7,a2@+
1180 L1643:
1181 cmpl a0,a3
1182 jhi L1633
1183 cmpl a2,a1
1184 jeq L1630
1185 cmpl a1,d1
1186 jls L1630
1187 L1637:
1188 movew a1@+,a2@+
1189 cmpl a1,d1
1190 jhi L1637
1191 L1630:
1192 movel a4@,d0
1193 lsrl #4,d0
1194 moveq #15,d1
1195 andl a4@,d1
1196 moveq #16,d7
1197 subl d1,d7
1198 movel d7,d1
1199 movel #65535,d2
1200 asrl d1,d2
1201 andw d2,a4@(6,d0:l:2)
1202 movel a4,d0
1203 moveml a6@(-40),#0x3cfc
1204 unlk a6
1205 rts
1206 .even
1207 .globl _xor__FP9BitStrRepN20
1208 _xor__FP9BitStrRepN20:
1209 link a6,#-4
1210 moveml #0x3f3c,sp@-
============ Listing of BitString.s ============ PAGE 23
1211 movel a6@(8),a3
1212 movel a6@(12),d5
1213 movel a6@(16),a4
1214 movel a3@,d4
1215 movel d5,a5
1216 movel a5@,d3
1217 movel d4,d1
1218 cmpl d4,d3
1219 jls L1645
1220 movel d3,d1
1221 L1645:
1222 cmpl a3,a4
1223 seq d2
1224 moveq #1,d7
1225 andl d7,d2
1226 cmpl d5,a4
1227 seq d0
1228 moveq #1,d7
1229 andl d0,d7
1230 movel d7,a6@(-4)
1231 movel d1,sp@-
1232 movel a4,sp@-
1233 jbsr _BStr_resize__FP9BitStrRepi
1234 movel d0,a4
1235 lea a4@(6),a2
1236 tstl d2
1237 jeq L1646
1238 movel a2,a1
1239 jra L1647
1240 L1646:
1241 lea a3@(6),a1
1242 L1647:
1243 movel d4,d0
1244 lsrl #4,d0
1245 addql #1,d0
1246 lea a1@(d0:l:2),a5
1247 movel a5,d1
1248 tstl a6@(-4)
1249 jeq L1649
1250 movel a2,a0
1251 jra L1650
1252 L1649:
1253 movel d5,a0
1254 addqw #6,a0
1255 L1650:
1256 movel d3,d0
1257 lsrl #4,d0
1258 addql #1,d0
1259 lea a0@(d0:l:2),a3
1260 cmpl d4,d3
1261 jcs L1673
1262 cmpl a1,d1
1263 jls L1672
1264 L1655:
1265 movew a1@+,d7
============ Listing of BitString.s ============ PAGE 24
1266 movew a0@+,d6
1267 eorw d6,d7
1268 movew d7,a2@+
1269 cmpl a1,d1
1270 jhi L1655
1271 L1672:
1272 cmpl a2,a0
1273 jeq L1660
1274 cmpl a0,a3
1275 jls L1660
1276 L1659:
1277 movew a0@+,a2@+
1278 cmpl a0,a3
1279 jhi L1659
1280 jra L1660
1281 L1663:
1282 movew a1@+,d7
1283 movew a0@+,d6
1284 eorw d6,d7
1285 movew d7,a2@+
1286 L1673:
1287 cmpl a0,a3
1288 jhi L1663
1289 cmpl a2,a1
1290 jeq L1660
1291 cmpl a1,d1
1292 jls L1660
1293 L1667:
1294 movew a1@+,a2@+
1295 cmpl a1,d1
1296 jhi L1667
1297 L1660:
1298 movel a4@,d0
1299 lsrl #4,d0
1300 moveq #15,d1
1301 andl a4@,d1
1302 moveq #16,d7
1303 subl d1,d7
1304 movel d7,d1
1305 movel #65535,d2
1306 asrl d1,d2
1307 andw d2,a4@(6,d0:l:2)
1308 movel a4,d0
1309 moveml a6@(-44),#0x3cfc
1310 unlk a6
1311 rts
1312 .even
1313 .globl _difference__FP9BitStrRepN20
1314 _difference__FP9BitStrRepN20:
1315 link a6,#0
1316 moveml #0x3f3c,sp@-
1317 movel a6@(8),a3
1318 movel a6@(12),d4
1319 movel a6@(16),a4
1320 movel a3@,d3
============ Listing of BitString.s ============ PAGE 25
1321 movel d4,a5
1322 movel a5@,d6
1323 cmpl a3,d4
1324 seq d2
1325 moveq #1,d7
1326 andl d7,d2
1327 cmpl d4,a4
1328 seq d0
1329 moveq #1,d5
1330 andl d0,d5
1331 movel d3,sp@-
1332 movel a4,sp@-
1333 jbsr _BStr_resize__FP9BitStrRepi
1334 movel d0,a4
1335 lea a4@(6),a2
1336 tstl d2
1337 jeq L1675
1338 movel a2,a0
1339 jra L1676
1340 L1675:
1341 lea a3@(6),a0
1342 L1676:
1343 movel d3,d0
1344 lsrl #4,d0
1345 addql #1,d0
1346 lea a0@(d0:l:2),a5
1347 movel a5,d1
1348 tstl d5
1349 jeq L1678
1350 movel a2,a1
1351 jra L1679
1352 L1678:
1353 movel d4,a1
1354 addqw #6,a1
1355 L1679:
1356 movel d6,d0
1357 lsrl #4,d0
1358 addql #1,d0
1359 lea a1@(d0:l:2),a3
1360 cmpl d3,d6
1361 jcs L1697
1362 cmpl a0,d1
1363 jls L1685
1364 L1684:
1365 movew a1@+,d0
1366 notw d0
1367 andw a0@+,d0
1368 movew d0,a2@+
1369 cmpl a0,d1
1370 jhi L1684
1371 jra L1685
1372 L1688:
1373 movew a1@+,d0
1374 notw d0
1375 andw a0@+,d0
============ Listing of BitString.s ============ PAGE 26
1376 movew d0,a2@+
1377 L1697:
1378 cmpl a1,a3
1379 jhi L1688
1380 cmpl a2,a0
1381 jeq L1685
1382 cmpl a0,d1
1383 jls L1685
1384 L1692:
1385 movew a0@+,a2@+
1386 cmpl a0,d1
1387 jhi L1692
1388 L1685:
1389 movel a4@,d0
1390 lsrl #4,d0
1391 moveq #15,d1
1392 andl a4@,d1
1393 moveq #16,d7
1394 subl d1,d7
1395 movel d7,d1
1396 movel #65535,d2
1397 asrl d1,d2
1398 andw d2,a4@(6,d0:l:2)
1399 movel a4,d0
1400 moveml a6@(-40),#0x3cfc
1401 unlk a6
1402 rts
1403 .even
1404 .globl _concat__FP9BitStrRepN20
1405 _concat__FP9BitStrRepN20:
1406 link a6,#0
1407 moveml #0x3e3c,sp@-
1408 movel a6@(8),a3
1409 movel a6@(12),a5
1410 movel a6@(16),a2
1411 movel a3@,d3
1412 movel a5@,d5
1413 movel d3,d2
1414 addl d5,d2
1415 cmpl a3,a2
1416 seq d0
1417 moveq #1,d4
1418 andl d0,d4
1419 cmpl a5,a2
1420 seq d0
1421 btst #0,d0
1422 jeq L1699
1423 tstl d4
1424 jeq L1700
1425 movel d2,sp@-
1426 movel a2,sp@-
1427 jbsr _BStr_resize__FP9BitStrRepi
1428 movel d0,a2
1429 movel d3,sp@-
1430 addql #6,d0
============ Listing of BitString.s ============ PAGE 27
1431 movel d0,sp@-
1432 movel d5,sp@-
1433 clrl sp@-
1434 movel d0,sp@-
1435 jra L1711
1436 L1700:
1437 movel a5,sp@-
1438 clrl sp@-
1439 jbsr _BStr_copy__FP9BitStrRepT0
1440 movel d0,a5
1441 movel d2,sp@-
1442 movel a2,sp@-
1443 jbsr _BStr_resize__FP9BitStrRepi
1444 movel d0,a2
1445 lea a3@(6),a4
1446 lea a2@(6),a3
1447 addw #16,sp
1448 cmpl a4,a3
1449 jeq L1702
1450 movel d3,d2
1451 lsrl #4,d2
1452 tstl d2
1453 jle L1704
1454 movel d2,d6
1455 asll #1,d6
1456 movel d6,sp@-
1457 movel a3,sp@-
1458 movel a4,sp@-
1459 jbsr _bcopy
1460 addw #12,sp
1461 L1704:
1462 moveq #15,d0
1463 andl d3,d0
1464 movel #65535,d1
1465 asll d0,d1
1466 movew d1,d0
1467 notw d0
1468 andw a4@(d2:l:2),d0
1469 andw a3@(d2:l:2),d1
1470 orw d1,d0
1471 movew d0,a3@(d2:l:2)
1472 L1702:
1473 movel d3,sp@-
1474 pea a2@(6)
1475 movel d5,sp@-
1476 clrl sp@-
1477 pea a5@(6)
1478 jbsr _bit_transfer__FPUsiiT0i
1479 movel a5,sp@-
1480 jbsr ___builtin_delete
1481 jra L1705
1482 L1699:
1483 movel d2,sp@-
1484 movel a2,sp@-
1485 jbsr _BStr_resize__FP9BitStrRepi
============ Listing of BitString.s ============ PAGE 28
1486 movel d0,a2
1487 addqw #8,sp
1488 tstl d4
1489 jne L1706
1490 lea a3@(6),a4
1491 lea a2@(6),a3
1492 cmpl a4,a3
1493 jeq L1706
1494 movel d3,d2
1495 lsrl #4,d2
1496 tstl d2
1497 jle L1709
1498 movel d2,d6
1499 asll #1,d6
1500 movel d6,sp@-
1501 movel a3,sp@-
1502 movel a4,sp@-
1503 jbsr _bcopy
1504 addw #12,sp
1505 L1709:
1506 moveq #15,d0
1507 andl d3,d0
1508 movel #65535,d1
1509 asll d0,d1
1510 movew d1,d0
1511 notw d0
1512 andw a4@(d2:l:2),d0
1513 andw a3@(d2:l:2),d1
1514 orw d1,d0
1515 movew d0,a3@(d2:l:2)
1516 L1706:
1517 movel d3,sp@-
1518 pea a2@(6)
1519 movel d5,sp@-
1520 clrl sp@-
1521 pea a5@(6)
1522 L1711:
1523 jbsr _bit_transfer__FPUsiiT0i
1524 L1705:
1525 movel a2@,d0
1526 lsrl #4,d0
1527 moveq #15,d1
1528 andl a2@,d1
1529 moveq #16,d6
1530 subl d1,d6
1531 movel d6,d1
1532 movel #65535,d2
1533 asrl d1,d2
1534 andw d2,a2@(6,d0:l:2)
1535 movel a2,d0
1536 moveml a6@(-36),#0x3c7c
1537 unlk a6
1538 rts
1539 .even
1540 .globl _concat__FP9BitStrRepiT0
============ Listing of BitString.s ============ PAGE 29
1541 _concat__FP9BitStrRepiT0:
1542 link a6,#0
1543 moveml #0x3838,sp@-
1544 movel a6@(8),a3
1545 movel a6@(16),a2
1546 movel a3@,d3
1547 cmpl a3,a2
1548 seq d2
1549 moveq #1,d4
1550 andl d4,d2
1551 movel d3,a0
1552 pea a0@(1)
1553 movel a2,sp@-
1554 jbsr _BStr_resize__FP9BitStrRepi
1555 movel d0,a2
1556 addqw #8,sp
1557 tstl d2
1558 jne L1713
1559 lea a3@(6),a4
1560 lea a2@(6),a3
1561 cmpl a4,a3
1562 jeq L1713
1563 movel d3,d2
1564 lsrl #4,d2
1565 tstl d2
1566 jle L1716
1567 movel d2,d4
1568 asll #1,d4
1569 movel d4,sp@-
1570 movel a3,sp@-
1571 movel a4,sp@-
1572 jbsr _bcopy
1573 L1716:
1574 moveq #15,d0
1575 andl d3,d0
1576 movel #65535,d1
1577 asll d0,d1
1578 movew d1,d0
1579 notw d0
1580 andw a4@(d2:l:2),d0
1581 andw a3@(d2:l:2),d1
1582 orw d1,d0
1583 movew d0,a3@(d2:l:2)
1584 L1713:
1585 tstl a6@(12)
1586 jeq L1717
1587 movel d3,d0
1588 lsrl #4,d0
1589 moveq #15,d1
1590 andl d3,d1
1591 moveq #1,d2
1592 asll d1,d2
1593 orw d2,a2@(6,d0:l:2)
1594 jra L1720
1595 L1717:
============ Listing of BitString.s ============ PAGE 30
1596 movel d3,d0
1597 lsrl #4,d0
1598 moveq #15,d2
1599 andl d3,d2
1600 moveq #1,d1
1601 asll d2,d1
1602 notw d1
1603 andw d1,a2@(6,d0:l:2)
1604 L1720:
1605 movel a2@,d0
1606 lsrl #4,d0
1607 moveq #15,d1
1608 andl a2@,d1
1609 moveq #16,d4
1610 subl d1,d4
1611 movel d4,d1
1612 movel #65535,d2
1613 asrl d1,d2
1614 andw d2,a2@(6,d0:l:2)
1615 movel a2,d0
1616 moveml a6@(-24),#0x1c1c
1617 unlk a6
1618 rts
1619 .even
1620 .globl _rshift__FP9BitStrRepiT0
1621 _rshift__FP9BitStrRepiT0:
1622 link a6,#0
1623 moveml #0x3e30,sp@-
1624 movel a6@(8),a3
1625 movel a6@(12),d4
1626 movel a6@(16),a2
1627 cmpl a3,a2
1628 seq d0
1629 moveq #1,d5
1630 andl d0,d5
1631 movel a3@,d3
1632 movel d3,d2
1633 addl d4,d2
1634 tstl d4
1635 jne L1725
1636 movel a3,sp@-
1637 movel a2,sp@-
1638 jbsr _BStr_copy__FP9BitStrRepT0
1639 movel d0,a2
1640 jra L1726
1641 L1725:
1642 tstl d2
1643 jgt L1727
1644 clrl sp@-
1645 movel a2,sp@-
1646 jbsr _BStr_resize__FP9BitStrRepi
1647 movel d0,a2
1648 clrl a2@
1649 clrw a2@(6)
1650 jra L1726
============ Listing of BitString.s ============ PAGE 31
1651 L1727:
1652 tstl d4
1653 jle L1729
1654 movel d2,sp@-
1655 movel a2,sp@-
1656 jbsr _BStr_resize__FP9BitStrRepi
1657 movel d0,a2
1658 addqw #8,sp
1659 tstl d5
1660 jne L1738
1661 movel a3,d0
1662 L1738:
1663 addql #6,d0
1664 movel d4,sp@-
1665 movel a2,d2
1666 addql #6,d2
1667 movel d2,sp@-
1668 movel d3,sp@-
1669 clrl sp@-
1670 movel d0,sp@-
1671 jbsr _bit_transfer__FPUsiiT0i
1672 movel d2,a3
1673 addw #20,sp
1674 movel d4,d2
1675 lsrl #4,d2
1676 tstl d2
1677 jle L1733
1678 movel d2,d6
1679 asll #1,d6
1680 movel d6,sp@-
1681 movel a3,sp@-
1682 jbsr _bzero
1683 L1733:
1684 moveq #15,d0
1685 andl d4,d0
1686 movel #65535,d1
1687 asll d0,d1
1688 andw d1,a3@(d2:l:2)
1689 jra L1726
1690 L1729:
1691 tstl d5
1692 jeq L1735
1693 movel d3,sp@-
1694 movel a2,sp@-
1695 jbsr _BStr_resize__FP9BitStrRepi
1696 movel d0,a2
1697 movel d2,a2@
1698 clrl sp@-
1699 addql #6,d0
1700 movel d0,sp@-
1701 movel d3,sp@-
1702 negl d4
1703 movel d4,sp@-
1704 movel d0,sp@-
1705 jra L1739
============ Listing of BitString.s ============ PAGE 32
1706 L1735:
1707 movel d2,sp@-
1708 movel a2,sp@-
1709 jbsr _BStr_resize__FP9BitStrRepi
1710 movel d0,a2
1711 clrl sp@-
1712 pea a2@(6)
1713 movel d3,sp@-
1714 negl d4
1715 movel d4,sp@-
1716 pea a3@(6)
1717 L1739:
1718 jbsr _bit_transfer__FPUsiiT0i
1719 L1726:
1720 movel a2@,d0
1721 lsrl #4,d0
1722 moveq #15,d1
1723 andl a2@,d1
1724 moveq #16,d6
1725 subl d1,d6
1726 movel d6,d1
1727 movel #65535,d2
1728 asrl d1,d2
1729 andw d2,a2@(6,d0:l:2)
1730 movel a2,d0
1731 moveml a6@(-28),#0xc7c
1732 unlk a6
1733 rts
1734 LC3:
1735 .ascii "Illegal bit index\0"
1736 .even
1737 .globl _set__9BitStringi
1738 _set__9BitStringi:
1739 link a6,#0
1740 moveml #0x2020,sp@-
1741 movel a6@(8),a2
1742 movel a6@(12),d2
1743 jge L1741
1744 pea LC3
1745 movel a2,sp@-
1746 jbsr _error__9BitStringPc
1747 addqw #8,sp
1748 L1741:
1749 movel a2@,a0
1750 cmpl a0@,d2
1751 jcs L1742
1752 movel d2,a1
1753 pea a1@(1)
1754 movel a0,sp@-
1755 jbsr _BStr_resize__FP9BitStrRepi
1756 movel d0,a2@
1757 L1742:
1758 movel d2,d0
1759 lsrl #4,d0
1760 moveq #15,d1
============ Listing of BitString.s ============ PAGE 33
1761 andl d2,d1
1762 movel a2@,a0
1763 moveq #1,d2
1764 asll d1,d2
1765 orw d2,a0@(6,d0:l:2)
1766 moveml a6@(-8),#0x404
1767 unlk a6
1768 rts
1769 .even
1770 .globl _assign__9BitStringii
1771 _assign__9BitStringii:
1772 link a6,#0
1773 moveml #0x3020,sp@-
1774 movel a6@(8),a2
1775 movel a6@(12),d2
1776 jge L1746
1777 pea LC3
1778 movel a2,sp@-
1779 jbsr _error__9BitStringPc
1780 addqw #8,sp
1781 L1746:
1782 movel a2@,a0
1783 cmpl a0@,d2
1784 jcs L1747
1785 movel d2,a1
1786 pea a1@(1)
1787 movel a0,sp@-
1788 jbsr _BStr_resize__FP9BitStrRepi
1789 movel d0,a2@
1790 L1747:
1791 tstl a6@(16)
1792 jeq L1748
1793 movel d2,d0
1794 lsrl #4,d0
1795 moveq #15,d1
1796 andl d2,d1
1797 movel a2@,a0
1798 moveq #1,d2
1799 asll d1,d2
1800 orw d2,a0@(6,d0:l:2)
1801 jra L1751
1802 L1748:
1803 movel d2,d0
1804 lsrl #4,d0
1805 moveq #15,d3
1806 andl d3,d2
1807 movel a2@,a0
1808 moveq #1,d1
1809 asll d2,d1
1810 notw d1
1811 andw d1,a0@(6,d0:l:2)
1812 L1751:
1813 moveml a6@(-12),#0x40c
1814 unlk a6
1815 rts
============ Listing of BitString.s ============ PAGE 34
1816 .even
1817 .globl _clear__9BitStringi
1818 _clear__9BitStringi:
1819 link a6,#0
1820 moveml #0x3020,sp@-
1821 movel a6@(8),a2
1822 movel a6@(12),d2
1823 jge L1755
1824 pea LC3
1825 movel a2,sp@-
1826 jbsr _error__9BitStringPc
1827 addqw #8,sp
1828 L1755:
1829 movel a2@,a0
1830 cmpl a0@,d2
1831 jcs L1756
1832 movel d2,a1
1833 pea a1@(1)
1834 movel a0,sp@-
1835 jbsr _BStr_resize__FP9BitStrRepi
1836 movel d0,a2@
1837 L1756:
1838 movel d2,d0
1839 lsrl #4,d0
1840 moveq #15,d3
1841 andl d3,d2
1842 movel a2@,a0
1843 moveq #1,d1
1844 asll d2,d1
1845 notw d1
1846 andw d1,a0@(6,d0:l:2)
1847 moveml a6@(-12),#0x40c
1848 unlk a6
1849 rts
1850 .even
1851 .globl _clear__9BitString
1852 _clear__9BitString:
1853 link a6,#0
1854 moveml #0x3820,sp@-
1855 movel a6@(8),a0
1856 cmpl #__nilBitStrRep,a0@
1857 jeq L1759
1858 movel a0@,a2
1859 addqw #6,a2
1860 movel a0@,a0
1861 movel a0@,d3
1862 movel d3,d2
1863 lsrl #4,d2
1864 tstl d2
1865 jle L1762
1866 movel d2,d4
1867 asll #1,d4
1868 movel d4,sp@-
1869 movel a2,sp@-
1870 jbsr _bzero
============ Listing of BitString.s ============ PAGE 35
1871 L1762:
1872 moveq #15,d0
1873 andl d3,d0
1874 movel #65535,d1
1875 asll d0,d1
1876 andw d1,a2@(d2:l:2)
1877 L1759:
1878 moveml a6@(-16),#0x41c
1879 unlk a6
1880 rts
1881 .even
1882 .globl _set__9BitString
1883 _set__9BitString:
1884 link a6,#0
1885 moveml #0x3020,sp@-
1886 movel a6@(8),a2
1887 cmpl #__nilBitStrRep,a2@
1888 jeq L1763
1889 movel a2@,a1
1890 addqw #6,a1
1891 movel a2@,a0
1892 movel a0@,d0
1893 lsrl #4,d0
1894 addql #1,d0
1895 lea a1@(d0:l:2),a0
1896 cmpl a1,a0
1897 jls L1770
1898 L1768:
1899 movew #65535,a1@+
1900 cmpl a1,a0
1901 jhi L1768
1902 L1770:
1903 movel a2@,a0
1904 movel a0@,d0
1905 lsrl #4,d0
1906 moveq #15,d1
1907 andl a0@,d1
1908 moveq #16,d3
1909 subl d1,d3
1910 movel d3,d1
1911 movel #65535,d2
1912 asrl d1,d2
1913 andw d2,a0@(6,d0:l:2)
1914 L1763:
1915 moveml a6@(-12),#0x40c
1916 unlk a6
1917 rts
1918 .even
1919 .globl _invert__9BitStringi
1920 _invert__9BitStringi:
1921 link a6,#0
1922 moveml #0x2020,sp@-
1923 movel a6@(8),a2
1924 movel a6@(12),d2
1925 jge L1772
============ Listing of BitString.s ============ PAGE 36
1926 pea LC3
1927 movel a2,sp@-
1928 jbsr _error__9BitStringPc
1929 addqw #8,sp
1930 L1772:
1931 movel a2@,a0
1932 cmpl a0@,d2
1933 jcs L1773
1934 movel d2,a1
1935 pea a1@(1)
1936 movel a0,sp@-
1937 jbsr _BStr_resize__FP9BitStrRepi
1938 movel d0,a2@
1939 L1773:
1940 movel d2,d0
1941 lsrl #4,d0
1942 moveq #15,d1
1943 andl d2,d1
1944 movel a2@,a0
1945 moveq #1,d2
1946 asll d1,d2
1947 eorw d2,a0@(6,d0:l:2)
1948 moveml a6@(-8),#0x404
1949 unlk a6
1950 rts
1951 .even
1952 .globl _set__9BitStringii
1953 _set__9BitStringii:
1954 link a6,#0
1955 moveml #0x3e30,sp@-
1956 movel a6@(8),a2
1957 movel a6@(12),d3
1958 movel a6@(16),d2
1959 tstl d3
1960 jlt L1778
1961 cmpl d3,d2
1962 jge L1777
1963 L1778:
1964 pea LC3
1965 movel a2,sp@-
1966 jbsr _error__9BitStringPc
1967 addqw #8,sp
1968 L1777:
1969 movel a2@,a0
1970 cmpl a0@,d2
1971 jcs L1779
1972 movel d2,a3
1973 pea a3@(1)
1974 movel a0,sp@-
1975 jbsr _BStr_resize__FP9BitStrRepi
1976 movel d0,a2@
1977 L1779:
1978 movel d3,d4
1979 lsrl #4,d4
1980 moveq #15,d1
============ Listing of BitString.s ============ PAGE 37
1981 andl d3,d1
1982 movel d2,d5
1983 lsrl #4,d5
1984 moveq #15,d3
1985 andl d2,d3
1986 movel d4,d0
1987 asll #1,d0
1988 addql #6,d0
1989 movel d0,a0
1990 addl a2@,a0
1991 tstl d1
1992 jgt L1785
1993 movel #65535,d2
1994 jra L1784
1995 L1785:
1996 movel #65535,d6
1997 asll d1,d6
1998 movel d6,d2
1999 L1784:
2000 moveq #15,d0
2001 subl d3,d0
2002 tstl d0
2003 jgt L1788
2004 movel #65535,d1
2005 jra L1787
2006 L1788:
2007 movel #65535,d6
2008 asrl d0,d6
2009 movel d6,d1
2010 L1787:
2011 cmpl d5,d4
2012 jne L1790
2013 movew d2,d0
2014 andw d1,d0
2015 orw d0,a0@
2016 jra L1791
2017 L1790:
2018 orw d2,a0@+
2019 movel d5,d0
2020 asll #1,d0
2021 addql #6,d0
2022 movel d0,a1
2023 addl a2@,a1
2024 orw d1,a1@
2025 cmpl a0,a1
2026 jls L1791
2027 L1794:
2028 movew #65535,a0@+
2029 cmpl a0,a1
2030 jhi L1794
2031 L1791:
2032 moveml a6@(-28),#0xc7c
2033 unlk a6
2034 rts
2035 .even
============ Listing of BitString.s ============ PAGE 38
2036 .globl _clear__9BitStringii
2037 _clear__9BitStringii:
2038 link a6,#0
2039 moveml #0x3c30,sp@-
2040 movel a6@(8),a2
2041 movel a6@(12),d3
2042 movel a6@(16),d2
2043 tstl d3
2044 jlt L1798
2045 cmpl d3,d2
2046 jge L1797
2047 L1798:
2048 pea LC3
2049 movel a2,sp@-
2050 jbsr _error__9BitStringPc
2051 addqw #8,sp
2052 L1797:
2053 movel a2@,a0
2054 cmpl a0@,d2
2055 jcs L1799
2056 movel d2,a3
2057 pea a3@(1)
2058 movel a0,sp@-
2059 jbsr _BStr_resize__FP9BitStrRepi
2060 movel d0,a2@
2061 L1799:
2062 movel d3,d4
2063 lsrl #4,d4
2064 moveq #15,d1
2065 andl d3,d1
2066 movel d2,d3
2067 lsrl #4,d3
2068 moveq #15,d5
2069 andl d5,d2
2070 movel d4,d0
2071 asll #1,d0
2072 addql #6,d0
2073 movel d0,a0
2074 addl a2@,a0
2075 tstl d1
2076 jgt L1805
2077 movel #65535,d1
2078 jra L1804
2079 L1805:
2080 movel #65535,d5
2081 asll d1,d5
2082 movel d5,d1
2083 L1804:
2084 moveq #15,d0
2085 subl d2,d0
2086 tstl d0
2087 jgt L1808
2088 movel #65535,d2
2089 jra L1807
2090 L1808:
============ Listing of BitString.s ============ PAGE 39
2091 movel #65535,d5
2092 asrl d0,d5
2093 movel d5,d2
2094 L1807:
2095 cmpl d3,d4
2096 jne L1810
2097 movew d1,d0
2098 andw d2,d0
2099 notw d0
2100 andw d0,a0@
2101 jra L1811
2102 L1810:
2103 movew d1,d0
2104 notw d0
2105 andw d0,a0@+
2106 movel d3,d0
2107 asll #1,d0
2108 addql #6,d0
2109 movel d0,a1
2110 addl a2@,a1
2111 movew d2,d0
2112 notw d0
2113 andw d0,a1@
2114 cmpl a0,a1
2115 jls L1811
2116 L1814:
2117 clrw a0@+
2118 cmpl a0,a1
2119 jhi L1814
2120 L1811:
2121 moveml a6@(-24),#0xc3c
2122 unlk a6
2123 rts
2124 .even
2125 .globl _invert__9BitStringii
2126 _invert__9BitStringii:
2127 link a6,#0
2128 moveml #0x3e30,sp@-
2129 movel a6@(8),a2
2130 movel a6@(12),d3
2131 movel a6@(16),d2
2132 tstl d3
2133 jlt L1818
2134 cmpl d3,d2
2135 jge L1817
2136 L1818:
2137 pea LC3
2138 movel a2,sp@-
2139 jbsr _error__9BitStringPc
2140 addqw #8,sp
2141 L1817:
2142 movel a2@,a0
2143 cmpl a0@,d2
2144 jcs L1819
2145 movel d2,a3
============ Listing of BitString.s ============ PAGE 40
2146 pea a3@(1)
2147 movel a0,sp@-
2148 jbsr _BStr_resize__FP9BitStrRepi
2149 movel d0,a2@
2150 L1819:
2151 movel d3,d4
2152 lsrl #4,d4
2153 moveq #15,d1
2154 andl d3,d1
2155 movel d2,d5
2156 lsrl #4,d5
2157 moveq #15,d3
2158 andl d2,d3
2159 movel d4,d0
2160 asll #1,d0
2161 addql #6,d0
2162 movel d0,a0
2163 addl a2@,a0
2164 tstl d1
2165 jgt L1825
2166 movel #65535,d2
2167 jra L1824
2168 L1825:
2169 movel #65535,d6
2170 asll d1,d6
2171 movel d6,d2
2172 L1824:
2173 moveq #15,d0
2174 subl d3,d0
2175 tstl d0
2176 jgt L1828
2177 movel #65535,d1
2178 jra L1827
2179 L1828:
2180 movel #65535,d6
2181 asrl d0,d6
2182 movel d6,d1
2183 L1827:
2184 cmpl d5,d4
2185 jne L1830
2186 movew d2,d0
2187 andw d1,d0
2188 eorw d0,a0@
2189 jra L1831
2190 L1830:
2191 eorw d2,a0@+
2192 movel d5,d0
2193 asll #1,d0
2194 addql #6,d0
2195 movel d0,a1
2196 addl a2@,a1
2197 eorw d1,a1@
2198 cmpl a0,a1
2199 jls L1831
2200 L1834:
============ Listing of BitString.s ============ PAGE 41
2201 notw a0@+
2202 cmpl a0,a1
2203 jhi L1834
2204 L1831:
2205 moveml a6@(-28),#0xc7c
2206 unlk a6
2207 rts
2208 .even
2209 .globl _test__9BitStringii
2210 _test__9BitStringii:
2211 link a6,#0
2212 moveml #0x3e00,sp@-
2213 movel a6@(8),a1
2214 movel a6@(12),d0
2215 movel a6@(16),d1
2216 tstl d0
2217 jlt L1860
2218 cmpl d0,d1
2219 jlt L1860
2220 movel a1@,a0
2221 cmpl a0@,d0
2222 jcc L1860
2223 movel d0,d5
2224 lsrl #4,d5
2225 moveq #15,d2
2226 andl d0,d2
2227 movel d1,d3
2228 lsrl #4,d3
2229 moveq #15,d4
2230 andl d1,d4
2231 movel a1@,a0
2232 cmpl a0@,d1
2233 jcs L1843
2234 movel a0@,d0
2235 subql #1,d0
2236 movel d0,d3
2237 lsrl #4,d3
2238 moveq #15,d4
2239 andl d0,d4
2240 L1843:
2241 movel d5,d0
2242 asll #1,d0
2243 addql #6,d0
2244 movel d0,a0
2245 addl a1@,a0
2246 tstl d2
2247 jgt L1847
2248 movel #65535,d1
2249 jra L1846
2250 L1847:
2251 movel #65535,d6
2252 asll d2,d6
2253 movel d6,d1
2254 L1846:
2255 moveq #15,d0
============ Listing of BitString.s ============ PAGE 42
2256 subl d4,d0
2257 tstl d0
2258 jgt L1850
2259 movel #65535,d2
2260 jra L1849
2261 L1850:
2262 movel #65535,d6
2263 asrl d0,d6
2264 movel d6,d2
2265 L1849:
2266 cmpl d3,d5
2267 jne L1852
2268 movew d1,d0
2269 andw a0@,d0
2270 andw d2,d0
2271 sne d0
2272 moveq #1,d6
2273 andl d6,d0
2274 jra L1836
2275 L1852:
2276 movew d1,d0
2277 andw a0@+,d0
2278 jne L1861
2279 movel d3,d0
2280 asll #1,d0
2281 addql #6,d0
2282 addl a1@,d0
2283 movel d0,a1
2284 movew d2,d0
2285 andw a1@,d0
2286 jne L1861
2287 jra L1856
2288 L1859:
2289 tstw a0@+
2290 jeq L1856
2291 L1861:
2292 moveq #1,d0
2293 jra L1836
2294 L1856:
2295 cmpl a0,a1
2296 jhi L1859
2297 L1860:
2298 clrl d0
2299 L1836:
2300 moveml a6@(-20),#0x7c
2301 unlk a6
2302 rts
2303 .even
2304 .globl _next__9BitStringii
2305 _next__9BitStringii:
2306 link a6,#0
2307 moveml #0x3e20,sp@-
2308 movel a6@(8),a1
2309 movel a6@(12),d2
2310 addql #1,d2
============ Listing of BitString.s ============ PAGE 43
2311 movel a1@,a0
2312 cmpl a0@,d2
2313 jcc L1910
2314 moveq #15,d0
2315 andl d2,d0
2316 movel a1@,a0
2317 movel a0@,d1
2318 lsrl #4,d1
2319 movel d1,d5
2320 addql #1,d5
2321 movel d2,d3
2322 lsrl #4,d3
2323 movel a1@,a2
2324 addqw #6,a2
2325 clrl d1
2326 movew a2@(d3:l:2),d1
2327 asrl d0,d1
2328 movew d1,d2
2329 movel d0,d1
2330 tstl a6@(16)
2331 jeq L1867
2332 moveq #15,d6
2333 cmpl d1,d6
2334 jlt L1875
2335 movel d3,d0
2336 asll #4,d0
2337 L1872:
2338 tstw d2
2339 jeq L1875
2340 btst #0,d2
2341 jne L1915
2342 lsrw #1,d2
2343 addql #1,d1
2344 moveq #15,d6
2345 cmpl d1,d6
2346 jge L1872
2347 jra L1875
2348 L1881:
2349 movew a2@(d3:l:2),d2
2350 clrl d1
2351 movel d3,d0
2352 asll #4,d0
2353 L1880:
2354 tstw d2
2355 jeq L1875
2356 btst #0,d2
2357 jne L1915
2358 lsrw #1,d2
2359 addql #1,d1
2360 moveq #15,d6
2361 cmpl d1,d6
2362 jge L1880
2363 L1875:
2364 addql #1,d3
2365 cmpl d3,d5
============ Listing of BitString.s ============ PAGE 44
2366 jgt L1881
2367 jra L1910
2368 L1867:
2369 movel a1@,a0
2370 moveq #15,d4
2371 andl a0@,d4
2372 movel d5,d0
2373 subql #1,d0
2374 cmpl d3,d0
2375 jne L1884
2376 cmpl d1,d4
2377 jle L1910
2378 movel d3,d0
2379 asll #4,d0
2380 L1889:
2381 btst #0,d2
2382 jeq L1915
2383 lsrw #1,d2
2384 addql #1,d1
2385 cmpl d1,d4
2386 jgt L1889
2387 jra L1910
2388 L1884:
2389 moveq #15,d6
2390 cmpl d1,d6
2391 jlt L1911
2392 movel d3,d0
2393 asll #4,d0
2394 L1894:
2395 btst #0,d2
2396 jeq L1915
2397 lsrw #1,d2
2398 addql #1,d1
2399 moveq #15,d6
2400 cmpl d1,d6
2401 jge L1894
2402 L1911:
2403 addql #1,d3
2404 subql #1,d5
2405 jra L1895
2406 L1904:
2407 movew a2@(d3:l:2),d2
2408 cmpw #65535,d2
2409 jeq L1897
2410 clrl d1
2411 movel d3,d0
2412 asll #4,d0
2413 L1903:
2414 btst #0,d2
2415 jeq L1915
2416 lsrw #1,d2
2417 addql #1,d1
2418 moveq #15,d6
2419 cmpl d1,d6
2420 jge L1903
============ Listing of BitString.s ============ PAGE 45
2421 L1897:
2422 addql #1,d3
2423 L1895:
2424 cmpl d3,d5
2425 jgt L1904
2426 movew a2@(d3:l:2),d2
2427 clrl d1
2428 cmpl d1,d4
2429 jle L1910
2430 movel d3,d0
2431 asll #4,d0
2432 L1909:
2433 btst #0,d2
2434 jne L1908
2435 L1915:
2436 addl d1,d0
2437 jra L1862
2438 L1908:
2439 lsrw #1,d2
2440 addql #1,d1
2441 cmpl d1,d4
2442 jgt L1909
2443 L1910:
2444 moveq #-1,d0
2445 L1862:
2446 moveml a6@(-24),#0x47c
2447 unlk a6
2448 rts
2449 .even
2450 .globl _previous__9BitStringii
2451 _previous__9BitStringii:
2452 link a6,#0
2453 moveml #0x3c00,sp@-
2454 movel a6@(8),a0
2455 movel a6@(12),d0
2456 subql #1,d0
2457 jmi L1955
2458 movel d0,d1
2459 lsrl #4,d1
2460 moveq #15,d4
2461 andl d0,d4
2462 movel a0@,a1
2463 addqw #6,a1
2464 movel a0@,a0
2465 cmpl a0@,d0
2466 jcs L1920
2467 movel a0@,d0
2468 subql #1,d0
2469 movel d0,d1
2470 lsrl #4,d1
2471 moveq #15,d4
2472 andl d0,d4
2473 L1920:
2474 movel d1,d3
2475 movew a1@(d3:l:2),d2
============ Listing of BitString.s ============ PAGE 46
2476 movel d4,d1
2477 moveq #1,d0
2478 asll d1,d0
2479 movew d0,d5
2480 tstl a6@(16)
2481 jeq L1923
2482 tstl d1
2483 jlt L1925
2484 movel d3,d4
2485 asll #4,d4
2486 L1928:
2487 tstw d2
2488 jeq L1925
2489 movew d2,d0
2490 andw d5,d0
2491 jne L1959
2492 lslw #1,d2
2493 subql #1,d1
2494 jpl L1928
2495 L1925:
2496 movew #32768,d5
2497 jra L1931
2498 L1937:
2499 movew a1@(d3:l:2),d2
2500 moveq #15,d1
2501 movel d3,d4
2502 asll #4,d4
2503 L1936:
2504 tstw d2
2505 jeq L1931
2506 movew d2,d0
2507 andw d5,d0
2508 jne L1959
2509 lslw #1,d2
2510 subql #1,d1
2511 jpl L1936
2512 L1931:
2513 subql #1,d3
2514 jpl L1937
2515 jra L1955
2516 L1923:
2517 cmpw #65535,d2
2518 jeq L1939
2519 tstl d1
2520 jlt L1939
2521 movel d3,d4
2522 asll #4,d4
2523 L1944:
2524 movew d2,d0
2525 andw d5,d0
2526 jeq L1959
2527 lslw #1,d2
2528 subql #1,d1
2529 jpl L1944
2530 L1939:
============ Listing of BitString.s ============ PAGE 47
2531 movew #32768,d5
2532 jra L1947
2533 L1954:
2534 movew a1@(d3:l:2),d2
2535 cmpw #65535,d2
2536 jeq L1947
2537 moveq #15,d1
2538 movel d3,d4
2539 asll #4,d4
2540 L1953:
2541 movew d2,d0
2542 andw d5,d0
2543 jne L1952
2544 L1959:
2545 movel d4,d0
2546 addl d1,d0
2547 jra L1916
2548 L1952:
2549 lslw #1,d2
2550 subql #1,d1
2551 jpl L1953
2552 L1947:
2553 subql #1,d3
2554 jpl L1954
2555 L1955:
2556 moveq #-1,d0
2557 L1916:
2558 moveml a6@(-16),#0x3c
2559 unlk a6
2560 rts
2561 .even
2562 .globl _search__9BitStringiiPUsii
2563 _search__9BitStringiiPUsii:
2564 link a6,#-72
2565 moveml #0x3f3c,sp@-
2566 movel a6@(12),d3
2567 movel a6@(16),d6
2568 movel a6@(24),d2
2569 movel a6@(28),d0
2570 movel a6@(8),a2
2571 movel a2@,a0
2572 addqw #6,a0
2573 movel d0,d1
2574 subl d2,d1
2575 movel d0,d5
2576 subql #1,d5
2577 tstl d3
2578 slt d0
2579 btst #0,d0
2580 jeq L1961
2581 clrl a6@(-4)
2582 movel d6,d0
2583 addl d3,d0
2584 movel d0,d3
2585 subl d1,d3
============ Listing of BitString.s ============ PAGE 48
2586 addql #1,d3
2587 tstl d1
2588 jeq L2078
2589 tstl d2
2590 jlt L2079
2591 tstl d5
2592 jlt L2079
2593 tstl d3
2594 jlt L2079
2595 cmpl d3,d6
2596 jle L2079
2597 movel d3,d7
2598 lsrl #4,d7
2599 movel d7,a6@(-66)
2600 moveq #15,d6
2601 andl d3,d6
2602 movel d2,d7
2603 lsrl #4,d7
2604 movel d7,a5
2605 moveq #15,d7
2606 andl d7,d2
2607 movel d2,a3
2608 lsrl #4,d0
2609 movel d0,a4
2610 cmpl a6@(-66),a4
2611 jle L1971
2612 clrl d0
2613 movel a6@(-66),d7
2614 movew a0@(d7:l:2),d0
2615 asrl d6,d0
2616 clrl d1
2617 movew a0@(2,d7:l:2),d1
2618 moveq #16,d2
2619 subl d6,d2
2620 asll d2,d1
2621 orl d1,d0
2622 jra L2080
2623 L1971:
2624 clrl d0
2625 movel a6@(-66),d7
2626 movew a0@(d7:l:2),d0
2627 asrl d6,d0
2628 L2080:
2629 movel d0,a6@(-70)
2630 movel d5,d7
2631 lsrl #4,d7
2632 movel d7,a1
2633 moveq #15,d7
2634 andl d7,d5
2635 movel d5,a6@(-8)
2636 cmpl a5,a1
2637 jle L1976
2638 clrl d0
2639 movel a6@(20),a2
2640 movew a2@(a5:l:2),d0
============ Listing of BitString.s ============ PAGE 49
2641 movel a3,d7
2642 asrl d7,d0
2643 clrl d1
2644 movew a2@(2,a5:l:2),d1
2645 moveq #16,d2
2646 subl a3,d2
2647 asll d2,d1
2648 orl d1,d0
2649 jra L2081
2650 L1976:
2651 clrl d0
2652 movel a6@(20),a2
2653 movew a2@(a5:l:2),d0
2654 movel a3,d7
2655 asrl d7,d0
2656 L2081:
2657 movel d0,a6@(-12)
2658 cmpl a5,a1
2659 jne L1978
2660 moveq #15,d0
2661 subl a6@(-8),d0
2662 tstl d0
2663 jle L2082
2664 jra L1985
2665 L1978:
2666 movel a5,d0
2667 addql #1,d0
2668 cmpl d0,a1
2669 jne L1983
2670 moveq #16,d0
2671 addl a6@(-8),d0
2672 subl a3,d0
2673 addql #1,d0
2674 moveq #15,d7
2675 subl d0,d7
2676 movel d7,d0
2677 jgt L1985
2678 L2082:
2679 movel #65535,a6@(-14)
2680 jra L1982
2681 L1985:
2682 movel #65535,d7
2683 asrl d0,d7
2684 movel d7,a6@(-14)
2685 jra L1982
2686 L1983:
2687 movew #65535,a6@(-12)
2688 L1982:
2689 movel d3,a6@(-72)
2690 moveq #16,d7
2691 subl a3,d7
2692 movel d7,a6@(-20)
2693 moveq #15,d7
2694 subl a6@(-8),d7
2695 movel d7,a6@(-24)
============ Listing of BitString.s ============ PAGE 50
2696 movel #65535,a6@(-28)
2697 movel a6@(-28),d7
2698 movel a6@(-24),d4
2699 asrl d4,d7
2700 movel d7,a6@(-28)
2701 L1988:
2702 movew a6@(-68),d0
2703 andw a6@(-12),d0
2704 cmpw a6@(-10),d0
2705 jne L1991
2706 movel a6@(-66),d5
2707 movel a5,d3
2708 clrl d2
2709 moveq #16,d7
2710 subl d6,d7
2711 movel d7,a6@(-16)
2712 L1992:
2713 addql #1,d3
2714 cmpl d3,a1
2715 jlt L2055
2716 addql #1,d5
2717 cmpl d5,a4
2718 jlt L2055
2719 jle L1998
2720 movew a0@(d5:l:2),d2
2721 movel d2,d0
2722 asrl d6,d0
2723 movew a0@(2,d5:l:2),d2
2724 movel d2,d1
2725 movel a6@(-16),d7
2726 asll d7,d1
2727 orl d1,d0
2728 jra L1997
2729 L1998:
2730 movew a0@(d5:l:2),d2
2731 movel d2,d7
2732 asrl d6,d7
2733 movel d7,d0
2734 L1997:
2735 movew d0,a6@(-68)
2736 cmpl d3,a1
2737 jle L2001
2738 movel a6@(20),a2
2739 movew a2@(d3:l:2),d2
2740 movel d2,d0
2741 movel a3,d7
2742 asrl d7,d0
2743 movew a2@(2,d3:l:2),d2
2744 movel d2,d1
2745 movel a6@(-20),d7
2746 asll d7,d1
2747 orl d1,d0
2748 jra L2000
2749 L2001:
2750 movel a6@(20),a2
============ Listing of BitString.s ============ PAGE 51
2751 movew a2@(d3:l:2),d2
2752 movel d2,d7
2753 movel a3,d4
2754 asrl d4,d7
2755 movel d7,d0
2756 L2000:
2757 movew d0,d1
2758 cmpl d3,a1
2759 jne L2003
2760 tstl a6@(-24)
2761 jle L2086
2762 movel a6@(-28),d0
2763 jra L2009
2764 L2003:
2765 movel d3,d0
2766 addql #1,d0
2767 cmpl d0,a1
2768 jne L2007
2769 moveq #16,d0
2770 addl a6@(-8),d0
2771 subl a3,d0
2772 addql #1,d0
2773 moveq #15,d7
2774 subl d0,d7
2775 movel d7,d0
2776 jgt L2010
2777 L2086:
2778 movel #65535,d0
2779 jra L2009
2780 L2010:
2781 movel #65535,d7
2782 asrl d0,d7
2783 movel d7,d0
2784 L2009:
2785 andw d0,a6@(-68)
2786 L2007:
2787 cmpw a6@(-68),d1
2788 jeq L1992
2789 L1991:
2790 subql #1,a6@(-72)
2791 movel a6@(-72),d7
2792 cmpl a6@(-4),d7
2793 jlt L2079
2794 subql #1,d6
2795 jpl L2014
2796 moveq #15,d6
2797 subql #1,a6@(-66)
2798 L2014:
2799 cmpl a6@(-66),a4
2800 jle L2016
2801 clrl d0
2802 movel a6@(-66),d7
2803 movew a0@(d7:l:2),d0
2804 asrl d6,d0
2805 clrl d1
============ Listing of BitString.s ============ PAGE 52
2806 movew a0@(2,d7:l:2),d1
2807 moveq #16,d2
2808 subl d6,d2
2809 asll d2,d1
2810 orl d1,d0
2811 jra L2015
2812 L2016:
2813 clrl d0
2814 movel a6@(-66),d7
2815 movew a0@(d7:l:2),d0
2816 asrl d6,d0
2817 L2015:
2818 movew d0,a6@(-68)
2819 jra L1988
2820 L1961:
2821 movel d6,d7
2822 subql #1,d7
2823 movel d7,a6@(-32)
2824 tstl d1
2825 jne L2019
2826 L2078:
2827 movel d3,d0
2828 jra L1960
2829 L2019:
2830 tstl d2
2831 jlt L2079
2832 tstl d5
2833 jlt L2079
2834 tstl d3
2835 jlt L2079
2836 cmpl d3,d6
2837 jle L2079
2838 movel d3,d7
2839 lsrl #4,d7
2840 movel d7,a1
2841 moveq #15,d6
2842 andl d3,d6
2843 movel d2,d7
2844 lsrl #4,d7
2845 movel d7,a6@(-36)
2846 moveq #15,d7
2847 andl d7,d2
2848 movel d2,a3
2849 movel a6@(-32),d7
2850 lsrl #4,d7
2851 movel d7,a5
2852 cmpl a1,a5
2853 jle L2028
2854 clrl d0
2855 movew a0@(a1:l:2),d0
2856 asrl d6,d0
2857 clrl d1
2858 movew a0@(2,a1:l:2),d1
2859 moveq #16,d2
2860 subl d6,d2
============ Listing of BitString.s ============ PAGE 53
2861 asll d2,d1
2862 orl d1,d0
2863 jra L2083
2864 L2028:
2865 clrl d0
2866 movew a0@(a1:l:2),d0
2867 asrl d6,d0
2868 L2083:
2869 movel d0,a6@(-40)
2870 cmpl a1,a5
2871 jgt L2030
2872 movew #0,a4
2873 jra L2031
2874 L2030:
2875 clrl d0
2876 movew a0@(2,a1:l:2),d0
2877 asrl d6,d0
2878 movew d0,a4
2879 L2031:
2880 movel d5,d7
2881 lsrl #4,d7
2882 movel d7,a6@(-66)
2883 moveq #15,d7
2884 andl d7,d5
2885 movel d5,a6@(-42)
2886 movel a6@(-36),d7
2887 cmpl a6@(-66),d7
2888 jge L2035
2889 clrl d0
2890 movel a6@(20),a2
2891 movew a2@(d7:l:2),d0
2892 movel a3,d7
2893 asrl d7,d0
2894 clrl d1
2895 movel a6@(-36),d7
2896 movew a2@(2,d7:l:2),d1
2897 moveq #16,d2
2898 subl a3,d2
2899 asll d2,d1
2900 orl d1,d0
2901 jra L2084
2902 L2035:
2903 clrl d0
2904 movel a6@(20),a2
2905 movel a6@(-36),d7
2906 movew a2@(d7:l:2),d0
2907 movel a3,d7
2908 asrl d7,d0
2909 L2084:
2910 movel d0,a6@(-46)
2911 movel a6@(-36),d7
2912 cmpl a6@(-66),d7
2913 jne L2037
2914 moveq #15,d0
2915 subl a6@(-42),d0
============ Listing of BitString.s ============ PAGE 54
2916 tstl d0
2917 jle L2085
2918 jra L2044
2919 L2037:
2920 movel a6@(-36),d0
2921 addql #1,d0
2922 cmpl a6@(-66),d0
2923 jne L2042
2924 moveq #16,d0
2925 addl a6@(-42),d0
2926 subl a3,d0
2927 addql #1,d0
2928 moveq #15,d7
2929 subl d0,d7
2930 movel d7,d0
2931 jgt L2044
2932 L2085:
2933 movel #65535,a6@(-48)
2934 jra L2041
2935 L2044:
2936 movel #65535,d7
2937 asrl d0,d7
2938 movel d7,a6@(-48)
2939 jra L2041
2940 L2042:
2941 movew #65535,a6@(-46)
2942 L2041:
2943 movel d3,a6@(-72)
2944 moveq #16,d7
2945 subl a3,d7
2946 movel d7,a6@(-54)
2947 moveq #15,d7
2948 subl a6@(-42),d7
2949 movel d7,a6@(-58)
2950 movel #65535,a6@(-62)
2951 movel a6@(-62),d7
2952 movel a6@(-58),d4
2953 asrl d4,d7
2954 movel d7,a6@(-62)
2955 L2047:
2956 movew a6@(-38),d0
2957 andw a6@(-46),d0
2958 cmpw a6@(-44),d0
2959 jne L2050
2960 movel a1,d5
2961 movel a6@(-36),d3
2962 clrl d2
2963 moveq #16,d7
2964 subl d6,d7
2965 movel d7,a6@(-50)
2966 L2051:
2967 addql #1,d3
2968 cmpl a6@(-66),d3
2969 jgt L2055
2970 addql #1,d5
============ Listing of BitString.s ============ PAGE 55
2971 cmpl d5,a5
2972 jge L2054
2973 L2055:
2974 movel a6@(-72),d0
2975 jra L1960
2976 L2054:
2977 cmpl d5,a5
2978 jle L2057
2979 movew a0@(d5:l:2),d2
2980 movel d2,d0
2981 asrl d6,d0
2982 movew a0@(2,d5:l:2),d2
2983 movel d2,d1
2984 movel a6@(-50),d7
2985 asll d7,d1
2986 orl d1,d0
2987 jra L2056
2988 L2057:
2989 movew a0@(d5:l:2),d2
2990 movel d2,d7
2991 asrl d6,d7
2992 movel d7,d0
2993 L2056:
2994 movew d0,a6@(-68)
2995 cmpl a6@(-66),d3
2996 jge L2060
2997 movel a6@(20),a2
2998 movew a2@(d3:l:2),d2
2999 movel d2,d0
3000 movel a3,d7
3001 asrl d7,d0
3002 movew a2@(2,d3:l:2),d2
3003 movel d2,d1
3004 movel a6@(-54),d7
3005 asll d7,d1
3006 orl d1,d0
3007 jra L2059
3008 L2060:
3009 movel a6@(20),a2
3010 movew a2@(d3:l:2),d2
3011 movel d2,d7
3012 movel a3,d4
3013 asrl d4,d7
3014 movel d7,d0
3015 L2059:
3016 movew d0,d1
3017 cmpl a6@(-66),d3
3018 jne L2062
3019 tstl a6@(-58)
3020 jle L2087
3021 movel a6@(-62),d0
3022 jra L2068
3023 L2062:
3024 movel d3,d0
3025 addql #1,d0
============ Listing of BitString.s ============ PAGE 56
3026 cmpl a6@(-66),d0
3027 jne L2066
3028 moveq #16,d0
3029 addl a6@(-42),d0
3030 subl a3,d0
3031 addql #1,d0
3032 moveq #15,d7
3033 subl d0,d7
3034 movel d7,d0
3035 jgt L2069
3036 L2087:
3037 movel #65535,d0
3038 jra L2068
3039 L2069:
3040 movel #65535,d7
3041 asrl d0,d7
3042 movel d7,d0
3043 L2068:
3044 andw d0,a6@(-68)
3045 L2066:
3046 cmpw a6@(-68),d1
3047 jeq L2051
3048 L2050:
3049 addql #1,a6@(-72)
3050 movel a6@(-72),d7
3051 cmpl a6@(-32),d7
3052 jle L2072
3053 L2079:
3054 moveq #-1,d0
3055 jra L1960
3056 L2072:
3057 addql #1,d6
3058 moveq #16,d7
3059 cmpl d6,d7
3060 jne L2073
3061 clrl d6
3062 addqw #1,a1
3063 movew a0@(a1:l:2),a6@(-38)
3064 cmpl a1,a5
3065 jgt L2074
3066 clrw d0
3067 jra L2075
3068 L2074:
3069 movew a0@(2,a1:l:2),d0
3070 L2075:
3071 movew d0,a4
3072 jra L2047
3073 L2073:
3074 movew a6@(-38),d7
3075 lsrw #1,d7
3076 movew d7,a6@(-38)
3077 movew a4,d7
3078 btst #0,d7
3079 jeq L2077
3080 orw #32768,a6@(-38)
============ Listing of BitString.s ============ PAGE 57
3081 L2077:
3082 movew a4,d7
3083 lsrw #1,d7
3084 movew d7,a4
3085 jra L2047
3086 L1960:
3087 moveml a6@(-112),#0x3cfc
3088 unlk a6
3089 rts
3090 .even
3091 .globl _search__10BitPatternPUsii
3092 _search__10BitPatternPUsii:
3093 link a6,#-64
3094 moveml #0x3f3c,sp@-
3095 movel a6@(8),a0
3096 movel a6@(16),d4
3097 movel a6@(20),d2
3098 movel a0@,a5
3099 addqw #6,a5
3100 movel a0@(4),a4
3101 addqw #6,a4
3102 movel a0@,a1
3103 movel a1@,d1
3104 subql #1,d1
3105 movel a0@(4),a0
3106 movel a0@,d3
3107 subql #1,d3
3108 tstl d4
3109 slt d0
3110 btst #0,d0
3111 jeq L2089
3112 clrl a6@(-4)
3113 movel d2,d0
3114 addl d4,d0
3115 movel d0,d4
3116 subl d1,d4
3117 tstl d1
3118 jlt L2202
3119 tstl d4
3120 jlt L2203
3121 cmpl d4,d2
3122 jle L2203
3123 movel d4,d6
3124 lsrl #4,d6
3125 movel d6,a1
3126 moveq #15,d6
3127 andl d4,d6
3128 movel d6,a0
3129 lsrl #4,d0
3130 movel d0,a2
3131 lsrl #4,d3
3132 movel d3,a6@(-8)
3133 lsrl #4,d1
3134 movel d1,a6@(-12)
3135 cmpl a1,a2
============ Listing of BitString.s ============ PAGE 58
3136 jge L2099
3137 clrl a6@(-56)
3138 jra L2098
3139 L2099:
3140 cmpl a1,a2
3141 jne L2101
3142 clrl d0
3143 movel a6@(12),a3
3144 movew a3@(a1:l:2),d0
3145 movel a0,d6
3146 asrl d6,d0
3147 jra L2204
3148 L2101:
3149 clrl d0
3150 movel a6@(12),a3
3151 movew a3@(a1:l:2),d0
3152 movel a0,d6
3153 asrl d6,d0
3154 clrl d1
3155 movew a3@(2,a1:l:2),d1
3156 moveq #16,d2
3157 subl a0,d2
3158 asll d2,d1
3159 orl d1,d0
3160 L2204:
3161 movel d0,a6@(-56)
3162 L2098:
3163 clrl d2
3164 clrl d3
3165 cmpl a6@(-8),d2
3166 jle L2104
3167 clrl a6@(-16)
3168 jra L2103
3169 L2104:
3170 cmpl a6@(-8),d2
3171 jne L2106
3172 clrl d0
3173 movew a4@(d2:l:2),d0
3174 asrl d3,d0
3175 jra L2205
3176 L2106:
3177 clrl d0
3178 movew a4@(d2:l:2),d0
3179 asrl d3,d0
3180 clrl d1
3181 movew a4@(2,d2:l:2),d1
3182 moveq #16,d2
3183 subl d3,d2
3184 asll d2,d1
3185 orl d1,d0
3186 L2205:
3187 movel d0,a6@(-16)
3188 L2103:
3189 clrl d2
3190 clrl d3
============ Listing of BitString.s ============ PAGE 59
3191 cmpl a6@(-12),d2
3192 jle L2109
3193 clrl d0
3194 jra L2108
3195 L2109:
3196 cmpl a6@(-12),d2
3197 jne L2111
3198 clrl d0
3199 movew a5@(d2:l:2),d0
3200 asrl d3,d0
3201 jra L2108
3202 L2111:
3203 clrl d0
3204 movew a5@(d2:l:2),d0
3205 asrl d3,d0
3206 clrl d1
3207 movew a5@(2,d2:l:2),d1
3208 moveq #16,d2
3209 subl d3,d2
3210 asll d2,d1
3211 orl d1,d0
3212 L2108:
3213 andw a6@(-14),d0
3214 movew d0,a6@(-16)
3215 movel d4,a6@(-62)
3216 moveq #16,d6
3217 clrl d7
3218 subl d7,d6
3219 movel d6,a6@(-20)
3220 clrl d5
3221 L2113:
3222 movew a6@(-54),d0
3223 andw a6@(-14),d0
3224 cmpw a6@(-16),d0
3225 jne L2116
3226 movel a1,d4
3227 clrl d3
3228 clrl d2
3229 moveq #16,d6
3230 subl a0,d6
3231 movel d6,a6@(-24)
3232 L2117:
3233 addql #1,d3
3234 cmpl a6@(-12),d3
3235 jgt L2121
3236 addql #1,d4
3237 cmpl d4,a2
3238 jge L2120
3239 L2121:
3240 movel a6@(-62),d0
3241 jra L2088
3242 L2120:
3243 cmpl a6@(-8),d3
3244 jle L2123
3245 clrl d0
============ Listing of BitString.s ============ PAGE 60
3246 jra L2122
3247 L2123:
3248 cmpl a6@(-8),d3
3249 jne L2125
3250 movew a4@(d3:l:2),d2
3251 movel d2,d6
3252 clrl d7
3253 asrl d7,d6
3254 movel d6,d0
3255 jra L2122
3256 L2125:
3257 movew a4@(d3:l:2),d2
3258 movel d2,d0
3259 clrl d6
3260 asrl d6,d0
3261 movew a4@(2,d3:l:2),d2
3262 movel d2,d1
3263 movel a6@(-20),d6
3264 asll d6,d1
3265 orl d1,d0
3266 L2122:
3267 movew d0,a6@(-52)
3268 cmpl a6@(-12),d3
3269 jle L2128
3270 clrl d0
3271 jra L2127
3272 L2128:
3273 cmpl a6@(-12),d3
3274 jne L2130
3275 movew a5@(d3:l:2),d2
3276 movel d2,d6
3277 clrl d7
3278 asrl d7,d6
3279 movel d6,d0
3280 jra L2127
3281 L2130:
3282 movew a5@(d3:l:2),d2
3283 movel d2,d0
3284 clrl d6
3285 asrl d6,d0
3286 movew a5@(2,d3:l:2),d2
3287 movel d2,d1
3288 movel a6@(-20),d6
3289 asll d6,d1
3290 orl d1,d0
3291 L2127:
3292 movew d0,a6@(-54)
3293 cmpl d4,a2
3294 jge L2133
3295 clrl d0
3296 jra L2132
3297 L2133:
3298 cmpl d4,a2
3299 jne L2135
3300 movel a6@(12),a3
============ Listing of BitString.s ============ PAGE 61
3301 movew a3@(d4:l:2),d2
3302 movel d2,d6
3303 movel a0,d7
3304 asrl d7,d6
3305 movel d6,d0
3306 jra L2132
3307 L2135:
3308 movel a6@(12),a3
3309 movew a3@(d4:l:2),d2
3310 movel d2,d0
3311 movel a0,d6
3312 asrl d6,d0
3313 movew a3@(2,d4:l:2),d2
3314 movel d2,d1
3315 movel a6@(-24),d6
3316 asll d6,d1
3317 orl d1,d0
3318 L2132:
3319 andw a6@(-52),d0
3320 movew a6@(-54),d1
3321 andw a6@(-52),d1
3322 cmpw d0,d1
3323 jeq L2117
3324 L2116:
3325 subql #1,a6@(-62)
3326 movel a6@(-62),d6
3327 cmpl a6@(-4),d6
3328 jlt L2203
3329 subqw #1,a0
3330 tstl a0
3331 jge L2139
3332 movew #15,a0
3333 subqw #1,a1
3334 L2139:
3335 cmpl a1,a2
3336 jge L2141
3337 clrl d0
3338 jra L2140
3339 L2141:
3340 cmpl a1,a2
3341 jne L2143
3342 movel a6@(12),a3
3343 movew a3@(a1:l:2),d5
3344 movel d5,d6
3345 movel a0,d7
3346 asrl d7,d6
3347 movel d6,d0
3348 jra L2140
3349 L2143:
3350 movel a6@(12),a3
3351 movew a3@(a1:l:2),d5
3352 movel d5,d0
3353 movel a0,d6
3354 asrl d6,d0
3355 movew a3@(2,a1:l:2),d5
============ Listing of BitString.s ============ PAGE 62
3356 moveq #16,d1
3357 subl a0,d1
3358 movel d5,d6
3359 asll d1,d6
3360 movel d6,d1
3361 orl d1,d0
3362 L2140:
3363 movew d0,a6@(-54)
3364 jra L2113
3365 L2089:
3366 movel d2,d6
3367 subql #1,d6
3368 movel d6,a6@(-28)
3369 tstl d1
3370 jge L2146
3371 L2202:
3372 movel d4,d0
3373 jra L2088
3374 L2146:
3375 tstl d4
3376 jlt L2203
3377 cmpl d4,d2
3378 jle L2203
3379 movel d4,d6
3380 lsrl #4,d6
3381 movel d6,a0
3382 moveq #15,d6
3383 andl d4,d6
3384 movel d6,a6@(-58)
3385 movel a6@(-28),d6
3386 lsrl #4,d6
3387 movel d6,a6@(-62)
3388 lsrl #4,d3
3389 movel d3,a6@(-32)
3390 lsrl #4,d1
3391 movel d1,a6@(-36)
3392 cmpl a0,d6
3393 jge L2155
3394 clrl a6@(-40)
3395 jra L2154
3396 L2155:
3397 cmpl a6@(-62),a0
3398 jne L2157
3399 clrl d0
3400 movel a6@(12),a3
3401 movew a3@(a0:l:2),d0
3402 movel a6@(-58),d6
3403 asrl d6,d0
3404 jra L2206
3405 L2157:
3406 clrl d0
3407 movel a6@(12),a3
3408 movew a3@(a0:l:2),d0
3409 movel a6@(-58),d6
3410 asrl d6,d0
============ Listing of BitString.s ============ PAGE 63
3411 clrl d1
3412 movew a3@(2,a0:l:2),d1
3413 moveq #16,d2
3414 subl d6,d2
3415 asll d2,d1
3416 orl d1,d0
3417 L2206:
3418 movel d0,a6@(-40)
3419 L2154:
3420 clrl d2
3421 clrl d3
3422 cmpl a6@(-32),d2
3423 jle L2160
3424 clrl a6@(-42)
3425 jra L2159
3426 L2160:
3427 cmpl a6@(-32),d2
3428 jne L2162
3429 clrl d0
3430 movew a4@(d2:l:2),d0
3431 asrl d3,d0
3432 jra L2207
3433 L2162:
3434 clrl d0
3435 movew a4@(d2:l:2),d0
3436 asrl d3,d0
3437 clrl d1
3438 movew a4@(2,d2:l:2),d1
3439 moveq #16,d2
3440 subl d3,d2
3441 asll d2,d1
3442 orl d1,d0
3443 L2207:
3444 movel d0,a6@(-42)
3445 L2159:
3446 clrl d2
3447 clrl d3
3448 cmpl a6@(-36),d2
3449 jle L2165
3450 clrl d0
3451 jra L2164
3452 L2165:
3453 cmpl a6@(-36),d2
3454 jne L2167
3455 clrl d0
3456 movew a5@(d2:l:2),d0
3457 asrl d3,d0
3458 jra L2164
3459 L2167:
3460 clrl d0
3461 movew a5@(d2:l:2),d0
3462 asrl d3,d0
3463 clrl d1
3464 movew a5@(2,d2:l:2),d1
3465 moveq #16,d2
============ Listing of BitString.s ============ PAGE 64
3466 subl d3,d2
3467 asll d2,d1
3468 orl d1,d0
3469 L2164:
3470 andw a6@(-40),d0
3471 movew d0,a6@(-42)
3472 cmpl a6@(-62),a0
3473 jlt L2169
3474 movew #0,a1
3475 jra L2170
3476 L2169:
3477 clrl d0
3478 movel a6@(12),a3
3479 movew a3@(2,a0:l:2),d0
3480 movel a6@(-58),d6
3481 asrl d6,d0
3482 movew d0,a1
3483 L2170:
3484 movel d4,a2
3485 moveq #16,d6
3486 clrl d7
3487 subl d7,d6
3488 movel d6,a6@(-46)
3489 L2171:
3490 movew a6@(-38),d0
3491 andw a6@(-40),d0
3492 cmpw a6@(-42),d0
3493 jne L2174
3494 movel a0,d4
3495 clrl d3
3496 clrl d2
3497 moveq #16,d6
3498 subl a6@(-58),d6
3499 movel d6,a6@(-50)
3500 L2175:
3501 addql #1,d3
3502 cmpl a6@(-36),d3
3503 jgt L2179
3504 addql #1,d4
3505 cmpl a6@(-62),d4
3506 jle L2178
3507 L2179:
3508 movel a2,d0
3509 jra L2088
3510 L2178:
3511 cmpl a6@(-32),d3
3512 jle L2181
3513 clrl d0
3514 jra L2180
3515 L2181:
3516 cmpl a6@(-32),d3
3517 jne L2183
3518 movew a4@(d3:l:2),d2
3519 movel d2,d6
3520 clrl d7
============ Listing of BitString.s ============ PAGE 65
3521 asrl d7,d6
3522 movel d6,d0
3523 jra L2180
3524 L2183:
3525 movew a4@(d3:l:2),d2
3526 movel d2,d0
3527 clrl d6
3528 asrl d6,d0
3529 movew a4@(2,d3:l:2),d2
3530 movel d2,d1
3531 movel a6@(-46),d6
3532 asll d6,d1
3533 orl d1,d0
3534 L2180:
3535 movew d0,d5
3536 cmpl a6@(-36),d3
3537 jle L2186
3538 clrl d0
3539 jra L2185
3540 L2186:
3541 cmpl a6@(-36),d3
3542 jne L2188
3543 movew a5@(d3:l:2),d2
3544 movel d2,d6
3545 clrl d7
3546 asrl d7,d6
3547 movel d6,d0
3548 jra L2185
3549 L2188:
3550 movew a5@(d3:l:2),d2
3551 movel d2,d0
3552 clrl d6
3553 asrl d6,d0
3554 movew a5@(2,d3:l:2),d2
3555 movel d2,d1
3556 movel a6@(-46),d6
3557 asll d6,d1
3558 orl d1,d0
3559 L2185:
3560 movew d0,a6@(-52)
3561 cmpl a6@(-62),d4
3562 jle L2191
3563 clrl d0
3564 jra L2190
3565 L2191:
3566 cmpl a6@(-62),d4
3567 jne L2193
3568 movel a6@(12),a3
3569 movew a3@(d4:l:2),d2
3570 movel d2,d6
3571 movel a6@(-58),d7
3572 asrl d7,d6
3573 movel d6,d0
3574 jra L2190
3575 L2193:
============ Listing of BitString.s ============ PAGE 66
3576 movel a6@(12),a3
3577 movew a3@(d4:l:2),d2
3578 movel d2,d0
3579 movel a6@(-58),d6
3580 asrl d6,d0
3581 movew a3@(2,d4:l:2),d2
3582 movel d2,d1
3583 movel a6@(-50),d6
3584 asll d6,d1
3585 orl d1,d0
3586 L2190:
3587 andw d5,d0
3588 movew a6@(-52),d1
3589 andw d5,d1
3590 cmpw d0,d1
3591 jeq L2175
3592 L2174:
3593 addqw #1,a2
3594 cmpl a6@(-28),a2
3595 jle L2196
3596 L2203:
3597 moveq #-1,d0
3598 jra L2088
3599 L2196:
3600 addql #1,a6@(-58)
3601 moveq #16,d6
3602 cmpl a6@(-58),d6
3603 jne L2197
3604 clrl a6@(-58)
3605 addqw #1,a0
3606 movel a6@(12),a3
3607 movew a3@(a0:l:2),a6@(-38)
3608 cmpl a6@(-62),a0
3609 jlt L2198
3610 clrw d0
3611 jra L2199
3612 L2198:
3613 movel a6@(12),a3
3614 movew a3@(2,a0:l:2),d0
3615 L2199:
3616 movew d0,a1
3617 jra L2171
3618 L2197:
3619 movew a6@(-38),d6
3620 lsrw #1,d6
3621 movew d6,a6@(-38)
3622 movew a1,d6
3623 btst #0,d6
3624 jeq L2201
3625 orw #32768,a6@(-38)
3626 L2201:
3627 movew a1,d6
3628 lsrw #1,d6
3629 movew d6,a1
3630 jra L2171
============ Listing of BitString.s ============ PAGE 67
3631 L2088:
3632 moveml a6@(-104),#0x3cfc
3633 unlk a6
3634 rts
3635 .even
3636 .globl _match__9BitStringiiiPUsii
3637 _match__9BitStringiiiPUsii:
3638 link a6,#-24
3639 moveml #0x3f3c,sp@-
3640 movel a6@(12),d1
3641 movel a6@(16),d5
3642 movel a6@(20),a0
3643 movel a6@(24),a4
3644 movel a6@(28),a2
3645 movel a6@(32),d0
3646 movel a6@(8),a5
3647 movel a5@,a1
3648 addqw #6,a1
3649 movel d0,d3
3650 subl a2,d3
3651 movel d0,d4
3652 subql #1,d4
3653 tstl d1
3654 slt d0
3655 btst #0,d0
3656 jeq L2209
3657 movel d5,d2
3658 addl d1,d2
3659 movel d2,d1
3660 subl d3,d1
3661 addql #1,d1
3662 tstl a0
3663 jeq L2211
3664 tstl d1
3665 jeq L2211
3666 L2246:
3667 clrl d0
3668 jra L2208
3669 L2209:
3670 movel d5,d2
3671 subql #1,d2
3672 tstl a0
3673 jeq L2211
3674 movel d2,d0
3675 subl d1,d0
3676 cmpl d0,d4
3677 jne L2246
3678 L2211:
3679 tstl d3
3680 jeq L2244
3681 tstl d4
3682 jlt L2246
3683 tstl d1
3684 jlt L2246
3685 cmpl d1,d5
============ Listing of BitString.s ============ PAGE 68
3686 jle L2246
3687 movel d1,d5
3688 lsrl #4,d5
3689 moveq #15,d7
3690 andl d7,d1
3691 movel d1,a6@(-4)
3692 movel a2,d3
3693 lsrl #4,d3
3694 moveq #15,d7
3695 movel a2,d6
3696 andl d6,d7
3697 movel d7,a6@(-16)
3698 lsrl #4,d2
3699 movel d2,a0
3700 movel d4,d7
3701 lsrl #4,d7
3702 movel d7,a6@(-20)
3703 moveq #15,d7
3704 andl d7,d4
3705 movel d4,a3
3706 clrl d2
3707 moveq #16,d7
3708 subl d1,d7
3709 movel d7,a6@(-8)
3710 moveq #16,d7
3711 subl a6@(-16),d7
3712 movel d7,a6@(-12)
3713 moveq #15,d7
3714 subl a3,d7
3715 movel d7,a2
3716 movel #65535,a6@(-24)
3717 movel a6@(-24),d7
3718 movel a2,d6
3719 asrl d6,d7
3720 movel d7,a6@(-24)
3721 L2223:
3722 cmpl d5,a0
3723 jle L2227
3724 movew a1@(d5:l:2),d2
3725 movel d2,d0
3726 movel a6@(-4),d7
3727 asrl d7,d0
3728 movew a1@(2,d5:l:2),d2
3729 movel d2,d1
3730 movel a6@(-8),d7
3731 asll d7,d1
3732 orl d1,d0
3733 jra L2226
3734 L2227:
3735 movew a1@(d5:l:2),d2
3736 movel d2,d7
3737 movel a6@(-4),d6
3738 asrl d6,d7
3739 movel d7,d0
3740 L2226:
============ Listing of BitString.s ============ PAGE 69
3741 movew d0,d4
3742 cmpl a6@(-20),d3
3743 jge L2230
3744 movew a4@(d3:l:2),d2
3745 movel d2,d0
3746 movel a6@(-16),d7
3747 asrl d7,d0
3748 movew a4@(2,d3:l:2),d2
3749 movel d2,d1
3750 movel a6@(-12),d7
3751 asll d7,d1
3752 orl d1,d0
3753 jra L2229
3754 L2230:
3755 movew a4@(d3:l:2),d2
3756 movel d2,d7
3757 movel a6@(-16),d6
3758 asrl d6,d7
3759 movel d7,d0
3760 L2229:
3761 movew d0,d1
3762 cmpl a6@(-20),d3
3763 jne L2232
3764 tstl a2
3765 jle L2247
3766 movel a6@(-24),d0
3767 jra L2238
3768 L2232:
3769 movel d3,d0
3770 addql #1,d0
3771 cmpl a6@(-20),d0
3772 jne L2236
3773 moveq #16,d0
3774 addl a3,d0
3775 subl a6@(-16),d0
3776 addql #1,d0
3777 moveq #15,d7
3778 subl d0,d7
3779 movel d7,d0
3780 jgt L2239
3781 L2247:
3782 movel #65535,d0
3783 jra L2238
3784 L2239:
3785 movel #65535,d7
3786 asrl d0,d7
3787 movel d7,d0
3788 L2238:
3789 andw d0,d4
3790 L2236:
3791 cmpw d4,d1
3792 jne L2246
3793 addql #1,d3
3794 cmpl a6@(-20),d3
3795 jgt L2244
============ Listing of BitString.s ============ PAGE 70
3796 addql #1,d5
3797 cmpl d5,a0
3798 jge L2223
3799 L2244:
3800 moveq #1,d0
3801 L2208:
3802 moveml a6@(-64),#0x3cfc
3803 unlk a6
3804 rts
3805 .even
3806 .globl _match__10BitPatternPUsiii
3807 _match__10BitPatternPUsiii:
3808 link a6,#-16
3809 moveml #0x3f3c,sp@-
3810 movel a6@(8),a0
3811 movel a6@(16),d1
3812 movel a6@(20),d3
3813 movel a6@(24),d4
3814 movel a0@,a5
3815 addqw #6,a5
3816 movel a0@,a1
3817 movel a1@,a3
3818 subqw #1,a3
3819 movel a0@(4),a4
3820 addqw #6,a4
3821 movel a0@(4),a0
3822 movel a0@,d7
3823 subql #1,d7
3824 tstl d1
3825 slt d0
3826 btst #0,d0
3827 jeq L2249
3828 movel d3,d2
3829 addl d1,d2
3830 movel d2,d1
3831 subl a3,d1
3832 tstl d4
3833 jeq L2251
3834 tstl d1
3835 jeq L2251
3836 L2284:
3837 clrl d0
3838 jra L2248
3839 L2249:
3840 movel d3,d2
3841 subql #1,d2
3842 tstl d4
3843 jeq L2251
3844 movel d2,d0
3845 subl d1,d0
3846 cmpl d0,a3
3847 jne L2284
3848 L2251:
3849 tstl a3
3850 jlt L2282
============ Listing of BitString.s ============ PAGE 71
3851 tstl d1
3852 jlt L2284
3853 cmpl d1,d3
3854 jle L2284
3855 movel d1,d4
3856 lsrl #4,d4
3857 moveq #15,d6
3858 andl d6,d1
3859 movel d1,a6@(-4)
3860 clrl d3
3861 lsrl #4,d2
3862 movel d2,a1
3863 movel a3,d6
3864 lsrl #4,d6
3865 movel d6,a0
3866 lsrl #4,d7
3867 movel d7,a3
3868 clrl d7
3869 clrl d2
3870 moveq #16,d6
3871 subl d7,d6
3872 movel d6,a6@(-16)
3873 moveq #16,d6
3874 subl d1,d6
3875 movel d6,a6@(-8)
3876 L2261:
3877 cmpl d3,a3
3878 jge L2265
3879 clrl d0
3880 jra L2264
3881 L2265:
3882 cmpl d3,a3
3883 jne L2267
3884 movew a4@(d3:l:2),d2
3885 movel d2,d6
3886 asrl d7,d6
3887 movel d6,d0
3888 jra L2264
3889 L2267:
3890 movew a4@(d3:l:2),d2
3891 movel d2,d0
3892 asrl d7,d0
3893 movew a4@(2,d3:l:2),d2
3894 movel d2,d1
3895 movel a6@(-16),d6
3896 asll d6,d1
3897 orl d1,d0
3898 L2264:
3899 movew d0,a6@(-10)
3900 cmpl d4,a1
3901 jge L2270
3902 clrl d0
3903 jra L2269
3904 L2270:
3905 cmpl d4,a1
============ Listing of BitString.s ============ PAGE 72
3906 jne L2272
3907 movel a6@(12),a2
3908 movew a2@(d4:l:2),d2
3909 movel d2,d6
3910 movel a6@(-4),d5
3911 asrl d5,d6
3912 movel d6,d0
3913 jra L2269
3914 L2272:
3915 movel a6@(12),a2
3916 movew a2@(d4:l:2),d2
3917 movel d2,d0
3918 movel a6@(-4),d6
3919 asrl d6,d0
3920 movew a2@(2,d4:l:2),d2
3921 movel d2,d1
3922 movel a6@(-8),d6
3923 asll d6,d1
3924 orl d1,d0
3925 L2269:
3926 andw a6@(-10),d0
3927 movew d0,a6@(-12)
3928 cmpl d3,a0
3929 jge L2275
3930 clrl d0
3931 jra L2274
3932 L2275:
3933 cmpl d3,a0
3934 jne L2277
3935 movew a5@(d3:l:2),d2
3936 movel d2,d6
3937 asrl d7,d6
3938 movel d6,d0
3939 jra L2274
3940 L2277:
3941 movew a5@(d3:l:2),d2
3942 movel d2,d0
3943 asrl d7,d0
3944 movew a5@(2,d3:l:2),d2
3945 movel d2,d1
3946 movel a6@(-16),d6
3947 asll d6,d1
3948 orl d1,d0
3949 L2274:
3950 andw a6@(-10),d0
3951 cmpw a6@(-12),d0
3952 jne L2284
3953 addql #1,d3
3954 cmpl d3,a0
3955 jlt L2282
3956 addql #1,d4
3957 cmpl d4,a1
3958 jge L2261
3959 L2282:
3960 moveq #1,d0
============ Listing of BitString.s ============ PAGE 73
3961 L2248:
3962 moveml a6@(-56),#0x3cfc
3963 unlk a6
3964 rts
3965 .even
3966 .globl ___12BitSubStringP9BitStringii
3967 ___12BitSubStringP9BitStringii:
3968 link a6,#0
3969 moveml #0x2020,sp@-
3970 movel a6@(8),a1
3971 movel a6@(12),a2
3972 movel a6@(16),d1
3973 movel a6@(20),d2
3974 tstl d1
3975 jlt L2287
3976 tstl d2
3977 jle L2287
3978 movel d1,d0
3979 addl d2,d0
3980 movel a2@,a0
3981 cmpl a0@,d0
3982 jls L2286
3983 L2287:
3984 movel #__nil_BitString,a1@
3985 clrl a1@(8)
3986 clrl a1@(4)
3987 jra L2288
3988 L2286:
3989 movel a2,a1@
3990 movel d1,a1@(4)
3991 movel d2,a1@(8)
3992 L2288:
3993 movel a1,d0
3994 moveml a6@(-8),#0x404
3995 unlk a6
3996 rts
3997 .even
3998 .globl _op$assign_nop__12BitSubStringR9BitString
3999 _op$assign_nop__12BitSubStringR9BitString:
4000 link a6,#0
4001 moveml #0x3c3c,sp@-
4002 movel a6@(8),a5
4003 cmpl #__nil_BitString,a5@
4004 jeq L2289
4005 movel a5@,a0
4006 movel a0@,a4
4007 movel a6@(12),a1
4008 movel a1@,a0
4009 movel a0@,d4
4010 movel a4@,d0
4011 subl a5@(8),d0
4012 movel d0,d3
4013 addl d4,d3
4014 cmpl a1@,a4
4015 jeq L2292
============ Listing of BitString.s ============ PAGE 74
4016 cmpl a5@(8),d4
4017 jle L2291
4018 L2292:
4019 movel a4,a2
4020 movel d3,sp@-
4021 clrl sp@-
4022 clrl sp@-
4023 clrl sp@-
4024 clrl sp@-
4025 jbsr _BStr_alloc__FP9BitStrRepPUsiii
4026 movel d0,a4
4027 clrl sp@-
4028 movel a4,d2
4029 addql #6,d2
4030 movel d2,sp@-
4031 movel a5@(4),sp@-
4032 clrl sp@-
4033 movel a2,d3
4034 addql #6,d3
4035 movel d3,sp@-
4036 lea _bit_transfer__FPUsiiT0i,a3
4037 jbsr a3@
4038 addw #40,sp
4039 movel a5@(4),sp@-
4040 movel d2,sp@-
4041 movel d4,sp@-
4042 clrl sp@-
4043 movel a6@(12),a1
4044 movel a1@,d5
4045 addql #6,d5
4046 movel d5,sp@-
4047 jbsr a3@
4048 addl a5@(4),d4
4049 movel d4,sp@-
4050 movel d2,sp@-
4051 movel a2@,sp@-
4052 movel a5@(4),d5
4053 addl a5@(8),d5
4054 movel d5,sp@-
4055 movel d3,sp@-
4056 jbsr a3@
4057 addw #40,sp
4058 movel a2,sp@-
4059 jbsr ___builtin_delete
4060 jra L2293
4061 L2291:
4062 cmpl a5@(8),d4
4063 jne L2294
4064 movel a5@(4),sp@-
4065 pea a4@(6)
4066 movel a5@(8),sp@-
4067 clrl sp@-
4068 movel a6@(12),a1
4069 movel a1@,d5
4070 addql #6,d5
============ Listing of BitString.s ============ PAGE 75
4071 movel d5,sp@-
4072 jbsr _bit_transfer__FPUsiiT0i
4073 jra L2293
4074 L2294:
4075 cmpl a5@(8),d4
4076 jge L2293
4077 movel a5@(4),sp@-
4078 movel a4,d2
4079 addql #6,d2
4080 movel d2,sp@-
4081 movel d4,sp@-
4082 clrl sp@-
4083 movel a6@(12),a1
4084 movel a1@,d5
4085 addql #6,d5
4086 movel d5,sp@-
4087 lea _bit_transfer__FPUsiiT0i,a2
4088 jbsr a2@
4089 addl a5@(4),d4
4090 movel d4,sp@-
4091 movel d2,sp@-
4092 movel a4@,sp@-
4093 movel a5@(4),d5
4094 addl a5@(8),d5
4095 movel d5,sp@-
4096 movel d2,sp@-
4097 jbsr a2@
4098 movel d3,a4@
4099 L2293:
4100 movel a4@,d0
4101 lsrl #4,d0
4102 moveq #15,d1
4103 andl a4@,d1
4104 moveq #16,d5
4105 subl d1,d5
4106 movel d5,d1
4107 movel #65535,d2
4108 asrl d1,d2
4109 andw d2,a4@(6,d0:l:2)
4110 movel a5@,a0
4111 movel a4,a0@
4112 L2289:
4113 moveml a6@(-32),#0x3c3c
4114 unlk a6
4115 rts
4116 .even
4117 .globl _op$assign_nop__12BitSubStringR12BitSubString
4118 _op$assign_nop__12BitSubStringR12BitSubString:
4119 link a6,#0
4120 moveml #0x3c3c,sp@-
4121 movel a6@(12),a4
4122 movel a6@(8),a1
4123 cmpl #__nil_BitString,a1@
4124 jeq L2298
4125 movel a1@,a0
============ Listing of BitString.s ============ PAGE 76
4126 movel a0@,a3
4127 tstl a1@(8)
4128 jeq L2298
4129 movel a1@(4),d5
4130 cmpl a3@,d5
4131 jcc L2298
4132 movel a3@,d0
4133 subl a1@(8),d0
4134 movel d0,d3
4135 addl a4@(8),d3
4136 movel a4@,a0
4137 cmpl a0@,a3
4138 jeq L2303
4139 movel a4@(8),d5
4140 cmpl a1@(8),d5
4141 jle L2302
4142 L2303:
4143 movel a3,d4
4144 movel d3,sp@-
4145 clrl sp@-
4146 clrl sp@-
4147 clrl sp@-
4148 clrl sp@-
4149 jbsr _BStr_alloc__FP9BitStrRepPUsiii
4150 movel d0,a3
4151 movel d4,a5
4152 addqw #6,a5
4153 lea a3@(6),a2
4154 movel a6@(8),a1
4155 movel a1@(4),d3
4156 addw #20,sp
4157 cmpl a5,a2
4158 jeq L2304
4159 movel d3,d2
4160 lsrl #4,d2
4161 tstl d2
4162 jle L2306
4163 movel d2,d5
4164 asll #1,d5
4165 movel d5,sp@-
4166 movel a2,sp@-
4167 movel a5,sp@-
4168 jbsr _bcopy
4169 addw #12,sp
4170 L2306:
4171 moveq #15,d0
4172 andl d3,d0
4173 movel #65535,d1
4174 asll d0,d1
4175 movew d1,d0
4176 notw d0
4177 andw a5@(d2:l:2),d0
4178 andw a2@(d2:l:2),d1
4179 orw d1,d0
4180 movew d0,a2@(d2:l:2)
============ Listing of BitString.s ============ PAGE 77
4181 L2304:
4182 movel a6@(8),a1
4183 movel a1@(4),sp@-
4184 movel a3,d2
4185 addql #6,d2
4186 movel d2,sp@-
4187 movel a4@(4),d5
4188 addl a4@(8),d5
4189 movel d5,sp@-
4190 movel a4@(4),sp@-
4191 movel a4@,a0
4192 movel a0@,d5
4193 addql #6,d5
4194 movel d5,sp@-
4195 lea _bit_transfer__FPUsiiT0i,a2
4196 jbsr a2@
4197 movel a6@(8),a1
4198 movel a1@(4),d5
4199 addl a4@(8),d5
4200 movel d5,sp@-
4201 movel d2,sp@-
4202 movel d4,a1
4203 movel a1@,sp@-
4204 movel a6@(8),a1
4205 movel a1@(4),d5
4206 addl a1@(8),d5
4207 movel d5,sp@-
4208 movel d4,a1
4209 pea a1@(6)
4210 jbsr a2@
4211 addw #40,sp
4212 movel d4,sp@-
4213 jbsr ___builtin_delete
4214 jra L2307
4215 L2302:
4216 movel a6@(8),a1
4217 movel a1@(8),d5
4218 cmpl a4@(8),d5
4219 jne L2308
4220 movel a1@(4),sp@-
4221 pea a3@(6)
4222 movel a4@(4),d5
4223 addl a4@(8),d5
4224 movel d5,sp@-
4225 movel a4@(4),sp@-
4226 movel a4@,a0
4227 movel a0@,d5
4228 addql #6,d5
4229 movel d5,sp@-
4230 jbsr _bit_transfer__FPUsiiT0i
4231 jra L2307
4232 L2308:
4233 movel a4@(8),d5
4234 movel a6@(8),a1
4235 cmpl a1@(8),d5
============ Listing of BitString.s ============ PAGE 78
4236 jge L2307
4237 movel a1@(4),sp@-
4238 movel a3,d2
4239 addql #6,d2
4240 movel d2,sp@-
4241 movel a4@(4),d5
4242 addl a4@(8),d5
4243 movel d5,sp@-
4244 movel a4@(4),sp@-
4245 movel a4@,a0
4246 movel a0@,d5
4247 addql #6,d5
4248 movel d5,sp@-
4249 lea _bit_transfer__FPUsiiT0i,a2
4250 jbsr a2@
4251 movel a6@(8),a1
4252 movel a1@(4),d5
4253 addl a4@(8),d5
4254 movel d5,sp@-
4255 movel d2,sp@-
4256 movel a3@,sp@-
4257 movel a1@(4),d5
4258 addl a1@(8),d5
4259 movel d5,sp@-
4260 movel d2,sp@-
4261 jbsr a2@
4262 movel d3,a3@
4263 L2307:
4264 movel a3@,d0
4265 lsrl #4,d0
4266 moveq #15,d1
4267 andl a3@,d1
4268 moveq #16,d5
4269 subl d1,d5
4270 movel d5,d1
4271 movel #65535,d2
4272 asrl d1,d2
4273 andw d2,a3@(6,d0:l:2)
4274 movel a6@(8),a1
4275 movel a1@,a0
4276 movel a3,a0@
4277 L2298:
4278 moveml a6@(-32),#0x3c3c
4279 unlk a6
4280 rts
4281 .even
4282 .globl _at__9BitStringii
4283 _at__9BitStringii:
4284 link a6,#-12
4285 moveml #0x30,sp@-
4286 movel a1,a3
4287 movel a6@(16),sp@-
4288 movel a6@(12),sp@-
4289 movel a6@(8),sp@-
4290 lea a6@(-12),a2
============ Listing of BitString.s ============ PAGE 79
4291 movel a2,sp@-
4292 jbsr ___12BitSubStringP9BitStringii
4293 movel a2@,a3@
4294 movel a2@(4),a3@(4)
4295 movel a2@(8),a3@(8)
4296 movel a3,d0
4297 moveml a6@(-20),#0xc00
4298 unlk a6
4299 rts
4300 .even
4301 .globl _before__9BitStringi
4302 _before__9BitStringi:
4303 link a6,#-12
4304 moveml #0x30,sp@-
4305 movel a1,a3
4306 movel a6@(12),sp@-
4307 clrl sp@-
4308 movel a6@(8),sp@-
4309 lea a6@(-12),a2
4310 movel a2,sp@-
4311 jbsr ___12BitSubStringP9BitStringii
4312 movel a2@,a3@
4313 movel a2@(4),a3@(4)
4314 movel a2@(8),a3@(8)
4315 movel a3,d0
4316 moveml a6@(-20),#0xc00
4317 unlk a6
4318 rts
4319 .even
4320 .globl _after__9BitStringi
4321 _after__9BitStringi:
4322 link a6,#-12
4323 moveml #0x30,sp@-
4324 movel a1,a3
4325 movel a6@(8),a0
4326 movel a6@(12),a1
4327 movel a0@,a2
4328 movel a2@,d0
4329 subql #1,d0
4330 subl a1,d0
4331 movel d0,sp@-
4332 pea a1@(1)
4333 movel a0,sp@-
4334 lea a6@(-12),a2
4335 movel a2,sp@-
4336 jbsr ___12BitSubStringP9BitStringii
4337 movel a2@,a3@
4338 movel a2@(4),a3@(4)
4339 movel a2@(8),a3@(8)
4340 movel a3,d0
4341 moveml a6@(-20),#0xc00
4342 unlk a6
4343 rts
4344 .even
4345 .globl _at__9BitStringR9BitStringi
============ Listing of BitString.s ============ PAGE 80
4346 _at__9BitStringR9BitStringi:
4347 link a6,#-12
4348 moveml #0x38,sp@-
4349 movel a1,a3
4350 movel a6@(8),a2
4351 movel a6@(12),a4
4352 movel a4@,a0
4353 movel a0@,sp@-
4354 clrl sp@-
4355 movel a0,d1
4356 addql #6,d1
4357 movel d1,sp@-
4358 movel a2@,a0
4359 movel a0@,sp@-
4360 movel a6@(16),sp@-
4361 movel a2,sp@-
4362 jbsr _search__9BitStringiiPUsii
4363 movel a4@,a4
4364 movel a4@,sp@-
4365 movel d0,sp@-
4366 movel a2,sp@-
4367 lea a6@(-12),a2
4368 movel a2,sp@-
4369 jbsr ___12BitSubStringP9BitStringii
4370 movel a2@,a3@
4371 movel a2@(4),a3@(4)
4372 movel a2@(8),a3@(8)
4373 movel a3,d0
4374 moveml a6@(-24),#0x1c00
4375 unlk a6
4376 rts
4377 .even
4378 .globl _before__9BitStringR9BitStringi
4379 _before__9BitStringR9BitStringi:
4380 link a6,#-12
4381 moveml #0x30,sp@-
4382 movel a1,a3
4383 movel a6@(8),a2
4384 movel a6@(12),a0
4385 movel a0@,a1
4386 movel a1@,sp@-
4387 clrl sp@-
4388 movel a1,d1
4389 addql #6,d1
4390 movel d1,sp@-
4391 movel a2@,a0
4392 movel a0@,sp@-
4393 movel a6@(16),sp@-
4394 movel a2,sp@-
4395 jbsr _search__9BitStringiiPUsii
4396 movel d0,sp@-
4397 clrl sp@-
4398 movel a2,sp@-
4399 lea a6@(-12),a2
4400 movel a2,sp@-
============ Listing of BitString.s ============ PAGE 81
4401 jbsr ___12BitSubStringP9BitStringii
4402 movel a2@,a3@
4403 movel a2@(4),a3@(4)
4404 movel a2@(8),a3@(8)
4405 movel a3,d0
4406 moveml a6@(-20),#0xc00
4407 unlk a6
4408 rts
4409 .even
4410 .globl _after__9BitStringR9BitStringi
4411 _after__9BitStringR9BitStringi:
4412 link a6,#-12
4413 moveml #0x38,sp@-
4414 movel a1,a3
4415 movel a6@(8),a4
4416 movel a6@(12),a2
4417 movel a2@,a0
4418 movel a0@,sp@-
4419 clrl sp@-
4420 movel a0,d1
4421 addql #6,d1
4422 movel d1,sp@-
4423 movel a4@,a0
4424 movel a0@,sp@-
4425 movel a6@(16),sp@-
4426 movel a4,sp@-
4427 jbsr _search__9BitStringiiPUsii
4428 addw #24,sp
4429 tstl d0
4430 jlt L2353
4431 movel a2@,a0
4432 addl a0@,d0
4433 L2353:
4434 movel a4@,a0
4435 movel a0@,d1
4436 subl d0,d1
4437 movel d1,sp@-
4438 movel d0,sp@-
4439 movel a4,sp@-
4440 lea a6@(-12),a2
4441 movel a2,sp@-
4442 jbsr ___12BitSubStringP9BitStringii
4443 movel a2@,a3@
4444 movel a2@(4),a3@(4)
4445 movel a2@(8),a3@(8)
4446 movel a3,d0
4447 moveml a6@(-24),#0x1c00
4448 unlk a6
4449 rts
4450 .even
4451 .globl _at__9BitStringR12BitSubStringi
4452 _at__9BitStringR12BitSubStringi:
4453 link a6,#-12
4454 moveml #0x38,sp@-
4455 movel a1,a3
============ Listing of BitString.s ============ PAGE 82
4456 movel a6@(8),a2
4457 movel a6@(12),a4
4458 movel a4@(8),sp@-
4459 movel a4@(4),sp@-
4460 movel a4@,a0
4461 movel a0@,d1
4462 addql #6,d1
4463 movel d1,sp@-
4464 movel a2@,a0
4465 movel a0@,sp@-
4466 movel a6@(16),sp@-
4467 movel a2,sp@-
4468 jbsr _search__9BitStringiiPUsii
4469 movel a4@(8),sp@-
4470 movel d0,sp@-
4471 movel a2,sp@-
4472 lea a6@(-12),a2
4473 movel a2,sp@-
4474 jbsr ___12BitSubStringP9BitStringii
4475 movel a2@,a3@
4476 movel a2@(4),a3@(4)
4477 movel a2@(8),a3@(8)
4478 movel a3,d0
4479 moveml a6@(-24),#0x1c00
4480 unlk a6
4481 rts
4482 .even
4483 .globl _before__9BitStringR12BitSubStringi
4484 _before__9BitStringR12BitSubStringi:
4485 link a6,#-12
4486 moveml #0x30,sp@-
4487 movel a1,a3
4488 movel a6@(8),a2
4489 movel a6@(12),a0
4490 movel a0@(8),sp@-
4491 movel a0@(4),sp@-
4492 movel a0@,a0
4493 movel a0@,d1
4494 addql #6,d1
4495 movel d1,sp@-
4496 movel a2@,a0
4497 movel a0@,sp@-
4498 movel a6@(16),sp@-
4499 movel a2,sp@-
4500 jbsr _search__9BitStringiiPUsii
4501 movel d0,sp@-
4502 clrl sp@-
4503 movel a2,sp@-
4504 lea a6@(-12),a2
4505 movel a2,sp@-
4506 jbsr ___12BitSubStringP9BitStringii
4507 movel a2@,a3@
4508 movel a2@(4),a3@(4)
4509 movel a2@(8),a3@(8)
4510 movel a3,d0
============ Listing of BitString.s ============ PAGE 83
4511 moveml a6@(-20),#0xc00
4512 unlk a6
4513 rts
4514 .even
4515 .globl _after__9BitStringR12BitSubStringi
4516 _after__9BitStringR12BitSubStringi:
4517 link a6,#-12
4518 moveml #0x38,sp@-
4519 movel a1,a3
4520 movel a6@(8),a4
4521 movel a6@(12),a2
4522 movel a2@(8),sp@-
4523 movel a2@(4),sp@-
4524 movel a2@,a0
4525 movel a0@,d1
4526 addql #6,d1
4527 movel d1,sp@-
4528 movel a4@,a0
4529 movel a0@,sp@-
4530 movel a6@(16),sp@-
4531 movel a4,sp@-
4532 jbsr _search__9BitStringiiPUsii
4533 addw #24,sp
4534 tstl d0
4535 jlt L2378
4536 addl a2@(8),d0
4537 L2378:
4538 movel a4@,a0
4539 movel a0@,d1
4540 subl d0,d1
4541 movel d1,sp@-
4542 movel d0,sp@-
4543 movel a4,sp@-
4544 lea a6@(-12),a2
4545 movel a2,sp@-
4546 jbsr ___12BitSubStringP9BitStringii
4547 movel a2@,a3@
4548 movel a2@(4),a3@(4)
4549 movel a2@(8),a3@(8)
4550 movel a3,d0
4551 moveml a6@(-24),#0x1c00
4552 unlk a6
4553 rts
4554 .even
4555 .globl _at__9BitStringR10BitPatterni
4556 _at__9BitStringR10BitPatterni:
4557 link a6,#-12
4558 moveml #0x38,sp@-
4559 movel a1,a3
4560 movel a6@(8),a2
4561 movel a6@(12),a4
4562 movel a2@,a0
4563 movel a0@,sp@-
4564 movel a6@(16),sp@-
4565 movel a0,d1
============ Listing of BitString.s ============ PAGE 84
4566 addql #6,d1
4567 movel d1,sp@-
4568 movel a4,sp@-
4569 jbsr _search__10BitPatternPUsii
4570 movel a4@,a4
4571 movel a4@,sp@-
4572 movel d0,sp@-
4573 movel a2,sp@-
4574 lea a6@(-12),a2
4575 movel a2,sp@-
4576 jbsr ___12BitSubStringP9BitStringii
4577 movel a2@,a3@
4578 movel a2@(4),a3@(4)
4579 movel a2@(8),a3@(8)
4580 movel a3,d0
4581 moveml a6@(-24),#0x1c00
4582 unlk a6
4583 rts
4584 .even
4585 .globl _before__9BitStringR10BitPatterni
4586 _before__9BitStringR10BitPatterni:
4587 link a6,#-12
4588 moveml #0x30,sp@-
4589 movel a1,a3
4590 movel a6@(8),a2
4591 movel a2@,a0
4592 movel a0@,sp@-
4593 movel a6@(16),sp@-
4594 movel a0,d1
4595 addql #6,d1
4596 movel d1,sp@-
4597 movel a6@(12),sp@-
4598 jbsr _search__10BitPatternPUsii
4599 movel d0,sp@-
4600 clrl sp@-
4601 movel a2,sp@-
4602 lea a6@(-12),a2
4603 movel a2,sp@-
4604 jbsr ___12BitSubStringP9BitStringii
4605 movel a2@,a3@
4606 movel a2@(4),a3@(4)
4607 movel a2@(8),a3@(8)
4608 movel a3,d0
4609 moveml a6@(-20),#0xc00
4610 unlk a6
4611 rts
4612 .even
4613 .globl _after__9BitStringR10BitPatterni
4614 _after__9BitStringR10BitPatterni:
4615 link a6,#-12
4616 moveml #0x38,sp@-
4617 movel a1,a3
4618 movel a6@(8),a2
4619 movel a6@(12),a4
4620 movel a2@,a0
============ Listing of BitString.s ============ PAGE 85
4621 movel a0@,sp@-
4622 movel a6@(16),sp@-
4623 movel a0,d1
4624 addql #6,d1
4625 movel d1,sp@-
4626 movel a4,sp@-
4627 jbsr _search__10BitPatternPUsii
4628 addw #16,sp
4629 tstl d0
4630 jlt L2403
4631 movel a4@,a0
4632 addl a0@,d0
4633 L2403:
4634 movel a2@,a0
4635 movel a0@,d1
4636 subl d0,d1
4637 movel d1,sp@-
4638 movel d0,sp@-
4639 movel a2,sp@-
4640 lea a6@(-12),a2
4641 movel a2,sp@-
4642 jbsr ___12BitSubStringP9BitStringii
4643 movel a2@,a3@
4644 movel a2@(4),a3@(4)
4645 movel a2@(8),a3@(8)
4646 movel a3,d0
4647 moveml a6@(-24),#0x1c00
4648 unlk a6
4649 rts
4650 .even
4651 .globl _common_prefix__FR9BitStringT0i
4652 _common_prefix__FR9BitStringT0i:
4653 link a6,#-4
4654 moveml #0x3f3c,sp@-
4655 movel a1,a5
4656 movel a6@(16),d0
4657 movel a6@(8),a2
4658 movel a2@,a0
4659 movel a0@,a3
4660 movel a6@(12),a2
4661 movel a2@,a0
4662 movel a0@,a4
4663 jge L2412
4664 movel a3,d6
4665 addl d0,d6
4666 movel a4,d1
4667 addl d0,d1
4668 jra L2413
4669 L2412:
4670 movel d0,d6
4671 movel d6,d1
4672 L2413:
4673 tstl d6
4674 jlt L2415
4675 cmpl d6,a3
============ Listing of BitString.s ============ PAGE 86
4676 jls L2415
4677 tstl d1
4678 jlt L2415
4679 cmpl d1,a4
4680 jhi L2414
4681 L2415:
4682 movel #__nilBitStrRep,d0
4683 movel d0,a5@
4684 jra L2432
4685 L2414:
4686 movel d6,d0
4687 lsrl #4,d0
4688 asll #1,d0
4689 addql #6,d0
4690 movel d0,a1
4691 movel a6@(8),a2
4692 addl a2@,a1
4693 movew a1@+,a6@(-4)
4694 movel d6,d2
4695 movel d1,d0
4696 lsrl #4,d0
4697 asll #1,d0
4698 addql #6,d0
4699 movel d0,a0
4700 movel a6@(12),a2
4701 addl a2@,a0
4702 movew a0@+,a6@(-2)
4703 movel d1,d3
4704 cmpl d2,a3
4705 jls L2421
4706 L2428:
4707 cmpl d3,a4
4708 jls L2421
4709 moveq #15,d0
4710 andl d2,d0
4711 moveq #1,d1
4712 asll d0,d1
4713 movew d1,d4
4714 moveq #15,d0
4715 andl d3,d0
4716 moveq #1,d1
4717 asll d0,d1
4718 movew d1,d5
4719 movew a6@(-4),d0
4720 andw d4,d0
4721 seq d1
4722 moveq #1,d7
4723 andl d7,d1
4724 movew a6@(-2),d0
4725 andw d5,d0
4726 seq d0
4727 andl d7,d0
4728 cmpl d1,d0
4729 jne L2421
4730 cmpw #32768,d4
============ Listing of BitString.s ============ PAGE 87
4731 jne L2426
4732 movew a1@+,a6@(-4)
4733 L2426:
4734 cmpw #32768,d5
4735 jne L2422
4736 movew a0@+,a6@(-2)
4737 L2422:
4738 addql #1,d2
4739 addql #1,d3
4740 cmpl d2,a3
4741 jhi L2428
4742 L2421:
4743 movel d2,d7
4744 subl d6,d7
4745 movel d7,sp@-
4746 movel d2,sp@-
4747 movel d6,sp@-
4748 movel a6@(8),a2
4749 movel a2@,d7
4750 addql #6,d7
4751 movel d7,sp@-
4752 clrl sp@-
4753 jbsr _BStr_alloc__FP9BitStrRepPUsiii
4754 movel #__nilBitStrRep,a5@
4755 L2432:
4756 movel d0,a5@
4757 movel a5,d0
4758 moveml a6@(-44),#0x3cfc
4759 unlk a6
4760 rts
4761 .even
4762 .globl _common_suffix__FR9BitStringT0i
4763 _common_suffix__FR9BitStringT0i:
4764 link a6,#-4
4765 moveml #0x3f3c,sp@-
4766 movel a1,a3
4767 movel a6@(8),a4
4768 movel a6@(16),d0
4769 movel a4@,a0
4770 movel a0@,d2
4771 movel a6@(12),a5
4772 movel a5@,a0
4773 movel a0@,d3
4774 tstl d0
4775 jge L2434
4776 movel d2,d6
4777 addl d0,d6
4778 movel d3,d1
4779 addl d0,d1
4780 jra L2435
4781 L2434:
4782 movel d0,d6
4783 movel d6,d1
4784 L2435:
4785 tstl d6
============ Listing of BitString.s ============ PAGE 88
4786 jlt L2437
4787 cmpl d6,d2
4788 jls L2437
4789 tstl d1
4790 jlt L2437
4791 cmpl d1,d3
4792 jhi L2436
4793 L2437:
4794 movel #__nilBitStrRep,d0
4795 movel d0,a3@
4796 jra L2454
4797 L2436:
4798 movel d6,d0
4799 lsrl #4,d0
4800 asll #1,d0
4801 addql #6,d0
4802 movel d0,a1
4803 addl a4@,a1
4804 movew a1@,a2
4805 subqw #2,a1
4806 movel d6,d2
4807 movel d1,d0
4808 lsrl #4,d0
4809 asll #1,d0
4810 addql #6,d0
4811 movel d0,a0
4812 movel a6@(12),a5
4813 addl a5@,a0
4814 movew a0@,a6@(-2)
4815 subqw #2,a0
4816 movel d1,d3
4817 tstl d2
4818 jlt L2443
4819 L2450:
4820 tstl d3
4821 jlt L2443
4822 moveq #15,d0
4823 andl d2,d0
4824 moveq #1,d1
4825 asll d0,d1
4826 movew d1,d4
4827 moveq #15,d0
4828 andl d3,d0
4829 moveq #1,d1
4830 asll d0,d1
4831 movew d1,d5
4832 movew a2,d0
4833 andw d4,d0
4834 seq d1
4835 moveq #1,d7
4836 andl d7,d1
4837 movew a6@(-2),d0
4838 andw d5,d0
4839 seq d0
4840 andl d7,d0
============ Listing of BitString.s ============ PAGE 89
4841 cmpl d1,d0
4842 jne L2443
4843 cmpw #1,d4
4844 jne L2448
4845 movew a1@,a2
4846 subqw #2,a1
4847 L2448:
4848 cmpw #1,d5
4849 jne L2444
4850 movew a0@,a6@(-2)
4851 subqw #2,a0
4852 L2444:
4853 subql #1,d2
4854 subql #1,d3
4855 tstl d2
4856 jge L2450
4857 L2443:
4858 movel d6,d7
4859 subl d2,d7
4860 movel d7,sp@-
4861 movel d6,a5
4862 pea a5@(1)
4863 movel d2,a5
4864 pea a5@(1)
4865 movel a4@,d7
4866 addql #6,d7
4867 movel d7,sp@-
4868 clrl sp@-
4869 jbsr _BStr_alloc__FP9BitStrRepPUsiii
4870 movel #__nilBitStrRep,a3@
4871 L2454:
4872 movel d0,a3@
4873 movel a3,d0
4874 moveml a6@(-44),#0x3cfc
4875 unlk a6
4876 rts
4877 .even
4878 .globl _reverse__FR9BitString
4879 _reverse__FR9BitString:
4880 link a6,#0
4881 moveml #0x3c38,sp@-
4882 movel a1,a2
4883 movel a6@(8),a3
4884 movel a3@,a0
4885 movel a0@,d4
4886 movel d4,sp@-
4887 clrl sp@-
4888 jbsr _BStr_resize__FP9BitStrRepi
4889 movel d0,a4
4890 tstl d4
4891 jeq L2456
4892 movel a3@,a1
4893 addqw #6,a1
4894 moveq #1,d2
4895 movel d4,d0
============ Listing of BitString.s ============ PAGE 90
4896 subql #1,d0
4897 movel d0,d1
4898 lsrl #4,d1
4899 lea a4@(6,d1:l:2),a0
4900 moveq #15,d5
4901 andl d5,d0
4902 moveq #1,d1
4903 asll d0,d1
4904 clrl d3
4905 cmpl d3,d4
4906 jls L2456
4907 L2467:
4908 movew d2,d0
4909 andw a1@,d0
4910 jeq L2462
4911 orw d1,a0@
4912 L2462:
4913 cmpw #32768,d2
4914 jne L2463
4915 addqw #2,a1
4916 moveq #1,d2
4917 jra L2464
4918 L2463:
4919 lslw #1,d2
4920 L2464:
4921 cmpw #1,d1
4922 jne L2465
4923 subqw #2,a0
4924 movew #32768,d1
4925 jra L2461
4926 L2465:
4927 lsrw #1,d1
4928 L2461:
4929 addql #1,d3
4930 cmpl d3,d4
4931 jhi L2467
4932 L2456:
4933 movel #__nilBitStrRep,a2@
4934 movel a4,a2@
4935 movel a2,d0
4936 moveml a6@(-28),#0x1c3c
4937 unlk a6
4938 rts
4939 .even
4940 .globl _BitStringtoa__FR9BitStringcc
4941 _BitStringtoa__FR9BitStringcc:
4942 link a6,#0
4943 moveml #0x3f30,sp@-
4944 movel a6@(8),a2
4945 moveb a6@(15),d6
4946 moveb a6@(19),d5
4947 movel a2@,a0
4948 movel a0@,d7
4949 addql #2,d7
4950 movel d7,sp@-
============ Listing of BitString.s ============ PAGE 91
4951 pea __libgxx_fmtq
4952 jbsr _alloc__10AllocQueuei
4953 movel d0,d4
4954 movel d4,a3
4955 movel a2@,a0
4956 movel a0@,d3
4957 movel a2@,a0
4958 addqw #6,a0
4959 clrw d2
4960 clrl d1
4961 cmpl d1,d3
4962 jls L2480
4963 L2479:
4964 moveq #15,d0
4965 andl d1,d0
4966 jne L2476
4967 movew a0@+,d2
4968 L2476:
4969 movel a3,a1
4970 addqw #1,a3
4971 btst #0,d2
4972 jeq L2477
4973 moveb d5,d0
4974 jra L2478
4975 L2477:
4976 moveb d6,d0
4977 L2478:
4978 moveb d0,a1@
4979 lsrw #1,d2
4980 addql #1,d1
4981 cmpl d1,d3
4982 jhi L2479
4983 L2480:
4984 clrb a3@
4985 movel d4,d0
4986 moveml a6@(-32),#0xcfc
4987 unlk a6
4988 rts
4989 .even
4990 .globl _atoBitString__FPCccc
4991 _atoBitString__FPCccc:
4992 link a6,#-4
4993 moveml #0x3f30,sp@-
4994 movel a1,a2
4995 movel a6@(8),a3
4996 moveb a6@(15),a6@(-1)
4997 moveb a6@(19),d6
4998 movel a3,sp@-
4999 jbsr _strlen
5000 movel d0,d5
5001 movel d5,sp@-
5002 clrl sp@-
5003 jbsr _BStr_resize__FP9BitStrRepi
5004 movel d0,d7
5005 addw #12,sp
============ Listing of BitString.s ============ PAGE 92
5006 tstl d5
5007 jeq L2482
5008 clrl d4
5009 movel d7,a0
5010 addqw #6,a0
5011 clrw d1
5012 moveq #1,d3
5013 clrl d2
5014 L2483:
5015 moveb a3@(d2:l),d0
5016 cmpb d0,d6
5017 jeq L2486
5018 cmpb a6@(-1),d0
5019 jne L2494
5020 L2486:
5021 addql #1,d4
5022 cmpb d0,d6
5023 jne L2487
5024 orw d3,d1
5025 L2487:
5026 addql #1,d2
5027 cmpl d2,d5
5028 jne L2488
5029 L2494:
5030 movew d1,a0@
5031 jra L2484
5032 L2488:
5033 moveq #15,d0
5034 andl d2,d0
5035 jne L2490
5036 movew d1,a0@+
5037 clrw d1
5038 moveq #1,d3
5039 jra L2483
5040 L2490:
5041 lslw #1,d3
5042 jra L2483
5043 L2484:
5044 movel d4,sp@-
5045 movel d7,sp@-
5046 jbsr _BStr_resize__FP9BitStrRepi
5047 movel d0,d7
5048 L2482:
5049 movel #__nilBitStrRep,a2@
5050 movel d7,a2@
5051 movel a2,d0
5052 moveml a6@(-36),#0xcfc
5053 unlk a6
5054 rts
5055 .even
5056 .globl _op$alshift__FR7ostreamR9BitString
5057 _op$alshift__FR7ostreamR9BitString:
5058 link a6,#0
5059 moveml #0x2020,sp@-
5060 movel a6@(8),a2
============ Listing of BitString.s ============ PAGE 93
5061 pea 49:w
5062 pea 48:w
5063 movel a6@(12),sp@-
5064 jbsr _BitStringtoa__FR9BitStringcc
5065 addw #12,sp
5066 clrl d2
5067 tstl a2@(4)
5068 jne L2498
5069 movel d0,sp@-
5070 movel a2@,sp@-
5071 jbsr _sputs__9streambufPCc
5072 moveq #-1,d1
5073 cmpl d0,d1
5074 jne L2497
5075 L2498:
5076 moveq #1,d2
5077 L2497:
5078 tstl d2
5079 jeq L2500
5080 moveq #2,d1
5081 orl d1,a2@(4)
5082 L2500:
5083 movel a2,d0
5084 moveml a6@(-8),#0x404
5085 unlk a6
5086 rts
5087 .even
5088 .globl _BitPatterntoa__FR10BitPatternccc
5089 _BitPatterntoa__FR10BitPatternccc:
5090 link a6,#0
5091 moveml #0x3f38,sp@-
5092 movel a6@(8),a2
5093 moveb a6@(15),d7
5094 moveb a6@(19),d6
5095 moveb a6@(23),d5
5096 movel a2@,a0
5097 movel a2@(4),a1
5098 movel a1@,d0
5099 movel a0@,a4
5100 cmpl a4,d0
5101 jcc L2503
5102 movel d0,a4
5103 L2503:
5104 pea a4@(2)
5105 pea __libgxx_fmtq
5106 jbsr _alloc__10AllocQueuei
5107 movel d0,d4
5108 movel d4,a0
5109 movel a2@,a3
5110 addqw #6,a3
5111 movel a2@(4),a2
5112 addqw #6,a2
5113 clrw d3
5114 clrw d2
5115 clrl d1
============ Listing of BitString.s ============ PAGE 94
5116 cmpl d1,a4
5117 jls L2513
5118 L2512:
5119 moveq #15,d0
5120 andl d1,d0
5121 jne L2507
5122 movew a3@+,d3
5123 movew a2@+,d2
5124 L2507:
5125 btst #0,d2
5126 jeq L2508
5127 movel a0,a1
5128 addqw #1,a0
5129 btst #0,d3
5130 jeq L2509
5131 moveb d6,d0
5132 jra L2510
5133 L2509:
5134 moveb d7,d0
5135 L2510:
5136 moveb d0,a1@
5137 jra L2511
5138 L2508:
5139 moveb d5,a0@+
5140 L2511:
5141 lsrw #1,d3
5142 lsrw #1,d2
5143 addql #1,d1
5144 cmpl d1,a4
5145 jhi L2512
5146 L2513:
5147 clrb a0@
5148 movel d4,d0
5149 moveml a6@(-36),#0x1cfc
5150 unlk a6
5151 rts
5152 .even
5153 .globl _atoBitPattern__FPCcccc
5154 _atoBitPattern__FPCcccc:
5155 link a6,#-16
5156 moveml #0x3f3c,sp@-
5157 movel a1,a6@(-12)
5158 movel a6@(8),a3
5159 moveb a6@(15),a6@(-13)
5160 moveb a6@(19),d7
5161 moveb a6@(23),a6@(-15)
5162 lea a6@(-8),a0
5163 movel #__nilBitStrRep,a0@+
5164 movel #__nilBitStrRep,a0@
5165 movel a3,sp@-
5166 jbsr _strlen
5167 movel d0,d5
5168 addqw #4,sp
5169 jeq L2518
5170 clrl d6
============ Listing of BitString.s ============ PAGE 95
5171 movel d5,sp@-
5172 movel a6@(-8),sp@-
5173 lea _BStr_resize__FP9BitStrRepi,a2
5174 jbsr a2@
5175 movel d0,a6@(-8)
5176 movel d5,sp@-
5177 movel a6@(-4),sp@-
5178 jbsr a2@
5179 movel d0,a6@(-4)
5180 movel a6@(-8),a0
5181 addqw #6,a0
5182 movel d0,a1
5183 addqw #6,a1
5184 clrw d3
5185 clrw d1
5186 moveq #1,d2
5187 clrl d4
5188 addw #16,sp
5189 L2519:
5190 moveb a3@(d4:l),d0
5191 cmpb d0,d7
5192 jeq L2522
5193 cmpb a6@(-13),d0
5194 jeq L2522
5195 cmpb a6@(-15),d0
5196 jne L2575
5197 L2522:
5198 addql #1,d6
5199 cmpb d0,d7
5200 jne L2523
5201 orw d2,d3
5202 jra L2576
5203 L2523:
5204 cmpb a6@(-13),d0
5205 jne L2524
5206 L2576:
5207 orw d2,d1
5208 L2524:
5209 addql #1,d4
5210 cmpl d4,d5
5211 jne L2526
5212 L2575:
5213 movew d3,a0@
5214 movew d1,a1@
5215 jra L2520
5216 L2526:
5217 moveq #15,d0
5218 andl d4,d0
5219 jne L2528
5220 movew d3,a0@+
5221 movew d1,a1@+
5222 clrw d3
5223 clrw d1
5224 moveq #1,d2
5225 jra L2519
============ Listing of BitString.s ============ PAGE 96
5226 L2528:
5227 lslw #1,d2
5228 jra L2519
5229 L2520:
5230 movel d6,sp@-
5231 movel a6@(-8),sp@-
5232 lea _BStr_resize__FP9BitStrRepi,a2
5233 jbsr a2@
5234 movel d0,a6@(-8)
5235 movel d6,sp@-
5236 movel a6@(-4),sp@-
5237 jbsr a2@
5238 movel d0,a6@(-4)
5239 addw #16,sp
5240 L2518:
5241 lea a6@(-8),a2
5242 movel a6@(-12),a4
5243 movel #__nilBitStrRep,a4@
5244 movel a4,a3
5245 addqw #4,a3
5246 movel #__nilBitStrRep,a3@
5247 movel a2@,sp@-
5248 movel a4@,sp@-
5249 jbsr _BStr_copy__FP9BitStrRepT0
5250 movel d0,a4@
5251 addqw #8,sp
5252 lea a2@(4),a5
5253 movel a5@,sp@-
5254 movel a3@,sp@-
5255 jbsr _BStr_copy__FP9BitStrRepT0
5256 movel d0,a3@
5257 addqw #8,sp
5258 movel a2,a3
5259 clrl d3
5260 tstl a5
5261 jeq L2560
5262 movel a5,a2
5263 clrl d2
5264 cmpl #__nilBitStrRep,a2@
5265 jeq L2563
5266 movel a2@,sp@-
5267 jbsr ___builtin_delete
5268 addqw #4,sp
5269 L2563:
5270 tstl d2
5271 jeq L2560
5272 movel a2,sp@-
5273 jbsr ___builtin_delete
5274 addqw #4,sp
5275 L2560:
5276 tstl a3
5277 jeq L2567
5278 clrl d2
5279 cmpl #__nilBitStrRep,a3@
5280 jeq L2570
============ Listing of BitString.s ============ PAGE 97
5281 movel a3@,sp@-
5282 jbsr ___builtin_delete
5283 addqw #4,sp
5284 L2570:
5285 tstl d2
5286 jeq L2567
5287 movel a3,sp@-
5288 jbsr ___builtin_delete
5289 addqw #4,sp
5290 L2567:
5291 tstl d3
5292 jeq L2514
5293 movel a3,sp@-
5294 jbsr ___builtin_delete
5295 L2514:
5296 movel a6@(-12),d0
5297 moveml a6@(-56),#0x3cfc
5298 unlk a6
5299 rts
5300 .even
5301 .globl _op$alshift__FR7ostreamR10BitPattern
5302 _op$alshift__FR7ostreamR10BitPattern:
5303 link a6,#0
5304 moveml #0x2020,sp@-
5305 movel a6@(8),a2
5306 pea 88:w
5307 pea 49:w
5308 pea 48:w
5309 movel a6@(12),sp@-
5310 jbsr _BitPatterntoa__FR10BitPatternccc
5311 addw #16,sp
5312 clrl d2
5313 tstl a2@(4)
5314 jne L2580
5315 movel d0,sp@-
5316 movel a2@,sp@-
5317 jbsr _sputs__9streambufPCc
5318 moveq #-1,d1
5319 cmpl d0,d1
5320 jne L2579
5321 L2580:
5322 moveq #1,d2
5323 L2579:
5324 tstl d2
5325 jeq L2582
5326 moveq #2,d1
5327 orl d1,a2@(4)
5328 L2582:
5329 movel a2,d0
5330 moveml a6@(-8),#0x404
5331 unlk a6
5332 rts
5333 LC4:
5334 .ascii "invariant failure\0"
5335 .even
============ Listing of BitString.s ============ PAGE 98
5336 .globl _OK__9BitString
5337 _OK__9BitString:
5338 link a6,#0
5339 moveml #0x3000,sp@-
5340 movel a6@(8),a1
5341 tstl a1@
5342 sne d0
5343 moveq #1,d2
5344 andl d0,d2
5345 movel a1@,a0
5346 movel a0@,d0
5347 lsrl #4,d0
5348 addql #1,d0
5349 clrl d1
5350 movew a0@(4),d1
5351 cmpl d0,d1
5352 sge d1
5353 moveq #1,d3
5354 andl d3,d1
5355 andl d1,d2
5356 jne L2586
5357 pea LC4
5358 movel a1,sp@-
5359 jbsr _error__9BitStringPc
5360 L2586:
5361 movel d2,d0
5362 moveml a6@(-8),#0xc
5363 unlk a6
5364 rts
5365 LC5:
5366 .ascii "BitSubString\0"
5367 .even
5368 .globl _OK__12BitSubString
5369 _OK__12BitSubString:
5370 link a6,#0
5371 moveml #0x2020,sp@-
5372 movel a6@(8),a2
5373 tstl a2@
5374 sne d0
5375 moveq #1,d2
5376 andl d0,d2
5377 movel a2@,sp@-
5378 jbsr _OK__9BitString
5379 andl d0,d2
5380 addqw #4,sp
5381 clrl d0
5382 tstl a2@(4)
5383 jlt L2588
5384 tstl a2@(8)
5385 jlt L2588
5386 moveq #1,d0
5387 L2588:
5388 andl d0,d2
5389 movel a2@(4),d0
5390 addl a2@(8),d0
============ Listing of BitString.s ============ PAGE 99
5391 movel a2@,a0
5392 movel a0@,a0
5393 cmpl a0@,d0
5394 sls d0
5395 moveq #1,d1
5396 andl d1,d0
5397 andl d0,d2
5398 jne L2589
5399 pea LC4
5400 pea LC5
5401 movel _lib_error_handler,a0
5402 jbsr a0@
5403 L2589:
5404 movel d2,d0
5405 moveml a6@(-8),#0x404
5406 unlk a6
5407 rts
5408 LC6:
5409 .ascii "BitPattern\0"
5410 .even
5411 .globl _OK__10BitPattern
5412 _OK__10BitPattern:
5413 link a6,#0
5414 moveml #0x2030,sp@-
5415 movel a6@(8),a3
5416 clrl d2
5417 movel a3,sp@-
5418 lea _OK__9BitString,a2
5419 jbsr a2@
5420 addqw #4,sp
5421 tstl d0
5422 jeq L2591
5423 pea a3@(4)
5424 jbsr a2@
5425 addqw #4,sp
5426 tstl d0
5427 jeq L2591
5428 moveq #1,d2
5429 L2591:
5430 tstl d2
5431 jne L2592
5432 pea LC4
5433 pea LC6
5434 movel _lib_error_handler,a0
5435 jbsr a0@
5436 L2592:
5437 movel d2,d0
5438 moveml a6@(-12),#0xc04
5439 unlk a6
5440 rts
5441 .stabs "_fini",10,0,0,0
5442 .stabs "__GLOBAL_$D$BitString_cc",4,0,0,0
5443 .even
5444 .globl __GLOBAL_$D$BitString_cc
5445 __GLOBAL_$D$BitString_cc:
============ Listing of BitString.s ============ PAGE 100
5446 link a6,#0
5447 moveml #0x2020,sp@-
5448 lea __nil_BitString,a2
5449 clrl d2
5450 cmpl #__nilBitStrRep,a2@
5451 jeq L2598
5452 movel a2@,sp@-
5453 jbsr ___builtin_delete
5454 addqw #4,sp
5455 L2598:
5456 tstl d2
5457 jeq L2595
5458 movel a2,sp@-
5459 jbsr ___builtin_delete
5460 L2595:
5461 moveml a6@(-8),#0x404
5462 unlk a6
5463 rts
5464 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$BitString_cc
5465 .stabs "_init",10,0,0,0
5466 .stabs "__GLOBAL_$I$BitString_cc",4,0,0,0
5467 .even
5468 .globl __GLOBAL_$I$BitString_cc
5469 __GLOBAL_$I$BitString_cc:
5470 link a6,#0
5471 movel #__nilBitStrRep,__nil_BitString
5472 unlk a6
5473 rts
5474 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$BitString_cc
============ Listing Complete ============
============ Listing of EH.cc ============ PAGE 1
1 /* Library code for programs which use -fhandle-exceptions.
2 Note: do *not* compile this with -fhandle-exceptions. */
3
4
5 #include <setjmp.h>
6 #include <stream.h>
7
8 struct
9 ExceptionHandler
10 {
11 ExceptionHandler *prev;
12 jmp_buf handler;
13 void *name;
14 void *parameters;
15 ExceptionHandler ();
16 ~ExceptionHandler ();
17 } EHS, *exceptionHandlerStack = &EHS;
18
19 ExceptionHandler::ExceptionHandler ()
20 {
21 if (this == &EHS)
22 {
23 if (setjmp (EHS.handler))
24 {
25 cerr << ("unhandled exception, aborting...\n");
26 abort ();
27 }
28 }
29 else
30 {
31 this->prev = exceptionHandlerStack;
32 exceptionHandlerStack = this;
33 }
34 }
35
36 ExceptionHandler::~ExceptionHandler ()
37 {
38 exceptionHandlerStack = this->prev;
39 }
40
============ Listing Complete ============
============ Listing of EH.s ============ PAGE 1
1 #NO_APP
2 gcc_compiled.:
3 .globl _EHS
4 .data
5 .even
6 _EHS:
7 .skip 244
8 .globl _exceptionHandlerStack
9 .even
10 _exceptionHandlerStack:
11 .long _EHS
12 .text
13 LC0:
14 .ascii "unhandled exception, aborting...\12\0"
15 .even
16 .globl ___16ExceptionHandler
17 ___16ExceptionHandler:
18 link a6,#0
19 moveml #0x2020,sp@-
20 movel a6@(8),a2
21 cmpl #_EHS,a2
22 jne L808
23 pea _EHS+4
24 jbsr _setjmp
25 addqw #4,sp
26 tstl d0
27 jeq L816
28 lea _cerr,a2
29 movel #LC0,d0
30 clrl d2
31 tstl _cerr+4
32 jne L812
33 movel d0,sp@-
34 movel a2@,sp@-
35 jbsr _sputs__9streambufPCc
36 addqw #8,sp
37 moveq #-1,d1
38 cmpl d0,d1
39 jne L811
40 L812:
41 moveq #1,d2
42 L811:
43 tstl d2
44 jeq L814
45 moveq #2,d1
46 orl d1,a2@(4)
47 L814:
48 jbsr _abort
49 L808:
50 movel _exceptionHandlerStack,a2@
51 movel a2,_exceptionHandlerStack
52 L816:
53 movel a2,d0
54 moveml a6@(-8),#0x404
55 unlk a6
============ Listing of EH.s ============ PAGE 2
56 rts
57 .even
58 .globl __$_ExceptionHandler
59 __$_ExceptionHandler:
60 link a6,#0
61 movel a6@(8),a0
62 movel a0@,_exceptionHandlerStack
63 tstl a6@(12)
64 jeq L820
65 movel a0,sp@-
66 jbsr ___builtin_delete
67 L820:
68 unlk a6
69 rts
70 .stabs "_fini",10,0,0,0
71 .stabs "__GLOBAL_$D$EH_cc",4,0,0,0
72 .even
73 .globl __GLOBAL_$D$EH_cc
74 __GLOBAL_$D$EH_cc:
75 link a6,#0
76 clrl sp@-
77 pea _EHS
78 jbsr __$_ExceptionHandler
79 unlk a6
80 rts
81 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$EH_cc
82 .stabs "_init",10,0,0,0
83 .stabs "__GLOBAL_$I$EH_cc",4,0,0,0
84 .even
85 .globl __GLOBAL_$I$EH_cc
86 __GLOBAL_$I$EH_cc:
87 link a6,#0
88 pea _EHS
89 jbsr ___16ExceptionHandler
90 unlk a6
91 rts
92 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$EH_cc
============ Listing Complete ============
============ Listing of Rational.cc ============ PAGE 1
1 /*
2 Copyright (C) 1988 Free Software Foundation
3 written by Doug Lea (dl@rocky.oswego.edu)
4
5 This file is part of GNU CC.
6
7 GNU CC is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY. No author or distributor
9 accepts responsibility to anyone for the consequences of using it
10 or for whether it serves any particular purpose or works at all,
11 unless he says so in writing. Refer to the GNU CC General Public
12 License for full details.
13
14 Everyone is granted permission to copy, modify and redistribute
15 GNU CC, but only under the conditions described in the
16 GNU CC General Public License. A copy of this license is
17 supposed to have been given to you along with GNU CC so you
18 can know your rights and responsibilities. It should be in a
19 file named COPYING. Among other things, the copyright notice
20 and this notice must be preserved on all copies.
21 */
22
23 #include <Rational.h>
24 #include <std.h>
25 #include <math.h>
26 #include <values.h>
27
28
29
30 void Rational::error(char* msg)
31 {
32 (*lib_error_handler)("Rational", msg);
33 }
34
35 static Integer _Int_One(1);
36
37 void Rational::normalize()
38 {
39 int s = sign(den);
40 if (s == 0)
41 error("Zero denominator.");
42 else if (s < 0)
43 {
44 den.negate();
45 num.negate();
46 }
47
48 Integer g = gcd(num, den);
49 if (ucompare(g, _Int_One) != 0)
50 {
51 num /= g;
52 den /= g;
53 }
54 }
55
============ Listing of Rational.cc ============ PAGE 2
56 RatTmp Rational::operator + (Rational& y)
57 {
58 return RatTmp(num * y.den + den * y.num, den * y.den);
59 }
60
61 RatTmp Rational::operator - (Rational& y)
62 {
63 return RatTmp(num * y.den - den * y.num, den * y.den);
64 }
65
66 RatTmp Rational::operator * (Rational& y)
67 {
68 return RatTmp(num * y.num, den * y.den);
69 }
70
71 RatTmp Rational::operator / (Rational& y)
72 {
73 return RatTmp(num * y.den, den * y.num);
74 }
75
76 RatTmp Rational::operator - ()
77 {
78 Integer d = den;
79 return RatTmp(-num, d);
80 }
81
82 RatTmp RatTmp::operator - ()
83 {
84 num.negate();
85 return *this;
86 }
87
88 RatTmp abs(Rational& x)
89 {
90 Integer d = x.den;
91 return RatTmp(abs(x.num), d);
92 }
93
94 RatTmp abs(RatTmp& x)
95 {
96 x.num.abs();
97 return x;
98 }
99
100 RatTmp sqr(Rational& x)
101 {
102 return RatTmp(x.num * x.num, x.den * x.den);
103 }
104
105 RatTmp sqr(RatTmp& x)
106 {
107 x.num *= x.num;
108 x.den *= x.den;
109 return x;
110 }
============ Listing of Rational.cc ============ PAGE 3
111
112 void Rational::operator +=(Rational& y)
113 {
114 num = num * y.den + den * y.num;
115 den *= y.den;
116 normalize();
117 }
118
119 void Rational::operator -=(Rational& y)
120 {
121 num = num * y.den - den * y.num;
122 den *= y.den;
123 normalize();
124 }
125
126 void Rational::operator *=(Rational& y)
127 {
128 num *= y.num;
129 den *= y.den;
130 normalize();
131 }
132
133 void Rational::operator /=(Rational& y)
134 {
135 if (&y == this)
136 {
137 Integer n = num * y.den;
138 den *= y.num;
139 num = n;
140 }
141 else
142 {
143 num *= y.den;
144 den *= y.num;
145 }
146 normalize();
147 }
148
149 RatTmp RatTmp::operator + (Rational& y)
150 {
151 num = num * y.den + den * y.num;
152 den *= y.den;
153 normalize();
154 return *this;
155 }
156
157 RatTmp RatTmp::operator - (Rational& y)
158 {
159 num = num * y.den - den * y.num;
160 den *= y.den;
161 normalize();
162 return *this;
163 }
164
165 RatTmp RatTmp::operator * (Rational& y)
============ Listing of Rational.cc ============ PAGE 4
166 {
167 num *= y.num;
168 den *= y.den;
169 normalize();
170 return *this;
171 }
172
173 RatTmp RatTmp::operator / (Rational& y)
174 {
175 if (&y == this)
176 {
177 Integer n = num * y.den;
178 den *= y.num;
179 num = n;
180 }
181 else
182 {
183 num *= y.den;
184 den *= y.num;
185 }
186 normalize();
187 return *this;
188 }
189
190 void Rational::invert()
191 {
192 Integer tmp = num;
193 num = den;
194 den = tmp;
195 int s = sign(den);
196 if (s == 0)
197 error("Zero denominator.");
198 else if (s < 0)
199 {
200 den.negate();
201 num.negate();
202 }
203 }
204
205 int compare(Rational& x, Rational& y)
206 {
207 int xsgn = sign(x.num);
208 int ysgn = sign(y.num);
209 int d = xsgn - ysgn;
210 if (d == 0 && xsgn != 0) d = compare(x.num * y.den, x.den * y.num);
211 return d;
212 }
213
214 Rational::Rational(double x)
215 {
216 num = 0;
217 den = 1;
218 if (x != 0.0)
219 {
220 int neg = x < 0;
============ Listing of Rational.cc ============ PAGE 5
221 if (neg)
222 x = -x;
223
224 const long shift = 15; // a safe shift per step
225 const double width = 32768.0; // = 2^shift
226 const int maxiter = 20; // ought not be necessary, but just in case,
227 // max 300 bits of precision
228 int expt;
229 double mantissa = frexp(x, &expt);
230 long exponent = expt;
231 double intpart;
232 int k = 0;
233 while (mantissa != 0.0 && k++ < maxiter)
234 {
235 mantissa *= width;
236 mantissa = modf(mantissa, &intpart);
237 num <<= shift;
238 num += (long)intpart;
239 exponent -= shift;
240 }
241 if (exponent > 0)
242 num <<= exponent;
243 else if (exponent < 0)
244 den <<= -exponent;
245 if (neg)
246 num.negate();
247 }
248 normalize();
249 }
250
251 IntTmp floor(Rational& x)
252 {
253 Integer q, r;
254 divide(x.num, x.den, q, r);
255 if (sign(x.num) < 0 && sign(r) != 0) q--;
256 return q;
257 }
258
259 IntTmp ceil(Rational& x)
260 {
261 Integer q, r;
262 divide(x.num, x.den, q, r);
263 if (sign(x.num) >= 0 && sign(r) != 0) q++;
264 return q;
265 }
266
267 IntTmp round(Rational& x)
268 {
269 Integer q, r;
270 divide(x.num, x.den, q, r);
271 r <<= 1;
272 if (ucompare(r, x.den) >= 0)
273 {
274 if (sign(x.num) >= 0)
275 q++;
============ Listing of Rational.cc ============ PAGE 6
276 else
277 q--;
278 }
279 return q;
280 }
281
282 IntTmp trunc(Rational& x)
283 {
284 return x.num / x.den ;
285 }
286
287 IntTmp Rational::numerator()
288 {
289 Integer n = num;
290 return n;
291 }
292
293 IntTmp Rational::denominator()
294 {
295 Integer d = den;
296 return d;
297 }
298
299 RatTmp pow(Rational& x, Integer& y)
300 {
301 long yy = long(y);
302 return pow(x, yy);
303 }
304
305 Rational::operator double()
306 {
307 return ratio(num, den);
308 }
309
310
311 // power: no need to normalize since num & den already relatively prime
312
313 RatTmp pow(Rational& x, long y)
314 {
315 Rational r;
316 if (y >= 0)
317 {
318 r.num = pow(x.num, y);
319 r.den = pow(x.den, y);
320 }
321 else
322 {
323 y = -y;
324 r.den = pow(x.num, y);
325 r.num = pow(x.den, y);
326 if (sign(r.den) < 0)
327 {
328 r.num.negate();
329 r.den.negate();
330 }
============ Listing of Rational.cc ============ PAGE 7
331 }
332 return r;
333 }
334
335
336 ostream& operator << (ostream& s, Rational& y)
337 {
338 if (y.den == 1)
339 s << Itoa(y.num);
340 else
341 {
342 s << Itoa(y.num);
343 s << "/";
344 s << Itoa(y.den);
345 }
346 return s;
347 }
348
349 istream& operator >> (istream& s, Rational& y)
350 {
351 s >> y.num;
352 if (s)
353 {
354 char ch = 0;
355 s.get(ch);
356 if (ch == '/')
357 {
358 s >> y.den;
359 y.normalize();
360 }
361 else
362 {
363 s.unget(ch);
364 y.den = 1;
365 }
366 }
367 return s;
368 }
369
370 int Rational::OK()
371 {
372 int v = num.OK() && den.OK(); // have valid num and denom
373 v &= sign(den) > 0; // denominator positive;
374 v &= ucompare(gcd(num, den), _Int_One) == 0; // relatively prime
375 if (!v) error("invariant failure");
376 return v;
377 }
378
============ Listing Complete ============
============ Listing of Rational.s ============ PAGE 1
1 #NO_APP
2 gcc_compiled.:
3 .text
4 LC0:
5 .ascii "Rational\0"
6 .even
7 .globl _error__8RationalPc
8 _error__8RationalPc:
9 link a6,#0
10 movel a6@(12),sp@-
11 pea LC0
12 movel _lib_error_handler,a0
13 jbsr a0@
14 unlk a6
15 rts
16 .data
17 .even
18 __Int_One:
19 .skip 4
20 .text
21 LC1:
22 .ascii "Zero denominator.\0"
23 .even
24 .globl _normalize__8Rational
25 _normalize__8Rational:
26 link a6,#-8
27 moveml #0x3c,sp@-
28 movel a6@(8),a5
29 lea a5@(4),a1
30 movel a1@,a0
31 tstw a0@
32 jne L1878
33 clrl d0
34 jra L1879
35 L1878:
36 movel a1@,a0
37 cmpw #1,a0@(4)
38 jne L1880
39 moveq #1,d0
40 jra L1879
41 L1880:
42 moveq #-1,d0
43 L1879:
44 tstl d0
45 jne L1882
46 pea LC1
47 movel a5,sp@-
48 jbsr _error__8RationalPc
49 addqw #8,sp
50 jra L1883
51 L1882:
52 tstl d0
53 jge L1883
54 movel a5@(4),a0
55 tstw a0@
============ Listing of Rational.s ============ PAGE 2
56 jeq L1885
57 tstw a0@(4)
58 seq d0
59 andw #1,d0
60 movew d0,a0@(4)
61 L1885:
62 movel a5@,a0
63 tstw a0@
64 jeq L1883
65 tstw a0@(4)
66 seq d0
67 andw #1,d0
68 movew d0,a0@(4)
69 L1883:
70 lea a6@(-4),a3
71 lea a5@(4),a4
72 lea a6@(-8),a2
73 movel a4@,sp@-
74 movel a5@,sp@-
75 jbsr _gcd__FP6IntRepT0
76 movel d0,d1
77 addqw #8,sp
78 clrl a2@
79 movel d1,a2@
80 movel a2,d0
81 movel d1,sp@-
82 clrl sp@-
83 jbsr _Icopy__FP6IntRepT0
84 movel d0,a3@
85 addqw #8,sp
86 movel a2@,sp@-
87 jbsr ___builtin_delete
88 addqw #4,sp
89 movel __Int_One,sp@-
90 movel a3@,sp@-
91 jbsr _ucompare__FP6IntRepT0
92 addqw #8,sp
93 tstl d0
94 jeq L1903
95 movel a5@,sp@-
96 movel a3@,sp@-
97 movel a5@,sp@-
98 lea _div__FP6IntRepN20,a2
99 jbsr a2@
100 movel d0,a5@
101 addw #12,sp
102 movel a4@,sp@-
103 movel a3@,sp@-
104 movel a4@,sp@-
105 jbsr a2@
106 movel d0,a4@
107 addw #12,sp
108 L1903:
109 movel a6@(-4),sp@-
110 jbsr ___builtin_delete
============ Listing of Rational.s ============ PAGE 3
111 moveml a6@(-24),#0x3c00
112 unlk a6
113 rts
114 .even
115 .globl _op$plus__8RationalR8Rational
116 _op$plus__8RationalR8Rational:
117 link a6,#-52
118 moveml #0x303c,sp@-
119 movel a1,d3
120 movel a6@(8),a5
121 movel a6@(12),a3
122 lea a6@(-8),a2
123 movel a3,a0
124 addqw #4,a0
125 movel a0,a6@(-44)
126 lea a6@(-16),a4
127 clrl sp@-
128 movel a0@,sp@-
129 movel a5@+,sp@-
130 jbsr _multiply__FP6IntRepN20
131 addw #12,sp
132 clrl a4@
133 movel d0,a4@
134 movel a4,d0
135 movel a5,a6@(-48)
136 lea a6@(-20),a5
137 clrl sp@-
138 movel a3@,sp@-
139 movel a6@(-48),a0
140 movel a0@,sp@-
141 jbsr _multiply__FP6IntRepN20
142 movel d0,d1
143 addw #12,sp
144 clrl a5@
145 movel d1,a5@
146 movel a5,d0
147 lea a6@(-12),a3
148 movel a4@,sp@-
149 clrl sp@-
150 movel d1,sp@-
151 clrl sp@-
152 movel a4@,sp@-
153 jbsr _add__FP6IntRepiT0iT0
154 clrl a4@
155 addw #20,sp
156 clrl a3@
157 movel d0,a3@
158 movel a3,d0
159 movel a5@,sp@-
160 jbsr ___builtin_delete
161 addqw #4,sp
162 movel a4@,sp@-
163 jbsr ___builtin_delete
164 addqw #4,sp
165 lea a6@(-24),a4
============ Listing of Rational.s ============ PAGE 4
166 clrl sp@-
167 movel a6@(-44),a0
168 movel a0@,sp@-
169 movel a6@(-48),a0
170 movel a0@,sp@-
171 jbsr _multiply__FP6IntRepN20
172 addw #12,sp
173 clrl a4@
174 movel d0,a4@
175 movel a4,d0
176 clrl a2@
177 movel a2,a0
178 addqw #4,a0
179 movel a0,a6@(-52)
180 clrl a0@
181 lea a6@(-28),a5
182 clrl a5@
183 movel a3@,a5@
184 clrl a3@
185 movel a2@,sp@-
186 jbsr ___builtin_delete
187 movel a5@,a2@
188 clrl a5@
189 addqw #4,sp
190 clrl sp@-
191 jbsr ___builtin_delete
192 addqw #4,sp
193 lea a6@(-32),a5
194 clrl a5@
195 movel a4@,a5@
196 clrl a4@
197 movel a6@(-52),a0
198 movel a0@,sp@-
199 jbsr ___builtin_delete
200 movel a6@(-52),a0
201 movel a5@,a0@
202 clrl a5@
203 addqw #4,sp
204 clrl sp@-
205 jbsr ___builtin_delete
206 addqw #4,sp
207 movel a2,sp@-
208 jbsr _normalize__8Rational
209 addqw #4,sp
210 movel a4@,sp@-
211 jbsr ___builtin_delete
212 addqw #4,sp
213 movel a3@,sp@-
214 jbsr ___builtin_delete
215 addqw #4,sp
216 movel d3,a0
217 clrl a0@
218 movel d3,a4
219 addqw #4,a4
220 clrl a4@
============ Listing of Rational.s ============ PAGE 5
221 lea a6@(-36),a3
222 clrl a3@
223 movel a2@,a3@
224 clrl a2@
225 movel a0@,sp@-
226 jbsr ___builtin_delete
227 movel d3,a0
228 movel a3@,a0@
229 clrl a3@
230 addqw #4,sp
231 clrl sp@-
232 jbsr ___builtin_delete
233 addqw #4,sp
234 lea a6@(-40),a3
235 clrl a3@
236 movel a6@(-52),a0
237 movel a0@,a3@
238 clrl a0@
239 movel a4@,sp@-
240 jbsr ___builtin_delete
241 movel a3@,a4@
242 clrl a3@
243 addqw #4,sp
244 clrl sp@-
245 jbsr ___builtin_delete
246 addqw #4,sp
247 clrl d2
248 tstl a6@(-52)
249 jeq L2035
250 movel a6@(-52),a0
251 movel a0@,sp@-
252 jbsr ___builtin_delete
253 addqw #4,sp
254 L2035:
255 tstl a2
256 jeq L2041
257 movel a2@,sp@-
258 jbsr ___builtin_delete
259 addqw #4,sp
260 L2041:
261 tstl d2
262 jeq L1913
263 movel a2,sp@-
264 jbsr ___builtin_delete
265 L1913:
266 movel d3,d0
267 moveml a6@(-76),#0x3c0c
268 unlk a6
269 rts
270 .even
271 .globl _op$minus__8RationalR8Rational
272 _op$minus__8RationalR8Rational:
273 link a6,#-52
274 moveml #0x303c,sp@-
275 movel a1,d3
============ Listing of Rational.s ============ PAGE 6
276 movel a6@(8),a5
277 movel a6@(12),a3
278 lea a6@(-8),a2
279 movel a3,a0
280 addqw #4,a0
281 movel a0,a6@(-44)
282 lea a6@(-16),a4
283 clrl sp@-
284 movel a0@,sp@-
285 movel a5@+,sp@-
286 jbsr _multiply__FP6IntRepN20
287 addw #12,sp
288 clrl a4@
289 movel d0,a4@
290 movel a4,d0
291 movel a5,a6@(-48)
292 lea a6@(-20),a5
293 clrl sp@-
294 movel a3@,sp@-
295 movel a6@(-48),a0
296 movel a0@,sp@-
297 jbsr _multiply__FP6IntRepN20
298 movel d0,d1
299 addw #12,sp
300 clrl a5@
301 movel d1,a5@
302 movel a5,d0
303 lea a6@(-12),a3
304 movel a4@,sp@-
305 pea 1:w
306 movel d1,sp@-
307 clrl sp@-
308 movel a4@,sp@-
309 jbsr _add__FP6IntRepiT0iT0
310 clrl a4@
311 addw #20,sp
312 clrl a3@
313 movel d0,a3@
314 movel a3,d0
315 movel a5@,sp@-
316 jbsr ___builtin_delete
317 addqw #4,sp
318 movel a4@,sp@-
319 jbsr ___builtin_delete
320 addqw #4,sp
321 lea a6@(-24),a4
322 clrl sp@-
323 movel a6@(-44),a0
324 movel a0@,sp@-
325 movel a6@(-48),a0
326 movel a0@,sp@-
327 jbsr _multiply__FP6IntRepN20
328 addw #12,sp
329 clrl a4@
330 movel d0,a4@
============ Listing of Rational.s ============ PAGE 7
331 movel a4,d0
332 clrl a2@
333 movel a2,a0
334 addqw #4,a0
335 movel a0,a6@(-52)
336 clrl a0@
337 lea a6@(-28),a5
338 clrl a5@
339 movel a3@,a5@
340 clrl a3@
341 movel a2@,sp@-
342 jbsr ___builtin_delete
343 movel a5@,a2@
344 clrl a5@
345 addqw #4,sp
346 clrl sp@-
347 jbsr ___builtin_delete
348 addqw #4,sp
349 lea a6@(-32),a5
350 clrl a5@
351 movel a4@,a5@
352 clrl a4@
353 movel a6@(-52),a0
354 movel a0@,sp@-
355 jbsr ___builtin_delete
356 movel a6@(-52),a0
357 movel a5@,a0@
358 clrl a5@
359 addqw #4,sp
360 clrl sp@-
361 jbsr ___builtin_delete
362 addqw #4,sp
363 movel a2,sp@-
364 jbsr _normalize__8Rational
365 addqw #4,sp
366 movel a4@,sp@-
367 jbsr ___builtin_delete
368 addqw #4,sp
369 movel a3@,sp@-
370 jbsr ___builtin_delete
371 addqw #4,sp
372 movel d3,a0
373 clrl a0@
374 movel d3,a4
375 addqw #4,a4
376 clrl a4@
377 lea a6@(-36),a3
378 clrl a3@
379 movel a2@,a3@
380 clrl a2@
381 movel a0@,sp@-
382 jbsr ___builtin_delete
383 movel d3,a0
384 movel a3@,a0@
385 clrl a3@
============ Listing of Rational.s ============ PAGE 8
386 addqw #4,sp
387 clrl sp@-
388 jbsr ___builtin_delete
389 addqw #4,sp
390 lea a6@(-40),a3
391 clrl a3@
392 movel a6@(-52),a0
393 movel a0@,a3@
394 clrl a0@
395 movel a4@,sp@-
396 jbsr ___builtin_delete
397 movel a3@,a4@
398 clrl a3@
399 addqw #4,sp
400 clrl sp@-
401 jbsr ___builtin_delete
402 addqw #4,sp
403 clrl d2
404 tstl a6@(-52)
405 jeq L2170
406 movel a6@(-52),a0
407 movel a0@,sp@-
408 jbsr ___builtin_delete
409 addqw #4,sp
410 L2170:
411 tstl a2
412 jeq L2176
413 movel a2@,sp@-
414 jbsr ___builtin_delete
415 addqw #4,sp
416 L2176:
417 tstl d2
418 jeq L2048
419 movel a2,sp@-
420 jbsr ___builtin_delete
421 L2048:
422 movel d3,d0
423 moveml a6@(-76),#0x3c0c
424 unlk a6
425 rts
426 .even
427 .globl _op$mult__8RationalR8Rational
428 _op$mult__8RationalR8Rational:
429 link a6,#-36
430 moveml #0x303c,sp@-
431 movel a1,d3
432 movel a6@(8),a5
433 movel a6@(12),d2
434 lea a6@(-8),a2
435 lea a6@(-12),a3
436 clrl sp@-
437 movel d2,a0
438 addql #4,d2
439 movel a0@,sp@-
440 movel a5@+,sp@-
============ Listing of Rational.s ============ PAGE 9
441 jbsr _multiply__FP6IntRepN20
442 addw #12,sp
443 clrl a3@
444 movel d0,a3@
445 movel a3,d0
446 lea a6@(-16),a4
447 clrl sp@-
448 movel d2,a0
449 movel a0@,sp@-
450 movel a5@,sp@-
451 jbsr _multiply__FP6IntRepN20
452 addw #12,sp
453 clrl a4@
454 movel d0,a4@
455 movel a4,d0
456 clrl a2@
457 movel a2,a0
458 addqw #4,a0
459 movel a0,a6@(-36)
460 clrl a0@
461 lea a6@(-20),a5
462 clrl a5@
463 movel a3@,a5@
464 clrl a3@
465 movel a2@,sp@-
466 jbsr ___builtin_delete
467 movel a5@,a2@
468 clrl a5@
469 addqw #4,sp
470 clrl sp@-
471 jbsr ___builtin_delete
472 addqw #4,sp
473 lea a6@(-24),a5
474 clrl a5@
475 movel a4@,a5@
476 clrl a4@
477 movel a6@(-36),a0
478 movel a0@,sp@-
479 jbsr ___builtin_delete
480 movel a6@(-36),a0
481 movel a5@,a0@
482 clrl a5@
483 addqw #4,sp
484 clrl sp@-
485 jbsr ___builtin_delete
486 addqw #4,sp
487 movel a2,sp@-
488 jbsr _normalize__8Rational
489 addqw #4,sp
490 movel a4@,sp@-
491 jbsr ___builtin_delete
492 addqw #4,sp
493 movel a3@,sp@-
494 jbsr ___builtin_delete
495 addqw #4,sp
============ Listing of Rational.s ============ PAGE 10
496 movel d3,a0
497 clrl a0@
498 movel d3,a4
499 addqw #4,a4
500 clrl a4@
501 lea a6@(-28),a3
502 clrl a3@
503 movel a2@,a3@
504 clrl a2@
505 movel a0@,sp@-
506 jbsr ___builtin_delete
507 movel d3,a0
508 movel a3@,a0@
509 clrl a3@
510 addqw #4,sp
511 clrl sp@-
512 jbsr ___builtin_delete
513 addqw #4,sp
514 lea a6@(-32),a3
515 clrl a3@
516 movel a6@(-36),a0
517 movel a0@,a3@
518 clrl a0@
519 movel a4@,sp@-
520 jbsr ___builtin_delete
521 movel a3@,a4@
522 clrl a3@
523 addqw #4,sp
524 clrl sp@-
525 jbsr ___builtin_delete
526 addqw #4,sp
527 clrl d2
528 tstl a6@(-36)
529 jeq L2279
530 movel a6@(-36),a0
531 movel a0@,sp@-
532 jbsr ___builtin_delete
533 addqw #4,sp
534 L2279:
535 tstl a2
536 jeq L2285
537 movel a2@,sp@-
538 jbsr ___builtin_delete
539 addqw #4,sp
540 L2285:
541 tstl d2
542 jeq L2183
543 movel a2,sp@-
544 jbsr ___builtin_delete
545 L2183:
546 movel d3,d0
547 moveml a6@(-60),#0x3c0c
548 unlk a6
549 rts
550 .even
============ Listing of Rational.s ============ PAGE 11
551 .globl _op$trunc_div__8RationalR8Rational
552 _op$trunc_div__8RationalR8Rational:
553 link a6,#-36
554 moveml #0x303c,sp@-
555 movel a1,d3
556 movel a6@(8),a5
557 lea a6@(-8),a2
558 lea a6@(-12),a3
559 clrl sp@-
560 movel a6@(12),a0
561 movel a0@(4),sp@-
562 movel a5@+,sp@-
563 jbsr _multiply__FP6IntRepN20
564 addw #12,sp
565 clrl a3@
566 movel d0,a3@
567 movel a3,d0
568 lea a6@(-16),a4
569 clrl sp@-
570 movel a6@(12),a0
571 movel a0@,sp@-
572 movel a5@,sp@-
573 jbsr _multiply__FP6IntRepN20
574 addw #12,sp
575 clrl a4@
576 movel d0,a4@
577 movel a4,d0
578 clrl a2@
579 movel a2,a0
580 addqw #4,a0
581 movel a0,a6@(-36)
582 clrl a0@
583 lea a6@(-20),a5
584 clrl a5@
585 movel a3@,a5@
586 clrl a3@
587 movel a2@,sp@-
588 jbsr ___builtin_delete
589 movel a5@,a2@
590 clrl a5@
591 addqw #4,sp
592 clrl sp@-
593 jbsr ___builtin_delete
594 addqw #4,sp
595 lea a6@(-24),a5
596 clrl a5@
597 movel a4@,a5@
598 clrl a4@
599 movel a6@(-36),a0
600 movel a0@,sp@-
601 jbsr ___builtin_delete
602 movel a6@(-36),a0
603 movel a5@,a0@
604 clrl a5@
605 addqw #4,sp
============ Listing of Rational.s ============ PAGE 12
606 clrl sp@-
607 jbsr ___builtin_delete
608 addqw #4,sp
609 movel a2,sp@-
610 jbsr _normalize__8Rational
611 addqw #4,sp
612 movel a4@,sp@-
613 jbsr ___builtin_delete
614 addqw #4,sp
615 movel a3@,sp@-
616 jbsr ___builtin_delete
617 addqw #4,sp
618 movel d3,a0
619 clrl a0@
620 movel d3,a4
621 addqw #4,a4
622 clrl a4@
623 lea a6@(-28),a3
624 clrl a3@
625 movel a2@,a3@
626 clrl a2@
627 movel a0@,sp@-
628 jbsr ___builtin_delete
629 movel d3,a0
630 movel a3@,a0@
631 clrl a3@
632 addqw #4,sp
633 clrl sp@-
634 jbsr ___builtin_delete
635 addqw #4,sp
636 lea a6@(-32),a3
637 clrl a3@
638 movel a6@(-36),a0
639 movel a0@,a3@
640 clrl a0@
641 movel a4@,sp@-
642 jbsr ___builtin_delete
643 movel a3@,a4@
644 clrl a3@
645 addqw #4,sp
646 clrl sp@-
647 jbsr ___builtin_delete
648 addqw #4,sp
649 clrl d2
650 tstl a6@(-36)
651 jeq L2388
652 movel a6@(-36),a0
653 movel a0@,sp@-
654 jbsr ___builtin_delete
655 addqw #4,sp
656 L2388:
657 tstl a2
658 jeq L2394
659 movel a2@,sp@-
660 jbsr ___builtin_delete
============ Listing of Rational.s ============ PAGE 13
661 addqw #4,sp
662 L2394:
663 tstl d2
664 jeq L2292
665 movel a2,sp@-
666 jbsr ___builtin_delete
667 L2292:
668 movel d3,d0
669 moveml a6@(-60),#0x3c0c
670 unlk a6
671 rts
672 .even
673 .globl _op$negate__8Rational
674 _op$negate__8Rational:
675 link a6,#-40
676 moveml #0x383c,sp@-
677 movel a1,d3
678 movel a6@(8),a3
679 lea a6@(-4),a2
680 movel a3@(4),sp@-
681 clrl sp@-
682 jbsr _Icopy__FP6IntRepT0
683 movel d0,a2@
684 addqw #8,sp
685 moveq #-12,d4
686 addl a6,d4
687 movel d4,a6@(-36)
688 lea a6@(-16),a2
689 movel a3@,a1
690 tstw a1@
691 jne L2404
692 movew a1@(4),d1
693 extl d1
694 jra L2405
695 L2404:
696 movel a3@,a0
697 tstw a0@(4)
698 seq d0
699 moveq #1,d1
700 andl d0,d1
701 L2405:
702 movel a3@,a6@(-40)
703 clrl d0
704 movel a6@(-40),a0
705 movew a0@,d0
706 movel d0,sp@-
707 movel d1,sp@-
708 clrl d0
709 movew a0@,d0
710 movel d0,sp@-
711 movel a3@,d4
712 addql #6,d4
713 movel d4,sp@-
714 clrl sp@-
715 jbsr _Ialloc__FP6IntRepPCUsiii
============ Listing of Rational.s ============ PAGE 14
716 addw #20,sp
717 clrl a2@
718 movel d0,a2@
719 movel a2,d0
720 lea a6@(-16),a2
721 lea a6@(-4),a3
722 movel a6@(-36),a0
723 clrl a0@
724 movel a0,a5
725 addqw #4,a5
726 clrl a5@
727 lea a6@(-20),a4
728 clrl a4@
729 movel a2@,a4@
730 clrl a2@
731 movel a0@,sp@-
732 jbsr ___builtin_delete
733 movel a6@(-36),a0
734 movel a4@,a0@
735 clrl a4@
736 addqw #4,sp
737 clrl sp@-
738 jbsr ___builtin_delete
739 addqw #4,sp
740 lea a6@(-24),a4
741 clrl a4@
742 movel a3@,a4@
743 clrl a3@
744 movel a5@,sp@-
745 jbsr ___builtin_delete
746 movel a4@,a5@
747 clrl a4@
748 addqw #4,sp
749 clrl sp@-
750 jbsr ___builtin_delete
751 addqw #4,sp
752 movel a6@(-36),sp@-
753 jbsr _normalize__8Rational
754 addqw #4,sp
755 movel a2@,sp@-
756 jbsr ___builtin_delete
757 addqw #4,sp
758 lea a6@(-12),a2
759 movel d3,a0
760 clrl a0@
761 movel d3,a4
762 addqw #4,a4
763 clrl a4@
764 lea a6@(-28),a3
765 clrl a3@
766 movel a2@,a3@
767 clrl a2@
768 movel a0@,sp@-
769 jbsr ___builtin_delete
770 movel d3,a0
============ Listing of Rational.s ============ PAGE 15
771 movel a3@,a0@
772 clrl a3@
773 addqw #4,sp
774 clrl sp@-
775 jbsr ___builtin_delete
776 addqw #4,sp
777 lea a6@(-32),a3
778 lea a2@(4),a5
779 clrl a3@
780 movel a5@,a3@
781 clrl a5@
782 movel a4@,sp@-
783 jbsr ___builtin_delete
784 movel a3@,a4@
785 clrl a3@
786 addqw #4,sp
787 clrl sp@-
788 jbsr ___builtin_delete
789 addqw #4,sp
790 clrl d2
791 tstl a5
792 jeq L2487
793 movel a5@,sp@-
794 jbsr ___builtin_delete
795 addqw #4,sp
796 L2487:
797 tstl a2
798 jeq L2493
799 movel a2@,sp@-
800 jbsr ___builtin_delete
801 addqw #4,sp
802 L2493:
803 tstl d2
804 jeq L2479
805 movel a2,sp@-
806 jbsr ___builtin_delete
807 addqw #4,sp
808 L2479:
809 movel a6@(-4),sp@-
810 jbsr ___builtin_delete
811 movel d3,d0
812 moveml a6@(-68),#0x3c1c
813 unlk a6
814 rts
815 .even
816 .globl _op$negate__6RatTmp
817 _op$negate__6RatTmp:
818 link a6,#-12
819 moveml #0x203c,sp@-
820 movel a1,d2
821 movel a6@(8),a5
822 movel a5@,a0
823 tstw a0@
824 jeq L2513
825 tstw a0@(4)
============ Listing of Rational.s ============ PAGE 16
826 seq d0
827 andw #1,d0
828 movew d0,a0@(4)
829 L2513:
830 movel d2,a3
831 clrl a3@
832 addqw #4,a3
833 movel a3,a6@(-12)
834 clrl a3@
835 lea a6@(-4),a2
836 clrl a2@
837 movel a5@,a2@
838 clrl a5@+
839 movel d2,a3
840 movel a3@,sp@-
841 lea ___builtin_delete,a4
842 jbsr a4@
843 movel a2@,a3@
844 clrl a2@
845 addqw #4,sp
846 clrl sp@-
847 jbsr a4@
848 addqw #4,sp
849 lea a6@(-8),a2
850 movel a5,a0
851 clrl a2@
852 movel a0@,a2@
853 clrl a0@
854 movel a6@(-12),a3
855 movel a3@,sp@-
856 jbsr a4@
857 movel a2@,a3@
858 clrl a2@
859 addqw #4,sp
860 clrl sp@-
861 jbsr a4@
862 movel d2,d0
863 moveml a6@(-32),#0x3c04
864 unlk a6
865 rts
866 .even
867 .globl _abs__FR8Rational
868 _abs__FR8Rational:
869 link a6,#-40
870 moveml #0x303c,sp@-
871 movel a1,d3
872 movel a6@(8),a5
873 lea a6@(-4),a4
874 movel a5@(4),sp@-
875 clrl sp@-
876 jbsr _Icopy__FP6IntRepT0
877 movel d0,a4@
878 addqw #8,sp
879 lea a6@(-12),a2
880 lea a6@(-16),a3
============ Listing of Rational.s ============ PAGE 17
881 movel a5@,a6@(-40)
882 clrl d0
883 movel a6@(-40),a0
884 movew a0@,d0
885 movel d0,sp@-
886 pea 1:w
887 clrl d0
888 movew a0@,d0
889 movel d0,sp@-
890 movel a5@,a0
891 addqw #6,a0
892 movel a0,sp@-
893 clrl sp@-
894 jbsr _Ialloc__FP6IntRepPCUsiii
895 addw #20,sp
896 clrl a3@
897 movel d0,a3@
898 movel a3,d0
899 clrl a2@
900 movel a2,a0
901 addqw #4,a0
902 movel a0,a6@(-36)
903 clrl a0@
904 lea a6@(-20),a5
905 clrl a5@
906 movel a3@,a5@
907 clrl a3@
908 movel a2@,sp@-
909 jbsr ___builtin_delete
910 movel a5@,a2@
911 clrl a5@
912 addqw #4,sp
913 clrl sp@-
914 jbsr ___builtin_delete
915 addqw #4,sp
916 lea a6@(-24),a5
917 clrl a5@
918 movel a4@,a5@
919 clrl a4@
920 movel a6@(-36),a0
921 movel a0@,sp@-
922 jbsr ___builtin_delete
923 movel a6@(-36),a0
924 movel a5@,a0@
925 clrl a5@
926 addqw #4,sp
927 clrl sp@-
928 jbsr ___builtin_delete
929 addqw #4,sp
930 movel a2,sp@-
931 jbsr _normalize__8Rational
932 addqw #4,sp
933 movel a3@,sp@-
934 jbsr ___builtin_delete
935 addqw #4,sp
============ Listing of Rational.s ============ PAGE 18
936 movel d3,a0
937 clrl a0@
938 movel d3,a4
939 addqw #4,a4
940 clrl a4@
941 lea a6@(-28),a3
942 clrl a3@
943 movel a2@,a3@
944 clrl a2@
945 movel a0@,sp@-
946 jbsr ___builtin_delete
947 movel d3,a0
948 movel a3@,a0@
949 clrl a3@
950 addqw #4,sp
951 clrl sp@-
952 jbsr ___builtin_delete
953 addqw #4,sp
954 lea a6@(-32),a3
955 clrl a3@
956 movel a6@(-36),a0
957 movel a0@,a3@
958 clrl a0@
959 movel a4@,sp@-
960 jbsr ___builtin_delete
961 movel a3@,a4@
962 clrl a3@
963 addqw #4,sp
964 clrl sp@-
965 jbsr ___builtin_delete
966 addqw #4,sp
967 clrl d2
968 tstl a6@(-36)
969 jeq L2629
970 movel a6@(-36),a0
971 movel a0@,sp@-
972 jbsr ___builtin_delete
973 addqw #4,sp
974 L2629:
975 tstl a2
976 jeq L2635
977 movel a2@,sp@-
978 jbsr ___builtin_delete
979 addqw #4,sp
980 L2635:
981 tstl d2
982 jeq L2621
983 movel a2,sp@-
984 jbsr ___builtin_delete
985 addqw #4,sp
986 L2621:
987 movel a6@(-4),sp@-
988 jbsr ___builtin_delete
989 movel d3,d0
990 moveml a6@(-64),#0x3c0c
============ Listing of Rational.s ============ PAGE 19
991 unlk a6
992 rts
993 .even
994 .globl _abs__FR6RatTmp
995 _abs__FR6RatTmp:
996 link a6,#-8
997 moveml #0x3c,sp@-
998 movel a1,a3
999 movel a6@(8),a4
1000 movel a4@,a0
1001 movew #1,a0@(4)
1002 clrl a3@
1003 lea a3@(4),a5
1004 clrl a5@
1005 lea a6@(-4),a2
1006 clrl a2@
1007 movel a4@,a2@
1008 clrl a4@+
1009 movel a3@,sp@-
1010 jbsr ___builtin_delete
1011 movel a2@,a3@
1012 clrl a2@
1013 addqw #4,sp
1014 clrl sp@-
1015 jbsr ___builtin_delete
1016 addqw #4,sp
1017 lea a6@(-8),a2
1018 clrl a2@
1019 movel a4@,a2@
1020 clrl a4@
1021 movel a5@,sp@-
1022 jbsr ___builtin_delete
1023 movel a2@,a5@
1024 clrl a2@
1025 addqw #4,sp
1026 clrl sp@-
1027 jbsr ___builtin_delete
1028 movel a3,d0
1029 moveml a6@(-24),#0x3c00
1030 unlk a6
1031 rts
1032 .even
1033 .globl _sqr__FR8Rational
1034 _sqr__FR8Rational:
1035 link a6,#-36
1036 moveml #0x303c,sp@-
1037 movel a1,d3
1038 movel a6@(8),a5
1039 lea a6@(-8),a2
1040 lea a6@(-12),a3
1041 clrl sp@-
1042 movel a5@,sp@-
1043 movel a5@+,sp@-
1044 jbsr _multiply__FP6IntRepN20
1045 addw #12,sp
============ Listing of Rational.s ============ PAGE 20
1046 clrl a3@
1047 movel d0,a3@
1048 movel a3,d0
1049 lea a6@(-16),a4
1050 clrl sp@-
1051 movel a5@,sp@-
1052 movel a5@,sp@-
1053 jbsr _multiply__FP6IntRepN20
1054 addw #12,sp
1055 clrl a4@
1056 movel d0,a4@
1057 movel a4,d0
1058 clrl a2@
1059 movel a2,a0
1060 addqw #4,a0
1061 movel a0,a6@(-36)
1062 clrl a0@
1063 lea a6@(-20),a5
1064 clrl a5@
1065 movel a3@,a5@
1066 clrl a3@
1067 movel a2@,sp@-
1068 jbsr ___builtin_delete
1069 movel a5@,a2@
1070 clrl a5@
1071 addqw #4,sp
1072 clrl sp@-
1073 jbsr ___builtin_delete
1074 addqw #4,sp
1075 lea a6@(-24),a5
1076 clrl a5@
1077 movel a4@,a5@
1078 clrl a4@
1079 movel a6@(-36),a0
1080 movel a0@,sp@-
1081 jbsr ___builtin_delete
1082 movel a6@(-36),a0
1083 movel a5@,a0@
1084 clrl a5@
1085 addqw #4,sp
1086 clrl sp@-
1087 jbsr ___builtin_delete
1088 addqw #4,sp
1089 movel a2,sp@-
1090 jbsr _normalize__8Rational
1091 addqw #4,sp
1092 movel a4@,sp@-
1093 jbsr ___builtin_delete
1094 addqw #4,sp
1095 movel a3@,sp@-
1096 jbsr ___builtin_delete
1097 addqw #4,sp
1098 movel d3,a0
1099 clrl a0@
1100 movel d3,a4
============ Listing of Rational.s ============ PAGE 21
1101 addqw #4,a4
1102 clrl a4@
1103 lea a6@(-28),a3
1104 clrl a3@
1105 movel a2@,a3@
1106 clrl a2@
1107 movel a0@,sp@-
1108 jbsr ___builtin_delete
1109 movel d3,a0
1110 movel a3@,a0@
1111 clrl a3@
1112 addqw #4,sp
1113 clrl sp@-
1114 jbsr ___builtin_delete
1115 addqw #4,sp
1116 lea a6@(-32),a3
1117 clrl a3@
1118 movel a6@(-36),a0
1119 movel a0@,a3@
1120 clrl a0@
1121 movel a4@,sp@-
1122 jbsr ___builtin_delete
1123 movel a3@,a4@
1124 clrl a3@
1125 addqw #4,sp
1126 clrl sp@-
1127 jbsr ___builtin_delete
1128 addqw #4,sp
1129 clrl d2
1130 tstl a6@(-36)
1131 jeq L2782
1132 movel a6@(-36),a0
1133 movel a0@,sp@-
1134 jbsr ___builtin_delete
1135 addqw #4,sp
1136 L2782:
1137 tstl a2
1138 jeq L2788
1139 movel a2@,sp@-
1140 jbsr ___builtin_delete
1141 addqw #4,sp
1142 L2788:
1143 tstl d2
1144 jeq L2686
1145 movel a2,sp@-
1146 jbsr ___builtin_delete
1147 L2686:
1148 movel d3,d0
1149 moveml a6@(-60),#0x3c0c
1150 unlk a6
1151 rts
1152 .even
1153 .globl _sqr__FR6RatTmp
1154 _sqr__FR6RatTmp:
1155 link a6,#-12
============ Listing of Rational.s ============ PAGE 22
1156 moveml #0x3c,sp@-
1157 movel a1,a3
1158 movel a6@(8),a5
1159 movel a5@,sp@-
1160 movel a5@,sp@-
1161 movel a5@,sp@-
1162 lea _multiply__FP6IntRepN20,a2
1163 jbsr a2@
1164 movel d0,a5@
1165 addw #12,sp
1166 lea a5@(4),a4
1167 movel a4@,sp@-
1168 movel a4@,sp@-
1169 movel a4@,sp@-
1170 jbsr a2@
1171 movel d0,a4@
1172 addw #12,sp
1173 clrl a3@
1174 movel a3,a0
1175 addqw #4,a0
1176 movel a0,a6@(-12)
1177 clrl a0@
1178 lea a6@(-4),a2
1179 clrl a2@
1180 movel a5@,a2@
1181 clrl a5@
1182 movel a3@,sp@-
1183 lea ___builtin_delete,a5
1184 jbsr a5@
1185 movel a2@,a3@
1186 clrl a2@
1187 addqw #4,sp
1188 clrl sp@-
1189 jbsr a5@
1190 addqw #4,sp
1191 lea a6@(-8),a2
1192 clrl a2@
1193 movel a4@,a2@
1194 clrl a4@
1195 movel a6@(-12),a0
1196 movel a0@,sp@-
1197 jbsr a5@
1198 movel a6@(-12),a0
1199 movel a2@,a0@
1200 clrl a2@
1201 addqw #4,sp
1202 clrl sp@-
1203 jbsr a5@
1204 movel a3,d0
1205 moveml a6@(-28),#0x3c00
1206 unlk a6
1207 rts
1208 .even
1209 .globl _op$assign_plus__8RationalR8Rational
1210 _op$assign_plus__8RationalR8Rational:
============ Listing of Rational.s ============ PAGE 23
1211 link a6,#-20
1212 moveml #0x3c,sp@-
1213 movel a6@(8),a5
1214 movel a6@(12),a4
1215 movel a4,a0
1216 addqw #4,a0
1217 movel a0,a6@(-16)
1218 lea a6@(-8),a2
1219 clrl sp@-
1220 movel a0@,sp@-
1221 movel a5@,sp@-
1222 jbsr _multiply__FP6IntRepN20
1223 addw #12,sp
1224 clrl a2@
1225 movel d0,a2@
1226 movel a2,d0
1227 movel a5,a0
1228 addqw #4,a0
1229 movel a0,a6@(-20)
1230 lea a6@(-12),a3
1231 clrl sp@-
1232 movel a4@,sp@-
1233 movel a0@,sp@-
1234 jbsr _multiply__FP6IntRepN20
1235 movel d0,d1
1236 addw #12,sp
1237 clrl a3@
1238 movel d1,a3@
1239 movel a3,d0
1240 lea a6@(-4),a4
1241 movel a2@,sp@-
1242 clrl sp@-
1243 movel d1,sp@-
1244 clrl sp@-
1245 movel a2@,sp@-
1246 jbsr _add__FP6IntRepiT0iT0
1247 clrl a2@
1248 addw #20,sp
1249 clrl a4@
1250 movel d0,a4@
1251 movel a4,d0
1252 movel a3@,sp@-
1253 lea ___builtin_delete,a3
1254 jbsr a3@
1255 addqw #4,sp
1256 movel a2@,sp@-
1257 jbsr a3@
1258 addqw #4,sp
1259 movel a5@,sp@-
1260 jbsr a3@
1261 movel a4@,a5@
1262 clrl a4@
1263 addqw #4,sp
1264 clrl sp@-
1265 jbsr a3@
============ Listing of Rational.s ============ PAGE 24
1266 addqw #4,sp
1267 movel a6@(-20),a0
1268 movel a0@,sp@-
1269 movel a6@(-16),a0
1270 movel a0@,sp@-
1271 movel a6@(-20),a0
1272 movel a0@,sp@-
1273 jbsr _multiply__FP6IntRepN20
1274 movel a6@(-20),a0
1275 movel d0,a0@
1276 addw #12,sp
1277 movel a5,sp@-
1278 jbsr _normalize__8Rational
1279 moveml a6@(-36),#0x3c00
1280 unlk a6
1281 rts
1282 .even
1283 .globl _op$assign_minus__8RationalR8Rational
1284 _op$assign_minus__8RationalR8Rational:
1285 link a6,#-20
1286 moveml #0x3c,sp@-
1287 movel a6@(8),a5
1288 movel a6@(12),a4
1289 movel a4,a0
1290 addqw #4,a0
1291 movel a0,a6@(-16)
1292 lea a6@(-8),a2
1293 clrl sp@-
1294 movel a0@,sp@-
1295 movel a5@,sp@-
1296 jbsr _multiply__FP6IntRepN20
1297 addw #12,sp
1298 clrl a2@
1299 movel d0,a2@
1300 movel a2,d0
1301 movel a5,a0
1302 addqw #4,a0
1303 movel a0,a6@(-20)
1304 lea a6@(-12),a3
1305 clrl sp@-
1306 movel a4@,sp@-
1307 movel a0@,sp@-
1308 jbsr _multiply__FP6IntRepN20
1309 movel d0,d1
1310 addw #12,sp
1311 clrl a3@
1312 movel d1,a3@
1313 movel a3,d0
1314 lea a6@(-4),a4
1315 movel a2@,sp@-
1316 pea 1:w
1317 movel d1,sp@-
1318 clrl sp@-
1319 movel a2@,sp@-
1320 jbsr _add__FP6IntRepiT0iT0
============ Listing of Rational.s ============ PAGE 25
1321 clrl a2@
1322 addw #20,sp
1323 clrl a4@
1324 movel d0,a4@
1325 movel a4,d0
1326 movel a3@,sp@-
1327 lea ___builtin_delete,a3
1328 jbsr a3@
1329 addqw #4,sp
1330 movel a2@,sp@-
1331 jbsr a3@
1332 addqw #4,sp
1333 movel a5@,sp@-
1334 jbsr a3@
1335 movel a4@,a5@
1336 clrl a4@
1337 addqw #4,sp
1338 clrl sp@-
1339 jbsr a3@
1340 addqw #4,sp
1341 movel a6@(-20),a0
1342 movel a0@,sp@-
1343 movel a6@(-16),a0
1344 movel a0@,sp@-
1345 movel a6@(-20),a0
1346 movel a0@,sp@-
1347 jbsr _multiply__FP6IntRepN20
1348 movel a6@(-20),a0
1349 movel d0,a0@
1350 addw #12,sp
1351 movel a5,sp@-
1352 jbsr _normalize__8Rational
1353 moveml a6@(-36),#0x3c00
1354 unlk a6
1355 rts
1356 .even
1357 .globl _op$assign_mult__8RationalR8Rational
1358 _op$assign_mult__8RationalR8Rational:
1359 link a6,#0
1360 moveml #0x3c,sp@-
1361 movel a6@(8),a2
1362 movel a6@(12),a3
1363 movel a2@,sp@-
1364 movel a3@+,sp@-
1365 movel a2@,sp@-
1366 lea _multiply__FP6IntRepN20,a4
1367 jbsr a4@
1368 movel d0,a2@
1369 addw #12,sp
1370 lea a2@(4),a5
1371 movel a5@,sp@-
1372 movel a3@,sp@-
1373 movel a5@,sp@-
1374 jbsr a4@
1375 movel d0,a5@
============ Listing of Rational.s ============ PAGE 26
1376 addw #12,sp
1377 movel a2,sp@-
1378 jbsr _normalize__8Rational
1379 moveml a6@(-16),#0x3c00
1380 unlk a6
1381 rts
1382 .even
1383 .globl _op$assign_trunc_div__8RationalR8Rational
1384 _op$assign_trunc_div__8RationalR8Rational:
1385 link a6,#-12
1386 moveml #0x3c,sp@-
1387 movel a6@(12),a0
1388 cmpl a6@(8),a0
1389 jne L2916
1390 lea a6@(-4),a2
1391 lea a6@(-8),a3
1392 clrl sp@-
1393 movel a0@(4),sp@-
1394 movel a6@(8),a0
1395 movel a0@,sp@-
1396 lea _multiply__FP6IntRepN20,a4
1397 jbsr a4@
1398 movel d0,d1
1399 addw #12,sp
1400 clrl a3@
1401 movel d1,a3@
1402 movel a3,d0
1403 movel d1,sp@-
1404 clrl sp@-
1405 lea _Icopy__FP6IntRepT0,a5
1406 jbsr a5@
1407 movel d0,a2@
1408 addqw #8,sp
1409 movel a3@,sp@-
1410 lea ___builtin_delete,a3
1411 jbsr a3@
1412 addqw #4,sp
1413 movel a6@(8),a0
1414 addqw #4,a0
1415 movel a0,a6@(-12)
1416 movel a0@,sp@-
1417 movel a6@(12),a0
1418 movel a0@,sp@-
1419 movel a6@(-12),a0
1420 movel a0@,sp@-
1421 jbsr a4@
1422 movel a6@(-12),a0
1423 movel d0,a0@
1424 addw #12,sp
1425 movel a2@,sp@-
1426 movel a6@(8),a0
1427 movel a0@,sp@-
1428 jbsr a5@
1429 movel a6@(8),a0
1430 movel d0,a0@
============ Listing of Rational.s ============ PAGE 27
1431 addqw #8,sp
1432 movel a2@,sp@-
1433 jbsr a3@
1434 addqw #4,sp
1435 jra L2939
1436 L2916:
1437 movel a6@(8),a0
1438 movel a0@,sp@-
1439 movel a6@(12),a0
1440 movel a0@(4),sp@-
1441 movel a6@(8),a0
1442 movel a0@,sp@-
1443 lea _multiply__FP6IntRepN20,a2
1444 jbsr a2@
1445 movel a6@(8),a0
1446 movel d0,a0@
1447 addw #12,sp
1448 movel a0,a3
1449 addqw #4,a3
1450 movel a3@,sp@-
1451 movel a6@(12),a0
1452 movel a0@,sp@-
1453 movel a3@,sp@-
1454 jbsr a2@
1455 movel d0,a3@
1456 addw #12,sp
1457 L2939:
1458 movel a6@(8),sp@-
1459 jbsr _normalize__8Rational
1460 moveml a6@(-28),#0x3c00
1461 unlk a6
1462 rts
1463 .even
1464 .globl _op$plus__6RatTmpR8Rational
1465 _op$plus__6RatTmpR8Rational:
1466 link a6,#-28
1467 moveml #0x3c,sp@-
1468 movel a1,a5
1469 movel a6@(12),a4
1470 movel a4,a0
1471 addqw #4,a0
1472 movel a0,a6@(-24)
1473 lea a6@(-8),a2
1474 clrl sp@-
1475 movel a0@,sp@-
1476 movel a6@(8),a0
1477 movel a0@,sp@-
1478 jbsr _multiply__FP6IntRepN20
1479 addw #12,sp
1480 clrl a2@
1481 movel d0,a2@
1482 movel a2,d0
1483 movel a6@(8),a0
1484 addqw #4,a0
1485 movel a0,a6@(-28)
============ Listing of Rational.s ============ PAGE 28
1486 lea a6@(-12),a3
1487 clrl sp@-
1488 movel a4@,sp@-
1489 movel a0@,sp@-
1490 jbsr _multiply__FP6IntRepN20
1491 movel d0,d1
1492 addw #12,sp
1493 clrl a3@
1494 movel d1,a3@
1495 movel a3,d0
1496 lea a6@(-4),a4
1497 movel a2@,sp@-
1498 clrl sp@-
1499 movel d1,sp@-
1500 clrl sp@-
1501 movel a2@,sp@-
1502 jbsr _add__FP6IntRepiT0iT0
1503 clrl a2@
1504 addw #20,sp
1505 clrl a4@
1506 movel d0,a4@
1507 movel a4,d0
1508 movel a3@,sp@-
1509 lea ___builtin_delete,a3
1510 jbsr a3@
1511 addqw #4,sp
1512 movel a2@,sp@-
1513 jbsr a3@
1514 addqw #4,sp
1515 movel a6@(8),a0
1516 movel a0@,sp@-
1517 jbsr a3@
1518 movel a6@(8),a0
1519 movel a4@,a0@
1520 clrl a4@
1521 addqw #4,sp
1522 clrl sp@-
1523 jbsr a3@
1524 addqw #4,sp
1525 movel a6@(-28),a0
1526 movel a0@,sp@-
1527 movel a6@(-24),a0
1528 movel a0@,sp@-
1529 movel a6@(-28),a0
1530 movel a0@,sp@-
1531 jbsr _multiply__FP6IntRepN20
1532 movel a6@(-28),a0
1533 movel d0,a0@
1534 addw #12,sp
1535 movel a6@(8),sp@-
1536 jbsr _normalize__8Rational
1537 addqw #4,sp
1538 clrl a5@
1539 lea a5@(4),a4
1540 clrl a4@
============ Listing of Rational.s ============ PAGE 29
1541 lea a6@(-16),a2
1542 clrl a2@
1543 movel a6@(8),a0
1544 movel a0@,a2@
1545 clrl a0@
1546 movel a5@,sp@-
1547 jbsr a3@
1548 movel a2@,a5@
1549 clrl a2@
1550 addqw #4,sp
1551 clrl sp@-
1552 jbsr a3@
1553 addqw #4,sp
1554 lea a6@(-20),a2
1555 clrl a2@
1556 movel a6@(-28),a0
1557 movel a0@,a2@
1558 clrl a0@
1559 movel a4@,sp@-
1560 jbsr a3@
1561 movel a2@,a4@
1562 clrl a2@
1563 addqw #4,sp
1564 clrl sp@-
1565 jbsr a3@
1566 movel a5,d0
1567 moveml a6@(-44),#0x3c00
1568 unlk a6
1569 rts
1570 .even
1571 .globl _op$minus__6RatTmpR8Rational
1572 _op$minus__6RatTmpR8Rational:
1573 link a6,#-28
1574 moveml #0x3c,sp@-
1575 movel a1,a5
1576 movel a6@(12),a4
1577 movel a4,a0
1578 addqw #4,a0
1579 movel a0,a6@(-24)
1580 lea a6@(-8),a2
1581 clrl sp@-
1582 movel a0@,sp@-
1583 movel a6@(8),a0
1584 movel a0@,sp@-
1585 jbsr _multiply__FP6IntRepN20
1586 addw #12,sp
1587 clrl a2@
1588 movel d0,a2@
1589 movel a2,d0
1590 movel a6@(8),a0
1591 addqw #4,a0
1592 movel a0,a6@(-28)
1593 lea a6@(-12),a3
1594 clrl sp@-
1595 movel a4@,sp@-
============ Listing of Rational.s ============ PAGE 30
1596 movel a0@,sp@-
1597 jbsr _multiply__FP6IntRepN20
1598 movel d0,d1
1599 addw #12,sp
1600 clrl a3@
1601 movel d1,a3@
1602 movel a3,d0
1603 lea a6@(-4),a4
1604 movel a2@,sp@-
1605 pea 1:w
1606 movel d1,sp@-
1607 clrl sp@-
1608 movel a2@,sp@-
1609 jbsr _add__FP6IntRepiT0iT0
1610 clrl a2@
1611 addw #20,sp
1612 clrl a4@
1613 movel d0,a4@
1614 movel a4,d0
1615 movel a3@,sp@-
1616 lea ___builtin_delete,a3
1617 jbsr a3@
1618 addqw #4,sp
1619 movel a2@,sp@-
1620 jbsr a3@
1621 addqw #4,sp
1622 movel a6@(8),a0
1623 movel a0@,sp@-
1624 jbsr a3@
1625 movel a6@(8),a0
1626 movel a4@,a0@
1627 clrl a4@
1628 addqw #4,sp
1629 clrl sp@-
1630 jbsr a3@
1631 addqw #4,sp
1632 movel a6@(-28),a0
1633 movel a0@,sp@-
1634 movel a6@(-24),a0
1635 movel a0@,sp@-
1636 movel a6@(-28),a0
1637 movel a0@,sp@-
1638 jbsr _multiply__FP6IntRepN20
1639 movel a6@(-28),a0
1640 movel d0,a0@
1641 addw #12,sp
1642 movel a6@(8),sp@-
1643 jbsr _normalize__8Rational
1644 addqw #4,sp
1645 clrl a5@
1646 lea a5@(4),a4
1647 clrl a4@
1648 lea a6@(-16),a2
1649 clrl a2@
1650 movel a6@(8),a0
============ Listing of Rational.s ============ PAGE 31
1651 movel a0@,a2@
1652 clrl a0@
1653 movel a5@,sp@-
1654 jbsr a3@
1655 movel a2@,a5@
1656 clrl a2@
1657 addqw #4,sp
1658 clrl sp@-
1659 jbsr a3@
1660 addqw #4,sp
1661 lea a6@(-20),a2
1662 clrl a2@
1663 movel a6@(-28),a0
1664 movel a0@,a2@
1665 clrl a0@
1666 movel a4@,sp@-
1667 jbsr a3@
1668 movel a2@,a4@
1669 clrl a2@
1670 addqw #4,sp
1671 clrl sp@-
1672 jbsr a3@
1673 movel a5,d0
1674 moveml a6@(-44),#0x3c00
1675 unlk a6
1676 rts
1677 .even
1678 .globl _op$mult__6RatTmpR8Rational
1679 _op$mult__6RatTmpR8Rational:
1680 link a6,#-12
1681 moveml #0x3c,sp@-
1682 movel a1,a3
1683 movel a6@(8),a5
1684 movel a6@(12),a2
1685 movel a5@,sp@-
1686 movel a2@+,sp@-
1687 movel a5@,sp@-
1688 jbsr _multiply__FP6IntRepN20
1689 movel d0,a5@
1690 addw #12,sp
1691 lea a5@(4),a4
1692 movel a4@,sp@-
1693 movel a2@,sp@-
1694 movel a4@,sp@-
1695 jbsr _multiply__FP6IntRepN20
1696 movel d0,a4@
1697 addw #12,sp
1698 movel a5,sp@-
1699 jbsr _normalize__8Rational
1700 addqw #4,sp
1701 clrl a3@
1702 movel a3,a0
1703 addqw #4,a0
1704 movel a0,a6@(-12)
1705 clrl a0@
============ Listing of Rational.s ============ PAGE 32
1706 lea a6@(-4),a2
1707 clrl a2@
1708 movel a5@,a2@
1709 clrl a5@
1710 movel a3@,sp@-
1711 lea ___builtin_delete,a5
1712 jbsr a5@
1713 movel a2@,a3@
1714 clrl a2@
1715 addqw #4,sp
1716 clrl sp@-
1717 jbsr a5@
1718 addqw #4,sp
1719 lea a6@(-8),a2
1720 clrl a2@
1721 movel a4@,a2@
1722 clrl a4@
1723 movel a6@(-12),a0
1724 movel a0@,sp@-
1725 jbsr a5@
1726 movel a6@(-12),a0
1727 movel a2@,a0@
1728 clrl a2@
1729 addqw #4,sp
1730 clrl sp@-
1731 jbsr a5@
1732 movel a3,d0
1733 moveml a6@(-28),#0x3c00
1734 unlk a6
1735 rts
1736 .even
1737 .globl _op$trunc_div__6RatTmpR8Rational
1738 _op$trunc_div__6RatTmpR8Rational:
1739 link a6,#-28
1740 moveml #0x203c,sp@-
1741 movel a1,d2
1742 movel a6@(8),a6@(-20)
1743 movel a6@(12),a0
1744 cmpl a6@(-20),a0
1745 jne L3120
1746 lea a6@(-4),a2
1747 lea a6@(-8),a3
1748 clrl sp@-
1749 movel a0@(4),sp@-
1750 movel a6@(-20),a0
1751 movel a0@,sp@-
1752 lea _multiply__FP6IntRepN20,a4
1753 jbsr a4@
1754 movel d0,d1
1755 addw #12,sp
1756 clrl a3@
1757 movel d1,a3@
1758 movel a3,d0
1759 movel d1,sp@-
1760 clrl sp@-
============ Listing of Rational.s ============ PAGE 33
1761 lea _Icopy__FP6IntRepT0,a5
1762 jbsr a5@
1763 movel d0,a2@
1764 addqw #8,sp
1765 movel a3@,sp@-
1766 lea ___builtin_delete,a3
1767 jbsr a3@
1768 addqw #4,sp
1769 movel a6@(-20),a0
1770 addqw #4,a0
1771 movel a0,a6@(-24)
1772 movel a0@,sp@-
1773 movel a6@(12),a0
1774 movel a0@,sp@-
1775 movel a6@(-24),a0
1776 movel a0@,sp@-
1777 jbsr a4@
1778 movel a6@(-24),a0
1779 movel d0,a0@
1780 addw #12,sp
1781 movel a2@,sp@-
1782 movel a6@(-20),a0
1783 movel a0@,sp@-
1784 jbsr a5@
1785 movel a6@(-20),a0
1786 movel d0,a0@
1787 addqw #8,sp
1788 movel a2@,sp@-
1789 jbsr a3@
1790 addqw #4,sp
1791 jra L3143
1792 L3120:
1793 movel a6@(-20),a0
1794 movel a0@,sp@-
1795 movel a6@(12),a0
1796 movel a0@(4),sp@-
1797 movel a6@(-20),a0
1798 movel a0@,sp@-
1799 lea _multiply__FP6IntRepN20,a2
1800 jbsr a2@
1801 movel a6@(-20),a0
1802 movel d0,a0@
1803 addw #12,sp
1804 movel a0,a3
1805 addqw #4,a3
1806 movel a3@,sp@-
1807 movel a6@(12),a0
1808 movel a0@,sp@-
1809 movel a3@,sp@-
1810 jbsr a2@
1811 movel d0,a3@
1812 addw #12,sp
1813 L3143:
1814 movel a6@(-20),sp@-
1815 jbsr _normalize__8Rational
============ Listing of Rational.s ============ PAGE 34
1816 addqw #4,sp
1817 movel d2,a0
1818 clrl a0@
1819 movel d2,a3
1820 addqw #4,a3
1821 clrl a3@
1822 lea a6@(-12),a2
1823 clrl a2@
1824 movel a6@(-20),a0
1825 movel a0@,a2@
1826 movel a6@(-20),a0
1827 addqw #4,a0
1828 movel a0,a6@(-20)
1829 subql #4,a0
1830 clrl a0@
1831 movel d2,a0
1832 movel a0@,sp@-
1833 lea ___builtin_delete,a4
1834 jbsr a4@
1835 movel d2,a0
1836 movel a2@,a0@
1837 clrl a2@
1838 addqw #4,sp
1839 clrl sp@-
1840 jbsr a4@
1841 addqw #4,sp
1842 lea a6@(-16),a2
1843 movel a6@(-20),a6@(-28)
1844 clrl a2@
1845 movel a6@(-28),a0
1846 movel a0@,a2@
1847 clrl a0@
1848 movel a3@,sp@-
1849 jbsr a4@
1850 movel a2@,a3@
1851 clrl a2@
1852 addqw #4,sp
1853 clrl sp@-
1854 jbsr a4@
1855 movel d2,d0
1856 moveml a6@(-48),#0x3c04
1857 unlk a6
1858 rts
1859 .even
1860 .globl _invert__8Rational
1861 _invert__8Rational:
1862 link a6,#-4
1863 moveml #0x3c,sp@-
1864 movel a6@(8),a5
1865 lea a6@(-4),a2
1866 movel a5@,sp@-
1867 clrl sp@-
1868 lea _Icopy__FP6IntRepT0,a3
1869 jbsr a3@
1870 movel d0,a2@
============ Listing of Rational.s ============ PAGE 35
1871 addqw #8,sp
1872 lea a5@(4),a4
1873 movel a4@,sp@-
1874 movel a5@,sp@-
1875 jbsr a3@
1876 movel d0,a5@
1877 addqw #8,sp
1878 movel a2@,sp@-
1879 movel a4@,sp@-
1880 jbsr a3@
1881 movel d0,a0
1882 movel a0,a4@
1883 addqw #8,sp
1884 movel a4,a1
1885 tstw a0@
1886 jne L3181
1887 clrl d0
1888 jra L3182
1889 L3181:
1890 movel a1@,a0
1891 cmpw #1,a0@(4)
1892 jne L3183
1893 moveq #1,d0
1894 jra L3182
1895 L3183:
1896 moveq #-1,d0
1897 L3182:
1898 tstl d0
1899 jne L3185
1900 pea LC1
1901 movel a5,sp@-
1902 jbsr _error__8RationalPc
1903 addqw #8,sp
1904 jra L3186
1905 L3185:
1906 tstl d0
1907 jge L3186
1908 movel a5@(4),a0
1909 tstw a0@
1910 jeq L3188
1911 tstw a0@(4)
1912 seq d0
1913 andw #1,d0
1914 movew d0,a0@(4)
1915 L3188:
1916 movel a5@,a0
1917 tstw a0@
1918 jeq L3186
1919 tstw a0@(4)
1920 seq d0
1921 andw #1,d0
1922 movew d0,a0@(4)
1923 L3186:
1924 movel a6@(-4),sp@-
1925 jbsr ___builtin_delete
============ Listing of Rational.s ============ PAGE 36
1926 moveml a6@(-20),#0x3c00
1927 unlk a6
1928 rts
1929 .even
1930 .globl _compare__FR8RationalT0
1931 _compare__FR8RationalT0:
1932 link a6,#-8
1933 moveml #0x203c,sp@-
1934 movel a6@(8),a3
1935 movel a6@(12),a5
1936 movel a3@,a0
1937 tstw a0@
1938 jne L3200
1939 clrl d0
1940 jra L3201
1941 L3200:
1942 movel a3@,a0
1943 cmpw #1,a0@(4)
1944 jne L3202
1945 moveq #1,d0
1946 jra L3201
1947 L3202:
1948 moveq #-1,d0
1949 L3201:
1950 movel d0,d1
1951 movel a5@,a0
1952 tstw a0@
1953 jne L3205
1954 clrl d0
1955 jra L3206
1956 L3205:
1957 movel a5@,a0
1958 cmpw #1,a0@(4)
1959 jne L3207
1960 moveq #1,d0
1961 jra L3206
1962 L3207:
1963 moveq #-1,d0
1964 L3206:
1965 movel d1,d2
1966 subl d0,d2
1967 jne L3209
1968 tstl d1
1969 jeq L3209
1970 lea a6@(-4),a2
1971 clrl sp@-
1972 movel a5@(4),sp@-
1973 movel a3@+,sp@-
1974 lea _multiply__FP6IntRepN20,a4
1975 jbsr a4@
1976 addw #12,sp
1977 clrl a2@
1978 movel d0,a2@
1979 movel a2,d0
1980 movel a3,a0
============ Listing of Rational.s ============ PAGE 37
1981 lea a6@(-8),a3
1982 clrl sp@-
1983 movel a5@,sp@-
1984 movel a0@,sp@-
1985 jbsr a4@
1986 movel d0,d1
1987 addw #12,sp
1988 clrl a3@
1989 movel d1,a3@
1990 movel a3,d0
1991 movel d1,sp@-
1992 movel a2@,sp@-
1993 jbsr _compare__FP6IntRepT0
1994 movel d0,d2
1995 addqw #8,sp
1996 movel a3@,sp@-
1997 lea ___builtin_delete,a3
1998 jbsr a3@
1999 addqw #4,sp
2000 movel a2@,sp@-
2001 jbsr a3@
2002 L3209:
2003 movel d2,d0
2004 moveml a6@(-28),#0x3c04
2005 unlk a6
2006 rts
2007 .even
2008 .globl ___8Rationald
2009 ___8Rationald:
2010 link a6,#-12
2011 fmovem #0x4,sp@-
2012 moveml #0x3838,sp@-
2013 movel a6@(8),a4
2014 fmoved a6@(12),fp2
2015 clrl a4@
2016 lea a4@(4),a2
2017 clrl a2@
2018 clrl sp@-
2019 movel a4@,sp@-
2020 lea _Icopy_long__FP6IntRepl,a3
2021 jbsr a3@
2022 movel d0,a4@
2023 addqw #8,sp
2024 pea 1:w
2025 movel a2@,sp@-
2026 jbsr a3@
2027 movel d0,a2@
2028 addqw #8,sp
2029 ftstx fp2
2030 fjeq L3240
2031 fslt d0
2032 moveq #1,d4
2033 andl d0,d4
2034 jeq L3241
2035 fnegx fp2,fp2
============ Listing of Rational.s ============ PAGE 38
2036 L3241:
2037 lea a6@(-4),a0
2038 #APP
2039 fgetexpx fp2,fp0
2040 #NO_APP
2041 fintrzx fp0,fp0
2042 fmovel fp0,d0
2043 #APP
2044 fgetmanx fp2,fp0
2045 #NO_APP
2046 ftstx fp0
2047 fjeq L3243
2048 #APP
2049 fscaleb #-1,fp0
2050 #NO_APP
2051 addql #1,d0
2052 L3243:
2053 movel d0,a0@
2054 fmovex fp0,fp2
2055 movel a6@(-4),d2
2056 clrl d3
2057 ftstx fp2
2058 fjeq L3245
2059 lea a6@(-12),a2
2060 L3249:
2061 addql #1,d3
2062 moveq #21,d1
2063 cmpl d3,d1
2064 jle L3245
2065 fmuld #0r32768,fp2
2066 #APP
2067 fintrzx fp2,fp0
2068 #NO_APP
2069 fmoved fp0,a2@
2070 fsubx fp0,fp2
2071 movel a4@,sp@-
2072 pea 15:w
2073 movel a4@,sp@-
2074 jbsr _lshift__FP6IntReplT0
2075 movel d0,a4@
2076 addw #12,sp
2077 fintrzd a6@(-12),fp0
2078 movel d0,sp@-
2079 fmovel fp0,sp@-
2080 clrl sp@-
2081 movel d0,sp@-
2082 jbsr _add__FP6IntRepilT0
2083 movel d0,a4@
2084 addw #16,sp
2085 moveq #-15,d1
2086 addl d1,d2
2087 ftstx fp2
2088 fjne L3249
2089 L3245:
2090 tstl d2
============ Listing of Rational.s ============ PAGE 39
2091 jle L3250
2092 movel a4@,sp@-
2093 movel d2,sp@-
2094 movel a4@,sp@-
2095 jbsr _lshift__FP6IntReplT0
2096 movel d0,a4@
2097 jra L3261
2098 L3250:
2099 tstl d2
2100 jge L3252
2101 lea a4@(4),a2
2102 movel a2@,sp@-
2103 negl d2
2104 movel d2,sp@-
2105 movel a2@,sp@-
2106 jbsr _lshift__FP6IntReplT0
2107 movel d0,a2@
2108 L3261:
2109 addw #12,sp
2110 L3252:
2111 tstl d4
2112 jeq L3240
2113 movel a4@,a0
2114 tstw a0@
2115 jeq L3240
2116 tstw a0@(4)
2117 seq d0
2118 andw #1,d0
2119 movew d0,a0@(4)
2120 L3240:
2121 movel a4,sp@-
2122 jbsr _normalize__8Rational
2123 movel a4,d0
2124 moveml a6@(-48),#0x1c1c
2125 fmovem a6@(-24),#0x20
2126 unlk a6
2127 rts
2128 .even
2129 .globl _floor__FR8Rational
2130 _floor__FR8Rational:
2131 link a6,#-8
2132 moveml #0x38,sp@-
2133 movel a1,a4
2134 movel a6@(8),a2
2135 lea a6@(-4),a0
2136 clrl a0@
2137 lea a6@(-8),a1
2138 clrl a1@
2139 movel a1,sp@-
2140 movel a0,sp@-
2141 pea a2@(4)
2142 movel a2,sp@-
2143 jbsr _divide__FR7IntegerN30
2144 addw #16,sp
2145 movel a2@,a0
============ Listing of Rational.s ============ PAGE 40
2146 tstw a0@
2147 jne L3267
2148 clrl d0
2149 jra L3268
2150 L3267:
2151 movel a2@,a0
2152 cmpw #1,a0@(4)
2153 jne L3269
2154 moveq #1,d0
2155 jra L3268
2156 L3269:
2157 moveq #-1,d0
2158 L3268:
2159 tstl d0
2160 jge L3265
2161 lea a6@(-8),a1
2162 movel a1@,a0
2163 tstw a0@
2164 jne L3272
2165 clrl d0
2166 jra L3273
2167 L3272:
2168 movel a1@,a0
2169 cmpw #1,a0@(4)
2170 jne L3274
2171 moveq #1,d0
2172 jra L3273
2173 L3274:
2174 moveq #-1,d0
2175 L3273:
2176 tstl d0
2177 jeq L3265
2178 lea a6@(-4),a2
2179 movel a2@,sp@-
2180 pea -1:w
2181 clrl sp@-
2182 movel a2@,sp@-
2183 jbsr _add__FP6IntRepilT0
2184 movel d0,a2@
2185 addw #16,sp
2186 L3265:
2187 lea a6@(-4),a2
2188 clrl a4@
2189 movel a2@,a4@
2190 clrl a2@
2191 movel a6@(-8),sp@-
2192 lea ___builtin_delete,a3
2193 jbsr a3@
2194 addqw #4,sp
2195 movel a2@,sp@-
2196 jbsr a3@
2197 movel a4,d0
2198 moveml a6@(-20),#0x1c00
2199 unlk a6
2200 rts
============ Listing of Rational.s ============ PAGE 41
2201 .even
2202 .globl _ceil__FR8Rational
2203 _ceil__FR8Rational:
2204 link a6,#-8
2205 moveml #0x38,sp@-
2206 movel a1,a4
2207 movel a6@(8),a2
2208 lea a6@(-4),a0
2209 clrl a0@
2210 lea a6@(-8),a1
2211 clrl a1@
2212 movel a1,sp@-
2213 movel a0,sp@-
2214 pea a2@(4)
2215 movel a2,sp@-
2216 jbsr _divide__FR7IntegerN30
2217 addw #16,sp
2218 movel a2@,a0
2219 tstw a0@
2220 jne L3308
2221 clrl d0
2222 jra L3309
2223 L3308:
2224 movel a2@,a0
2225 cmpw #1,a0@(4)
2226 jne L3310
2227 moveq #1,d0
2228 jra L3309
2229 L3310:
2230 moveq #-1,d0
2231 L3309:
2232 tstl d0
2233 jlt L3306
2234 lea a6@(-8),a1
2235 movel a1@,a0
2236 tstw a0@
2237 jne L3313
2238 clrl d0
2239 jra L3314
2240 L3313:
2241 movel a1@,a0
2242 cmpw #1,a0@(4)
2243 jne L3315
2244 moveq #1,d0
2245 jra L3314
2246 L3315:
2247 moveq #-1,d0
2248 L3314:
2249 tstl d0
2250 jeq L3306
2251 lea a6@(-4),a2
2252 movel a2@,sp@-
2253 pea 1:w
2254 clrl sp@-
2255 movel a2@,sp@-
============ Listing of Rational.s ============ PAGE 42
2256 jbsr _add__FP6IntRepilT0
2257 movel d0,a2@
2258 addw #16,sp
2259 L3306:
2260 lea a6@(-4),a2
2261 clrl a4@
2262 movel a2@,a4@
2263 clrl a2@
2264 movel a6@(-8),sp@-
2265 lea ___builtin_delete,a3
2266 jbsr a3@
2267 addqw #4,sp
2268 movel a2@,sp@-
2269 jbsr a3@
2270 movel a4,d0
2271 moveml a6@(-20),#0x1c00
2272 unlk a6
2273 rts
2274 .even
2275 .globl _round__FR8Rational
2276 _round__FR8Rational:
2277 link a6,#-8
2278 moveml #0x3c,sp@-
2279 movel a1,a5
2280 movel a6@(8),a4
2281 lea a6@(-4),a0
2282 clrl a0@
2283 lea a6@(-8),a2
2284 clrl a2@
2285 movel a2,sp@-
2286 movel a0,sp@-
2287 lea a4@(4),a3
2288 movel a3,sp@-
2289 movel a4,sp@-
2290 jbsr _divide__FR7IntegerN30
2291 addw #16,sp
2292 movel a2@,sp@-
2293 pea 1:w
2294 movel a2@,sp@-
2295 jbsr _lshift__FP6IntReplT0
2296 movel d0,a2@
2297 addw #12,sp
2298 movel a3@,sp@-
2299 movel d0,sp@-
2300 jbsr _ucompare__FP6IntRepT0
2301 addqw #8,sp
2302 tstl d0
2303 jlt L3348
2304 movel a4@,a0
2305 tstw a0@
2306 jne L3352
2307 clrl d0
2308 jra L3353
2309 L3352:
2310 movel a4@,a0
============ Listing of Rational.s ============ PAGE 43
2311 cmpw #1,a0@(4)
2312 jne L3354
2313 moveq #1,d0
2314 jra L3353
2315 L3354:
2316 moveq #-1,d0
2317 L3353:
2318 tstl d0
2319 jlt L3350
2320 lea a6@(-4),a2
2321 movel a2@,sp@-
2322 pea 1:w
2323 jra L3385
2324 L3350:
2325 lea a6@(-4),a2
2326 movel a2@,sp@-
2327 pea -1:w
2328 L3385:
2329 clrl sp@-
2330 movel a2@,sp@-
2331 jbsr _add__FP6IntRepilT0
2332 movel d0,a2@
2333 addw #16,sp
2334 L3348:
2335 lea a6@(-4),a2
2336 clrl a5@
2337 movel a2@,a5@
2338 clrl a2@
2339 movel a6@(-8),sp@-
2340 lea ___builtin_delete,a3
2341 jbsr a3@
2342 addqw #4,sp
2343 movel a2@,sp@-
2344 jbsr a3@
2345 movel a5,d0
2346 moveml a6@(-24),#0x3c00
2347 unlk a6
2348 rts
2349 .even
2350 .globl _trunc__FR8Rational
2351 _trunc__FR8Rational:
2352 link a6,#-4
2353 moveml #0x30,sp@-
2354 movel a1,a3
2355 movel a6@(8),a0
2356 lea a6@(-4),a2
2357 clrl sp@-
2358 movel a0@(4),sp@-
2359 movel a0@,sp@-
2360 jbsr _div__FP6IntRepN20
2361 addw #12,sp
2362 clrl a2@
2363 movel d0,a2@
2364 movel a2,d0
2365 clrl a3@
============ Listing of Rational.s ============ PAGE 44
2366 movel a2@,a3@
2367 clrl a2@
2368 clrl sp@-
2369 jbsr ___builtin_delete
2370 movel a3,d0
2371 moveml a6@(-12),#0xc00
2372 unlk a6
2373 rts
2374 .even
2375 .globl _numerator__8Rational
2376 _numerator__8Rational:
2377 link a6,#-4
2378 moveml #0x30,sp@-
2379 movel a1,a2
2380 lea a6@(-4),a3
2381 movel a6@(8),a0
2382 movel a0@,sp@-
2383 clrl sp@-
2384 jbsr _Icopy__FP6IntRepT0
2385 movel d0,a3@
2386 addqw #8,sp
2387 clrl a2@
2388 movel a3@,a2@
2389 clrl a3@
2390 clrl sp@-
2391 jbsr ___builtin_delete
2392 movel a2,d0
2393 moveml a6@(-12),#0xc00
2394 unlk a6
2395 rts
2396 .even
2397 .globl _denominator__8Rational
2398 _denominator__8Rational:
2399 link a6,#-4
2400 moveml #0x30,sp@-
2401 movel a1,a3
2402 lea a6@(-4),a2
2403 movel a6@(8),a0
2404 addqw #4,a0
2405 movel a0@,sp@-
2406 clrl sp@-
2407 jbsr _Icopy__FP6IntRepT0
2408 movel d0,a2@
2409 addqw #8,sp
2410 clrl a3@
2411 movel a2@,a3@
2412 clrl a2@
2413 clrl sp@-
2414 jbsr ___builtin_delete
2415 movel a3,d0
2416 moveml a6@(-12),#0xc00
2417 unlk a6
2418 rts
2419 .even
2420 .globl _pow__FR8RationalR7Integer
============ Listing of Rational.s ============ PAGE 45
2421 _pow__FR8RationalR7Integer:
2422 link a6,#-16
2423 moveml #0x303c,sp@-
2424 movel a1,d2
2425 movel a6@(12),a0
2426 movel a0@,sp@-
2427 jbsr _Itolong__FP6IntRep
2428 addqw #4,sp
2429 movel d0,sp@-
2430 movel a6@(8),sp@-
2431 lea a6@(-8),a2
2432 movel a2,a1
2433 jbsr _pow__FR8Rationall
2434 addqw #8,sp
2435 movel d2,a0
2436 clrl a0@
2437 movel d2,a4
2438 addqw #4,a4
2439 clrl a4@
2440 lea a6@(-12),a3
2441 clrl a3@
2442 movel a2@,a3@
2443 clrl a2@
2444 movel a0@,sp@-
2445 jbsr ___builtin_delete
2446 movel d2,a0
2447 movel a3@,a0@
2448 clrl a3@
2449 addqw #4,sp
2450 clrl sp@-
2451 jbsr ___builtin_delete
2452 addqw #4,sp
2453 lea a6@(-16),a3
2454 lea a2@(4),a5
2455 clrl a3@
2456 movel a5@,a3@
2457 clrl a5@
2458 movel a4@,sp@-
2459 jbsr ___builtin_delete
2460 movel a3@,a4@
2461 clrl a3@
2462 addqw #4,sp
2463 clrl sp@-
2464 jbsr ___builtin_delete
2465 addqw #4,sp
2466 clrl d3
2467 tstl a5
2468 jeq L3475
2469 movel a5@,sp@-
2470 jbsr ___builtin_delete
2471 addqw #4,sp
2472 L3475:
2473 tstl a2
2474 jeq L3481
2475 movel a2@,sp@-
============ Listing of Rational.s ============ PAGE 46
2476 jbsr ___builtin_delete
2477 addqw #4,sp
2478 L3481:
2479 tstl d3
2480 jeq L3434
2481 movel a2,sp@-
2482 jbsr ___builtin_delete
2483 L3434:
2484 movel d2,d0
2485 moveml a6@(-40),#0x3c0c
2486 unlk a6
2487 rts
2488 .even
2489 .globl _type$d__8Rational
2490 _type$d__8Rational:
2491 link a6,#0
2492 movel a6@(8),a0
2493 pea a0@(4)
2494 movel a0,sp@-
2495 jbsr _ratio__FR7IntegerT0
2496 unlk a6
2497 rts
2498 .even
2499 .globl _pow__FR8Rationall
2500 _pow__FR8Rationall:
2501 link a6,#-44
2502 moveml #0x303c,sp@-
2503 movel a1,d3
2504 movel a6@(8),a6@(-36)
2505 movel a6@(12),d2
2506 lea a6@(-8),a5
2507 clrl a5@
2508 movel a5,a4
2509 addqw #4,a4
2510 movel a4,a6@(-40)
2511 clrl a4@
2512 tstl d2
2513 jlt L3493
2514 lea a6@(-12),a2
2515 clrl sp@-
2516 movel d2,sp@-
2517 movel a6@(-36),a4
2518 addqw #4,a4
2519 movel a4,a6@(-36)
2520 subql #4,a4
2521 movel a4@,sp@-
2522 jbsr _power__FP6IntReplT0
2523 addw #12,sp
2524 clrl a2@
2525 movel d0,a2@
2526 movel a2,d0
2527 movel a5@,sp@-
2528 lea ___builtin_delete,a3
2529 jbsr a3@
2530 movel a2@,a5@
============ Listing of Rational.s ============ PAGE 47
2531 clrl a2@
2532 addqw #4,sp
2533 clrl sp@-
2534 jbsr a3@
2535 addqw #4,sp
2536 movel a6@(-36),a0
2537 lea a6@(-16),a2
2538 clrl sp@-
2539 movel d2,sp@-
2540 movel a0@,sp@-
2541 jbsr _power__FP6IntReplT0
2542 addw #12,sp
2543 clrl a2@
2544 movel d0,a2@
2545 movel a2,d0
2546 movel a6@(-40),a4
2547 movel a4@,sp@-
2548 jbsr a3@
2549 movel a2@,a4@
2550 clrl a2@
2551 addqw #4,sp
2552 clrl sp@-
2553 jbsr a3@
2554 addqw #4,sp
2555 jra L3522
2556 L3493:
2557 negl d2
2558 lea a6@(-8),a2
2559 movel a2,a4
2560 addqw #4,a4
2561 movel a4,a6@(-44)
2562 lea a6@(-20),a3
2563 clrl sp@-
2564 movel d2,sp@-
2565 movel a6@(-36),a4
2566 addqw #4,a4
2567 movel a4,a6@(-36)
2568 subql #4,a4
2569 movel a4@,sp@-
2570 jbsr _power__FP6IntReplT0
2571 addw #12,sp
2572 clrl a3@
2573 movel d0,a3@
2574 movel a3,d0
2575 movel a6@(-44),a4
2576 movel a4@,sp@-
2577 lea ___builtin_delete,a5
2578 jbsr a5@
2579 movel a3@,a4@
2580 clrl a3@
2581 addqw #4,sp
2582 clrl sp@-
2583 jbsr a5@
2584 addqw #4,sp
2585 movel a6@(-36),a0
============ Listing of Rational.s ============ PAGE 48
2586 lea a6@(-24),a3
2587 clrl sp@-
2588 movel d2,sp@-
2589 movel a0@,sp@-
2590 jbsr _power__FP6IntReplT0
2591 addw #12,sp
2592 clrl a3@
2593 movel d0,a3@
2594 movel a3,d0
2595 movel a2@,sp@-
2596 jbsr a5@
2597 movel a3@,a2@
2598 clrl a3@
2599 addqw #4,sp
2600 clrl sp@-
2601 jbsr a5@
2602 addqw #4,sp
2603 movel a4,a1
2604 movel a1@,a0
2605 tstw a0@
2606 jne L3553
2607 clrl d0
2608 jra L3554
2609 L3553:
2610 movel a1@,a0
2611 cmpw #1,a0@(4)
2612 jne L3555
2613 moveq #1,d0
2614 jra L3554
2615 L3555:
2616 moveq #-1,d0
2617 L3554:
2618 tstl d0
2619 jge L3522
2620 movel a6@(-8),a0
2621 tstw a0@
2622 jeq L3557
2623 tstw a0@(4)
2624 seq d0
2625 andw #1,d0
2626 movew d0,a0@(4)
2627 L3557:
2628 movel a6@(-4),a0
2629 tstw a0@
2630 jeq L3522
2631 tstw a0@(4)
2632 seq d0
2633 andw #1,d0
2634 movew d0,a0@(4)
2635 L3522:
2636 lea a6@(-8),a2
2637 movel d3,a4
2638 clrl a4@
2639 addqw #4,a4
2640 movel a4,a6@(-44)
============ Listing of Rational.s ============ PAGE 49
2641 clrl a4@
2642 lea a6@(-28),a3
2643 clrl a3@
2644 movel a2@,a3@
2645 clrl a2@
2646 movel d3,a4
2647 movel a4@,sp@-
2648 jbsr ___builtin_delete
2649 movel a3@,a4@
2650 clrl a3@
2651 addqw #4,sp
2652 clrl sp@-
2653 jbsr ___builtin_delete
2654 addqw #4,sp
2655 lea a6@(-32),a3
2656 lea a2@(4),a5
2657 clrl a3@
2658 movel a5@,a3@
2659 clrl a5@
2660 movel a6@(-44),a4
2661 movel a4@,sp@-
2662 jbsr ___builtin_delete
2663 movel a3@,a4@
2664 clrl a3@
2665 addqw #4,sp
2666 clrl sp@-
2667 jbsr ___builtin_delete
2668 addqw #4,sp
2669 clrl d2
2670 tstl a5
2671 jeq L3614
2672 movel a5@,sp@-
2673 jbsr ___builtin_delete
2674 addqw #4,sp
2675 L3614:
2676 tstl a2
2677 jeq L3620
2678 movel a2@,sp@-
2679 jbsr ___builtin_delete
2680 addqw #4,sp
2681 L3620:
2682 tstl d2
2683 jeq L3489
2684 movel a2,sp@-
2685 jbsr ___builtin_delete
2686 L3489:
2687 movel d3,d0
2688 moveml a6@(-68),#0x3c0c
2689 unlk a6
2690 rts
2691 LC2:
2692 .ascii "/\0"
2693 .even
2694 .globl _op$alshift__FR7ostreamR8Rational
2695 _op$alshift__FR7ostreamR8Rational:
============ Listing of Rational.s ============ PAGE 50
2696 link a6,#0
2697 moveml #0x3030,sp@-
2698 movel a6@(8),a2
2699 movel a6@(12),a3
2700 pea 1:w
2701 movel a3@(4),sp@-
2702 jbsr _compare__FP6IntRepl
2703 addqw #8,sp
2704 tstl d0
2705 seq d1
2706 btst #0,d1
2707 jeq L3628
2708 clrl sp@-
2709 pea 10:w
2710 movel a3@,sp@-
2711 jra L3658
2712 L3628:
2713 clrl sp@-
2714 pea 10:w
2715 movel a3@,sp@-
2716 jbsr _Itoa__FP6IntRepii
2717 addw #12,sp
2718 clrl d2
2719 tstl a2@(4)
2720 jne L3641
2721 movel d0,sp@-
2722 movel a2@,sp@-
2723 jbsr _sputs__9streambufPCc
2724 addqw #8,sp
2725 moveq #-1,d3
2726 cmpl d0,d3
2727 jne L3640
2728 L3641:
2729 moveq #1,d2
2730 L3640:
2731 tstl d2
2732 jeq L3643
2733 moveq #2,d3
2734 orl d3,a2@(4)
2735 L3643:
2736 movel #LC2,d0
2737 clrl d2
2738 tstl a2@(4)
2739 jne L3647
2740 movel d0,sp@-
2741 movel a2@,sp@-
2742 jbsr _sputs__9streambufPCc
2743 addqw #8,sp
2744 moveq #-1,d3
2745 cmpl d0,d3
2746 jne L3646
2747 L3647:
2748 moveq #1,d2
2749 L3646:
2750 tstl d2
============ Listing of Rational.s ============ PAGE 51
2751 jeq L3649
2752 moveq #2,d3
2753 orl d3,a2@(4)
2754 L3649:
2755 clrl sp@-
2756 pea 10:w
2757 movel a3@(4),sp@-
2758 L3658:
2759 jbsr _Itoa__FP6IntRepii
2760 addw #12,sp
2761 clrl d2
2762 tstl a2@(4)
2763 jne L3654
2764 movel d0,sp@-
2765 movel a2@,sp@-
2766 jbsr _sputs__9streambufPCc
2767 moveq #-1,d3
2768 cmpl d0,d3
2769 jne L3653
2770 L3654:
2771 moveq #1,d2
2772 L3653:
2773 tstl d2
2774 jeq L3637
2775 moveq #2,d3
2776 orl d3,a2@(4)
2777 L3637:
2778 movel a2,d0
2779 moveml a6@(-16),#0xc0c
2780 unlk a6
2781 rts
2782 .even
2783 .globl _op$arshift__FR7istreamR8Rational
2784 _op$arshift__FR7istreamR8Rational:
2785 link a6,#-4
2786 moveml #0x30,sp@-
2787 movel a6@(8),a3
2788 movel a6@(12),a2
2789 movel a2,sp@-
2790 movel a3,sp@-
2791 jbsr _op$arshift__FR7istreamR7Integer
2792 addqw #8,sp
2793 tstl a3@(4)
2794 jne L3662
2795 movel a3,d0
2796 jra L3663
2797 L3662:
2798 clrl d0
2799 L3663:
2800 tstl d0
2801 jeq L3660
2802 clrb a6@(-1)
2803 pea a6@(-1)
2804 movel a3,sp@-
2805 jbsr _get__7istreamRc
============ Listing of Rational.s ============ PAGE 52
2806 addqw #8,sp
2807 cmpb #47,a6@(-1)
2808 jne L3664
2809 pea a2@(4)
2810 movel a3,sp@-
2811 jbsr _op$arshift__FR7istreamR7Integer
2812 movel a2,sp@-
2813 jbsr _normalize__8Rational
2814 jra L3660
2815 L3664:
2816 movel a3@,a0
2817 moveb a6@(-1),d0
2818 extbl d0
2819 movel a0@(8),d1
2820 cmpl a0@,d1
2821 jls L3669
2822 subql #1,a0@(8)
2823 movel a0@(8),a0
2824 moveb d0,a0@
2825 extbl d0
2826 jra L3670
2827 L3669:
2828 moveq #-1,d0
2829 L3670:
2830 moveq #-1,d1
2831 cmpl d0,d1
2832 jne L3667
2833 moveq #2,d1
2834 orl d1,a3@(4)
2835 L3667:
2836 addqw #4,a2
2837 pea 1:w
2838 movel a2@,sp@-
2839 jbsr _Icopy_long__FP6IntRepl
2840 movel d0,a2@
2841 L3660:
2842 movel a3,d0
2843 moveml a6@(-12),#0xc00
2844 unlk a6
2845 rts
2846 LC3:
2847 .ascii "invariant failure\0"
2848 .even
2849 .globl _OK__8Rational
2850 _OK__8Rational:
2851 link a6,#-4
2852 moveml #0x3830,sp@-
2853 movel a6@(8),a3
2854 clrl d2
2855 movel a3,sp@-
2856 lea _OK__7Integer,a2
2857 jbsr a2@
2858 addqw #4,sp
2859 tstl d0
2860 jeq L3674
============ Listing of Rational.s ============ PAGE 53
2861 pea a3@(4)
2862 jbsr a2@
2863 addqw #4,sp
2864 tstl d0
2865 jeq L3674
2866 moveq #1,d2
2867 L3674:
2868 movel d2,d3
2869 lea a3@(4),a1
2870 movel a1@,a0
2871 tstw a0@
2872 jne L3676
2873 clrl d1
2874 jra L3677
2875 L3676:
2876 movel a1@,a0
2877 cmpw #1,a0@(4)
2878 jne L3678
2879 moveq #1,d1
2880 jra L3677
2881 L3678:
2882 moveq #-1,d1
2883 L3677:
2884 tstl d1
2885 sgt d0
2886 moveq #1,d4
2887 andl d4,d0
2888 andl d0,d3
2889 lea a6@(-4),a2
2890 movel a3@(4),sp@-
2891 movel a3@,sp@-
2892 jbsr _gcd__FP6IntRepT0
2893 movel d0,d1
2894 addqw #8,sp
2895 clrl a2@
2896 movel d1,a2@
2897 movel a2,d0
2898 movel __Int_One,sp@-
2899 movel d1,sp@-
2900 jbsr _ucompare__FP6IntRepT0
2901 movel d0,d2
2902 addqw #8,sp
2903 movel a2@,sp@-
2904 jbsr ___builtin_delete
2905 addqw #4,sp
2906 tstl d2
2907 seq d0
2908 andl d4,d0
2909 andl d0,d3
2910 jne L3694
2911 pea LC3
2912 movel a3,sp@-
2913 jbsr _error__8RationalPc
2914 L3694:
2915 movel d3,d0
============ Listing of Rational.s ============ PAGE 54
2916 moveml a6@(-24),#0xc1c
2917 unlk a6
2918 rts
2919 .stabs "_fini",10,0,0,0
2920 .stabs "__GLOBAL_$D$Rational_cc",4,0,0,0
2921 .even
2922 .globl __GLOBAL_$D$Rational_cc
2923 __GLOBAL_$D$Rational_cc:
2924 link a6,#0
2925 movel __Int_One,sp@-
2926 jbsr ___builtin_delete
2927 unlk a6
2928 rts
2929 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$Rational_cc
2930 .stabs "_init",10,0,0,0
2931 .stabs "__GLOBAL_$I$Rational_cc",4,0,0,0
2932 .even
2933 .globl __GLOBAL_$I$Rational_cc
2934 __GLOBAL_$I$Rational_cc:
2935 link a6,#0
2936 movel a2,sp@-
2937 lea __Int_One,a2
2938 pea 1:w
2939 clrl sp@-
2940 jbsr _Icopy_long__FP6IntRepl
2941 movel d0,a2@
2942 movel a6@(-4),a2
2943 unlk a6
2944 rts
2945 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$Rational_cc
============ Listing Complete ============
============ Listing of String.cc ============ PAGE 1
1 /*
2 Copyright (C) 1988 Free Software Foundation
3 written by Doug Lea (dl@rocky.oswego.edu)
4
5 This file is part of GNU CC.
6
7 GNU CC is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY. No author or distributor
9 accepts responsibility to anyone for the consequences of using it
10 or for whether it serves any particular purpose or works at all,
11 unless he says so in writing. Refer to the GNU CC General Public
12 License for full details.
13
14 Everyone is granted permission to copy, modify and redistribute
15 GNU CC, but only under the conditions described in the
16 GNU CC General Public License. A copy of this license is
17 supposed to have been given to you along with GNU CC so you
18 can know your rights and responsibilities. It should be in a
19 file named COPYING. Among other things, the copyright notice
20 and this notice must be preserved on all copies.
21 */
22
23 /*
24 String class implementation
25 */
26
27 #include <String.h>
28 #include <std.h>
29 #include <ctype.h>
30 #include <values.h>
31
32 // extern "C" {
33 #include <regex.h>
34 // }
35
36 volatile void String::error(char* msg) const
37 {
38 (*lib_error_handler)("String", msg);
39 }
40
41 // globals
42
43 StrRep _nilStrRep = { 0, 1, { 0 } }; // nil strings point here
44 String _nilString; // nil SubStrings point here
45
46
47
48
49 /*
50 the following inline fcts are specially designed to work
51 in support of String classes, and are not meant as generic replacements
52 for libc "str" functions.
53
54 inline copy fcts - I like left-to-right from->to arguments.
55 all versions assume that `to' argument is non-null
============ Listing of String.cc ============ PAGE 2
56 */
57
58 // copy n bytes
59 inline static void ncopy(const char* from, char* to, int n)
60 {
61 if (from != to) while (--n >= 0) *to++ = *from++;
62 }
63
64 // copy n bytes, null-terminate
65 inline static void ncopy0(const char* from, char* to, int n)
66 {
67 if (from != to)
68 {
69 while (--n >= 0) *to++ = *from++;
70 *to = 0;
71 }
72 }
73
74 // copy until null
75 inline static void scopy(const char* from, char* to)
76 {
77 if (from != 0) while((*to++ = *from++) != 0);
78 }
79
80 // copy right-to-left
81 inline static void revcopy(const char* from, char* to, short n)
82 {
83 if (from != 0) while (--n >= 0) *to-- = *from--;
84 }
85
86
87 inline static int slen(const char* t) // inline strlen
88 {
89 if (t == 0)
90 return 0;
91 else
92 {
93 const char* a = t;
94 while (*a++ != 0);
95 return a - 1 - t;
96 }
97 }
98
99 // minimum and maximum possible rep sizes
100 // these are always allocated in blocks of
101 // a power of 2 minus MALLOC_OVERHEAD, which
102 // is the least wasteful & fastest size for standard versions of malloc
103
104 #define MAXStrRep_SIZE (1 << (SHORTBITS - 1) - 1)
105 #define MINStrRep_SIZE 16
106 #define MALLOC_OVERHEAD 4
107
108 inline static StrRep* Snew(int newsiz)
109 {
110 unsigned int siz = sizeof(StrRep) + newsiz + MALLOC_OVERHEAD;
============ Listing of String.cc ============ PAGE 3
111 unsigned int allocsiz = MINStrRep_SIZE;
112 while (allocsiz < siz) allocsiz <<= 1;
113 allocsiz -= MALLOC_OVERHEAD;
114 if (allocsiz >= MAXStrRep_SIZE)
115 (*lib_error_handler)("String", "Requested length out of range");
116
117 StrRep* rep = (StrRep *) new char[allocsiz];
118 rep->sz = allocsiz - sizeof(StrRep);
119 return rep;
120 }
121
122 StrRep* Salloc(StrRep* old, const char* src, int srclen, int newlen)
123 {
124 if (old == &_nilStrRep) old = 0;
125 if (srclen < 0) srclen = slen(src);
126 if (newlen < srclen) newlen = srclen;
127 StrRep* rep;
128 if (old == 0 || newlen > old->sz)
129 rep = Snew(newlen);
130 else
131 rep = old;
132
133 rep->len = newlen;
134
135 ncopy0(src, rep->s, srclen);
136
137 if (old != rep && old != 0) delete old;
138
139 return rep;
140 }
141
142 StrRep* Sresize(StrRep* old, int newlen)
143 {
144 if (old == &_nilStrRep) old = 0;
145 StrRep* rep;
146 if (old == 0)
147 rep = Snew(newlen);
148 else if (newlen > old->sz)
149 {
150 rep = Snew(newlen);
151 bcopy(old->s, rep->s, old->len);
152 delete old;
153 }
154 else
155 rep = old;
156
157 rep->len = newlen;
158
159 return rep;
160 }
161
162 StrRep* Scopy(StrRep* old, StrRep* s)
163 {
164 if (old == &_nilStrRep) old = 0;
165 if (s == &_nilStrRep) s = 0;
============ Listing of String.cc ============ PAGE 4
166 if (old == s)
167 return (old == 0)? &_nilStrRep : old;
168 else if (s == 0)
169 {
170 old->s[0] = 0;
171 old->len = 0;
172 return old;
173 }
174 else
175 {
176 StrRep* rep;
177 int newlen = s->len;
178 if (old == 0 || newlen > old->sz)
179 {
180 rep = Snew(newlen);
181 if (old != 0) delete old;
182 }
183 else
184 rep = old;
185 rep->len = newlen;
186 ncopy0(s->s, rep->s, newlen);
187 return rep;
188 }
189 }
190
191 StrRep* Scat(StrRep* old, const char* s, int srclen, const char* t, int tlen)
192 {
193 if (old == &_nilStrRep) old = 0;
194 if (srclen < 0) srclen = slen(s);
195 if (tlen < 0) tlen = slen(t);
196 int newlen = srclen + tlen;
197 StrRep* rep;
198 if (old == 0 || newlen > old->sz)
199 rep = Snew(newlen);
200 else
201 rep = old;
202
203 rep->len = newlen;
204
205 ncopy(s, rep->s, srclen);
206 ncopy0(t, &(rep->s[srclen]), tlen);
207
208 if (old != rep && old != 0) delete old;
209
210 return rep;
211 }
212
213 StrRep* Sprepend(StrRep* old, const char* t, int tlen)
214 {
215 char* s;
216 int srclen;
217 if (old == &_nilStrRep || old == 0)
218 {
219 s = 0; old = 0; srclen = 0;
220 }
============ Listing of String.cc ============ PAGE 5
221 else
222 {
223 s = old->s; srclen = old->len;
224 }
225 if (tlen < 0) tlen = slen(t);
226 int newlen = srclen + tlen;
227 StrRep* rep;
228 if (old == 0 || newlen > old->sz || (t >= old->s && t <= old->s+old->len))
229 rep = Snew(newlen);
230 else
231 rep = old;
232
233 rep->len = newlen;
234
235 revcopy(&(s[srclen]), &(rep->s[newlen]), srclen+1);
236 ncopy(t, rep->s, tlen);
237
238 if (old != rep && old != 0) delete old;
239
240 return rep;
241 }
242
243
244 // string compare: first argument is known to be non-null
245
246 inline static int scmp(const char* a, const char* b)
247 {
248 if (b == 0)
249 return *a != 0;
250 else
251 {
252 signed char diff = 0;
253 while ((diff = *a - *b++) == 0 && *a++ != 0);
254 return diff;
255 }
256 }
257
258 inline static int ncmp(const char* a, int al, const char* b, int bl)
259 {
260 int n = al <? bl;
261 signed char diff;
262 while (n-- > 0) if ((diff = *a++ - *b++) != 0) return diff;
263 return al - bl;
264 }
265
266 int fcompare(const String& x, const String& y)
267 {
268 const char* a = x.chars();
269 const char* b = y.chars();
270 int al = x.length();
271 int bl = y.length();
272 int n = al <? bl;
273 signed char diff = 0;
274 while (n-- > 0)
275 {
============ Listing of String.cc ============ PAGE 6
276 char ac = *a++;
277 char bc = *b++;
278 if ((diff = ac - bc) != 0)
279 {
280 if (ac >= 'a' && ac <= 'z')
281 ac = ac - 'a' + 'A';
282 if (bc >= 'a' && bc <= 'z')
283 bc = bc - 'a' + 'A';
284 if ((diff = ac - bc) != 0)
285 return diff;
286 }
287 }
288 return al - bl;
289 }
290
291 // these are not inline, but pull in the above inlines, so are
292 // pretty fast
293
294 int compare(const String& x, const char* b)
295 {
296 return scmp(x.chars(), b);
297 }
298
299 int compare(const String& x, const String& y)
300 {
301 return scmp(x.chars(), y.chars());
302 }
303
304 int compare(const String& x, const SubString& y)
305 {
306 return ncmp(x.chars(), x.length(), y.chars(), y.length());
307 }
308
309 int compare(const SubString& x, const String& y)
310 {
311 return ncmp(x.chars(), x.length(), y.chars(), y.length());
312 }
313
314 int compare(const SubString& x, const SubString& y)
315 {
316 return ncmp(x.chars(), x.length(), y.chars(), y.length());
317 }
318
319 int compare(const SubString& x, const char* b)
320 {
321 if (b == 0)
322 return x.length();
323 else
324 {
325 const char* a = x.chars();
326 int n = x.length();
327 signed char diff;
328 while (n-- > 0) if ((diff = *a++ - *b++) != 0) return diff;
329 return (*b == 0) ? 0 : -1;
330 }
============ Listing of String.cc ============ PAGE 7
331 }
332
333 /*
334 index fcts
335 */
336
337 int String::search(int start, int sl, char c) const
338 {
339 const char* s = chars();
340 if (sl > 0)
341 {
342 if (start >= 0)
343 {
344 const char* a = &(s[start]);
345 const char* lasta = &(s[sl]);
346 while (a < lasta) if (*a++ == c) return --a - s;
347 }
348 else
349 {
350 const char* a = &(s[sl + start + 1]);
351 while (--a >= s) if (*a == c) return a - s;
352 }
353 }
354 return -1;
355 }
356
357 int String::search(int start, int sl, const char* t, int tl = -1) const
358 {
359 const char* s = chars();
360 if (tl < 0) tl = slen(t);
361 if (sl > 0 && tl > 0)
362 {
363 if (start >= 0)
364 {
365 const char* lasts = &(s[sl - tl]);
366 const char* lastt = &(t[tl]);
367 const char* p = &(s[start]);
368
369 while (p <= lasts)
370 {
371 const char* x = p++;
372 const char* y = t;
373 while (*x++ == *y++) if (y >= lastt) return --p - s;
374 }
375 }
376 else
377 {
378 const char* firsts = &(s[tl - 1]);
379 const char* lastt = &(t[tl - 1]);
380 const char* p = &(s[sl + start + 1]);
381
382 while (--p >= firsts)
383 {
384 const char* x = p;
385 const char* y = lastt;
============ Listing of String.cc ============ PAGE 8
386 while (*x-- == *y--) if (y < t) return ++x - s;
387 }
388 }
389 }
390 return -1;
391 }
392
393
394 int String::match(int start, int sl, int exact, const char* t, int tl = -1) const
395 {
396 if (tl < 0) tl = slen(t);
397
398 if (start < 0)
399 {
400 start = sl + start - tl + 1;
401 if (start < 0 || (exact && start != 0))
402 return 0;
403 }
404 else if (exact && sl - start != tl)
405 return 0;
406
407 if (sl == 0 || tl == 0 || sl - start < tl || start >= sl)
408 return 0;
409
410 int n = tl;
411 const char* s = &(rep->s[start]);
412 while (n-- > 0) if (*s++ != *t++) return 0;
413 return tl;
414 }
415
416
417
418 void SubString::assign(StrRep* ysrc, const char* ys, int ylen=-1)
419 {
420 if (&S == &_nilString) return;
421
422 if (ylen < 0) ylen = slen(ys);
423 StrRep* targ = S.rep;
424 int sl = targ->len - len + ylen;
425
426 if (ysrc == targ || sl >= targ->sz)
427 {
428 StrRep* oldtarg = targ;
429 targ = Sresize(0, sl);
430 ncopy(oldtarg->s, targ->s, pos);
431 ncopy(ys, &(targ->s[pos]), ylen);
432 scopy(&(oldtarg->s[pos + len]), &(targ->s[pos + ylen]));
433 delete oldtarg;
434 }
435 else if (len == ylen)
436 ncopy(ys, &(targ->s[pos]), len);
437 else if (ylen < len)
438 {
439 ncopy(ys, &(targ->s[pos]), ylen);
440 scopy(&(targ->s[pos + len]), &(targ->s[pos + ylen]));
============ Listing of String.cc ============ PAGE 9
441 }
442 else
443 {
444 revcopy(&(targ->s[targ->len]), &(targ->s[sl]), targ->len-pos-len +1);
445 ncopy(ys, &(targ->s[pos]), ylen);
446 }
447 targ->len = sl;
448 S.rep = targ;
449 }
450
451 // Regex stuff
452
453 Regex::~Regex()
454 {
455 delete(buf->buffer);
456 delete(buf->fastmap);
457 delete(buf);
458 delete(reg);
459 }
460
461 void Regex::initialize(const char* t, int tlen, int fast, int bufsize,
462 const char* transtable)
463 {
464 if (tlen < 0) tlen = slen(t);
465 buf = new re_pattern_buffer;
466 reg = new re_registers;
467 if (fast)
468 buf->fastmap = new char[256];
469 else
470 buf->fastmap = 0;
471 buf->translate = (char*)transtable;
472 if (tlen > bufsize)
473 bufsize = tlen;
474 buf->allocated = bufsize;
475 buf->buffer = new char [buf->allocated];
476 char* msg = re_compile_pattern((char*)t, tlen, buf);
477 if (msg != 0)
478 (*lib_error_handler)("Regex", msg);
479 else if (fast)
480 re_compile_fastmap(buf);
481 }
482
483 int Regex::match_info(int& start, int& length, int nth = 0) const
484 {
485 if ((unsigned)(nth) >= RE_NREGS)
486 return 0;
487 else
488 {
489 start = reg->start[nth];
490 length = reg->end[nth] - start;
491 return start >= 0 && length >= 0;
492 }
493 }
494
495 int Regex::search(const char* s, int len, int& matchlen, int startpos = 0) const
============ Listing of String.cc ============ PAGE 10
496 {
497 int matchpos, pos, range;
498 if (startpos >= 0)
499 {
500 pos = startpos;
501 range = len - startpos;
502 }
503 else
504 {
505 pos = len + startpos;
506 range = -pos;
507 }
508 matchpos = re_search_2(buf, 0, 0, (char*)s, len, pos, range, reg, len);
509 if (matchpos >= 0)
510 matchlen = reg->end[0] - reg->start[0];
511 else
512 matchlen = 0;
513 return matchpos;
514 }
515
516 int Regex::match(const char*s, int len, int p = 0) const
517 {
518 if (p < 0)
519 {
520 p += len;
521 if (p >= len)
522 return 0;
523 return re_match_2(buf, 0, 0, (unsigned char*)s, p, 0, reg, p);
524 }
525 else if (p >= len)
526 return 0;
527 else
528 return re_match_2(buf, 0, 0, (unsigned char*)s, len, p, reg, len);
529 }
530
531
532 /*
533 * substitution
534 */
535
536
537 int String::_gsub(const char* pat, int pl, const char* r, int rl)
538 {
539 int nmatches = 0;
540 if (pl < 0) pl = slen(pat);
541 if (rl < 0) rl = slen(r);
542 int sl = length();
543 if (sl <= 0 || pl <= 0 || sl < pl)
544 return nmatches;
545
546 const char* s = chars();
547
548 StrRep* nrep = Sresize(0, 2 * sl); // guess size
549 char* x = nrep->s;
550
============ Listing of String.cc ============ PAGE 11
551 int si = 0;
552 int xi = 0;
553 int remaining = sl;
554
555 while (remaining >= pl)
556 {
557 int pos = search(si, sl, pat, pl);
558 if (pos < 0)
559 break;
560 else
561 {
562 ++nmatches;
563 int mustfit = xi + remaining + rl - pl;
564 if (mustfit >= nrep->sz)
565 {
566 nrep = Sresize(nrep, mustfit);
567 x = nrep->s;
568 }
569 pos -= si;
570 ncopy(&(s[si]), &(x[xi]), pos);
571 ncopy(r, &(x[xi + pos]), rl);
572 si += pos + pl;
573 remaining -= pos + pl;
574 xi += pos + rl;
575 }
576 }
577
578 ncopy0(&(s[si]), &(x[xi]), remaining);
579 nrep->len = xi + remaining;
580
581 if (nrep->len <= rep->sz) // fit back in if possible
582 {
583 rep->len = nrep->len;
584 ncopy0(nrep->s, rep->s, rep->len);
585 delete(nrep);
586 }
587 else
588 {
589 delete(rep);
590 rep = nrep;
591 }
592 return nmatches;
593 }
594
595 int String::_gsub(const Regex& pat, const char* r, int rl)
596 {
597 int nmatches = 0;
598 int sl = length();
599 if (sl <= 0)
600 return nmatches;
601
602 if (rl < 0) rl = slen(r);
603
604 const char* s = chars();
605
============ Listing of String.cc ============ PAGE 12
606 StrRep* nrep = Sresize(0, 2 * sl); // guess size
607 char* x = nrep->s;
608
609 int si = 0;
610 int xi = 0;
611 int remaining = sl;
612 int pos, pl = 0; // how long is a regular expression?
613
614 while (remaining > 0)
615 {
616 pos = pat.search(s, sl, pl, si); // unlike string search, the pos returned here is absolute
617 if (pos < 0 || pl <= 0)
618 break;
619 else
620 {
621 ++nmatches;
622 int mustfit = xi + remaining + rl - pl;
623 if (mustfit >= nrep->sz)
624 {
625 nrep = Sresize(nrep, mustfit);
626 x = nrep->s;
627 }
628 pos -= si;
629 ncopy(&(s[si]), &(x[xi]), pos);
630 ncopy(r, &(x[xi + pos]), rl);
631 si += pos + pl;
632 remaining -= pos + pl;
633 xi += pos + rl;
634 }
635 }
636
637 ncopy0(&(s[si]), &(x[xi]), remaining);
638 nrep->len = xi + remaining;
639
640 if (nrep->len <= rep->sz) // fit back in if possible
641 {
642 rep->len = nrep->len;
643 ncopy0(nrep->s, rep->s, rep->len);
644 delete(nrep);
645 }
646 else
647 {
648 delete(rep);
649 rep = nrep;
650 }
651 return nmatches;
652 }
653
654
655 /*
656 * deletion
657 */
658
659 void String::del(int pos, int len)
660 {
============ Listing of String.cc ============ PAGE 13
661 if (pos <= 0 || len <= 0 || pos + len > length()) return;
662 int nlen = length() - len;
663 int first = pos + len;
664 ncopy0(&(rep->s[first]), &(rep->s[pos]), length() - first);
665 rep->len = nlen;
666 }
667
668 void String::del(const Regex& r, int startpos = 0)
669 {
670 int mlen;
671 int first = r.search(chars(), length(), mlen, startpos);
672 del(first, mlen);
673 }
674
675 void String::del(const char* t, int startpos = 0)
676 {
677 int tlen = slen(t);
678 int p = search(startpos, length(), t, tlen);
679 del(p, tlen);
680 }
681
682 /*
683 * substring extraction
684 */
685
686
687 SubString String::at(int first, int len)
688 {
689 return _substr(first, len);
690 }
691
692 SubString String::before(int pos)
693 {
694 return _substr(0, pos);
695 }
696
697 SubString String::through(int pos)
698 {
699 return _substr(0, pos+1);
700 }
701
702 SubString String::after(int pos)
703 {
704 return _substr(pos + 1, length() - (pos + 1));
705 }
706
707 SubString String::from(int pos)
708 {
709 return _substr(pos, length() - pos);
710 }
711
712 SubString String::at(const String& y, int startpos = 0)
713 {
714 int first = search(startpos, length(), y.chars(), y.length());
715 return _substr(first, y.length());
============ Listing of String.cc ============ PAGE 14
716 }
717
718 SubString String::at(const SubString& y, int startpos = 0)
719 {
720 int first = search(startpos, length(), y.chars(), y.length());
721 return _substr(first, y.length());
722 }
723
724 SubString String::at(const Regex& r, int startpos = 0)
725 {
726 int mlen;
727 int first = r.search(chars(), length(), mlen, startpos);
728 return _substr(first, mlen);
729 }
730
731 SubString String::at(const char* t, int startpos = 0)
732 {
733 int tlen = slen(t);
734 int first = search(startpos, length(), t, tlen);
735 return _substr(first, tlen);
736 }
737
738 SubString String::at(char c, int startpos = 0)
739 {
740 int first = search(startpos, length(), c);
741 return _substr(first, 1);
742 }
743
744
745 SubString String::before(const String& y, int startpos = 0)
746 {
747 int last = search(startpos, length(), y.chars(), y.length());
748 return _substr(0, last);
749 }
750
751
752 SubString String::before(const SubString& y, int startpos = 0)
753 {
754 int last = search(startpos, length(), y.chars(), y.length());
755 return _substr(0, last);
756 }
757
758 SubString String::before(const Regex& r, int startpos = 0)
759 {
760 int mlen;
761 int first = r.search(chars(), length(), mlen, startpos);
762 return _substr(0, first);
763 }
764
765 SubString String::before(char c, int startpos = 0)
766 {
767 int last = search(startpos, length(), c);
768 return _substr(0, last);
769 }
770
============ Listing of String.cc ============ PAGE 15
771 SubString String::before(const char* t, int startpos = 0)
772 {
773 int tlen = slen(t);
774 int last = search(startpos, length(), t, tlen);
775 return _substr(0, last);
776 }
777
778
779 SubString String::through(const String& y, int startpos = 0)
780 {
781 int last = search(startpos, length(), y.chars(), y.length());
782 if (last >= 0) last += y.length();
783 return _substr(0, last);
784 }
785
786
787 SubString String::through(const SubString& y, int startpos = 0)
788 {
789 int last = search(startpos, length(), y.chars(), y.length());
790 if (last >= 0) last += y.length();
791 return _substr(0, last);
792 }
793
794
795 SubString String::through(const Regex& r, int startpos = 0)
796 {
797 int mlen;
798 int first = r.search(chars(), length(), mlen, startpos);
799 if (first >= 0) first += mlen;
800 return _substr(0, first);
801 }
802
803 SubString String::through(char c, int startpos = 0)
804 {
805 int last = search(startpos, length(), c);
806 if (last >= 0) last += 1;
807 return _substr(0, last);
808 }
809
810 SubString String::through(const char* t, int startpos = 0)
811 {
812 int tlen = slen(t);
813 int last = search(startpos, length(), t, tlen);
814 if (last >= 0) last += tlen;
815 return _substr(0, last);
816 }
817
818
819 SubString String::after(const String& y, int startpos = 0)
820 {
821 int first = search(startpos, length(), y.chars(), y.length());
822 if (first >= 0) first += y.length();
823 return _substr(first, length() - first);
824 }
825
============ Listing of String.cc ============ PAGE 16
826 SubString String::after(const SubString& y, int startpos = 0)
827 {
828 int first = search(startpos, length(), y.chars(), y.length());
829 if (first >= 0) first += y.length();
830 return _substr(first, length() - first);
831 }
832
833 SubString String::after(char c, int startpos = 0)
834 {
835 int first = search(startpos, length(), c);
836 if (first >= 0) first += 1;
837 return _substr(first, length() - first);
838 }
839
840 SubString String::after(const Regex& r, int startpos = 0)
841 {
842 int mlen;
843 int first = r.search(chars(), length(), mlen, startpos);
844 if (first >= 0) first += mlen;
845 return _substr(first, length() - first);
846 }
847
848 SubString String::after(const char* t, int startpos = 0)
849 {
850 int tlen = slen(t);
851 int first = search(startpos, length(), t, tlen);
852 if (first >= 0) first += tlen;
853 return _substr(first, length() - first);
854 }
855
856 SubString String::from(const String& y, int startpos = 0)
857 {
858 int first = search(startpos, length(), y.chars(), y.length());
859 return _substr(first, length() - first);
860 }
861
862
863 SubString String::from(const SubString& y, int startpos = 0)
864 {
865 int first = search(startpos, length(), y.chars(), y.length());
866 return _substr(first, length() - first);
867 }
868
869 SubString String::from(const Regex& r, int startpos = 0)
870 {
871 int mlen;
872 int first = r.search(chars(), length(), mlen, startpos);
873 return _substr(first, length() - first);
874 }
875
876 SubString String::from(char c, int startpos = 0)
877 {
878 int first = search(startpos, length(), c);
879 return _substr(first, length() - first);
880 }
============ Listing of String.cc ============ PAGE 17
881
882 SubString String::from(const char* t, int startpos = 0)
883 {
884 int tlen = slen(t);
885 int first = search(startpos, length(), t, tlen);
886 return _substr(first, length() - first);
887 }
888
889
890
891 /*
892 * split/join
893 */
894
895
896 int split(const String& src, String results[], int n, const String& sep)
897 {
898 String x = src;
899 const char* s = x.chars();
900 int sl = x.length();
901 int i = 0;
902 int pos = 0;
903 while (i < n && pos < sl)
904 {
905 int p = x.search(pos, sl, sep.chars(), sep.length());
906 if (p < 0)
907 p = sl;
908 results[i].rep = Salloc(results[i].rep, &(s[pos]), p - pos, p - pos);
909 i++;
910 pos = p + sep.length();
911 }
912 return(i);
913 }
914
915 int split(const String& src, String results[], int n, const Regex& r)
916 {
917 String x = src;
918 const char* s = x.chars();
919 int sl = x.length();
920 int i = 0;
921 int pos = 0;
922 int p, matchlen;
923 while (i < n && pos < sl)
924 {
925 p = r.search(s, sl, matchlen, pos);
926 if (p < 0)
927 p = sl;
928 results[i].rep = Salloc(results[i].rep, &(s[pos]), p - pos, p - pos);
929 i++;
930 pos = p + matchlen;
931 }
932 return(i);
933 }
934
935
============ Listing of String.cc ============ PAGE 18
936 StrTmp join(String src[], int n, const String& separator)
937 {
938 String sep = separator;
939 int xlen = 0;
940 for (int i = 0; i < n; ++i)
941 xlen += src[i].length();
942 xlen += (n - 1) * sep.length();
943
944 StrRep* x = Sresize(0, xlen);
945
946 int j = 0;
947
948 for (i = 0; i < n - 1; ++i)
949 {
950 ncopy(src[i].chars(), &(x->s[j]), src[i].length());
951 j += src[i].length();
952 ncopy(sep.chars(), &(x->s[j]), sep.length());
953 j += sep.length();
954 }
955 ncopy0(src[i].chars(), &(x->s[j]), src[i].length());
956 return StrTmp(x);
957 }
958
959
960 /*
961 misc
962 */
963
964
965 StrRep* Sreverse(StrRep* src, StrRep* dest)
966 {
967 int n = src->len;
968 if (src != dest)
969 dest = Salloc(dest, src->s, n, n);
970 if (n > 0)
971 {
972 char* a = dest->s;
973 char* b = &(a[n - 1]);
974 while (a < b)
975 {
976 char t = *a;
977 *a++ = *b;
978 *b-- = t;
979 }
980 }
981 return dest;
982 }
983
984
985 StrRep* Supcase(StrRep* src, StrRep* dest)
986 {
987 int n = src->len;
988 if (src != dest) dest = Salloc(dest, src->s, n, n);
989 char* p = dest->s;
990 char* e = &(p[n]);
============ Listing of String.cc ============ PAGE 19
991 for (; p < e; ++p) if (islower(*p)) *p = toupper(*p);
992 return dest;
993 }
994
995 StrRep* Sdowncase(StrRep* src, StrRep* dest)
996 {
997 int n = src->len;
998 if (src != dest) dest = Salloc(dest, src->s, n, n);
999 char* p = dest->s;
1000 char* e = &(p[n]);
1001 for (; p < e; ++p) if (isupper(*p)) *p = tolower(*p);
1002 return dest;
1003 }
1004
1005 StrRep* Scapitalize(StrRep* src, StrRep* dest)
1006 {
1007 int n = src->len;
1008 if (src != dest) dest = Salloc(dest, src->s, n, n);
1009
1010 char* p = dest->s;
1011 char* e = &(p[n]);
1012 for (; p < e; ++p)
1013 {
1014 int at_word;
1015 if (at_word = islower(*p))
1016 *p = toupper(*p);
1017 else
1018 at_word = isupper(*p) || isdigit(*p);
1019
1020 if (at_word)
1021 {
1022 while (++p < e)
1023 {
1024 if (isupper(*p))
1025 *p = tolower(*p);
1026 else if (!islower(*p) && !isdigit(*p))
1027 break;
1028 }
1029 }
1030 }
1031 return dest;
1032 }
1033
1034 StrTmp replicate(char c, int n)
1035 {
1036 StrRep* w = Sresize(0, n);
1037 char* p = w->s;
1038 while (n-- > 0) *p++ = c;
1039 *p = 0;
1040 return StrTmp(w);
1041 }
1042
1043 StrTmp replicate(const String& y, int n)
1044 {
1045 int len = y.length();
============ Listing of String.cc ============ PAGE 20
1046 StrRep* w = Sresize(0, n * len);
1047 char* p = w->s;
1048 while (n-- > 0)
1049 {
1050 ncopy(y.chars(), p, len);
1051 p += len;
1052 }
1053 *p = 0;
1054 return StrTmp(w);
1055 }
1056
1057 StrTmp common_prefix(const String& x, const String& y, int startpos = 0)
1058 {
1059 const char* xchars = x.chars();
1060 const char* ychars = y.chars();
1061 const char* xs = &(xchars[startpos]);
1062 const char* ss = xs;
1063 const char* topx = &(xchars[x.length()]);
1064 const char* ys = &(ychars[startpos]);
1065 const char* topy = &(ychars[y.length()]);
1066 for (int l = 0; xs < topx && ys < topy && *xs++ == *ys++; ++l);
1067 return StrTmp(Salloc(0, ss, l, l));
1068 }
1069
1070
1071 StrTmp common_suffix(const String& x, const String& y, int startpos = -1)
1072 {
1073 const char* xchars = x.chars();
1074 const char* ychars = y.chars();
1075 const char* xs = &(xchars[x.length() + startpos]);
1076 const char* botx = xchars;
1077 const char* ys = &(ychars[y.length() + startpos]);
1078 const char* boty = ychars;
1079 for (int l = 0; xs >= botx && ys >= boty && *xs == *ys ; --xs, --ys, ++l);
1080 return StrTmp(Salloc(0, ++xs, l, l));
1081 }
1082
1083 // IO
1084
1085 istream& operator>>(istream& s, String& x)
1086 {
1087 if (!s.readable())
1088 {
1089 s.set(_bad);
1090 return s;
1091 }
1092 char ch;
1093 int i = 0;
1094 x.rep = Sresize(x.rep, 20);
1095 s >> WS;
1096 if (!s.good())
1097 {
1098 s.set(_bad);
1099 return s;
1100 }
============ Listing of String.cc ============ PAGE 21
1101 while (s.get(ch))
1102 {
1103 if (isspace(ch))
1104 break;
1105 if (i >= x.rep->sz - 1)
1106 x.rep = Sresize(x.rep, i+1);
1107 x.rep->s[i++] = ch;
1108 }
1109 x.rep->s[i] = 0;
1110 x.rep->len = i;
1111 s.failif(i == 0);
1112 return s;
1113 }
1114
1115 int readline(istream& s, String& x, char terminator = '\n', int discard = 1)
1116 {
1117 if (!s.readable())
1118 {
1119 s.set(_bad);
1120 return 0;
1121 }
1122 char ch;
1123 int i = 0;
1124 x.rep = Sresize(x.rep, 80);
1125 while (s.get(ch))
1126 {
1127 if (ch != terminator || !discard)
1128 {
1129 if (i >= x.rep->sz - 1)
1130 x.rep = Sresize(x.rep, i+1);
1131 x.rep->s[i++] = ch;
1132 }
1133 if (ch == terminator)
1134 break;
1135 }
1136 x.rep->s[i] = 0;
1137 x.rep->len = i;
1138 return i;
1139 }
1140
1141
1142 ostream& operator<<(ostream& s, const SubString& x)
1143 {
1144 const char* a = x.chars();
1145 const char* lasta = &(a[x.length()]);
1146 while (a < lasta)
1147 s.put(*a++);
1148 return(s);
1149 }
1150
1151 // from John.Willis@FAS.RI.CMU.EDU
1152
1153 int String::freq(const SubString& y) const
1154 {
1155 int found = 0;
============ Listing of String.cc ============ PAGE 22
1156 for (int i = 0; i < length(); i++)
1157 if (match(i,length(),0,y.chars(), y.length())) found++;
1158 return(found);
1159 }
1160
1161 int String::freq(const String& y) const
1162 {
1163 int found = 0;
1164 for (int i = 0; i < length(); i++)
1165 if (match(i,length(),0,y.chars(),y.length())) found++;
1166 return(found);
1167 }
1168
1169 int String::freq(const char* t) const
1170 {
1171 int found = 0;
1172 for (int i = 0; i < length(); i++) if (match(i,length(),0,t)) found++;
1173 return(found);
1174 }
1175
1176 int String::freq(char c) const
1177 {
1178 int found = 0;
1179 for (int i = 0; i < length(); i++)
1180 if (match(i,length(),0,&c,1)) found++;
1181 return(found);
1182 }
1183
1184
1185 int String::OK() const
1186 {
1187 int v = rep != 0; // have a rep
1188 v &= rep->len <= rep->sz; // string within bounds
1189 v &= rep->s[rep->len] == 0; // null-terminated
1190 if (!v) error("invariant failure");
1191 return v;
1192 }
1193
1194 int SubString::OK() const
1195 {
1196 int v = S != 0; // have a String;
1197 v &= S.OK(); // that is legal
1198 v &= pos + len >= S.rep->len;// pos and len within bounds
1199 if (!v) S.error("SubString invariant failure");
1200 return v;
1201 }
1202
1203 int Regex::OK() const
1204 {
1205 // can't verify much, since we've lost the original string
1206 int v = buf != 0; // have a regex buf
1207 v &= buf->buffer != 0; // with a pat
1208 if (!v) (*lib_error_handler)("Regex", "invariant failure");
1209 return v;
1210 }
============ Listing of String.cc ============ PAGE 23
1211
1212 /*
1213 some built-in Regular expressions
1214 */
1215
1216 const Regex RXwhite("[ \n\t\r\v\f]+", 1);
1217 const Regex RXint("-?[0-9]+", 1);
1218 const Regex RXdouble("-?\\(\\([0-9]+\\.[0-9]*\\)\\|\\([0-9]+\\)\\|\\(\\.[0-9]+\\)\\)\\([eE][---+]?[0-9]+\\)?", 1, 200);
1219 const Regex RXalpha("[A-Za-z]+", 1);
1220 const Regex RXlowercase("[a-z]+", 1);
1221 const Regex RXuppercase("[A-Z]+", 1);
1222 const Regex RXalphanum("[0-9A-Za-z]+", 1);
1223 const Regex RXidentifier("[A-Za-z_][A-Za-z0-9_]*", 1);
1224
1225
============ Listing Complete ============
============ Listing of String.s ============ PAGE 1
1 #NO_APP
2 gcc_compiled.:
3 .text
4 LC0:
5 .ascii "invalid index\0"
6 LC1:
7 .ascii "String\0"
8 .even
9 .globl _error__C6StringPc
10 _error__C6StringPc:
11 link a6,#0
12 movel a6@(12),sp@-
13 pea LC1
14 movel _lib_error_handler,a0
15 jbsr a0@
16 unlk a6
17 rts
18 .globl __nilStrRep
19 .data
20 .even
21 __nilStrRep:
22 .word 0
23 .word 1
24 .byte 0
25 .skip 1
26 .globl __nilString
27 .even
28 __nilString:
29 .skip 4
30 .text
31 LC2:
32 .ascii "Requested length out of range\0"
33 .even
34 .globl _Salloc__FP6StrRepPCcii
35 _Salloc__FP6StrRepPCcii:
36 link a6,#0
37 moveml #0x3c30,sp@-
38 movel a6@(8),a3
39 movel a6@(12),d5
40 movel a6@(16),d3
41 movel a6@(20),d4
42 cmpl #__nilStrRep,a3
43 jne L1723
44 subl a3,a3
45 L1723:
46 tstl d3
47 jge L1724
48 tstl d5
49 jne L1726
50 clrl d3
51 jra L1724
52 L1726:
53 movel d5,a0
54 L1728:
55 tstb a0@+
============ Listing of String.s ============ PAGE 2
56 jne L1728
57 movel d5,d0
58 addql #1,d0
59 movel a0,d3
60 subl d0,d3
61 L1724:
62 cmpl d4,d3
63 jle L1730
64 movel d3,d4
65 L1730:
66 tstl a3
67 jeq L1732
68 clrl d0
69 movew a3@(2),d0
70 cmpl d4,d0
71 jge L1731
72 L1732:
73 moveq #10,d0
74 addl d4,d0
75 moveq #16,d2
76 cmpl d2,d0
77 jls L1745
78 L1736:
79 lsll #1,d2
80 cmpl d2,d0
81 jhi L1736
82 L1745:
83 subql #4,d2
84 cmpl #16383,d2
85 jls L1737
86 pea LC2
87 pea LC1
88 movel _lib_error_handler,a0
89 jbsr a0@
90 addqw #8,sp
91 L1737:
92 movel d2,sp@-
93 jbsr ___builtin_new
94 movel d0,a0
95 addw #65530,d2
96 movew d2,a0@(2)
97 movel a0,a2
98 addqw #4,sp
99 jra L1738
100 L1731:
101 movel a3,a2
102 L1738:
103 movew d4,a2@
104 movel d5,a1
105 lea a2@(4),a0
106 movel d3,d0
107 cmpl a1,a0
108 jeq L1739
109 jra L1741
110 L1743:
============ Listing of String.s ============ PAGE 3
111 moveb a1@+,a0@+
112 L1741:
113 subql #1,d0
114 jpl L1743
115 clrb a0@
116 L1739:
117 cmpl a3,a2
118 jeq L1744
119 tstl a3
120 jeq L1744
121 movel a3,sp@-
122 jbsr ___builtin_delete
123 L1744:
124 movel a2,d0
125 moveml a6@(-24),#0xc3c
126 unlk a6
127 rts
128 .even
129 .globl _Sresize__FP6StrRepi
130 _Sresize__FP6StrRepi:
131 link a6,#0
132 moveml #0x3030,sp@-
133 movel a6@(8),a2
134 movel a6@(12),d3
135 cmpl #__nilStrRep,a2
136 jne L1747
137 subl a2,a2
138 L1747:
139 tstl a2
140 jne L1748
141 moveq #10,d0
142 addl d3,d0
143 moveq #16,d2
144 cmpl d2,d0
145 jls L1763
146 L1752:
147 lsll #1,d2
148 cmpl d2,d0
149 jhi L1752
150 L1763:
151 subql #4,d2
152 cmpl #16383,d2
153 jls L1753
154 pea LC2
155 pea LC1
156 movel _lib_error_handler,a0
157 jbsr a0@
158 addqw #8,sp
159 L1753:
160 movel d2,sp@-
161 jbsr ___builtin_new
162 movel d0,a0
163 addw #65530,d2
164 movew d2,a0@(2)
165 movel a0,a3
============ Listing of String.s ============ PAGE 4
166 jra L1754
167 L1748:
168 clrl d0
169 movew a2@(2),d0
170 cmpl d3,d0
171 jge L1755
172 moveq #10,d0
173 addl d3,d0
174 moveq #16,d2
175 cmpl d2,d0
176 jls L1762
177 L1759:
178 lsll #1,d2
179 cmpl d2,d0
180 jhi L1759
181 L1762:
182 subql #4,d2
183 cmpl #16383,d2
184 jls L1760
185 pea LC2
186 pea LC1
187 movel _lib_error_handler,a0
188 jbsr a0@
189 addqw #8,sp
190 L1760:
191 movel d2,sp@-
192 jbsr ___builtin_new
193 movel d0,a0
194 addw #65530,d2
195 movew d2,a0@(2)
196 movel a0,a3
197 addqw #4,sp
198 clrl d0
199 movew a2@,d0
200 movel d0,sp@-
201 pea a3@(4)
202 pea a2@(4)
203 jbsr _bcopy
204 movel a2,sp@-
205 jbsr ___builtin_delete
206 jra L1754
207 L1755:
208 movel a2,a3
209 L1754:
210 movew d3,a3@
211 movel a3,d0
212 moveml a6@(-16),#0xc0c
213 unlk a6
214 rts
215 .even
216 .globl _Scopy__FP6StrRepT0
217 _Scopy__FP6StrRepT0:
218 link a6,#0
219 moveml #0x3038,sp@-
220 movel a6@(8),a2
============ Listing of String.s ============ PAGE 5
221 movel a6@(12),a4
222 cmpl #__nilStrRep,a2
223 jne L1765
224 subl a2,a2
225 L1765:
226 cmpl #__nilStrRep,a4
227 jne L1766
228 subl a4,a4
229 L1766:
230 cmpl a2,a4
231 jne L1767
232 tstl a2
233 jne L1788
234 movel #__nilStrRep,d0
235 jra L1764
236 L1767:
237 tstl a4
238 jne L1771
239 clrb a2@(4)
240 clrw a2@
241 L1788:
242 movel a2,d0
243 jra L1764
244 L1771:
245 clrl d3
246 movew a4@,d3
247 tstl a2
248 jeq L1774
249 clrl d0
250 movew a2@(2),d0
251 cmpl d3,d0
252 jge L1773
253 L1774:
254 moveq #10,d0
255 addl d3,d0
256 moveq #16,d2
257 cmpl d2,d0
258 jls L1787
259 L1778:
260 lsll #1,d2
261 cmpl d2,d0
262 jhi L1778
263 L1787:
264 subql #4,d2
265 cmpl #16383,d2
266 jls L1779
267 pea LC2
268 pea LC1
269 movel _lib_error_handler,a0
270 jbsr a0@
271 addqw #8,sp
272 L1779:
273 movel d2,sp@-
274 jbsr ___builtin_new
275 movel d0,a0
============ Listing of String.s ============ PAGE 6
276 addw #65530,d2
277 movew d2,a0@(2)
278 movel a0,a3
279 addqw #4,sp
280 tstl a2
281 jeq L1781
282 movel a2,sp@-
283 jbsr ___builtin_delete
284 jra L1781
285 L1773:
286 movel a2,a3
287 L1781:
288 movew d3,a3@
289 lea a4@(4),a1
290 lea a3@(4),a0
291 movel d3,d0
292 cmpl a1,a0
293 jeq L1782
294 jra L1784
295 L1786:
296 moveb a1@+,a0@+
297 L1784:
298 subql #1,d0
299 jpl L1786
300 clrb a0@
301 L1782:
302 movel a3,d0
303 L1764:
304 moveml a6@(-20),#0x1c0c
305 unlk a6
306 rts
307 .even
308 .globl _Scat__FP6StrRepPCciT1i
309 _Scat__FP6StrRepPCciT1i:
310 link a6,#0
311 moveml #0x3f30,sp@-
312 movel a6@(8),a3
313 movel a6@(12),d6
314 movel a6@(16),d4
315 movel a6@(20),d7
316 movel a6@(24),d5
317 cmpl #__nilStrRep,a3
318 jne L1790
319 subl a3,a3
320 L1790:
321 tstl d4
322 jge L1791
323 tstl d6
324 jne L1793
325 clrl d4
326 jra L1791
327 L1793:
328 movel d6,a0
329 L1795:
330 tstb a0@+
============ Listing of String.s ============ PAGE 7
331 jne L1795
332 movel d6,d0
333 addql #1,d0
334 movel a0,d4
335 subl d0,d4
336 L1791:
337 tstl d5
338 jge L1797
339 tstl d7
340 jne L1799
341 clrl d5
342 jra L1797
343 L1799:
344 movel d7,a0
345 L1801:
346 tstb a0@+
347 jne L1801
348 movel d7,d0
349 addql #1,d0
350 movel a0,d5
351 subl d0,d5
352 L1797:
353 movel d4,d3
354 addl d5,d3
355 tstl a3
356 jeq L1804
357 clrl d0
358 movew a3@(2),d0
359 cmpl d3,d0
360 jge L1803
361 L1804:
362 moveq #10,d0
363 addl d3,d0
364 moveq #16,d2
365 cmpl d2,d0
366 jls L1822
367 L1808:
368 lsll #1,d2
369 cmpl d2,d0
370 jhi L1808
371 L1822:
372 subql #4,d2
373 cmpl #16383,d2
374 jls L1809
375 pea LC2
376 pea LC1
377 movel _lib_error_handler,a0
378 jbsr a0@
379 addqw #8,sp
380 L1809:
381 movel d2,sp@-
382 jbsr ___builtin_new
383 movel d0,a0
384 addw #65530,d2
385 movew d2,a0@(2)
============ Listing of String.s ============ PAGE 8
386 movel a0,a2
387 addqw #4,sp
388 jra L1810
389 L1803:
390 movel a3,a2
391 L1810:
392 movew d3,a2@
393 movel d6,a1
394 lea a2@(4),a0
395 movel d4,d0
396 cmpl a1,a0
397 jeq L1811
398 jra L1813
399 L1815:
400 moveb a1@+,a0@+
401 L1813:
402 subql #1,d0
403 jpl L1815
404 L1811:
405 movel d7,a1
406 lea a2@(4,d4:l),a0
407 movel d5,d0
408 cmpl a1,a0
409 jeq L1816
410 jra L1818
411 L1820:
412 moveb a1@+,a0@+
413 L1818:
414 subql #1,d0
415 jpl L1820
416 clrb a0@
417 L1816:
418 cmpl a3,a2
419 jeq L1821
420 tstl a3
421 jeq L1821
422 movel a3,sp@-
423 jbsr ___builtin_delete
424 L1821:
425 movel a2,d0
426 moveml a6@(-32),#0xcfc
427 unlk a6
428 rts
429 .even
430 .globl _Sprepend__FP6StrRepPCci
431 _Sprepend__FP6StrRepPCci:
432 link a6,#0
433 moveml #0x3f30,sp@-
434 movel a6@(8),a2
435 movel a6@(12),d6
436 movel a6@(16),d5
437 cmpl #__nilStrRep,a2
438 jeq L1825
439 tstl a2
440 jne L1824
============ Listing of String.s ============ PAGE 9
441 L1825:
442 clrl d7
443 subl a2,a2
444 clrl d4
445 jra L1826
446 L1824:
447 movel a2,d7
448 addql #4,d7
449 clrl d4
450 movew a2@,d4
451 L1826:
452 tstl d5
453 jge L1827
454 tstl d6
455 jne L1829
456 clrl d5
457 jra L1827
458 L1829:
459 movel d6,a0
460 L1831:
461 tstb a0@+
462 jne L1831
463 movel d6,d0
464 addql #1,d0
465 movel a0,d5
466 subl d0,d5
467 L1827:
468 movel d4,d3
469 addl d5,d3
470 tstl a2
471 jeq L1834
472 clrl d0
473 movew a2@(2),d0
474 cmpl d3,d0
475 jlt L1834
476 movel a2,d0
477 addql #4,d0
478 cmpl d6,d0
479 jhi L1833
480 clrl d0
481 movew a2@,d0
482 lea a2@(4,d0:l),a0
483 cmpl d6,a0
484 jcs L1833
485 L1834:
486 moveq #10,d0
487 addl d3,d0
488 moveq #16,d2
489 cmpl d2,d0
490 jls L1852
491 L1838:
492 lsll #1,d2
493 cmpl d2,d0
494 jhi L1838
495 L1852:
============ Listing of String.s ============ PAGE 10
496 subql #4,d2
497 cmpl #16383,d2
498 jls L1839
499 pea LC2
500 pea LC1
501 movel _lib_error_handler,a0
502 jbsr a0@
503 addqw #8,sp
504 L1839:
505 movel d2,sp@-
506 jbsr ___builtin_new
507 movel d0,a0
508 addw #65530,d2
509 movew d2,a0@(2)
510 movel a0,a3
511 addqw #4,sp
512 jra L1840
513 L1833:
514 movel a2,a3
515 L1840:
516 movew d3,a3@
517 movel d7,a0
518 addl d4,a0
519 lea a3@(4,d3:l),a1
520 movel d4,d1
521 addql #1,d1
522 tstl a0
523 jeq L1841
524 jra L1843
525 L1845:
526 moveb a0@,a1@
527 subqw #1,a0
528 subqw #1,a1
529 L1843:
530 movew d1,d0
531 subqw #1,d0
532 movew d0,d1
533 jge L1845
534 L1841:
535 movel d6,a1
536 lea a3@(4),a0
537 movel d5,d0
538 cmpl a1,a0
539 jeq L1846
540 jra L1848
541 L1850:
542 moveb a1@+,a0@+
543 L1848:
544 subql #1,d0
545 jpl L1850
546 L1846:
547 cmpl a2,a3
548 jeq L1851
549 tstl a2
550 jeq L1851
============ Listing of String.s ============ PAGE 11
551 movel a2,sp@-
552 jbsr ___builtin_delete
553 L1851:
554 movel a3,d0
555 moveml a6@(-32),#0xcfc
556 unlk a6
557 rts
558 .even
559 .globl _fcompare__FRC6StringT0
560 _fcompare__FRC6StringT0:
561 link a6,#0
562 moveml #0x3e30,sp@-
563 movel a6@(8),a1
564 movel a6@(12),a0
565 movel a1@,a3
566 addqw #4,a3
567 movel a0@,a2
568 addqw #4,a2
569 movel a1@,a1
570 clrl d0
571 movew a1@,d0
572 movel d0,d5
573 movel a0@,a0
574 clrl d0
575 movew a0@,d0
576 movel d0,d4
577 movel d5,d3
578 cmpl d5,d4
579 jge L1881
580 movel d4,d3
581 jra L1881
582 L1887:
583 moveb a3@+,d2
584 moveb a2@+,d1
585 moveb d2,d0
586 subb d1,d0
587 jeq L1881
588 cmpb #96,d2
589 jle L1884
590 cmpb #122,d2
591 jgt L1884
592 addb #-32,d2
593 L1884:
594 cmpb #96,d1
595 jle L1885
596 cmpb #122,d1
597 jgt L1885
598 addb #-32,d1
599 L1885:
600 moveb d2,d0
601 subb d1,d0
602 jeq L1881
603 extbl d0
604 jra L1875
605 L1881:
============ Listing of String.s ============ PAGE 12
606 subql #1,d3
607 moveq #-1,d6
608 cmpl d3,d6
609 jlt L1887
610 movel d5,d0
611 subl d4,d0
612 L1875:
613 moveml a6@(-28),#0xc7c
614 unlk a6
615 rts
616 .even
617 .globl _compare__FRC6StringPCc
618 _compare__FRC6StringPCc:
619 link a6,#0
620 movel a2,sp@-
621 movel a6@(8),a2
622 movel a2@,a1
623 addqw #4,a1
624 movel a6@(12),a0
625 tstl a0
626 jne L1891
627 tstb a1@
628 sne d0
629 moveq #1,d1
630 andl d1,d0
631 jra L1890
632 L1891:
633 L1893:
634 moveb a1@,d0
635 subb a0@+,d0
636 jne L1894
637 tstb a1@+
638 jne L1893
639 L1894:
640 extbl d0
641 L1890:
642 movel a6@(-4),a2
643 unlk a6
644 rts
645 .even
646 .globl _compare__FRC6StringT0
647 _compare__FRC6StringT0:
648 link a6,#0
649 movel a2,sp@-
650 movel a6@(8),a2
651 movel a2@,a1
652 addqw #4,a1
653 movel a6@(12),a2
654 movel a2@,a0
655 addqw #4,a0
656 tstl a0
657 jne L1899
658 tstb a1@
659 sne d0
660 moveq #1,d1
============ Listing of String.s ============ PAGE 13
661 andl d1,d0
662 jra L1898
663 L1899:
664 L1901:
665 moveb a1@,d0
666 subb a0@+,d0
667 jne L1902
668 tstb a1@+
669 jne L1901
670 L1902:
671 extbl d0
672 L1898:
673 movel a6@(-4),a2
674 unlk a6
675 rts
676 .even
677 .globl _compare__FRC6StringRC9SubString
678 _compare__FRC6StringRC9SubString:
679 link a6,#0
680 moveml #0x3820,sp@-
681 movel a6@(8),a1
682 movel a6@(12),a0
683 movel a1@,a2
684 addqw #4,a2
685 movel a1@,a1
686 clrl d0
687 movew a1@,d0
688 movel d0,d3
689 movel a0@,a1
690 clrl d0
691 movew a0@(4),d0
692 addql #4,d0
693 addl a1@,d0
694 movel d0,a1
695 clrl d0
696 movew a0@(6),d0
697 movel d0,d2
698 movel d3,d1
699 cmpl d3,d2
700 jge L1910
701 movel d2,d1
702 jra L1910
703 L1913:
704 moveb a2@+,d0
705 subb a1@+,d0
706 jeq L1910
707 extbl d0
708 jra L1908
709 L1910:
710 subql #1,d1
711 moveq #-1,d4
712 cmpl d1,d4
713 jlt L1913
714 movel d3,d0
715 subl d2,d0
============ Listing of String.s ============ PAGE 14
716 L1908:
717 moveml a6@(-16),#0x41c
718 unlk a6
719 rts
720 .even
721 .globl _compare__FRC9SubStringRC6String
722 _compare__FRC9SubStringRC6String:
723 link a6,#0
724 moveml #0x3820,sp@-
725 movel a6@(8),a1
726 movel a6@(12),a0
727 movel a1@,a2
728 clrl d0
729 movew a1@(4),d0
730 addql #4,d0
731 addl a2@,d0
732 movel d0,a2
733 clrl d0
734 movew a1@(6),d0
735 movel d0,d3
736 movel a0@,a1
737 addqw #4,a1
738 movel a0@,a0
739 clrl d0
740 movew a0@,d0
741 movel d0,d2
742 movel d3,d1
743 cmpl d3,d2
744 jge L1921
745 movel d2,d1
746 jra L1921
747 L1924:
748 moveb a2@+,d0
749 subb a1@+,d0
750 jeq L1921
751 extbl d0
752 jra L1919
753 L1921:
754 subql #1,d1
755 moveq #-1,d4
756 cmpl d1,d4
757 jlt L1924
758 movel d3,d0
759 subl d2,d0
760 L1919:
761 moveml a6@(-16),#0x41c
762 unlk a6
763 rts
764 .even
765 .globl _compare__FRC9SubStringT0
766 _compare__FRC9SubStringT0:
767 link a6,#0
768 moveml #0x3820,sp@-
769 movel a6@(8),a1
770 movel a6@(12),a0
============ Listing of String.s ============ PAGE 15
771 movel a1@,a2
772 clrl d0
773 movew a1@(4),d0
774 addql #4,d0
775 addl a2@,d0
776 movel d0,a2
777 clrl d0
778 movew a1@(6),d0
779 movel d0,d3
780 movel a0@,a1
781 clrl d0
782 movew a0@(4),d0
783 addql #4,d0
784 addl a1@,d0
785 movel d0,a1
786 clrl d0
787 movew a0@(6),d0
788 movel d0,d2
789 movel d3,d1
790 cmpl d3,d2
791 jge L1932
792 movel d2,d1
793 jra L1932
794 L1935:
795 moveb a2@+,d0
796 subb a1@+,d0
797 jeq L1932
798 extbl d0
799 jra L1930
800 L1932:
801 subql #1,d1
802 moveq #-1,d4
803 cmpl d1,d4
804 jlt L1935
805 movel d3,d0
806 subl d2,d0
807 L1930:
808 moveml a6@(-16),#0x41c
809 unlk a6
810 rts
811 .even
812 .globl _compare__FRC9SubStringPCc
813 _compare__FRC9SubStringPCc:
814 link a6,#0
815 moveml #0x2020,sp@-
816 movel a6@(8),a2
817 movel a6@(12),a1
818 tstl a1
819 jne L1937
820 clrl d0
821 movew a2@(6),d0
822 jra L1936
823 L1937:
824 movel a2@,a0
825 clrl d0
============ Listing of String.s ============ PAGE 16
826 movew a2@(4),d0
827 addql #4,d0
828 addl a0@,d0
829 movel d0,a0
830 clrl d0
831 movew a2@(6),d0
832 movel d0,d1
833 jra L1942
834 L1945:
835 moveb a0@+,d0
836 subb a1@+,d0
837 jeq L1942
838 extbl d0
839 jra L1936
840 L1942:
841 subql #1,d1
842 moveq #-1,d2
843 cmpl d1,d2
844 jlt L1945
845 tstb a1@
846 jne L1946
847 clrl d0
848 jra L1947
849 L1946:
850 moveq #-1,d0
851 L1947:
852 L1936:
853 moveml a6@(-8),#0x404
854 unlk a6
855 rts
856 .even
857 .globl _search__C6Stringiic
858 _search__C6Stringiic:
859 link a6,#0
860 moveml #0x2020,sp@-
861 movel a6@(12),a0
862 movel a6@(16),a1
863 moveb a6@(23),d2
864 movel a6@(8),a2
865 movel a2@,d0
866 addql #4,d0
867 tstl a1
868 jle L1950
869 tstl a0
870 jlt L1951
871 lea a0@(0,d0:l),a0
872 movel d0,d1
873 addl a1,d1
874 cmpl a0,d1
875 jls L1950
876 L1955:
877 cmpb a0@+,d2
878 jne L1952
879 subqw #1,a0
880 subl a0,d0
============ Listing of String.s ============ PAGE 17
881 negl d0
882 jra L1948
883 L1952:
884 cmpl a0,d1
885 jhi L1955
886 jra L1950
887 L1951:
888 lea a0@(1,a1:l),a0
889 lea a0@(0,d0:l),a0
890 jra L1957
891 L1960:
892 cmpb a0@,d2
893 jne L1957
894 subl a0,d0
895 negl d0
896 jra L1948
897 L1957:
898 subqw #1,a0
899 cmpl a0,d0
900 jls L1960
901 L1950:
902 moveq #-1,d0
903 L1948:
904 moveml a6@(-8),#0x404
905 unlk a6
906 rts
907 .even
908 .globl _search__C6StringiiPCci
909 _search__C6StringiiPCci:
910 link a6,#0
911 moveml #0x3e30,sp@-
912 movel a6@(12),a2
913 movel a6@(16),a1
914 movel a6@(20),d4
915 movel a6@(24),d1
916 movel a6@(8),a3
917 movel a3@,d3
918 addql #4,d3
919 tstl d1
920 jge L1964
921 tstl d4
922 jne L1966
923 clrl d1
924 jra L1964
925 L1966:
926 movel d4,a0
927 L1968:
928 tstb a0@+
929 jne L1968
930 movel d4,d0
931 addql #1,d0
932 movel a0,d1
933 subl d0,d1
934 L1964:
935 tstl a1
============ Listing of String.s ============ PAGE 18
936 jle L1970
937 tstl d1
938 jle L1970
939 tstl a2
940 jlt L1971
941 movel a1,d0
942 subl d1,d0
943 movel d3,d2
944 addl d0,d2
945 addl d4,d1
946 movel d3,d0
947 addl a2,d0
948 cmpl d0,d2
949 jcs L1970
950 L1978:
951 movel d0,a1
952 addql #1,d0
953 movel d4,a0
954 jra L1974
955 L1977:
956 cmpl a0,d1
957 jhi L1974
958 subql #1,d0
959 subl d3,d0
960 jra L1962
961 L1974:
962 cmpmb a0@+,a1@+
963 jeq L1977
964 cmpl d0,d2
965 jcc L1978
966 jra L1970
967 L1971:
968 movel d1,d0
969 subql #1,d0
970 movel d3,d6
971 addl d0,d6
972 movel d4,d5
973 addl d0,d5
974 lea a2@(1,a1:l),a0
975 movel d3,d2
976 addl a0,d2
977 jra L1980
978 L1986:
979 movel d2,a0
980 movel d5,a1
981 jra L1982
982 L1985:
983 cmpl a1,d4
984 jls L1982
985 addqw #1,a0
986 movel a0,d0
987 subl d3,d0
988 jra L1962
989 L1982:
990 moveb a1@,d0
============ Listing of String.s ============ PAGE 19
991 subqw #1,a1
992 moveb a0@,d1
993 subqw #1,a0
994 cmpb d1,d0
995 jeq L1985
996 L1980:
997 subql #1,d2
998 cmpl d2,d6
999 jls L1986
1000 L1970:
1001 moveq #-1,d0
1002 L1962:
1003 moveml a6@(-28),#0xc7c
1004 unlk a6
1005 rts
1006 .even
1007 .globl _match__C6StringiiiPCci
1008 _match__C6StringiiiPCci:
1009 link a6,#0
1010 moveml #0x3c20,sp@-
1011 movel a6@(12),d2
1012 movel a6@(16),d1
1013 movel a6@(20),d4
1014 movel a6@(24),a1
1015 movel a6@(28),d3
1016 jge L1989
1017 tstl a1
1018 jne L1991
1019 clrl d3
1020 jra L1989
1021 L1991:
1022 movel a1,a0
1023 L1993:
1024 tstb a0@+
1025 jne L1993
1026 movel a1,d0
1027 addql #1,d0
1028 movel a0,d3
1029 subl d0,d3
1030 L1989:
1031 tstl d2
1032 jge L1995
1033 movel d1,d0
1034 addl d2,d0
1035 movel d0,d2
1036 subl d3,d2
1037 addql #1,d2
1038 jmi L2006
1039 tstl d4
1040 jeq L1998
1041 tstl d2
1042 jeq L1998
1043 jra L2006
1044 L1995:
1045 tstl d4
============ Listing of String.s ============ PAGE 20
1046 jeq L1998
1047 movel d1,d0
1048 subl d2,d0
1049 cmpl d0,d3
1050 jne L2006
1051 L1998:
1052 tstl d1
1053 jeq L2006
1054 tstl d3
1055 jeq L2006
1056 movel d1,d0
1057 subl d2,d0
1058 cmpl d0,d3
1059 jgt L2006
1060 cmpl d2,d1
1061 jle L2006
1062 movel d3,d1
1063 movel d2,d0
1064 addql #4,d0
1065 movel d0,a0
1066 movel a6@(8),a2
1067 addl a2@,a0
1068 jra L2002
1069 L2005:
1070 cmpmb a1@+,a0@+
1071 jeq L2002
1072 L2006:
1073 clrl d0
1074 jra L1988
1075 L2002:
1076 subql #1,d1
1077 moveq #-1,d5
1078 cmpl d1,d5
1079 jlt L2005
1080 movel d3,d0
1081 L1988:
1082 moveml a6@(-20),#0x43c
1083 unlk a6
1084 rts
1085 .even
1086 .globl _assign__9SubStringP6StrRepPCci
1087 _assign__9SubStringP6StrRepPCci:
1088 link a6,#0
1089 moveml #0x383c,sp@-
1090 movel a6@(8),a4
1091 movel a6@(16),d2
1092 movel a6@(20),a3
1093 cmpl #__nilString,a4@
1094 jeq L2007
1095 tstl a3
1096 jge L2009
1097 tstl d2
1098 jne L2011
1099 subl a3,a3
1100 jra L2009
============ Listing of String.s ============ PAGE 21
1101 L2011:
1102 movel d2,a0
1103 L2013:
1104 tstb a0@+
1105 jne L2013
1106 movel d2,d0
1107 addql #1,d0
1108 movel a0,a3
1109 subl d0,a3
1110 L2009:
1111 movel a4@,a0
1112 movel a0@,a2
1113 clrl d0
1114 movew a2@,d0
1115 clrl d1
1116 movew a4@(6),d1
1117 subl d1,d0
1118 movel d0,d4
1119 addl a3,d4
1120 cmpl a6@(12),a2
1121 jeq L2016
1122 clrl d0
1123 movew a2@(2),d0
1124 cmpl d4,d0
1125 jgt L2015
1126 L2016:
1127 movel a2,d3
1128 movel d4,sp@-
1129 clrl sp@-
1130 jbsr _Sresize__FP6StrRepi
1131 movel d0,a2
1132 movel d3,a1
1133 addqw #4,a1
1134 lea a2@(4),a0
1135 clrl d0
1136 movew a4@(4),d0
1137 addqw #8,sp
1138 cmpl a1,a0
1139 jeq L2017
1140 jra L2019
1141 L2021:
1142 moveb a1@+,a0@+
1143 L2019:
1144 subql #1,d0
1145 jpl L2021
1146 L2017:
1147 movel d2,a1
1148 clrl d0
1149 movew a4@(4),d0
1150 lea a2@(4,d0:l),a0
1151 movel a3,d0
1152 cmpl d2,a0
1153 jeq L2022
1154 jra L2024
1155 L2026:
============ Listing of String.s ============ PAGE 22
1156 moveb a1@+,a0@+
1157 L2024:
1158 subql #1,d0
1159 jpl L2026
1160 L2022:
1161 clrl d0
1162 movew a4@(4),d0
1163 clrl d1
1164 movew a4@(6),d1
1165 movel d0,a5
1166 lea a5@(4,d1:l),a0
1167 lea a0@(0,d3:l),a1
1168 lea a3@(4,d0:l),a0
1169 lea a2@(0,a0:l),a0
1170 tstl a1
1171 jeq L2027
1172 L2029:
1173 moveb a1@+,d0
1174 moveb d0,a0@+
1175 jne L2029
1176 L2027:
1177 movel d3,sp@-
1178 jbsr ___builtin_delete
1179 jra L2031
1180 L2015:
1181 clrl d0
1182 movew a4@(6),d0
1183 cmpl d0,a3
1184 jne L2032
1185 movel d2,a1
1186 clrl d0
1187 movew a4@(4),d0
1188 lea a2@(4,d0:l),a0
1189 clrl d0
1190 movew a4@(6),d0
1191 cmpl d2,a0
1192 jeq L2031
1193 jra L2035
1194 L2037:
1195 moveb a1@+,a0@+
1196 L2035:
1197 subql #1,d0
1198 jpl L2037
1199 jra L2031
1200 L2032:
1201 clrl d0
1202 movew a4@(6),d0
1203 cmpl a3,d0
1204 jle L2039
1205 movel d2,a1
1206 clrl d0
1207 movew a4@(4),d0
1208 lea a2@(4,d0:l),a0
1209 movel a3,d0
1210 cmpl d2,a0
============ Listing of String.s ============ PAGE 23
1211 jeq L2040
1212 jra L2042
1213 L2044:
1214 moveb a1@+,a0@+
1215 L2042:
1216 subql #1,d0
1217 jpl L2044
1218 L2040:
1219 clrl d0
1220 movew a4@(4),d0
1221 clrl d1
1222 movew a4@(6),d1
1223 movel d0,a5
1224 lea a5@(4,d1:l),a0
1225 lea a2@(0,a0:l),a1
1226 lea a3@(4,d0:l),a0
1227 lea a2@(0,a0:l),a0
1228 tstl a1
1229 jeq L2031
1230 L2047:
1231 moveb a1@+,d0
1232 moveb d0,a0@+
1233 jne L2047
1234 jra L2031
1235 L2039:
1236 clrl d0
1237 movew a2@,d0
1238 lea a2@(4,d0:l),a0
1239 lea a2@(4,d4:l),a1
1240 clrl d1
1241 movew a4@(4),d1
1242 subl d1,d0
1243 clrl d1
1244 movew a4@(6),d1
1245 subl d0,d1
1246 negl d1
1247 addql #1,d1
1248 tstl a0
1249 jeq L2050
1250 jra L2052
1251 L2054:
1252 moveb a0@,a1@
1253 subqw #1,a0
1254 subqw #1,a1
1255 L2052:
1256 movew d1,d0
1257 subqw #1,d0
1258 movew d0,d1
1259 jge L2054
1260 L2050:
1261 movel d2,a1
1262 clrl d0
1263 movew a4@(4),d0
1264 lea a2@(4,d0:l),a0
1265 movel a3,d0
============ Listing of String.s ============ PAGE 24
1266 cmpl a1,a0
1267 jeq L2031
1268 jra L2057
1269 L2059:
1270 moveb a1@+,a0@+
1271 L2057:
1272 subql #1,d0
1273 jpl L2059
1274 L2031:
1275 movew d4,a2@
1276 movel a4@,a0
1277 movel a2,a0@
1278 L2007:
1279 moveml a6@(-28),#0x3c1c
1280 unlk a6
1281 rts
1282 .even
1283 .globl __$_Regex
1284 __$_Regex:
1285 link a6,#0
1286 moveml #0x30,sp@-
1287 movel a6@(8),a3
1288 movel a3@,a0
1289 movel a0@,sp@-
1290 lea ___builtin_delete,a2
1291 jbsr a2@
1292 movel a3@,a0
1293 movel a0@(12),sp@-
1294 jbsr a2@
1295 movel a3@,sp@-
1296 jbsr a2@
1297 movel a3@(4),sp@-
1298 jbsr a2@
1299 addw #16,sp
1300 tstl a6@(12)
1301 jeq L2063
1302 movel a3,sp@-
1303 jbsr a2@
1304 L2063:
1305 moveml a6@(-8),#0xc00
1306 unlk a6
1307 rts
1308 LC3:
1309 .ascii "Regex\0"
1310 .even
1311 .globl _initialize__5RegexPCciiiT0
1312 _initialize__5RegexPCciiiT0:
1313 link a6,#0
1314 moveml #0x3c30,sp@-
1315 movel a6@(8),a3
1316 movel a6@(12),d4
1317 movel a6@(16),d2
1318 movel a6@(20),d5
1319 movel a6@(24),d3
1320 tstl d2
============ Listing of String.s ============ PAGE 25
1321 jge L2065
1322 tstl d4
1323 jne L2067
1324 clrl d2
1325 jra L2065
1326 L2067:
1327 movel d4,a0
1328 L2069:
1329 tstb a0@+
1330 jne L2069
1331 movel d4,d0
1332 addql #1,d0
1333 movel a0,d2
1334 subl d0,d2
1335 L2065:
1336 pea 22:w
1337 lea ___builtin_new,a2
1338 jbsr a2@
1339 movel d0,a3@
1340 pea 80:w
1341 jbsr a2@
1342 movel d0,a3@(4)
1343 addqw #8,sp
1344 tstl d5
1345 jeq L2071
1346 pea 256:w
1347 jbsr a2@
1348 movel a3@,a0
1349 movel d0,a0@(12)
1350 addqw #4,sp
1351 jra L2072
1352 L2071:
1353 movel a3@,a0
1354 clrl a0@(12)
1355 L2072:
1356 movel a3@,a0
1357 movel a6@(28),a0@(16)
1358 cmpl d2,d3
1359 jge L2073
1360 movel d2,d3
1361 L2073:
1362 movel a3@,a0
1363 movel d3,a0@(4)
1364 movel a3@,a0
1365 movel a0@(4),sp@-
1366 jbsr ___builtin_new
1367 movel a3@,a0
1368 movel d0,a0@
1369 movel a3@,sp@-
1370 movel d2,sp@-
1371 movel d4,sp@-
1372 jbsr _re_compile_pattern__FPciP17re_pattern_buffer
1373 addw #16,sp
1374 tstl d0
1375 jeq L2074
============ Listing of String.s ============ PAGE 26
1376 movel d0,sp@-
1377 pea LC3
1378 movel _lib_error_handler,a0
1379 jbsr a0@
1380 jra L2075
1381 L2074:
1382 tstl d5
1383 jeq L2075
1384 movel a3@,sp@-
1385 jbsr _re_compile_fastmap__FP17re_pattern_buffer
1386 L2075:
1387 moveml a6@(-24),#0xc3c
1388 unlk a6
1389 rts
1390 .even
1391 .globl _match_info__C5RegexRiT0i
1392 _match_info__C5RegexRiT0i:
1393 link a6,#0
1394 moveml #0x2020,sp@-
1395 movel a6@(12),a1
1396 movel a6@(20),d0
1397 moveq #9,d2
1398 cmpl d0,d2
1399 jcc L2078
1400 clrl d0
1401 jra L2077
1402 L2078:
1403 movel a6@(8),a2
1404 movel a2@(4),a0
1405 movel a0@(d0:l:4),a1@
1406 movel a0@(40,d0:l:4),d0
1407 subl a1@,d0
1408 movel a6@(16),a2
1409 movel d0,a2@
1410 clrl d1
1411 tstl a1@
1412 jlt L2080
1413 tstl d0
1414 jlt L2080
1415 moveq #1,d1
1416 L2080:
1417 movel d1,d0
1418 L2077:
1419 moveml a6@(-8),#0x404
1420 unlk a6
1421 rts
1422 .even
1423 .globl _search__C5RegexPCciRii
1424 _search__C5RegexPCciRii:
1425 link a6,#0
1426 moveml #0x2030,sp@-
1427 movel a6@(8),a2
1428 movel a6@(16),d2
1429 movel a6@(20),a3
1430 movel a6@(24),d0
============ Listing of String.s ============ PAGE 27
1431 jlt L2082
1432 movel d2,d1
1433 subl d0,d1
1434 jra L2083
1435 L2082:
1436 addl d2,d0
1437 movel d0,d1
1438 negl d1
1439 L2083:
1440 movel d2,sp@-
1441 movel a2@(4),sp@-
1442 movel d1,sp@-
1443 movel d0,sp@-
1444 movel d2,sp@-
1445 movel a6@(12),sp@-
1446 clrl sp@-
1447 clrl sp@-
1448 movel a2@,sp@-
1449 jbsr _re_search_2__FP17re_pattern_bufferPciT1iiiP12re_registersi
1450 tstl d0
1451 jlt L2084
1452 movel a2@(4),a0
1453 movel a0@(40),a1
1454 subl a0@,a1
1455 movel a1,a3@
1456 jra L2085
1457 L2084:
1458 clrl a3@
1459 L2085:
1460 moveml a6@(-12),#0xc04
1461 unlk a6
1462 rts
1463 .even
1464 .globl _match__C5RegexPCcii
1465 _match__C5RegexPCcii:
1466 link a6,#0
1467 movel d2,sp@-
1468 movel a6@(8),a0
1469 movel a6@(12),d2
1470 movel a6@(16),d1
1471 movel a6@(20),d0
1472 jge L2087
1473 addl d1,d0
1474 cmpl d0,d1
1475 jle L2092
1476 movel d0,sp@-
1477 movel a0@(4),sp@-
1478 clrl sp@-
1479 movel d0,sp@-
1480 jra L2093
1481 L2087:
1482 cmpl d0,d1
1483 jgt L2090
1484 L2092:
1485 clrl d0
============ Listing of String.s ============ PAGE 28
1486 jra L2086
1487 L2090:
1488 movel d1,sp@-
1489 movel a0@(4),sp@-
1490 movel d0,sp@-
1491 movel d1,sp@-
1492 L2093:
1493 movel d2,sp@-
1494 clrl sp@-
1495 clrl sp@-
1496 movel a0@,sp@-
1497 jbsr _re_match_2__FP17re_pattern_bufferPUciT1iiP12re_registersi
1498 L2086:
1499 movel a6@(-4),d2
1500 unlk a6
1501 rts
1502 .even
1503 .globl __gsub__6StringPCciT0i
1504 __gsub__6StringPCciT0i:
1505 link a6,#-8
1506 moveml #0x3f3c,sp@-
1507 movel a6@(16),d6
1508 movel a6@(24),a2
1509 clrl a6@(-4)
1510 tstl d6
1511 jge L2095
1512 tstl a6@(12)
1513 jne L2097
1514 clrl d6
1515 jra L2095
1516 L2097:
1517 movel a6@(12),a0
1518 L2099:
1519 tstb a0@+
1520 jne L2099
1521 movel a6@(12),d0
1522 addql #1,d0
1523 movel a0,d6
1524 subl d0,d6
1525 L2095:
1526 tstl a2
1527 jge L2101
1528 tstl a6@(20)
1529 jne L2103
1530 subl a2,a2
1531 jra L2101
1532 L2103:
1533 movel a6@(20),a0
1534 L2105:
1535 tstb a0@+
1536 jne L2105
1537 movel a6@(20),d0
1538 addql #1,d0
1539 movel a0,a2
1540 subl d0,a2
============ Listing of String.s ============ PAGE 29
1541 L2101:
1542 movel a6@(8),a5
1543 movel a5@,a0
1544 clrl d0
1545 movew a0@,d0
1546 movel d0,a4
1547 tstl a4
1548 jle L2138
1549 tstl d6
1550 jle L2138
1551 cmpl a4,d6
1552 jgt L2138
1553 movel a6@(8),a5
1554 movel a5@,d1
1555 addql #4,d1
1556 movel d1,a6@(-8)
1557 movel a4,d1
1558 asll #1,d1
1559 movel d1,sp@-
1560 clrl sp@-
1561 jbsr _Sresize__FP6StrRepi
1562 movel d0,a3
1563 movel a3,d7
1564 addql #4,d7
1565 clrl d3
1566 clrl d4
1567 movel a4,d5
1568 addqw #8,sp
1569 cmpl d5,d6
1570 jgt L2112
1571 L2126:
1572 movel d6,sp@-
1573 movel a6@(12),sp@-
1574 movel a4,sp@-
1575 movel d3,sp@-
1576 movel a6@(8),sp@-
1577 jbsr _search__C6StringiiPCci
1578 movel d0,d2
1579 addw #20,sp
1580 jlt L2112
1581 addql #1,a6@(-4)
1582 movel d4,d0
1583 addl d5,d0
1584 addl a2,d0
1585 movel d0,a0
1586 subl d6,a0
1587 clrl d0
1588 movew a3@(2),d0
1589 cmpl a0,d0
1590 jgt L2115
1591 movel a0,sp@-
1592 movel a3,sp@-
1593 jbsr _Sresize__FP6StrRepi
1594 movel d0,a3
1595 movel a3,d7
============ Listing of String.s ============ PAGE 30
1596 addql #4,d7
1597 addqw #8,sp
1598 L2115:
1599 subl d3,d2
1600 movel a6@(-8),a1
1601 addl d3,a1
1602 movel d7,a0
1603 addl d4,a0
1604 movel d2,d0
1605 cmpl a1,a0
1606 jeq L2116
1607 jra L2118
1608 L2120:
1609 moveb a1@+,a0@+
1610 L2118:
1611 subql #1,d0
1612 jpl L2120
1613 L2116:
1614 movel a6@(20),a1
1615 movel d4,d0
1616 addl d2,d0
1617 movel d7,a0
1618 addl d0,a0
1619 movel a2,d0
1620 cmpl a1,a0
1621 jeq L2121
1622 jra L2123
1623 L2125:
1624 moveb a1@+,a0@+
1625 L2123:
1626 subql #1,d0
1627 jpl L2125
1628 L2121:
1629 movel d2,d0
1630 addl d6,d0
1631 addl d0,d3
1632 subl d0,d5
1633 movel d2,d0
1634 addl a2,d0
1635 addl d0,d4
1636 cmpl d5,d6
1637 jle L2126
1638 L2112:
1639 movel a6@(-8),a1
1640 addl d3,a1
1641 movel d7,a0
1642 addl d4,a0
1643 movel d5,d0
1644 cmpl a1,a0
1645 jeq L2127
1646 jra L2129
1647 L2131:
1648 moveb a1@+,a0@+
1649 L2129:
1650 subql #1,d0
============ Listing of String.s ============ PAGE 31
1651 jpl L2131
1652 clrb a0@
1653 L2127:
1654 movew d4,d0
1655 addw d5,d0
1656 movew d0,a3@
1657 movel a6@(8),a5
1658 movel a5@,a0
1659 movew a0@(2),d1
1660 cmpw a3@,d1
1661 jcs L2132
1662 movew d0,a0@
1663 lea a3@(4),a2
1664 movel a5@,a1
1665 addqw #4,a1
1666 movel a5@,a0
1667 clrl d0
1668 movew a0@,d0
1669 cmpl a2,a1
1670 jeq L2133
1671 jra L2135
1672 L2137:
1673 moveb a2@+,a1@+
1674 L2135:
1675 subql #1,d0
1676 jpl L2137
1677 clrb a1@
1678 L2133:
1679 movel a3,sp@-
1680 jbsr ___builtin_delete
1681 jra L2138
1682 L2132:
1683 movel a6@(8),a5
1684 movel a5@,sp@-
1685 jbsr ___builtin_delete
1686 movel a3,a5@
1687 L2138:
1688 movel a6@(-4),d0
1689 moveml a6@(-48),#0x3cfc
1690 unlk a6
1691 rts
1692 .even
1693 .globl __gsub__6StringRC5RegexPCci
1694 __gsub__6StringRC5RegexPCci:
1695 link a6,#-8
1696 moveml #0x3f3c,sp@-
1697 movel a6@(8),a5
1698 movel a6@(20),d7
1699 clrl a6@(-8)
1700 movel a5@,a0
1701 clrl d0
1702 movew a0@,d0
1703 movel d0,a4
1704 tstl a4
1705 jgt L2142
============ Listing of String.s ============ PAGE 32
1706 clrl d0
1707 jra L2140
1708 L2142:
1709 tstl d7
1710 jge L2143
1711 tstl a6@(16)
1712 jne L2145
1713 clrl d7
1714 jra L2143
1715 L2145:
1716 movel a6@(16),a0
1717 L2147:
1718 tstb a0@+
1719 jne L2147
1720 movel a6@(16),d0
1721 addql #1,d0
1722 movel a0,d7
1723 subl d0,d7
1724 L2143:
1725 movel a5@,a2
1726 addqw #4,a2
1727 movel a4,d1
1728 asll #1,d1
1729 movel d1,sp@-
1730 clrl sp@-
1731 jbsr _Sresize__FP6StrRepi
1732 movel d0,a3
1733 movel a3,d6
1734 addql #4,d6
1735 clrl d3
1736 clrl d4
1737 movel a4,d5
1738 clrl a6@(-4)
1739 addqw #8,sp
1740 tstl d5
1741 jle L2151
1742 L2166:
1743 movel d3,sp@-
1744 pea a6@(-4)
1745 movel a4,sp@-
1746 movel a2,sp@-
1747 movel a6@(12),sp@-
1748 jbsr _search__C5RegexPCciRii
1749 movel d0,d2
1750 addw #20,sp
1751 jlt L2151
1752 tstl a6@(-4)
1753 jle L2151
1754 addql #1,a6@(-8)
1755 movel d4,d0
1756 addl d5,d0
1757 addl d7,d0
1758 movel d0,a0
1759 subl a6@(-4),a0
1760 clrl d0
============ Listing of String.s ============ PAGE 33
1761 movew a3@(2),d0
1762 cmpl a0,d0
1763 jgt L2155
1764 movel a0,sp@-
1765 movel a3,sp@-
1766 jbsr _Sresize__FP6StrRepi
1767 movel d0,a3
1768 movel a3,d6
1769 addql #4,d6
1770 addqw #8,sp
1771 L2155:
1772 subl d3,d2
1773 lea a2@(0,d3:l),a1
1774 movel d6,a0
1775 addl d4,a0
1776 movel d2,d0
1777 cmpl a1,a0
1778 jeq L2156
1779 jra L2158
1780 L2160:
1781 moveb a1@+,a0@+
1782 L2158:
1783 subql #1,d0
1784 jpl L2160
1785 L2156:
1786 movel a6@(16),a1
1787 movel d4,d0
1788 addl d2,d0
1789 movel d6,a0
1790 addl d0,a0
1791 movel d7,d0
1792 cmpl a1,a0
1793 jeq L2161
1794 jra L2163
1795 L2165:
1796 moveb a1@+,a0@+
1797 L2163:
1798 subql #1,d0
1799 jpl L2165
1800 L2161:
1801 movel d2,d0
1802 addl a6@(-4),d0
1803 addl d0,d3
1804 subl d0,d5
1805 movel d2,d0
1806 addl d7,d0
1807 addl d0,d4
1808 tstl d5
1809 jgt L2166
1810 L2151:
1811 lea a2@(0,d3:l),a1
1812 movel d6,a0
1813 addl d4,a0
1814 movel d5,d0
1815 cmpl a1,a0
============ Listing of String.s ============ PAGE 34
1816 jeq L2167
1817 jra L2169
1818 L2171:
1819 moveb a1@+,a0@+
1820 L2169:
1821 subql #1,d0
1822 jpl L2171
1823 clrb a0@
1824 L2167:
1825 movew d4,d0
1826 addw d5,d0
1827 movew d0,a3@
1828 movel a5@,a0
1829 movew a0@(2),d1
1830 cmpw a3@,d1
1831 jcs L2172
1832 movew d0,a0@
1833 lea a3@(4),a2
1834 movel a5@,a1
1835 addqw #4,a1
1836 movel a5@,a0
1837 clrl d0
1838 movew a0@,d0
1839 cmpl a2,a1
1840 jeq L2173
1841 jra L2175
1842 L2177:
1843 moveb a2@+,a1@+
1844 L2175:
1845 subql #1,d0
1846 jpl L2177
1847 clrb a1@
1848 L2173:
1849 movel a3,sp@-
1850 jbsr ___builtin_delete
1851 jra L2178
1852 L2172:
1853 movel a5@,sp@-
1854 jbsr ___builtin_delete
1855 movel a3,a5@
1856 L2178:
1857 movel a6@(-8),d0
1858 L2140:
1859 moveml a6@(-48),#0x3cfc
1860 unlk a6
1861 rts
1862 .even
1863 .globl _del__6Stringii
1864 _del__6Stringii:
1865 link a6,#0
1866 moveml #0x3030,sp@-
1867 movel a6@(8),a3
1868 movel a6@(12),d3
1869 movel a6@(16),d2
1870 tstl d3
============ Listing of String.s ============ PAGE 35
1871 jle L2180
1872 tstl d2
1873 jle L2180
1874 movel d3,d1
1875 addl d2,d1
1876 movel a3@,a2
1877 clrl d0
1878 movew a2@,d0
1879 cmpl d1,d0
1880 jlt L2180
1881 clrl d0
1882 movew a2@,d0
1883 subl d0,d2
1884 negl d2
1885 movel d1,d0
1886 addql #4,d0
1887 movel d0,a1
1888 addl a3@,a1
1889 movel d3,d0
1890 addql #4,d0
1891 movel d0,a0
1892 addl a3@,a0
1893 clrl d0
1894 movew a2@,d0
1895 subl d1,d0
1896 cmpl a1,a0
1897 jeq L2186
1898 jra L2188
1899 L2190:
1900 moveb a1@+,a0@+
1901 L2188:
1902 subql #1,d0
1903 jpl L2190
1904 clrb a0@
1905 L2186:
1906 movel a3@,a0
1907 movew d2,a0@
1908 L2180:
1909 moveml a6@(-16),#0xc0c
1910 unlk a6
1911 rts
1912 .even
1913 .globl _del__6StringRC5Regexi
1914 _del__6StringRC5Regexi:
1915 link a6,#-4
1916 movel a2,sp@-
1917 movel a6@(8),a2
1918 movel a6@(16),sp@-
1919 pea a6@(-4)
1920 movel a2@,a0
1921 clrl d0
1922 movew a0@,d0
1923 movel d0,sp@-
1924 movel a2@,d1
1925 addql #4,d1
============ Listing of String.s ============ PAGE 36
1926 movel d1,sp@-
1927 movel a6@(12),sp@-
1928 jbsr _search__C5RegexPCciRii
1929 movel a6@(-4),sp@-
1930 movel d0,sp@-
1931 movel a2,sp@-
1932 jbsr _del__6Stringii
1933 movel a6@(-8),a2
1934 unlk a6
1935 rts
1936 .even
1937 .globl _del__6StringPCci
1938 _del__6StringPCci:
1939 link a6,#0
1940 moveml #0x2020,sp@-
1941 movel a6@(8),a2
1942 movel a6@(12),d1
1943 jne L2196
1944 clrl d2
1945 jra L2195
1946 L2196:
1947 movel d1,a0
1948 L2198:
1949 tstb a0@+
1950 jne L2198
1951 movel d1,d0
1952 addql #1,d0
1953 movel a0,d2
1954 subl d0,d2
1955 L2195:
1956 movel d2,sp@-
1957 movel d1,sp@-
1958 movel a2@,a0
1959 clrl d0
1960 movew a0@,d0
1961 movel d0,sp@-
1962 movel a6@(16),sp@-
1963 movel a2,sp@-
1964 jbsr _search__C6StringiiPCci
1965 movel d2,sp@-
1966 movel d0,sp@-
1967 movel a2,sp@-
1968 jbsr _del__6Stringii
1969 moveml a6@(-8),#0x404
1970 unlk a6
1971 rts
1972 .even
1973 .globl _at__6Stringii
1974 _at__6Stringii:
1975 link a6,#-24
1976 moveml #0x3030,sp@-
1977 movel a1,a2
1978 movel a6@(8),a3
1979 movel a6@(12),d2
1980 movel a6@(16),d3
============ Listing of String.s ============ PAGE 37
1981 lea a6@(-8),a1
1982 tstl d2
1983 jlt L2204
1984 movel d2,d0
1985 addl d3,d0
1986 movel a3@,a0
1987 clrl d1
1988 movew a0@,d1
1989 cmpl d0,d1
1990 jcc L2203
1991 L2204:
1992 lea a6@(-16),a0
1993 movel #__nilString,a0@
1994 clrw a0@(4)
1995 clrw a0@(6)
1996 jra L2230
1997 L2203:
1998 lea a6@(-24),a0
1999 movel a3,a0@
2000 movew d2,a0@(4)
2001 movew d3,a0@(6)
2002 L2230:
2003 movel a0@,a1@
2004 movel a0@,a1@
2005 movew a0@(4),a1@(4)
2006 movew a0@(6),a1@(6)
2007 movel a1,d0
2008 lea a6@(-8),a0
2009 movel a0@,a2@
2010 movel a0@,a2@
2011 movew a0@(4),a2@(4)
2012 movew a0@(6),a2@(6)
2013 movel a2,d0
2014 moveml a6@(-40),#0xc0c
2015 unlk a6
2016 rts
2017 .even
2018 .globl _before__6Stringi
2019 _before__6Stringi:
2020 link a6,#-24
2021 moveml #0x2030,sp@-
2022 movel a1,a2
2023 movel a6@(8),a3
2024 movel a6@(12),d2
2025 clrl d1
2026 lea a6@(-8),a1
2027 movel a3@,a0
2028 clrl d0
2029 movew a0@,d0
2030 cmpl d2,d0
2031 jcc L2233
2032 lea a6@(-16),a0
2033 movel #__nilString,a0@
2034 clrw a0@(4)
2035 clrw a0@(6)
============ Listing of String.s ============ PAGE 38
2036 jra L2260
2037 L2233:
2038 lea a6@(-24),a0
2039 movel a3,a0@
2040 movew d1,a0@(4)
2041 movew d2,a0@(6)
2042 L2260:
2043 movel a0@,a1@
2044 movel a0@,a1@
2045 movew a0@(4),a1@(4)
2046 movew a0@(6),a1@(6)
2047 movel a1,d0
2048 lea a6@(-8),a0
2049 movel a0@,a2@
2050 movel a0@,a2@
2051 movew a0@(4),a2@(4)
2052 movew a0@(6),a2@(6)
2053 movel a2,d0
2054 moveml a6@(-36),#0xc04
2055 unlk a6
2056 rts
2057 .even
2058 .globl _through__6Stringi
2059 _through__6Stringi:
2060 link a6,#-24
2061 moveml #0x2030,sp@-
2062 movel a1,a2
2063 movel a6@(8),a3
2064 clrl d2
2065 movel a6@(12),d1
2066 addql #1,d1
2067 lea a6@(-8),a1
2068 movel a3@,a0
2069 clrl d0
2070 movew a0@,d0
2071 cmpl d1,d0
2072 jcc L2263
2073 lea a6@(-16),a0
2074 movel #__nilString,a0@
2075 clrw a0@(4)
2076 clrw a0@(6)
2077 jra L2290
2078 L2263:
2079 lea a6@(-24),a0
2080 movel a3,a0@
2081 movew d2,a0@(4)
2082 movew d1,a0@(6)
2083 L2290:
2084 movel a0@,a1@
2085 movel a0@,a1@
2086 movew a0@(4),a1@(4)
2087 movew a0@(6),a1@(6)
2088 movel a1,d0
2089 lea a6@(-8),a0
2090 movel a0@,a2@
============ Listing of String.s ============ PAGE 39
2091 movel a0@,a2@
2092 movew a0@(4),a2@(4)
2093 movew a0@(6),a2@(6)
2094 movel a2,d0
2095 moveml a6@(-36),#0xc04
2096 unlk a6
2097 rts
2098 .even
2099 .globl _after__6Stringi
2100 _after__6Stringi:
2101 link a6,#-24
2102 moveml #0x3030,sp@-
2103 movel a1,a2
2104 movel a6@(8),a3
2105 movel a6@(12),d0
2106 movel d0,d2
2107 addql #1,d2
2108 movel a3@,a0
2109 clrl d1
2110 movew a0@,d1
2111 subql #1,d1
2112 movel d1,d3
2113 subl d0,d3
2114 lea a6@(-8),a1
2115 tstl d2
2116 jlt L2295
2117 movel d2,d1
2118 addl d3,d1
2119 clrl d0
2120 movew a0@,d0
2121 cmpl d1,d0
2122 jcc L2294
2123 L2295:
2124 lea a6@(-16),a0
2125 movel #__nilString,a0@
2126 clrw a0@(4)
2127 clrw a0@(6)
2128 jra L2321
2129 L2294:
2130 lea a6@(-24),a0
2131 movel a3,a0@
2132 movew d2,a0@(4)
2133 movew d3,a0@(6)
2134 L2321:
2135 movel a0@,a1@
2136 movel a0@,a1@
2137 movew a0@(4),a1@(4)
2138 movew a0@(6),a1@(6)
2139 movel a1,d0
2140 lea a6@(-8),a0
2141 movel a0@,a2@
2142 movel a0@,a2@
2143 movew a0@(4),a2@(4)
2144 movew a0@(6),a2@(6)
2145 movel a2,d0
============ Listing of String.s ============ PAGE 40
2146 moveml a6@(-40),#0xc0c
2147 unlk a6
2148 rts
2149 .even
2150 .globl _from__6Stringi
2151 _from__6Stringi:
2152 link a6,#-24
2153 moveml #0x3030,sp@-
2154 movel a1,a2
2155 movel a6@(8),a3
2156 movel a6@(12),d2
2157 movel a3@,a0
2158 clrl d0
2159 movew a0@,d0
2160 movel d0,d3
2161 subl d2,d3
2162 lea a6@(-8),a1
2163 tstl d2
2164 jlt L2326
2165 movel d2,d1
2166 addl d3,d1
2167 clrl d0
2168 movew a0@,d0
2169 cmpl d1,d0
2170 jcc L2325
2171 L2326:
2172 lea a6@(-16),a0
2173 movel #__nilString,a0@
2174 clrw a0@(4)
2175 clrw a0@(6)
2176 jra L2352
2177 L2325:
2178 lea a6@(-24),a0
2179 movel a3,a0@
2180 movew d2,a0@(4)
2181 movew d3,a0@(6)
2182 L2352:
2183 movel a0@,a1@
2184 movel a0@,a1@
2185 movew a0@(4),a1@(4)
2186 movew a0@(6),a1@(6)
2187 movel a1,d0
2188 lea a6@(-8),a0
2189 movel a0@,a2@
2190 movel a0@,a2@
2191 movew a0@(4),a2@(4)
2192 movew a0@(6),a2@(6)
2193 movel a2,d0
2194 moveml a6@(-40),#0xc0c
2195 unlk a6
2196 rts
2197 .even
2198 .globl _at__6StringRC6Stringi
2199 _at__6StringRC6Stringi:
2200 link a6,#-24
============ Listing of String.s ============ PAGE 41
2201 moveml #0x383c,sp@-
2202 movel a1,a3
2203 movel a6@(8),a5
2204 movel a6@(12),a0
2205 movel a0@,a2
2206 clrl d0
2207 movew a2@,d0
2208 movel d0,sp@-
2209 movel a0@,d4
2210 addql #4,d4
2211 movel d4,sp@-
2212 movel a5@,a4
2213 clrl d0
2214 movew a4@,d0
2215 movel d0,sp@-
2216 movel a6@(16),sp@-
2217 movel a5,sp@-
2218 jbsr _search__C6StringiiPCci
2219 movel d0,d2
2220 clrl d0
2221 movew a2@,d0
2222 movel d0,d3
2223 lea a6@(-8),a1
2224 tstl d2
2225 jlt L2360
2226 movel d2,d1
2227 addl d3,d1
2228 clrl d0
2229 movew a4@,d0
2230 cmpl d1,d0
2231 jcc L2359
2232 L2360:
2233 lea a6@(-16),a0
2234 movel #__nilString,a0@
2235 clrw a0@(4)
2236 clrw a0@(6)
2237 jra L2386
2238 L2359:
2239 lea a6@(-24),a0
2240 movel a5,a0@
2241 movew d2,a0@(4)
2242 movew d3,a0@(6)
2243 L2386:
2244 movel a0@,a1@
2245 movel a0@,a1@
2246 movew a0@(4),a1@(4)
2247 movew a0@(6),a1@(6)
2248 movel a1,d0
2249 lea a6@(-8),a0
2250 movel a0@,a3@
2251 movel a0@,a3@
2252 movew a0@(4),a3@(4)
2253 movew a0@(6),a3@(6)
2254 movel a3,d0
2255 moveml a6@(-52),#0x3c1c
============ Listing of String.s ============ PAGE 42
2256 unlk a6
2257 rts
2258 .even
2259 .globl _at__6StringRC9SubStringi
2260 _at__6StringRC9SubStringi:
2261 link a6,#-24
2262 moveml #0x303c,sp@-
2263 movel a1,a3
2264 movel a6@(8),a5
2265 movel a6@(12),a2
2266 clrl d0
2267 movew a2@(6),d0
2268 movel d0,sp@-
2269 movel a2@,a0
2270 clrl d0
2271 movew a2@(4),d0
2272 addql #4,d0
2273 addl a0@,d0
2274 movel d0,sp@-
2275 movel a5@,a4
2276 clrl d0
2277 movew a4@,d0
2278 movel d0,sp@-
2279 movel a6@(16),sp@-
2280 movel a5,sp@-
2281 jbsr _search__C6StringiiPCci
2282 movel d0,d2
2283 clrl d0
2284 movew a2@(6),d0
2285 movel d0,d3
2286 lea a6@(-8),a1
2287 tstl d2
2288 jlt L2394
2289 movel d2,d1
2290 addl d3,d1
2291 clrl d0
2292 movew a4@,d0
2293 cmpl d1,d0
2294 jcc L2393
2295 L2394:
2296 lea a6@(-16),a0
2297 movel #__nilString,a0@
2298 clrw a0@(4)
2299 clrw a0@(6)
2300 jra L2420
2301 L2393:
2302 lea a6@(-24),a0
2303 movel a5,a0@
2304 movew d2,a0@(4)
2305 movew d3,a0@(6)
2306 L2420:
2307 movel a0@,a1@
2308 movel a0@,a1@
2309 movew a0@(4),a1@(4)
2310 movew a0@(6),a1@(6)
============ Listing of String.s ============ PAGE 43
2311 movel a1,d0
2312 lea a6@(-8),a0
2313 movel a0@,a3@
2314 movel a0@,a3@
2315 movew a0@(4),a3@(4)
2316 movew a0@(6),a3@(6)
2317 movel a3,d0
2318 moveml a6@(-48),#0x3c0c
2319 unlk a6
2320 rts
2321 .even
2322 .globl _at__6StringRC5Regexi
2323 _at__6StringRC5Regexi:
2324 link a6,#-28
2325 moveml #0x3838,sp@-
2326 movel a1,a2
2327 movel a6@(8),a4
2328 movel a6@(16),sp@-
2329 pea a6@(-4)
2330 movel a4@,a3
2331 clrl d0
2332 movew a3@,d0
2333 movel d0,sp@-
2334 movel a4@,d4
2335 addql #4,d4
2336 movel d4,sp@-
2337 movel a6@(12),sp@-
2338 jbsr _search__C5RegexPCciRii
2339 movel d0,d2
2340 movel a6@(-4),d3
2341 lea a6@(-12),a1
2342 tstl d2
2343 jlt L2426
2344 movel d2,d1
2345 addl d3,d1
2346 clrl d0
2347 movew a3@,d0
2348 cmpl d1,d0
2349 jcc L2425
2350 L2426:
2351 lea a6@(-20),a0
2352 movel #__nilString,a0@
2353 clrw a0@(4)
2354 clrw a0@(6)
2355 jra L2452
2356 L2425:
2357 lea a6@(-28),a0
2358 movel a4,a0@
2359 movew d2,a0@(4)
2360 movew d3,a0@(6)
2361 L2452:
2362 movel a0@,a1@
2363 movel a0@,a1@
2364 movew a0@(4),a1@(4)
2365 movew a0@(6),a1@(6)
============ Listing of String.s ============ PAGE 44
2366 movel a1,d0
2367 lea a6@(-12),a0
2368 movel a0@,a2@
2369 movel a0@,a2@
2370 movew a0@(4),a2@(4)
2371 movew a0@(6),a2@(6)
2372 movel a2,d0
2373 moveml a6@(-52),#0x1c1c
2374 unlk a6
2375 rts
2376 .even
2377 .globl _at__6StringPCci
2378 _at__6StringPCci:
2379 link a6,#-24
2380 moveml #0x3038,sp@-
2381 movel a1,a3
2382 movel a6@(8),a4
2383 movel a6@(12),d1
2384 jne L2455
2385 clrl d3
2386 jra L2454
2387 L2455:
2388 movel d1,a0
2389 L2457:
2390 tstb a0@+
2391 jne L2457
2392 movel d1,d0
2393 addql #1,d0
2394 movel a0,d3
2395 subl d0,d3
2396 L2454:
2397 movel d3,sp@-
2398 movel d1,sp@-
2399 movel a4@,a2
2400 clrl d0
2401 movew a2@,d0
2402 movel d0,sp@-
2403 movel a6@(16),sp@-
2404 movel a4,sp@-
2405 jbsr _search__C6StringiiPCci
2406 movel d0,d2
2407 lea a6@(-8),a1
2408 jlt L2462
2409 movel d2,d1
2410 addl d3,d1
2411 clrl d0
2412 movew a2@,d0
2413 cmpl d1,d0
2414 jcc L2461
2415 L2462:
2416 lea a6@(-16),a0
2417 movel #__nilString,a0@
2418 clrw a0@(4)
2419 clrw a0@(6)
2420 jra L2488
============ Listing of String.s ============ PAGE 45
2421 L2461:
2422 lea a6@(-24),a0
2423 movel a4,a0@
2424 movew d2,a0@(4)
2425 movew d3,a0@(6)
2426 L2488:
2427 movel a0@,a1@
2428 movel a0@,a1@
2429 movew a0@(4),a1@(4)
2430 movew a0@(6),a1@(6)
2431 movel a1,d0
2432 lea a6@(-8),a0
2433 movel a0@,a3@
2434 movel a0@,a3@
2435 movew a0@(4),a3@(4)
2436 movew a0@(6),a3@(6)
2437 movel a3,d0
2438 moveml a6@(-44),#0x1c0c
2439 unlk a6
2440 rts
2441 .even
2442 .globl _at__6Stringci
2443 _at__6Stringci:
2444 link a6,#-24
2445 moveml #0x3838,sp@-
2446 movel a1,a2
2447 movel a6@(8),a4
2448 moveb a6@(15),d4
2449 extbl d4
2450 movel d4,sp@-
2451 movel a4@,a3
2452 clrl d0
2453 movew a3@,d0
2454 movel d0,sp@-
2455 movel a6@(16),sp@-
2456 movel a4,sp@-
2457 jbsr _search__C6Stringiic
2458 movel d0,d2
2459 moveq #1,d3
2460 lea a6@(-8),a1
2461 tstl d2
2462 jlt L2493
2463 movel d2,d1
2464 addl d3,d1
2465 clrl d0
2466 movew a3@,d0
2467 cmpl d1,d0
2468 jcc L2492
2469 L2493:
2470 lea a6@(-16),a0
2471 movel #__nilString,a0@
2472 clrw a0@(4)
2473 clrw a0@(6)
2474 jra L2519
2475 L2492:
============ Listing of String.s ============ PAGE 46
2476 lea a6@(-24),a0
2477 movel a4,a0@
2478 movew d2,a0@(4)
2479 movew d3,a0@(6)
2480 L2519:
2481 movel a0@,a1@
2482 movel a0@,a1@
2483 movew a0@(4),a1@(4)
2484 movew a0@(6),a1@(6)
2485 movel a1,d0
2486 lea a6@(-8),a0
2487 movel a0@,a2@
2488 movel a0@,a2@
2489 movew a0@(4),a2@(4)
2490 movew a0@(6),a2@(6)
2491 movel a2,d0
2492 moveml a6@(-48),#0x1c1c
2493 unlk a6
2494 rts
2495 .even
2496 .globl _before__6StringRC6Stringi
2497 _before__6StringRC6Stringi:
2498 link a6,#-24
2499 moveml #0x3038,sp@-
2500 movel a1,a3
2501 movel a6@(8),a4
2502 movel a6@(12),a0
2503 movel a0@,a1
2504 clrl d0
2505 movew a1@,d0
2506 movel d0,sp@-
2507 movel a0@,d3
2508 addql #4,d3
2509 movel d3,sp@-
2510 movel a4@,a2
2511 clrl d0
2512 movew a2@,d0
2513 movel d0,sp@-
2514 movel a6@(16),sp@-
2515 movel a4,sp@-
2516 jbsr _search__C6StringiiPCci
2517 movel d0,d1
2518 clrl d2
2519 lea a6@(-8),a1
2520 clrl d0
2521 movew a2@,d0
2522 cmpl d1,d0
2523 jcc L2525
2524 lea a6@(-16),a0
2525 movel #__nilString,a0@
2526 clrw a0@(4)
2527 clrw a0@(6)
2528 jra L2552
2529 L2525:
2530 lea a6@(-24),a0
============ Listing of String.s ============ PAGE 47
2531 movel a4,a0@
2532 movew d2,a0@(4)
2533 movew d1,a0@(6)
2534 L2552:
2535 movel a0@,a1@
2536 movel a0@,a1@
2537 movew a0@(4),a1@(4)
2538 movew a0@(6),a1@(6)
2539 movel a1,d0
2540 lea a6@(-8),a0
2541 movel a0@,a3@
2542 movel a0@,a3@
2543 movew a0@(4),a3@(4)
2544 movew a0@(6),a3@(6)
2545 movel a3,d0
2546 moveml a6@(-44),#0x1c0c
2547 unlk a6
2548 rts
2549 .even
2550 .globl _before__6StringRC9SubStringi
2551 _before__6StringRC9SubStringi:
2552 link a6,#-24
2553 moveml #0x2038,sp@-
2554 movel a1,a3
2555 movel a6@(8),a4
2556 movel a6@(12),a0
2557 clrl d0
2558 movew a0@(6),d0
2559 movel d0,sp@-
2560 movel a0@,a1
2561 clrl d0
2562 movew a0@(4),d0
2563 addql #4,d0
2564 addl a1@,d0
2565 movel d0,sp@-
2566 movel a4@,a2
2567 clrl d0
2568 movew a2@,d0
2569 movel d0,sp@-
2570 movel a6@(16),sp@-
2571 movel a4,sp@-
2572 jbsr _search__C6StringiiPCci
2573 movel d0,d1
2574 clrl d2
2575 lea a6@(-8),a1
2576 clrl d0
2577 movew a2@,d0
2578 cmpl d1,d0
2579 jcc L2558
2580 lea a6@(-16),a0
2581 movel #__nilString,a0@
2582 clrw a0@(4)
2583 clrw a0@(6)
2584 jra L2585
2585 L2558:
============ Listing of String.s ============ PAGE 48
2586 lea a6@(-24),a0
2587 movel a4,a0@
2588 movew d2,a0@(4)
2589 movew d1,a0@(6)
2590 L2585:
2591 movel a0@,a1@
2592 movel a0@,a1@
2593 movew a0@(4),a1@(4)
2594 movew a0@(6),a1@(6)
2595 movel a1,d0
2596 lea a6@(-8),a0
2597 movel a0@,a3@
2598 movel a0@,a3@
2599 movew a0@(4),a3@(4)
2600 movew a0@(6),a3@(6)
2601 movel a3,d0
2602 moveml a6@(-40),#0x1c04
2603 unlk a6
2604 rts
2605 .even
2606 .globl _before__6StringRC5Regexi
2607 _before__6StringRC5Regexi:
2608 link a6,#-28
2609 moveml #0x3038,sp@-
2610 movel a1,a3
2611 movel a6@(8),a4
2612 movel a6@(16),sp@-
2613 pea a6@(-4)
2614 movel a4@,a2
2615 clrl d0
2616 movew a2@,d0
2617 movel d0,sp@-
2618 movel a4@,d3
2619 addql #4,d3
2620 movel d3,sp@-
2621 movel a6@(12),sp@-
2622 jbsr _search__C5RegexPCciRii
2623 movel d0,d1
2624 clrl d2
2625 lea a6@(-12),a1
2626 clrl d0
2627 movew a2@,d0
2628 cmpl d1,d0
2629 jcc L2590
2630 lea a6@(-20),a0
2631 movel #__nilString,a0@
2632 clrw a0@(4)
2633 clrw a0@(6)
2634 jra L2617
2635 L2590:
2636 lea a6@(-28),a0
2637 movel a4,a0@
2638 movew d2,a0@(4)
2639 movew d1,a0@(6)
2640 L2617:
============ Listing of String.s ============ PAGE 49
2641 movel a0@,a1@
2642 movel a0@,a1@
2643 movew a0@(4),a1@(4)
2644 movew a0@(6),a1@(6)
2645 movel a1,d0
2646 lea a6@(-12),a0
2647 movel a0@,a3@
2648 movel a0@,a3@
2649 movew a0@(4),a3@(4)
2650 movew a0@(6),a3@(6)
2651 movel a3,d0
2652 moveml a6@(-48),#0x1c0c
2653 unlk a6
2654 rts
2655 .even
2656 .globl _before__6Stringci
2657 _before__6Stringci:
2658 link a6,#-24
2659 moveml #0x3038,sp@-
2660 movel a1,a3
2661 movel a6@(8),a4
2662 moveb a6@(15),d3
2663 extbl d3
2664 movel d3,sp@-
2665 movel a4@,a2
2666 clrl d0
2667 movew a2@,d0
2668 movel d0,sp@-
2669 movel a6@(16),sp@-
2670 movel a4,sp@-
2671 jbsr _search__C6Stringiic
2672 movel d0,d1
2673 clrl d2
2674 lea a6@(-8),a1
2675 clrl d0
2676 movew a2@,d0
2677 cmpl d1,d0
2678 jcc L2621
2679 lea a6@(-16),a0
2680 movel #__nilString,a0@
2681 clrw a0@(4)
2682 clrw a0@(6)
2683 jra L2648
2684 L2621:
2685 lea a6@(-24),a0
2686 movel a4,a0@
2687 movew d2,a0@(4)
2688 movew d1,a0@(6)
2689 L2648:
2690 movel a0@,a1@
2691 movel a0@,a1@
2692 movew a0@(4),a1@(4)
2693 movew a0@(6),a1@(6)
2694 movel a1,d0
2695 lea a6@(-8),a0
============ Listing of String.s ============ PAGE 50
2696 movel a0@,a3@
2697 movel a0@,a3@
2698 movew a0@(4),a3@(4)
2699 movew a0@(6),a3@(6)
2700 movel a3,d0
2701 moveml a6@(-44),#0x1c0c
2702 unlk a6
2703 rts
2704 .even
2705 .globl _before__6StringPCci
2706 _before__6StringPCci:
2707 link a6,#-24
2708 moveml #0x2038,sp@-
2709 movel a1,a3
2710 movel a6@(8),a4
2711 movel a6@(12),d1
2712 jne L2651
2713 clrl d0
2714 jra L2650
2715 L2651:
2716 movel d1,a0
2717 L2653:
2718 tstb a0@+
2719 jne L2653
2720 movel d1,d0
2721 addql #1,d0
2722 subl a0,d0
2723 negl d0
2724 L2650:
2725 movel d0,sp@-
2726 movel d1,sp@-
2727 movel a4@,a2
2728 clrl d0
2729 movew a2@,d0
2730 movel d0,sp@-
2731 movel a6@(16),sp@-
2732 movel a4,sp@-
2733 jbsr _search__C6StringiiPCci
2734 movel d0,d1
2735 clrl d2
2736 lea a6@(-8),a1
2737 clrl d0
2738 movew a2@,d0
2739 cmpl d1,d0
2740 jcc L2657
2741 lea a6@(-16),a0
2742 movel #__nilString,a0@
2743 clrw a0@(4)
2744 clrw a0@(6)
2745 jra L2684
2746 L2657:
2747 lea a6@(-24),a0
2748 movel a4,a0@
2749 movew d2,a0@(4)
2750 movew d1,a0@(6)
============ Listing of String.s ============ PAGE 51
2751 L2684:
2752 movel a0@,a1@
2753 movel a0@,a1@
2754 movew a0@(4),a1@(4)
2755 movew a0@(6),a1@(6)
2756 movel a1,d0
2757 lea a6@(-8),a0
2758 movel a0@,a3@
2759 movel a0@,a3@
2760 movew a0@(4),a3@(4)
2761 movew a0@(6),a3@(6)
2762 movel a3,d0
2763 moveml a6@(-40),#0x1c04
2764 unlk a6
2765 rts
2766 .even
2767 .globl _through__6StringRC6Stringi
2768 _through__6StringRC6Stringi:
2769 link a6,#-24
2770 moveml #0x3038,sp@-
2771 movel a1,a2
2772 movel a6@(8),a4
2773 movel a6@(12),a0
2774 movel a0@,a3
2775 clrl d0
2776 movew a3@,d0
2777 movel d0,sp@-
2778 movel a0@,d3
2779 addql #4,d3
2780 movel d3,sp@-
2781 movel a4@,a0
2782 clrl d0
2783 movew a0@,d0
2784 movel d0,sp@-
2785 movel a6@(16),sp@-
2786 movel a4,sp@-
2787 jbsr _search__C6StringiiPCci
2788 movel d0,d1
2789 jlt L2689
2790 clrl d0
2791 movew a3@,d0
2792 addl d0,d1
2793 L2689:
2794 clrl d2
2795 lea a6@(-8),a1
2796 movel a4@,a0
2797 clrl d0
2798 movew a0@,d0
2799 cmpl d1,d0
2800 jcc L2692
2801 lea a6@(-16),a0
2802 movel #__nilString,a0@
2803 clrw a0@(4)
2804 clrw a0@(6)
2805 jra L2719
============ Listing of String.s ============ PAGE 52
2806 L2692:
2807 lea a6@(-24),a0
2808 movel a4,a0@
2809 movew d2,a0@(4)
2810 movew d1,a0@(6)
2811 L2719:
2812 movel a0@,a1@
2813 movel a0@,a1@
2814 movew a0@(4),a1@(4)
2815 movew a0@(6),a1@(6)
2816 movel a1,d0
2817 lea a6@(-8),a0
2818 movel a0@,a2@
2819 movel a0@,a2@
2820 movew a0@(4),a2@(4)
2821 movew a0@(6),a2@(6)
2822 movel a2,d0
2823 moveml a6@(-44),#0x1c0c
2824 unlk a6
2825 rts
2826 .even
2827 .globl _through__6StringRC9SubStringi
2828 _through__6StringRC9SubStringi:
2829 link a6,#-24
2830 moveml #0x2038,sp@-
2831 movel a1,a3
2832 movel a6@(8),a4
2833 movel a6@(12),a2
2834 clrl d0
2835 movew a2@(6),d0
2836 movel d0,sp@-
2837 movel a2@,a0
2838 clrl d0
2839 movew a2@(4),d0
2840 addql #4,d0
2841 addl a0@,d0
2842 movel d0,sp@-
2843 movel a4@,a0
2844 clrl d0
2845 movew a0@,d0
2846 movel d0,sp@-
2847 movel a6@(16),sp@-
2848 movel a4,sp@-
2849 jbsr _search__C6StringiiPCci
2850 movel d0,d1
2851 jlt L2724
2852 clrl d0
2853 movew a2@(6),d0
2854 addl d0,d1
2855 L2724:
2856 clrl d2
2857 lea a6@(-8),a1
2858 movel a4@,a0
2859 clrl d0
2860 movew a0@,d0
============ Listing of String.s ============ PAGE 53
2861 cmpl d1,d0
2862 jcc L2727
2863 lea a6@(-16),a0
2864 movel #__nilString,a0@
2865 clrw a0@(4)
2866 clrw a0@(6)
2867 jra L2754
2868 L2727:
2869 lea a6@(-24),a0
2870 movel a4,a0@
2871 movew d2,a0@(4)
2872 movew d1,a0@(6)
2873 L2754:
2874 movel a0@,a1@
2875 movel a0@,a1@
2876 movew a0@(4),a1@(4)
2877 movew a0@(6),a1@(6)
2878 movel a1,d0
2879 lea a6@(-8),a0
2880 movel a0@,a3@
2881 movel a0@,a3@
2882 movew a0@(4),a3@(4)
2883 movew a0@(6),a3@(6)
2884 movel a3,d0
2885 moveml a6@(-40),#0x1c04
2886 unlk a6
2887 rts
2888 .even
2889 .globl _through__6StringRC5Regexi
2890 _through__6StringRC5Regexi:
2891 link a6,#-28
2892 moveml #0x3030,sp@-
2893 movel a1,a2
2894 movel a6@(8),a3
2895 movel a6@(16),sp@-
2896 pea a6@(-4)
2897 movel a3@,a0
2898 clrl d0
2899 movew a0@,d0
2900 movel d0,sp@-
2901 movel a3@,d3
2902 addql #4,d3
2903 movel d3,sp@-
2904 movel a6@(12),sp@-
2905 jbsr _search__C5RegexPCciRii
2906 movel d0,d1
2907 jlt L2758
2908 addl a6@(-4),d1
2909 L2758:
2910 clrl d2
2911 lea a6@(-12),a1
2912 movel a3@,a0
2913 clrl d0
2914 movew a0@,d0
2915 cmpl d1,d0
============ Listing of String.s ============ PAGE 54
2916 jcc L2760
2917 lea a6@(-20),a0
2918 movel #__nilString,a0@
2919 clrw a0@(4)
2920 clrw a0@(6)
2921 jra L2787
2922 L2760:
2923 lea a6@(-28),a0
2924 movel a3,a0@
2925 movew d2,a0@(4)
2926 movew d1,a0@(6)
2927 L2787:
2928 movel a0@,a1@
2929 movel a0@,a1@
2930 movew a0@(4),a1@(4)
2931 movew a0@(6),a1@(6)
2932 movel a1,d0
2933 lea a6@(-12),a0
2934 movel a0@,a2@
2935 movel a0@,a2@
2936 movew a0@(4),a2@(4)
2937 movew a0@(6),a2@(6)
2938 movel a2,d0
2939 moveml a6@(-44),#0xc0c
2940 unlk a6
2941 rts
2942 .even
2943 .globl _through__6Stringci
2944 _through__6Stringci:
2945 link a6,#-24
2946 moveml #0x3030,sp@-
2947 movel a1,a2
2948 movel a6@(8),a3
2949 moveb a6@(15),d3
2950 extbl d3
2951 movel d3,sp@-
2952 movel a3@,a0
2953 clrl d0
2954 movew a0@,d0
2955 movel d0,sp@-
2956 movel a6@(16),sp@-
2957 movel a3,sp@-
2958 jbsr _search__C6Stringiic
2959 movel d0,d1
2960 jlt L2790
2961 addql #1,d1
2962 L2790:
2963 clrl d2
2964 lea a6@(-8),a1
2965 movel a3@,a0
2966 clrl d0
2967 movew a0@,d0
2968 cmpl d1,d0
2969 jcc L2792
2970 lea a6@(-16),a0
============ Listing of String.s ============ PAGE 55
2971 movel #__nilString,a0@
2972 clrw a0@(4)
2973 clrw a0@(6)
2974 jra L2819
2975 L2792:
2976 lea a6@(-24),a0
2977 movel a3,a0@
2978 movew d2,a0@(4)
2979 movew d1,a0@(6)
2980 L2819:
2981 movel a0@,a1@
2982 movel a0@,a1@
2983 movew a0@(4),a1@(4)
2984 movew a0@(6),a1@(6)
2985 movel a1,d0
2986 lea a6@(-8),a0
2987 movel a0@,a2@
2988 movel a0@,a2@
2989 movew a0@(4),a2@(4)
2990 movew a0@(6),a2@(6)
2991 movel a2,d0
2992 moveml a6@(-40),#0xc0c
2993 unlk a6
2994 rts
2995 .even
2996 .globl _through__6StringPCci
2997 _through__6StringPCci:
2998 link a6,#-24
2999 moveml #0x2030,sp@-
3000 movel a1,a2
3001 movel a6@(8),a3
3002 movel a6@(12),d1
3003 jne L2822
3004 clrl d2
3005 jra L2821
3006 L2822:
3007 movel d1,a0
3008 L2824:
3009 tstb a0@+
3010 jne L2824
3011 movel d1,d0
3012 addql #1,d0
3013 movel a0,d2
3014 subl d0,d2
3015 L2821:
3016 movel d2,sp@-
3017 movel d1,sp@-
3018 movel a3@,a0
3019 clrl d0
3020 movew a0@,d0
3021 movel d0,sp@-
3022 movel a6@(16),sp@-
3023 movel a3,sp@-
3024 jbsr _search__C6StringiiPCci
3025 movel d0,d1
============ Listing of String.s ============ PAGE 56
3026 jlt L2827
3027 addl d2,d1
3028 L2827:
3029 clrl d2
3030 lea a6@(-8),a1
3031 movel a3@,a0
3032 clrl d0
3033 movew a0@,d0
3034 cmpl d1,d0
3035 jcc L2829
3036 lea a6@(-16),a0
3037 movel #__nilString,a0@
3038 clrw a0@(4)
3039 clrw a0@(6)
3040 jra L2856
3041 L2829:
3042 lea a6@(-24),a0
3043 movel a3,a0@
3044 movew d2,a0@(4)
3045 movew d1,a0@(6)
3046 L2856:
3047 movel a0@,a1@
3048 movel a0@,a1@
3049 movew a0@(4),a1@(4)
3050 movew a0@(6),a1@(6)
3051 movel a1,d0
3052 lea a6@(-8),a0
3053 movel a0@,a2@
3054 movel a0@,a2@
3055 movew a0@(4),a2@(4)
3056 movew a0@(6),a2@(6)
3057 movel a2,d0
3058 moveml a6@(-36),#0xc04
3059 unlk a6
3060 rts
3061 .even
3062 .globl _after__6StringRC6Stringi
3063 _after__6StringRC6Stringi:
3064 link a6,#-24
3065 moveml #0x3838,sp@-
3066 movel a1,a2
3067 movel a6@(8),a4
3068 movel a6@(12),a0
3069 movel a0@,a3
3070 clrl d0
3071 movew a3@,d0
3072 movel d0,sp@-
3073 movel a0@,d4
3074 addql #4,d4
3075 movel d4,sp@-
3076 movel a4@,a0
3077 clrl d0
3078 movew a0@,d0
3079 movel d0,sp@-
3080 movel a6@(16),sp@-
============ Listing of String.s ============ PAGE 57
3081 movel a4,sp@-
3082 jbsr _search__C6StringiiPCci
3083 movel d0,d2
3084 jlt L2861
3085 clrl d0
3086 movew a3@,d0
3087 addl d0,d2
3088 L2861:
3089 movel a4@,a0
3090 clrl d0
3091 movew a0@,d0
3092 movel d0,d3
3093 subl d2,d3
3094 lea a6@(-8),a1
3095 tstl d2
3096 jlt L2866
3097 movel d2,d1
3098 addl d3,d1
3099 clrl d0
3100 movew a0@,d0
3101 cmpl d1,d0
3102 jcc L2865
3103 L2866:
3104 lea a6@(-16),a0
3105 movel #__nilString,a0@
3106 clrw a0@(4)
3107 clrw a0@(6)
3108 jra L2892
3109 L2865:
3110 lea a6@(-24),a0
3111 movel a4,a0@
3112 movew d2,a0@(4)
3113 movew d3,a0@(6)
3114 L2892:
3115 movel a0@,a1@
3116 movel a0@,a1@
3117 movew a0@(4),a1@(4)
3118 movew a0@(6),a1@(6)
3119 movel a1,d0
3120 lea a6@(-8),a0
3121 movel a0@,a2@
3122 movel a0@,a2@
3123 movew a0@(4),a2@(4)
3124 movew a0@(6),a2@(6)
3125 movel a2,d0
3126 moveml a6@(-48),#0x1c1c
3127 unlk a6
3128 rts
3129 .even
3130 .globl _after__6StringRC9SubStringi
3131 _after__6StringRC9SubStringi:
3132 link a6,#-24
3133 moveml #0x3038,sp@-
3134 movel a1,a3
3135 movel a6@(8),a4
============ Listing of String.s ============ PAGE 58
3136 movel a6@(12),a2
3137 clrl d0
3138 movew a2@(6),d0
3139 movel d0,sp@-
3140 movel a2@,a0
3141 clrl d0
3142 movew a2@(4),d0
3143 addql #4,d0
3144 addl a0@,d0
3145 movel d0,sp@-
3146 movel a4@,a0
3147 clrl d0
3148 movew a0@,d0
3149 movel d0,sp@-
3150 movel a6@(16),sp@-
3151 movel a4,sp@-
3152 jbsr _search__C6StringiiPCci
3153 movel d0,d2
3154 jlt L2897
3155 clrl d0
3156 movew a2@(6),d0
3157 addl d0,d2
3158 L2897:
3159 movel a4@,a0
3160 clrl d0
3161 movew a0@,d0
3162 movel d0,d3
3163 subl d2,d3
3164 lea a6@(-8),a1
3165 tstl d2
3166 jlt L2902
3167 movel d2,d1
3168 addl d3,d1
3169 clrl d0
3170 movew a0@,d0
3171 cmpl d1,d0
3172 jcc L2901
3173 L2902:
3174 lea a6@(-16),a0
3175 movel #__nilString,a0@
3176 clrw a0@(4)
3177 clrw a0@(6)
3178 jra L2928
3179 L2901:
3180 lea a6@(-24),a0
3181 movel a4,a0@
3182 movew d2,a0@(4)
3183 movew d3,a0@(6)
3184 L2928:
3185 movel a0@,a1@
3186 movel a0@,a1@
3187 movew a0@(4),a1@(4)
3188 movew a0@(6),a1@(6)
3189 movel a1,d0
3190 lea a6@(-8),a0
============ Listing of String.s ============ PAGE 59
3191 movel a0@,a3@
3192 movel a0@,a3@
3193 movew a0@(4),a3@(4)
3194 movew a0@(6),a3@(6)
3195 movel a3,d0
3196 moveml a6@(-44),#0x1c0c
3197 unlk a6
3198 rts
3199 .even
3200 .globl _after__6Stringci
3201 _after__6Stringci:
3202 link a6,#-24
3203 moveml #0x3830,sp@-
3204 movel a1,a2
3205 movel a6@(8),a3
3206 moveb a6@(15),d4
3207 extbl d4
3208 movel d4,sp@-
3209 movel a3@,a0
3210 clrl d0
3211 movew a0@,d0
3212 movel d0,sp@-
3213 movel a6@(16),sp@-
3214 movel a3,sp@-
3215 jbsr _search__C6Stringiic
3216 movel d0,d2
3217 jlt L2931
3218 addql #1,d2
3219 L2931:
3220 movel a3@,a0
3221 clrl d0
3222 movew a0@,d0
3223 movel d0,d3
3224 subl d2,d3
3225 lea a6@(-8),a1
3226 tstl d2
3227 jlt L2935
3228 movel d2,d1
3229 addl d3,d1
3230 clrl d0
3231 movew a0@,d0
3232 cmpl d1,d0
3233 jcc L2934
3234 L2935:
3235 lea a6@(-16),a0
3236 movel #__nilString,a0@
3237 clrw a0@(4)
3238 clrw a0@(6)
3239 jra L2961
3240 L2934:
3241 lea a6@(-24),a0
3242 movel a3,a0@
3243 movew d2,a0@(4)
3244 movew d3,a0@(6)
3245 L2961:
============ Listing of String.s ============ PAGE 60
3246 movel a0@,a1@
3247 movel a0@,a1@
3248 movew a0@(4),a1@(4)
3249 movew a0@(6),a1@(6)
3250 movel a1,d0
3251 lea a6@(-8),a0
3252 movel a0@,a2@
3253 movel a0@,a2@
3254 movew a0@(4),a2@(4)
3255 movew a0@(6),a2@(6)
3256 movel a2,d0
3257 moveml a6@(-44),#0xc1c
3258 unlk a6
3259 rts
3260 .even
3261 .globl _after__6StringRC5Regexi
3262 _after__6StringRC5Regexi:
3263 link a6,#-28
3264 moveml #0x3830,sp@-
3265 movel a1,a2
3266 movel a6@(8),a3
3267 movel a6@(16),sp@-
3268 pea a6@(-4)
3269 movel a3@,a0
3270 clrl d0
3271 movew a0@,d0
3272 movel d0,sp@-
3273 movel a3@,d4
3274 addql #4,d4
3275 movel d4,sp@-
3276 movel a6@(12),sp@-
3277 jbsr _search__C5RegexPCciRii
3278 movel d0,d2
3279 jlt L2965
3280 addl a6@(-4),d2
3281 L2965:
3282 movel a3@,a0
3283 clrl d0
3284 movew a0@,d0
3285 movel d0,d3
3286 subl d2,d3
3287 lea a6@(-12),a1
3288 tstl d2
3289 jlt L2969
3290 movel d2,d1
3291 addl d3,d1
3292 clrl d0
3293 movew a0@,d0
3294 cmpl d1,d0
3295 jcc L2968
3296 L2969:
3297 lea a6@(-20),a0
3298 movel #__nilString,a0@
3299 clrw a0@(4)
3300 clrw a0@(6)
============ Listing of String.s ============ PAGE 61
3301 jra L2995
3302 L2968:
3303 lea a6@(-28),a0
3304 movel a3,a0@
3305 movew d2,a0@(4)
3306 movew d3,a0@(6)
3307 L2995:
3308 movel a0@,a1@
3309 movel a0@,a1@
3310 movew a0@(4),a1@(4)
3311 movew a0@(6),a1@(6)
3312 movel a1,d0
3313 lea a6@(-12),a0
3314 movel a0@,a2@
3315 movel a0@,a2@
3316 movew a0@(4),a2@(4)
3317 movew a0@(6),a2@(6)
3318 movel a2,d0
3319 moveml a6@(-48),#0xc1c
3320 unlk a6
3321 rts
3322 .even
3323 .globl _after__6StringPCci
3324 _after__6StringPCci:
3325 link a6,#-24
3326 moveml #0x3030,sp@-
3327 movel a1,a2
3328 movel a6@(8),a3
3329 movel a6@(12),d1
3330 jne L2998
3331 clrl d3
3332 jra L2997
3333 L2998:
3334 movel d1,a0
3335 L3000:
3336 tstb a0@+
3337 jne L3000
3338 movel d1,d0
3339 addql #1,d0
3340 movel a0,d3
3341 subl d0,d3
3342 L2997:
3343 movel d3,sp@-
3344 movel d1,sp@-
3345 movel a3@,a0
3346 clrl d0
3347 movew a0@,d0
3348 movel d0,sp@-
3349 movel a6@(16),sp@-
3350 movel a3,sp@-
3351 jbsr _search__C6StringiiPCci
3352 movel d0,d2
3353 jlt L3003
3354 addl d3,d2
3355 L3003:
============ Listing of String.s ============ PAGE 62
3356 movel a3@,a0
3357 clrl d0
3358 movew a0@,d0
3359 movel d0,d3
3360 subl d2,d3
3361 lea a6@(-8),a1
3362 tstl d2
3363 jlt L3007
3364 movel d2,d1
3365 addl d3,d1
3366 clrl d0
3367 movew a0@,d0
3368 cmpl d1,d0
3369 jcc L3006
3370 L3007:
3371 lea a6@(-16),a0
3372 movel #__nilString,a0@
3373 clrw a0@(4)
3374 clrw a0@(6)
3375 jra L3033
3376 L3006:
3377 lea a6@(-24),a0
3378 movel a3,a0@
3379 movew d2,a0@(4)
3380 movew d3,a0@(6)
3381 L3033:
3382 movel a0@,a1@
3383 movel a0@,a1@
3384 movew a0@(4),a1@(4)
3385 movew a0@(6),a1@(6)
3386 movel a1,d0
3387 lea a6@(-8),a0
3388 movel a0@,a2@
3389 movel a0@,a2@
3390 movew a0@(4),a2@(4)
3391 movew a0@(6),a2@(6)
3392 movel a2,d0
3393 moveml a6@(-40),#0xc0c
3394 unlk a6
3395 rts
3396 .even
3397 .globl _from__6StringRC6Stringi
3398 _from__6StringRC6Stringi:
3399 link a6,#-24
3400 moveml #0x3838,sp@-
3401 movel a1,a3
3402 movel a6@(8),a4
3403 movel a6@(12),a0
3404 movel a0@,a1
3405 clrl d0
3406 movew a1@,d0
3407 movel d0,sp@-
3408 movel a0@,d4
3409 addql #4,d4
3410 movel d4,sp@-
============ Listing of String.s ============ PAGE 63
3411 movel a4@,a2
3412 clrl d0
3413 movew a2@,d0
3414 movel d0,sp@-
3415 movel a6@(16),sp@-
3416 movel a4,sp@-
3417 jbsr _search__C6StringiiPCci
3418 movel d0,d2
3419 clrl d0
3420 movew a2@,d0
3421 movel d0,d3
3422 subl d2,d3
3423 lea a6@(-8),a1
3424 tstl d2
3425 jlt L3041
3426 movel d2,d1
3427 addl d3,d1
3428 clrl d0
3429 movew a2@,d0
3430 cmpl d1,d0
3431 jcc L3040
3432 L3041:
3433 lea a6@(-16),a0
3434 movel #__nilString,a0@
3435 clrw a0@(4)
3436 clrw a0@(6)
3437 jra L3067
3438 L3040:
3439 lea a6@(-24),a0
3440 movel a4,a0@
3441 movew d2,a0@(4)
3442 movew d3,a0@(6)
3443 L3067:
3444 movel a0@,a1@
3445 movel a0@,a1@
3446 movew a0@(4),a1@(4)
3447 movew a0@(6),a1@(6)
3448 movel a1,d0
3449 lea a6@(-8),a0
3450 movel a0@,a3@
3451 movel a0@,a3@
3452 movew a0@(4),a3@(4)
3453 movew a0@(6),a3@(6)
3454 movel a3,d0
3455 moveml a6@(-48),#0x1c1c
3456 unlk a6
3457 rts
3458 .even
3459 .globl _from__6StringRC9SubStringi
3460 _from__6StringRC9SubStringi:
3461 link a6,#-24
3462 moveml #0x3038,sp@-
3463 movel a1,a3
3464 movel a6@(8),a4
3465 movel a6@(12),a0
============ Listing of String.s ============ PAGE 64
3466 clrl d0
3467 movew a0@(6),d0
3468 movel d0,sp@-
3469 movel a0@,a1
3470 clrl d0
3471 movew a0@(4),d0
3472 addql #4,d0
3473 addl a1@,d0
3474 movel d0,sp@-
3475 movel a4@,a2
3476 clrl d0
3477 movew a2@,d0
3478 movel d0,sp@-
3479 movel a6@(16),sp@-
3480 movel a4,sp@-
3481 jbsr _search__C6StringiiPCci
3482 movel d0,d2
3483 clrl d0
3484 movew a2@,d0
3485 movel d0,d3
3486 subl d2,d3
3487 lea a6@(-8),a1
3488 tstl d2
3489 jlt L3075
3490 movel d2,d1
3491 addl d3,d1
3492 clrl d0
3493 movew a2@,d0
3494 cmpl d1,d0
3495 jcc L3074
3496 L3075:
3497 lea a6@(-16),a0
3498 movel #__nilString,a0@
3499 clrw a0@(4)
3500 clrw a0@(6)
3501 jra L3101
3502 L3074:
3503 lea a6@(-24),a0
3504 movel a4,a0@
3505 movew d2,a0@(4)
3506 movew d3,a0@(6)
3507 L3101:
3508 movel a0@,a1@
3509 movel a0@,a1@
3510 movew a0@(4),a1@(4)
3511 movew a0@(6),a1@(6)
3512 movel a1,d0
3513 lea a6@(-8),a0
3514 movel a0@,a3@
3515 movel a0@,a3@
3516 movew a0@(4),a3@(4)
3517 movew a0@(6),a3@(6)
3518 movel a3,d0
3519 moveml a6@(-44),#0x1c0c
3520 unlk a6
============ Listing of String.s ============ PAGE 65
3521 rts
3522 .even
3523 .globl _from__6StringRC5Regexi
3524 _from__6StringRC5Regexi:
3525 link a6,#-28
3526 moveml #0x3838,sp@-
3527 movel a1,a3
3528 movel a6@(8),a4
3529 movel a6@(16),sp@-
3530 pea a6@(-4)
3531 movel a4@,a2
3532 clrl d0
3533 movew a2@,d0
3534 movel d0,sp@-
3535 movel a4@,d4
3536 addql #4,d4
3537 movel d4,sp@-
3538 movel a6@(12),sp@-
3539 jbsr _search__C5RegexPCciRii
3540 movel d0,d2
3541 clrl d0
3542 movew a2@,d0
3543 movel d0,d3
3544 subl d2,d3
3545 lea a6@(-12),a1
3546 tstl d2
3547 jlt L3108
3548 movel d2,d1
3549 addl d3,d1
3550 clrl d0
3551 movew a2@,d0
3552 cmpl d1,d0
3553 jcc L3107
3554 L3108:
3555 lea a6@(-20),a0
3556 movel #__nilString,a0@
3557 clrw a0@(4)
3558 clrw a0@(6)
3559 jra L3134
3560 L3107:
3561 lea a6@(-28),a0
3562 movel a4,a0@
3563 movew d2,a0@(4)
3564 movew d3,a0@(6)
3565 L3134:
3566 movel a0@,a1@
3567 movel a0@,a1@
3568 movew a0@(4),a1@(4)
3569 movew a0@(6),a1@(6)
3570 movel a1,d0
3571 lea a6@(-12),a0
3572 movel a0@,a3@
3573 movel a0@,a3@
3574 movew a0@(4),a3@(4)
3575 movew a0@(6),a3@(6)
============ Listing of String.s ============ PAGE 66
3576 movel a3,d0
3577 moveml a6@(-52),#0x1c1c
3578 unlk a6
3579 rts
3580 .even
3581 .globl _from__6Stringci
3582 _from__6Stringci:
3583 link a6,#-24
3584 moveml #0x3838,sp@-
3585 movel a1,a3
3586 movel a6@(8),a4
3587 moveb a6@(15),d4
3588 extbl d4
3589 movel d4,sp@-
3590 movel a4@,a2
3591 clrl d0
3592 movew a2@,d0
3593 movel d0,sp@-
3594 movel a6@(16),sp@-
3595 movel a4,sp@-
3596 jbsr _search__C6Stringiic
3597 movel d0,d2
3598 clrl d0
3599 movew a2@,d0
3600 movel d0,d3
3601 subl d2,d3
3602 lea a6@(-8),a1
3603 tstl d2
3604 jlt L3140
3605 movel d2,d1
3606 addl d3,d1
3607 clrl d0
3608 movew a2@,d0
3609 cmpl d1,d0
3610 jcc L3139
3611 L3140:
3612 lea a6@(-16),a0
3613 movel #__nilString,a0@
3614 clrw a0@(4)
3615 clrw a0@(6)
3616 jra L3166
3617 L3139:
3618 lea a6@(-24),a0
3619 movel a4,a0@
3620 movew d2,a0@(4)
3621 movew d3,a0@(6)
3622 L3166:
3623 movel a0@,a1@
3624 movel a0@,a1@
3625 movew a0@(4),a1@(4)
3626 movew a0@(6),a1@(6)
3627 movel a1,d0
3628 lea a6@(-8),a0
3629 movel a0@,a3@
3630 movel a0@,a3@
============ Listing of String.s ============ PAGE 67
3631 movew a0@(4),a3@(4)
3632 movew a0@(6),a3@(6)
3633 movel a3,d0
3634 moveml a6@(-48),#0x1c1c
3635 unlk a6
3636 rts
3637 .even
3638 .globl _from__6StringPCci
3639 _from__6StringPCci:
3640 link a6,#-24
3641 moveml #0x3038,sp@-
3642 movel a1,a3
3643 movel a6@(8),a4
3644 movel a6@(12),d1
3645 jne L3169
3646 clrl d0
3647 jra L3168
3648 L3169:
3649 movel d1,a0
3650 L3171:
3651 tstb a0@+
3652 jne L3171
3653 movel d1,d0
3654 addql #1,d0
3655 subl a0,d0
3656 negl d0
3657 L3168:
3658 movel d0,sp@-
3659 movel d1,sp@-
3660 movel a4@,a2
3661 clrl d0
3662 movew a2@,d0
3663 movel d0,sp@-
3664 movel a6@(16),sp@-
3665 movel a4,sp@-
3666 jbsr _search__C6StringiiPCci
3667 movel d0,d2
3668 clrl d0
3669 movew a2@,d0
3670 movel d0,d3
3671 subl d2,d3
3672 lea a6@(-8),a1
3673 tstl d2
3674 jlt L3177
3675 movel d2,d1
3676 addl d3,d1
3677 clrl d0
3678 movew a2@,d0
3679 cmpl d1,d0
3680 jcc L3176
3681 L3177:
3682 lea a6@(-16),a0
3683 movel #__nilString,a0@
3684 clrw a0@(4)
3685 clrw a0@(6)
============ Listing of String.s ============ PAGE 68
3686 jra L3203
3687 L3176:
3688 lea a6@(-24),a0
3689 movel a4,a0@
3690 movew d2,a0@(4)
3691 movew d3,a0@(6)
3692 L3203:
3693 movel a0@,a1@
3694 movel a0@,a1@
3695 movew a0@(4),a1@(4)
3696 movew a0@(6),a1@(6)
3697 movel a1,d0
3698 lea a6@(-8),a0
3699 movel a0@,a3@
3700 movel a0@,a3@
3701 movew a0@(4),a3@(4)
3702 movew a0@(6),a3@(6)
3703 movel a3,d0
3704 moveml a6@(-44),#0x1c0c
3705 unlk a6
3706 rts
3707 .even
3708 .globl _split__FRC6StringP6StringiT0
3709 _split__FRC6StringP6StringiT0:
3710 link a6,#-4
3711 moveml #0x3f38,sp@-
3712 movel a6@(12),a4
3713 movel a6@(16),d7
3714 movel a6@(20),a3
3715 lea a6@(-4),a2
3716 movel a6@(8),a1
3717 movel a1@,sp@-
3718 clrl sp@-
3719 jbsr _Scopy__FP6StrRepT0
3720 movel d0,a0
3721 movel a0,a2@
3722 addqw #8,sp
3723 movel a2@,a2
3724 addqw #4,a2
3725 clrl d0
3726 movew a0@,d0
3727 movel d0,d6
3728 clrl d5
3729 clrl d3
3730 cmpl d5,d7
3731 jle L3209
3732 clrl d4
3733 L3214:
3734 cmpl d3,d6
3735 jle L3209
3736 movel a3@,a0
3737 movew a0@,d4
3738 movel d4,sp@-
3739 movel a3@,a1
3740 addqw #4,a1
============ Listing of String.s ============ PAGE 69
3741 movel a1,sp@-
3742 movel d6,sp@-
3743 movel d3,sp@-
3744 pea a6@(-4)
3745 jbsr _search__C6StringiiPCci
3746 movel d0,d2
3747 addw #20,sp
3748 jge L3212
3749 movel d6,d2
3750 L3212:
3751 movel d2,d0
3752 subl d3,d0
3753 movel d0,sp@-
3754 movel d0,sp@-
3755 pea a2@(d3:l)
3756 movel a4@(d5:l:4),sp@-
3757 jbsr _Salloc__FP6StrRepPCcii
3758 movel d0,a4@(d5:l:4)
3759 addql #1,d5
3760 addw #16,sp
3761 movel a3@,a0
3762 movew a0@,d4
3763 movel d2,d3
3764 addl d4,d3
3765 cmpl d5,d7
3766 jgt L3214
3767 L3209:
3768 lea a6@(-4),a2
3769 clrl d2
3770 cmpl #__nilStrRep,a2@
3771 jeq L3226
3772 movel a2@,sp@-
3773 jbsr ___builtin_delete
3774 addqw #4,sp
3775 L3226:
3776 tstl d2
3777 jeq L3223
3778 movel a2,sp@-
3779 jbsr ___builtin_delete
3780 L3223:
3781 movel d5,d0
3782 moveml a6@(-40),#0x1cfc
3783 unlk a6
3784 rts
3785 .even
3786 .globl _split__FRC6StringP6StringiRC5Regex
3787 _split__FRC6StringP6StringiRC5Regex:
3788 link a6,#-8
3789 moveml #0x3f30,sp@-
3790 movel a6@(12),a3
3791 movel a6@(16),d6
3792 movel a6@(20),d7
3793 lea a6@(-4),a2
3794 movel a6@(8),a1
3795 movel a1@,sp@-
============ Listing of String.s ============ PAGE 70
3796 clrl sp@-
3797 jbsr _Scopy__FP6StrRepT0
3798 movel d0,a0
3799 movel a0,a2@
3800 addqw #8,sp
3801 movel a2@,a2
3802 addqw #4,a2
3803 clrl d0
3804 movew a0@,d0
3805 movel d0,d5
3806 clrl d4
3807 clrl d3
3808 cmpl d4,d6
3809 jle L3235
3810 L3237:
3811 cmpl d3,d5
3812 jle L3235
3813 movel d3,sp@-
3814 pea a6@(-8)
3815 movel d5,sp@-
3816 movel a2,sp@-
3817 movel d7,sp@-
3818 jbsr _search__C5RegexPCciRii
3819 movel d0,d2
3820 addw #20,sp
3821 jge L3236
3822 movel d5,d2
3823 L3236:
3824 movel d2,d0
3825 subl d3,d0
3826 movel d0,sp@-
3827 movel d0,sp@-
3828 pea a2@(d3:l)
3829 movel a3@(d4:l:4),sp@-
3830 jbsr _Salloc__FP6StrRepPCcii
3831 movel d0,a3@(d4:l:4)
3832 addql #1,d4
3833 movel d2,d3
3834 addl a6@(-8),d3
3835 addw #16,sp
3836 cmpl d4,d6
3837 jgt L3237
3838 L3235:
3839 lea a6@(-4),a2
3840 clrl d2
3841 cmpl #__nilStrRep,a2@
3842 jeq L3249
3843 movel a2@,sp@-
3844 jbsr ___builtin_delete
3845 addqw #4,sp
3846 L3249:
3847 tstl d2
3848 jeq L3246
3849 movel a2,sp@-
3850 jbsr ___builtin_delete
============ Listing of String.s ============ PAGE 71
3851 L3246:
3852 movel d4,d0
3853 moveml a6@(-40),#0xcfc
3854 unlk a6
3855 rts
3856 .even
3857 .globl _join__FP6StringiRC6String
3858 _join__FP6StringiRC6String:
3859 link a6,#-12
3860 moveml #0x3c3c,sp@-
3861 movel a1,d5
3862 movel a6@(8),a5
3863 movel a6@(12),d4
3864 lea a6@(-4),a2
3865 movel a6@(16),a3
3866 movel a3@,sp@-
3867 clrl sp@-
3868 jbsr _Scopy__FP6StrRepT0
3869 movel d0,a2@
3870 addqw #8,sp
3871 subl a1,a1
3872 clrl d2
3873 cmpl d2,d4
3874 jle L3317
3875 clrl d0
3876 L3259:
3877 movel a5@(d2:l:4),a0
3878 movew a0@,d0
3879 addl d0,a1
3880 addql #1,d2
3881 cmpl d2,d4
3882 jgt L3259
3883 L3317:
3884 movel a6@(-4),a0
3885 clrl d0
3886 movew a0@,d0
3887 movel d4,d1
3888 subql #1,d1
3889 mulsl d0,d1
3890 pea a1@(d1:l)
3891 clrl sp@-
3892 jbsr _Sresize__FP6StrRepi
3893 movel d0,a4
3894 clrl d3
3895 clrl d2
3896 addqw #8,sp
3897 clrl d1
3898 movel a6,a3
3899 subqw #4,a3
3900 movel a3,a6@(-12)
3901 jra L3261
3902 L3280:
3903 lea a5@(d2:l:4),a0
3904 movel a0@,a2
3905 addqw #4,a2
============ Listing of String.s ============ PAGE 72
3906 lea a4@(4,d3:l),a1
3907 movel a0@,a0
3908 movew a0@,d1
3909 movel d1,d0
3910 cmpl a2,a1
3911 jeq L3266
3912 jra L3268
3913 L3270:
3914 moveb a2@+,a1@+
3915 L3268:
3916 subql #1,d0
3917 jpl L3270
3918 L3266:
3919 movel a5@(d2:l:4),a0
3920 movew a0@,d1
3921 addl d1,d3
3922 movel a6@(-12),a3
3923 movel a3@,a2
3924 addqw #4,a2
3925 lea a4@(4,d3:l),a1
3926 movel a3@,a0
3927 movew a0@,d1
3928 movel d1,d0
3929 cmpl a2,a1
3930 jeq L3274
3931 jra L3276
3932 L3278:
3933 moveb a2@+,a1@+
3934 L3276:
3935 subql #1,d0
3936 jpl L3278
3937 L3274:
3938 movel a6@(-12),a3
3939 movel a3@,a0
3940 movew a0@,d1
3941 addl d1,d3
3942 addql #1,d2
3943 L3261:
3944 movel d4,d0
3945 subql #1,d0
3946 cmpl d2,d0
3947 jgt L3280
3948 lea a5@(d2:l:4),a0
3949 movel a0@,a2
3950 addqw #4,a2
3951 lea a4@(4,d3:l),a1
3952 movel a0@,a0
3953 clrl d0
3954 movew a0@,d0
3955 cmpl a2,a1
3956 jeq L3283
3957 jra L3285
3958 L3287:
3959 moveb a2@+,a1@+
3960 L3285:
============ Listing of String.s ============ PAGE 73
3961 subql #1,d0
3962 jpl L3287
3963 clrb a1@
3964 L3283:
3965 lea a6@(-8),a0
3966 movel #__nilStrRep,a0@
3967 movel a4,a0@
3968 movel d5,a3
3969 movel #__nilStrRep,a3@
3970 movel a0@,a3@
3971 movel #__nilStrRep,a0@
3972 movel a0,a2
3973 clrl d2
3974 cmpl #__nilStrRep,a2@
3975 jeq L3300
3976 pea __nilStrRep
3977 jbsr ___builtin_delete
3978 addqw #4,sp
3979 L3300:
3980 tstl d2
3981 jeq L3293
3982 movel a2,sp@-
3983 jbsr ___builtin_delete
3984 addqw #4,sp
3985 L3293:
3986 lea a6@(-4),a2
3987 clrl d2
3988 cmpl #__nilStrRep,a2@
3989 jeq L3314
3990 movel a2@,sp@-
3991 jbsr ___builtin_delete
3992 addqw #4,sp
3993 L3314:
3994 tstl d2
3995 jeq L3253
3996 movel a2,sp@-
3997 jbsr ___builtin_delete
3998 L3253:
3999 movel d5,d0
4000 moveml a6@(-44),#0x3c3c
4001 unlk a6
4002 rts
4003 .even
4004 .globl _Sreverse__FP6StrRepT0
4005 _Sreverse__FP6StrRepT0:
4006 link a6,#0
4007 movel d2,sp@-
4008 movel a6@(8),a0
4009 movel a6@(12),d1
4010 clrl d2
4011 movew a0@,d2
4012 cmpl a0,d1
4013 jeq L3319
4014 movel d2,sp@-
4015 movel d2,sp@-
============ Listing of String.s ============ PAGE 74
4016 pea a0@(4)
4017 movel d1,sp@-
4018 jbsr _Salloc__FP6StrRepPCcii
4019 movel d0,d1
4020 L3319:
4021 tstl d2
4022 jle L3320
4023 movel d1,a0
4024 addqw #4,a0
4025 lea a0@(-1,d2:l),a1
4026 cmpl a0,a1
4027 jls L3320
4028 L3323:
4029 moveb a0@,d0
4030 moveb a1@,a0@+
4031 moveb d0,a1@
4032 subqw #1,a1
4033 cmpl a0,a1
4034 jhi L3323
4035 L3320:
4036 movel d1,d0
4037 movel a6@(-4),d2
4038 unlk a6
4039 rts
4040 .even
4041 .globl _Supcase__FP6StrRepT0
4042 _Supcase__FP6StrRepT0:
4043 link a6,#0
4044 moveml #0x3c00,sp@-
4045 movel a6@(8),a0
4046 movel a6@(12),d4
4047 clrl d2
4048 movew a0@,d2
4049 cmpl a0,d4
4050 jeq L3326
4051 movel d2,sp@-
4052 movel d2,sp@-
4053 pea a0@(4)
4054 movel d4,sp@-
4055 jbsr _Salloc__FP6StrRepPCcii
4056 movel d0,d4
4057 L3326:
4058 movel d4,a0
4059 addqw #4,a0
4060 movel a0,d3
4061 addl d2,d3
4062 cmpl a0,d3
4063 jls L3337
4064 lea __ctype_+1,a1
4065 L3336:
4066 moveb a0@,d0
4067 extbl d0
4068 moveb d0,d1
4069 extbl d1
4070 btst #1,a1@(d1:l)
============ Listing of String.s ============ PAGE 75
4071 jeq L3329
4072 movel d0,d2
4073 moveb d1,d0
4074 extbl d0
4075 btst #1,a1@(d0:l)
4076 jeq L3333
4077 movel d1,d0
4078 moveq #-32,d5
4079 addl d5,d0
4080 jra L3334
4081 L3333:
4082 moveb d2,d0
4083 extbl d0
4084 L3334:
4085 moveb d0,a0@
4086 L3329:
4087 addqw #1,a0
4088 cmpl a0,d3
4089 jhi L3336
4090 L3337:
4091 movel d4,d0
4092 moveml a6@(-16),#0x3c
4093 unlk a6
4094 rts
4095 .even
4096 .globl _Sdowncase__FP6StrRepT0
4097 _Sdowncase__FP6StrRepT0:
4098 link a6,#0
4099 moveml #0x3c00,sp@-
4100 movel a6@(8),a0
4101 movel a6@(12),d4
4102 clrl d2
4103 movew a0@,d2
4104 cmpl a0,d4
4105 jeq L3339
4106 movel d2,sp@-
4107 movel d2,sp@-
4108 pea a0@(4)
4109 movel d4,sp@-
4110 jbsr _Salloc__FP6StrRepPCcii
4111 movel d0,d4
4112 L3339:
4113 movel d4,a0
4114 addqw #4,a0
4115 movel a0,d3
4116 addl d2,d3
4117 cmpl a0,d3
4118 jls L3350
4119 lea __ctype_+1,a1
4120 L3349:
4121 moveb a0@,d0
4122 extbl d0
4123 moveb d0,d1
4124 extbl d1
4125 btst #0,a1@(d1:l)
============ Listing of String.s ============ PAGE 76
4126 jeq L3342
4127 movel d0,d2
4128 moveb d1,d0
4129 extbl d0
4130 btst #0,a1@(d0:l)
4131 jeq L3346
4132 movel d1,d0
4133 moveq #32,d5
4134 addl d5,d0
4135 jra L3347
4136 L3346:
4137 moveb d2,d0
4138 extbl d0
4139 L3347:
4140 moveb d0,a0@
4141 L3342:
4142 addqw #1,a0
4143 cmpl a0,d3
4144 jhi L3349
4145 L3350:
4146 movel d4,d0
4147 moveml a6@(-16),#0x3c
4148 unlk a6
4149 rts
4150 .even
4151 .globl _Scapitalize__FP6StrRepT0
4152 _Scapitalize__FP6StrRepT0:
4153 link a6,#0
4154 moveml #0x3e00,sp@-
4155 movel a6@(8),a0
4156 movel a6@(12),d5
4157 clrl d2
4158 movew a0@,d2
4159 cmpl a0,d5
4160 jeq L3352
4161 movel d2,sp@-
4162 movel d2,sp@-
4163 pea a0@(4)
4164 movel d5,sp@-
4165 jbsr _Salloc__FP6StrRepPCcii
4166 movel d0,d5
4167 L3352:
4168 movel d5,a0
4169 addqw #4,a0
4170 movel a0,d4
4171 addl d2,d4
4172 cmpl a0,d4
4173 jls L3382
4174 lea __ctype_+1,a1
4175 L3381:
4176 moveb a0@,d0
4177 extbl d0
4178 moveb d0,d1
4179 extbl d1
4180 moveb a1@(d1:l),d2
============ Listing of String.s ============ PAGE 77
4181 moveq #2,d6
4182 andl d6,d2
4183 jeq L3356
4184 movel d0,d3
4185 moveb d1,d0
4186 extbl d0
4187 btst #1,a1@(d0:l)
4188 jeq L3359
4189 movel d1,d0
4190 moveq #-32,d6
4191 addl d6,d0
4192 jra L3360
4193 L3359:
4194 moveb d3,d0
4195 extbl d0
4196 L3360:
4197 moveb d0,a0@
4198 jra L3362
4199 L3356:
4200 clrl d1
4201 moveb a0@,d0
4202 extbl d0
4203 btst #0,a1@(d0:l)
4204 jne L3364
4205 btst #2,a1@(d0:l)
4206 jeq L3363
4207 L3364:
4208 moveq #1,d1
4209 L3363:
4210 movel d1,d2
4211 L3362:
4212 tstl d2
4213 jeq L3355
4214 jra L3368
4215 L3380:
4216 moveb a0@,d0
4217 extbl d0
4218 moveb d0,d1
4219 extbl d1
4220 btst #0,a1@(d1:l)
4221 jeq L3370
4222 movel d0,d2
4223 moveb d1,d0
4224 extbl d0
4225 btst #0,a1@(d0:l)
4226 jeq L3373
4227 movel d1,d0
4228 moveq #32,d6
4229 addl d6,d0
4230 jra L3374
4231 L3373:
4232 moveb d2,d0
4233 extbl d0
4234 L3374:
4235 moveb d0,a0@
============ Listing of String.s ============ PAGE 78
4236 jra L3368
4237 L3370:
4238 moveb a0@,d0
4239 extbl d0
4240 btst #1,a1@(d0:l)
4241 jne L3368
4242 btst #2,a1@(d0:l)
4243 jeq L3355
4244 L3368:
4245 addqw #1,a0
4246 cmpl a0,d4
4247 jhi L3380
4248 L3355:
4249 addqw #1,a0
4250 cmpl a0,d4
4251 jhi L3381
4252 L3382:
4253 movel d5,d0
4254 moveml a6@(-20),#0x7c
4255 unlk a6
4256 rts
4257 .even
4258 .globl _replicate__Fci
4259 _replicate__Fci:
4260 link a6,#-4
4261 moveml #0x3030,sp@-
4262 movel a1,a3
4263 moveb a6@(11),d3
4264 movel a6@(12),d2
4265 movel d2,sp@-
4266 clrl sp@-
4267 jbsr _Sresize__FP6StrRepi
4268 movel d0,a0
4269 addqw #4,a0
4270 addqw #8,sp
4271 jra L3384
4272 L3386:
4273 moveb d3,a0@+
4274 L3384:
4275 subql #1,d2
4276 moveq #-1,d1
4277 cmpl d2,d1
4278 jlt L3386
4279 clrb a0@
4280 lea a6@(-4),a0
4281 movel #__nilStrRep,a0@
4282 movel d0,a0@
4283 movel #__nilStrRep,a3@
4284 movel a0@,a3@
4285 movel #__nilStrRep,a0@
4286 movel a0,a2
4287 clrl d2
4288 cmpl #__nilStrRep,a2@
4289 jeq L3399
4290 pea __nilStrRep
============ Listing of String.s ============ PAGE 79
4291 jbsr ___builtin_delete
4292 addqw #4,sp
4293 L3399:
4294 tstl d2
4295 jeq L3383
4296 movel a2,sp@-
4297 jbsr ___builtin_delete
4298 L3383:
4299 movel a3,d0
4300 moveml a6@(-20),#0xc0c
4301 unlk a6
4302 rts
4303 .even
4304 .globl _replicate__FRC6Stringi
4305 _replicate__FRC6Stringi:
4306 link a6,#-4
4307 moveml #0x3838,sp@-
4308 movel a1,a3
4309 movel a6@(8),a4
4310 movel a6@(12),d2
4311 movel a4@,a0
4312 clrl d0
4313 movew a0@,d0
4314 movel d0,d3
4315 movel d2,d4
4316 mulsl d3,d4
4317 movel d4,sp@-
4318 clrl sp@-
4319 jbsr _Sresize__FP6StrRepi
4320 movel d0,d1
4321 movel d1,a2
4322 addqw #4,a2
4323 addqw #8,sp
4324 jra L3404
4325 L3412:
4326 movel a4@,a0
4327 addqw #4,a0
4328 movel a2,a1
4329 movel d3,d0
4330 cmpl a0,a2
4331 jeq L3407
4332 jra L3409
4333 L3411:
4334 moveb a0@+,a1@+
4335 L3409:
4336 subql #1,d0
4337 jpl L3411
4338 L3407:
4339 addl d3,a2
4340 L3404:
4341 subql #1,d2
4342 moveq #-1,d4
4343 cmpl d2,d4
4344 jlt L3412
4345 clrb a2@
============ Listing of String.s ============ PAGE 80
4346 lea a6@(-4),a0
4347 movel #__nilStrRep,a0@
4348 movel d1,a0@
4349 movel #__nilStrRep,a3@
4350 movel a0@,a3@
4351 movel #__nilStrRep,a0@
4352 movel a0,a2
4353 clrl d2
4354 cmpl #__nilStrRep,a2@
4355 jeq L3425
4356 pea __nilStrRep
4357 jbsr ___builtin_delete
4358 addqw #4,sp
4359 L3425:
4360 tstl d2
4361 jeq L3402
4362 movel a2,sp@-
4363 jbsr ___builtin_delete
4364 L3402:
4365 movel a3,d0
4366 moveml a6@(-28),#0x1c1c
4367 unlk a6
4368 rts
4369 .even
4370 .globl _common_prefix__FRC6StringT0i
4371 _common_prefix__FRC6StringT0i:
4372 link a6,#-4
4373 moveml #0x3830,sp@-
4374 movel a1,a3
4375 movel a6@(8),a1
4376 movel a6@(12),a0
4377 movel a6@(16),d1
4378 movel a1@,d2
4379 addql #4,d2
4380 movel a0@,d0
4381 addql #4,d0
4382 movel d2,d4
4383 addl d1,d4
4384 movel d4,a2
4385 movel a1@,a1
4386 clrl d3
4387 movew a1@,d3
4388 addl d3,d2
4389 movel d0,a1
4390 addl d1,a1
4391 movel a0@,a0
4392 clrl d1
4393 movew a0@,d1
4394 addl d0,d1
4395 clrl d0
4396 cmpl a2,d2
4397 jls L3434
4398 L3436:
4399 cmpl a1,d1
4400 jls L3434
============ Listing of String.s ============ PAGE 81
4401 cmpmb a1@+,a2@+
4402 jne L3434
4403 addql #1,d0
4404 cmpl a2,d2
4405 jhi L3436
4406 L3434:
4407 lea a6@(-4),a2
4408 movel d0,sp@-
4409 movel d0,sp@-
4410 movel d4,sp@-
4411 clrl sp@-
4412 jbsr _Salloc__FP6StrRepPCcii
4413 addw #16,sp
4414 movel #__nilStrRep,a2@
4415 movel d0,a2@
4416 movel #__nilStrRep,a3@
4417 movel a2@,a3@
4418 movel #__nilStrRep,a2@
4419 clrl d2
4420 cmpl #__nilStrRep,a2@
4421 jeq L3449
4422 pea __nilStrRep
4423 jbsr ___builtin_delete
4424 addqw #4,sp
4425 L3449:
4426 tstl d2
4427 jeq L3428
4428 movel a2,sp@-
4429 jbsr ___builtin_delete
4430 L3428:
4431 movel a3,d0
4432 moveml a6@(-24),#0xc1c
4433 unlk a6
4434 rts
4435 .even
4436 .globl _common_suffix__FRC6StringT0i
4437 _common_suffix__FRC6StringT0i:
4438 link a6,#-4
4439 moveml #0x3830,sp@-
4440 movel a1,a3
4441 movel a6@(8),a1
4442 movel a6@(12),a0
4443 movel a6@(16),d0
4444 movel a1@,d2
4445 addql #4,d2
4446 movel a0@,d1
4447 addql #4,d1
4448 movel a1@,a1
4449 clrl d3
4450 movew a1@,d3
4451 addl d0,d3
4452 movel d2,a1
4453 addl d3,a1
4454 movel d2,d3
4455 movel a0@,a0
============ Listing of String.s ============ PAGE 82
4456 clrl d2
4457 movew a0@,d2
4458 addl d0,d2
4459 movel d1,a0
4460 addl d2,a0
4461 clrl d0
4462 cmpl a1,d3
4463 jhi L3459
4464 L3461:
4465 cmpl a0,d1
4466 jhi L3459
4467 moveb a1@,d4
4468 cmpb a0@,d4
4469 jne L3459
4470 subqw #1,a1
4471 subqw #1,a0
4472 addql #1,d0
4473 cmpl a1,d3
4474 jls L3461
4475 L3459:
4476 lea a6@(-4),a2
4477 movel d0,sp@-
4478 movel d0,sp@-
4479 pea a1@(1)
4480 clrl sp@-
4481 jbsr _Salloc__FP6StrRepPCcii
4482 addw #16,sp
4483 movel #__nilStrRep,a2@
4484 movel d0,a2@
4485 movel #__nilStrRep,a3@
4486 movel a2@,a3@
4487 movel #__nilStrRep,a2@
4488 clrl d2
4489 cmpl #__nilStrRep,a2@
4490 jeq L3474
4491 pea __nilStrRep
4492 jbsr ___builtin_delete
4493 addqw #4,sp
4494 L3474:
4495 tstl d2
4496 jeq L3453
4497 movel a2,sp@-
4498 jbsr ___builtin_delete
4499 L3453:
4500 movel a3,d0
4501 moveml a6@(-24),#0xc1c
4502 unlk a6
4503 rts
4504 .even
4505 .globl _op$arshift__FR7istreamR6String
4506 _op$arshift__FR7istreamR6String:
4507 link a6,#-4
4508 moveml #0x2038,sp@-
4509 movel a6@(8),a3
4510 movel a6@(12),a4
============ Listing of String.s ============ PAGE 83
4511 clrl d2
4512 tstl a3@
4513 jeq L3481
4514 movel a3@,a0
4515 movel a0@(18),a0
4516 movew a0@(88),a1
4517 addl a3@,a1
4518 movel a1,sp@-
4519 movel a0@(92),a0
4520 jbsr a0@
4521 addqw #4,sp
4522 tstl d0
4523 jeq L3481
4524 tstl a3@(4)
4525 jne L3481
4526 moveq #1,d2
4527 L3481:
4528 tstl d2
4529 jne L3479
4530 moveq #4,d1
4531 jra L3498
4532 L3479:
4533 subl a2,a2
4534 pea 20:w
4535 movel a4@,sp@-
4536 jbsr _Sresize__FP6StrRepi
4537 movel d0,a4@
4538 pea _WS
4539 movel a3,sp@-
4540 jbsr _op$arshift__7istreamR10whitespace
4541 addw #16,sp
4542 tstl a3@(4)
4543 seq d0
4544 btst #0,d0
4545 jne L3486
4546 moveq #4,d1
4547 jra L3498
4548 L3494:
4549 moveb a6@(-1),d0
4550 extbl d0
4551 lea __ctype_+1,a0
4552 btst #3,a0@(d0:l)
4553 jne L3487
4554 movel a4@,a0
4555 clrl d0
4556 movew a0@(2),d0
4557 subql #1,d0
4558 cmpl a2,d0
4559 jgt L3493
4560 pea a2@(1)
4561 movel a0,sp@-
4562 jbsr _Sresize__FP6StrRepi
4563 movel d0,a4@
4564 addqw #8,sp
4565 L3493:
============ Listing of String.s ============ PAGE 84
4566 movel a4@,a0
4567 addl a2,a0
4568 moveb a6@(-1),a0@(4)
4569 addqw #1,a2
4570 L3486:
4571 pea a6@(-1)
4572 movel a3,sp@-
4573 jbsr _get__7istreamRc
4574 movel d0,a0
4575 addqw #8,sp
4576 tstl a0@(4)
4577 jeq L3490
4578 clrl d0
4579 L3490:
4580 tstl d0
4581 jne L3494
4582 L3487:
4583 movel a4@,a0
4584 clrb a2@(4,a0:l)
4585 movel a4@,a0
4586 movew a2,a0@
4587 tstl a2
4588 seq d0
4589 btst #0,d0
4590 jeq L3496
4591 moveq #2,d1
4592 L3498:
4593 orl d1,a3@(4)
4594 L3496:
4595 movel a3,d0
4596 moveml a6@(-20),#0x1c04
4597 unlk a6
4598 rts
4599 .even
4600 .globl _readline__FR7istreamR6Stringci
4601 _readline__FR7istreamR6Stringci:
4602 link a6,#-4
4603 moveml #0x3838,sp@-
4604 movel a6@(8),a4
4605 movel a6@(12),a3
4606 moveb a6@(19),d3
4607 movel a6@(20),d4
4608 clrl d2
4609 tstl a4@
4610 jeq L3502
4611 movel a4@,a0
4612 movel a0@(18),a0
4613 movew a0@(88),a1
4614 addl a4@,a1
4615 movel a1,sp@-
4616 movel a0@(92),a0
4617 jbsr a0@
4618 addqw #4,sp
4619 tstl d0
4620 jeq L3502
============ Listing of String.s ============ PAGE 85
4621 tstl a4@(4)
4622 jne L3502
4623 moveq #1,d2
4624 L3502:
4625 tstl d2
4626 jne L3500
4627 moveq #4,d1
4628 orl d1,a4@(4)
4629 clrl d0
4630 jra L3499
4631 L3500:
4632 subl a2,a2
4633 pea 80:w
4634 movel a3@,sp@-
4635 jbsr _Sresize__FP6StrRepi
4636 movel d0,a3@
4637 addqw #8,sp
4638 jra L3504
4639 L3513:
4640 cmpb a6@(-1),d3
4641 jne L3510
4642 tstl d4
4643 jne L3509
4644 L3510:
4645 movel a3@,a0
4646 clrl d0
4647 movew a0@(2),d0
4648 subql #1,d0
4649 cmpl a2,d0
4650 jgt L3511
4651 pea a2@(1)
4652 movel a0,sp@-
4653 jbsr _Sresize__FP6StrRepi
4654 movel d0,a3@
4655 addqw #8,sp
4656 L3511:
4657 movel a3@,a0
4658 addl a2,a0
4659 moveb a6@(-1),a0@(4)
4660 addqw #1,a2
4661 L3509:
4662 cmpb a6@(-1),d3
4663 jeq L3505
4664 L3504:
4665 pea a6@(-1)
4666 movel a4,sp@-
4667 jbsr _get__7istreamRc
4668 movel d0,a0
4669 addqw #8,sp
4670 tstl a0@(4)
4671 jeq L3508
4672 clrl d0
4673 L3508:
4674 tstl d0
4675 jne L3513
============ Listing of String.s ============ PAGE 86
4676 L3505:
4677 movel a3@,a0
4678 clrb a2@(4,a0:l)
4679 movel a3@,a0
4680 movew a2,a0@
4681 movel a2,d0
4682 L3499:
4683 moveml a6@(-28),#0x1c1c
4684 unlk a6
4685 rts
4686 .even
4687 .globl _op$alshift__FR7ostreamRC9SubString
4688 _op$alshift__FR7ostreamRC9SubString:
4689 link a6,#0
4690 moveml #0x3030,sp@-
4691 movel a6@(8),a3
4692 movel a6@(12),a0
4693 movel a0@,a1
4694 clrl d0
4695 movew a0@(4),d0
4696 addql #4,d0
4697 movel d0,a2
4698 addl a1@,a2
4699 clrl d0
4700 movew a0@(6),d0
4701 movel a2,d3
4702 addl d0,d3
4703 L3530:
4704 cmpl a2,d3
4705 jls L3529
4706 moveb a2@+,d0
4707 extbl d0
4708 clrl d2
4709 tstl a3@(4)
4710 jne L3521
4711 movel a3@,a1
4712 extbl d0
4713 movel a1@(4),d1
4714 cmpl a1@(12),d1
4715 jcc L3523
4716 movel a1@(4),a0
4717 moveb d0,a0@
4718 extbl d0
4719 addql #1,a1@(4)
4720 jra L3524
4721 L3523:
4722 movel a1@(18),a0
4723 movel d0,sp@-
4724 addw a0@(16),a1
4725 movel a1,sp@-
4726 movel a0@(20),a0
4727 jbsr a0@
4728 addqw #8,sp
4729 L3524:
4730 moveq #-1,d1
============ Listing of String.s ============ PAGE 87
4731 cmpl d0,d1
4732 jne L3520
4733 L3521:
4734 moveq #1,d2
4735 L3520:
4736 tstl d2
4737 jeq L3530
4738 moveq #2,d1
4739 orl d1,a3@(4)
4740 jra L3530
4741 L3529:
4742 movel a3,d0
4743 moveml a6@(-16),#0xc0c
4744 unlk a6
4745 rts
4746 .even
4747 .globl _freq__C6StringRC9SubString
4748 _freq__C6StringRC9SubString:
4749 link a6,#0
4750 moveml #0x3830,sp@-
4751 movel a6@(8),a3
4752 movel a6@(12),a2
4753 clrl d4
4754 clrl d3
4755 clrl d2
4756 jra L3532
4757 L3540:
4758 movew a2@(6),d2
4759 movel d2,sp@-
4760 movel a2@,a0
4761 movew a2@(4),d2
4762 movel d2,d0
4763 addql #4,d0
4764 addl a0@,d0
4765 movel d0,sp@-
4766 clrl sp@-
4767 movel a3@,a0
4768 movew a0@,d2
4769 movel d2,sp@-
4770 movel d3,sp@-
4771 movel a3,sp@-
4772 jbsr _match__C6StringiiiPCci
4773 addw #24,sp
4774 tstl d0
4775 jeq L3534
4776 addql #1,d4
4777 L3534:
4778 addql #1,d3
4779 L3532:
4780 movel a3@,a0
4781 movew a0@,d2
4782 cmpl d3,d2
4783 jgt L3540
4784 movel d4,d0
4785 moveml a6@(-20),#0xc1c
============ Listing of String.s ============ PAGE 88
4786 unlk a6
4787 rts
4788 .even
4789 .globl _freq__C6StringRC6String
4790 _freq__C6StringRC6String:
4791 link a6,#0
4792 moveml #0x3830,sp@-
4793 movel a6@(8),a2
4794 movel a6@(12),a3
4795 clrl d4
4796 clrl d3
4797 clrl d2
4798 jra L3542
4799 L3550:
4800 movel a3@,a0
4801 movew a0@,d2
4802 movel d2,sp@-
4803 movel a3@,d1
4804 addql #4,d1
4805 movel d1,sp@-
4806 clrl sp@-
4807 movel a2@,a0
4808 movew a0@,d2
4809 movel d2,sp@-
4810 movel d3,sp@-
4811 movel a2,sp@-
4812 jbsr _match__C6StringiiiPCci
4813 addw #24,sp
4814 tstl d0
4815 jeq L3544
4816 addql #1,d4
4817 L3544:
4818 addql #1,d3
4819 L3542:
4820 movel a2@,a0
4821 movew a0@,d2
4822 cmpl d3,d2
4823 jgt L3550
4824 movel d4,d0
4825 moveml a6@(-20),#0xc1c
4826 unlk a6
4827 rts
4828 .even
4829 .globl _freq__C6StringPCc
4830 _freq__C6StringPCc:
4831 link a6,#0
4832 moveml #0x3c20,sp@-
4833 movel a6@(8),a2
4834 movel a6@(12),d5
4835 clrl d4
4836 clrl d3
4837 clrl d2
4838 jra L3552
4839 L3558:
4840 pea -1:w
============ Listing of String.s ============ PAGE 89
4841 movel d5,sp@-
4842 clrl sp@-
4843 movel a2@,a0
4844 movew a0@,d2
4845 movel d2,sp@-
4846 movel d3,sp@-
4847 movel a2,sp@-
4848 jbsr _match__C6StringiiiPCci
4849 addw #24,sp
4850 tstl d0
4851 jeq L3554
4852 addql #1,d4
4853 L3554:
4854 addql #1,d3
4855 L3552:
4856 movel a2@,a0
4857 movew a0@,d2
4858 cmpl d3,d2
4859 jgt L3558
4860 movel d4,d0
4861 moveml a6@(-20),#0x43c
4862 unlk a6
4863 rts
4864 .even
4865 .globl _freq__C6Stringc
4866 _freq__C6Stringc:
4867 link a6,#0
4868 moveml #0x3820,sp@-
4869 movel a6@(8),a2
4870 clrl d4
4871 clrl d3
4872 clrl d2
4873 jra L3560
4874 L3566:
4875 pea 1:w
4876 pea a6@(15)
4877 clrl sp@-
4878 movel a2@,a0
4879 movew a0@,d2
4880 movel d2,sp@-
4881 movel d3,sp@-
4882 movel a2,sp@-
4883 jbsr _match__C6StringiiiPCci
4884 addw #24,sp
4885 tstl d0
4886 jeq L3562
4887 addql #1,d4
4888 L3562:
4889 addql #1,d3
4890 L3560:
4891 movel a2@,a0
4892 movew a0@,d2
4893 cmpl d3,d2
4894 jgt L3566
4895 movel d4,d0
============ Listing of String.s ============ PAGE 90
4896 moveml a6@(-16),#0x41c
4897 unlk a6
4898 rts
4899 LC4:
4900 .ascii "invariant failure\0"
4901 .even
4902 .globl _OK__C6String
4903 _OK__C6String:
4904 link a6,#0
4905 movel d2,sp@-
4906 movel a6@(8),a1
4907 tstl a1@
4908 sne d0
4909 moveq #1,d1
4910 andl d0,d1
4911 movel a1@,a0
4912 movew a0@(2),d2
4913 cmpw a0@,d2
4914 scc d0
4915 moveq #1,d2
4916 andl d2,d0
4917 andl d0,d1
4918 clrl d0
4919 movew a0@,d0
4920 tstb a0@(4,d0:l)
4921 seq d0
4922 andl d2,d0
4923 andl d0,d1
4924 jne L3568
4925 pea LC4
4926 movel a1,sp@-
4927 jbsr _error__C6StringPc
4928 L3568:
4929 movel d1,d0
4930 movel a6@(-4),d2
4931 unlk a6
4932 rts
4933 LC5:
4934 .ascii "SubString invariant failure\0"
4935 .even
4936 .globl _OK__C9SubString
4937 _OK__C9SubString:
4938 link a6,#0
4939 moveml #0x3030,sp@-
4940 movel a6@(8),a2
4941 movel a2@,a3
4942 clrl sp@-
4943 movel a3,sp@-
4944 jbsr _compare__FRC6StringPCc
4945 addqw #8,sp
4946 tstl d0
4947 sne d1
4948 moveq #1,d2
4949 andl d1,d2
4950 movel a3,sp@-
============ Listing of String.s ============ PAGE 91
4951 jbsr _OK__C6String
4952 andl d0,d2
4953 clrl d0
4954 movew a2@(4),d0
4955 clrl d1
4956 movew a2@(6),d1
4957 addl d1,d0
4958 movel a3@,a0
4959 clrl d1
4960 movew a0@,d1
4961 addqw #4,sp
4962 cmpl d0,d1
4963 sle d0
4964 moveq #1,d3
4965 andl d3,d0
4966 andl d0,d2
4967 jne L3571
4968 pea LC5
4969 movel a3,sp@-
4970 jbsr _error__C6StringPc
4971 L3571:
4972 movel d2,d0
4973 moveml a6@(-16),#0xc0c
4974 unlk a6
4975 rts
4976 .even
4977 .globl _OK__C5Regex
4978 _OK__C5Regex:
4979 link a6,#0
4980 movel d2,sp@-
4981 movel a6@(8),a0
4982 tstl a0@
4983 sne d0
4984 moveq #1,d2
4985 andl d0,d2
4986 movel a0@,a0
4987 tstl a0@
4988 sne d0
4989 moveq #1,d1
4990 andl d1,d0
4991 andl d0,d2
4992 jne L3573
4993 pea LC4
4994 pea LC3
4995 movel _lib_error_handler,a0
4996 jbsr a0@
4997 L3573:
4998 movel d2,d0
4999 movel a6@(-4),d2
5000 unlk a6
5001 rts
5002 .globl _RXwhite
5003 .data
5004 .even
5005 _RXwhite:
============ Listing of String.s ============ PAGE 92
5006 .skip 8
5007 .globl _RXint
5008 .even
5009 _RXint:
5010 .skip 8
5011 .globl _RXdouble
5012 .even
5013 _RXdouble:
5014 .skip 8
5015 .globl _RXalpha
5016 .even
5017 _RXalpha:
5018 .skip 8
5019 .globl _RXlowercase
5020 .even
5021 _RXlowercase:
5022 .skip 8
5023 .globl _RXuppercase
5024 .even
5025 _RXuppercase:
5026 .skip 8
5027 .globl _RXalphanum
5028 .even
5029 _RXalphanum:
5030 .skip 8
5031 .globl _RXidentifier
5032 .even
5033 _RXidentifier:
5034 .skip 8
5035 .stabs "_fini",10,0,0,0
5036 .stabs "__GLOBAL_$D$String_cc",4,0,0,0
5037 .text
5038 .even
5039 .globl __GLOBAL_$D$String_cc
5040 __GLOBAL_$D$String_cc:
5041 link a6,#0
5042 moveml #0x2020,sp@-
5043 clrl sp@-
5044 pea _RXidentifier
5045 lea __$_Regex,a2
5046 jbsr a2@
5047 addqw #8,sp
5048 clrl sp@-
5049 pea _RXalphanum
5050 jbsr a2@
5051 addqw #8,sp
5052 clrl sp@-
5053 pea _RXuppercase
5054 jbsr a2@
5055 addqw #8,sp
5056 clrl sp@-
5057 pea _RXlowercase
5058 jbsr a2@
5059 addqw #8,sp
5060 clrl sp@-
============ Listing of String.s ============ PAGE 93
5061 pea _RXalpha
5062 jbsr a2@
5063 addqw #8,sp
5064 clrl sp@-
5065 pea _RXdouble
5066 jbsr a2@
5067 addqw #8,sp
5068 clrl sp@-
5069 pea _RXint
5070 jbsr a2@
5071 addqw #8,sp
5072 clrl sp@-
5073 pea _RXwhite
5074 jbsr a2@
5075 addqw #8,sp
5076 lea __nilString,a2
5077 clrl d2
5078 cmpl #__nilStrRep,a2@
5079 jeq L3595
5080 movel a2@,sp@-
5081 jbsr ___builtin_delete
5082 addqw #4,sp
5083 L3595:
5084 tstl d2
5085 jeq L3592
5086 movel a2,sp@-
5087 jbsr ___builtin_delete
5088 L3592:
5089 moveml a6@(-8),#0x404
5090 unlk a6
5091 rts
5092 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$String_cc
5093 .stabs "_init",10,0,0,0
5094 .stabs "__GLOBAL_$I$String_cc",4,0,0,0
5095 LC6:
5096 .ascii "[ \12\11\15\13\14]+\0"
5097 LC7:
5098 .ascii "-?[0-9]+\0"
5099 LC8:
5100 .ascii "-?\\(\\([0-9]+\\.[0-9]*\\)\\|\\([0-9]+\\)\\|\\(\\.[0-9]+\\)\\)\\([eE][---+]?[0-9]+\\)?\0"
5101 LC9:
5102 .ascii "[A-Za-z]+\0"
5103 LC10:
5104 .ascii "[a-z]+\0"
5105 LC11:
5106 .ascii "[A-Z]+\0"
5107 LC12:
5108 .ascii "[0-9A-Za-z]+\0"
5109 LC13:
5110 .ascii "[A-Za-z_][A-Za-z0-9_]*\0"
5111 .even
5112 .globl __GLOBAL_$I$String_cc
5113 __GLOBAL_$I$String_cc:
5114 link a6,#0
5115 moveml #0x3020,sp@-
============ Listing of String.s ============ PAGE 94
5116 movel #__nilStrRep,__nilString
5117 moveq #1,d2
5118 moveq #40,d3
5119 clrl sp@-
5120 movel d3,sp@-
5121 movel d2,sp@-
5122 pea -1:w
5123 pea LC6
5124 pea _RXwhite
5125 lea _initialize__5RegexPCciiiT0,a2
5126 jbsr a2@
5127 addw #24,sp
5128 clrl sp@-
5129 movel d3,sp@-
5130 movel d2,sp@-
5131 pea -1:w
5132 pea LC7
5133 pea _RXint
5134 jbsr a2@
5135 addw #24,sp
5136 clrl sp@-
5137 pea 200:w
5138 movel d2,sp@-
5139 pea -1:w
5140 pea LC8
5141 pea _RXdouble
5142 jbsr a2@
5143 addw #24,sp
5144 clrl sp@-
5145 movel d3,sp@-
5146 movel d2,sp@-
5147 pea -1:w
5148 pea LC9
5149 pea _RXalpha
5150 jbsr a2@
5151 addw #24,sp
5152 clrl sp@-
5153 movel d3,sp@-
5154 movel d2,sp@-
5155 pea -1:w
5156 pea LC10
5157 pea _RXlowercase
5158 jbsr a2@
5159 addw #24,sp
5160 clrl sp@-
5161 movel d3,sp@-
5162 movel d2,sp@-
5163 pea -1:w
5164 pea LC11
5165 pea _RXuppercase
5166 jbsr a2@
5167 addw #24,sp
5168 clrl sp@-
5169 movel d3,sp@-
5170 movel d2,sp@-
============ Listing of String.s ============ PAGE 95
5171 pea -1:w
5172 pea LC12
5173 pea _RXalphanum
5174 jbsr a2@
5175 addw #24,sp
5176 clrl sp@-
5177 movel d3,sp@-
5178 movel d2,sp@-
5179 pea -1:w
5180 pea LC13
5181 pea _RXidentifier
5182 jbsr a2@
5183 moveml a6@(-12),#0x40c
5184 unlk a6
5185 rts
5186 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$String_cc
============ Listing Complete ============
============ Listing of builtin.cc ============ PAGE 1
1 /*
2 Copyright (C) 1988 Free Software Foundation
3 written by Doug Lea (dl@rocky.oswego.edu)
4
5 This file is part of GNU CC.
6
7 GNU CC is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY. No author or distributor
9 accepts responsibility to anyone for the consequences of using it
10 or for whether it serves any particular purpose or works at all,
11 unless he says so in writing. Refer to the GNU CC General Public
12 License for full details.
13
14 Everyone is granted permission to copy, modify and redistribute
15 GNU CC, but only under the conditions described in the
16 GNU CC General Public License. A copy of this license is
17 supposed to have been given to you along with GNU CC so you
18 can know your rights and responsibilities. It should be in a
19 file named COPYING. Among other things, the copyright notice
20 and this notice must be preserved on all copies.
21 */
22
23 #include <builtin.h>
24 #include <math.h>
25 #include <stdio.h>
26 #include <stdarg.h>
27 #include <values.h>
28 #include <Obstack.h>
29 #include <AllocQueue.h>
30 #include <float.h>
31
32 /*
33 common functions on built-in types
34 */
35
36 long gcd(long x, long y) // euclid's algorithm
37 {
38 long a = abs(x);
39 long b = abs(y);
40
41 long tmp;
42
43 if (b > a)
44 {
45 tmp = a; a = b; b = tmp;
46 }
47 for(;;)
48 {
49 if (b == 0)
50 return a;
51 else if (b == 1)
52 return b;
53 else
54 {
55 tmp = b;
============ Listing of builtin.cc ============ PAGE 2
56 b = a % b;
57 a = tmp;
58 }
59 }
60 }
61
62 double pow(double x, long p)
63 {
64 if (p == 0)
65 return (x < 0 && (p & 1)) ? -1.0 : 1.0;
66 else if (x == 0.0)
67 return 0.0;
68 else
69 {
70 double b;
71 if (p < 0)
72 {
73 p = -p;
74 b = 1.0 / x;
75 }
76 else
77 b = x;
78 double r = 1.0;
79 for(;;)
80 {
81 if (p & 1)
82 r *= b;
83 if ((p >>= 1) == 0)
84 return r;
85 else
86 b *= b;
87 }
88 }
89 }
90
91 long lg(long x)
92 {
93 long l = 0;
94 unsigned long a = abs(x);
95
96 while (a > 1)
97 {
98 a = a >> 1;
99 ++l;
100 }
101 return l;
102 }
103
104 long pow(long x, long y)
105 {
106 if (x == 0)
107 return (y == 0)? 1 : 0;
108 else if (y < 0)
109 return 0;
110 else if (y == 0 || x == 1)
============ Listing of builtin.cc ============ PAGE 3
111 return 1;
112 else if (x == -1)
113 return (y & 1)? -1 : 1;
114 else
115 {
116 long r = 1;
117 for(;;)
118 {
119 if (y & 1)
120 r *= x;
121 if ((y >>= 1) == 0)
122 return r;
123 else
124 x *= x;
125 }
126 }
127 }
128
129 long sqrt(long x)
130 {
131 if (x <= 0)
132 return 0; // no int error handler, so ...
133 else if (x == 1)
134 return 1;
135 else
136 {
137 long r = x >> 1;
138 long q;
139 for(;;)
140 {
141 q = x / r;
142 if (q >= r)
143 return r;
144 else
145 r = (r + q) >> 1;
146 }
147 }
148 }
149
150
151 // Obstacks are used as an easy way to allocate enough space
152 // for various input operations
153
154
155 Obstack _libgxx_io_ob;
156 char* _libgxx_io_oblast = 0;
157
158
159 // AllocQueues are used for output operations
160 // We guaranteee that the last _libgxx_maxfmt formats
161 // will be intact
162
163 static const int _libgxx_maxfmt = 20;
164 AllocQueue _libgxx_fmtq(_libgxx_maxfmt);
165
============ Listing of builtin.cc ============ PAGE 4
166 char* form(const char* fmt ...)
167 {
168 va_list args;
169 va_start(args, fmt);
170 char* fmtbase = _libgxx_fmtq.alloc(BUFSIZ);
171 #ifndef HAVE_VPRINTF
172 FILE b;
173 b._flag = _IOWRT|_IOSTRG;
174 b._ptr = fmtbase;
175 b._cnt = BUFSIZ-1;
176 _doprnt(fmt, args, &b);
177 putc('\0', &b);
178 #else
179 vsprintf(fmtbase, fmt, args);
180 #endif
181 va_end(args);
182 return fmtbase;
183 }
184
185 char* itoa(long x, int base = 10, int width = 0)
186 {
187 int wrksiz;
188 if (base == 10)
189 wrksiz = width + 13;
190 else
191 wrksiz = (BITS(long) + 1) / lg(base) + 1 + width + 1;
192
193 char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
194 char* e = fmtbase + wrksiz - 1;
195 char* s = e;
196 *--s = 0;
197 char sgn = 0;
198
199 if (x == 0)
200 *--s = '0';
201 else
202 {
203 int z;
204 if (x < 0)
205 {
206 sgn = '-';
207 z = -x;
208 }
209 else
210 z = x;
211 while (z != 0)
212 {
213 char ch = char(z % base);
214 z = z / base;
215 if (ch >= 10)
216 ch += 'a' - 10;
217 else
218 ch += '0';
219 *--s = ch;
220 }
============ Listing of builtin.cc ============ PAGE 5
221 }
222
223 if (sgn) *--s = sgn;
224 int w = e - s - 1;
225 while (w++ < width)
226 *--s = ' ';
227 return s;
228 }
229
230 char* itoa(unsigned long x, int base = 10, int width = 0)
231 {
232 int wrksiz;
233 if (base == 10)
234 wrksiz = width + 13;
235 else
236 wrksiz = (BITS(long) + 1) / lg(base) + 1 + width + 1;
237
238 char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
239 char* e = fmtbase + wrksiz - 1;
240 char* s = e;
241 *--s = 0;
242
243 if (x == 0)
244 *--s = '0';
245 else
246 {
247 unsigned int b = base;
248 while (x != 0)
249 {
250 char ch = char(x % b);
251 x = x / b;
252 if (ch >= 10)
253 ch += 'a' - 10;
254 else
255 ch += '0';
256 *--s = ch;
257 }
258 }
259
260 int w = e - s - 1;
261 while (w++ < width)
262 *--s = ' ';
263 return s;
264 }
265
266 char* itoa(long long x, int base = 10, int width = 0)
267 {
268 int wrksiz;
269 if (base == 10)
270 wrksiz = width + 23;
271 else
272 wrksiz = (BITS(long long) + 1) / lg(base) + 1 + width + 1;
273
274 char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
275 char* e = fmtbase + wrksiz - 1;
============ Listing of builtin.cc ============ PAGE 6
276 char* s = e;
277 *--s = 0;
278 char sgn = 0;
279
280 if (x == 0)
281 *--s = '0';
282 else
283 {
284 long long z;
285 if (x < 0)
286 {
287 sgn = '-';
288 z = -x;
289 }
290 else
291 z = x;
292 while (z != 0)
293 {
294 char ch = char(z % base);
295 z = z / base;
296 if (ch >= 10)
297 ch += 'a' - 10;
298 else
299 ch += '0';
300 *--s = ch;
301 }
302 }
303
304 if (sgn) *--s = sgn;
305 int w = e - s - 1;
306 while (w++ < width)
307 *--s = ' ';
308 return s;
309 }
310
311 char* itoa(unsigned long long x, int base = 10, int width = 0)
312 {
313 int wrksiz;
314 if (base == 10)
315 wrksiz = width + 23;
316 else
317 wrksiz = (BITS(long long) + 1) / lg(base) + 1 + width + 1;
318
319 char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
320 char* e = fmtbase + wrksiz - 1;
321 char* s = e;
322 *--s = 0;
323
324 if (x == 0)
325 *--s = '0';
326 else
327 {
328 unsigned int b = base;
329 while (x != 0)
330 {
============ Listing of builtin.cc ============ PAGE 7
331 char ch = char(x % b);
332 x = x / b;
333 if (ch >= 10)
334 ch += 'a' - 10;
335 else
336 ch += '0';
337 *--s = ch;
338 }
339 }
340
341 int w = e - s - 1;
342 while (w++ < width)
343 *--s = ' ';
344 return s;
345 }
346
347 char* hex(long i, int width = 0)
348 {
349 return itoa(i, 16, width);
350 }
351
352 char* oct(long i, int width = 0)
353 {
354 return itoa(i, 8, width);
355 }
356
357 char* dec(long i, int width = 0)
358 {
359 return itoa(i, 10, width);
360 }
361
362 char* hex(unsigned long i, int width = 0)
363 {
364 return itoa(i, 16, width);
365 }
366
367 char* oct(unsigned long i, int width = 0)
368 {
369 return itoa(i, 8, width);
370 }
371
372 char* dec(unsigned long i, int width = 0)
373 {
374 return itoa(i, 10, width);
375 }
376
377
378 char* dtoa(double fpnum, char cvt = 'g', int width = 0, int prec = 6)
379 {
380 // set up workspace
381
382 const int worksiz = DBL_DIG + DBL_MAX_10_EXP + 2; // max possible digits
383
384 // for fractional part
385 char fwork[worksiz];
============ Listing of builtin.cc ============ PAGE 8
386 char* fworkend = &fwork[sizeof(fwork) - 1];
387 char* fw = fwork;
388
389 // for integer part
390 char iwork[worksiz];
391 char* iworkend = &iwork[sizeof(iwork) - 1];
392 char* iw = iworkend;
393 *iw = 0;
394
395 // for exponent part
396 const int eworksiz = 30;
397 char ework[eworksiz];
398 char* eworkend = &ework[sizeof(ework) - 1];
399 char* ew = eworkend;
400 *ew = 0;
401
402 // grab sign & make non-negative
403 int is_neg = fpnum < 0;
404 if (is_neg) fpnum = -fpnum;
405
406 // precision matters
407
408 if (prec > worksiz - 2) // can't have more prec than supported
409 prec = worksiz - 2;
410
411 double powprec;
412 if (prec == 6)
413 powprec = 1.0e6;
414 else
415 powprec = pow(10.0, prec);
416
417 double rounder = 0.5 / powprec;
418
419 int f_fmt = cvt == 'f' ||
420 ((cvt == 'g') && (fpnum == 0.0 || (fpnum >= 1e-4 && fpnum < powprec)));
421
422 int iwidth = 0;
423 int fwidth = 0;
424 int ewidth = 0;
425
426 if (f_fmt) // fixed format
427 {
428 double ipart;
429 double fpart = modf(fpnum, &ipart);
430
431 // convert fractional part
432
433 if (fpart >= rounder || cvt != 'g')
434 {
435 fpart += rounder;
436 if (fpart >= 1.0)
437 {
438 ipart += 1.0;
439 fpart -= 1.0;
440 }
============ Listing of builtin.cc ============ PAGE 9
441 double ffpart = fpart;
442 double ifpart;
443 for (int i = 0; i < prec; ++i)
444 {
445 ffpart = modf(ffpart * 10.0, &ifpart);
446 *fw++ = '0' + int(ifpart);
447 ++fwidth;
448 }
449 if (cvt == 'g') // inhibit trailing zeroes if g-fmt
450 {
451 for (char* p = fw - 1; p >= fwork && *p == '0'; --p)
452 {
453 *p = 0;
454 --fwidth;
455 }
456 }
457 }
458
459 // convert integer part
460 if (ipart == 0.0)
461 {
462 if (cvt != 'g' || fwidth < prec || fwidth < width)
463 {
464 *--iw = '0'; ++iwidth;
465 }
466 }
467 else if (ipart <= double(MAXLONG)) // a useful speedup
468 {
469 long li = long(ipart);
470 while (li != 0)
471 {
472 *--iw = '0' + (li % 10);
473 li = li / 10;
474 ++iwidth;
475 }
476 }
477 else // the slow way
478 {
479 while (ipart > 0.5)
480 {
481 double ff = modf(ipart / 10.0, &ipart);
482 ff = (ff + 0.05) * 10.0;
483 *--iw = '0' + int(ff);
484 ++iwidth;
485 }
486 }
487
488 // g-fmt: kill part of frac if prec/width exceeded
489 if (cvt == 'g')
490 {
491 int m = prec;
492 if (m < width)
493 m = width;
494 int adj = iwidth + fwidth - m;
495 if (adj > fwidth)
============ Listing of builtin.cc ============ PAGE 10
496 adj = fwidth;
497 if (adj > 0)
498 {
499 int carry = 0;
500 for (char* f = &fwork[fwidth-1]; f >= fwork && adj > 0; --adj, --f)
501 {
502 --fwidth;
503 char ch = *f;
504 *f = 0;
505 if (ch > '5') // properly round: unavoidable propagation
506 {
507 int carry = 1;
508 for (char* p = f - 1; p >= fwork && carry; --p)
509 {
510 ++*p;
511 if (*p > '9')
512 *p = '0';
513 else
514 carry = 0;
515 }
516 if (carry)
517 {
518 for (p = iworkend - 1; p >= iw && carry; --p)
519 {
520 ++*p;
521 if (*p > '9')
522 *p = '0';
523 else
524 carry = 0;
525 }
526 if (carry)
527 {
528 *--iw = '1';
529 ++iwidth;
530 --adj;
531 }
532 }
533 }
534 }
535 }
536 }
537
538 }
539 else // e-fmt
540 {
541
542 // normalize
543 int exp = 0;
544 while (fpnum >= 10.0)
545 {
546 fpnum *= 0.1;
547 ++exp;
548 }
549 while (fpnum > 0.0 && fpnum < 1.0)
550 {
============ Listing of builtin.cc ============ PAGE 11
551 fpnum *= 10.0;
552 --exp;
553 }
554
555 double ipart;
556 double fpart = modf(fpnum, &ipart);
557
558
559 if (cvt == 'g') // used up one digit for int part...
560 {
561 --prec;
562 powprec /= 10.0;
563 rounder = 0.5 / powprec;
564 }
565
566 // convert fractional part -- almost same as above
567 if (fpart >= rounder || cvt != 'g')
568 {
569 fpart += rounder;
570 if (fpart >= 1.0)
571 {
572 fpart -= 1.0;
573 ipart += 1.0;
574 if (ipart >= 10.0)
575 {
576 ++exp;
577 ipart /= 10.0;
578 fpart /= 10.0;
579 }
580 }
581 double ffpart = fpart;
582 double ifpart;
583 for (int i = 0; i < prec; ++i)
584 {
585 ffpart = modf(ffpart * 10.0, &ifpart);
586 *fw++ = '0' + int(ifpart);
587 ++fwidth;
588 }
589 if (cvt == 'g') // inhibit trailing zeroes if g-fmt
590 {
591 for (char* p = fw - 1; p >= fwork && *p == '0'; --p)
592 {
593 *p = 0;
594 --fwidth;
595 }
596 }
597 }
598
599
600 // convert exponent
601
602 char eneg = exp < 0;
603 if (eneg) exp = - exp;
604
605 while (exp > 0)
============ Listing of builtin.cc ============ PAGE 12
606 {
607 *--ew = '0' + (exp % 10);
608 exp /= 10;
609 ++ewidth;
610 }
611
612 while (ewidth < 2) // ensure at least 2 zeroes
613 {
614 *--ew = '0';
615 ++ewidth;
616 }
617
618 *--ew = eneg ? '-' : '+';
619 *--ew = 'e';
620
621 ewidth += 2;
622
623 // convert the one-digit integer part
624 *--iw = '0' + int(ipart);
625 ++iwidth;
626
627 }
628
629 // arrange everything in returned string
630
631 int showdot = cvt != 'g' || fwidth > 0;
632
633 int fmtwidth = is_neg + iwidth + showdot + fwidth + ewidth;
634
635 int pad = width - fmtwidth;
636 if (pad < 0) pad = 0;
637
638 char* fmtbase = _libgxx_fmtq.alloc(fmtwidth + pad + 1);
639 char* fmt = fmtbase;
640
641 for (int i = 0; i < pad; ++i) *fmt++ = ' ';
642
643 if (is_neg) *fmt++ = '-';
644
645 for (i = 0; i < iwidth; ++i) *fmt++ = *iw++;
646
647 if (showdot)
648 {
649 *fmt++ = '.';
650 fw = fwork;
651 for (i = 0; i < fwidth; ++i) *fmt++ = *fw++;
652 }
653
654 for (i = 0; i < ewidth; ++i) *fmt++ = *ew++;
655
656 *fmt = 0;
657
658 return fmtbase;
659 }
660
============ Listing of builtin.cc ============ PAGE 13
661
662 static char chr_buf[2]; // fixed slot to hold chr(ch)
663
664 char* chr(char ch)
665 {
666 chr_buf[0] = ch;
667 chr_buf[1] = 0;
668 return chr_buf;
669 }
670
671 char* str(const char* s, int width = 0)
672 {
673 int len = strlen(s);
674 int wrksiz = len + width;
675 char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
676 char* fmt = fmtbase;
677 for (int blanks = width - len; blanks > 0; --blanks)
678 *fmt++ = ' ';
679 while (*s != 0)
680 *fmt++ = *s++;
681 *fmt = 0;
682 return fmtbase;
683 }
684
685 /*
686 some useful hash functions
687 */
688
689 unsigned int hashpjw(const char* x) // From Dragon book, p436
690 {
691 unsigned int h = 0;
692 unsigned int g;
693
694 while (*x != 0)
695 {
696 h = (h << 4) + *x++;
697 if ((g = h & 0xf0000000) != 0)
698 h = (h ^ (g >> 24)) ^ g;
699 }
700 return h;
701 }
702
703 unsigned int multiplicativehash(int x)
704 {
705 // uses a const close to golden ratio * pow(2,32)
706 return ((unsigned)x) * 2654435767;
707 }
708
709
710 unsigned int foldhash(double x)
711 {
712 union { unsigned int i[2]; double d; } u;
713 u.d = x;
714 unsigned int u0 = u.i[0];
715 unsigned int u1 = u.i[1];
============ Listing of builtin.cc ============ PAGE 14
716 return u0 ^ u1;
717 }
718
719 void default_one_arg_error_handler(const char* msg)
720 {
721 fputs("Error: ", stderr);
722 fputs(msg, stderr);
723 fputs("\n", stderr);
724 abort();
725 }
726
727
728 void default_two_arg_error_handler(const char* kind, const char* msg)
729 {
730 fputs(kind, stderr);
731 fputs(" Error: ", stderr);
732 fputs(msg, stderr);
733 fputs("\n", stderr);
734 abort();
735 }
736
737 two_arg_error_handler_t lib_error_handler = default_two_arg_error_handler;
738
739 two_arg_error_handler_t set_lib_error_handler(two_arg_error_handler_t f)
740 {
741 two_arg_error_handler_t old = lib_error_handler;
742 lib_error_handler = f;
743 return old;
744 }
745
746
747 // from Doug Schmidt...
748
749 /* no such thing as "negative time"! */
750 #define TIMER_ERROR_VALUE -1.0
751
752 // surely OK for these machines...
753
754 #if defined(BSD) || defined(USG) || defined(vax) || defined(sun)
755
756 #ifdef USG
757 extern "C" {
758 #include <sys/types.h>
759 #include <sys/param.h>
760 #include <sys/times.h>
761 }
762 #else
763 #include <osfcn.h>
764 #endif
765
766 #ifdef USG
767 static struct tms Old_Time;
768 static struct tms New_Time;
769 #else
770 static struct rusage Old_Time;
============ Listing of builtin.cc ============ PAGE 15
771 static struct rusage New_Time;
772 #endif
773 static int Timer_Set = 0;
774
775 double start_timer()
776 {
777 Timer_Set = 1;
778 #ifdef USG
779 times(&Old_Time);
780 return((double) Old_Time.tms_utime / HZ);
781 #else
782 getrusage(RUSAGE_SELF,&Old_Time); /* set starting process time */
783 return(Old_Time.ru_utime.tv_sec + (Old_Time.ru_utime.tv_usec / 1000000.0));
784 #endif
785 }
786
787 /* returns process time since Last_Time (if parameter is not DEFAULT_TIME, */
788 /* i.e., (double) 0.0 ),otherwise, if parameter == DEFAULT_TIME then */
789 /* the time since the Old_Time was set is returned. */
790 /* Returns TIMER_ERROR_VALUE */
791 /* if Start_Timer() is not called first */
792
793 double return_elapsed_time(double Last_Time)
794 {
795 if (!Timer_Set) {
796 return(TIMER_ERROR_VALUE);
797 }
798 else {
799 /* get process time */
800 #ifdef USG
801 times(&New_Time);
802 #else
803 getrusage(RUSAGE_SELF,&New_Time);
804 #endif
805 if (Last_Time == 0.0) {
806 #ifdef USG
807 return((double) (New_Time.tms_utime - Old_Time.tms_utime) / HZ);
808 #else
809 return((New_Time.ru_utime.tv_sec - Old_Time.ru_utime.tv_sec) +
810 ((New_Time.ru_utime.tv_usec - Old_Time.ru_utime.tv_usec)
811 / 1000000.0));
812 #endif
813 }
814 else {
815 #ifdef USG
816 return((double) New_Time.tms_utime / HZ - Last_Time);
817 #else
818 return((New_Time.ru_utime.tv_sec +
819 (New_Time.ru_utime.tv_usec / 1000000.0)) - Last_Time);
820 #endif
821 }
822 }
823 }
824
825 #else /* dummy them out */
============ Listing of builtin.cc ============ PAGE 16
826 double start_timer()
827 {
828 return TIMER_ERROR_VALUE;
829 }
830
831 double return_elapsed_time(double)
832 {
833 return TIMER_ERROR_VALUE;
834 }
835
836 #endif
837
838
839 #ifndef NO_GNULIB3
840 // from tiemann
841
842 /* Needed, in case there are no other objects which
843 need static initialization and cleanup. */
844 struct __xyzzy__
845 {
846 __xyzzy__ () {}
847 ~__xyzzy__ () {}
848 } __1xyzzy__;
849
850 #endif
============ Listing Complete ============
============ Listing of builtin.s ============ PAGE 1
1 #NO_APP
2 gcc_compiled.:
3 .text
4 .even
5 .globl _gcd__Fll
6 _gcd__Fll:
7 link a6,#0
8 moveml #0x3000,sp@-
9 movel a6@(8),d0
10 movel a6@(12),d2
11 tstl d0
12 jge L283
13 negl d0
14 L283:
15 movel d0,d1
16 tstl d2
17 jge L286
18 movel d2,d0
19 negl d0
20 jra L287
21 L286:
22 movel d2,d0
23 L287:
24 cmpl d0,d1
25 jge L288
26 movel d1,d2
27 movel d0,d1
28 movel d2,d0
29 L288:
30 L289:
31 tstl d0
32 jne L292
33 movel d1,d0
34 jra L281
35 L292:
36 moveq #1,d3
37 cmpl d0,d3
38 jeq L294
39 movel d0,d2
40 divsll d0,d0:d1
41 movel d2,d1
42 jra L289
43 L294:
44 L281:
45 moveml a6@(-8),#0xc
46 unlk a6
47 rts
48 .even
49 .globl _pow__Fdl
50 _pow__Fdl:
51 link a6,#0
52 fmovem #0x4,sp@-
53 fmoved a6@(8),fp0
54 movel a6@(16),d0
55 jne L297
============ Listing of builtin.s ============ PAGE 2
56 ftstx fp0
57 fjnlt L298
58 btst #0,d0
59 jeq L298
60 movel #-1074790400,d0
61 clrl d1
62 jra L296
63 L298:
64 movel #1072693248,d0
65 clrl d1
66 jra L296
67 L297:
68 ftstx fp0
69 fjne L301
70 clrl d0
71 clrl d1
72 jra L296
73 L301:
74 tstl d0
75 jge L303
76 negl d0
77 fmovecr #0x32,fp2
78 fdivx fp0,fp2
79 fmovex fp2,fp0
80 L303:
81 fmovecr #0x32,fp1
82 L305:
83 btst #0,d0
84 jeq L308
85 fmulx fp0,fp1
86 L308:
87 asrl #1,d0
88 jeq L309
89 fmulx fp0,fp0
90 jra L305
91 L309:
92 fmoved fp1,sp@-
93 movel sp@+,d0
94 movel sp@+,d1
95 L296:
96 fmovem a6@(-12),#0x20
97 unlk a6
98 rts
99 .even
100 .globl _lg__Fl
101 _lg__Fl:
102 link a6,#0
103 movel d2,sp@-
104 movel a6@(8),d0
105 clrl d1
106 tstl d0
107 jge L319
108 negl d0
109 jra L319
110 L317:
============ Listing of builtin.s ============ PAGE 3
111 lsrl #1,d0
112 addql #1,d1
113 L319:
114 moveq #1,d2
115 cmpl d0,d2
116 jcs L317
117 movel d1,d0
118 movel a6@(-4),d2
119 unlk a6
120 rts
121 .even
122 .globl _pow__Fll
123 _pow__Fll:
124 link a6,#0
125 moveml #0x3000,sp@-
126 movel a6@(8),d0
127 movel a6@(12),d1
128 tstl d0
129 jne L321
130 tstl d1
131 jeq L331
132 jra L340
133 L321:
134 tstl d1
135 jge L325
136 L340:
137 clrl d0
138 jra L320
139 L325:
140 tstl d1
141 jeq L331
142 moveq #1,d3
143 cmpl d0,d3
144 jeq L331
145 moveq #-1,d3
146 cmpl d0,d3
147 jne L330
148 btst #0,d1
149 jeq L331
150 moveq #-1,d0
151 jra L320
152 L331:
153 moveq #1,d0
154 jra L320
155 L330:
156 moveq #1,d2
157 L334:
158 btst #0,d1
159 jeq L337
160 mulsl d0,d2
161 L337:
162 asrl #1,d1
163 jeq L338
164 mulsl d0,d0
165 jra L334
============ Listing of builtin.s ============ PAGE 4
166 L338:
167 movel d2,d0
168 L320:
169 moveml a6@(-8),#0xc
170 unlk a6
171 rts
172 .even
173 .globl _sqrt__Fl
174 _sqrt__Fl:
175 link a6,#0
176 moveml #0x3000,sp@-
177 movel a6@(8),d2
178 jgt L342
179 clrl d0
180 jra L341
181 L342:
182 moveq #1,d3
183 cmpl d2,d3
184 jne L344
185 moveq #1,d0
186 jra L341
187 L344:
188 movel d2,d0
189 L351:
190 asrl #1,d0
191 movel d2,d1
192 divsl d0,d1
193 cmpl d1,d0
194 jle L341
195 addl d1,d0
196 jra L351
197 L341:
198 moveml a6@(-8),#0xc
199 unlk a6
200 rts
201 .globl __libgxx_io_ob
202 .data
203 .even
204 __libgxx_io_ob:
205 .skip 24
206 .globl __libgxx_io_oblast
207 .even
208 __libgxx_io_oblast:
209 .long 0
210 .globl __libgxx_fmtq
211 .even
212 __libgxx_fmtq:
213 .skip 12
214 .text
215 .even
216 .globl _form__FPCce
217 _form__FPCce:
218 link a6,#0
219 moveml #0x3000,sp@-
220 moveq #12,d2
============ Listing of builtin.s ============ PAGE 5
221 addl a6,d2
222 pea 1024:w
223 pea __libgxx_fmtq
224 jbsr _alloc__10AllocQueuei
225 movel d0,d3
226 movel d2,sp@-
227 movel a6@(8),sp@-
228 movel d3,sp@-
229 jbsr _vsprintf
230 movel d3,d0
231 moveml a6@(-8),#0xc
232 unlk a6
233 rts
234 .even
235 .globl _itoa__Flii
236 _itoa__Flii:
237 link a6,#0
238 moveml #0x3e30,sp@-
239 movel a6@(8),d5
240 movel a6@(12),d4
241 movel a6@(16),a3
242 moveq #10,d6
243 cmpl d4,d6
244 jne L354
245 lea a3@(13),a2
246 jra L355
247 L354:
248 movel d4,sp@-
249 jbsr _lg__Fl
250 moveq #33,d1
251 divsl d0,d1
252 lea a3@(2,d1:l),a2
253 addqw #4,sp
254 L355:
255 movel a2,sp@-
256 pea __libgxx_fmtq
257 jbsr _alloc__10AllocQueuei
258 movel d0,a0
259 lea a2@(-1,a0:l),a0
260 movel a0,d3
261 clrb a0@-
262 clrb d2
263 tstl d5
264 jne L356
265 moveb #48,a0@-
266 jra L357
267 L356:
268 tstl d5
269 jge L358
270 moveb #45,d2
271 movel d5,d0
272 negl d0
273 jra L370
274 L358:
275 movel d5,d0
============ Listing of builtin.s ============ PAGE 6
276 jra L370
277 L364:
278 divsll d4,d1:d0
279 cmpb #9,d1
280 jle L362
281 addb #87,d1
282 jra L363
283 L362:
284 addb #48,d1
285 L363:
286 moveb d1,a0@-
287 L370:
288 tstl d0
289 jne L364
290 L357:
291 tstb d2
292 jeq L365
293 moveb d2,a0@-
294 L365:
295 movel d3,d1
296 subl a0,d1
297 subql #1,d1
298 jra L366
299 L368:
300 moveb #32,a0@-
301 L366:
302 movel d1,d0
303 addql #1,d1
304 cmpl d0,a3
305 jgt L368
306 movel a0,d0
307 moveml a6@(-28),#0xc7c
308 unlk a6
309 rts
310 .even
311 .globl _itoa__FUlii
312 _itoa__FUlii:
313 link a6,#0
314 moveml #0x3c30,sp@-
315 movel a6@(8),d2
316 movel a6@(12),d3
317 movel a6@(16),a3
318 moveq #10,d5
319 cmpl d3,d5
320 jne L372
321 lea a3@(13),a2
322 jra L373
323 L372:
324 movel d3,sp@-
325 jbsr _lg__Fl
326 moveq #33,d1
327 divsl d0,d1
328 lea a3@(2,d1:l),a2
329 addqw #4,sp
330 L373:
============ Listing of builtin.s ============ PAGE 7
331 movel a2,sp@-
332 pea __libgxx_fmtq
333 jbsr _alloc__10AllocQueuei
334 movel d0,a0
335 lea a2@(-1,a0:l),a0
336 movel a0,d4
337 clrb a0@-
338 tstl d2
339 jne L385
340 moveb #48,a0@-
341 jra L375
342 L380:
343 movel d2,d0
344 divull d3,d1:d0
345 movel d0,d2
346 cmpb #9,d1
347 jle L378
348 addb #87,d1
349 jra L379
350 L378:
351 addb #48,d1
352 L379:
353 moveb d1,a0@-
354 L385:
355 tstl d2
356 jne L380
357 L375:
358 movel d4,d1
359 subl a0,d1
360 subql #1,d1
361 jra L381
362 L383:
363 moveb #32,a0@-
364 L381:
365 movel d1,d0
366 addql #1,d1
367 cmpl d0,a3
368 jgt L383
369 movel a0,d0
370 moveml a6@(-24),#0xc3c
371 unlk a6
372 rts
373 .even
374 .globl _itoa__Fxii
375 _itoa__Fxii:
376 link a6,#0
377 moveml #0x3f3c,sp@-
378 movel a6@(8),a4
379 movel a6@(12),a5
380 movel a6@(16),d5
381 movel a6@(20),a3
382 moveq #10,d4
383 cmpl d5,d4
384 jne L387
385 lea a3@(23),a2
============ Listing of builtin.s ============ PAGE 8
386 jra L388
387 L387:
388 movel d5,sp@-
389 jbsr _lg__Fl
390 moveq #65,d1
391 divsl d0,d1
392 lea a3@(2,d1:l),a2
393 addqw #4,sp
394 L388:
395 movel a2,sp@-
396 pea __libgxx_fmtq
397 jbsr _alloc__10AllocQueuei
398 movel d0,a0
399 lea a2@(-1,a0:l),a2
400 movel a2,d7
401 clrb a2@-
402 clrb d6
403 addqw #8,sp
404 clrl d3
405 clrl d4
406 movel d4,sp@-
407 movel d3,sp@-
408 movel a5,sp@-
409 movel a4,sp@-
410 jbsr ___cmpdi2
411 addw #16,sp
412 moveq #1,d4
413 cmpl d0,d4
414 jne L389
415 moveb #48,a2@-
416 jra L390
417 L389:
418 clrl d3
419 clrl d4
420 movel d4,sp@-
421 movel d3,sp@-
422 movel a5,sp@-
423 movel a4,sp@-
424 jbsr ___cmpdi2
425 addw #16,sp
426 moveq #1,d4
427 cmpl d0,d4
428 jle L393
429 moveb #45,d6
430 movel a5,sp@-
431 movel a4,sp@-
432 jbsr ___negdi2
433 addqw #8,sp
434 movel d0,a4
435 movel d1,a5
436 jra L393
437 L399:
438 clrl d1
439 movel d5,d0
440 jge L395
============ Listing of builtin.s ============ PAGE 9
441 notl d1
442 L395:
443 movel d1,sp@-
444 movel d0,sp@-
445 movel a5,sp@-
446 movel a4,sp@-
447 jbsr ___moddi3
448 addw #16,sp
449 moveb d0,d2
450 clrl d1
451 movel d5,d0
452 jge L396
453 notl d1
454 L396:
455 movel d1,sp@-
456 movel d0,sp@-
457 movel a5,sp@-
458 movel a4,sp@-
459 jbsr ___divdi3
460 addw #16,sp
461 movel d0,a4
462 movel d1,a5
463 cmpb #9,d2
464 jle L397
465 addb #87,d2
466 jra L398
467 L397:
468 addb #48,d2
469 L398:
470 moveb d2,a2@-
471 L393:
472 clrl d3
473 clrl d4
474 movel d4,sp@-
475 movel d3,sp@-
476 movel a5,sp@-
477 movel a4,sp@-
478 jbsr ___cmpdi2
479 addw #16,sp
480 moveq #1,d4
481 cmpl d0,d4
482 jne L399
483 L390:
484 tstb d6
485 jeq L400
486 moveb d6,a2@-
487 L400:
488 movel d7,d1
489 subl a2,d1
490 subql #1,d1
491 jra L401
492 L403:
493 moveb #32,a2@-
494 L401:
495 movel d1,d0
============ Listing of builtin.s ============ PAGE 10
496 addql #1,d1
497 cmpl d0,a3
498 jgt L403
499 movel a2,d0
500 moveml a6@(-40),#0x3cfc
501 unlk a6
502 rts
503 .even
504 .globl _itoa__FUxii
505 _itoa__FUxii:
506 link a6,#0
507 moveml #0x3f3c,sp@-
508 movel a6@(8),a4
509 movel a6@(12),a5
510 movel a6@(16),d2
511 movel a6@(20),a3
512 moveq #10,d5
513 cmpl d2,d5
514 jne L405
515 lea a3@(23),a2
516 jra L406
517 L405:
518 movel d2,sp@-
519 jbsr _lg__Fl
520 moveq #65,d1
521 divsl d0,d1
522 lea a3@(2,d1:l),a2
523 addqw #4,sp
524 L406:
525 movel a2,sp@-
526 pea __libgxx_fmtq
527 jbsr _alloc__10AllocQueuei
528 movel d0,a0
529 lea a2@(-1,a0:l),a2
530 movel a2,d7
531 clrb a2@-
532 addqw #8,sp
533 clrl d5
534 clrl d6
535 movel d6,sp@-
536 movel d5,sp@-
537 movel a5,sp@-
538 movel a4,sp@-
539 jbsr ___ucmpdi2
540 addw #16,sp
541 moveq #1,d5
542 cmpl d0,d5
543 jne L407
544 moveb #48,a2@-
545 jra L408
546 L407:
547 movel d2,d3
548 jra L409
549 L413:
550 movel d3,d0
============ Listing of builtin.s ============ PAGE 11
551 clrl d1
552 movel d1,sp@-
553 movel d0,sp@-
554 movel a5,sp@-
555 movel a4,sp@-
556 jbsr ___umoddi3
557 addw #16,sp
558 moveb d0,d2
559 movel d3,d0
560 clrl d1
561 movel d1,sp@-
562 movel d0,sp@-
563 movel a5,sp@-
564 movel a4,sp@-
565 jbsr ___udivdi3
566 addw #16,sp
567 movel d0,a4
568 movel d1,a5
569 cmpb #9,d2
570 jle L411
571 addb #87,d2
572 jra L412
573 L411:
574 addb #48,d2
575 L412:
576 moveb d2,a2@-
577 L409:
578 clrl d5
579 clrl d6
580 movel d6,sp@-
581 movel d5,sp@-
582 movel a5,sp@-
583 movel a4,sp@-
584 jbsr ___ucmpdi2
585 addw #16,sp
586 moveq #1,d5
587 cmpl d0,d5
588 jne L413
589 L408:
590 movel d7,d1
591 subl a2,d1
592 subql #1,d1
593 jra L414
594 L416:
595 moveb #32,a2@-
596 L414:
597 movel d1,d0
598 addql #1,d1
599 cmpl d0,a3
600 jgt L416
601 movel a2,d0
602 moveml a6@(-40),#0x3cfc
603 unlk a6
604 rts
605 .even
============ Listing of builtin.s ============ PAGE 12
606 .globl _hex__Fli
607 _hex__Fli:
608 link a6,#0
609 movel a6@(12),sp@-
610 pea 16:w
611 movel a6@(8),sp@-
612 jbsr _itoa__Flii
613 unlk a6
614 rts
615 .even
616 .globl _oct__Fli
617 _oct__Fli:
618 link a6,#0
619 movel a6@(12),sp@-
620 pea 8:w
621 movel a6@(8),sp@-
622 jbsr _itoa__Flii
623 unlk a6
624 rts
625 .even
626 .globl _dec__Fli
627 _dec__Fli:
628 link a6,#0
629 movel a6@(12),sp@-
630 pea 10:w
631 movel a6@(8),sp@-
632 jbsr _itoa__Flii
633 unlk a6
634 rts
635 .even
636 .globl _hex__FUli
637 _hex__FUli:
638 link a6,#0
639 movel a6@(12),sp@-
640 pea 16:w
641 movel a6@(8),sp@-
642 jbsr _itoa__FUlii
643 unlk a6
644 rts
645 .even
646 .globl _oct__FUli
647 _oct__FUli:
648 link a6,#0
649 movel a6@(12),sp@-
650 pea 8:w
651 movel a6@(8),sp@-
652 jbsr _itoa__FUlii
653 unlk a6
654 rts
655 .even
656 .globl _dec__FUli
657 _dec__FUli:
658 link a6,#0
659 movel a6@(12),sp@-
660 pea 10:w
============ Listing of builtin.s ============ PAGE 13
661 movel a6@(8),sp@-
662 jbsr _itoa__FUlii
663 unlk a6
664 rts
665 .even
666 .globl _dtoa__Fdcii
667 _dtoa__Fdcii:
668 link a6,#-724
669 fmovem #0x3c,sp@-
670 moveml #0x3f3c,sp@-
671 fmoved a6@(8),fp2
672 moveb a6@(19),d6
673 movel a6@(24),d3
674 lea a6@(-326),a2
675 lea a6@(-328),a4
676 movel a4,a6@(-722)
677 clrb a4@
678 lea a6@(-653),a5
679 clrb a5@
680 ftstx fp2
681 fslt d0
682 moveq #1,d7
683 andl d7,d0
684 movel d0,a6@(-718)
685 jeq L424
686 fnegx fp2,fp2
687 L424:
688 cmpl #323,d3
689 jle L425
690 movel #323,d3
691 L425:
692 moveq #6,d7
693 cmpl d3,d7
694 jne L426
695 fmoved #0r1000000,fp1
696 jra L427
697 L426:
698 movel d3,sp@-
699 clrl sp@-
700 movel #1076101120,sp@-
701 jbsr _pow__Fdl
702 movel d1,sp@-
703 movel d0,sp@-
704 fmoved sp@+,fp1
705 addw #12,sp
706 L427:
707 fmoved #0r.5,fp3
708 fdivx fp1,fp3
709 clrl d0
710 cmpb #102,d6
711 jeq L429
712 cmpb #103,d6
713 jne L428
714 ftstx fp2
715 fjeq L429
============ Listing of builtin.s ============ PAGE 14
716 fcmpd #0r0.00010000000000000000479,fp2
717 fjnge L428
718 fcmpx fp1,fp2
719 fjnlt L428
720 L429:
721 moveq #1,d0
722 L428:
723 clrl d4
724 subl a3,a3
725 clrl d5
726 tstl d0
727 jeq L430
728 #APP
729 fintrzx fp2,fp0
730 #NO_APP
731 fmoved fp0,a6@(-690)
732 fsubx fp0,fp2
733 fmovex fp2,fp0
734 fcmpx fp3,fp0
735 fjge L433
736 cmpb #103,d6
737 jeq L432
738 L433:
739 faddx fp3,fp0
740 fmovecr #0x32,fp4
741 fcmpx fp4,fp0
742 fjnge L434
743 fmovecr #0x32,fp4
744 faddd a6@(-690),fp4
745 fmoved fp4,a6@(-690)
746 fmovecr #0x32,fp4
747 fsubx fp4,fp0
748 L434:
749 fmovex fp0,fp1
750 clrl d1
751 cmpl d1,d3
752 jle L546
753 lea a6@(-698),a0
754 L439:
755 fmovecr #0x33,fp0
756 fmulx fp1,fp0
757 #APP
758 fintrzx fp0,fp1
759 #NO_APP
760 fmoved fp1,a0@
761 fsubx fp1,fp0
762 fmovex fp0,fp1
763 fintrzd a6@(-698),fp0
764 fmovel fp0,d0
765 addb #48,d0
766 moveb d0,a2@+
767 addqw #1,a3
768 addql #1,d1
769 cmpl d1,d3
770 jgt L439
============ Listing of builtin.s ============ PAGE 15
771 L546:
772 cmpb #103,d6
773 jne L432
774 lea a2@(-1),a0
775 movel a6,d0
776 addl #-326,d0
777 jra L441
778 L444:
779 cmpb #48,a0@
780 jne L432
781 clrb a0@
782 subqw #1,a3
783 subqw #1,a0
784 L441:
785 cmpl a0,d0
786 jls L444
787 L432:
788 ftstd a6@(-690)
789 fjne L445
790 cmpb #103,d6
791 jne L447
792 cmpl a3,d3
793 jgt L447
794 cmpl a6@(20),a3
795 jge L448
796 L447:
797 moveb #48,a4@-
798 addql #1,d4
799 jra L448
800 L445:
801 fmoved a6@(-690),fp4
802 fcmpd #0r2147483647,fp4
803 fjnle L449
804 fintrzd a6@(-690),fp0
805 fmovel fp0,d0
806 tstl d0
807 jeq L448
808 L452:
809 moveq #10,d7
810 divsll d7,d1:d0
811 addb #48,d1
812 moveb d1,a4@-
813 addql #1,d4
814 tstl d0
815 jne L452
816 jra L448
817 L449:
818 fmoved a6@(-690),fp4
819 fcmpd #0r.5,fp4
820 fjngt L448
821 lea a6@(-690),a0
822 L457:
823 fmoved a6@(-690),fp0
824 fmovecr #0x33,fp4
825 fdivx fp4,fp0
============ Listing of builtin.s ============ PAGE 16
826 #APP
827 fintrzx fp0,fp1
828 #NO_APP
829 fmoved fp1,a0@
830 fsubx fp1,fp0
831 faddd #0r0.050000000000000002776,fp0
832 fmovecr #0x33,fp4
833 fmulx fp4,fp0
834 fintrzx fp0,fp0
835 fmovel fp0,d0
836 addb #48,d0
837 moveb d0,a4@-
838 addql #1,d4
839 fmoved a6@(-690),fp4
840 fcmpd #0r.5,fp4
841 fjgt L457
842 L448:
843 cmpb #103,d6
844 jne L481
845 movel d3,d0
846 cmpl a6@(20),d3
847 jge L459
848 movel a6@(20),d0
849 L459:
850 movel d4,d1
851 addl a3,d1
852 subl d0,d1
853 cmpl d1,a3
854 jge L460
855 movel a3,d1
856 L460:
857 tstl d1
858 jle L481
859 lea a6@(-326),a0
860 lea a0@(-1,a3:l),a1
861 movel a6,d2
862 addl #-326,d2
863 jra L462
864 L480:
865 tstl d1
866 jle L481
867 subqw #1,a3
868 moveb a1@,d0
869 clrb a1@
870 cmpb #53,d0
871 jle L464
872 moveq #1,d0
873 lea a1@(-1),a0
874 jra L466
875 L471:
876 tstl d0
877 jeq L467
878 addqb #1,a0@
879 cmpb #57,a0@
880 jle L469
============ Listing of builtin.s ============ PAGE 17
881 moveb #48,a0@
882 jra L468
883 L469:
884 clrl d0
885 L468:
886 subqw #1,a0
887 L466:
888 cmpl a0,d2
889 jls L471
890 L467:
891 tstl d0
892 jeq L464
893 movel a6@(-722),a0
894 jra L475
895 L478:
896 tstl d0
897 jeq L474
898 addqb #1,a0@
899 cmpb #57,a0@
900 jle L476
901 moveb #48,a0@
902 jra L475
903 L476:
904 clrl d0
905 L475:
906 subqw #1,a0
907 cmpl a0,a4
908 jls L478
909 L474:
910 tstl d0
911 jeq L464
912 moveb #49,a4@-
913 addql #1,d4
914 subql #1,d1
915 L464:
916 subql #1,d1
917 subqw #1,a1
918 L462:
919 cmpl a1,d2
920 jls L480
921 jra L481
922 L430:
923 clrl d2
924 fmovecr #0x33,fp4
925 fcmpx fp4,fp2
926 fjnge L542
927 L484:
928 fmuld #0r.10000000000000000555,fp2
929 addql #1,d2
930 fmovecr #0x33,fp4
931 fcmpx fp4,fp2
932 fjge L484
933 L542:
934 ftstx fp2
935 fjngt L486
============ Listing of builtin.s ============ PAGE 18
936 L487:
937 fmovecr #0x32,fp4
938 fcmpx fp4,fp2
939 fjnlt L486
940 fmovecr #0x33,fp4
941 fmulx fp4,fp2
942 subql #1,d2
943 ftstx fp2
944 fjgt L487
945 L486:
946 #APP
947 fintrzx fp2,fp0
948 #NO_APP
949 fmoved fp0,a6@(-706)
950 fsubx fp0,fp2
951 fmovex fp2,fp0
952 cmpb #103,d6
953 jne L489
954 subql #1,d3
955 fmovecr #0x33,fp4
956 fdivx fp4,fp1
957 fmoved #0r.5,fp3
958 fdivx fp1,fp3
959 L489:
960 fcmpx fp3,fp0
961 fjge L491
962 cmpb #103,d6
963 jeq L490
964 L491:
965 faddx fp3,fp0
966 fmovecr #0x32,fp4
967 fcmpx fp4,fp0
968 fjnge L492
969 fmovecr #0x32,fp4
970 fsubx fp4,fp0
971 fmovecr #0x32,fp4
972 faddd a6@(-706),fp4
973 fmoved fp4,a6@(-706)
974 fmovecr #0x33,fp4
975 fcmpd a6@(-706),fp4
976 fjnle L492
977 addql #1,d2
978 fmoved a6@(-706),fp4
979 fmovecr #0x33,fp5
980 fdivx fp5,fp4
981 fmoved fp4,a6@(-706)
982 fmovecr #0x33,fp4
983 fdivx fp4,fp0
984 L492:
985 fmovex fp0,fp1
986 clrl d1
987 cmpl d1,d3
988 jle L540
989 lea a6@(-714),a0
990 L498:
============ Listing of builtin.s ============ PAGE 19
991 fmovecr #0x33,fp0
992 fmulx fp1,fp0
993 #APP
994 fintrzx fp0,fp1
995 #NO_APP
996 fmoved fp1,a0@
997 fsubx fp1,fp0
998 fmovex fp0,fp1
999 fintrzd a6@(-714),fp0
1000 fmovel fp0,d0
1001 addb #48,d0
1002 moveb d0,a2@+
1003 addqw #1,a3
1004 addql #1,d1
1005 cmpl d1,d3
1006 jgt L498
1007 L540:
1008 cmpb #103,d6
1009 jne L490
1010 lea a2@(-1),a0
1011 movel a6,d0
1012 addl #-326,d0
1013 jra L500
1014 L503:
1015 cmpb #48,a0@
1016 jne L490
1017 clrb a0@
1018 subqw #1,a3
1019 subqw #1,a0
1020 L500:
1021 cmpl a0,d0
1022 jls L503
1023 L490:
1024 tstl d2
1025 slt d3
1026 andb #1,d3
1027 jeq L547
1028 negl d2
1029 jra L547
1030 L507:
1031 movel d2,d0
1032 moveq #10,d7
1033 divsll d7,d1:d0
1034 addb #48,d1
1035 moveb d1,a5@-
1036 movel d0,d2
1037 addql #1,d5
1038 L547:
1039 tstl d2
1040 jgt L507
1041 jra L548
1042 L510:
1043 moveb #48,a5@-
1044 addql #1,d5
1045 L548:
============ Listing of builtin.s ============ PAGE 20
1046 moveq #1,d7
1047 cmpl d5,d7
1048 jge L510
1049 subqw #1,a5
1050 tstb d3
1051 jeq L511
1052 moveb #45,d0
1053 jra L512
1054 L511:
1055 moveb #43,d0
1056 L512:
1057 moveb d0,a5@
1058 moveb #101,a5@-
1059 addql #2,d5
1060 fintrzd a6@(-706),fp0
1061 fmovel fp0,d0
1062 addb #48,d0
1063 moveb d0,a4@-
1064 addql #1,d4
1065 L481:
1066 clrl d0
1067 cmpb #103,d6
1068 jne L514
1069 tstl a3
1070 jle L513
1071 L514:
1072 moveq #1,d0
1073 L513:
1074 movel d0,d2
1075 movel a6@(-718),a0
1076 addl d4,a0
1077 addl d2,a0
1078 addl a3,a0
1079 addl d5,a0
1080 movel a6@(20),a2
1081 subl a0,a2
1082 tstl a2
1083 jge L515
1084 subl a2,a2
1085 L515:
1086 pea a2@(1,a0:l)
1087 pea __libgxx_fmtq
1088 jbsr _alloc__10AllocQueuei
1089 movel d0,d1
1090 movel d1,a0
1091 clrl d0
1092 cmpl d0,a2
1093 jle L537
1094 L519:
1095 moveb #32,a0@+
1096 addql #1,d0
1097 cmpl d0,a2
1098 jgt L519
1099 L537:
1100 tstl a6@(-718)
============ Listing of builtin.s ============ PAGE 21
1101 jeq L520
1102 moveb #45,a0@+
1103 L520:
1104 clrl d0
1105 cmpl d0,d4
1106 jle L536
1107 L524:
1108 moveb a4@+,a0@+
1109 addql #1,d0
1110 cmpl d0,d4
1111 jgt L524
1112 L536:
1113 tstl d2
1114 jeq L525
1115 moveb #46,a0@+
1116 lea a6@(-326),a2
1117 clrl d0
1118 cmpl d0,a3
1119 jle L525
1120 L529:
1121 moveb a2@+,a0@+
1122 addql #1,d0
1123 cmpl d0,a3
1124 jgt L529
1125 L525:
1126 clrl d0
1127 cmpl d0,d5
1128 jle L534
1129 L533:
1130 moveb a5@+,a0@+
1131 addql #1,d0
1132 cmpl d0,d5
1133 jgt L533
1134 L534:
1135 clrb a0@
1136 movel d1,d0
1137 moveml a6@(-812),#0x3cfc
1138 fmovem a6@(-772),#0x3c
1139 unlk a6
1140 rts
1141 .even
1142 .globl _chr__Fc
1143 _chr__Fc:
1144 link a6,#0
1145 lea _chr_buf,a0
1146 moveb a6@(11),a0@
1147 clrb a0@(1)
1148 movel a0,d0
1149 unlk a6
1150 rts
1151 .even
1152 .globl _str__FPCci
1153 _str__FPCci:
1154 link a6,#0
1155 moveml #0x38,sp@-
============ Listing of builtin.s ============ PAGE 22
1156 movel a6@(8),a4
1157 movel a6@(12),a2
1158 movel a4,sp@-
1159 jbsr _strlen
1160 movel d0,a3
1161 pea a2@(a3:l)
1162 pea __libgxx_fmtq
1163 jbsr _alloc__10AllocQueuei
1164 movel d0,d1
1165 movel d1,a0
1166 movel a2,d0
1167 subl a3,d0
1168 tstl d0
1169 jle L560
1170 L554:
1171 moveb #32,a0@+
1172 subql #1,d0
1173 tstl d0
1174 jgt L554
1175 jra L560
1176 L557:
1177 moveb a4@+,a0@+
1178 L560:
1179 tstb a4@
1180 jne L557
1181 clrb a0@
1182 movel d1,d0
1183 moveml a6@(-12),#0x1c00
1184 unlk a6
1185 rts
1186 .even
1187 .globl _hashpjw__FPCc
1188 _hashpjw__FPCc:
1189 link a6,#0
1190 moveml #0x3000,sp@-
1191 movel a6@(8),a0
1192 clrl d2
1193 L567:
1194 tstb a0@
1195 jeq L566
1196 movel d2,d0
1197 lsll #4,d0
1198 moveb a0@+,d1
1199 extbl d1
1200 movel d0,d2
1201 addl d1,d2
1202 movel d2,d1
1203 andl #-268435456,d1
1204 jeq L567
1205 movel d1,d0
1206 moveq #24,d3
1207 lsrl d3,d0
1208 eorl d2,d0
1209 movel d0,d2
1210 eorl d1,d2
============ Listing of builtin.s ============ PAGE 23
1211 jra L567
1212 L566:
1213 movel d2,d0
1214 moveml a6@(-8),#0xc
1215 unlk a6
1216 rts
1217 .even
1218 .globl _multiplicativehash__Fi
1219 _multiplicativehash__Fi:
1220 link a6,#0
1221 movel a6@(8),d0
1222 mulsl #-1640531529,d0
1223 unlk a6
1224 rts
1225 .even
1226 .globl _foldhash__Fd
1227 _foldhash__Fd:
1228 link a6,#0
1229 movel a6@(8),d0
1230 movel a6@(12),d1
1231 eorl d1,d0
1232 unlk a6
1233 rts
1234 LC0:
1235 .ascii "Error: \0"
1236 LC1:
1237 .ascii "\12\0"
1238 .even
1239 .globl _default_one_arg_error_handler__FPCc
1240 _default_one_arg_error_handler__FPCc:
1241 link a6,#0
1242 moveml #0x2020,sp@-
1243 movel #__iob+40,d2
1244 movel d2,sp@-
1245 pea LC0
1246 lea _fputs,a2
1247 jbsr a2@
1248 movel d2,sp@-
1249 movel a6@(8),sp@-
1250 jbsr a2@
1251 movel d2,sp@-
1252 pea LC1
1253 jbsr a2@
1254 jbsr _abort
1255 moveml a6@(-8),#0x404
1256 unlk a6
1257 rts
1258 LC2:
1259 .ascii " Error: \0"
1260 .even
1261 .globl _default_two_arg_error_handler__FPCcT0
1262 _default_two_arg_error_handler__FPCcT0:
1263 link a6,#0
1264 moveml #0x2020,sp@-
1265 movel #__iob+40,d2
============ Listing of builtin.s ============ PAGE 24
1266 movel d2,sp@-
1267 movel a6@(8),sp@-
1268 lea _fputs,a2
1269 jbsr a2@
1270 movel d2,sp@-
1271 pea LC2
1272 jbsr a2@
1273 movel d2,sp@-
1274 movel a6@(12),sp@-
1275 jbsr a2@
1276 movel d2,sp@-
1277 pea LC1
1278 jbsr a2@
1279 addw #32,sp
1280 jbsr _abort
1281 moveml a6@(-8),#0x404
1282 unlk a6
1283 rts
1284 .globl _lib_error_handler
1285 .data
1286 .even
1287 _lib_error_handler:
1288 .long _default_two_arg_error_handler__FPCcT0
1289 .text
1290 .even
1291 .globl _set_lib_error_handler__FPFPCcPCc_v
1292 _set_lib_error_handler__FPFPCcPCc_v:
1293 link a6,#0
1294 movel _lib_error_handler,d0
1295 movel a6@(8),_lib_error_handler
1296 unlk a6
1297 rts
1298 .data
1299 .even
1300 _Timer_Set:
1301 .long 0
1302 .text
1303 .even
1304 .globl _start_timer__Fv
1305 _start_timer__Fv:
1306 link a6,#0
1307 movel d2,sp@-
1308 moveq #1,d2
1309 movel d2,_Timer_Set
1310 pea _Old_Time
1311 clrl sp@-
1312 jbsr _getrusage
1313 lea _Old_Time,a0
1314 fmovel a0@+,fp0
1315 fmovel a0@,fp1
1316 fdivd #0r1000000,fp1
1317 faddx fp1,fp0
1318 fmoved fp0,sp@-
1319 movel sp@+,d0
1320 movel sp@+,d1
============ Listing of builtin.s ============ PAGE 25
1321 movel a6@(-4),d2
1322 unlk a6
1323 rts
1324 .even
1325 .globl _return_elapsed_time__Fd
1326 _return_elapsed_time__Fd:
1327 link a6,#0
1328 fmovem #0x4,sp@-
1329 fmoved a6@(8),fp2
1330 tstl _Timer_Set
1331 jne L575
1332 movel #-1074790400,d0
1333 clrl d1
1334 jra L574
1335 L575:
1336 pea _New_Time
1337 clrl sp@-
1338 jbsr _getrusage
1339 ftstx fp2
1340 fjne L577
1341 lea _New_Time,a0
1342 lea _Old_Time,a1
1343 movel a0@+,d0
1344 subl a1@+,d0
1345 fmovel d0,fp0
1346 movel a0@,d0
1347 subl a1@,d0
1348 fmovel d0,fp1
1349 fdivd #0r1000000,fp1
1350 faddx fp1,fp0
1351 jra L579
1352 L577:
1353 lea _New_Time,a0
1354 fmovel a0@+,fp0
1355 fmovel a0@,fp1
1356 fdivd #0r1000000,fp1
1357 faddx fp1,fp0
1358 fsubx fp2,fp0
1359 L579:
1360 fmoved fp0,sp@-
1361 movel sp@+,d0
1362 movel sp@+,d1
1363 L574:
1364 fmovem a6@(-12),#0x20
1365 unlk a6
1366 rts
1367 .globl ___1xyzzy__
1368 .data
1369 .even
1370 ___1xyzzy__:
1371 .skip 1
1372 #.stabs "_fini",10,0,0,0
1373 #.stabs "__GLOBAL_$D$builtin_cc",4,0,0,0
1374 .text
1375 .even
============ Listing of builtin.s ============ PAGE 26
1376 .globl __GLOBAL_$D$builtin_cc
1377 __GLOBAL_$D$builtin_cc:
1378 link a6,#0
1379 clrl sp@-
1380 pea __libgxx_fmtq
1381 jbsr __$_AllocQueue
1382 addqw #8,sp
1383 clrl sp@-
1384 pea __libgxx_io_ob
1385 jbsr __free__7ObstackPv
1386 unlk a6
1387 rts
1388 #.stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$builtin_cc
1389 #.stabs "_init",10,0,0,0
1390 #.stabs "__GLOBAL_$I$builtin_cc",4,0,0,0
1391 .even
1392 .globl __GLOBAL_$I$builtin_cc
1393 __GLOBAL_$I$builtin_cc:
1394 link a6,#0
1395 pea 4:w
1396 pea 4092:w
1397 pea __libgxx_io_ob
1398 jbsr ___7Obstackii
1399 pea 20:w
1400 pea __libgxx_fmtq
1401 jbsr ___10AllocQueuei
1402 unlk a6
1403 rts
1404 #.stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$builtin_cc
1405 .lcomm _New_Time,72
1406 .lcomm _Old_Time,72
1407 .lcomm _chr_buf,2
============ Listing Complete ============
============ Listing of stream.cc ============ PAGE 1
1 // This may look like C code, but it is really -*- C++ -*-
2 /*
3 Copyright (C) 1989 Free Software Foundation
4 written by Doug Lea (dl@rocky.oswego.edu)
5
6 This file is part of GNU CC.
7
8 GNU CC is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY. No author or distributor
10 accepts responsibility to anyone for the consequences of using it
11 or for whether it serves any particular purpose or works at all,
12 unless he says so in writing. Refer to the GNU CC General Public
13 License for full details.
14
15 Everyone is granted permission to copy, modify and redistribute
16 GNU CC, but only under the conditions described in the
17 GNU CC General Public License. A copy of this license is
18 supposed to have been given to you along with GNU CC so you
19 can know your rights and responsibilities. It should be in a
20 file named COPYING. Among other things, the copyright notice
21 and this notice must be preserved on all copies.
22 */
23
24 /* *** Version 1.2 -- nearly 100% AT&T 1.2 compatible *** */
25
26 #include <stream.h>
27 #include <stdarg.h>
28 #include <values.h>
29 #include <ctype.h>
30 #include <Obstack.h>
31
32 ostream::ostream(streambuf* s)
33 : bp(s), state(_good), ownbuf(0) {}
34
35 ostream::ostream(int sz, char* buf)
36 : state(_good), ownbuf(1)
37 {
38 if (buf == 0)
39 {
40 buf = new char[sz];
41 bp = new streambuf(buf, sz);
42 bp->setbuf(buf, sz);
43 bp->alloc = 1;
44 }
45 else
46 {
47 bp = new streambuf(buf, sz);
48 bp->alloc = 0;
49 }
50 }
51
52
53 ostream::ostream(const char* filename, io_mode m, access_mode a)
54 : state(_good), ownbuf(1)
55 {
============ Listing of stream.cc ============ PAGE 2
56 bp = new Filebuf(filename, m, a);
57 }
58
59 ostream::ostream(const char* filename, const char* m)
60 : state(_good), ownbuf(1)
61 {
62 bp = new Filebuf(filename, m);
63 }
64
65 ostream::ostream(int filedesc, io_mode m)
66 : state(_good), ownbuf(1)
67 {
68 bp = new Filebuf(filedesc, m);
69 }
70
71 ostream::ostream(FILE* fileptr)
72 : state(_good), ownbuf(1)
73 {
74 bp = new Filebuf(fileptr);
75 }
76
77 ostream::ostream(int filedesc)
78 : state(_good), ownbuf(1)
79 {
80 bp = new filebuf(filedesc);
81 }
82
83 ostream::ostream(int filedesc, char* buf, int buflen)
84 : state(_good), ownbuf(1)
85 {
86 bp = new filebuf(filedesc, buf, buflen);
87 }
88
89 ostream::~ostream()
90 {
91 if (ownbuf) delete bp;
92 }
93
94 ostream& ostream::open(const char* filename, io_mode m, access_mode a)
95 {
96 return failif(bp->open(filename, m, a) == 0);
97 }
98
99 ostream& ostream::open(const char* filename, const char* m)
100 {
101 return failif(bp->open(filename, m) == 0);
102 }
103
104 ostream& ostream::open(int filedesc, io_mode m)
105 {
106 return failif(bp->open(filedesc, m) == 0);
107 }
108
109 ostream& ostream::open(FILE* fileptr)
110 {
============ Listing of stream.cc ============ PAGE 3
111 return failif(bp->open(fileptr) == 0);
112 }
113
114 ostream& ostream::open(const char* filenam, open_mode m)
115 {
116 return failif(bp->open(filenam, m) == 0);
117 }
118
119 ostream& ostream::form(const char* fmt...)
120 {
121 va_list args;
122 va_start(args, fmt);
123 char buf[BUFSIZ];
124 #ifndef HAVE_VPRINTF
125 FILE b;
126 b._flag = _IOWRT|_IOSTRG;
127 b._ptr = buf;
128 b._cnt = BUFSIZ;
129 _doprnt(fmt, args, &b);
130 putc('\0', &b);
131 #else
132 vsprintf(buf, fmt, args);
133 #endif
134 va_end(args);
135 return put(buf);
136 }
137
138 ostream& ostream::operator<<(short n)
139 {
140 return put(itoa(long(n)));
141 }
142
143 ostream& ostream::operator<<(unsigned short n)
144 {
145 return put(itoa((unsigned long)(n)));
146 }
147
148 ostream& ostream::operator<<(int n)
149 {
150 return put(itoa(long(n)));
151 }
152
153 ostream& ostream::operator<<(unsigned int n)
154 {
155 return put(itoa((unsigned long)(n)));
156 }
157
158 ostream& ostream::operator<<(long n)
159 {
160 return put(itoa(n));
161 }
162
163 ostream& ostream::operator<<(unsigned long n)
164 {
165 return put(itoa(n));
============ Listing of stream.cc ============ PAGE 4
166 }
167
168 ostream& ostream::operator<<(long long n)
169 {
170 return put(itoa(n));
171 }
172
173 ostream& ostream::operator<<(unsigned long long n)
174 {
175 return put(itoa(n));
176 }
177
178 ostream& ostream::operator<<(float n)
179 {
180 return put(dtoa(double(n)));
181 }
182
183 ostream& ostream::operator<<(double n)
184 {
185 return put(dtoa(n));
186 }
187
188
189 const char* ostream::name()
190 {
191 return bp->name();
192 }
193
194 void ostream::error()
195 {
196 bp->error();
197 }
198
199 //-------------------------------------------------------------
200
201 istream::istream(streambuf* s, int sk=1, ostream* t=0)
202 : bp(s), state(_good), skipws(sk), tied_to(t), ownbuf(0) {}
203
204 istream::istream(int sz, char* buf, int sk=1, ostream* t=0)
205 : state(_good), skipws(sk), tied_to(t), ownbuf(1)
206 {
207 bp = new streambuf;
208 if (buf == 0)
209 {
210 bp->alloc = 1;
211 buf = new char[sz];
212 }
213 else
214 bp->alloc = 0;
215
216 bp->setbuf(buf, sz, sz);
217 }
218
219 istream::~istream()
220 {
============ Listing of stream.cc ============ PAGE 5
221 if (ownbuf) delete bp;
222 }
223
224 istream::istream(const char* filename, io_mode m, access_mode a, int sk=1, ostream* t=0)
225 : state(_good), skipws(sk), tied_to(t), ownbuf(1)
226 {
227 bp = new Filebuf(filename, m, a);
228 }
229
230 istream::istream(const char* filename, const char* m, int sk=1, ostream* t=0)
231 : state(_good), skipws(sk), tied_to(t), ownbuf(1)
232 {
233 bp = new Filebuf(filename, m);
234 }
235
236 istream::istream(int filedesc, io_mode m, int sk=1, ostream* t=0)
237 : state(_good), skipws(sk), tied_to(t), ownbuf(1)
238 {
239 bp = new Filebuf(filedesc, m);
240 }
241
242 istream::istream(FILE* fileptr, int sk=1, ostream* t=0)
243 : state(_good), skipws(sk), tied_to(t), ownbuf(1)
244 {
245 bp = new Filebuf(fileptr);
246
247 }
248
249 istream::istream(int filedesc, int sk=1, ostream* t=0)
250 : state(_good), skipws(sk), tied_to(t), ownbuf(1)
251 {
252 bp = new filebuf(filedesc);
253 }
254
255 istream::istream(int filedesc, char* buf, int buflen, int sk=1, ostream* t=0)
256 : state(_good), skipws(sk), tied_to(t), ownbuf(1)
257 {
258 bp = new filebuf(filedesc, buf, buflen);
259 }
260
261 istream& istream::open(const char* filename, io_mode m, access_mode a)
262 {
263 return failif(bp->open(filename, m, a) == 0);
264 }
265
266 istream& istream::open(const char* filename, const char* m)
267 {
268 return failif(bp->open(filename, m) == 0);
269 }
270
271 istream& istream::open(int filedesc, io_mode m)
272 {
273 return failif(bp->open(filedesc, m) == 0);
274 }
275
============ Listing of stream.cc ============ PAGE 6
276 istream& istream::open(FILE* fileptr)
277 {
278 return failif(bp->open(fileptr) == 0);
279 }
280
281 istream& istream::open(const char* filenam, open_mode m)
282 {
283 return failif(bp->open(filenam, m) == 0);
284 }
285
286 istream& istream::get(char& c)
287 {
288 if (good())
289 {
290 _flush();
291 int ch = bp->sgetc();
292 if (ch == EOF)
293 set(_eof);
294 else
295 {
296 c = ch;
297 bp->stossc();
298 }
299 }
300 return *this;
301 }
302
303
304 istream& istream::operator >> (whitespace&)
305 {
306 if (good())
307 {
308 int ch;
309 _flush();
310 while (((ch = bp->sgetc()) != EOF) && isspace(ch)) bp->stossc();
311 if (ch == EOF) set(_eof);
312 }
313 return *this;
314 }
315
316
317 istream& istream::operator >> (char& c)
318 {
319 if (skipws) (*this >> WS);
320 return get(c);
321 }
322
323 istream& istream::get(char* s, int n, char terminator = '\n')
324 {
325 if (!readable())
326 {
327 set(_fail);
328 return *this;
329 }
330
============ Listing of stream.cc ============ PAGE 7
331 char ch = 0;
332
333 if (--n > 0 && get(ch))
334 {
335 if (ch == terminator)
336 unget(ch);
337 else
338 {
339 *s++ = ch; --n;
340 while (n-- > 0 && get(ch))
341 {
342 if (ch == terminator)
343 {
344 unget(ch);
345 break;
346 }
347 else
348 *s++ = ch;
349 }
350 }
351 }
352
353 *s = 0;
354 return *this;
355 }
356
357
358 istream& istream::operator >> (char* s)
359 {
360 if (!readable() || s == 0)
361 {
362 set(_fail);
363 return *this;
364 }
365
366 if (skipws && !(*this >> WS)) return *this;
367
368 char ch;
369
370 if (get(ch))
371 {
372 *s++ = ch;
373 while (get(ch))
374 {
375 if (isspace(ch))
376 {
377 unget(ch);
378 break;
379 }
380 else
381 *s++ = ch;
382 }
383 }
384
385 *s = 0;
============ Listing of stream.cc ============ PAGE 8
386 return *this;
387 }
388
389
390 istream& istream::getline(char* s, int n, char terminator = '\n')
391 {
392 if (!readable())
393 {
394 set(_fail);
395 return *this;
396 }
397
398 char ch;
399 while (--n > 0 && get(ch) && ((*s++ = ch) != terminator));
400
401 *s = 0;
402 return *this;
403 }
404
405 // from Doug Schmidt
406
407 // This should probably be a page size....
408 #define CHUNK_SIZE 512
409
410 /* Reads an arbitrarily long input line terminated by a user-specified
411 TERMINATOR. Super-nifty trick using recursion avoids unnecessary calls
412 to NEW! */
413
414 char *istream::readline (int chunk_number, char terminator)
415 {
416 char buf[CHUNK_SIZE];
417 register char *bufptr = buf;
418 register char *ptr;
419 char ch;
420 int continu;
421
422 while ((continu = !!get(ch)) && ch != terminator) /* fill the current buffer */
423 {
424 *bufptr++ = ch;
425 if (bufptr - buf >= CHUNK_SIZE) /* prepend remainder to ptr buffer */
426 {
427 if (ptr = readline (chunk_number + 1, terminator))
428
429 for (; bufptr != buf; *--ptr = *--bufptr);
430
431 return ptr;
432 }
433 }
434 if (!continu && bufptr == buf)
435 return NULL;
436
437 int size = (chunk_number * CHUNK_SIZE + bufptr - buf) + 1;
438
439 if (ptr = new char[size])
440 {
============ Listing of stream.cc ============ PAGE 9
441
442 for (*(ptr += (size - 1)) = '\0'; bufptr != buf; *--ptr = *--bufptr)
443 ;
444
445 return ptr;
446 }
447 else
448 return NULL;
449 }
450
451 /* Reads an arbitrarily long input line terminated by TERMINATOR.
452 This routine allocates its own memory, so the user should
453 only supply the address of a (char *). */
454
455 istream& istream::gets(char **s, char terminator)
456 {
457 return failif(!readable() || !(*s = readline (0, terminator)));
458 }
459
460 istream& istream::operator >> (long& y)
461 {
462 if (!readable())
463 {
464 set(_bad);
465 return *this;
466 }
467
468 int got_one = 0;
469 char sgn = 0;
470 char ch;
471 y = 0;
472 if (skipws) *this >> WS;
473 if (!good())
474 {
475 set(_bad);
476 return *this;
477 }
478 while (get(ch))
479 {
480 if (ch == '-')
481 {
482 if (sgn == 0)
483 sgn = '-';
484 else
485 break;
486 }
487 else if (ch >= '0' && ch <= '9')
488 y = y * 10 + ((got_one = ch) - '0');
489 else
490 break;
491 }
492 if (good())
493 unget(ch);
494 if (!got_one)
495 set(_bad);
============ Listing of stream.cc ============ PAGE 10
496
497 if (sgn == '-')
498 y = -y;
499
500 return *this;
501 }
502
503 istream& istream::operator >> (unsigned long& y)
504 {
505 if (!readable())
506 {
507 set(_bad);
508 return *this;
509 }
510
511 int got_one = 0;
512 char ch;
513 y = 0;
514 if (skipws) *this >> WS;
515 if (!good())
516 while (get(ch))
517 {
518 if (ch >= '0' && ch <= '9')
519 y = y * 10 + ((got_one = ch) - '0');
520 else
521 break;
522 }
523 if (good())
524 unget(ch);
525 if (!got_one)
526 set(_bad);
527
528 return *this;
529 }
530
531
532 /* for input to a double, we must trust atof (cannot even use
533 the better strtod since it is not universally supported). So
534 guaranteed legal chars are gathered up into an obstack. The
535 only possible, undiagnosable error is that the input number
536 might give a floating overflow or underflow inside atof.
537 I know of no way to avoid this */
538
539 extern Obstack _libgxx_io_ob;
540 extern char* _libgxx_io_oblast;
541
542 istream& istream::operator >> (double & y)
543 {
544 if (!readable())
545 {
546 set(_bad);
547 return *this;
548 }
549
550 if (_libgxx_io_oblast) _libgxx_io_ob.free(_libgxx_io_oblast);
============ Listing of stream.cc ============ PAGE 11
551
552 char seenint = 0;
553 char seendec = 0;
554 char seenexp = 0;
555 char seensgn = 0;
556 char seene = 0;
557 char seenexpsgn = 0;
558 char seendot = 0;
559 char ch;
560
561 if (skipws) *this >> WS;
562 if (!good())
563 {
564 set(_bad);
565 return *this;
566 }
567 while (get(ch))
568 {
569 if (ch == '-' || ch == '+')
570 {
571 if (seene && !seenexpsgn)
572 _libgxx_io_ob.grow(seenexpsgn = ch);
573 else if (!seensgn && !seenint)
574 _libgxx_io_ob.grow(seensgn = ch);
575 else
576 break;
577 }
578 else if (ch == '.' && !seendot)
579 {
580 _libgxx_io_ob.grow(seendot = ch);
581 }
582 else if ((ch == 'e' || ch == 'E') && !seene)
583 {
584 _libgxx_io_ob.grow(seene = ch);
585 }
586 else if (ch >= '0' && ch <= '9')
587 {
588 _libgxx_io_ob.grow(ch);
589 if (seene) seenexp = ch;
590 else if (seendot) seendec = ch;
591 else seenint = ch;
592 }
593 else
594 break;
595 }
596 char* str = _libgxx_io_ob.finish(0);
597 if (good())
598 unget(ch);
599 if ((seenint || seendec) && (!seene || seenexp))
600 y = atof(str);
601 else
602 set(_bad);
603 _libgxx_io_ob.free(str);
604 return *this;
605 }
============ Listing of stream.cc ============ PAGE 12
606
607 istream& istream::operator >> (int& y)
608 {
609 long l; (*this >> l); y = int(l); return *this;
610 }
611
612 istream& istream:: operator >> (unsigned int& y)
613 {
614 long l; (*this >> l); y = (unsigned int)(l); return *this;
615 }
616
617 istream& istream:: operator >> (short& y)
618 {
619 long l; (*this >> l); y = short(l); return *this;
620 }
621
622 istream& istream:: operator >> (unsigned short& y)
623 {
624 long l; (*this >> l); y = (unsigned short)(l); return *this;
625 }
626
627 istream& istream:: operator >> (float& y)
628 {
629 double d; (*this >> d); y = float(d); return *this;
630 }
631
632 const char* istream::name()
633 {
634 return bp->name();
635 }
636
637 void istream::error()
638 {
639 bp->error();
640 }
641
642 //--------------------------------------------------------------
643
644 #ifndef DEFAULT_filebuf
645
646 ostream cerr(stderr);
647 ostream cout(stdout);
648 istream cin(stdin, 1, &cout);
649
650 #else
651
652 static char cerrbuf[1];
653 static char coutbuf[BUFSIZE];
654 static char cinbuf[BUFSIZE];
655
656 ostream cerr(2, cerrbuf, 1);
657 ostream cout(1, coutbuf, BUFSIZE);
658 istream cin (0, cinbuf, BUFSIZE, 1, &cout);
659
660 #endif
============ Listing of stream.cc ============ PAGE 13
661
662 whitespace WS;
============ Listing Complete ============
============ Listing of stream.s ============ PAGE 1
1 #NO_APP
2 gcc_compiled.:
3 .text
4 .even
5 .globl ___7ostreamP9streambuf
6 ___7ostreamP9streambuf:
7 link a6,#0
8 movel a6@(8),a0
9 movel a6@(12),a0@
10 clrl a0@(4)
11 clrb a0@(8)
12 movel a0,d0
13 unlk a6
14 rts
15 .even
16 .globl ___7ostreamiPc
17 ___7ostreamiPc:
18 link a6,#0
19 moveml #0x3030,sp@-
20 movel a6@(8),a3
21 movel a6@(12),d3
22 movel a6@(16),d2
23 clrl a3@(4)
24 moveb #1,a3@(8)
25 tstl d2
26 jne L943
27 movel d3,sp@-
28 lea ___builtin_new,a2
29 jbsr a2@
30 movel d0,d2
31 movel d3,sp@-
32 movel d2,sp@-
33 pea 22:w
34 jbsr a2@
35 addqw #4,sp
36 movel d0,a2
37 movel a2,sp@-
38 jbsr ___9streambufPci
39 movel a2,a3@
40 movel a2@(18),a0
41 clrl sp@-
42 movel d3,sp@-
43 movel d2,sp@-
44 movew a0@(32),a1
45 addl a3@,a1
46 movel a1,sp@-
47 movel a0@(36),a0
48 jbsr a0@
49 movel a3@,a0
50 moveb #1,a0@(16)
51 jra L944
52 L943:
53 movel d3,sp@-
54 movel d2,sp@-
55 pea 22:w
============ Listing of stream.s ============ PAGE 2
56 jbsr ___builtin_new
57 addqw #4,sp
58 movel d0,a2
59 movel a2,sp@-
60 jbsr ___9streambufPci
61 movel a2,a3@
62 clrb a2@(16)
63 L944:
64 movel a3,d0
65 moveml a6@(-16),#0xc0c
66 unlk a6
67 rts
68 .even
69 .globl ___7ostreamPCc7io_mode11access_mode
70 ___7ostreamPCc7io_mode11access_mode:
71 link a6,#0
72 moveml #0x2020,sp@-
73 movel a6@(8),a2
74 clrl a2@(4)
75 moveb #1,a2@(8)
76 movel a6@(20),sp@-
77 movel a6@(16),sp@-
78 movel a6@(12),sp@-
79 pea 26:w
80 jbsr ___builtin_new
81 addqw #4,sp
82 movel d0,d2
83 movel d2,sp@-
84 jbsr ___7FilebufPCc7io_mode11access_mode
85 movel d2,a2@
86 movel a2,d0
87 moveml a6@(-8),#0x404
88 unlk a6
89 rts
90 .even
91 .globl ___7ostreamPCcT0
92 ___7ostreamPCcT0:
93 link a6,#0
94 moveml #0x2020,sp@-
95 movel a6@(8),a2
96 clrl a2@(4)
97 moveb #1,a2@(8)
98 movel a6@(16),sp@-
99 movel a6@(12),sp@-
100 pea 26:w
101 jbsr ___builtin_new
102 addqw #4,sp
103 movel d0,d2
104 movel d2,sp@-
105 jbsr ___7FilebufPCcT0
106 movel d2,a2@
107 movel a2,d0
108 moveml a6@(-8),#0x404
109 unlk a6
110 rts
============ Listing of stream.s ============ PAGE 3
111 .even
112 .globl ___7ostreami7io_mode
113 ___7ostreami7io_mode:
114 link a6,#0
115 moveml #0x2020,sp@-
116 movel a6@(8),a2
117 clrl a2@(4)
118 moveb #1,a2@(8)
119 movel a6@(16),sp@-
120 movel a6@(12),sp@-
121 pea 26:w
122 jbsr ___builtin_new
123 addqw #4,sp
124 movel d0,d2
125 movel d2,sp@-
126 jbsr ___7Filebufi7io_mode
127 movel d2,a2@
128 movel a2,d0
129 moveml a6@(-8),#0x404
130 unlk a6
131 rts
132 .even
133 .globl ___7ostreamP6_iobuf
134 ___7ostreamP6_iobuf:
135 link a6,#0
136 moveml #0x2020,sp@-
137 movel a6@(8),a2
138 clrl a2@(4)
139 moveb #1,a2@(8)
140 movel a6@(12),sp@-
141 pea 26:w
142 jbsr ___builtin_new
143 addqw #4,sp
144 movel d0,d2
145 movel d2,sp@-
146 jbsr ___7FilebufP6_iobuf
147 movel d2,a2@
148 movel a2,d0
149 moveml a6@(-8),#0x404
150 unlk a6
151 rts
152 .even
153 .globl ___7ostreami
154 ___7ostreami:
155 link a6,#0
156 moveml #0x2020,sp@-
157 movel a6@(8),a2
158 clrl a2@(4)
159 moveb #1,a2@(8)
160 movel a6@(12),sp@-
161 pea 28:w
162 jbsr ___builtin_new
163 addqw #4,sp
164 movel d0,d2
165 movel d2,sp@-
============ Listing of stream.s ============ PAGE 4
166 jbsr ___7filebufi
167 movel d2,a2@
168 movel a2,d0
169 moveml a6@(-8),#0x404
170 unlk a6
171 rts
172 .even
173 .globl ___7ostreamiPci
174 ___7ostreamiPci:
175 link a6,#0
176 moveml #0x2020,sp@-
177 movel a6@(8),a2
178 clrl a2@(4)
179 moveb #1,a2@(8)
180 movel a6@(20),sp@-
181 movel a6@(16),sp@-
182 movel a6@(12),sp@-
183 pea 28:w
184 jbsr ___builtin_new
185 addqw #4,sp
186 movel d0,d2
187 movel d2,sp@-
188 jbsr ___7filebufiPci
189 movel d2,a2@
190 movel a2,d0
191 moveml a6@(-8),#0x404
192 unlk a6
193 rts
194 .even
195 .globl __$_ostream
196 __$_ostream:
197 link a6,#0
198 movel a2,sp@-
199 movel a6@(8),a2
200 tstb a2@(8)
201 jeq L955
202 tstl a2@
203 jeq L955
204 movel a2@,a0
205 movel a0@(18),a0
206 pea 1:w
207 movew a0@(8),a1
208 addl a2@,a1
209 movel a1,sp@-
210 movel a0@(12),a0
211 jbsr a0@
212 addqw #8,sp
213 L955:
214 tstl a6@(12)
215 jeq L957
216 movel a2,sp@-
217 jbsr ___builtin_delete
218 L957:
219 movel a6@(-4),a2
220 unlk a6
============ Listing of stream.s ============ PAGE 5
221 rts
222 .even
223 .globl _open__7ostreamPCc7io_mode11access_mode
224 _open__7ostreamPCc7io_mode11access_mode:
225 link a6,#0
226 moveml #0x2020,sp@-
227 movel a6@(8),a2
228 movel a2@,a0
229 movel a0@(18),a0
230 movel a6@(20),sp@-
231 movel a6@(16),sp@-
232 movel a6@(12),sp@-
233 movew a0@(56),a1
234 addl a2@,a1
235 movel a1,sp@-
236 movel a0@(60),a0
237 jbsr a0@
238 tstl d0
239 seq d1
240 btst #0,d1
241 jeq L960
242 moveq #2,d2
243 orl d2,a2@(4)
244 L960:
245 movel a2,d0
246 moveml a6@(-8),#0x404
247 unlk a6
248 rts
249 .even
250 .globl _open__7ostreamPCcT0
251 _open__7ostreamPCcT0:
252 link a6,#0
253 moveml #0x2020,sp@-
254 movel a6@(8),a2
255 movel a2@,a0
256 movel a0@(18),a0
257 movel a6@(16),sp@-
258 movel a6@(12),sp@-
259 movew a0@(64),a1
260 addl a2@,a1
261 movel a1,sp@-
262 movel a0@(68),a0
263 jbsr a0@
264 tstl d0
265 seq d1
266 btst #0,d1
267 jeq L964
268 moveq #2,d2
269 orl d2,a2@(4)
270 L964:
271 movel a2,d0
272 moveml a6@(-8),#0x404
273 unlk a6
274 rts
275 .even
============ Listing of stream.s ============ PAGE 6
276 .globl _open__7ostreami7io_mode
277 _open__7ostreami7io_mode:
278 link a6,#0
279 moveml #0x2020,sp@-
280 movel a6@(8),a2
281 movel a2@,a0
282 movel a0@(18),a0
283 movel a6@(16),sp@-
284 movel a6@(12),sp@-
285 movew a0@(72),a1
286 addl a2@,a1
287 movel a1,sp@-
288 movel a0@(76),a0
289 jbsr a0@
290 tstl d0
291 seq d1
292 btst #0,d1
293 jeq L968
294 moveq #2,d2
295 orl d2,a2@(4)
296 L968:
297 movel a2,d0
298 moveml a6@(-8),#0x404
299 unlk a6
300 rts
301 .even
302 .globl _open__7ostreamP6_iobuf
303 _open__7ostreamP6_iobuf:
304 link a6,#0
305 moveml #0x2020,sp@-
306 movel a6@(8),a2
307 movel a2@,a0
308 movel a0@(18),a0
309 movel a6@(12),sp@-
310 movew a0@(80),a1
311 addl a2@,a1
312 movel a1,sp@-
313 movel a0@(84),a0
314 jbsr a0@
315 tstl d0
316 seq d1
317 btst #0,d1
318 jeq L972
319 moveq #2,d2
320 orl d2,a2@(4)
321 L972:
322 movel a2,d0
323 moveml a6@(-8),#0x404
324 unlk a6
325 rts
326 .even
327 .globl _open__7ostreamPCc9open_mode
328 _open__7ostreamPCc9open_mode:
329 link a6,#0
330 moveml #0x2020,sp@-
============ Listing of stream.s ============ PAGE 7
331 movel a6@(8),a2
332 movel a2@,a0
333 movel a0@(18),a0
334 movel a6@(16),sp@-
335 movel a6@(12),sp@-
336 movew a0@(48),a1
337 addl a2@,a1
338 movel a1,sp@-
339 movel a0@(52),a0
340 jbsr a0@
341 tstl d0
342 seq d1
343 btst #0,d1
344 jeq L976
345 moveq #2,d2
346 orl d2,a2@(4)
347 L976:
348 movel a2,d0
349 moveml a6@(-8),#0x404
350 unlk a6
351 rts
352 .even
353 .globl _form__7ostreamPCce
354 _form__7ostreamPCce:
355 link a6,#-1024
356 moveml #0x3020,sp@-
357 movel a6@(8),a2
358 pea a6@(16)
359 movel a6@(12),sp@-
360 movel a6,d2
361 addl #-1024,d2
362 movel d2,sp@-
363 jbsr _vsprintf
364 addw #12,sp
365 clrl d3
366 tstl a2@(4)
367 jne L981
368 movel d2,sp@-
369 movel a2@,sp@-
370 jbsr _sputs__9streambufPCc
371 moveq #-1,d1
372 cmpl d0,d1
373 jne L980
374 L981:
375 moveq #1,d3
376 L980:
377 tstl d3
378 jeq L983
379 moveq #2,d1
380 orl d1,a2@(4)
381 L983:
382 movel a2,d0
383 moveml a6@(-1036),#0x40c
384 unlk a6
385 rts
============ Listing of stream.s ============ PAGE 8
386 .even
387 .globl _op$alshift__7ostreams
388 _op$alshift__7ostreams:
389 link a6,#0
390 moveml #0x2020,sp@-
391 movel a6@(8),a2
392 movew a6@(14),d0
393 clrl sp@-
394 pea 10:w
395 extl d0
396 movel d0,sp@-
397 jbsr _itoa__Flii
398 addw #12,sp
399 clrl d2
400 tstl a2@(4)
401 jne L988
402 movel d0,sp@-
403 movel a2@,sp@-
404 jbsr _sputs__9streambufPCc
405 moveq #-1,d1
406 cmpl d0,d1
407 jne L987
408 L988:
409 moveq #1,d2
410 L987:
411 tstl d2
412 jeq L990
413 moveq #2,d1
414 orl d1,a2@(4)
415 L990:
416 movel a2,d0
417 moveml a6@(-8),#0x404
418 unlk a6
419 rts
420 .even
421 .globl _op$alshift__7ostreamUs
422 _op$alshift__7ostreamUs:
423 link a6,#0
424 moveml #0x3020,sp@-
425 movel a6@(8),a2
426 movew a6@(14),d0
427 clrl sp@-
428 pea 10:w
429 clrl d1
430 movew d0,d1
431 movel d1,sp@-
432 jbsr _itoa__FUlii
433 addw #12,sp
434 clrl d2
435 tstl a2@(4)
436 jne L995
437 movel d0,sp@-
438 movel a2@,sp@-
439 jbsr _sputs__9streambufPCc
440 moveq #-1,d3
============ Listing of stream.s ============ PAGE 9
441 cmpl d0,d3
442 jne L994
443 L995:
444 moveq #1,d2
445 L994:
446 tstl d2
447 jeq L997
448 moveq #2,d3
449 orl d3,a2@(4)
450 L997:
451 movel a2,d0
452 moveml a6@(-12),#0x40c
453 unlk a6
454 rts
455 .even
456 .globl _op$alshift__7ostreami
457 _op$alshift__7ostreami:
458 link a6,#0
459 moveml #0x2020,sp@-
460 movel a6@(8),a2
461 clrl sp@-
462 pea 10:w
463 movel a6@(12),sp@-
464 jbsr _itoa__Flii
465 addw #12,sp
466 clrl d2
467 tstl a2@(4)
468 jne L1002
469 movel d0,sp@-
470 movel a2@,sp@-
471 jbsr _sputs__9streambufPCc
472 moveq #-1,d1
473 cmpl d0,d1
474 jne L1001
475 L1002:
476 moveq #1,d2
477 L1001:
478 tstl d2
479 jeq L1004
480 moveq #2,d1
481 orl d1,a2@(4)
482 L1004:
483 movel a2,d0
484 moveml a6@(-8),#0x404
485 unlk a6
486 rts
487 .even
488 .globl _op$alshift__7ostreamUi
489 _op$alshift__7ostreamUi:
490 link a6,#0
491 moveml #0x2020,sp@-
492 movel a6@(8),a2
493 clrl sp@-
494 pea 10:w
495 movel a6@(12),sp@-
============ Listing of stream.s ============ PAGE 10
496 jbsr _itoa__FUlii
497 addw #12,sp
498 clrl d2
499 tstl a2@(4)
500 jne L1009
501 movel d0,sp@-
502 movel a2@,sp@-
503 jbsr _sputs__9streambufPCc
504 moveq #-1,d1
505 cmpl d0,d1
506 jne L1008
507 L1009:
508 moveq #1,d2
509 L1008:
510 tstl d2
511 jeq L1011
512 moveq #2,d1
513 orl d1,a2@(4)
514 L1011:
515 movel a2,d0
516 moveml a6@(-8),#0x404
517 unlk a6
518 rts
519 .even
520 .globl _op$alshift__7ostreaml
521 _op$alshift__7ostreaml:
522 link a6,#0
523 moveml #0x2020,sp@-
524 movel a6@(8),a2
525 clrl sp@-
526 pea 10:w
527 movel a6@(12),sp@-
528 jbsr _itoa__Flii
529 addw #12,sp
530 clrl d2
531 tstl a2@(4)
532 jne L1016
533 movel d0,sp@-
534 movel a2@,sp@-
535 jbsr _sputs__9streambufPCc
536 moveq #-1,d1
537 cmpl d0,d1
538 jne L1015
539 L1016:
540 moveq #1,d2
541 L1015:
542 tstl d2
543 jeq L1018
544 moveq #2,d1
545 orl d1,a2@(4)
546 L1018:
547 movel a2,d0
548 moveml a6@(-8),#0x404
549 unlk a6
550 rts
============ Listing of stream.s ============ PAGE 11
551 .even
552 .globl _op$alshift__7ostreamUl
553 _op$alshift__7ostreamUl:
554 link a6,#0
555 moveml #0x2020,sp@-
556 movel a6@(8),a2
557 clrl sp@-
558 pea 10:w
559 movel a6@(12),sp@-
560 jbsr _itoa__FUlii
561 addw #12,sp
562 clrl d2
563 tstl a2@(4)
564 jne L1023
565 movel d0,sp@-
566 movel a2@,sp@-
567 jbsr _sputs__9streambufPCc
568 moveq #-1,d1
569 cmpl d0,d1
570 jne L1022
571 L1023:
572 moveq #1,d2
573 L1022:
574 tstl d2
575 jeq L1025
576 moveq #2,d1
577 orl d1,a2@(4)
578 L1025:
579 movel a2,d0
580 moveml a6@(-8),#0x404
581 unlk a6
582 rts
583 .even
584 .globl _op$alshift__7ostreamx
585 _op$alshift__7ostreamx:
586 link a6,#0
587 moveml #0x2020,sp@-
588 movel a6@(8),a2
589 clrl sp@-
590 pea 10:w
591 movel a6@(16),sp@-
592 movel a6@(12),sp@-
593 jbsr _itoa__Fxii
594 addw #16,sp
595 clrl d2
596 tstl a2@(4)
597 jne L1030
598 movel d0,sp@-
599 movel a2@,sp@-
600 jbsr _sputs__9streambufPCc
601 moveq #-1,d1
602 cmpl d0,d1
603 jne L1029
604 L1030:
605 moveq #1,d2
============ Listing of stream.s ============ PAGE 12
606 L1029:
607 tstl d2
608 jeq L1032
609 moveq #2,d1
610 orl d1,a2@(4)
611 L1032:
612 movel a2,d0
613 moveml a6@(-8),#0x404
614 unlk a6
615 rts
616 .even
617 .globl _op$alshift__7ostreamUx
618 _op$alshift__7ostreamUx:
619 link a6,#0
620 moveml #0x2020,sp@-
621 movel a6@(8),a2
622 clrl sp@-
623 pea 10:w
624 movel a6@(16),sp@-
625 movel a6@(12),sp@-
626 jbsr _itoa__FUxii
627 addw #16,sp
628 clrl d2
629 tstl a2@(4)
630 jne L1037
631 movel d0,sp@-
632 movel a2@,sp@-
633 jbsr _sputs__9streambufPCc
634 moveq #-1,d1
635 cmpl d0,d1
636 jne L1036
637 L1037:
638 moveq #1,d2
639 L1036:
640 tstl d2
641 jeq L1039
642 moveq #2,d1
643 orl d1,a2@(4)
644 L1039:
645 movel a2,d0
646 moveml a6@(-8),#0x404
647 unlk a6
648 rts
649 .even
650 .globl _op$alshift__7ostreamf
651 _op$alshift__7ostreamf:
652 link a6,#0
653 moveml #0x2020,sp@-
654 movel a6@(8),a2
655 pea 6:w
656 clrl sp@-
657 pea 103:w
658 fmoves a6@(12),fp0
659 fmoved fp0,sp@-
660 jbsr _dtoa__Fdcii
============ Listing of stream.s ============ PAGE 13
661 addw #20,sp
662 clrl d2
663 tstl a2@(4)
664 jne L1044
665 movel d0,sp@-
666 movel a2@,sp@-
667 jbsr _sputs__9streambufPCc
668 moveq #-1,d1
669 cmpl d0,d1
670 jne L1043
671 L1044:
672 moveq #1,d2
673 L1043:
674 tstl d2
675 jeq L1046
676 moveq #2,d1
677 orl d1,a2@(4)
678 L1046:
679 movel a2,d0
680 moveml a6@(-8),#0x404
681 unlk a6
682 rts
683 .even
684 .globl _op$alshift__7ostreamd
685 _op$alshift__7ostreamd:
686 link a6,#0
687 moveml #0x2020,sp@-
688 movel a6@(8),a2
689 pea 6:w
690 clrl sp@-
691 pea 103:w
692 movel a6@(16),sp@-
693 movel a6@(12),sp@-
694 jbsr _dtoa__Fdcii
695 addw #20,sp
696 clrl d2
697 tstl a2@(4)
698 jne L1051
699 movel d0,sp@-
700 movel a2@,sp@-
701 jbsr _sputs__9streambufPCc
702 moveq #-1,d1
703 cmpl d0,d1
704 jne L1050
705 L1051:
706 moveq #1,d2
707 L1050:
708 tstl d2
709 jeq L1053
710 moveq #2,d1
711 orl d1,a2@(4)
712 L1053:
713 movel a2,d0
714 moveml a6@(-8),#0x404
715 unlk a6
============ Listing of stream.s ============ PAGE 14
716 rts
717 .even
718 .globl _name__7ostream
719 _name__7ostream:
720 link a6,#0
721 movel a2,sp@-
722 movel a6@(8),a0
723 movel a0@,a1
724 movel a1@(18),a1
725 movew a1@(40),a2
726 addl a0@,a2
727 movel a2,sp@-
728 movel a1@(44),a0
729 jbsr a0@
730 movel a6@(-4),a2
731 unlk a6
732 rts
733 .even
734 .globl _error__7ostream
735 _error__7ostream:
736 link a6,#0
737 movel a2,sp@-
738 movel a6@(8),a0
739 movel a0@,a1
740 movel a1@(18),a1
741 movew a1@(104),a2
742 addl a0@,a2
743 movel a2,sp@-
744 movel a1@(108),a0
745 jbsr a0@
746 movel a6@(-4),a2
747 unlk a6
748 rts
749 .even
750 .globl ___7istreamP9streambufiP7ostream
751 ___7istreamP9streambufiP7ostream:
752 link a6,#0
753 movel a6@(8),a0
754 movel a6@(12),a0@
755 clrl a0@(4)
756 moveb a6@(19),a0@(12)
757 movel a6@(20),a0@(8)
758 clrb a0@(13)
759 movel a0,d0
760 unlk a6
761 rts
762 .even
763 .globl ___7istreamiPciP7ostream
764 ___7istreamiPciP7ostream:
765 link a6,#0
766 moveml #0x3038,sp@-
767 movel a6@(8),a3
768 movel a6@(12),d3
769 movel a6@(16),d2
770 clrl a3@(4)
============ Listing of stream.s ============ PAGE 15
771 moveb a6@(23),a3@(12)
772 movel a6@(24),a3@(8)
773 moveb #1,a3@(13)
774 pea 22:w
775 lea ___builtin_new,a4
776 jbsr a4@
777 movel d0,a2
778 movel a2,sp@-
779 jbsr ___9streambuf
780 movel a2,a3@
781 addqw #8,sp
782 tstl d2
783 jne L1059
784 moveb #1,a2@(16)
785 movel d3,sp@-
786 jbsr a4@
787 movel d0,d2
788 addqw #4,sp
789 jra L1060
790 L1059:
791 movel a3@,a0
792 clrb a0@(16)
793 L1060:
794 movel a3@,a0
795 movel a0@(18),a0
796 movel d3,sp@-
797 movel d3,sp@-
798 movel d2,sp@-
799 movew a0@(32),a1
800 addl a3@,a1
801 movel a1,sp@-
802 movel a0@(36),a0
803 jbsr a0@
804 movel a3,d0
805 moveml a6@(-20),#0x1c0c
806 unlk a6
807 rts
808 .even
809 .globl __$_istream
810 __$_istream:
811 link a6,#0
812 movel a2,sp@-
813 movel a6@(8),a2
814 tstb a2@(13)
815 jeq L1065
816 tstl a2@
817 jeq L1065
818 movel a2@,a0
819 movel a0@(18),a0
820 pea 1:w
821 movew a0@(8),a1
822 addl a2@,a1
823 movel a1,sp@-
824 movel a0@(12),a0
825 jbsr a0@
============ Listing of stream.s ============ PAGE 16
826 addqw #8,sp
827 L1065:
828 tstl a6@(12)
829 jeq L1067
830 movel a2,sp@-
831 jbsr ___builtin_delete
832 L1067:
833 movel a6@(-4),a2
834 unlk a6
835 rts
836 .even
837 .globl ___7istreamPCc7io_mode11access_modeiP7ostream
838 ___7istreamPCc7io_mode11access_modeiP7ostream:
839 link a6,#0
840 moveml #0x2020,sp@-
841 movel a6@(8),a2
842 clrl a2@(4)
843 moveb a6@(27),a2@(12)
844 movel a6@(28),a2@(8)
845 moveb #1,a2@(13)
846 movel a6@(20),sp@-
847 movel a6@(16),sp@-
848 movel a6@(12),sp@-
849 pea 26:w
850 jbsr ___builtin_new
851 addqw #4,sp
852 movel d0,d2
853 movel d2,sp@-
854 jbsr ___7FilebufPCc7io_mode11access_mode
855 movel d2,a2@
856 movel a2,d0
857 moveml a6@(-8),#0x404
858 unlk a6
859 rts
860 .even
861 .globl ___7istreamPCcT0iP7ostream
862 ___7istreamPCcT0iP7ostream:
863 link a6,#0
864 moveml #0x2020,sp@-
865 movel a6@(8),a2
866 clrl a2@(4)
867 moveb a6@(23),a2@(12)
868 movel a6@(24),a2@(8)
869 moveb #1,a2@(13)
870 movel a6@(16),sp@-
871 movel a6@(12),sp@-
872 pea 26:w
873 jbsr ___builtin_new
874 addqw #4,sp
875 movel d0,d2
876 movel d2,sp@-
877 jbsr ___7FilebufPCcT0
878 movel d2,a2@
879 movel a2,d0
880 moveml a6@(-8),#0x404
============ Listing of stream.s ============ PAGE 17
881 unlk a6
882 rts
883 .even
884 .globl ___7istreami7io_modeiP7ostream
885 ___7istreami7io_modeiP7ostream:
886 link a6,#0
887 moveml #0x2020,sp@-
888 movel a6@(8),a2
889 clrl a2@(4)
890 moveb a6@(23),a2@(12)
891 movel a6@(24),a2@(8)
892 moveb #1,a2@(13)
893 movel a6@(16),sp@-
894 movel a6@(12),sp@-
895 pea 26:w
896 jbsr ___builtin_new
897 addqw #4,sp
898 movel d0,d2
899 movel d2,sp@-
900 jbsr ___7Filebufi7io_mode
901 movel d2,a2@
902 movel a2,d0
903 moveml a6@(-8),#0x404
904 unlk a6
905 rts
906 .even
907 .globl ___7istreamP6_iobufiP7ostream
908 ___7istreamP6_iobufiP7ostream:
909 link a6,#0
910 moveml #0x2020,sp@-
911 movel a6@(8),a2
912 clrl a2@(4)
913 moveb a6@(19),a2@(12)
914 movel a6@(20),a2@(8)
915 moveb #1,a2@(13)
916 movel a6@(12),sp@-
917 pea 26:w
918 jbsr ___builtin_new
919 addqw #4,sp
920 movel d0,d2
921 movel d2,sp@-
922 jbsr ___7FilebufP6_iobuf
923 movel d2,a2@
924 movel a2,d0
925 moveml a6@(-8),#0x404
926 unlk a6
927 rts
928 .even
929 .globl ___7istreamiiP7ostream
930 ___7istreamiiP7ostream:
931 link a6,#0
932 moveml #0x2020,sp@-
933 movel a6@(8),a2
934 clrl a2@(4)
935 moveb a6@(19),a2@(12)
============ Listing of stream.s ============ PAGE 18
936 movel a6@(20),a2@(8)
937 moveb #1,a2@(13)
938 movel a6@(12),sp@-
939 pea 28:w
940 jbsr ___builtin_new
941 addqw #4,sp
942 movel d0,d2
943 movel d2,sp@-
944 jbsr ___7filebufi
945 movel d2,a2@
946 movel a2,d0
947 moveml a6@(-8),#0x404
948 unlk a6
949 rts
950 .even
951 .globl ___7istreamiPciiP7ostream
952 ___7istreamiPciiP7ostream:
953 link a6,#0
954 moveml #0x2020,sp@-
955 movel a6@(8),a2
956 clrl a2@(4)
957 moveb a6@(27),a2@(12)
958 movel a6@(28),a2@(8)
959 moveb #1,a2@(13)
960 movel a6@(20),sp@-
961 movel a6@(16),sp@-
962 movel a6@(12),sp@-
963 pea 28:w
964 jbsr ___builtin_new
965 addqw #4,sp
966 movel d0,d2
967 movel d2,sp@-
968 jbsr ___7filebufiPci
969 movel d2,a2@
970 movel a2,d0
971 moveml a6@(-8),#0x404
972 unlk a6
973 rts
974 .even
975 .globl _open__7istreamPCc7io_mode11access_mode
976 _open__7istreamPCc7io_mode11access_mode:
977 link a6,#0
978 moveml #0x2020,sp@-
979 movel a6@(8),a2
980 movel a2@,a0
981 movel a0@(18),a0
982 movel a6@(20),sp@-
983 movel a6@(16),sp@-
984 movel a6@(12),sp@-
985 movew a0@(56),a1
986 addl a2@,a1
987 movel a1,sp@-
988 movel a0@(60),a0
989 jbsr a0@
990 tstl d0
============ Listing of stream.s ============ PAGE 19
991 seq d1
992 btst #0,d1
993 jeq L1076
994 moveq #2,d2
995 orl d2,a2@(4)
996 L1076:
997 movel a2,d0
998 moveml a6@(-8),#0x404
999 unlk a6
1000 rts
1001 .even
1002 .globl _open__7istreamPCcT0
1003 _open__7istreamPCcT0:
1004 link a6,#0
1005 moveml #0x2020,sp@-
1006 movel a6@(8),a2
1007 movel a2@,a0
1008 movel a0@(18),a0
1009 movel a6@(16),sp@-
1010 movel a6@(12),sp@-
1011 movew a0@(64),a1
1012 addl a2@,a1
1013 movel a1,sp@-
1014 movel a0@(68),a0
1015 jbsr a0@
1016 tstl d0
1017 seq d1
1018 btst #0,d1
1019 jeq L1080
1020 moveq #2,d2
1021 orl d2,a2@(4)
1022 L1080:
1023 movel a2,d0
1024 moveml a6@(-8),#0x404
1025 unlk a6
1026 rts
1027 .even
1028 .globl _open__7istreami7io_mode
1029 _open__7istreami7io_mode:
1030 link a6,#0
1031 moveml #0x2020,sp@-
1032 movel a6@(8),a2
1033 movel a2@,a0
1034 movel a0@(18),a0
1035 movel a6@(16),sp@-
1036 movel a6@(12),sp@-
1037 movew a0@(72),a1
1038 addl a2@,a1
1039 movel a1,sp@-
1040 movel a0@(76),a0
1041 jbsr a0@
1042 tstl d0
1043 seq d1
1044 btst #0,d1
1045 jeq L1084
============ Listing of stream.s ============ PAGE 20
1046 moveq #2,d2
1047 orl d2,a2@(4)
1048 L1084:
1049 movel a2,d0
1050 moveml a6@(-8),#0x404
1051 unlk a6
1052 rts
1053 .even
1054 .globl _open__7istreamP6_iobuf
1055 _open__7istreamP6_iobuf:
1056 link a6,#0
1057 moveml #0x2020,sp@-
1058 movel a6@(8),a2
1059 movel a2@,a0
1060 movel a0@(18),a0
1061 movel a6@(12),sp@-
1062 movew a0@(80),a1
1063 addl a2@,a1
1064 movel a1,sp@-
1065 movel a0@(84),a0
1066 jbsr a0@
1067 tstl d0
1068 seq d1
1069 btst #0,d1
1070 jeq L1088
1071 moveq #2,d2
1072 orl d2,a2@(4)
1073 L1088:
1074 movel a2,d0
1075 moveml a6@(-8),#0x404
1076 unlk a6
1077 rts
1078 .even
1079 .globl _open__7istreamPCc9open_mode
1080 _open__7istreamPCc9open_mode:
1081 link a6,#0
1082 moveml #0x2020,sp@-
1083 movel a6@(8),a2
1084 movel a2@,a0
1085 movel a0@(18),a0
1086 movel a6@(16),sp@-
1087 movel a6@(12),sp@-
1088 movew a0@(48),a1
1089 addl a2@,a1
1090 movel a1,sp@-
1091 movel a0@(52),a0
1092 jbsr a0@
1093 tstl d0
1094 seq d1
1095 btst #0,d1
1096 jeq L1092
1097 moveq #2,d2
1098 orl d2,a2@(4)
1099 L1092:
1100 movel a2,d0
============ Listing of stream.s ============ PAGE 21
1101 moveml a6@(-8),#0x404
1102 unlk a6
1103 rts
1104 .even
1105 .globl _get__7istreamRc
1106 _get__7istreamRc:
1107 link a6,#0
1108 moveml #0x38,sp@-
1109 movel a6@(8),a3
1110 tstl a3@(4)
1111 seq d0
1112 btst #0,d0
1113 jeq L1095
1114 tstl a3@(8)
1115 jeq L1097
1116 movel a3@(8),a0
1117 movel a0@,a1
1118 movel a1@(18),a1
1119 pea -1:w
1120 movew a1@(16),a2
1121 addl a0@,a2
1122 movel a2,sp@-
1123 movel a1@(20),a0
1124 jbsr a0@
1125 addqw #8,sp
1126 L1097:
1127 movel a3@,a0
1128 movel a0@(18),a1
1129 movel a0@(8),d1
1130 cmpl a0@(4),d1
1131 jcs L1101
1132 addw a1@(24),a0
1133 movel a0,sp@-
1134 movel a1@(28),a0
1135 jbsr a0@
1136 addqw #4,sp
1137 jra L1102
1138 L1101:
1139 movel a0@(8),a0
1140 moveb a0@,d0
1141 extbl d0
1142 L1102:
1143 moveq #-1,d1
1144 cmpl d0,d1
1145 jne L1103
1146 moveq #1,d1
1147 orl d1,a3@(4)
1148 jra L1095
1149 L1103:
1150 movel a6@(12),a4
1151 moveb d0,a4@
1152 movel a3@,a0
1153 movel a0@(18),a1
1154 movel a0@(8),d1
1155 cmpl a0@(4),d1
============ Listing of stream.s ============ PAGE 22
1156 jcs L1107
1157 addw a1@(24),a0
1158 movel a0,sp@-
1159 movel a1@(28),a0
1160 jbsr a0@
1161 jra L1095
1162 L1107:
1163 addql #1,a0@(8)
1164 L1095:
1165 movel a3,d0
1166 moveml a6@(-12),#0x1c00
1167 unlk a6
1168 rts
1169 .even
1170 .globl _op$arshift__7istreamR10whitespace
1171 _op$arshift__7istreamR10whitespace:
1172 link a6,#0
1173 moveml #0x2030,sp@-
1174 movel a6@(8),a3
1175 tstl a3@(4)
1176 seq d0
1177 btst #0,d0
1178 jeq L1110
1179 tstl a3@(8)
1180 jeq L1115
1181 movel a3@(8),a0
1182 movel a0@,a1
1183 movel a1@(18),a1
1184 pea -1:w
1185 movew a1@(16),a2
1186 addl a0@,a2
1187 movel a2,sp@-
1188 movel a1@(20),a0
1189 jbsr a0@
1190 addqw #8,sp
1191 jra L1115
1192 L1124:
1193 moveb d1,d0
1194 extbl d0
1195 lea __ctype_+1,a0
1196 btst #3,a0@(d0:l)
1197 jeq L1116
1198 movel a3@,a0
1199 movel a0@(18),a1
1200 movel a0@(8),d2
1201 cmpl a0@(4),d2
1202 jcs L1122
1203 addw a1@(24),a0
1204 movel a0,sp@-
1205 movel a1@(28),a0
1206 jbsr a0@
1207 addqw #4,sp
1208 jra L1115
1209 L1122:
1210 addql #1,a0@(8)
============ Listing of stream.s ============ PAGE 23
1211 L1115:
1212 movel a3@,a0
1213 movel a0@(18),a1
1214 movel a0@(8),d2
1215 cmpl a0@(4),d2
1216 jcs L1118
1217 addw a1@(24),a0
1218 movel a0,sp@-
1219 movel a1@(28),a0
1220 jbsr a0@
1221 addqw #4,sp
1222 jra L1119
1223 L1118:
1224 movel a0@(8),a0
1225 moveb a0@,d0
1226 extbl d0
1227 L1119:
1228 movel d0,d1
1229 moveq #-1,d2
1230 cmpl d1,d2
1231 jne L1124
1232 L1116:
1233 moveq #-1,d2
1234 cmpl d1,d2
1235 jne L1110
1236 moveq #1,d2
1237 orl d2,a3@(4)
1238 L1110:
1239 movel a3,d0
1240 moveml a6@(-12),#0xc04
1241 unlk a6
1242 rts
1243 .even
1244 .globl _op$arshift__7istreamRc
1245 _op$arshift__7istreamRc:
1246 link a6,#0
1247 movel a2,sp@-
1248 movel a6@(8),a2
1249 tstb a2@(12)
1250 jeq L1128
1251 pea _WS
1252 movel a2,sp@-
1253 jbsr _op$arshift__7istreamR10whitespace
1254 addqw #8,sp
1255 L1128:
1256 movel a6@(12),sp@-
1257 movel a2,sp@-
1258 jbsr _get__7istreamRc
1259 movel a6@(-4),a2
1260 unlk a6
1261 rts
1262 .even
1263 .globl _get__7istreamPcic
1264 _get__7istreamPcic:
1265 link a6,#-4
============ Listing of stream.s ============ PAGE 24
1266 moveml #0x3830,sp@-
1267 movel a6@(8),a3
1268 movel a6@(12),a2
1269 movel a6@(16),d2
1270 moveb a6@(23),d4
1271 clrl d3
1272 tstl a3@
1273 jeq L1132
1274 movel a3@,a0
1275 movel a0@(18),a0
1276 movew a0@(88),a1
1277 addl a3@,a1
1278 movel a1,sp@-
1279 movel a0@(92),a0
1280 jbsr a0@
1281 addqw #4,sp
1282 tstl d0
1283 jeq L1132
1284 tstl a3@(4)
1285 jne L1132
1286 moveq #1,d3
1287 L1132:
1288 tstl d3
1289 jne L1130
1290 moveq #2,d1
1291 orl d1,a3@(4)
1292 jra L1160
1293 L1130:
1294 clrb a6@(-1)
1295 subql #1,d2
1296 tstl d2
1297 jle L1134
1298 pea a6@(-1)
1299 movel a3,sp@-
1300 jbsr _get__7istreamRc
1301 movel d0,a0
1302 addqw #8,sp
1303 tstl a0@(4)
1304 jeq L1137
1305 clrl d0
1306 L1137:
1307 tstl d0
1308 jeq L1134
1309 cmpb a6@(-1),d4
1310 jne L1138
1311 movel a3@,a0
1312 moveb a6@(-1),d0
1313 extbl d0
1314 movel a0@(8),d1
1315 cmpl a0@,d1
1316 jhi L1162
1317 jra L1155
1318 L1138:
1319 moveb a6@(-1),a2@+
1320 subql #1,d2
============ Listing of stream.s ============ PAGE 25
1321 jra L1146
1322 L1159:
1323 pea a6@(-1)
1324 movel a3,sp@-
1325 jbsr _get__7istreamRc
1326 movel d0,a0
1327 addqw #8,sp
1328 tstl a0@(4)
1329 jeq L1150
1330 clrl d0
1331 L1150:
1332 tstl d0
1333 jeq L1134
1334 cmpb a6@(-1),d4
1335 jne L1151
1336 movel a3@,a0
1337 moveb a6@(-1),d0
1338 extbl d0
1339 movel a0@(8),d1
1340 cmpl a0@,d1
1341 jls L1155
1342 L1162:
1343 subql #1,a0@(8)
1344 movel a0@(8),a0
1345 moveb d0,a0@
1346 extbl d0
1347 jra L1156
1348 L1155:
1349 moveq #-1,d0
1350 L1156:
1351 moveq #-1,d1
1352 cmpl d0,d1
1353 jne L1134
1354 moveq #2,d1
1355 orl d1,a3@(4)
1356 jra L1134
1357 L1151:
1358 moveb a6@(-1),a2@+
1359 L1146:
1360 subql #1,d2
1361 moveq #-1,d1
1362 cmpl d2,d1
1363 jlt L1159
1364 L1134:
1365 clrb a2@
1366 L1160:
1367 movel a3,d0
1368 moveml a6@(-24),#0xc1c
1369 unlk a6
1370 rts
1371 .even
1372 .globl _op$arshift__7istreamPc
1373 _op$arshift__7istreamPc:
1374 link a6,#-4
1375 moveml #0x2030,sp@-
============ Listing of stream.s ============ PAGE 26
1376 movel a6@(8),a3
1377 movel a6@(12),a2
1378 clrl d2
1379 tstl a3@
1380 jeq L1167
1381 movel a3@,a0
1382 movel a0@(18),a0
1383 movew a0@(88),a1
1384 addl a3@,a1
1385 movel a1,sp@-
1386 movel a0@(92),a0
1387 jbsr a0@
1388 addqw #4,sp
1389 tstl d0
1390 jeq L1167
1391 tstl a3@(4)
1392 jne L1167
1393 moveq #1,d2
1394 L1167:
1395 tstl d2
1396 jeq L1165
1397 tstl a2
1398 jne L1164
1399 L1165:
1400 moveq #2,d1
1401 orl d1,a3@(4)
1402 jra L1190
1403 L1164:
1404 tstb a3@(12)
1405 jeq L1169
1406 pea _WS
1407 movel a3,sp@-
1408 jbsr _op$arshift__7istreamR10whitespace
1409 movel d0,a0
1410 addqw #8,sp
1411 tstl a0@(4)
1412 sne d0
1413 btst #0,d0
1414 jne L1190
1415 L1169:
1416 pea a6@(-1)
1417 movel a3,sp@-
1418 jbsr _get__7istreamRc
1419 movel d0,a0
1420 addqw #8,sp
1421 tstl a0@(4)
1422 jeq L1174
1423 clrl d0
1424 L1174:
1425 tstl d0
1426 jeq L1171
1427 jra L1180
1428 L1189:
1429 moveb a6@(-1),d0
1430 extbl d0
============ Listing of stream.s ============ PAGE 27
1431 lea __ctype_+1,a0
1432 btst #3,a0@(d0:l)
1433 jeq L1180
1434 movel a3@,a0
1435 movel a0@(8),d1
1436 cmpl a0@,d1
1437 jls L1185
1438 subql #1,a0@(8)
1439 movel a0@(8),a0
1440 moveb d0,a0@
1441 extbl d0
1442 jra L1186
1443 L1185:
1444 moveq #-1,d0
1445 L1186:
1446 moveq #-1,d1
1447 cmpl d0,d1
1448 jne L1171
1449 moveq #2,d1
1450 orl d1,a3@(4)
1451 jra L1171
1452 L1180:
1453 moveb a6@(-1),a2@+
1454 pea a6@(-1)
1455 movel a3,sp@-
1456 jbsr _get__7istreamRc
1457 movel d0,a0
1458 addqw #8,sp
1459 tstl a0@(4)
1460 jeq L1179
1461 clrl d0
1462 L1179:
1463 tstl d0
1464 jne L1189
1465 L1171:
1466 clrb a2@
1467 L1190:
1468 movel a3,d0
1469 moveml a6@(-16),#0xc04
1470 unlk a6
1471 rts
1472 .even
1473 .globl _getline__7istreamPcic
1474 _getline__7istreamPcic:
1475 link a6,#-4
1476 moveml #0x3830,sp@-
1477 movel a6@(8),a3
1478 movel a6@(12),a2
1479 movel a6@(16),d2
1480 moveb a6@(23),d4
1481 clrl d3
1482 tstl a3@
1483 jeq L1194
1484 movel a3@,a0
1485 movel a0@(18),a0
============ Listing of stream.s ============ PAGE 28
1486 movew a0@(88),a1
1487 addl a3@,a1
1488 movel a1,sp@-
1489 movel a0@(92),a0
1490 jbsr a0@
1491 addqw #4,sp
1492 tstl d0
1493 jeq L1194
1494 tstl a3@(4)
1495 jne L1194
1496 moveq #1,d3
1497 L1194:
1498 tstl d3
1499 jne L1192
1500 moveq #2,d1
1501 orl d1,a3@(4)
1502 jra L1201
1503 L1192:
1504 L1196:
1505 subql #1,d2
1506 tstl d2
1507 jle L1197
1508 pea a6@(-1)
1509 movel a3,sp@-
1510 jbsr _get__7istreamRc
1511 movel d0,a0
1512 addqw #8,sp
1513 tstl a0@(4)
1514 jeq L1200
1515 clrl d0
1516 L1200:
1517 tstl d0
1518 jeq L1197
1519 moveb a6@(-1),d0
1520 moveb d0,a2@+
1521 cmpb d0,d4
1522 jne L1196
1523 L1197:
1524 clrb a2@
1525 L1201:
1526 movel a3,d0
1527 moveml a6@(-24),#0xc1c
1528 unlk a6
1529 rts
1530 .even
1531 .globl _readline__7istreamic
1532 _readline__7istreamic:
1533 link a6,#-516
1534 moveml #0x3e20,sp@-
1535 movel a6@(8),d4
1536 movel a6@(12),d5
1537 moveb a6@(19),d2
1538 lea a6@(-512),a2
1539 movel a6,d3
1540 addl #-512,d3
============ Listing of stream.s ============ PAGE 29
1541 jra L1203
1542 L1212:
1543 cmpb a6@(-513),d2
1544 jeq L1204
1545 moveb a6@(-513),a2@+
1546 movel a2,d0
1547 subl d3,d0
1548 cmpl #511,d0
1549 jle L1203
1550 extbl d2
1551 movel d2,sp@-
1552 movel d5,a1
1553 pea a1@(1)
1554 movel d4,sp@-
1555 jbsr _readline__7istreamic
1556 movel d0,a0
1557 tstl a0
1558 jeq L1220
1559 jra L1208
1560 L1210:
1561 moveb a2@-,a0@-
1562 L1208:
1563 cmpl a2,d3
1564 jne L1210
1565 jra L1220
1566 L1203:
1567 pea a6@(-513)
1568 movel d4,sp@-
1569 jbsr _get__7istreamRc
1570 movel d0,a0
1571 addqw #8,sp
1572 tstl a0@(4)
1573 sne d0
1574 btst #0,d0
1575 seq d1
1576 moveq #1,d0
1577 andl d1,d0
1578 jne L1212
1579 L1204:
1580 tstl d0
1581 jne L1213
1582 movel a6,d0
1583 addl #-512,d0
1584 cmpl a2,d0
1585 jeq L1214
1586 L1213:
1587 movel d5,d1
1588 moveq #9,d6
1589 asll d6,d1
1590 addl a2,d1
1591 movel a6,d0
1592 addl #-512,d0
1593 movel d1,d2
1594 subl d0,d2
1595 addql #1,d2
============ Listing of stream.s ============ PAGE 30
1596 movel d2,sp@-
1597 jbsr ___builtin_new
1598 movel d0,a0
1599 tstl a0
1600 jeq L1214
1601 lea a0@(-1,d2:l),a0
1602 clrb a0@
1603 movel a6,d0
1604 addl #-512,d0
1605 jra L1215
1606 L1217:
1607 moveb a2@-,a0@-
1608 L1215:
1609 cmpl a2,d0
1610 jne L1217
1611 L1220:
1612 movel a0,d0
1613 jra L1202
1614 L1214:
1615 clrl d0
1616 L1202:
1617 moveml a6@(-540),#0x47c
1618 unlk a6
1619 rts
1620 .even
1621 .globl _gets__7istreamPPcc
1622 _gets__7istreamPPcc:
1623 link a6,#0
1624 moveml #0x3830,sp@-
1625 movel a6@(8),a2
1626 moveb a6@(19),d4
1627 clrl d3
1628 clrl d2
1629 tstl a2@
1630 jeq L1225
1631 movel a2@,a0
1632 movel a0@(18),a0
1633 movew a0@(88),a1
1634 addl a2@,a1
1635 movel a1,sp@-
1636 movel a0@(92),a0
1637 jbsr a0@
1638 addqw #4,sp
1639 tstl d0
1640 jeq L1225
1641 tstl a2@(4)
1642 jne L1225
1643 moveq #1,d2
1644 L1225:
1645 tstl d2
1646 jeq L1223
1647 extbl d4
1648 movel d4,sp@-
1649 clrl sp@-
1650 movel a2,sp@-
============ Listing of stream.s ============ PAGE 31
1651 jbsr _readline__7istreamic
1652 movel a6@(12),a3
1653 movel d0,a3@
1654 jne L1222
1655 L1223:
1656 moveq #1,d3
1657 L1222:
1658 tstl d3
1659 jeq L1227
1660 moveq #2,d1
1661 orl d1,a2@(4)
1662 L1227:
1663 movel a2,d0
1664 moveml a6@(-20),#0xc1c
1665 unlk a6
1666 rts
1667 .even
1668 .globl _op$arshift__7istreamRl
1669 _op$arshift__7istreamRl:
1670 link a6,#-4
1671 moveml #0x3038,sp@-
1672 movel a6@(8),a2
1673 movel a6@(12),a3
1674 clrl d2
1675 tstl a2@
1676 jeq L1232
1677 movel a2@,a0
1678 movel a0@(18),a0
1679 movew a0@(88),a1
1680 addl a2@,a1
1681 movel a1,sp@-
1682 movel a0@(92),a0
1683 jbsr a0@
1684 addqw #4,sp
1685 tstl d0
1686 jeq L1232
1687 tstl a2@(4)
1688 jne L1232
1689 moveq #1,d2
1690 L1232:
1691 tstl d2
1692 jne L1230
1693 moveq #4,d1
1694 orl d1,a2@(4)
1695 jra L1260
1696 L1230:
1697 clrl d2
1698 clrb d3
1699 clrl a3@
1700 tstb a2@(12)
1701 jeq L1234
1702 pea _WS
1703 movel a2,sp@-
1704 jbsr _op$arshift__7istreamR10whitespace
1705 addqw #8,sp
============ Listing of stream.s ============ PAGE 32
1706 L1234:
1707 tstl a2@(4)
1708 seq d0
1709 btst #0,d0
1710 jne L1238
1711 moveq #4,d1
1712 orl d1,a2@(4)
1713 jra L1260
1714 L1249:
1715 cmpb #45,a6@(-1)
1716 jne L1243
1717 tstb d3
1718 jne L1239
1719 moveb #45,d3
1720 jra L1238
1721 L1243:
1722 cmpb #47,a6@(-1)
1723 jle L1239
1724 cmpb #57,a6@(-1)
1725 jgt L1239
1726 movel a3@,d0
1727 asll #2,d0
1728 addl a3@,d0
1729 moveb a6@(-1),d2
1730 extbl d2
1731 movel d2,a4
1732 lea a4@(-48,d0:l:2),a4
1733 movel a4,a3@
1734 L1238:
1735 pea a6@(-1)
1736 movel a2,sp@-
1737 jbsr _get__7istreamRc
1738 movel d0,a0
1739 addqw #8,sp
1740 tstl a0@(4)
1741 jeq L1242
1742 clrl d0
1743 L1242:
1744 tstl d0
1745 jne L1249
1746 L1239:
1747 tstl a2@(4)
1748 seq d0
1749 btst #0,d0
1750 jeq L1250
1751 movel a2@,a0
1752 moveb a6@(-1),d0
1753 extbl d0
1754 movel a0@(8),d1
1755 cmpl a0@,d1
1756 jls L1255
1757 subql #1,a0@(8)
1758 movel a0@(8),a0
1759 moveb d0,a0@
1760 extbl d0
============ Listing of stream.s ============ PAGE 33
1761 jra L1256
1762 L1255:
1763 moveq #-1,d0
1764 L1256:
1765 moveq #-1,d1
1766 cmpl d0,d1
1767 jne L1250
1768 moveq #2,d1
1769 orl d1,a2@(4)
1770 L1250:
1771 tstl d2
1772 jne L1258
1773 moveq #4,d1
1774 orl d1,a2@(4)
1775 L1258:
1776 cmpb #45,d3
1777 jne L1260
1778 negl a3@
1779 L1260:
1780 movel a2,d0
1781 moveml a6@(-24),#0x1c0c
1782 unlk a6
1783 rts
1784 .even
1785 .globl _op$arshift__7istreamRUl
1786 _op$arshift__7istreamRUl:
1787 link a6,#-4
1788 moveml #0x2038,sp@-
1789 movel a6@(8),a2
1790 movel a6@(12),a3
1791 clrl d2
1792 tstl a2@
1793 jeq L1264
1794 movel a2@,a0
1795 movel a0@(18),a0
1796 movew a0@(88),a1
1797 addl a2@,a1
1798 movel a1,sp@-
1799 movel a0@(92),a0
1800 jbsr a0@
1801 addqw #4,sp
1802 tstl d0
1803 jeq L1264
1804 tstl a2@(4)
1805 jne L1264
1806 moveq #1,d2
1807 L1264:
1808 tstl d2
1809 jeq L1287
1810 clrl d2
1811 clrl a3@
1812 tstb a2@(12)
1813 jeq L1266
1814 pea _WS
1815 movel a2,sp@-
============ Listing of stream.s ============ PAGE 34
1816 jbsr _op$arshift__7istreamR10whitespace
1817 addqw #8,sp
1818 L1266:
1819 tstl a2@(4)
1820 seq d0
1821 btst #0,d0
1822 jne L1267
1823 jra L1269
1824 L1276:
1825 cmpb #47,a6@(-1)
1826 jle L1267
1827 cmpb #57,a6@(-1)
1828 jgt L1267
1829 movel a3@,d0
1830 asll #2,d0
1831 addl a3@,d0
1832 moveb a6@(-1),d2
1833 extbl d2
1834 movel d2,a4
1835 lea a4@(-48,d0:l:2),a4
1836 movel a4,a3@
1837 L1269:
1838 pea a6@(-1)
1839 movel a2,sp@-
1840 jbsr _get__7istreamRc
1841 movel d0,a0
1842 addqw #8,sp
1843 tstl a0@(4)
1844 jeq L1273
1845 clrl d0
1846 L1273:
1847 tstl d0
1848 jne L1276
1849 L1267:
1850 tstl a2@(4)
1851 seq d0
1852 btst #0,d0
1853 jeq L1277
1854 movel a2@,a0
1855 moveb a6@(-1),d0
1856 extbl d0
1857 movel a0@(8),d1
1858 cmpl a0@,d1
1859 jls L1282
1860 subql #1,a0@(8)
1861 movel a0@(8),a0
1862 moveb d0,a0@
1863 extbl d0
1864 jra L1283
1865 L1282:
1866 moveq #-1,d0
1867 L1283:
1868 moveq #-1,d1
1869 cmpl d0,d1
1870 jne L1277
============ Listing of stream.s ============ PAGE 35
1871 moveq #2,d1
1872 orl d1,a2@(4)
1873 L1277:
1874 tstl d2
1875 jne L1285
1876 L1287:
1877 moveq #4,d1
1878 orl d1,a2@(4)
1879 L1285:
1880 movel a2,d0
1881 moveml a6@(-20),#0x1c04
1882 unlk a6
1883 rts
1884 .even
1885 .globl _op$arshift__7istreamRd
1886 _op$arshift__7istreamRd:
1887 link a6,#-8
1888 moveml #0x3f38,sp@-
1889 movel a6@(8),a3
1890 clrl d2
1891 tstl a3@
1892 jeq L1291
1893 movel a3@,a0
1894 movel a0@(18),a0
1895 movew a0@(88),a1
1896 addl a3@,a1
1897 movel a1,sp@-
1898 movel a0@(92),a0
1899 jbsr a0@
1900 addqw #4,sp
1901 tstl d0
1902 jeq L1291
1903 tstl a3@(4)
1904 jne L1291
1905 moveq #1,d2
1906 L1291:
1907 tstl d2
1908 jne L1289
1909 moveq #4,d7
1910 orl d7,a3@(4)
1911 jra L1351
1912 L1289:
1913 tstl __libgxx_io_oblast
1914 jeq L1293
1915 movel #__libgxx_io_ob,d1
1916 movel __libgxx_io_oblast,d0
1917 cmpl __libgxx_io_ob+4,d0
1918 jcs L1295
1919 cmpl __libgxx_io_ob+16,d0
1920 jcc L1295
1921 movel d0,__libgxx_io_ob+8
1922 movel d0,__libgxx_io_ob+12
1923 jra L1293
1924 L1295:
1925 movel d0,sp@-
============ Listing of stream.s ============ PAGE 36
1926 movel d1,sp@-
1927 jbsr __free__7ObstackPv
1928 addqw #8,sp
1929 L1293:
1930 clrb a6@(-7)
1931 clrb a6@(-3)
1932 clrb a6@(-5)
1933 clrb d5
1934 clrb d4
1935 clrb d6
1936 clrb d3
1937 tstb a3@(12)
1938 jeq L1297
1939 pea _WS
1940 movel a3,sp@-
1941 jbsr _op$arshift__7istreamR10whitespace
1942 addqw #8,sp
1943 L1297:
1944 tstl a3@(4)
1945 seq d0
1946 btst #0,d0
1947 jne L1298
1948 moveq #4,d7
1949 orl d7,a3@(4)
1950 jra L1351
1951 L1298:
1952 lea __libgxx_io_ob,a2
1953 jra L1301
1954 L1334:
1955 cmpb #45,a6@(-1)
1956 jeq L1307
1957 cmpb #43,a6@(-1)
1958 jne L1306
1959 L1307:
1960 tstb d4
1961 jeq L1308
1962 tstb d6
1963 jne L1308
1964 moveb a6@(-1),d6
1965 moveb d6,d2
1966 jra L1354
1967 L1308:
1968 tstb d5
1969 jne L1302
1970 tstb a6@(-7)
1971 jne L1302
1972 moveb a6@(-1),d5
1973 moveb d5,d2
1974 jra L1354
1975 L1306:
1976 cmpb #46,a6@(-1)
1977 jne L1317
1978 tstb d3
1979 jne L1317
1980 moveb a6@(-1),d3
============ Listing of stream.s ============ PAGE 37
1981 moveb d3,d2
1982 jra L1354
1983 L1317:
1984 cmpb #101,a6@(-1)
1985 jeq L1322
1986 cmpb #69,a6@(-1)
1987 jne L1321
1988 L1322:
1989 tstb d4
1990 jne L1321
1991 moveb a6@(-1),d4
1992 moveb d4,d2
1993 L1354:
1994 extbl d2
1995 movel __libgxx_io_ob+12,d0
1996 addql #1,d0
1997 cmpl __libgxx_io_ob+16,d0
1998 jls L1324
1999 pea 1:w
2000 movel a2,sp@-
2001 jbsr _newchunk__7Obstacki
2002 addqw #8,sp
2003 L1324:
2004 movel a2@(12),a0
2005 moveb d2,a0@
2006 addql #1,a2@(12)
2007 jra L1301
2008 L1321:
2009 cmpb #47,a6@(-1)
2010 jle L1302
2011 cmpb #57,a6@(-1)
2012 jgt L1302
2013 moveb a6@(-1),d2
2014 extbl d2
2015 movel __libgxx_io_ob+12,d0
2016 addql #1,d0
2017 cmpl __libgxx_io_ob+16,d0
2018 jls L1328
2019 pea 1:w
2020 movel a2,sp@-
2021 jbsr _newchunk__7Obstacki
2022 addqw #8,sp
2023 L1328:
2024 movel a2@(12),a0
2025 moveb d2,a0@
2026 addql #1,a2@(12)
2027 tstb d4
2028 jeq L1329
2029 moveb a6@(-1),a6@(-5)
2030 jra L1301
2031 L1329:
2032 tstb d3
2033 jeq L1331
2034 moveb a6@(-1),a6@(-3)
2035 jra L1301
============ Listing of stream.s ============ PAGE 38
2036 L1331:
2037 moveb a6@(-1),a6@(-7)
2038 L1301:
2039 pea a6@(-1)
2040 movel a3,sp@-
2041 jbsr _get__7istreamRc
2042 movel d0,a0
2043 addqw #8,sp
2044 tstl a0@(4)
2045 jeq L1305
2046 clrl d0
2047 L1305:
2048 tstl d0
2049 jne L1334
2050 L1302:
2051 lea __libgxx_io_ob,a2
2052 clrl d2
2053 movel __libgxx_io_ob+12,d0
2054 addql #1,d0
2055 cmpl __libgxx_io_ob+16,d0
2056 jls L1337
2057 pea 1:w
2058 movel a2,sp@-
2059 jbsr _newchunk__7Obstacki
2060 addqw #8,sp
2061 L1337:
2062 movel a2@(12),a0
2063 moveb d2,a0@
2064 addql #1,a2@(12)
2065 movel a2,sp@-
2066 jbsr _finish__7Obstack
2067 movel d0,d2
2068 addqw #4,sp
2069 tstl a3@(4)
2070 seq d0
2071 btst #0,d0
2072 jeq L1338
2073 movel a3@,a0
2074 moveb a6@(-1),d0
2075 extbl d0
2076 movel a0@(8),d7
2077 cmpl a0@,d7
2078 jls L1343
2079 subql #1,a0@(8)
2080 movel a0@(8),a0
2081 moveb d0,a0@
2082 extbl d0
2083 jra L1344
2084 L1343:
2085 moveq #-1,d0
2086 L1344:
2087 moveq #-1,d7
2088 cmpl d0,d7
2089 jne L1338
2090 moveq #2,d7
============ Listing of stream.s ============ PAGE 39
2091 orl d7,a3@(4)
2092 L1338:
2093 tstb a6@(-7)
2094 jne L1347
2095 tstb a6@(-3)
2096 jeq L1346
2097 L1347:
2098 tstb d4
2099 jeq L1348
2100 tstb a6@(-5)
2101 jeq L1346
2102 L1348:
2103 movel d2,sp@-
2104 jbsr _atof
2105 movel a6@(12),a4
2106 movel d0,a4@
2107 movel d1,a4@(4)
2108 addqw #4,sp
2109 jra L1349
2110 L1346:
2111 moveq #4,d7
2112 orl d7,a3@(4)
2113 L1349:
2114 movel #__libgxx_io_ob,d0
2115 cmpl __libgxx_io_ob+4,d2
2116 jcs L1352
2117 cmpl __libgxx_io_ob+16,d2
2118 jcc L1352
2119 movel d2,__libgxx_io_ob+8
2120 movel d2,__libgxx_io_ob+12
2121 jra L1351
2122 L1352:
2123 movel d2,sp@-
2124 movel d0,sp@-
2125 jbsr __free__7ObstackPv
2126 L1351:
2127 movel a3,d0
2128 moveml a6@(-44),#0x1cfc
2129 unlk a6
2130 rts
2131 .even
2132 .globl _op$arshift__7istreamRi
2133 _op$arshift__7istreamRi:
2134 link a6,#-4
2135 movel d2,sp@-
2136 movel a6@(8),d2
2137 pea a6@(-4)
2138 movel d2,sp@-
2139 jbsr _op$arshift__7istreamRl
2140 movel a6@(12),a0
2141 movel a6@(-4),a0@
2142 movel d2,d0
2143 movel a6@(-8),d2
2144 unlk a6
2145 rts
============ Listing of stream.s ============ PAGE 40
2146 .even
2147 .globl _op$arshift__7istreamRUi
2148 _op$arshift__7istreamRUi:
2149 link a6,#-4
2150 movel d2,sp@-
2151 movel a6@(8),d2
2152 pea a6@(-4)
2153 movel d2,sp@-
2154 jbsr _op$arshift__7istreamRl
2155 movel a6@(12),a0
2156 movel a6@(-4),a0@
2157 movel d2,d0
2158 movel a6@(-8),d2
2159 unlk a6
2160 rts
2161 .even
2162 .globl _op$arshift__7istreamRs
2163 _op$arshift__7istreamRs:
2164 link a6,#-4
2165 movel d2,sp@-
2166 movel a6@(8),d2
2167 pea a6@(-4)
2168 movel d2,sp@-
2169 jbsr _op$arshift__7istreamRl
2170 movel a6@(12),a0
2171 movew a6@(-2),a0@
2172 movel d2,d0
2173 movel a6@(-8),d2
2174 unlk a6
2175 rts
2176 .even
2177 .globl _op$arshift__7istreamRUs
2178 _op$arshift__7istreamRUs:
2179 link a6,#-4
2180 movel d2,sp@-
2181 movel a6@(8),d2
2182 pea a6@(-4)
2183 movel d2,sp@-
2184 jbsr _op$arshift__7istreamRl
2185 movel a6@(12),a0
2186 movew a6@(-2),a0@
2187 movel d2,d0
2188 movel a6@(-8),d2
2189 unlk a6
2190 rts
2191 .even
2192 .globl _op$arshift__7istreamRf
2193 _op$arshift__7istreamRf:
2194 link a6,#-8
2195 movel d2,sp@-
2196 movel a6@(8),d2
2197 pea a6@(-8)
2198 movel d2,sp@-
2199 jbsr _op$arshift__7istreamRd
2200 fmoved a6@(-8),fp0
============ Listing of stream.s ============ PAGE 41
2201 movel a6@(12),a0
2202 fmoves fp0,a0@
2203 movel d2,d0
2204 movel a6@(-12),d2
2205 unlk a6
2206 rts
2207 .even
2208 .globl _name__7istream
2209 _name__7istream:
2210 link a6,#0
2211 movel a2,sp@-
2212 movel a6@(8),a0
2213 movel a0@,a1
2214 movel a1@(18),a1
2215 movew a1@(40),a2
2216 addl a0@,a2
2217 movel a2,sp@-
2218 movel a1@(44),a0
2219 jbsr a0@
2220 movel a6@(-4),a2
2221 unlk a6
2222 rts
2223 .even
2224 .globl _error__7istream
2225 _error__7istream:
2226 link a6,#0
2227 movel a2,sp@-
2228 movel a6@(8),a0
2229 movel a0@,a1
2230 movel a1@(18),a1
2231 movew a1@(104),a2
2232 addl a0@,a2
2233 movel a2,sp@-
2234 movel a1@(108),a0
2235 jbsr a0@
2236 movel a6@(-4),a2
2237 unlk a6
2238 rts
2239 .globl _cerr
2240 .data
2241 .even
2242 _cerr:
2243 .skip 10
2244 .globl _cout
2245 .even
2246 _cout:
2247 .skip 10
2248 .globl _cin
2249 .even
2250 _cin:
2251 .skip 14
2252 .stabs "_fini",10,0,0,0
2253 .stabs "__GLOBAL_$D$stream_cc",4,0,0,0
2254 .text
2255 .even
============ Listing of stream.s ============ PAGE 42
2256 .globl __GLOBAL_$D$stream_cc
2257 __GLOBAL_$D$stream_cc:
2258 link a6,#0
2259 movel a2,sp@-
2260 clrl sp@-
2261 pea _cin
2262 jbsr __$_istream
2263 addqw #8,sp
2264 clrl sp@-
2265 pea _cout
2266 lea __$_ostream,a2
2267 jbsr a2@
2268 addqw #8,sp
2269 clrl sp@-
2270 pea _cerr
2271 jbsr a2@
2272 movel a6@(-4),a2
2273 unlk a6
2274 rts
2275 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$stream_cc
2276 .stabs "_init",10,0,0,0
2277 .stabs "__GLOBAL_$I$stream_cc",4,0,0,0
2278 .even
2279 .globl __GLOBAL_$I$stream_cc
2280 __GLOBAL_$I$stream_cc:
2281 link a6,#0
2282 moveml #0x30,sp@-
2283 lea __iob+40,a2
2284 movel a2,sp@-
2285 pea _cerr
2286 lea ___7ostreamP6_iobuf,a3
2287 jbsr a3@
2288 pea a2@(-20)
2289 pea _cout
2290 jbsr a3@
2291 pea _cout
2292 pea 1:w
2293 pea __iob
2294 pea _cin
2295 jbsr ___7istreamP6_iobufiP7ostream
2296 moveml a6@(-8),#0xc00
2297 unlk a6
2298 rts
2299 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$stream_cc
2300 .comm _WS,2
============ Listing Complete ============
Here's a script of compilation of spl.cc which just contains a simple
program to print a message to standard output using the 'defective'
libg++.a.
Script started on Tue Dec 19 16:43:48 1989
cisa(41)% g++ spl.cc
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::~File() referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::error() referenced from text segment
gnulib3.o: Undefined symbol ___DTOR_LIST__ referenced from text segment
gnulib3.o: Undefined symbol ___CTOR_LIST__ referenced from text segment
gnulib3.o: Undefined symbol ___CTOR_LIST__ referenced from text segment
File.o: Undefined symbol File::setname(const char *) referenced from text segment
File.o: Undefined symbol File::error() referenced from text segment
cisa(42)% exit
cisa(43)%
script done on Tue Dec 19 16:44:09 198