Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:26
                                                             Page     1-1


				;
				; string functions for lattice C
				;
				
				.list
				
				sBegin	data
 0000                        2	_DATA segment 
				assumes ds,data
				
				externB XLTab
				externB XUTab
				
				sEnd
 0000                        1		_DATA ends 
				
				sBegin	code
 0000                        2	_TEXT segment 
				assumes cs,code
				
				externP strlen
				
				;
				; strbscan (string, set) returns pointer to 1st
				 char in set or end
				;
				cProc	strbscan,<PUBLIC>,<SI,DI>
 0000                        2	strbscan label near 
				parmW	str
				parmW	set
				cBegin
 0000                        1		    _strbscan proc NEAR 
 0000  55                    1			push bp 
 0001  8B EC                 1			mov bp,sp 
 0003  56                    3	push si 
 0004  57                    3	push di 
 0005  1E				push	ds
 0006  07				pop	es
					cCall	strlen,<set>
 0007  FF 76 06              5	push set 
 000A  E8 0000 E             1	call _strlen 
 000D  83 C4 02              1	add sp,?argl 
 0010  40				inc	ax
 0011  8B D8				mov	bx, ax
 0013  8B 76 04				mov	si,str
 0016  FC				cld
 0017				bscan:
 0017  AC				lodsb
 0018  8B CB				mov	cx,bx
 001A  8B 7E 06				mov	di,set
				;
				; While not in the set
				;
 001D  F2/ AE				repnz	scasb
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:26
                                                             Page     1-2


 001F  75 F6				jnz	bscan
 0021  8D 44 FF				lea	ax,[si-1]
				cEnd
 0024  5F                    3	pop di 
 0025  5E                    3	pop si 
 0026  8B E5                 1			mov sp,bp 
 0028  5D                    1			pop bp 
 0029  C3                    1			ret 
 002A                        1		_strbscan endp 
				
				;
				; strbskip ( string, set ) returns pointer to 1
				st char not in set
				;
				cProc	strbskip,<PUBLIC>,<SI,DI>
 002A                        2	strbskip label near 
				parmW	str
				parmW	set
				cBegin
 002A                        1		    _strbskip proc NEAR 
 002A  55                    1			push bp 
 002B  8B EC                 1			mov bp,sp 
 002D  56                    3	push si 
 002E  57                    3	push di 
 002F  1E				push	ds
 0030  07				pop	es
					cCall	strlen,<set>
 0031  FF 76 06              5	push set 
 0034  E8 0000 E             1	call _strlen 
 0037  83 C4 02              1	add sp,?argl 
 003A  40				inc	ax
 003B  8B D8				mov	bx, ax
 003D  8B 76 04				mov	si,str
 0040  FC				cld
 0041				bskip:
 0041  AC				lodsb
 0042  0A C0				or	al,al
 0044  74 09				jz	eskip
 0046  8B CB				mov	cx,bx
 0048  8B 7E 06				mov	di,set
				;
				; While not in the set
				;
 004B  F2/ AE				repnz	scasb
 004D  74 F2				jz	bskip
 004F				eskip:
 004F  8D 44 FF				lea	ax,[si-1]
				cEnd
 0052  5F                    3	pop di 
 0053  5E                    3	pop si 
 0054  8B E5                 1			mov sp,bp 
 0056  5D                    1			pop bp 
 0057  C3                    1			ret 
 0058                        1		_strbskip endp 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:26
                                                             Page     1-3


				
				;
				; strpre (s1, s2) returns -1 if s1 is a prefix 
				of s2, 0 otherwise. Ignores
				; case.
				;
				cProc	strpre,<PUBLIC>,<si,di>
 0058                        2	strpre label near 
				parmW	pref
				parmW	str
				cBegin
 0058                        1		    _strpre proc NEAR 
 0058  55                    1			push bp 
 0059  8B EC                 1			mov bp,sp 
 005B  56                    3	push si 
 005C  57                    3	push di 
 005D  FC				cld
 005E  8B 76 04				mov	si,pref
 0061  8B 7E 06				mov	di,str
 0064  BB 0000 E			mov	bx,dataOFFSET xltab
 0067				preCompare:
 0067  AC				lodsb
 0068  8A 25				mov	ah,[di]
 006A  47				inc	di
				
 006B  D7				xlat
 006C  86 E0				xchg	ah,al
 006E  D7				xlat
				
 006F  3A E0				cmp	ah,al
 0071  75 09				jnz	preDif
 0073  0A E4				or	ah,ah
 0075  75 F0				jnz	preCompare
 0077				preYes:
 0077  B8 FFFF				mov	ax,-1
 007A  EB 06				jmp	short preDone
 007C				preDif:
 007C  0A E4				or	ah,ah
 007E  74 F7				jz	preYes
 0080  33 C0				xor	ax,ax
 0082				preDone:
				cEnd
 0082  5F                    3	pop di 
 0083  5E                    3	pop si 
 0084  8B E5                 1			mov sp,bp 
 0086  5D                    1			pop bp 
 0087  C3                    1			ret 
 0088                        1		_strpre endp 
				
				sEnd
 0088                        1		_TEXT ends 
				
				end

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:26
                                                             Symbols-1


