Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; this program takes input from the user and prints it back out after hitting enter
- .text
- .reset $0200
- .org $0200
- ; X for print offset
- ; $00 for locking key input to prevent spam
- ; $01 for name length
- Start:
- LDA Intro,X
- CMP #$00
- BEQ Scan
- STA $A000,X
- INX
- JMP Start
- Scan:
- LDA #'_' ; print underscore
- STA $A000,X
- LDA $9FFF ; read keyboard input, go to subroutines
- CMP #$0D
- BEQ Enter
- CMP #$08
- BEQ Back
- CMP #$00
- BEQ Rels
- JMP PrLett
- Rels:
- LDY #$00 ; release key
- STY $00
- JMP Scan
- Back:
- LDY $00 ; if locked (currently holding key), return
- CPY #$01
- BEQ Scan
- LDY $01 ; if already 0 characters, return
- CPY #$00
- BEQ Scan
- INC $00 ; lock input
- LDA #$00 ; blank last character, decrement length and offset
- STA $A000,X
- ;LDY $01
- ;STA $A000,Y
- DEX
- DEC $01
- JMP Scan
- PrLett:
- LDY $00
- CPY #$01
- BEQ Scan
- INC $00 ; lock input
- LDY $01 ; if already 6 characters long, return
- CPY #$06
- BEQ Scan
- STA $A000,X
- INX
- LDY $01
- STA Name,Y
- INC $01
- JMP Scan
- Enter:
- LDX #$00
- LDY #$00
- STY $00 ; repurpose $00 for offset in name in PrName
- PrOut:
- LDA Outro,Y
- CMP #$00
- BEQ PrName
- STA $A023,X
- INX
- INY
- JMP PrOut
- PrName:
- LDY $00
- LDA Name,Y
- CMP #$00
- BEQ End
- STA $A023,X
- INX
- INC $00
- JMP PrName
- End: HLT
- ; program data
- .org $2000
- Intro:
- .db "Name:", $00
- Outro:
- .db "Your name is ", $00
- ; dummy label for placing input
- .org $3000
- Name:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement