Assembly LOVEPOPA's UNIVERSE
of FREE Atari source listings !!

CALC.S


*	CALC.S v1.0  CALC.PRG
*	Started on 11/23/1990
*	 Ended on 03/11/1991
*	 Written in GenST by
*	         PKF

	SECTION TEXT
	move.l	#$311B7100,d7	error 1: no memory
	move.l	a7,a5
	move.l	4(a5),a5
	move.l	12(a5),d0
	add.l	20(a5),d0
	add.l	28(a5),d0
	add.l	#256,d0
	add.l	#$20000,d0
	add.l	#$400,d0
	move.l	d0,d1
	add.l	a5,d1
	and.l	#-2,d1
	move.l	d1,a7
	move.l	d0,-(a7)
	move.l	a5,-(a7)
	move.w	#0,-(a7)
	move.w	#$4A,-(a7)	_mshrink
	trap	#1
	add.l	#12,a7
	tst.w	d0
	bmi	enderr
	move.l	a7,a5
	sub.l	#$20400,a5
	move.l	a5,buffer
	move.l	#$321B7100,d7	error 2: low resolution
	move.w	#4,-(a7)	_getrez
	trap	#14
	addq.l	#2,a7
	sub.w	#1,d0
	bmi.w	enderr
	move.w	#1,-(a7)
	move.w	#21,-(a7)	_cursconf
	trap	#14
	addq.w	#4,a7
	move.w	#$776,-(a7)
	move.w	#0,-(a7)
	move.w	#7,-(a7)	_setcolor
	trap	#14
	addq.l	#6,a7
start:	pea	msg01
	move.w	#9,-(a7)	_cconws
	trap	#1
	addq.l	#6,a7
key01:	jsr	rawcin
	move.w	#$34,d1
	cmp.w	d0,d1
	beq	endprg
	move.w	#$33,d1
	cmp.w	d0,d1
	beq	fattrl
	move.w	#$32,d1
	cmp.w	d0,d1
	beq	potnz
	move.w	#$31,d1
	cmp.w	d0,d1
	beq	prodtt
	bra	key01
prodtt:	move.l	buffer,d0
	add.l	#$10000,d0
	move.l	d0,num1
	add.l	#$8000,d0
	move.l	d0,num2
initpd:	pea	msgpd1
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	move.l	num1,a4
	move.l	#$8000,d0
	jsr	inpnum
	move.l	d2,len1
	pea	msgpd2
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	move.l	num2,a4
	move.l	#$8000,d0
	jsr	inpnum
	move.l	d2,len2
	pea	msg02
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	clr.l	-(a7)
	move.w	#$20,-(a7)	_super
	trap	#1
	addq.l	#6,a7
	move.l	d0,my_ssp
	move.l	#$0,$4BA	_hz_200
	jsr	clregs
	move.l	len1,d4
	move.l	num1,a4
	add.l	d4,a4
	move.l	buffer,a2
	add.w	#1,a2
pd_c1:	move.b	-(a4),d1
	sub.l	#1,d4
	cmp.l	#-1,d4
	beq	pd_f1
	move.l	num2,a5
	move.l	len2,d5
	add.l	d5,a5
pd_c2:	move.b	-(a5),d2
	sub.l	#1,d5
	cmp.l	#-1,d5
	beq	pd_c1
	mulu	d1,d2
	divu	#10,d2
	move.l	a2,a6
	move.l	d4,d3
	add.l	d5,d3
	add.l	d3,a6
	swap	d2
	add.b	d2,(a6)
	cmp.b	#10,(a6)
	blt	pd_s1
	sub.b	#10,(a6)
	add.b	#1,-1(a6)
	cmp.b	#10,-1(a6)
	blt	pd_s1
	sub.b	#10,-1(a6)
	add.b	#1,-2(a6)
