[alt.sources] Frankenstein Cross Assemblers, Intel 8048 "Flavor, Part 1 of 2

markz@ssc.UUCP (Mark Zenier) (12/04/90)

---- Cut Here and feed the following to sh ----
#!/bin/sh
# This is Frankasm/As8048, a shell archive (shar 3.43)
# made 12/04/1990 08:46 UTC by markz@ssc.uucp
# Source directory /usr/mark/frank.shar
#
# existing files will NOT be overwritten unless -c is specified
# This format requires very little intelligence at unshar time.
# "if test", "echo", "true", and "sed" may be needed.
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#   2554 -r--r----- as8041.tst
#   5150 -r--r----- as8041.tut
#   1657 -r--r----- as8048.1
#   5235 -r--r----- as8048.doc
#   2647 -r--r----- as8048.tst
#   5316 -r--r----- as8048.tut
#  38589 -r--r--r-- as8048.y
#
# ============= as8041.tst ==============
if test -f 'as8041.tst' -a X"$1" != X"-c"; then
	echo 'x - skipping as8041.tst (File already exists)'
else
echo 'x - extracting as8041.tst (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as8041.tst' &&
X	cpu	"8041"
Ximmed	equ	$77
X	add	a, # immed
X	add	a, @ r0
X	add	a, @ r1
X	add	a, r0
X	add	a, r1
X	add	a, r2
X	add	a, r3
X	add	a, r4
X	add	a, r5
X	add	a, r6
X	add	a, r7
X	addc	a, # immed
X	addc	a, @ r0
X	addc	a, @ r1
X	addc	a, r0
X	addc	a, r1
X	addc	a, r2
X	addc	a, r3
X	addc	a, r4
X	addc	a, r5
X	addc	a, r6
X	addc	a, r7
X	anl	a, # immed
X	anl	a, @ r0
X	anl	a, @ r1
X	anl	a, r0
X	anl	a, r1
X	anl	a, r2
X	anl	a, r3
X	anl	a, r4
X	anl	a, r5
X	anl	a, r6
X	anl	a, r7
X	anl	p1, # immed
X	anl	p2, # immed
X	anld	p4, a
X	anld	p5, a
X	anld	p6, a
X	anld	p7, a
X	call	$023
X	call	$123
X	call	$223
X	call	$323
X	call	$423
X	call	$523
X	call	$623
X	call	$723
X	clr	a
X	clr	c
X	clr	f0
X	clr	f1
X	cpl	a
X	cpl	c
X	cpl	f0
X	cpl	f1
X	da	a
X	dec	a
X	dec	r0
X	dec	r1
X	dec	r2
X	dec	r3
X	dec	r4
X	dec	r5
X	dec	r6
X	dec	r7
X	dis	i
X	dis	tcnti
X	djnz	r0 , dest
X	djnz	r1 , dest
X	djnz	r2 , dest
X	djnz	r3 , dest
X	djnz	r4 , dest
X	djnz	r5 , dest
X	djnz	r6 , dest
X	djnz	r7 , dest
X	en	dma
X	en	flags
X	en	i
X	en	tcnti
X	in	a, dbb
Xdest	in	a, p1
X	in	a, p2
X	inc	@ r0
X	inc	@ r1
X	inc	a
X	inc	r0
X	inc	r1
X	inc	r2
X	inc	r3
X	inc	r4
X	inc	r5
X	inc	r6
X	inc	r7
X	jb0	dest
X	jb1	dest
X	jb2	dest
X	jb3	dest
X	jb4	dest
X	jb5	dest
X	jb6	dest
X	jb7	dest
X	jc	dest
X	jf0	dest
X	jf1	dest
X	jmp	$023
X	jmp	$123
X	jmp	$223
X	jmp	$323
X	jmp	$423
X	jmp	$523
X	jmp	$623
X	jmp	$723
X	jmpp	@a
X	jnc	dest
X	jnibf	dest
X	jnt0	dest
X	jnt1	dest
X	jnz	dest
X	jobf	dest
X	jt0	dest
X	jt1	dest
X	jtf	dest
X	jz	dest
X	mov	@ r0, # immed
X	mov	@ r0, a
X	mov	@ r1, # immed
X	mov	@ r1, a
X	mov	a, # immed
X	mov	a, @ r0
X	mov	a, @ r1
X	mov	a, psw
X	mov	a, r0
X	mov	a, r1
X	mov	a, r2
X	mov	a, r3
X	mov	a, r4
X	mov	a, r5
X	mov	a, r6
X	mov	a, r7
X	mov	a, t
X	mov	psw, a
X	mov	r0, # immed
X	mov	r0, a
X	mov	r1, # immed
X	mov	r1, a
X	mov	r2, # immed
X	mov	r2, a
X	mov	r3, # immed
X	mov	r3, a
X	mov	r4, # immed
X	mov	r4, a
X	mov	r5, # immed
X	mov	r5, a
X	mov	r6, # immed
X	mov	r6, a
X	mov	r7, # immed
X	mov	r7, a
X	mov	sts, a
X	mov	t, a
X	movd	a, p4
X	movd	a, p5
X	movd	a, p6
X	movd	a, p7
X	movd	p4, a
X	movd	p5, a
X	movd	p6, a
X	movd	p7, a
X	movp	a, @a
X	movp3	a, @a
X	nop
X	orl	a, # immed
X	orl	a, @ r0
X	orl	a, @ r1
X	orl	a, r0
X	orl	a, r1
X	orl	a, r2
X	orl	a, r3
X	orl	a, r4
X	orl	a, r5
X	orl	a, r6
X	orl	a, r7
X	orl	p1, # immed
X	orl	p2, # immed
X	orld	p4, a
X	orld	p5, a
X	orld	p6, a
X	orld	p7, a
X	out	dbb, a
X	outl	p1, a
X	outl	p2, a
X	ret
X	retr
X	rl	a
X	rlc	a
X	rr	a
X	rrc	a
X	sel	rb0
X	sel	rb1
X	stop	tcnt
X	strt	cnt
X	strt	t
X	swap	a
X	xch	a, @ r0
X	xch	a, @ r1
X	xch	a, r0
X	xch	a, r1
X	xch	a, r2
X	xch	a, r3
X	xch	a, r4
X	xch	a, r5
X	xch	a, r6
X	xch	a, r7
X	xchd	a, @ r0
X	xchd	a, @ r1
X	xrl	a, # immed
X	xrl	a, @ r0
X	xrl	a, @ r1
X	xrl	a, r0
X	xrl	a, r1
X	xrl	a, r2
X	xrl	a, r3
X	xrl	a, r4
X	xrl	a, r5
X	xrl	a, r6
X	xrl	a, r7
SHAR_EOF
true || echo 'restore of as8041.tst failed'
fi
# ============= as8041.tut ==============
if test -f 'as8041.tut' -a X"$1" != X"-c"; then
	echo 'x - skipping as8041.tut (File already exists)'
