; note: my EPROM programmer only addresses 03FF
; of the 8041 ROM space. Intel specifies a 1K ROM (03FFH) - HRJ
;
;  D48 V3.3.6 8041 Disassembly of 8041_1.hex
;  03/12/19 22:58
;
	org	0
;
reset:	dis	i
	jmp	X03a6
;
intvec:	jmp	X0005
;
X0005:	sel	rb1
	mov	r2,a
tcvec:	in	a,dbb
	jf1	X000c
	jmp	X0014
;
X000c:	mov	r5,a
	cpl	a
	add	a,#0eh
	jc	X0017
	mov	a,r6
X0013:	mov	r6,a
X0014:	sel	rb1
	mov	a,r2
	retr
;
X0017:	mov	a,r5
	add	a,#1bh
	jmpp	@a
;
	db	91h
;
	orld	p4,a
;
	db	87h
;
	db	66h
;
	add	a,@r1
	xch	a,r1
	orl	a,r2
	strt	cnt
	addc	a,r0
;
	db	73h
;
	addc	a,r5
;
	db	82h
;
	add	a,r7
	add	a,r3
	mov	r0,#20h
	clr	a
	mov	@r0,a
	inc	a
	mov	psw,a
	mov	r0,#8
	mov	a,r6
	jb5	X003b
	mov	@r0,#53h
	inc	r0
	mov	@r0,#2
	jmp	X0040
;
X003b:	mov	@r0,#0bfh
	inc	r0
	mov	@r0,#0
X0040:	sel	rb0
	mov	r7,#0ch
	jmp	X0014
;
	in	a,p2
	anl	p2,#7dh
	jmp	X004d
;
	in	a,p2
	call	X00ae
X004d:	orl	p2,#8fh
	jb0	X0053
	anl	p2,#0feh
X0053:	jb1	X0057
	anl	p2,#0fdh
X0057:	jb2	X005b
	anl	p2,#0fbh
X005b:	jb3	X005f
	anl	p2,#0f7h
X005f:	jmp	X0014
;
	mov	a,r6
	orl	a,#80h
	jmp	X0013
;
	mov	a,r6
	anl	a,#7fh
	jmp	X0013
;
	anl	p2,#0efh
	jmp	X0014
;
	orl	p2,#10h
	jmp	X0014
;
	mov	a,r6
	orl	a,#10h
	jmp	X0013
;
	mov	a,r6
	anl	a,#0efh
	jmp	X0013
;
	mov	a,r6
	orl	a,#20h
	jmp	X0013
;
	mov	a,r6
	anl	a,#0dfh
	jmp	X0013
;
	mov	a,r6
	orl	a,#40h
	jmp	X0013
;
	mov	a,r6
	anl	a,#0bfh
	jmp	X0013
;
	mov	r0,#8
	clr	a
	mov	@r0,a
	inc	r0
	mov	@r0,a
	inc	a
	mov	psw,a
	dis	i
	retr
;
X009b:	anl	a,#7fh
	mov	r0,a
	mov	r5,#7
	mov	r1,#92h
	clr	c
X00a3:	mov	a,r1
	movp3	a,@a
	xrl	a,r0
	jz	X00ac
	inc	r1
	djnz	r5,X00a3
	ret
;
X00ac:	cpl	c
	ret
;
X00ae:	dis	i
	orl	p2,#0fh
	anl	p2,#7fh
	orl	p2,#80h
	en	i
	ret
;
X00b7:	mov	r5,#0fah
X00b9:	movp	a,@a
	movp	a,@a
	movp	a,@a
	djnz	r5,X00b9
	ret
;
X00bf:	mov	a,#23h
	mov	r0,#30h
X00c3:	dec	r0
	mov	@r0,#0
	xrl	a,r0
	jnz	X00c3
	mov	r7,#0ch
X00cb:	sel	rb1
	mov	a,r6
	sel	rb0
	jb5	X00d2
	jmp	X0253