Macros:

		N a m e			Lines

?UTPE  . . . . . . . . . . . . .  	   1
ADDSEG . . . . . . . . . . . . .  	  20
ADD_DGROUP . . . . . . . . . . .  	   1
ADD_IGROUP . . . . . . . . . . .  	   1
ARG  . . . . . . . . . . . . . .  	   4
ASSUMES  . . . . . . . . . . . .  	  20
BEGINCODE  . . . . . . . . . . .  	   2
BEGINDATA  . . . . . . . . . . .  	   2
CBEGIN . . . . . . . . . . . . .  	   0
CCALL  . . . . . . . . . . . . .  	  30
CEND . . . . . . . . . . . . . .  	   0
CPROC  . . . . . . . . . . . . .  	   1
CREATESEG  . . . . . . . . . . .  	  16
DEFB . . . . . . . . . . . . . .  	   1
DEFCP  . . . . . . . . . . . . .  	   1
DEFD . . . . . . . . . . . . . .  	   1
DEFDP  . . . . . . . . . . . . .  	   1
DEFGRP . . . . . . . . . . . . .  	   1
DEFQ . . . . . . . . . . . . . .  	   1
DEFT . . . . . . . . . . . . . .  	   1
DEFW . . . . . . . . . . . . . .  	   1
ERRN$  . . . . . . . . . . . . .  	   1
ERRNZ  . . . . . . . . . . . . .  	   5
ERRNZ1 . . . . . . . . . . . . .  	   1
ERROR  . . . . . . . . . . . . .  	   2
EXTERNB  . . . . . . . . . . . .  	   1
EXTERNCP . . . . . . . . . . . .  	   1
EXTERND  . . . . . . . . . . . .  	   1
EXTERNDP . . . . . . . . . . . .  	   1
EXTERNFP . . . . . . . . . . . .  	   1
EXTERNNP . . . . . . . . . . . .  	   1
EXTERNP  . . . . . . . . . . . .  	   1
EXTERNQ  . . . . . . . . . . . .  	   1
EXTERNT  . . . . . . . . . . . .  	   1
EXTERNW  . . . . . . . . . . . .  	   1
GLOBALB  . . . . . . . . . . . .  	   2
GLOBALCP . . . . . . . . . . . .  	   1
GLOBALD  . . . . . . . . . . . .  	   2
GLOBALDP . . . . . . . . . . . .  	   1
GLOBALQ  . . . . . . . . . . . .  	   2
GLOBALT  . . . . . . . . . . . .  	   2
GLOBALW  . . . . . . . . . . . .  	   2
IN_DGROUP  . . . . . . . . . . .  	   7
IN_IGROUP  . . . . . . . . . . .  	   7
LABELB . . . . . . . . . . . . .  	   1
LABELCP  . . . . . . . . . . . .  	   1
LABELD . . . . . . . . . . . . .  	   1
LABELDP  . . . . . . . . . . . .  	   1
LABELFP  . . . . . . . . . . . .  	   1
LABELNP  . . . . . . . . . . . .  	   1
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:26
                                                             Symbols-2


LABELP . . . . . . . . . . . . .  	   1
LABELQ . . . . . . . . . . . . .  	   1
LABELT . . . . . . . . . . . . .  	   1
LABELW . . . . . . . . . . . . .  	   1
LOCALB . . . . . . . . . . . . .  	   1
LOCALCP  . . . . . . . . . . . .  	   1
LOCALD . . . . . . . . . . . . .  	   5
LOCALDP  . . . . . . . . . . . .  	   1
LOCALQ . . . . . . . . . . . . .  	   1
LOCALT . . . . . . . . . . . . .  	   1
LOCALV . . . . . . . . . . . . .  	   1
LOCALW . . . . . . . . . . . . .  	   1
OUTIF  . . . . . . . . . . . . .  	  17
PARMB  . . . . . . . . . . . . .  	   1
PARMCP . . . . . . . . . . . . .  	   1
PARMD  . . . . . . . . . . . . .  	  13
PARMDP . . . . . . . . . . . . .  	   1
PARMQ  . . . . . . . . . . . . .  	   1
PARMT  . . . . . . . . . . . . .  	   1
PARMW  . . . . . . . . . . . . .  	   1
REGPTR . . . . . . . . . . . . .  	   8
SAVE . . . . . . . . . . . . . .  	   2
SBEGIN . . . . . . . . . . . . .  	   1
SEND . . . . . . . . . . . . . .  	   1
SMASHES  . . . . . . . . . . . .  	   5
STATICB  . . . . . . . . . . . .  	   2
STATICCP . . . . . . . . . . . .  	   1
STATICD  . . . . . . . . . . . .  	   2
STATICDP . . . . . . . . . . . .  	   1
STATICQ  . . . . . . . . . . . .  	   2
STATICT  . . . . . . . . . . . .  	   2
STATICW  . . . . . . . . . . . .  	   2

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