else
echo 'x - extracting as8041.tut (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as8041.tut' &&
X00000077 immed            00000065 dest             
X				cpu	"8041"
X 0x77                   immed	equ	$77
X0000 03 77 			add	a, # immed
X0002 60 			add	a, @ r0
X0003 61 			add	a, @ r1
X0004 68 			add	a, r0
X0005 69 			add	a, r1
X0006 6a 			add	a, r2
X0007 6b 			add	a, r3
X0008 6c 			add	a, r4
X0009 6d 			add	a, r5
X000a 6e 			add	a, r6
X000b 6f 			add	a, r7
X000c 13 77 			addc	a, # immed
X000e 70 			addc	a, @ r0
X000f 71 			addc	a, @ r1
X0010 78 			addc	a, r0
X0011 79 			addc	a, r1
X0012 7a 			addc	a, r2
X0013 7b 			addc	a, r3
X0014 7c 			addc	a, r4
X0015 7d 			addc	a, r5
X0016 7e 			addc	a, r6
X0017 7f 			addc	a, r7
X0018 53 77 			anl	a, # immed
X001a 50 			anl	a, @ r0
X001b 51 			anl	a, @ r1
X001c 58 			anl	a, r0
X001d 59 			anl	a, r1
X001e 5a 			anl	a, r2
X001f 5b 			anl	a, r3
X0020 5c 			anl	a, r4
X0021 5d 			anl	a, r5
X0022 5e 			anl	a, r6
X0023 5f 			anl	a, r7
X0024 99 77 			anl	p1, # immed
X0026 9a 77 			anl	p2, # immed
X0028 9c 			anld	p4, a
X0029 9d 			anld	p5, a
X002a 9e 			anld	p6, a
X002b 9f 			anld	p7, a
X002c 14 23 			call	$023
X002e 34 23 			call	$123
X0030 54 23 			call	$223
X0032 74 23 			call	$323
X0034 94 23 			call	$423
X0036 b4 23 			call	$523
X0038 d4 23 			call	$623
X003a f4 23 			call	$723
X003c 27 			clr	a
X003d 97 			clr	c
X003e 85 			clr	f0
X003f a5 			clr	f1
X0040 37 			cpl	a
X0041 a7 			cpl	c
X0042 95 			cpl	f0
X0043 b5 			cpl	f1
X0044 57 			da	a
X0045 07 			dec	a
X0046 c8 			dec	r0
X0047 c9 			dec	r1
X0048 ca 			dec	r2
X0049 cb 			dec	r3
X004a cc 			dec	r4
X004b cd 			dec	r5
X004c ce 			dec	r6
X004d cf 			dec	r7
X004e 15 			dis	i
X004f 35 			dis	tcnti
X0050 e8 65 			djnz	r0 , dest
X0052 e9 65 			djnz	r1 , dest
X0054 ea 65 			djnz	r2 , dest
X0056 eb 65 			djnz	r3 , dest
X0058 ec 65 			djnz	r4 , dest
X005a ed 65 			djnz	r5 , dest
X005c ee 65 			djnz	r6 , dest
X005e ef 65 			djnz	r7 , dest
X0060 e5 			en	dma
X0061 f5 			en	flags
X0062 05 			en	i
X0063 25 			en	tcnti
X0064 22 			in	a, dbb
X0065 09 		dest	in	a, p1
X0066 0a 			in	a, p2
X0067 10 			inc	@ r0
X0068 11 			inc	@ r1
X0069 17 			inc	a
X006a 18 			inc	r0
X006b 19 			inc	r1
X006c 1a 			inc	r2
X006d 1b 			inc	r3
X006e 1c 			inc	r4
X006f 1d 			inc	r5
X0070 1e 			inc	r6
X0071 1f 			inc	r7
X0072 12 65 			jb0	dest
X0074 32 65 			jb1	dest
X0076 52 65 			jb2	dest
X0078 72 65 			jb3	dest
X007a 92 65 			jb4	dest
X007c b2 65 			jb5	dest
X007e d2 65 			jb6	dest
X0080 f2 65 			jb7	dest
X0082 f6 65 			jc	dest
X0084 b6 65 			jf0	dest
X0086 76 65 			jf1	dest
X0088 04 23 			jmp	$023
X008a 24 23 			jmp	$123
X008c 44 23 			jmp	$223
X008e 64 23 			jmp	$323
X0090 84 23 			jmp	$423
X0092 a4 23 			jmp	$523
X0094 c4 23 			jmp	$623
X0096 e4 23 			jmp	$723
X0098 b3 			jmpp	@a
X0099 e6 65 			jnc	dest
X009b d6 65 			jnibf	dest
X009d 26 65 			jnt0	dest
X009f 46 65 			jnt1	dest
X00a1 96 65 			jnz	dest
X00a3 86 65 			jobf	dest
X00a5 36 65 			jt0	dest
X00a7 56 65 			jt1	dest
X00a9 16 65 			jtf	dest
X00ab c6 65 			jz	dest
X00ad b0 77 			mov	@ r0, # immed
X00af a0 			mov	@ r0, a
X00b0 b1 77 			mov	@ r1, # immed
X00b2 a1 			mov	@ r1, a
X00b3 23 77 			mov	a, # immed
X00b5 f0 			mov	a, @ r0
X00b6 f1 			mov	a, @ r1
X00b7 c7 			mov	a, psw
X00b8 f8 			mov	a, r0
X00b9 f9 			mov	a, r1
X00ba fa 			mov	a, r2
X00bb fb 			mov	a, r3
X00bc fc 			mov	a, r4
X00bd fd 			mov	a, r5
X00be fe 			mov	a, r6
X00bf ff 			mov	a, r7
X00c0 42 			mov	a, t
X00c1 d7 			mov	psw, a
X00c2 b8 77 			mov	r0, # immed
X00c4 a8 			mov	r0, a
X00c5 b9 77 			mov	r1, # immed
X00c7 a9 			mov	r1, a
X00c8 ba 77 			mov	r2, # immed
X00ca aa 			mov	r2, a
X00cb bb 77 			mov	r3, # immed
X00cd ab 			mov	r3, a
X00ce bc 77 			mov	r4, # immed
X00d0 ac 			mov	r4, a
X00d1 bd 77 			mov	r5, # immed
X00d3 ad 			mov	r5, a
X00d4 be 77 			mov	r6, # immed
X00d6 ae 			mov	r6, a
X00d7 bf 77 			mov	r7, # immed
X00d9 af 			mov	r7, a
X00da 50 			mov	sts, a
X00db 62 			mov	t, a
X00dc 0c 			movd	a, p4
X00dd 0d 			movd	a, p5
X00de 0e 			movd	a, p6
X00df 0f 			movd	a, p7
X00e0 3c 			movd	p4, a
X00e1 3d 			movd	p5, a
X00e2 3e 			movd	p6, a
X00e3 3f 			movd	p7, a
X00e4 a3 			movp	a, @a
X00e5 e3 			movp3	a, @a
X00e6 00 			nop
X00e7 43 77 			orl	a, # immed
X00e9 40 			orl	a, @ r0
X00ea 41 			orl	a, @ r1
X00eb 48 			orl	a, r0
X00ec 49 			orl	a, r1
X00ed 4a 			orl	a, r2
X00ee 4b 			orl	a, r3
X00ef 4c 			orl	a, r4
X00f0 4d 			orl	a, r5
X00f1 4e 			orl	a, r6
X00f2 4f 			orl	a, r7
X00f3 89 77 			orl	p1, # immed
X00f5 8a 77 			orl	p2, # immed
X00f7 8c 			orld	p4, a
X00f8 8d 			orld	p5, a
X00f9 8e 			orld	p6, a
X00fa 8f 			orld	p7, a
X00fb 02 			out	dbb, a
X00fc 39 			outl	p1, a
X00fd 3a 			outl	p2, a
X00fe 83 			ret
X00ff 93 			retr
X0100 e7 			rl	a
X0101 f7 			rlc	a
X0102 77 			rr	a
X0103 67 			rrc	a
X0104 c5 			sel	rb0
X0105 d5 			sel	rb1
X0106 65 			stop	tcnt
X0107 45 			strt	cnt
X0108 55 			strt	t
X0109 47 			swap	a
X010a 20 			xch	a, @ r0
X010b 21 			xch	a, @ r1
X010c 28 			xch	a, r0
X010d 29 			xch	a, r1
X010e 2a 			xch	a, r2
X010f 2b 			xch	a, r3
X0110 2c 			xch	a, r4
X0111 2d 			xch	a, r5
X0112 2e 			xch	a, r6
X0113 2f 			xch	a, r7
X0114 30 			xchd	a, @ r0
X0115 31 			xchd	a, @ r1
X0116 d3 77 			xrl	a, # immed
X0118 d0 			xrl	a, @ r0
X0119 d1 			xrl	a, @ r1
X011a d8 			xrl	a, r0
X011b d9 			xrl	a, r1
X011c da 			xrl	a, r2
X011d db 			xrl	a, r3
X011e dc 			xrl	a, r4
X011f dd 			xrl	a, r5
X0120 de 			xrl	a, r6
X0121 df 			xrl	a, r7
X ERROR SUMMARY - ERRORS DETECTED 0
X               -  WARNINGS       0
SHAR_EOF
true || echo 'restore of as8041.tut failed'
fi
# ============= as8048.1 ==============
if test -f 'as8048.1' -a X"$1" != X"-c"; then
	echo 'x - skipping as8048.1 (File already exists)'