pd_s1:	swap	d2
	add.b	d2,-1(a6)
	cmp.b	#10,-1(a6)
	blt	pd_c2
	sub.b	#10,-1(a6)
	add.b	#1,-2(a6)
	cmp.b	#10,-2(a6)
	blt	pd_c2
	sub.b	#10,-2(a6)
	add.b	#1,-3(a6)
	bra	pd_c2
pd_f1:	move.l	$4BA,d0
	move.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	move.l	d7,hexnum
	move.l	my_ssp,-(a7)
	move.w	#$20,-(a7)
	trap	#1
	addq.l	#6,a7
	jsr	p_time
	move.l	buffer,a2
	move.l	buffer,a4
	move.l	len1,d2
	add.l	len2,d2
	sub.l	#1,d2
	cmp.b	#0,(a4)
	bgt	pd_s2
	add.l	#1,a2
	add.l	#1,a4
	sub.l	#1,d2
pd_s2:	or.b	#$30,(a2)+
	dbf	d2,pd_s2
	pea	msgpd3
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	move.l	a4,-(a7)
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	pea	msg03
	move.w	#9,-(a7)
	trap	#1
	addq.l	#6,a7
keypd:	jsr	rawcin
	move.w	#$34,d1
	cmp.w	d0,d1
	beq	menpd
	move.w	#$33,d1
	cmp.w	d0,d1
	beq	newpd
	move.w	#$32,d1
	cmp.w	d0,d1
	beq	dskpd
	move.w	#$31,d1
	cmp.w	d0,d1
	beq	prtpd
	bra	keypd
dskpd:	move.w	#0,-(a7)
	pea	pdfile
	move.w	#$3C,-(a7)	_fcreate
	trap	#1
	add.w	#8,a7
	tst.l	d0
	bmi	menpd
	move.w	d0,my_ssp
	pea	msgpd1
	move.l	#50,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)	_fwrite
	trap	#1
	add.w	#12,a7
	move.l	num1,a0
	move.l	len1,d0
	sub.l	#1,d0
dskc1:	or.b	#$30,(a0)+
	dbf	d0,dskc1
	move.l	num1,-(a7)
	move.l	len1,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpd2
	move.l	#27,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	num2,a0
	move.l	len2,d0
	sub.l	#1,d0
dskc2:	or.b	#$30,(a0)+
	dbf	d0,dskc2
	move.l	num2,-(a7)
	move.l	len2,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg04
	move.l	#25,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	hexd_n
	move.l	#11,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg05
	move.l	#9,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpd3
	move.l	#28,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	buffer,-(a7)
	move.l	len1,d0
	add.l	len2,d0
	move.l	d0,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.w	my_ssp,-(a7)
	move.w	#$3E,-(a7)	_fclose
	trap	#1
	addq.w	#4,a7
	bra	keypd
prtpd:	move.w	#17,-(a7)	_cprnos
	trap	#1
	addq.w	#2,a7
	tst.w	d0
	bmi	prind
	jsr	prnmsg
	cmp.b	#$61,d0
	beq	menpd
	bra	prtpd
prind:	pea	prnter
	move.w	#$3D,-(a7)	_fopen
	trap	#1
	addq.w	#6,a7
	move.w	d0,my_ssp
	pea	msgpd1
	add.l	#2,(a7)
	move.l	#48,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	num1,a0
	move.l	len1,d0
	sub.l	#1,d0
prnc1:	or.b	#$30,(a0)+
	dbf	d0,prnc1
	move.l	num1,-(a7)
	move.l	len1,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpd2
	move.l	#27,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	num2,a0
	move.l	len2,d0
	sub.l	#1,d0
prnc2:	or.b	#$30,(a0)+
	dbf	d0,prnc2
	move.l	num2,-(a7)
	move.l	len2,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg04
	move.l	#25,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	hexd_n
	move.l	#11,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg05
	move.l	#9,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpd3
	move.l	#28,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	buffer,-(a7)
	move.l	len1,d0
	add.l	len2,d0
	move.l	buffer,a0
	cmp.b	#0,(a0)
	bgt	sk_pd
	add.l	#1,(a7)
	sub.l	#1,d0