DGROUP . . . . . . . . . . . . .  	GROUP
  _DATA  . . . . . . . . . . . .  	0000	WORD	PUBLIC	'DATA'
IGROUP . . . . . . . . . . . . .  	GROUP
  _TEXT  . . . . . . . . . . . .  	0088	BYTE	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

ALTVECT  . . . . . . . . . . . .  	ALIAS	 FALSE		
ASMPASS  . . . . . . . . . . . .  	NUMBER	0002	

BSCAN  . . . . . . . . . . . . .  	L NEAR	0017	_TEXT
BSKIP  . . . . . . . . . . . . .  	L NEAR	0041	_TEXT
BUFFERFLAG . . . . . . . . . . .  	NUMBER	FFFF	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:26
                                                             Symbols-3



CODEOFFSET . . . . . . . . . . .  	TEXT  OFFSET IGROUP:		

DATAOFFSET . . . . . . . . . . .  	TEXT  OFFSET DGROUP:		
DEF_DGROUP . . . . . . . . . . .  	NUMBER	0002	
DEF_IGROUP . . . . . . . . . . .  	NUMBER	0002	

ESKIP  . . . . . . . . . . . . .  	L NEAR	004F	_TEXT

FALSE  . . . . . . . . . . . . .  	NUMBER	0000	

IBM  . . . . . . . . . . . . . .  	ALIAS	 IBMVER		
IBMCOPYRIGHT . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPAN . . . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPVER  . . . . . . . . . . .  	ALIAS	 FALSE		
IBMVER . . . . . . . . . . . . .  	ALIAS	 TRUE		
INTERNAT . . . . . . . . . . . .  	ALIAS	 FALSE		

JAPAN  . . . . . . . . . . . . .  	ALIAS	 FALSE		

KANJI  . . . . . . . . . . . . .  	ALIAS	 FALSE		
KOREA  . . . . . . . . . . . . .  	ALIAS	 FALSE		

MEMC . . . . . . . . . . . . . .  	NUMBER	0000	
MEMH . . . . . . . . . . . . . .  	NUMBER	0000	
MEML . . . . . . . . . . . . . .  	NUMBER	0000	
MEMM . . . . . . . . . . . . . .  	NUMBER	0000	
MEMMOD . . . . . . . . . . . . .  	NUMBER	0001	
MEMS . . . . . . . . . . . . . .  	NUMBER	0001	
MSVER  . . . . . . . . . . . . .  	NUMBER	0000	

PRECOMPARE . . . . . . . . . . .  	L NEAR	0067	_TEXT
PREDIF . . . . . . . . . . . . .  	L NEAR	007C	_TEXT
PREDONE  . . . . . . . . . . . .  	L NEAR	0082	_TEXT
PREF . . . . . . . . . . . . . .  	TEXT  word ptr [bp+4]		
PREYES . . . . . . . . . . . . .  	L NEAR	0077	_TEXT

SET  . . . . . . . . . . . . . .  	TEXT  word ptr [bp+6]		
SIZEC  . . . . . . . . . . . . .  	NUMBER	0000	
SIZED  . . . . . . . . . . . . .  	NUMBER	0000	
STR  . . . . . . . . . . . . . .  	TEXT  word ptr [bp+6]		
STRBSCAN . . . . . . . . . . . .  	L NEAR	0000	_TEXT
STRBSKIP . . . . . . . . . . . .  	L NEAR	002A	_TEXT
STRLEN . . . . . . . . . . . . .  	ALIAS	 _STRLEN		
STRPRE . . . . . . . . . . . . .  	L NEAR	0058	_TEXT

TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TRUEBYTE . . . . . . . . . . . .  	NUMBER	00FF	

XLTAB  . . . . . . . . . . . . .  	ALIAS	 _XLTAB		
XUTAB  . . . . . . . . . . . . .  	ALIAS	 _XUTAB		

??0000 . . . . . . . . . . . . .  	NUMBER	0001	
??0001 . . . . . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:26
                                                             Symbols-4


@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  string		
@VERSION . . . . . . . . . . . .  	TEXT  510		
_strbscan  . . . . . . . . . . .  	N PROC	0000	_TEXT	Global	Length = 002A
_strbskip  . . . . . . . . . . .  	N PROC	002A	_TEXT	Global	Length = 002E
_strlen  . . . . . . . . . . . .  	L NEAR	0000	_TEXT	External
_strpre  . . . . . . . . . . . .  	N PROC	0058	_TEXT	Global	Length = 0030
_XLTab . . . . . . . . . . . . .  	V BYTE	0000	_DATA	External
_XUTab . . . . . . . . . . . . .  	V BYTE	0000	_DATA	External


   1153 Source  Lines
   2737 Total   Lines
    211 Symbols

  47018 + 239933 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