else
echo 'x - extracting as8048.1 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as8048.1' &&
X.TH AS8048 1L
X.SH NAME
Xas8048, as8041, as80c50  \- cross assemblers for microcomputers
X.SH SYNOPSIS
X.nf
Xas8048 [-p cpu] [-l listfile] [-o hexfile] [-d] [-s symbolfile] input
Xas8041 [-p cpu] [-l listfile] [-o hexfile] [-d] [-s symbolfile] input
Xetc.
X.fi
X.SH DESCRIPTION
XThe as8048, as8041 commands assemble the input file into a
Xtext output file representing the program memory for a microcomputer.
X
XOptions
X.IP "-p cpu"
XOverride the instruction set selection.
X.RS 10
XValid Values for Cpu
X.RS 5
X80C48 80c48 80C35 80c35 80C49 80c49 80C39 80c39 80C50 80c50 80C40 80c40
X8048 8035 8049 8039 8050 8040 8041 8042
X.RE
X.RE
X.IP "-l listfile"
XOutput a file formated with the memory address, data, and source input lines.
X.IP "-o hexfile"
XOutput the memory data image in a form accepted by most prom programmers.
X.IP "-h hexfile"
XSame as \-o.
X.IP \-d
XSave the intermediate data file (see FILE) and abort the execution at the
Xend of processing.
X.IP "-s symbolfile"
XPrint the symbol table values and names, one per line in the specified file.
X.SH FILES
X/usr/tmp/frtXXXXXX
X.SH SEE ALSO
XFrankenstein Cross Assemblers Users Manual (file base.doc)
XAppendix for as8048 Frankenstein Assembler (file as8048.doc)
X.SH NOTES
XThere is only one input file.
X
XThe program can select which subset of instructions is accepted.
XThe program first uses the name with which it is invoked.
XThis is scanned for a substring which indicates which set to use.
XThe -p options overrides this selction by performing the same substring
Xsearch.
XFinally the input file can select which subset to use with the CPU statement.
X
XThere should only be one executable file with all of its names linked to it.
SHAR_EOF
true || echo 'restore of as8048.1 failed'
fi
# ============= as8048.doc ==============
if test -f 'as8048.doc' -a X"$1" != X"-c"; then
	echo 'x - skipping as8048.doc (File already exists)'
else
echo 'x - extracting as8048.doc (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as8048.doc' &&
X.HM A 1 1 1 1 1 1
X.H 1 "Appendix for as8048 Frankenstein Assembler"
X.H 2 "Pseudo Operations"
X.H 3 "Standard Pseudo Operation Mnemonics"
X.VL 40 5 1
X.LI "End"
XEND
X.LI "File Inclusion"
XINCL
XINCLUDE
X.LI "If"
XIF
X.LI "Else"
XELSE
X.LI "End If"
XENDI
X.LI "Equate"
XEQU
X.LI "Set"
XSET
X.LI "Org"
XORG
X.LI "Reserve Memory"
XRESERVE
XRMB
X.LI "Define Byte Data"
XBYTE
XDB
XFCB
X.LI "Define Word Data"
XDW
XFDB
XWORD
X.LI "Define String Data"
XFCC
XSTRING
X.LI "Define Character Set Translation"
XCHARSET
X.LI "Define Character Value"
XCHARDEF
XCHD
X.LI "Use Character Translation"
XCHARUSE
X.LE
X.H 3 "Machine Dependent Pseudo Operations"
X.H 4 "Instruction Set Selection"
X.DS I N
XCPU string
X.DE
XThe instruction set can be specified in the source file with the CPU 
Xpseudooperation.
XThe string, delimited by quotes or apostrophes, is scanned for a
Xsubstring which selects which instruction set is used.
XWhen the program is invoked, this operation is performed on the name of
Xthe program, then the -p optional arguement, if any, and then any CPU
Xstatements.
XThe last one selects which subset of the instructions the assembler will
Xaccept.
XThe instruction set can be changed at any place in the source file. 
X.VL 30 5 1
X.LI "Instruction Set"
XSubstrings
X.LI "80C48"
XC48 
Xc48 
XC35 
Xc35 
X.LI "80C49"
XC49
Xc49 
XC39 
Xc39 
X.LI "80C50"
XC50 
Xc50 
XC40 
Xc40 
X.LI "8048"
X48 
X35 
X.LI "8049"
X49 
X39 
X.LI "8050"
X50 
X40 
X.LI "8041"
X41 
X.LI "8042"
X42 
X.LE
X.H 4 "Register Set"
X.DS I N
XLabel REGISTER expr 
X.DE
X.P
XThe REGISTER statement is a version of the SET statement that checks that the
Xvalue of its expression is a valid data register location for the current
XCPU selection.
XThe REGISTER statement sets the symbol specified in the label field with the
Xnumeric value of the expression.
XThe REGISTER statement can change the value of a symbol, but only if the
Xsymbol is originally defined in a previous SET or REGISTER statement.
X.DS I N
XExample
X.SP
Xdtabl	register	32
X
X	mov	r1, #dtabl
X	mov	a, @r1
X.DE
X.H 2 "Instructions"
X.H 3 "Instruction List"
X.TS H
X;
Xl l l.
XOpcode	Syntax	Selection Criteria
X.sp
X.TH
X.sp
XADD	 A ',' '#' expr	
XADD	 A ',' '@' REG	
XADD	 A ',' REG	
X.sp
XADDC	 A ',' '#' expr	
XADDC	 A ',' '@' REG	
XADDC	 A ',' REG	
X.sp
XANL	 A ',' '#' expr	
XANL	 A ',' '@' REG	
XANL	 A ',' REG	
XANL	 BUS ',' '#' expr	INSTNOT41
XANL	 P1 ',' '#' expr	
XANL	 P2 ',' '#' expr	
X.sp
XANLD	 P47 ',' A	
X.sp
XCALL	 expr
X.sp
XCLR	 A	
XCLR	 C	
XCLR	 F0	
XCLR	 F1	
X.sp
XCPL	 A	
XCPL	 C	
XCPL	 F0	
XCPL	 F1	
X.sp
XDA	 A	
X.sp
XDEC	 A	
XDEC	 REG
X.sp
XDIS	 I	
XDIS	 TCNTI	
X.sp
XDJNZ	 REG ',' expr
X.sp
XEN	 DMA	INST41
XEN	 FLAGS	INST41
XEN	 I	
XEN	 TCNTI	
X.sp
XENT0	 CLK	INSTNOT41
X.sp
XHALT		INSTIDL
X.sp
XIDL		INSTIDL
X.sp
XIN	 A ',' DBB	INST41
XIN	 A ',' P1
XIN	 A ',' P2	
X.sp
XINC	 '@' REG
XINC	 A	
XINC	 REG
X.sp
XINS	 A ',' BUS	INSTNOT41
X.sp
XJB0	 expr
X.sp
XJB1	 expr
X.sp
XJB2	 expr
X.sp
XJB3	 expr
X.sp
XJB4	 expr
X.sp
XJB5	 expr
X.sp
XJB6	 expr
X.sp
XJB7	 expr
X.sp
XJC	 expr
X.sp
XJF0	 expr
X.sp
XJF1	 expr
X.sp
XJMP	 expr
X.sp
XJMPP	 '@' A	
X.sp
XJNC	 expr
X.sp
XJNI	 expr	INSTNOT41
X.sp
XJNIBF	 expr	INST41
X.sp
XJNT0	 expr
X.sp
XJNT1	 expr
X.sp
XJNZ	 expr
X.sp
XJOBF	 expr	INST41
X.sp
XJT0	 expr
X.sp
XJT1	 expr
X.sp
XJTF	 expr
X.sp
XJZ	 expr
X.sp
XMOV	 '@' REG ',' '#' expr
XMOV	 '@' REG ',' A	
XMOV	 A ',' '#' expr	
XMOV	 A ',' '@' REG	
XMOV	 A ',' PSW	
XMOV	 A ',' T	
XMOV	 A ',' REG	
XMOV	 PSW ',' A	
XMOV	 STS ',' A	
XMOV	 T ',' A	
XMOV	 REG ',' '#' expr
XMOV	 REG ',' A	
X.sp
XMOVD	 A ',' P47 	
XMOVD	 P47 ',' A	
X.sp
XMOVP3	 A ',' '@' A	
X.sp
XMOVP	 A ',' '@' A	
X.sp
XMOVX	 '@' REG ',' A	INSTNOT41
XMOVX	 A ',' '@' REG	INSTNOT41
X.sp
XNOP	
X.sp
XORL	 A ',' '#' expr	
XORL	 A ',' '@' REG	
XORL	 A ',' REG	
XORL	 BUS ',' '#' expr	INSTNOT41
XORL	 P1 ',' '#' expr	
XORL	 P2 ',' '#' expr	
X.sp
XORLD	 P47 ',' A	
X.sp
XOUT	 DBB ',' A	INST41
X.sp
XOUTL	 BUS ',' A	INSTNOT41
XOUTL	 P1 ',' A	
XOUTL	 P2 ',' A	
X.sp
XRET	
X.sp
XRETR	
X.sp
XRL	 A	
X.sp
XRLC	 A	
X.sp
XRR	 A	
X.sp
XRRC	 A	
X.sp
XSEL	 MSELC	INSTNOT41
XSEL	 RSELC
X.sp
XSTOP	 TCNT	
X.sp
XSTRT	 CNT	
XSTRT	 T	
X.sp
XSWAP	 A	
X.sp
XXCH	 A ',' '@' REG	
XXCH	 A ',' REG	
X.sp
XXCHD	 A ',' '@' REG	
X.sp
XXRL	 A ',' '#' expr	
XXRL	 A ',' '@' REG	
XXRL	 A ',' REG	
X.TE
X.H 3 "Operands"
X.VL 25 5
X.LI REG
XREG can be any of r0, r1, r2, r3, r4, r5, r6, r7, unless proceeded by a
X'@' where only r0, and r1 are accepted.
X.LI MSELC
XMSELC represents the symbols mb0 and mb1.
X.LI RSELC
XRSELC represents the symbols rb0 and rb1.
X.LI P47
XP47 represents the symbols p4, p5, p6, p7.
X.LE
X.P
XThere are uppercase versions of all the reserved symbols.
X.H 3 "Selection Criteria Keywords"
X.VL 25 5 
X.LI INSTIDL
XThe instruction is only available on CMOS implementations.
X.LI INSTNOT41
XThe instruction is not available in the 8041.
X.LI INST41
XThe instruction is only available in the 8041.
X.LE
X.H 3 "Apostrophes"
XThe apostrophes in the syntax field are a notation used for the
Xparser generator and are not put in the assembler source statement.
X.H 2 "Notes"
X.H 3 "Reserved Symbols"
X.H 4 "Machine Dependent Reserved Symbols"
XA
XBUS
XC
XCLK
XCNT
XDBB
XDMA
XF0
XF1
XFLAGS
XI
XMB0
XMB1
XP1
XP2
XP4
XP5
XP6
XP7
XPSW
XR0
XR1
XR2
XR3
XR4
XR5
XR6
XR7
XRB0
XRB1
XSTS
XT
XTCNT
XTCNTI
Xa
Xbus
Xc
Xclk
Xcnt
Xdbb
Xdma
Xf0
Xf1
Xflags
Xi
Xmb0
Xmb1
Xp1
Xp2
Xp4
Xp5
Xp6
Xp7
Xpsw
Xr0
Xr1
Xr2
Xr3
Xr4
Xr5
Xr6
Xr7
Xrb0
Xrb1
Xsts
Xt
Xtcnt
Xtcnti
X.H 4 "Standard Reserved Symbols"
XAND
XDEFINED
XEQ
XGE
XGT
XHIGH
XLE
XLOW
XLT
XMOD
XNE
XNOT
XOR
XSHL
XSHR
XXOR
Xand
Xdefined
Xeq
Xge
Xgt
Xhigh
Xle
Xlow
Xlt
Xmod
Xne
Xnot
Xor
Xshl
Xshr
Xxor
X.TC 1 1 7
SHAR_EOF
true || echo 'restore of as8048.doc failed'
fi
# ============= as8048.tst ==============
if test -f 'as8048.tst' -a X"$1" != X"-c"; then
	echo 'x - skipping as8048.tst (File already exists)'
