diff --git a/arith.asm b/arith.asm new file mode 100644 index 0000000..a5cf969 --- /dev/null +++ b/arith.asm @@ -0,0 +1,30 @@ +.Code +ARITH START 0 + LDA x + ADD y + STA sum + LDA x + SUB y + STA diff + LDA x + MUL y + STA prod + LDA x + DIV y + STA quot + MUL y + STA mod + LDA x + SUB mod + STA mod +HALT J HALT + +.Data +x WORD 42 +y WORD 27 +sum RESW 1 +diff RESW 1 +prod RESW 1 +quot RESW 1 +mod RESW 1 + END ARITH diff --git a/arithr.asm b/arithr.asm new file mode 100644 index 0000000..c2d81ed --- /dev/null +++ b/arithr.asm @@ -0,0 +1,32 @@ +.Code +ARITH START 0 + LDS x + LDT y + ADDR S,T + STT sum + LDT y + SUBR T,S + STS diff + LDS x + MULR S,T + STT prod + LDS x + LDT y + DIVR T,S + STS quot + LDS x + LDA y + MUL quot + SUBR A,S + STS mod +HALT J HALT + +.Data +x WORD 42 +y WORD 27 +sum RESW 1 +diff RESW 1 +prod RESW 1 +quot RESW 1 +mod RESW 1 + END ARITH diff --git a/cat.asm b/cat.asm new file mode 100644 index 0000000..3298d50 --- /dev/null +++ b/cat.asm @@ -0,0 +1,15 @@ +.code +CAT START 0 +LOOP TD dev + JEQ LOOP + RD dev + COMP #0 + JEQ EXIT + WD #1 + J LOOP +EXIT LDA #10 + WD #1 +HALT J HALT +.data +dev BYTE 0xAA + END CAT diff --git a/echo.asm b/echo.asm new file mode 100644 index 0000000..32adc33 --- /dev/null +++ b/echo.asm @@ -0,0 +1,84 @@ +echo START 0 + LDA #65 + JSUB char + JSUB nl + LDA #what + JSUB string + JSUB nl + LDA #123 + JSUB num + JSUB nl +halt J halt + +char WD dev + RSUB + +nl STA a + LDA #10 + WD dev + LDA a + RSUB + +string STA a + STA b +strlp LDCH @a + COMP #0 + JEQ strcup + WD dev + LDA #1 + ADD a + STA a + J strlp + LDA b +strcup + RSUB + +num STA aa + STA a + LDA #buffer + ADD #15 + STA b +numlp LDA a + DIV #10 + MUL #10 + SUB a + MUL negone + COMP #0 + JEQ numcup + ADD #48 + STCH @b + LDA b + SUB #1 + STA b + LDA a + DIV #10 + STA a + J numlp +numcup LDA b + ADD #1 + STA a +strll LDCH @a + COMP #0 + JEQ strcul + WD dev + LDA #1 + ADD a + STA a + J strll + LDA b +strcul + LDA aa + RSUB + + +dev BYTE 1 +what BYTE C'word' + BYTE 0 +buffer RESB 16 + BYTE 0 +a RESW 1 +b RESW 1 +aa RESW 1 +negone WORD -1 + + END echo diff --git a/poly.asm b/poly.asm new file mode 100644 index 0000000..eb1dcf7 --- /dev/null +++ b/poly.asm @@ -0,0 +1,39 @@ +.Code +.poly (1, 2, 3, 4, 5) +POLY START 0 + LDA #0 + LDS x + LDT x + MULR S,S + MULR S,S + ADDR S,A + + LDS x + MULR S,S + MULR T,S + LDT #2 + MULR T,S + ADDR S,A + + LDS x + LDT x + MULR S,S + LDT #3 + MULR T,S + ADDR S,A + + LDS x + LDT #4 + MULR T,S + ADDR S,A + + ADD #5 + + STA y + +HALT J HALT + +.Data +x WORD 2 +y RESW 1 + END POLY diff --git a/print.asm b/print.asm new file mode 100644 index 0000000..f7dc1fa --- /dev/null +++ b/print.asm @@ -0,0 +1,15 @@ +.code +PRINT START 0 + LDX #0 +LOOP LDCH string,X + WD dev + TIX len + JLT LOOP + +HALT J HALT +.Data +dev BYTE 0xAA +string BYTE C"SIC/EX\n" +len WORD 7 + + END PRINT diff --git a/rec.asm b/rec.asm new file mode 100644 index 0000000..b066df3 --- /dev/null +++ b/rec.asm @@ -0,0 +1,99 @@ +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