sk_pd:	move.l	d0,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	jsr	prnout
	move.w	my_ssp,-(a7)
	move.w	#$3E,-(a7)
	trap	#1
	addq.w	#4,a7
	bra	keypd
menpd:	move.l	#$20000,d0
	move.l	buffer,a0
	jsr	clrbuf
	bra	start
newpd:	move.l	#$20000,d0
	move.l	buffer,a0
	jsr	clrbuf
	bra	initpd
potnz:	move.l	buffer,d0
	add.l	#$10000,d0
	move.l	d0,num1
initpz:	move.l	#0,hexd_n
	move.l	#0,hexd_n+4
	move.l	#0,hexnum
	move.l	#1,hexd_n+8
	pea	msgpz1
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	lea	hexd_n,a4
	move.l	#6,d0
	jsr	inpnum
	move.l	d2,len1
	pea	msgpz2
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	lea	hexnum,a4
	move.l	#4,d0
	jsr	inpnum
	move.l	d2,len2
	move.l	hexd_n,buffer+$20004
	move.w	hexd_n+4,buffer+$20008
	move.l	len1,buffer+$2000C
	move.l	len2,buffer+$20010
	move.l	hexnum,buffer+$20014
	clr.l	d0
	clr.l	d3
	move.l	#1,d1
	lea	hexnum,a4
	add.l	d2,a4
	sub.l	#1,d2
pz_c0:	move.b	-(a4),d0
	mulu	d1,d0
	mulu	#10,d1
	add.w	d0,d3
	clr.l	d0
	dbf	d2,pz_c0
	cmp.l	#1,d3
	bgt	expok
	add.l	#1,d3
expok:	move.l	d3,hexnum
	move.l	num1,a4
	move.l	hexd_n,(a4)+
	move.w	hexd_n+4,(a4)+
	move.l	len1,len2
	pea	msg02
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	clr.l	-(a7)
	move.w	#$20,-(a7)
	trap	#1
	addq.l	#6,a7
	move.l	d0,my_ssp
	move.l	#0,$4BA
pz_c4:	jsr	clregs
	move.l	buffer,a2
	add.w	#1,a2
	move.l	len1,d4
	move.l	num1,a4
	add.w	d4,a4
pz_c1:	move.b	-(a4),d1
	sub.l	#1,d4
	cmp.l	#-1,d4
	beq	pz_f1
	lea	hexd_n,a5
	move.l	len2,d5
	add.l	d5,a5
pz_c2:	move.b	-(a5),d2
	sub.l	#1,d5
	cmp.l	#-1,d5
	beq	pz_c1
	mulu	d1,d2
	divu	#10,d2
	move.l	a2,a6
	move.l	d4,d3
	add.l	d5,d3
	add.l	d3,a6
	swap	d2
	add.b	d2,(a6)
	cmp.b	#10,(a6)
	blt	pz_s1
	sub.b	#10,(a6)
	add.b	#1,-1(a6)
	cmp.b	#10,-1(a6)
	blt	pz_s1
	sub.b	#10,-1(a6)
	add.b	#1,-2(a6)
pz_s1:	swap	d2
	add.b	d2,-1(a6)
	cmp.b	#10,-1(a6)
	blt	pz_c2
	sub.b	#10,-1(a6)
	add.b	#1,-2(a6)
	cmp.b	#10,-2(a6)
	blt	pz_c2
	sub.b	#10,-2(a6)
	add.b	#1,-3(a6)
	bra	pz_c2
pz_f1:	move.l	buffer,a2
	move.l	num1,a4
	move.l	len1,d2
	add.l	len2,d2
	cmp.b	#0,(a2)
	bgt	pz_s2
	add.w	#1,a2
	sub.l	#1,d2
pz_s2:	move.l	d2,len1
	sub.l	#1,d2
pz_c3:	move.b	(a2)+,(a4)+
	dbf	d2,pz_c3
	add.l	#1,hexd_n+8
	move.l	hexnum,d0
	cmp.l	hexd_n+8,d0
	beq	pz_f2
	move.l	len1,d0
	add.l	len2,d0
	move.l	buffer,a0
	jsr	clrbuf
	bra	pz_c4
pz_f2:	move.l	$4BA,d0
	move.l	len1,buffer+$20018
	move.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	move.l	d7,hexnum
	move.l	my_ssp,-(a7)
	move.w	#$20,-(a7)
	trap	#1
	addq.l	#6,a7
	jsr	p_time
	move.l	buffer,a2
	move.l	buffer,a4
	move.l	len1,d2
	sub.l	#1,d2
	cmp.b	#0,(a4)
	bgt	pz_s3
	add.w	#1,a2
	add.w	#1,a4
pz_s3:	or.b	#$30,(a2)+
	dbf	d2,pz_s3
	pea	msgpz3
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	move.l	a4,-(a7)
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	pea	msg03
	move.w	#9,-(a7)
	trap	#1
	addq.l	#6,a7
keypz:	jsr	rawcin
	move.w	#$34,d1
	cmp.w	d0,d1
	beq	menpz
	move.w	#$33,d1
	cmp.w	d0,d1
	beq	newpz
	move.w	#$32,d1
	cmp.w	d0,d1
	beq	dskpz
	move.w	#$31,d1
	cmp.w	d0,d1
	beq	prtpz
	bra	keypz
dskpz:	lea	pzfile,a1
	move.l	#buffer+$20004,a0
	move.l	buffer+$2000C,d0
	sub.l	#1,d0
dskc3:	or.b	#$30,(a0)
	move.b	(a0)+,(a1)+
	dbf	d0,dskc3
	move.b	#$2E,(a1)+
	move.l	#buffer+$20014,a0
	move.l	buffer+$20010,d0
	sub.l	#1,d0
dskc4:	or.b	#$30,(a0)
	move.b	(a0)+,(a1)+
	dbf	d0,dskc4
	move.w	#0,-(a7)
	pea	pzfile
	move.w	#$3C,-(a7)
	trap	#1
	add.w	#8,a7
	tst.l	d0
	bmi	menpz
	move.w	d0,my_ssp
	pea	msgpz1
	move.l	#44,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	#buffer+$20004,-(a7)
	move.l	buffer+$2000C,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpz2
	move.l	#26,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	#buffer+$20014,-(a7)
	move.l	buffer+$20010,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg04
	move.l	#25,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	hexd_n
	move.l	#11,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg05
	move.l	#9,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpz3
	move.l	#28,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	buffer,-(a7)
	cmp.b	#0,(a7)
	bgt	dskip
	add.l	#1,(a7)
dskip:	move.l	buffer+$20018,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.w	my_ssp,-(a7)
	move.w	#$3E,-(a7)
	trap	#1
	addq.w	#4,a7
	bra	keypz
prtpz:	move.w	#17,-(a7)
	trap	#1
	addq.w	#2,a7
	tst.w	d0
	bmi	prinz
	jsr	prnmsg
	cmp.b	#$61,d0
	beq	menpz
	bra	prtpz
prinz:	pea	prnter
	move.w	#$3D,-(a7)
	trap	#1
	addq.w	#6,a7
	move.w	d0,my_ssp
	move.l	#buffer+$20004,a0
	move.l	buffer+$2000C,d0
	sub.l	#1,d0
pskc3:	or.b	#$30,(a0)+
	dbf	d0,pskc3
	move.l	#buffer+$20014,a0
	move.l	buffer+$20010,d0
	sub.l	#1,d0
pskc4:	or.b	#$30,(a0)+
	dbf	d0,pskc4
	pea	msgpz1
	add.l	#4,(a7)
	move.l	#40,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	#buffer+$20004,-(a7)
	move.l	buffer+$2000C,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpz2
	move.l	#26,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	#buffer+$20014,-(a7)
	move.l	buffer+$20010,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg04
	move.l	#25,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	hexd_n
	move.l	#11,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg05
	move.l	#9,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgpz3
	move.l	#28,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	buffer,-(a7)
	cmp.b	#0,(a7)
	bgt	pskip
	add.l	#1,(a7)
pskip:	move.l	buffer+$20018,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	jsr	prnout
	move.w	my_ssp,-(a7)
	move.w	#$3E,-(a7)
	trap	#1
	addq.w	#4,a7
	bra	keypz
menpz:	move.l	#$20020,d0
	move.l	buffer,a0
	jsr	clrbuf
	bra	start
newpz:	move.l	#$20020,d0
	move.l	buffer,a0
	jsr	clrbuf
	bra	initpz
fattrl:	move.l	buffer,d0
	add.l	#$10000,d0
	move.l	d0,num1
initft:	move.l	#0,hexd_n
	move.l	#0,hexd_n+4
	move.l	#0,hexd_n+8
	move.l	#0,hexnum
	pea	msgft1
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	move.l	num1,a4
	move.l	#4,d0
	jsr	inpnum
	move.l	d2,len1
	sub.l	d2,a4
	move.l	(a4),buffer+$20004
	move.l	len1,buffer+$20008
	clr.l	d0
	clr.l	d3
	move.l	#1,d1
	add.l	d2,a4
	sub.l	#1,d2
ft_c0:	move.b	-(a4),d0
	mulu	d1,d0
	mulu	#10,d1
	add.w	d0,d3
	clr.l	d0
	dbf	d2,ft_c0
	cmp.l	#1,d3
	bgt	expft
	add.l	#1,d3
expft:	move.l	d3,hexnum
	pea	msg02
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	clr.l	-(a7)
	move.w	#$20,-(a7)
	trap	#1
	addq.l	#6,a7
	move.l	d0,my_ssp
	move.l	#0,$4BA
ft_c4:	sub.l	#1,hexnum
	cmp.l	#1,hexnum
	beq	ft_f2
	move.l	hexnum,d0
	lea	hexd_n,a0
	lea	hexd_n,a1
	move.l	#10000,d1
ft_c5:	move.l	d0,d2
	divu	#10,d1
	cmp.w	#0,d1
	beq	ft_f4
	move.l	d1,d3
	divu	d3,d2
	cmp.w	#0,d2
	bgt	ft_s5
	cmp.l	a1,a0
	beq	ft_s4
ft_s5:	move.b	d2,(a0)+
ft_s4:	swap	d2
	move.w	d2,d0
	bra	ft_c5
ft_f4:	sub.l	a1,a0
	move.l	a0,len2
	jsr	clregs
	move.l	buffer,a2
	add.w	#1,a2
	move.l	len1,d4
	move.l	num1,a4
	add.w	d4,a4
ft_c1:	move.b	-(a4),d1
	sub.l	#1,d4
	cmp.l	#-1,d4
	beq	ft_f1
	lea	hexd_n,a5
	move.l	len2,d5
	add.l	d5,a5
ft_c2:	move.b	-(a5),d2
	sub.l	#1,d5
	cmp.l	#-1,d5
	beq	ft_c1
	mulu	d1,d2
	divu	#10,d2
	move.l	a2,a6
	move.l	d4,d3
	add.l	d5,d3
	add.l	d3,a6
	swap	d2
	add.b	d2,(a6)
	cmp.b	#10,(a6)
	blt	ft_s1
	sub.b	#10,(a6)
	add.b	#1,-1(a6)
	cmp.b	#10,-1(a6)
	blt	ft_s1
	sub.b	#10,-1(a6)
	add.b	#1,-2(a6)