;
X00d2:	call	X0247
	dec	r7
	call	X02ea
	call	X03bb
	mov	a,r7
	anl	a,#0fh
	jnz	X00cb
	call	X01a4
	anl	a,#0bh
	anl	p2,#0f0h
	orl	p2,#0dh
	jt1	X00ea
	orl	a,#4
X00ea:	anl	p2,#0f0h
	orl	p2,#0ch
	jt1	X00f2
	orl	a,#10h
X00f2:	mov	r7,#0ch
	call	X03bb
	mov	r7,#0ch
	jmp	X00cb
;
	db	'ANITA!'
;
X0100:	mov	r5,#0
X0102:	jb0	X0108
	inc	r5
	rr	a
	jmp	X0102
;
X0108:	mov	a,r7
	anl	a,#0fh
	xch	a,r5
	swap	a
	orl	a,r5
	mov	r7,a
	ret
;
X0110:	mov	r4,a
	call	X0100
	call	X01a4
	call	X0139
	call	X0204
	ret
;
X011a:	call	X014b
	movp3	a,@a
	mov	r3,a
	ret
;
X011f:	mov	r7,a
	call	X02ea
	jz	X0134
	mov	r5,a
	mov	a,r7
	swap	a
	anl	a,#7
	jnz	X012e
	mov	a,r5
	jmp	X0132
;
X012e:	xch	a,r5
X012f:	rr	a
	djnz	r5,X012f
X0132:	jb0	X0136
X0134:	clr	c
	ret
;
X0136:	clr	c
	cpl	c
	ret
;
X0139:	mov	a,r7
	anl	a,#0fh
	add	a,#3fh
	jmpp	@a
;
	da	a	;57H
	da	a
	da	a
	da	a
	add	a,r3	;6BH
	add	a,r3
	add	a,r3
	add	a,r3
	orl	p2,#76h
	orl	p2,#8ah
X014b:	mov	a,r7
	anl	a,#0f0h
	rl	a
	mov	r5,a
	mov	a,r7
	anl	a,#0fh
	orl	a,r5
	swap	a
	rr	a
	ret
;
	call	X011a
	mov	a,r6
	jb3	X0161
	jb2	X0166
	jb1	X0166
	ret
;
X0161:	mov	a,r3
	anl	a,#9fh
	mov	r3,a
	ret
;
X0166:	mov	a,r3
	anl	a,#0dfh
	mov	r3,a
	ret
;
	call	X011a
	mov	a,r6
	jb2	X0171
	ret
;
X0171:	mov	a,r3
	orl	a,#40h
	mov	r3,a
	ret
;
X0176:	call	X014b
	add	a,#0bfh
	inc	a
	rl	a
	add	a,#40h
X017e:	mov	r5,a
	mov	a,r6
	anl	a,#4
	jz	X0186
	mov	a,#1
X0186:	add	a,r5
	movp3	a,@a
	mov	r3,a
	ret
;
	mov	a,r6
	anl	a,#8
	jz	X0176
	mov	r0,#6
X0191:	dec	r0
	mov	a,#80h
	add	a,r0
	movp3	a,@a
	xrl	a,r7
	jz	X019e
	mov	a,r0
	jnz	X0191
	jmp	X0176
;
X019e:	mov	a,r0
	rl	a
	add	a,#86h
	jmp	X017e
;
X01a4:	clr	a
	anl	p2,#0f0h
	orl	p2,#0fh
	jt1	X01ad
	orl	a,#1
X01ad:	anl	p2,#0f0h
	orl	p2,#0eh
	jt1	X01b5
	orl	a,#2
X01b5:	anl	p2,#0f0h
	orl	p2,#0dh
	jt1	X01bd
	orl	a,#4
X01bd:	anl	p2,#0f0h
	orl	p2,#0ch
	jt1	X01c5
	orl	a,#4
X01c5:	jt0	X01c9
	orl	a,#8
X01c9:	mov	r0,#6
	xchd	a,@r0
	mov	a,r6
	ret
;
X01ce:	mov	r0,#21h
	mov	a,r6
	jb0	X01e2
	mov	r5,#0ceh
