Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;6677's Funky Text Editor
- ;clear function
- :clear
- SET [0x8000+A], 0
- ADD A, 1
- IFG A, 0x200
- SET PC, POP
- SET PC, clear
- :textedit
- SET PUSH, A
- SET PUSH, B
- ;Registers A and B can come out to play today, YAY.
- ;Done for embedding purposes (such as os'es)
- ;Clear screen first (replace clear with OS clear function if possible)
- JSR clear
- SET [0x8000], 0xF0DF
- SET B, 0
- :textedit_loop
- SET A, [0x9000]
- ;check key pressed
- IFE A, 0x0
- SET PC, textedit_loop
- IFE A, 0x1B
- ;Escape key pressed, quit loop
- SET PC, textedit_exit
- IFE A, 0xA
- ;Enter key pressed, move down a row
- SET PC, textedit_newline
- IFE A, 8
- ;Backspace pressed
- SET PC, textedit_backspace
- IFE A, 1
- SET PC, textedit_left
- IFE A, 2
- SET PC, textedit_right
- IFE A, 3
- SET PC, textedit_up
- IFE A, 4
- SET PC, textedit_down
- ADD A, 0xF000
- SET [0x8000 + B], A
- SET [0x9000], 0x0
- ADD B, 1
- SET [0x8000 + B], 0xF0DF
- SET PC, textedit_loop
- :textedit_newline
- SET [0x8000 + B], 0x0
- SHR B, 5
- SHL B, 5
- ADD B, 32
- SET [0x8000 + B], 0xF0DF
- SET [0x9000], 0x0
- SET PC, textedit_loop
- :textedit_backspace
- SET [0x8000 + B], 0x0
- SUB B, 1
- SET [0x8000 + B], 0xF0DF
- SET [0x9000], 0x0
- SET PC, textedit_loop
- ;implement in a future update maybe
- :textedit_down
- SET [0x9000], 0x0
- SET PC, textedit_loop
- :textedit_up
- SET [0x9000], 0x0
- SET PC, textedit_loop
- :textedit_left
- SET [0x9000], 0x0
- SET PC, textedit_loop
- :textedit_right
- SET [0x9000], 0x0
- SET PC, textedit_loop
- :textedit_exit
- SET POP, B
- SET POP, A
- ;The registers had to go home ):
- :textedit_end
- ;point to allow os'es to skip this program
Advertisement
Add Comment
Please, Sign In to add comment