spo/rec.asm
2025-11-16 23:41:47 +01:00

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