summaryrefslogtreecommitdiff
path: root/test/input-2.s
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2020-05-29 22:38:34 -0400
committermrb0nk500 <b0nk@b0nk.xyz>2020-05-29 22:38:34 -0400
commit2f9d38f9f9d6f17bc274934b23915417012eeed8 (patch)
treeb72aff709261d5e22f026835191eec9b73a77ff5 /test/input-2.s
parent47cb4ad67be723a4df8e6ccd3cad6be79e3e7765 (diff)
Make JSL, JSR absolute, and remove RTL.
The reason for doing this was because JSL, and RTL are redundent, as they both do the same thing as JSR, and RTS.
Diffstat (limited to 'test/input-2.s')
-rw-r--r--test/input-2.s412
1 files changed, 0 insertions, 412 deletions
diff --git a/test/input-2.s b/test/input-2.s
deleted file mode 100644
index f5cb49e..0000000
--- a/test/input-2.s
+++ /dev/null
@@ -1,412 +0,0 @@
-; Testing input.
-;
-; Writen in Sux assembly by
-; mr b0nk 500 <b0nk@b0nk.xyz>
-
-; Instruction mnemonics,
-; and opcodes.
-.org $1000
-tok:
- .byte "dab"
-msg:
- .byte "oof, you divided a, and b on me.\n"
-
-; Input buffer.
-.org $2000
-buffer:
-
-.org $2800
-cmd_buf:
-
-; Initalize some variables.
-.org $0
-scr_row:
- .byte $0
-scr_col:
- .byte $0
-a:
- .byte $0
-b:
- .byte $0
-c:
- .byte $0
-d:
- .byte $0
-e:
- .byte $0
-string:
- .byte "Please, type something.\n"
-string2:
- .byte "You typed, "
-end:
- .byte $0
-
-; String Pointer
-ptr:
- .qword buffer
-cptr:
- .qword cmd_buf
-tptr:
- .qword tok
-mptr:
- .qword msg
-
-
-; Main program
-.org $8000
-reset:
- cps
- ldx.w #$FFFF
- txs
- ldy #0
- lda #0
-clr_buf:
- cpy.w #$7FF
- beq start
- sta (ptr), y
- iny
- jmp clr_buf
-
-start:
- lda #0
- sta $C000
- tax ; Reset x.
- tay ; Reset y.
- jsl clr_cbuf
- jmp print
-
-clr_cbuf:
- cpy.w #$3FF
- beq clr_cbuf_end
- sta (cptr), y
- iny
- jmp clr_cbuf
-clr_cbuf_end:
- ldy #0
- rtl
-
-rset_a:
- lda #1
-read:
- lda $C000 ; Get control register.
- beq rset_a ; Loop until we get a character.
- jmp getchar ; We got a key.
-sleep:
- lda end
- bne spin ; Are we done with getting input?
-
-print:
- lda string, x ; Get character at offset x.
- beq rset_a ; Did we find a null terminator?
- sta $C001 ; Print character.
- inx ; Increment offset.
- cmp #$A
- beq inc_row
- inc scr_col
- jmp print
-inc_row:
- lda #0
- sta scr_col
- lda #$42
- sta c
- jsl isdown
- jmp print ; Keep printing more characters.
-
-getchar:
- lda $C002 ; Get typed character.
- cmp #$1B
- beq esc
- cmp #$A
- beq nl ; Did the user type a newline?
- cmp #8
- beq bs ; Did the user type a backspace?
- cmp #$7F
- beq bs ; Did the user type a backspace?
-echo:
- sta a
- ldx scr_col
- cpx #79
- bne echo_print
-linewrap:
- inc scr_row
- ldx #0
- stx scr_col
- lda scr_row
- jsl update_pos
-echo_print:
- lda a
- sta $C001 ; Echo typed character.
- inc scr_col ; Increment the cursor's x coordinate.
- sta (ptr), y ; Store typed character into the input buffer.
- iny
- jmp rset_a ; Start getting user input.
-
-esc:
- lda $C000 ; Skip the '['.
- lda $C000 ; Get the next character.
- beq read ; We have an error, so discard it, and go back to getting user input.
- lda $C002 ; Get the escape code.
- sta c ; Store the escape code, until we need it.
- jsl isup ; Check if the user pressed up.
- lda d
- bne esc_end
- jsl isdown ; Check if the user pressed down.
- lda d
- bne esc_end
- lda #0
- jsl isleft ; Check if the user pressed left.
- lda d
- bne esc_end
- jsl isright ; Check if the user pressed right.
-esc_end:
- lda #0
- sta d
- jmp rset_a ; Go back to getting user input.
-
-isup:
- lda scr_row ; Is the cursor at the top of the screen?
- beq isup_done ; Yes, so return.
- lda c ; No, so load the escape code back into the accumulator.
- cmp #$41 ; Did the user press the up arrow key?
- beq up ; Yes, so move the cursor up.
-isup_done:
- rtl ; End of isup.
-
-isdown:
- lda scr_row ; Start checking the y coordinate of the cursor.
- cmp #23 ; Is the cursor at the bottom of the screen?
- beq isdown_done ; Yes, so return.
- lda c ; No, so load the escape code back into the accumulator.
- cmp #$42 ; Did the user press the down arrow key?
- beq down ; Yes, so move the cursor down.
-isdown_done:
- rtl ; End of isdown.
-
-isright:
- lda scr_col ; Start checking the x coordinate of the cursor.
- cmp #79 ; Is the cursor at the far right of the screen?
- beq isright_end ; Yes, so return.
- lda c ; No, so load the escape code back into the accumulator.
- cmp #$43 ; Did the user press the right arrow key?
- beq right ; Yes, so move the cursor right.
-isright_end:
- rtl ; End of isright.
-
-isleft:
- lda scr_col ; Is the cursor at the far left of the screen?
- beq isleft_done ; Yes, so return.
- lda c ; No, so load the escape code back into the accumulator.
- cmp #$44 ; Did the user press the left arrow key?
- beq left ; Yes, so move the cursor left.
-isleft_done:
- rtl ; End of isleft.
-
-up:
- dec scr_row
- jsl update_pos
- lda #1
- sta d
- jmp isup_done
-down:
- inc scr_row
- jsl update_pos
- lda #1
- sta d
- jmp isdown_done
-right:
- inc scr_col
- jsl update_pos
- jmp isright_end
-left:
- dec scr_col
- jsl update_pos
- lda #1
- sta d
- jmp isleft_done
-
-update_pos:
- lda #$1B ; Print an escape character
- sta $C001 ; to the screen.
- lda #$5B ; Print '['
- sta $C001 ; to the screen, and start the escape sequence.
- jsl getrow ; Start printing the row number to the screen.
- jsl getcol ; Start printing the column number to the screen.
- lda #$48 ; Print 'H'
- sta $C001 ; to the screen.
- rtl ; End of update_pos.
-getrow:
- lda scr_row ; Get the cursor's y coordinate.
- div #10 ; Divide A by 10.
- adc #$30 ; Convert it to ascii, and
- sta $C001 ; print to the screen.
- tba ; Get the remainder.
- adc #$30 ; Convert it to ascii, and
- sta $C001 ; print to the screen.
- rtl ; End of getrow.
-getcol:
- lda #$3B ; Print ';'
- sta $C001 ; to the screen.
- lda scr_col ; Get the cursor's x coordinate.
- div #10 ; Divide A by 10.
- adc #$30 ; Convert it to ascii, and
- sta $C001 ; print to the screen.
- tba ; Get the remainder.
- adc #$30 ; Convert it to ascii, and
- sta $C001 ; print to the screen.
- rtl ; End of getrow.
-
-nl:
- lda #0
- sta scr_col
- sta (ptr), y ; Store said terminator into the input buffer.
- lda #$42
- sta c
- jsl isdown
- ldy.w #0 ; Reset y, to print the result.
- jsl dabbed
- beq start
- ldy #0
- jmp result
-
-back:
- sta $C001 ; Print backspace.
- lda #0 ; Put a null terminator, in place of the backspace.
- sta (ptr), y ; Place it into the input buffer.
- dey ; Decrement buffer offset.
- dec scr_col
- jmp read ; Get next character.
-
-bs:
- cpy #0 ; Are we at the start of the buffer?
- beq rset_a ; We are, so do not store the backspace into the buffer.
- jmp back ; We are not, so add the backspace to the buffer.
-
-result:
- ldx scr_col
- cpx #79
- bne result_print
-linewrap2:
- inc scr_row
- ldx #$0
- stx scr_col
- jsl update_pos
-result_print:
- lda string2, y
- beq rset_y ; Reset y, if we hit the null terminator.
- sta $C001 ; Print 'You have typed, '
- inc scr_col ; Increment the cursor's x coordinate.
- iny ; Increment offset.
- jmp result ; Keep printing.
-
-rset_y:
- ldy.w #0 ; Reset y.
- ldx.w #0 ; Reset x.
- lda.w #0 ; Reset a.
- jmp print_buf ; Print the input buffer.
-dabbed:
- lda (ptr), y ; Get a character from the input buffer.
- beq dab_nend ; Are we done with printing the buffer?
- cmp (tptr), y
- bcs dab_nend
- beq chk_str
- bcc dab_nend
-chk_str:
- iny
- cpy #3
- bne dabbed
- ldy #0
-pnt_msg:
- ldx scr_col
- cpx #79
- bne msg_pnt
-linewrap3:
- inc scr_row
- ldx #0
- stx scr_col
- jsl update_pos
-msg_pnt:
- lda (mptr), y ; Get a character from the input buffer.
- beq dab_eqnd ; Are we done with printing the buffer?
- sta $C001 ; Print said character.
- inc scr_col ; Increment the cursor's x coordinate.
- iny
- jmp pnt_msg ; Keep printing the buffer.
-dab_nend:
- lda #1
- jmp dab_end
-dab_eqnd:
- lda #0
- jmp dab_end
-dab_end:
- rtl
-
-
-
-print_buf:
- ldx scr_col
- cpx #79
- bne buf_print
-linewrap4:
- inc scr_row
- ldx #0
- stx scr_col
- jsl update_pos
-buf_print:
- lda (ptr), y ; Get a character from the input buffer.
- beq cmd_clr ; Are we done with printing the buffer?
- sta $C001 ; Print said character.
- inc scr_col ; Increment the cursor's x coordinate.
- iny
- jmp print_buf ; Keep printing the buffer.
-
-cmd_clr:
- lda #0
- sta scr_col
- lda #$42
- sta c
- jsl isdown
- jmp start
-
-scr_to_buf:
- tax
- mul #80
- adc scr_col
- tay
- txa
- rtl
-
-spin:
- nop
- nop
- nop
- jmp spin
-
-.org $1000
-v
-.org $1100
-v
-.org $1200
-v
-.org $8000
-v
-.org $8100
-v
-.org $8200
-v
-.org $8300
-v
-.org $FFC0
-.qword reset
-
-.org $FF50
-.qword spin
-.qword spin
-.qword spin
-.qword spin
-.qword spin
-.qword spin
-.qword spin
-.org $FF50
-v
-done
-