about summary refs log tree commit diff stats
path: root/cpp/070console
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-04-20 17:35:32 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-04-20 17:35:32 -0700
commit12d73ee8db0f6748fabf65f4d0789c79f76c8d1f (patch)
tree3a31fa1c5eb98584a71af8a5e442e277ccf21e94 /cpp/070console
parentf08a13e1f709c69375202e8ecafb337a24abed45 (diff)
downloadmu-12d73ee8db0f6748fabf65f4d0789c79f76c8d1f.tar.gz
1114 - more primitives for managing the cursor
Diffstat (limited to 'cpp/070console')
-rw-r--r--cpp/070console64
1 files changed, 64 insertions, 0 deletions
diff --git a/cpp/070console b/cpp/070console
index c8a51f9d..dcb6da96 100644
--- a/cpp/070console
+++ b/cpp/070console
@@ -3,6 +3,8 @@
 :(before "End Includes")
 #include<ncurses.h>
 
+//:: Display management
+
 :(before "End Primitive Recipe Declarations")
 CURSOR_MODE,
 :(before "End Primitive Recipe Numbers")
@@ -24,6 +26,68 @@ case RETRO_MODE: {
 }
 
 :(before "End Primitive Recipe Declarations")
+CLEAR_DISPLAY,
+:(before "End Primitive Recipe Numbers")
+Recipe_number["clear-display"] = CLEAR_DISPLAY;
+:(before "End Primitive Recipe Implementations")
+case CLEAR_DISPLAY: {
+  clear();
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+CLEAR_LINE_ON_DISPLAY,
+:(before "End Primitive Recipe Numbers")
+Recipe_number["clear-line-on-display"] = CLEAR_LINE_ON_DISPLAY;
+:(before "End Primitive Recipe Implementations")
+case CLEAR_LINE_ON_DISPLAY: {
+  clrtoeol();
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+PRINT_CHARACTER_TO_DISPLAY,
+:(before "End Primitive Recipe Numbers")
+Recipe_number["print-character-to-display"] = PRINT_CHARACTER_TO_DISPLAY;
+:(before "End Primitive Recipe Implementations")
+case PRINT_CHARACTER_TO_DISPLAY: {
+  vector<int> arg = read_memory(instructions[pc].ingredients[0]);
+  addch(arg[0]);
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+CURSOR_POSITION_ON_DISPLAY,
+:(before "End Primitive Recipe Numbers")
+Recipe_number["cursor-position-on-display"] = CURSOR_POSITION_ON_DISPLAY;
+:(before "End Primitive Recipe Implementations")
+case CURSOR_POSITION_ON_DISPLAY: {
+  size_t cursor_row = 0, cursor_column = 0;
+  getyx(stdscr, cursor_row, cursor_column);
+  vector<int> row;
+  row.push_back(cursor_row);
+  write_memory(instructions[pc].products[0], row);
+  vector<int> column;
+  column.push_back(cursor_column);
+  write_memory(instructions[pc].products[1], column);
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+MOVE_CURSOR_ON_DISPLAY,
+:(before "End Primitive Recipe Numbers")
+Recipe_number["move-cursor-on-display"] = MOVE_CURSOR_ON_DISPLAY;
+:(before "End Primitive Recipe Implementations")
+case MOVE_CURSOR_ON_DISPLAY: {
+  vector<int> row = read_memory(instructions[pc].ingredients[0]);
+  vector<int> column = read_memory(instructions[pc].ingredients[1]);
+  move(row[0], column[0]);
+  break;
+}
+
+//:: Keyboard management
+
+:(before "End Primitive Recipe Declarations")
 WAIT_FOR_KEY_FROM_KEYBOARD,
 :(before "End Primitive Recipe Numbers")
 Recipe_number["wait-for-key-from-keyboard"] = WAIT_FOR_KEY_FROM_KEYBOARD;
c9b0c99894a4294cec004361fe'>^
3120f938 ^


78357b88 ^
3120f938 ^




























78357b88 ^
3120f938 ^
5a3f9a31 ^
3120f938 ^

78357b88 ^
3120f938 ^
a8fb537a ^
3120f938 ^
a8fb537a ^
3120f938 ^




78357b88 ^
3120f938 ^

372367f5 ^
dd60caa3 ^
78357b88 ^
3120f938 ^







372367f5 ^
dd60caa3 ^
78357b88 ^
3120f938 ^

dd60caa3 ^
78357b88 ^
3120f938 ^

372367f5 ^
78357b88 ^
3120f938 ^







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105