ft_s1:	swap	d2
	add.b	d2,-1(a6)
	cmp.b	#10,-1(a6)
	blt	ft_c2
	sub.b	#10,-1(a6)
	add.b	#1,-2(a6)
	cmp.b	#10,-2(a6)
	blt	ft_c2
	sub.b	#10,-2(a6)
	add.b	#1,-3(a6)
	bra	ft_c2
ft_f1:	move.l	buffer,a2
	move.l	num1,a4
	move.l	len1,d2
	add.l	len2,d2
	cmp.b	#0,(a2)
	bgt	ft_s2
	add.w	#1,a2
	sub.l	#1,d2
ft_s2:	move.l	d2,len1
	sub.l	#1,d2
ft_c3:	move.b	(a2)+,(a4)+
	dbf	d2,ft_c3
	move.l	len1,d0
	add.l	len2,d0
	move.l	buffer,a0
	jsr	clrbuf
	move.l	#0,hexd_n
	bra	ft_c4
ft_f2:	move.l	$4BA,d0
	move.l	len1,buffer+$20010
	move.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	add.l	d0,d7
	move.l	d7,hexnum
	move.l	my_ssp,-(a7)
	move.w	#$20,-(a7)
	trap	#1
	addq.l	#6,a7
	jsr	p_time
	move.l	num1,a2
	move.l	num1,a4
	move.l	len1,d2
	sub.l	#1,d2
ft_s3:	or.b	#$30,(a2)+
	dbf	d2,ft_s3
	pea	msgft2
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	move.l	a4,-(a7)
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	pea	msg03
	move.w	#9,-(a7)
	trap	#1
	addq.l	#6,a7
keyft:	jsr	rawcin
	move.w	#$34,d1
	cmp.w	d0,d1
	beq	menft
	move.w	#$33,d1
	cmp.w	d0,d1
	beq	newft
	move.w	#$32,d1
	cmp.w	d0,d1
	beq	dskft
	move.w	#$31,d1
	cmp.w	d0,d1
	beq	prtft
	bra	keyft
dskft:	move.l	buffer+$20008,d0
	lea	buffer+$20004,a0
	sub.l	#1,d0
	lea	ftfile,a1
dskf3:	or.b	#$30,(a0)
	move.b	(a0)+,(a1)+
	dbf	d0,dskf3
	move.b	#$21,(a1)+
	move.b	#0,(a1)
	move.w	#0,-(a7)
	pea	ftfile
	move.w	#$3C,-(a7)
	trap	#1
	add.w	#8,a7
	tst.l	d0
	bmi	menft
	move.w	d0,my_ssp
	pea	msgft1
	move.l	#73,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	#buffer+$20004,-(a7)
	move.l	buffer+$20008,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg04
	move.l	#25,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	hexd_n
	move.l	#11,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg05
	move.l	#9,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgft2
	move.l	#31,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	num1,-(a7)
	move.l	len1,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.w	my_ssp,-(a7)
	move.w	#$3E,-(a7)
	trap	#1
	addq.w	#4,a7
	bra	keyft
prtft:	move.w	#17,-(a7)
	trap	#1
	addq.w	#2,a7
	tst.w	d0
	bmi	prinf
	jsr	prnmsg
	cmp.b	#$61,d0
	beq	menft
	bra	prtft
prinf:	pea	prnter
	move.w	#$3D,-(a7)
	trap	#1
	addq.w	#6,a7
	move.w	d0,my_ssp
	move.l	buffer+$20008,d0
	lea	buffer+$20004,a0
	sub.l	#1,d0
