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