Code:
Strings CON EXT
i VAR BYTE
Char VAR BYTE
StringNumber VAR BYTE
StartAddress VAR WORD
Goto OverStrings
ASM
Strings
; Strings, fixed length, 20 characters including null terminator.
; Actual string terminatesends with a NULL and is then padded to exactly 20 chars.
db "Set Year", 0, " " ; 0
db "Set Month", 0, " " ; 1
db "Set Date", 0, " " ; 2
db "Set day of week", 0, " " ; 3
db "Set Hour", 0, " " ; 4
db "Set Minute", 0, " " ; 5
db "Set alarm mode", 0, " " ; 6
db "Off", 0, " " ; 7
db "On all week", 0, " " ; 8
db "On without weekends", 0, "" ; 9
db "Set alarm hours", 0, " " ; 10
db "Set alarm minutes", 0, " " ; 11
db "Set display format", 0, " " ; 12
db "Imperial (12Hr/F)", 0, " " ; 13
db "Metric (24Hr/C)", 0, " " ; 14
db "Display brightness", 0, " " ; 15
db "Auto", 0, " " ; 16
db "25%", 0, " " ; 17
db "50%", 0, " " ; 18
db "75%", 0, " " ; 19
db "100%", 0, " " ; 20
ENDASM
OverStrings:
Init:
ANSELF = 0
WPUF.1 = 0
TRISF.3 = 0
TRISF.0 = 0
TRISF.1 = 1
Start:
HSEROUT["Program start",13]
HSEROUT["Address of first string: $", HEX4 Strings, 13]
Action:
StringNumber = 20 ' Select which string to print
GOSUB PrintString ' And, you guessed it, go print it.
PAUSE 100
END
PrintString:
StartAddress = Strings + (StringNumber * 20) ' Precalculate address of first char of string in question
For i = 0 to 19 ' Maximum string length is 20 characters
ReadCode (StartAddress + i), Char ' Get a char from string in question.
IF (Char = 0) THEN EXIT ' Break out if char is NULL
HSEROUT[Char] ' Otherwise print it.
NEXT
RETURN
/Henrik.
Bookmarks