fskf3:	or.b	#$30,(a0)+
	dbf	d0,fskf3
	pea	msgft1
	add.l	#2,(a7)
	move.l	#71,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	#buffer+$20004,-(a7)
	move.l	buffer+$20008,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg04
	move.l	#25,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	hexd_n
	move.l	#11,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msg05
	move.l	#9,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	pea	msgft2
	move.l	#31,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	move.l	num1,-(a7)
	move.l	len1,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	jsr	prnout
	move.w	my_ssp,-(a7)
	move.w	#$3E,-(a7)
	trap	#1
	addq.w	#4,a7
	bra	keyft
menft:	move.l	#$20020,d0
	move.l	buffer,a0
	jsr	clrbuf
	bra	start
newft:	move.l	#$20020,d0
	move.l	buffer,a0
	jsr	clrbuf
	bra	initft
endprg:	jsr	hdcrsr
	move.w	#0,-(a7)	_ptermold
	trap	#1
enderr:	pea	msgerr
	move.w	#9,-(a7)
	trap	#1
	addq.l	#6,a7
	move.l	d7,msgerr
	pea	msgerr
	move.w	#9,-(a7)
	trap	#1
	addq.l	#6,a7
	jsr	rawcin
	jsr	hdcrsr
	move.w	#0,-(a7)
	trap	#1
prnout:	pea	msg07
	move.l	#4,-(a7)
	move.w	my_ssp,-(a7)
	move.w	#$40,-(a7)
	trap	#1
	add.w	#12,a7
	rts
prnmsg:	pea	msg06
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	move.w	#7,-(a7)
	trap	#1
	addq.w	#2,a7
	swap	d0
	rts
clregs:	clr.l	d1
	clr.l	d2
	clr.l	d3
	clr.l	d4
	clr.l	d5
	clr.l	d6
	clr.l	d7
	rts
hdcrsr:	move.w	#0,-(a7)
	move.w	#21,-(a7)
	trap	#14
	addq.w	#4,a7
	rts
clrbuf:	move.l	#0,(a0)+	adr in a0, len in d0
	sub.l	#4,d0
	cmp.l	#0,d0
	bgt	clrbuf
	rts
inpnum:	jsr	clregs		max digit num in d0
	move.l	d0,d6		len returned in d2
inp00:	jsr	rawcin
	move.b	d0,d3
	move.b	#$31,d1
	cmp.b	d1,d0
	blt	inp00
	move.b	#$39,d1
	cmp.b	d1,d0
	bgt	inp00
	and.b	#$0F,d3
	move.b	d3,(a4)+
	add.w	#1,d2
	jsr	conout
inp01:	jsr	rawcin
	move.b	d0,d3
	move.b	#$0D,d1
	cmp.b	d0,d1
	beq	outnum
	move.b	#$30,d1
	cmp.b	d1,d0
	blt	inp01
	move.b	#$39,d1
	cmp.b	d1,d0
	bgt	inp01
	and.b	#$0F,d3
	move.b	d3,(a4)+
	jsr	conout
	add.l	#1,d2
	cmp.l	d6,d2
	blt	inp01
outnum:	rts
conout:	move.w	d0,-(a7)
	move.w	#2,-(a7)	_cconout
	trap	#1
	addq.l	#4,a7
	rts
rawcin:	move.w	#7,-(a7)	_crawcin
	trap	#1
	addq.l	#2,a7
	rts
p_time:	pea	msg04
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	jsr	hexdec
	pea	msg05
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	rts
hexdec:	clr.l	d2
	move.l	hexnum,d3	move here hex number
	lea	hexd_n,a3
	move.l	#0,8(a3)
	lea	hexd_t,a4
	move.l	(a4)+,d4
hexd_1:	sub.l	d4,d3
	bmi	hexd_2
	add.b	#1,d2
	bra	hexd_1
hexd_2:	move.b	d2,(a3)+
	clr.b	d2
	add.l	d4,d3
	move.l	(a4)+,d4
	cmp.l	#0,d4
	bgt	hexd_1
	lea	hexd_n,a3
	or.l	#$30303030,(a3)+
	or.l	#$30303030,(a3)+
	or.w	#$3030,(a3)
	move.b	1(a3),2(a3)
	move.b	(a3),1(a3)
	move.b	-1(a3),(a3)
	move.b	#$2C,-1(a3)
	sub.w	#8,a3