X01d5:	djnz	r5,X01d5
	sel	rb1
	mov	a,r6
	sel	rb0
	jb6	X01e1
	mov	a,@r0
	dec	a
	jz	X01f4
	mov	@r0,a
X01e1:	ret
;
X01e2:	mov	r5,#78h
X01e4:	djnz	r5,X01e4
	mov	a,#0cdh
	xrl	a,@r0
	jz	X01f4
	mov	a,@r0
	dec	a
	jz	X01f4
	dec	a
	jz	X01f4
	mov	@r0,a
	ret
;
X01f4:	call	X0204
	mov	r0,#21h
	mov	@r0,#23h
	ret
;
	xch	a,r0
	orl	a,#29h
	clr	a
;
	db	38h
;
	jb1	X025a
	jmp	X0253
;
X0204:	sel	rb1
	mov	a,r6
	sel	rb0
	jb4	X024e
	jb7	X020d
	call	X00ae
X020d:	mov	r0,#20h
	mov	a,@r0
	anl	a,#0fh
	add	a,#30h
	mov	r1,a
	mov	a,r3
	mov	@r1,a
	mov	a,@r0
	anl	a,#0fh
	xrl	a,#0fh
	jnz	X0221
	dec	a
	jmp	X0222
;
X0221:	mov	a,@r0
X0222:	inc	a
	xchd	a,@r0
	mov	a,@r0
	swap	a
	xrl	a,@r0
	jnz	X024f
X0229:	jobf	X0229
X022b:	mov	a,@r0
	anl	a,#0f0h
	swap	a
	add	a,#30h
	mov	r1,a
	mov	a,@r1
	out	dbb,a
	mov	a,@r0
	anl	a,#0f0h
	swap	a
	xrl	a,#0fh
	jnz	X023f
	dec	a
	jmp	X0243
;
X023f:	mov	a,@r0
	anl	a,#0f0h
	swap	a
X0243:	inc	a
	swap	a
	xchd	a,@r0
	xch	a,@r0
X0247:	mov	r0,#20h
	mov	a,@r0
	swap	a
	xrl	a,@r0
	jnz	X024f
X024e:	ret
;
X024f:	jobf	X024e
	jmp	X022b
;
X0253:	sel	rb1
	mov	a,r6
	sel	rb0
	anl	a,#20h
	jz	X025c
X025a:	jmp	X00bf
;
X025c:	call	X0247
	dec	r7
	call	X02ea
	jz	X0282
	call	X0110
	mov	r0,#21h
	mov	@r0,#0cdh
	mov	r0,#22h
	call	X00b7
	mov	a,r7
	mov	@r0,a
X026f:	mov	r7,#0ch
X0271:	dec	r7
	call	X02ea
	jnz	X0293
X0276:	mov	a,r7
	jnz	X0271
	mov	r0,#22h
	mov	a,@r0
	call	X011f
	jc	X028b
	call	X00b7
X0282:	mov	a,r7
	anl	a,#0fh
	jnz	X0253
	mov	r7,#0ch
	jmp	X0253
;
X028b:	call	X01ce
	call	X01a4
	call	X0139
	jmp	X026f
;
X0293:	mov	r4,a
	mov	r1,#22h
	mov	a,@r1
	anl	a,#0fh
	xrl	a,r7
	jnz	X02b0
	mov	a,@r1
	swap	a
	anl	a,#7
	mov	r5,a
	jz	X02aa
	mov	a,#0feh
X02a5:	rl	a
	djnz	r5,X02a5
	jmp	X02ac
;
X02aa:	mov	a,#0feh
X02ac:	anl	a,r4
	jz	X0276
	mov	r4,a
X02b0:	mov	a,r4
	call	X0110
	mov	r0,#21h
	mov	@r0,#0cdh
	mov	r0,#22h
	mov	r1,#23h
	call	X00b7
	mov	a,@r0
	mov	@r1,a
	mov	a,r7
	mov	@r0,a
X02c1:	mov	r1,#23h
	mov	a,@r1
	call	X011f
	jnc	X02e6
	mov	r0,#22h
	mov	a,@r0
	call	X011f
	jnc	X02db
	mov	r5,#98h
