RosettaCodeData/Task/Terminal-control-Cursor-movement/XPL0/terminal-control-cursor-movement.xpl0
2023-07-01 13:44:08 -04:00

25 lines
977 B
Text

include c:\cxpl\codes; \intrinsic 'code' declarations
int I, X, Y, W, H;
[Cursor(10, 13); \set cursor to arbitrary location on screen
I:= ChIn(1); \wait for keystroke (no echo to display)
ChOut(0, $08\BS\); \backspace moves one position right
I:= ChIn(1);
X:= Peek($40, $50); \get cursor location from BIOS data
Y:= Peek($40, $51);
Cursor(X+1, Y); \move one position right
I:= ChIn(1);
Cursor(X+1, Y-1); \move up one line
I:= ChIn(1);
ChOut(0, $0A\LF\); \line feed moves down one line
I:= ChIn(1);
ChOut(0, $0D\CR\); \carriage return moves to beginning of current line
I:= ChIn(1);
W:= Peek($40, $4A); \get width of display (standard = 80; mine = 94)
Cursor(W-1, Y); \move to end of current line
I:= ChIn(1);
Cursor(0, 0); \move to top left corner
I:= ChIn(1);
H:= Peek($40, $84) + 1; \get height of display (standard = 25; mine = 50)
Cursor(W-1, H-1); \move to bottom right corner
I:= ChIn(1);
]