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