X02d1:	djnz	r5,X02d1
	call	X01ce
	call	X01a4
	call	X0139
	jmp	X02c1
;
X02db:	mov	a,@r1
	mov	@r0,a
	mov	r7,a
	call	X01a4
	call	X0139
	mov	r0,#21h
	mov	@r0,#0cdh
X02e6:	call	X00b7
	jmp	X026f
;
X02ea:	orl	p2,#0fh
	mov	a,r7
	jb3	X02f1
	anl	p2,#0f7h
X02f1:	jb2	X02f5
	anl	p2,#0fbh
X02f5:	jb1	X02f9
	anl	p2,#0fdh
X02f9:	jb0	X02fd
	anl	p2,#0feh
X02fd:	in	a,p1
	cpl	a
	ret
;
	db	'kjhgfdsaiuytrewqlmnbvcxzropvhrvh''
	db	9dh,9ch,9bh,9ah,99h,98h,97h,96h
	db	0,9eh,9fh,' '+80h,'!'+80h
	db	'"'+80h,'$'+80h
	db	'#'+80h,'3'+80h
	db	'6'+80h,'9'+80h
	db	'''+80h,'1'+80h
	db	'4'+80h,'7'+80h
	db	')'+80h,8dh,'-'+80h
	db	'&'+80h,'%'+80h
	db	'2'+80h,'5'+80h
	db	'8'+80h,'('+80h
	db	'.'+80h,'n'+80h
	db	'0'+80h,'p'+80h
	db	7fh,7fh
	db	'\|'
	db	0ah,0ah
	db	'  '
	db	95h,'U'+80h,'*'+80h
	db	'j'+80h,27h
	db	'";:.>/?'
	db	0dh,0dh
	db	',<'
	db	9,9,1bh,1bh
	db	'8*7&6^5%4$3#2@1!]}[{9(0)-_=+`~'
	db	8,8
	db	'8j*K'
	db	1bh,0bh,1ch
	db	'|2'
	db	0
	db	'6'
	db	1eh
	db	'-'
	db	1fh,1bh
	db	'{'
	db	1dh
	db	'}'
	db	18h,1bh,1ch,1dh,1eh,1fh
	db	'('
;
X0399:	mov	a,#1
	mov	r5,a
X039c:	anl	a,r2
	jnz	X03a4
	mov	a,r5
	rl	a
	mov	r5,a
	jmp	X039c
;
X03a4:	xrl	a,r2
	ret
;
X03a6:	clr	f0	;jmp from 0000H
	clr	f1
	sel	rb0
	clr	a
	mov	sts,a
	mov	r0,#3fh
X03ad:	mov	@r0,a
	djnz	r0,X03ad
	mov	r7,#0ch
	orl	p1,#0ffh
	en	flags
	mov	a,#0efh
	outl	p2,a
	en	i
	jmp	X0a53	;outside ROM space?
			;05H 44H 53H
;
X03bb:	mov	r4,a
	mov	a,r7
	anl	a,#0fh
	add	a,#23h
	mov	r0,a
	mov	a,@r0
	xch	a,r4
	mov	@r0,a
	xch	a,r4
	xrl	a,r4
	mov	r1,#22h
	mov	@r1,a
	anl	a,r4
	jz	X03df
X03cd:	mov	r2,a
	call	X0100
	call	X014b
	mov	r3,a
	call	X009b
	jc	X03d9
	call	X0204
X03d9:	call	X0399
	jnz	X03cd
	call	X00b7
X03df:	mov	r1,#22h
	mov	a,r4
	cpl	a
	anl	a,@r1
	jz	X03fa
X03e6:	mov	r2,a
	call	X0100
	call	X014b
	orl	a,#80h
	mov	r3,a
	call	X009b
	jc	X03f4
	call	X0204
X03f4:	call	X0399
	jnz	X03e6
	call	X00b7
X03fa:	ret
;
	db	52h,6ah,56h,48h,0
;
	org	0a53h
;
X0a53:	db	0ffh	;outside ROM space?
;
	end
