99 lines
1.2 KiB
NASM
99 lines
1.2 KiB
NASM
rec START 0
|
|
nextln CLEAR B
|
|
LDA #stack
|
|
STA sp
|
|
inplp LDA #10
|
|
MULR A,B
|
|
RD input
|
|
COMP #10
|
|
JEQ linend
|
|
SUB #48
|
|
ADDR A,B
|
|
J inplp
|
|
linend STB a
|
|
LDA a
|
|
DIV #10
|
|
COMP #0
|
|
JEQ exit
|
|
JSUB printn
|
|
LDB #1
|
|
JSUB fac
|
|
JSUB printn
|
|
|
|
J nextln
|
|
|
|
exit J exit
|
|
|
|
|
|
fac STA a
|
|
STL @sp
|
|
LDA #3
|
|
ADD sp
|
|
STA sp
|
|
LDA a
|
|
COMP #2
|
|
JLT facone
|
|
MULR A,B
|
|
SUB #1
|
|
JSUB fac
|
|
facone STB a
|
|
LDA sp
|
|
SUB #3
|
|
STA sp
|
|
LDL @sp
|
|
LDA a
|
|
RSUB
|
|
|
|
|
|
|
|
printn STA aa
|
|
STA a
|
|
LDA #buffer
|
|
ADD #15
|
|
STA b
|
|
numlp LDA a
|
|
COMP #0
|
|
JEQ numcup
|
|
DIV #10
|
|
MUL #10
|
|
SUB a
|
|
MUL negone
|
|
ADD #48
|
|
STCH @b
|
|
LDA b
|
|
SUB #1
|
|
STA b
|
|
LDA a
|
|
DIV #10
|
|
STA a
|
|
J numlp
|
|
numcup LDA b
|
|
ADD #1
|
|
STA b
|
|
strll CLEAR A
|
|
LDCH @b
|
|
COMP #0
|
|
JEQ strcul
|
|
WD dev
|
|
LDA #1
|
|
ADD b
|
|
STA b
|
|
J strll
|
|
strcul
|
|
LDCH #10
|
|
WD dev
|
|
LDA aa
|
|
RSUB
|
|
|
|
|
|
buffer RESB 16
|
|
WORD 0
|
|
a RESW 1
|
|
aa RESW 1
|
|
b RESW 1
|
|
negone WORD -1
|
|
dev BYTE 1
|
|
input BYTE X'FA'
|
|
sp WORD 0
|
|
stack RESW 1024
|
|
END rec
|