Data Input Form

In this blog post, I will describing how we will be using ROM routines to create a Data Input Form where we will display a message, have a user input their name and address, and take user input and display it onto the character display.

; ROM routines
define      SCINIT      $ff81 ; initialize/clear screen
define      CHRIN       $ffcf ; input character from keyboard
define      CHROUT      $ffd2 ; output character to screen
define      SCREEN      $ffed ; get screen size
define      PLOT        $fff0 ; get/set cursor coordinates

	jsr SCINIT
        ldy #$00
 
char:   lda message,y
        beq cursorPos
        jsr CHROUT
        iny
        bne char

cursorPos:		;set cursor position
	clc		;clear carry for PLOT
	ldy #$02	;set coordinate Y
	ldx #$03	;set coordinate X
	jsr PLOT	;call PLOT
	ldy #$00
input:
	jsr CHRIN
	bne display
	jmp idle

display:
	jsr CHROUT
	iny
	jmp input
   
backspace:
	dey
	jmp input

idle:     
        lda $f0a3,y
        eor #$80
        sta $f0a3,y
	lda $ff
	jmp input

brk ;in case program runs passed, it does not nuke the code by going into the dcb

message:
dcb "Y","o","u","r",32,"o","r","d","e","r",32,"w","i","l","l",32
dcb "b","e",32,"d","e","l","i","v","e","r","e","d",32,"t","o",":",$0d,$0d

The above code, we were able to produce a message and set a cursor position to where we can begin to type our characters.

Things to Implement to Complete Source Code

There are a couple of things still needed to implement before this source code is complete.
1) Backspace – Decrement the value loaded in the Y register to move the cursor position back each time backspace is pressed on the keyboard. We do this by using comparing $ff with the value #$08
2) Space bar – In the code above, when we press the space bar, the code ends. We need spaces in our character input and output
3) Enter – Load cursor to next line by using adc and adding #$32 to current position of cursor.
4) Arrow keys – We want the user to be able to move to a desired location and fix a misspelling or add a word to current cursor position.

Published by Danny Nguyen

I am a curious person. I find interest in all aspects of software development cycle, software stacks, and how the same software is used in different industries in different ways

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website with WordPress.com
Get started
<span>%d</span> bloggers like this: