|
* 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
|