summaryrefslogtreecommitdiff
path: root/test/fib.s
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2019-12-07 18:21:05 -0500
committermrb0nk500 <b0nk@b0nk.xyz>2019-12-07 18:23:08 -0500
commit1e3787256c8fb98c41e3263fe697f30557a895fe (patch)
tree6a61ce87767a5c7f7eeeb80d0231019ec95c9013 /test/fib.s
parent8b20b35bf5506ff74b7337e35d6827064eace425 (diff)
Added support for labels to the assembly language
monitor. I also rewrote the fibonacci program to include lables.
Diffstat (limited to 'test/fib.s')
-rw-r--r--test/fib.s75
1 files changed, 51 insertions, 24 deletions
diff --git a/test/fib.s b/test/fib.s
index 0d3ee03..9188a3c 100644
--- a/test/fib.s
+++ b/test/fib.s
@@ -4,42 +4,69 @@
; Written in Sux Assembly
; by mr b0nk 500 <b0nk@b0nk.xyz>
+; Variables for thread 0.
+.org $1000
+x:
+.qword $0
+y:
+.qword $0
+z:
+.qword $0
+; Variables for thread 1.
+.org $2000
+x2:
+.qword $0
+y2:
+.qword $0
+z2:
+.qword $0
+
+.org $0
+init:
cps ; Clear the Processor Status register.
+
+start:
lda #$0 ; Clear the accumulator.
ldy #$1 ; y=1.
-sty.q $1008 ; Store y into memory.
+sty.q y ; Store y into memory.
+
+fib:
ldx #$0 ; x=0.
-ldx.q $1000 ; Output the value of x.
-adc.q $1008 ; Add x with y.
-sta.q $1010 ; z=x+y
-ldy.q $1008
-sty.q $1000 ; x=y.
-sta.q $1008 ; y=z.
-lda.q $1000
-bcs $1 ; Start all over again, if the carry flag was set.
-jmp $D ; Otherwise, keep looping.
+ldx.q x ; Output the value of x.
+adc.q y ; Add x with y.
+sta.q z ; z=x+y
+ldy.q y
+sty.q x ; x=y.
+sta.q y ; y=z.
+lda.q x
+bcs start ; Start all over again, if the carry flag was set.
+jmp fib ; Otherwise, keep looping.
.org $8000
-
+init2:
cps ; Clear the Processor Status register.
+
+start2:
lda #$0 ; Clear the accumulator.
-ldy #$1 ; y=1.
-sty.q $2008 ; Store y into memory.
-ldx #$0 ; x=0.
-ldx.q $2000 ; Output the value of x.
-adc.q $2008 ; Add x with y.
-sta.q $2010 ; z=x+y
-ldy.q $2008
-sty.q $2000 ; x=y.
-sta.q $2008 ; y=z.
-lda.q $2000
-bcs $8001 ; Start all over again, if the carry flag was set.
-jmp $800D ; Otherwise, keep looping.
+ldy #$1 ; y2=1.
+sty.q y2 ; Store y into memory.
+
+fib2:
+ldx #$0 ; x2=0.
+ldx.q x2 ; Output the value of x2.
+adc.q y2 ; Add x2 with y2.
+sta.q z2 ; z2=x2+y2
+ldy.q y2
+sty.q x2 ; x2=y2.
+sta.q y2 ; y2=z2.
+lda.q x2
+bcs start2 ; Start all over again, if the carry flag was set.
+jmp fib2 ; Otherwise, keep looping.
; Set up the thread vectors.
.org $FF50
-.qword $8000
+.qword init2
; Execute the program.
done