... | ... |
@@ -77,6 +77,30 @@ external .xStringGetCursorX: |
77 | 77 |
ldr *xStringCursorX, A |
78 | 78 |
ret |
79 | 79 |
|
80 |
+; Arguments: |
|
81 |
+; A - row |
|
82 |
+; No return |
|
83 |
+external .xStringSetCursorY: |
|
84 |
+ push X |
|
85 |
+ push Y |
|
86 |
+ ; Write new row position to set |
|
87 |
+ mov A, Y |
|
88 |
+ ; Read current column position to set |
|
89 |
+ ldr *xStringCursorX, X |
|
90 |
+ ; Set new row position and leave column position |
|
91 |
+ call .xStringSetCursor |
|
92 |
+ pop Y |
|
93 |
+ pop X |
|
94 |
+ ret |
|
95 |
+ |
|
96 |
+; No arguments |
|
97 |
+; Return: |
|
98 |
+; A - row |
|
99 |
+external .xStringGetCursorY: |
|
100 |
+ ; Get current row position |
|
101 |
+ ldr *xStringCursorY, A |
|
102 |
+ ret |
|
103 |
+ |
|
80 | 104 |
; No arguments |
81 | 105 |
; No return |
82 | 106 |
external .xStringNewLine: |
... | ... |
@@ -125,9 +125,14 @@ const messageFreeRam "28K Data memory free" |
125 | 125 |
.xTerminalGetCommand: |
126 | 126 |
; Reset color |
127 | 127 |
call .xTerminalColorReset |
128 |
- ; Show command line |
|
128 |
+ ; Do not make a new line if the cursor is at beginning |
|
129 |
+ call .xStringGetCursorY |
|
130 |
+ cmp 0, A |
|
131 |
+ je .xTerminalGetCommand_no_newLine |
|
129 | 132 |
call .xStringNewLine |
130 | 133 |
call .xStringNewLine |
134 |
+.xTerminalGetCommand_no_newLine: |
|
135 |
+ ; Show command line |
|
131 | 136 |
mov '>', A |
132 | 137 |
call .xStringPrintChar |
133 | 138 |
call .xLcdRefresh |