From 9526483f93b5950ecfa81a93f30b617bec22dfe1 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Wed, 11 Dec 2019 11:28:30 -0500 Subject: We can print to the Screen!!!! I also added the ASR instruction, for doing arithmetic shifts, and have added a hello world program. --- test/hello-world.s | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 test/hello-world.s (limited to 'test/hello-world.s') diff --git a/test/hello-world.s b/test/hello-world.s new file mode 100644 index 0000000..fef5a46 --- /dev/null +++ b/test/hello-world.s @@ -0,0 +1,56 @@ +; Hello world. +; Writen in Sux assembly by mr b0nk 500 + +; Initialize, and declare variables. +.org $8000 +string: + .byte "Hello, world!\n" + +; Get CPU into a known state. +.org $0 +reset: + cps ; Reset the processor status. + ldx.w #$FFFF ; Set up the stack pointer. + txs ; Reset the stack pointer. + +; Start of main program. +start: + ldx.w #$0 ; Reset x. + jmp print + +line_count: + iny ; Increment the line count. + cpy #$32 + beq spin ; Have we printed 50 lines? + jmp start ; Keep looping until we have printed 50 lines. + +; Printing sub routine. +print: + lda string, x ; Get character at offset x. + beq line_count ; Did we find a null terminator? + sta $C001 ; Print character. + inx ; Increment offset. + jmp print ; Keep printing more characters. + +; The other threads would clash, if we're running the same code. +; So, have them spin instead, please? +.org $1000 +spin: + nop + nop + nop + jmp spin + +.org $FFC0 +.qword reset + +.org $FF50 +.qword spin +.qword spin +.qword spin +.qword spin +.qword spin +.qword spin +.qword spin +done + -- cgit v1.2.3-13-gbd6f