else
echo 'x - extracting as8048.tst (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as8048.tst' &&
X	cpu	"80c50"
X
Ximmed	equ	$55
X
X	add	a, # immed
X	add	a, @ r0
X	add	a, @ r1
X	add	a, r0
X	add	a, r1
X	add	a, r2
X	add	a, r3
X	add	a, r4
X	add	a, r5
X	add	a, r6
X	add	a, r7
X	addc	a, # immed
X	addc	a, @ r0
X	addc	a, @ r1
X	addc	a, r0
X	addc	a, r1
X	addc	a, r2
X	addc	a, r3
X	addc	a, r4
X	addc	a, r5
X	addc	a, r6
X	addc	a, r7
X	anl	a, # immed
X	anl	a, @ r0
X	anl	a, @ r1
X	anl	a, r0
X	anl	a, r1
X	anl	a, r2
X	anl	a, r3
X	anl	a, r4
X	anl	a, r5
X	anl	a, r6
X	anl	a, r7
X	anl	bus, # immed
X	anl	p1, # immed
X	anl	p2, # immed
X	anld	p4, a
X	anld	p5, a
X	anld	p6, a
X	anld	p7, a
X	call	$023
X	call	$123
X	call	$223
X	call	$323
X	call	$423
X	call	$523
X	call	$623
X	call	$723
X	clr	a
X	clr	c
X	clr	f0
X	clr	f1
X	cpl	a
X	cpl	c
X	cpl	f0
X	cpl	f1
X	da	a
X	dec	a
X	dec	r0
X	dec	r1
X	dec	r2
X	dec	r3
X	dec	r4
X	dec	r5
X	dec	r6
X	dec	r7
X	dis	i
X	dis	tcnti
X	djnz	r0 , dest
X	djnz	r1 , dest
X	djnz	r2 , dest
X	djnz	r3 , dest
X	djnz	r4 , dest
X	djnz	r5 , dest
X	djnz	r6 , dest
X	djnz	r7 , dest
X	en	i
X	en	tcnti
X	ent0	clk
X	halt
X	idl
X	in	a, p1
X	in	a, p2
X	inc	@ r0
X	inc	@ r1
Xdest	inc	a
X	inc	r0
X	inc	r1
X	inc	r2
X	inc	r3
X	inc	r4
X	inc	r5
X	inc	r6
X	inc	r7
X	ins	a, bus
X	jb0	dest
X	jb1	dest
X	jb2	dest
X	jb3	dest
X	jb4	dest
X	jb5	dest
X	jb6	dest
X	jb7	dest
X	jc	dest
X	jf0	dest
X	jf1	dest
X	jmp	$023
X	jmp	$123
X	jmp	$223
X	jmp	$323
X	jmp	$423
X	jmp	$523
X	jmp	$623
X	jmp	$723
X	jmpp	@a
X	jnc	dest
X	jni	dest
X	jnt0	dest
X	jnt1	dest
X	jnz	dest
X	jt0	dest
X	jt1	dest
X	jtf	dest
X	jz	dest
X	mov	@ r0, # immed
X	mov	@ r0, a
X	mov	@ r1, # immed
X	mov	@ r1, a
X	mov	a, # immed
X	mov	a, @ r0
X	mov	a, @ r1
X	mov	a, psw
X	mov	a, r0
X	mov	a, r1
X	mov	a, r2
X	mov	a, r3
X	mov	a, r4
X	mov	a, r5
X	mov	a, r6
X	mov	a, r7
X	mov	a, t
X	mov	psw, a
X	mov	r0, # immed
X	mov	r0, a
X	mov	r1, # immed
X	mov	r1, a
X	mov	r2, # immed
X	mov	r2, a
X	mov	r3, # immed
X	mov	r3, a
X	mov	r4, # immed
X	mov	r4, a
X	mov	r5, # immed
X	mov	r5, a
X	mov	r6, # immed
X	mov	r6, a
X	mov	r7, # immed
X	mov	r7, a
X	mov	t, a
X	movd	a, p4
X	movd	a, p5
X	movd	a, p6
X	movd	a, p7
X	movd	p4, a
X	movd	p5, a
X	movd	p6, a
X	movd	p7, a
X	movp	a, @a
X	movp3	a, @a
X	movx	@ r0, a
X	movx	@ r1, a
X	movx	a, @ r0
X	movx	a, @ r1
X	nop
X	orl	a, # immed
X	orl	a, @ r0
X	orl	a, @ r1
X	orl	a, r0
X	orl	a, r1
X	orl	a, r2
X	orl	a, r3
X	orl	a, r4
X	orl	a, r5
X	orl	a, r6
X	orl	a, r7
X	orl	bus, # immed
X	orl	p1, # immed
X	orl	p2, # immed
X	orld	p4, a
X	orld	p5, a
X	orld	p6, a
X	orld	p7, a
X	outl	bus, a
X	outl	p1, a
X	outl	p2, a
X	ret
X	retr
X	rl	a
X	rlc	a
X	rr	a
X	rrc	a
X	sel	mb0
X	sel	mb1
X	sel	rb0
X	sel	rb1
X	stop	tcnt
X	strt	cnt
X	strt	t
X	swap	a
X	xch	a, @ r0
X	xch	a, @ r1
X	xch	a, r0
X	xch	a, r1
X	xch	a, r2
X	xch	a, r3
X	xch	a, r4
X	xch	a, r5
X	xch	a, r6
X	xch	a, r7
X	xchd	a, @ r0
X	xchd	a, @ r1
X	xrl	a, # immed
X	xrl	a, @ r0
X	xrl	a, @ r1
X	xrl	a, r0
X	xrl	a, r1
X	xrl	a, r2
X	xrl	a, r3
X	xrl	a, r4
X	xrl	a, r5
X	xrl	a, r6
X	xrl	a, r7
SHAR_EOF
true || echo 'restore of as8048.tst failed'
fi
# ============= as8048.tut ==============
if test -f 'as8048.tut' -a X"$1" != X"-c"; then
	echo 'x - skipping as8048.tut (File already exists)'