hexd_3:	cmp.b	#$30,(a3)+
	beq	hexd_3
	sub.w	#1,a3
	cmp.b	#$2C,(a3)
	bgt	hexskp
	sub.w	#1,a3
hexskp:	move.l	a3,-(a7)
	move.w	#9,-(a7)
	trap	#1
	addq.w	#6,a7
	rts

	SECTION DATA
pdfile:	dc.b	'PRODUCT.NUM',0
ftfile:	dc.b	'     ',0
pzfile:	dc.b	'          ',0,0
prnter:	dc.b	'PRN:',0
msg01:	dc.b	$1B,$45,$1B,$59,$24,$42,'CALC.S v1.0'
	dc.b	$1B,$59,$26,$40,'(C) 11/23/1990,'
	dc.b	$1B,$59,$28,$3D,'by: PKF'
	dc.b	$1B,$59,$2E,$3D,'[1] Exact products'
	dc.b	$1B,$59,$2F,$3D,'[2] Exact powers'
	dc.b	$1B,$59,$30,$3D,'[3] Exact factorials'
	dc.b	$1B,$59,$32,$3D,'[4] End',$0A,$0A,0
msg02:	dc.b	$0D,$0A,'Working...',$0D,$0A,0
msg04:	dc.b	$0D,$0A,'Working time: ',0
msg05:	dc.b	' seconds.',0
msg06:	dc.b	'Printer is not ready: press any key',$0D,$0A
	dc.b	'to continue or UNDO to cancel.',$0D,$0A,0
msg07:	dc.b	$0D,$0A,$1B,$40,0
msg03:	dc.b	$0D,$0A,$0A,'[1] Print'
	dc.b	$0D,$0A,'[2] Save'
	dc.b	$0D,$0A,'[3] New elaboration'
	dc.b	$0D,$0A,'[4] Main menu',$0D,$0A,$0A,0
msgerr:	dc.b	$1B,$59,$2D,$20,$1B,$70,'A fatal error '
	dc.b	'has occurred: program abort. '
	dc.b	'Error code: ',0
hexd_t:	dc.l	$3B9ACA00,$5F5E100,$989680,$F4240
	dc.l	$186A0,$2710,$3E8,$64,$A,$1,$0
msgft1:	dc.b	$1B,$45,$1B,$70,'EXACT FACTORIALS',$1B,$71,$0D,$0A
	dc.b	$0D,$0A,'Please input the factorial's base (max 9999): ',0
msgft2:	dc.b	$0D,$0A,'The exact factorial is:',$0D,$0A,0
msgpd1:	dc.b	$1B,$45,$1B,$70,'EXACT PRODUCTS',$1B,$71,$0D,$0A
	dc.b	$0D,$0A,'Please input the 1st number: ',0
msgpd2:	dc.b	$0D,$0A,'Please input the 2nd number: ',0
msgpd3:	dc.b	$0D,$0A,'The exact product is:',$0D,$0A,0
msgpz1:	dc.b	$1B,$45,$1B,$70,'EXACT POWERS',$1B,$71,$0D,$0A
	dc.b	$0D,$0A,'Please input the base: ',0
msgpz2:	dc.b	$0D,$0A,'Please input the raising power: ',0
msgpz3:	dc.b	$0D,$0A,'The exact power is:',$0D,$0A,0

	SECTION BSS
my_ssp:	ds.l	1
len1:	ds.l	1
len2:	ds.l	1
num1:	ds.l	1
num2:	ds.l	1
hexd_n:	ds.l	3
hexnum:	ds.l	1
buffer:	ds.l	1

- MAIL TO ME -

Web design by PKF - 2001 -
Hosted by www.Geocities.ws

1