00000 prog START 0 . inicializiraj sklad 00000 4B20D6 JSUB stackinit . beri stevke do newline (\n = 10), nato evalviraj stevilo 00003 050001 LDX #1 . zacnemo z 1 za lazje preverjanje pogoja v loop_e 00006 DB2112 loop RD device . FA.dev 00009 29000A COMP #10 . newline 0000C 33200D JEQ evaluate 0000F 1D0030 SUB #48 . ASCII koda za 0 00012 5790011C +STCH stevke,X 00016 2D0FFF TIX #-1 . primerjava TIX tu nima pomena 00019 3F2FEA J loop 0001C 750000 evaluate LDT #0 . S hrani potence st. deset 0001F 6D0001 LDS #1 . zmanjsaj X za 1 00022 AC10 RMO X,A 00024 1D0001 SUB #1 00027 AC01 RMO A,X . nalozi stevko, pomnozi s S, shrani oz. pristej rez. v T 00029 53A0F0 loop_e LDCH stevke,X 0002C 9840 MULR S,A 0002E 9005 ADDR A,T . povecaj potenco 00030 AC40 RMO S,A 00032 21000A MUL #10 00035 AC04 RMO A,S . zmanjsaj X 00037 AC10 RMO X,A 00039 1D0001 SUB #1 0003C AC01 RMO A,X . ce je X = 0, si prebral vse stevke 0003E 290000 COMP #0 00041 372FE5 JGT loop_e . ce je rezultat nic koncaj sicer izracunaj fakulteto in preberi naslednjo vrstico 00044 AC50 RMO T,A 00046 290000 COMP #0 00049 33200D JEQ HALT 0004C 4B2055 JSUB fakulteta_r . izpisi rezultat na standard output 0004F B440 CLEAR S 00051 4B2008 JSUB izpis 00054 B400 CLEAR A 00056 3F2FA7 J prog 00059 3F2FFD HALT J HALT 0005C END prog 0005C 050001 izpis LDX #1 0005F AC04 loop_i RMO A,S . kopiraj stevilo v S . pridobi stevko, z mod 10 00061 25000A DIV #10 00064 21000A MUL #10 00067 AC05 RMO A,T . odstevanec gre v T 00069 AC40 RMO S,A 0006B 9450 SUBR T,A 0006D 57A0AD STCH stevke_r,X 00070 2D0FFF TIX #-1 . primerjava nima pomena 00073 AC40 RMO S,A 00075 25000A DIV #10 00078 290000 COMP #0 0007B 372FE1 JGT loop_i . izpis iz pomnilnika 0007E AC10 RMO X,A 00080 1D0001 SUB #1 00083 AC01 RMO A,X 00085 53A095 loop_ii LDCH stevke_r,X 00088 190030 ADD #48 . pretvori v ascii 0008B DD0001 WD #1 0008E AC10 RMO X,A 00090 1D0001 SUB #1 00093 AC01 RMO A,X 00095 290000 COMP #0 00098 372FEA JGT loop_ii . izpis newline 0009B 01000A LDA #10 0009E DD0001 WD #1 000A1 4F0000 RSUB 000A4 16100121 fakulteta_r +STL @stackptr . link reg. na sklad 000A8 4B2041 JSUB stackpush 000AB 0E100121 +STA @stackptr . parameter na sklad 000AF 4B203A JSUB stackpush 000B2 290001 COMP #1 . robni primer n = 1 000B5 33200C JEQ exit 000B8 1D0001 SUB #1 . pripravimo podproblem 000BB 290001 COMP #1 . zaustavitveni pogoj 000BE 332003 JEQ exit . ce je z. p. izpolnjen RSUB, v A je vrednost podproblema 000C1 4B2FE0 JSUB fakulteta_r 000C4 AC03 exit RMO A,B . premakni vrednost podroblema v B 000C6 4B2039 JSUB stackpop 000C9 02100121 +LDA @stackptr . nalozi parameter klicujoce funkcije ("starša") 000CD 9830 MULR B,A . pomnozi, shrani v A 000CF 4B2030 JSUB stackpop 000D2 0A100121 +LDL @stackptr 000D6 4F0000 RSUB 000D9 0F2042 stackinit STA oldvalue 000DC B400 CLEAR A 000DE 012043 LDA #stack 000E1 0F203D STA stackptr 000E4 B400 CLEAR A 000E6 032035 LDA oldvalue 000E9 4F0000 RSUB 000EC 0F202F stackpush STA oldvalue 000EF B400 CLEAR A 000F1 03202D LDA stackptr 000F4 190003 ADD #3 000F7 0F2027 STA stackptr 000FA B400 CLEAR A 000FC 03201F LDA oldvalue 000FF 4F0000 RSUB 00102 0F2019 stackpop STA oldvalue 00105 B400 CLEAR A 00107 032017 LDA stackptr 0010A 1D0003 SUB #3 0010D 0F2011 STA stackptr 00110 B400 CLEAR A 00112 032009 LDA oldvalue 00115 4F0000 RSUB 00118 000000 temp WORD 0 0011B FA device BYTE X'FA' 0011C 64 stevke BYTE 100 0011D 64 stevke_r BYTE 100 0011E 000000 oldvalue WORD 0 00121 000000 stackptr WORD 0 00124 00....00 stack RESW 1000