else
echo 'x - extracting as8048.tut (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'as8048.tut' &&
X00000055 immed            0000006b dest             
X				cpu	"80c50"
X
X 0x55                   immed	equ	$55
X
X0000 03 55 			add	a, # immed
X0002 60 			add	a, @ r0
X0003 61 			add	a, @ r1
X0004 68 			add	a, r0
X0005 69 			add	a, r1
X0006 6a 			add	a, r2
X0007 6b 			add	a, r3
X0008 6c 			add	a, r4
X0009 6d 			add	a, r5
X000a 6e 			add	a, r6
X000b 6f 			add	a, r7
X000c 13 55 			addc	a, # immed
X000e 70 			addc	a, @ r0
X000f 71 			addc	a, @ r1
X0010 78 			addc	a, r0
X0011 79 			addc	a, r1
X0012 7a 			addc	a, r2
X0013 7b 			addc	a, r3
X0014 7c 			addc	a, r4
X0015 7d 			addc	a, r5
X0016 7e 			addc	a, r6
X0017 7f 			addc	a, r7
X0018 53 55 			anl	a, # immed
X001a 50 			anl	a, @ r0
X001b 51 			anl	a, @ r1
X001c 58 			anl	a, r0
X001d 59 			anl	a, r1
X001e 5a 			anl	a, r2
X001f 5b 			anl	a, r3
X0020 5c 			anl	a, r4
X0021 5d 			anl	a, r5
X0022 5e 			anl	a, r6
X0023 5f 			anl	a, r7
X0024 98 55 			anl	bus, # immed
X0026 99 55 			anl	p1, # immed
X0028 9a 55 			anl	p2, # immed
X002a 9c 			anld	p4, a
X002b 9d 			anld	p5, a
X002c 9e 			anld	p6, a
X002d 9f 			anld	p7, a
X002e 14 23 			call	$023
X0030 34 23 			call	$123
X0032 54 23 			call	$223
X0034 74 23 			call	$323
X0036 94 23 			call	$423
X0038 b4 23 			call	$523
X003a d4 23 			call	$623
X003c f4 23 			call	$723
X003e 27 			clr	a
X003f 97 			clr	c
X0040 85 			clr	f0
X0041 a5 			clr	f1
X0042 37 			cpl	a
X0043 a7 			cpl	c
X0044 95 			cpl	f0
X0045 b5 			cpl	f1
X0046 57 			da	a
X0047 07 			dec	a
X0048 c8 			dec	r0
X0049 c9 			dec	r1
X004a ca 			dec	r2
X004b cb 			dec	r3
X004c cc 			dec	r4
X004d cd 			dec	r5
X004e ce 			dec	r6
X004f cf 			dec	r7
X0050 15 			dis	i
X0051 35 			dis	tcnti
X0052 e8 6b 			djnz	r0 , dest
X0054 e9 6b 			djnz	r1 , dest
X0056 ea 6b 			djnz	r2 , dest
X0058 eb 6b 			djnz	r3 , dest
X005a ec 6b 			djnz	r4 , dest
X005c ed 6b 			djnz	r5 , dest
X005e ee 6b 			djnz	r6 , dest
X0060 ef 6b 			djnz	r7 , dest
X0062 05 			en	i
X0063 25 			en	tcnti
X0064 75 			ent0	clk
X0065 01 			halt
X0066 01 			idl
X0067 09 			in	a, p1
X0068 0a 			in	a, p2
X0069 10 			inc	@ r0
X006a 11 			inc	@ r1
X006b 17 		dest	inc	a
X006c 18 			inc	r0
X006d 19 			inc	r1
X006e 1a 			inc	r2
X006f 1b 			inc	r3
X0070 1c 			inc	r4
X0071 1d 			inc	r5
X0072 1e 			inc	r6
X0073 1f 			inc	r7
X0074 08 			ins	a, bus
X0075 12 6b 			jb0	dest
X0077 32 6b 			jb1	dest
X0079 52 6b 			jb2	dest
X007b 72 6b 			jb3	dest
X007d 92 6b 			jb4	dest
X007f b2 6b 			jb5	dest
X0081 d2 6b 			jb6	dest
X0083 f2 6b 			jb7	dest
X0085 f6 6b 			jc	dest
X0087 b6 6b 			jf0	dest
X0089 76 6b 			jf1	dest
X008b 04 23 			jmp	$023
X008d 24 23 			jmp	$123
X008f 44 23 			jmp	$223
X0091 64 23 			jmp	$323
X0093 84 23 			jmp	$423
X0095 a4 23 			jmp	$523
X0097 c4 23 			jmp	$623
X0099 e4 23 			jmp	$723
X009b b3 			jmpp	@a
X009c e6 6b 			jnc	dest
X009e 86 6b 			jni	dest
X00a0 26 6b 			jnt0	dest
X00a2 46 6b 			jnt1	dest
X00a4 96 6b 			jnz	dest
X00a6 36 6b 			jt0	dest
X00a8 56 6b 			jt1	dest
X00aa 16 6b 			jtf	dest
X00ac c6 6b 			jz	dest
X00ae b0 55 			mov	@ r0, # immed
X00b0 a0 			mov	@ r0, a
X00b1 b1 55 			mov	@ r1, # immed
X00b3 a1 			mov	@ r1, a
X00b4 23 55 			mov	a, # immed
X00b6 f0 			mov	a, @ r0
X00b7 f1 			mov	a, @ r1
X00b8 c7 			mov	a, psw
X00b9 f8 			mov	a, r0
X00ba f9 			mov	a, r1
X00bb fa 			mov	a, r2
X00bc fb 			mov	a, r3
X00bd fc 			mov	a, r4
X00be fd 			mov	a, r5
X00bf fe 			mov	a, r6
X00c0 ff 			mov	a, r7
X00c1 42 			mov	a, t
X00c2 d7 			mov	psw, a
X00c3 b8 55 			mov	r0, # immed
X00c5 a8 			mov	r0, a
X00c6 b9 55 			mov	r1, # immed
X00c8 a9 			mov	r1, a
X00c9 ba 55 			mov	r2, # immed
X00cb aa 			mov	r2, a
X00cc bb 55 			mov	r3, # immed
X00ce ab 			mov	r3, a
X00cf bc 55 			mov	r4, # immed
X00d1 ac 			mov	r4, a
X00d2 bd 55 			mov	r5, # immed
X00d4 ad 			mov	r5, a
X00d5 be 55 			mov	r6, # immed
X00d7 ae 			mov	r6, a
X00d8 bf 55 			mov	r7, # immed
X00da af 			mov	r7, a
X00db 62 			mov	t, a
X00dc 0c 			movd	a, p4
X00dd 0d 			movd	a, p5
X00de 0e 			movd	a, p6
X00df 0f 			movd	a, p7
X00e0 3c 			movd	p4, a
X00e1 3d 			movd	p5, a
X00e2 3e 			movd	p6, a
X00e3 3f 			movd	p7, a
X00e4 a3 			movp	a, @a
X00e5 e3 			movp3	a, @a
X00e6 90 			movx	@ r0, a
X00e7 91 			movx	@ r1, a
X00e8 80 			movx	a, @ r0
X00e9 81 			movx	a, @ r1
X00ea 00 			nop
X00eb 43 55 			orl	a, # immed
X00ed 40 			orl	a, @ r0
X00ee 41 			orl	a, @ r1
X00ef 48 			orl	a, r0
X00f0 49 			orl	a, r1
X00f1 4a 			orl	a, r2
X00f2 4b 			orl	a, r3
X00f3 4c 			orl	a, r4
X00f4 4d 			orl	a, r5
X00f5 4e 			orl	a, r6
X00f6 4f 			orl	a, r7
X00f7 88 55 			orl	bus, # immed
X00f9 89 55 			orl	p1, # immed
X00fb 8a 55 			orl	p2, # immed
X00fd 8c 			orld	p4, a
X00fe 8d 			orld	p5, a
X00ff 8e 			orld	p6, a
X0100 8f 			orld	p7, a
X0101 02 			outl	bus, a
X0102 39 			outl	p1, a
X0103 3a 			outl	p2, a
X0104 83 			ret
X0105 93 			retr
X0106 e7 			rl	a
X0107 f7 			rlc	a
X0108 77 			rr	a
X0109 67 			rrc	a
X010a e5 			sel	mb0
X010b f5 			sel	mb1
X010c c5 			sel	rb0
X010d d5 			sel	rb1
X010e 65 			stop	tcnt
X010f 45 			strt	cnt
X0110 55 			strt	t
X0111 47 			swap	a
X0112 20 			xch	a, @ r0
X0113 21 			xch	a, @ r1
X0114 28 			xch	a, r0
X0115 29 			xch	a, r1
X0116 2a 			xch	a, r2
X0117 2b 			xch	a, r3
X0118 2c 			xch	a, r4
X0119 2d 			xch	a, r5
X011a 2e 			xch	a, r6
X011b 2f 			xch	a, r7
X011c 30 			xchd	a, @ r0
X011d 31 			xchd	a, @ r1
X011e d3 55 			xrl	a, # immed
X0120 d0 			xrl	a, @ r0
X0121 d1 			xrl	a, @ r1
X0122 d8 			xrl	a, r0
X0123 d9 			xrl	a, r1
X0124 da 			xrl	a, r2
X0125 db 			xrl	a, r3
X0126 dc 			xrl	a, r4
X0127 dd 			xrl	a, r5
X0128 de 			xrl	a, r6
X0129 df 			xrl	a, r7
X ERROR SUMMARY - ERRORS DETECTED 0
X               -  WARNINGS       0
SHAR_EOF
true || echo 'restore of as8048.tut failed'
fi
true || echo 'restore of as8048.y failed'
echo End of part 1, continue with part 2
exit 0