Browse code

Removed supervisor

neauoire authored on 13/01/2022 02:40:51
Showing 11 changed files
1 1
deleted file mode 100644
... ...
@@ -1,6 +0,0 @@
1
-# TODOs
2
-
3
-- Emulation controls should be handled by the supervisor.
4
-- Overlap the supervisor device page with the core device page.
5
-- The boot rom should display "no roms" when the list is empty.
6
-- 
... ...
@@ -36,7 +36,6 @@ echo "Cleaning.."
36 36
 rm -f ./bin/uxnasm
37 37
 rm -f ./bin/uxnemu
38 38
 rm -f ./bin/uxncli
39
-rm -f ./bin/supervisor.rom
40 39
 rm -f ./bin/launcher.rom
41 40
 rm -f ./bin/asma.rom
42 41
 
... ...
@@ -108,8 +107,6 @@ then
108 107
 	cp bin/uxnemu bin/uxnasm bin/uxncli $HOME/bin/
109 108
 fi
110 109
 
111
-echo "Assembling(supervisor).."
112
-./bin/uxnasm projects/software/supervisor.tal bin/supervisor.rom
113 110
 echo "Assembling(launcher).."
114 111
 ./bin/uxnasm projects/software/launcher.tal bin/launcher.rom
115 112
 echo "Assembling(asma).."
116 113
deleted file mode 100644
... ...
@@ -1,314 +0,0 @@
1
-( launcher )
2
-
3
-%+  { ADD } %-   { SUB }  %*  { MUL }  %/  { DIV }
4
-%<  { LTH } %>   { GTH }  %=  { EQU }  %!  { NEQ }
5
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
6
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
7
-
8
-%AUTO-X      { #01 .Screen/auto DEO }
9
-%AUTO-Y      { #02 .Screen/auto DEO }
10
-%AUTO-YADDR  { #06 .Screen/auto DEO }
11
-
12
-%HALT   { #010f DEO }
13
-%EMIT   { #18 DEO }
14
-%PRINT  { ;print-str JSR2 #0a EMIT }
15
-%DEBUG  { ;print-hex/byte JSR2 #0a EMIT }
16
-%DEBUG2 { ;print-hex JSR2 #0a EMIT }
17
-
18
-%MODALW { #0024 }
19
-%MODALH { #0009 }
20
-
21
-%RTN { JMP2r }
22
-%2//  { #01 SFT2 }
23
-%8**  { #30 SFT2 }
24
-
25
-%SYS_EADDR { #fd04 }
26
-%SYS_ECODE { #fd06 }
27
-%SYS_DEBUG { #fd0e }
28
-%WST { #fe00 }
29
-%RST { #ff00 }
30
-
31
-( devices )
32
-
33
-|00 @System     &vector $2 &wst      $1 &rst    $1 &eaddr  $2 &ecode  $1 &pad     $1 &r       $2 &g      $2 &b     $2 &debug  $1 &halt $1
34
-|20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad $1 &x      $2 &y      $2 &addr $2 &pixel $1 &sprite $1
35
-|80 @Controller &vector $2 &button   $1 &key    $1 &func   $1
36
-
37
-( variables )
38
-
39
-|0000
40
-
41
-@center
42
-	&x $2 &y $2
43
-@modal
44
-	&x $2 &y $2
45
-
46
-( init )
47
-
48
-|0100 ( -> )
49
-	
50
-	.Screen/width DEI2 2// 
51
-		DUP2 .center/x STZ2
52
-		MODALW #31 SFT2 -- .modal/x STZ2
53
-	.Screen/height DEI2 2// 
54
-		DUP2 .center/y STZ2
55
-		MODALH #31 SFT2 -- .modal/y STZ2
56
-
57
-	( vectors )
58
-	;on-error .System/vector DEO2
59
-	;on-frame .Screen/vector DEO2
60
-	;on-button .Controller/vector DEO2
61
-
62
-	( print initial memory )
63
-	SYS_DEBUG LDA #00 = ,&no-debug JCN
64
-		;print-stacks JSR2
65
-		&no-debug
66
-
67
-BRK
68
-
69
-@on-frame ( -> )
70
-
71
-	;draw-cross JSR2
72
-	;draw-stacks JSR2
73
-
74
-BRK
75
-
76
-@on-button ( -> )
77
-
78
-	.Controller/func DEI DUP DEBUG
79
-	DUP #02 ! ,&no-f2 JCN
80
-		;toggle-debugger JSR2
81
-		&no-f2
82
-	DUP #08 ! ,&no-f4 JCN
83
-		;reboot JSR2
84
-		&no-f4
85
-	POP
86
-
87
-BRK
88
-
89
-@on-error ( -> )
90
-
91
-	( background )
92
-	#00 .Screen/auto DEO
93
-	;bg-icn .Screen/addr DEO2
94
-	MODALH #0000
95
-	&ver
96
-		DUP2 8** .modal/y LDZ2 ++ .Screen/y DEO2
97
-		MODALW #0000
98
-		&hor
99
-			DUP2 8** .modal/x LDZ2 ++ .Screen/x DEO2
100
-			#42 .Screen/sprite DEO
101
-			INC2 GTH2k ,&hor JCN
102
-		POP2 POP2
103
-		INC2 GTH2k ,&ver JCN
104
-	POP2 POP2
105
-
106
-	( corners )
107
-	;corner-icn .Screen/addr DEO2
108
-	.modal/x LDZ2 .Screen/x DEO2
109
-	.modal/y LDZ2 .Screen/y DEO2
110
-	#42 .Screen/sprite DEO
111
-	.modal/x LDZ2 MODALW #0001 -- 8** ++ .Screen/x DEO2
112
-	#52 .Screen/sprite DEO
113
-
114
-	.modal/y LDZ2 MODALH #0001 -- 8** ++ .Screen/y DEO2
115
-	#72 .Screen/sprite DEO
116
-
117
-	.modal/x LDZ2 .Screen/x DEO2
118
-	#62 .Screen/sprite DEO
119
-
120
-	( text )
121
-	.modal/x LDZ2 #0010 ++ .Screen/x DEO2
122
-	.modal/y LDZ2 #0010 ++ .Screen/y DEO2
123
-	;error-txts/0 #4f ;draw-str JSR2
124
-
125
-	;at-txt #4f ;draw-str JSR2
126
-
127
-	SYS_EADDR LDA2 #47 ;draw-short JSR2
128
-
129
-	#0000 SYS_EADDR STA2
130
-
131
-BRK
132
-
133
-@toggle-debugger ( -- )
134
-
135
-	( toggle debug ) 
136
-	( #fd0e STH2k LDA #00 = STH2r STA )
137
-
138
-RTN
139
-
140
-@reboot ( -- )
141
-
142
-	( clear devices/stacks )
143
-	#fd00 #0300 ;mclr JSR2
144
-
145
-	( load rom )
146
-
147
-RTN
148
-	&boot-path "launcher.rom $1
149
-
150
-@draw-stacks ( -- )
151
-
152
-	AUTO-YADDR
153
-	#0010 #0000 
154
-	&wst
155
-		( working stack )
156
-		#0010 .Screen/y DEO2
157
-		DUP2 #0018 ** #0010 ++ .Screen/x DEO2
158
-		DUP #fe00 LDA ( ptr ) EQU #41 + STH
159
-		DUP2 #fe01 ++ LDA STHr ;draw-byte JSR2
160
-		( return stack )
161
-		#0028 .Screen/y DEO2
162
-		DUP2 #0018 ** #0010 ++ .Screen/x DEO2
163
-		DUP #ff00 LDA ( ptr ) EQU #41 + STH
164
-		DUP2 #ff01 ++ LDA STHr ;draw-byte JSR2
165
-		INC2 GTH2k ,&wst JCN
166
-	POP2 POP2
167
-
168
-RTN
169
-
170
-@draw-cross ( -- )
171
-
172
-	( ver )
173
-	AUTO-Y
174
-	#0000 .Screen/y DEO2
175
-	.center/x LDZ2 .Screen/x DEO2
176
-	.Screen/height DEI2 #0000
177
-	&ver
178
-		#43 .Screen/pixel DEO
179
-		.Screen/y DEI2k INC2 ROT DEO2
180
-		INC2 GTH2k ,&ver JCN
181
-	POP2 POP2
182
-
183
-	( hor )
184
-	AUTO-X
185
-	#0000 .Screen/x DEO2
186
-	.center/y LDZ2 .Screen/y DEO2
187
-	.Screen/width DEI2 #0000
188
-	&hor
189
-		#43 .Screen/pixel DEO
190
-		.Screen/x DEI2k INC2 ROT DEO2
191
-		INC2 GTH2k ,&hor JCN
192
-	POP2 POP2
193
-
194
-RTN
195
-
196
-@draw-str ( text* color -- )
197
-
198
-	AUTO-YADDR
199
-	STH
200
-	&while
201
-		LDAk STHkr ,draw-char JSR
202
-		INC2 LDAk ,&while JCN
203
-	POP2
204
-	POPr
205
-
206
-RTN
207
-
208
-@draw-short ( short* color -- )
209
-
210
-	STH SWP STHkr ,draw-byte JSR
211
-	STHr ,draw-byte JSR
212
-
213
-RTN
214
-
215
-@draw-byte ( byte color -- )
216
-
217
-	STH
218
-	DUP #04 SFT ,&parse JSR STHkr ,draw-char JSR
219
-	#0f AND ,&parse JSR STHr ,draw-char JSR
220
-
221
-RTN
222
-	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r 
223
-	&above #57 ADD JMP2r
224
-
225
-@draw-char ( char color -- )
226
-
227
-	SWP
228
-	[ #20 - #00 SWP #40 SFT2 ;font ++ ] .Screen/addr DEO2
229
-	.Screen/sprite DEOk DEO
230
-	.Screen/x DEI2k #0008 ++ ROT DEO2
231
-	.Screen/y DEI2k #0010 -- ROT DEO2
232
-
233
-JMP2r
234
-
235
-@mclr ( addr* len* -- )
236
-
237
-	OVR2 ++ SWP2
238
-	&loop
239
-		STH2k #00 STH2r STA
240
-		INC2 GTH2k ,&loop JCN
241
-	POP2 POP2
242
-
243
-JMP2r
244
-
245
-@print-stacks ( -- )
246
-
247
-	#0a EMIT
248
-	WST ;&wst-txt ,print-stack JSR
249
-	RST ;&rst-txt ,print-stack JSR
250
-
251
-RTN
252
-	&wst-txt "Working-stack $1
253
-	&rst-txt "Return-stack $1
254
-
255
-@print-stack ( addr* name* -- )
256
-
257
-	PRINT
258
-	( keep ptr ) LDAk STH
259
-	( keep counter ) LITr 00
260
-	( skip ptr ) INC2 
261
-	DUP2 #0020 ++ SWP2
262
-	&loop
263
-		( print cell )
264
-		EQUkr STHr #3b * #20 + EMIT
265
-		LDAk ;print-hex/byte JSR2
266
-		EQUkr STHr #3d * #20 + EMIT
267
-		( break into columns )
268
-		SUB2k #0001 -- #0007 AND2 #0000 !! ,&no-lb JCN
269
-			#0a EMIT 
270
-			&no-lb
271
-		INCr
272
-		INC2 GTH2k ,&loop JCN
273
-	POP2 POP2
274
-	POP2r
275
-
276
-RTN
277
-
278
-@print-hex ( value* -- )
279
-
280
-	SWP ,&byte JSR 
281
-	&byte ( byte -- )
282
-		STHk #04 SFT ,&parse JSR #18 DEO
283
-		STHr #0f AND ,&parse JSR #18 DEO
284
-	JMP2r
285
-	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r 
286
-	&above #57 ADD JMP2r
287
-
288
-JMP2r
289
-
290
-@print-str ( string* -- )
291
-
292
-	#0001 SUB2 
293
-	&while
294
-		INC2 LDAk DUP #18 DEO ,&while JCN 
295
-	POP2
296
-
297
-JMP2r
298
-
299
-@error-txts
300
-	&0 "Working-stack 20 "underflow $1
301
-	&1 "Return-stack 20 "underflow $1
302
-	&2 "Working-stack 20 "overflow $1
303
-	&3 "Return-stack 20 "overflow $1
304
-	&4 "Working-stack 20 "division 20 "by 20 "zero $1
305
-	&5 "Return-stack 20 "division 20 "by 20 "zero $1
306
-@at-txt
307
-	', 20 "at 20 $1
308
-
309
-@bg-icn
310
-	ffff ffff ffff ffff
311
-@corner-icn
312
-	1f7f 7fff ffff ffff
313
-
314
-~projects/assets/msx01x02.tal
315 0
\ No newline at end of file
... ...
@@ -150,7 +150,7 @@ file_deo(Device *d, Uint8 port)
150 150
 	case 0x5:
151 151
 		DEVPEEK16(a, 0x4);
152 152
 		DEVPEEK16(b, 0xa);
153
-		res = file_stat(&bank1[a], b);
153
+		res = file_stat(&bank0[a], b);
154 154
 		DEVPOKE16(0x2, res);
155 155
 		break;
156 156
 	case 0x6:
... ...
@@ -159,19 +159,19 @@ file_deo(Device *d, Uint8 port)
159 159
 		break;
160 160
 	case 0x9:
161 161
 		DEVPEEK16(a, 0x8);
162
-		res = file_init(&bank1[a]);
162
+		res = file_init(&bank0[a]);
163 163
 		DEVPOKE16(0x2, res);
164 164
 		break;
165 165
 	case 0xd:
166 166
 		DEVPEEK16(a, 0xc);
167 167
 		DEVPEEK16(b, 0xa);
168
-		res = file_read(&bank1[a], b);
168
+		res = file_read(&bank0[a], b);
169 169
 		DEVPOKE16(0x2, res);
170 170
 		break;
171 171
 	case 0xf:
172 172
 		DEVPEEK16(a, 0xe);
173 173
 		DEVPEEK16(b, 0xa);
174
-		res = file_write(&bank1[a], b, d->dat[0x7]);
174
+		res = file_write(&bank0[a], b, d->dat[0x7]);
175 175
 		DEVPOKE16(0x2, res);
176 176
 		break;
177 177
 	}
... ...
@@ -12,4 +12,4 @@ WITH REGARD TO THIS SOFTWARE.
12 12
 
13 13
 void file_deo(Device *d, Uint8 port);
14 14
 
15
-extern Uint8 *bank1;
16 15
\ No newline at end of file
16
+extern Uint8 *bank0;
17 17
\ No newline at end of file
... ...
@@ -14,8 +14,6 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14 14
 WITH REGARD TO THIS SOFTWARE.
15 15
 */
16 16
 
17
-Uxn supervisor;
18
-
19 17
 static const char *errors[] = {
20 18
 	"Working-stack underflow",
21 19
 	"Return-stack underflow",
... ...
@@ -31,7 +29,6 @@ uxn_halt(Uxn *u, Uint8 error, Uint16 addr)
31 29
 	Uint16 vec = GETVECTOR(d);
32 30
 	DEVPOKE16(0x4, addr);
33 31
 	d->dat[0x6] = error;
34
-	uxn_eval(&supervisor, GETVECTOR(&supervisor.dev[0]));
35 32
 	if(vec) {
36 33
 		/* need to rearm to run System/vector again */
37 34
 		d->dat[0] = 0;
... ...
@@ -50,8 +47,8 @@ Uint8
50 47
 system_dei(Device *d, Uint8 port)
51 48
 {
52 49
 	switch(port) {
53
-	case 0x2: return d->u->wst->ptr;
54
-	case 0x3: return d->u->rst->ptr;
50
+	case 0x2: return d->u->wst.ptr;
51
+	case 0x3: return d->u->rst.ptr;
55 52
 	default: return d->dat[port];
56 53
 	}
57 54
 }
... ...
@@ -60,8 +57,8 @@ void
60 57
 system_deo(Device *d, Uint8 port)
61 58
 {
62 59
 	switch(port) {
63
-	case 0x2: d->u->wst->ptr = d->dat[port]; break;
64
-	case 0x3: d->u->rst->ptr = d->dat[port]; break;
60
+	case 0x2: d->u->wst.ptr = d->dat[port]; break;
61
+	case 0x3: d->u->rst.ptr = d->dat[port]; break;
65 62
 	default: system_deo_special(d, port);
66 63
 	}
67 64
 }
... ...
@@ -12,5 +12,3 @@ WITH REGARD TO THIS SOFTWARE.
12 12
 Uint8 system_dei(Device *d, Uint8 port);
13 13
 void system_deo(Device *d, Uint8 port);
14 14
 void system_deo_special(Device *d, Uint8 port);
15
-
16
-extern Uxn supervisor;
... ...
@@ -39,13 +39,13 @@ uxn_eval(Uxn *u, Uint16 pc)
39 39
 	Stack *src, *dst;
40 40
 	Device *dev;
41 41
 	if(!pc || u->dev[0].dat[0xf]) return 0;
42
-	if(u->wst->ptr > 0xf8) u->wst->ptr = 0xf8;
42
+	if(u->wst.ptr > 0xf8) u->wst.ptr = 0xf8;
43 43
 	while((instr = u->ram[pc++])) {
44 44
 		/* Return Mode */
45 45
 		if(instr & 0x40) {
46
-			src = u->rst; dst = u->wst;
46
+			src = &u->rst; dst = &u->wst;
47 47
 		} else {
48
-			src = u->wst; dst = u->rst;
48
+			src = &u->wst; dst = &u->rst;
49 49
 		}
50 50
 		/* Keep Mode */
51 51
 		if(instr & 0x80) {
... ...
@@ -112,16 +112,13 @@ err:
112 112
 /* clang-format on */
113 113
 
114 114
 int
115
-uxn_boot(Uxn *u, Uint8 *ram, Uint8 *devices, Stack *wst, Stack *rst)
115
+uxn_boot(Uxn *u, Uint8 *ram)
116 116
 {
117 117
 	Uint32 i;
118 118
 	char *cptr = (char *)u;
119 119
 	for(i = 0; i < sizeof(*u); i++)
120 120
 		cptr[i] = 0x00;
121 121
 	u->ram = ram;
122
-	u->devices = devices;
123
-	u->wst = wst;
124
-	u->rst = rst;
125 122
 	return 1;
126 123
 }
127 124
 
... ...
@@ -130,7 +127,6 @@ uxn_port(Uxn *u, Uint8 id, Uint8 (*deifn)(Device *d, Uint8 port), void (*deofn)(
130 127
 {
131 128
 	Device *d = &u->dev[id];
132 129
 	d->u = u;
133
-	d->dat = u->devices + id * 0x10;
134 130
 	d->dei = deifn;
135 131
 	d->deo = deofn;
136 132
 	return d;
... ...
@@ -37,18 +37,18 @@ typedef struct {
37 37
 
38 38
 typedef struct Device {
39 39
 	struct Uxn *u;
40
-	Uint8 *dat, *mem;
40
+	Uint8 dat[16], *mem;
41 41
 	Uint8 (*dei)(struct Device *d, Uint8);
42 42
 	void (*deo)(struct Device *d, Uint8);
43 43
 } Device;
44 44
 
45 45
 typedef struct Uxn {
46
-	Uint8 *ram, *devices;
47
-	Stack *wst, *rst;
46
+	Uint8 *ram;
47
+	Stack wst, rst;
48 48
 	Device dev[16];
49 49
 } Uxn;
50 50
 
51
-int uxn_boot(Uxn *u, Uint8 *ram, Uint8 *devices, Stack *wst, Stack *rst);
51
+int uxn_boot(Uxn *u, Uint8 *ram);
52 52
 int uxn_eval(Uxn *u, Uint16 pc);
53 53
 int uxn_halt(Uxn *u, Uint8 error, Uint16 addr);
54 54
 int uxn_interrupt(Uxn *u);
... ...
@@ -3,7 +3,7 @@
3 3
 
4 4
 #include "uxn.h"
5 5
 
6
-Uint8 *bank0, *bank1;
6
+Uint8 *bank0;
7 7
 
8 8
 #include "devices/system.h"
9 9
 #include "devices/file.h"
... ...
@@ -23,6 +23,7 @@ WITH REGARD TO THIS SOFTWARE.
23 23
 int
24 24
 uxn_interrupt(Uxn *u)
25 25
 {
26
+	(void)u;
26 27
 	return 0;
27 28
 }
28 29
 
... ...
@@ -53,8 +54,8 @@ void
53 54
 system_deo_special(Device *d, Uint8 port)
54 55
 {
55 56
 	if(port == 0xe) {
56
-		inspect(d->u->wst, "Working-stack");
57
-		inspect(d->u->rst, "Return-stack");
57
+		inspect(&d->u->wst, "Working-stack");
58
+		inspect(&d->u->rst, "Return-stack");
58 59
 	}
59 60
 }
60 61
 
... ...
@@ -118,8 +119,7 @@ static int
118 119
 start(Uxn *u)
119 120
 {
120 121
 	bank0 = (Uint8 *)calloc(0x10000, sizeof(Uint8));
121
-	bank1 = (Uint8 *)calloc(0x10000, sizeof(Uint8));
122
-	if(!uxn_boot(u, bank1, bank0 + PAGE_DEV, (Stack *)(bank0 + PAGE_WST), (Stack *)(bank0 + PAGE_RST)))
122
+	if(!uxn_boot(u, bank0))
123 123
 		return error("Boot", "Failed");
124 124
 	/* system   */ uxn_port(u, 0x0, system_dei, system_deo);
125 125
 	/* console  */ uxn_port(u, 0x1, nil_dei, console_deo);
... ...
@@ -3,7 +3,7 @@
3 3
 
4 4
 #include "uxn.h"
5 5
 
6
-Uint8 *bank0, *bank1;
6
+Uint8 *bank0;
7 7
 
8 8
 #pragma GCC diagnostic push
9 9
 #pragma clang diagnostic push
... ...
@@ -87,6 +87,7 @@ audio_finished_handler(UxnAudio *c)
87 87
 int
88 88
 uxn_interrupt(Uxn *u)
89 89
 {
90
+	(void)u;
90 91
 	return 0;
91 92
 }
92 93
 
... ...
@@ -261,10 +262,9 @@ load(Uxn *u, char *rom)
261 262
 static int
262 263
 start(Uxn *u, char *rom)
263 264
 {
264
-	bank1 = (Uint8 *)calloc(0x10000, sizeof(Uint8));
265 265
 	bank0 = (Uint8 *)calloc(0x10000, sizeof(Uint8));
266 266
 
267
-	if(!uxn_boot(u, bank1, bank0 + PAGE_DEV, (Stack *)(bank0 + PAGE_WST), (Stack *)(bank0 + PAGE_RST)))
267
+	if(!uxn_boot(u, bank0))
268 268
 		return error("Boot", "Failed to start uxn.");
269 269
 	if(!load(u, rom))
270 270
 		return error("Boot", "Failed to load rom.");
... ...
@@ -285,21 +285,9 @@ start(Uxn *u, char *rom)
285 285
 	/* unused   */ uxn_port(u, 0xe, nil_dei, nil_deo);
286 286
 	/* unused   */ uxn_port(u, 0xf, nil_dei, nil_deo);
287 287
 
288
-	/* Supervisor */
289
-	if(!uxn_boot(&supervisor, bank0, bank0 + VISOR_DEV, (Stack *)(bank0 + VISOR_WST), (Stack *)(bank0 + VISOR_RST)))
290
-		return error("Boot", "Failed to start uxn.");
291
-	if(!load(&supervisor, "supervisor.rom"))
292
-		error("Supervisor", "No debugger found.");
293
-	/* system   */ uxn_port(&supervisor, 0x0, system_dei, system_deo);
294
-	/* console  */ uxn_port(&supervisor, 0x1, nil_dei, console_deo);
295
-	/* screen   */ uxn_port(&supervisor, 0x2, screen_dei, screen_deo);
296
-	/* control  */ uxn_port(&supervisor, 0x8, nil_dei, nil_deo);
297
-
298 288
 	if(!uxn_eval(u, PAGE_PROGRAM))
299 289
 		return error("Boot", "Failed to start rom.");
300 290
 
301
-	uxn_eval(&supervisor, PAGE_PROGRAM);
302
-
303 291
 	return 1;
304 292
 }
305 293
 
... ...
@@ -357,22 +345,6 @@ get_button(SDL_Event *event)
357 345
 	return 0x00;
358 346
 }
359 347
 
360
-static Uint8
361
-get_fkey(SDL_Event *event)
362
-{
363
-	switch(event->key.keysym.sym) {
364
-	case SDLK_F1: return 0x01;
365
-	case SDLK_F2: return 0x02;
366
-	case SDLK_F3: return 0x04;
367
-	case SDLK_F4: return 0x08;
368
-	case SDLK_F5: return 0x10;
369
-	case SDLK_F6: return 0x20;
370
-	case SDLK_F7: return 0x40;
371
-	case SDLK_F8: return 0x80;
372
-	}
373
-	return 0x00;
374
-}
375
-
376 348
 static Uint8
377 349
 get_button_joystick(SDL_Event *event)
378 350
 {
... ...
@@ -468,9 +440,6 @@ run(Uxn *u)
468 440
 					controller_down(devctrl, get_button(&event));
469 441
 				else
470 442
 					do_shortcut(u, &event);
471
-				/* function keys are sent to supervisor */
472
-				if(get_fkey(&event))
473
-					controller_special(&supervisor.dev[0x8], get_fkey(&event));
474 443
 				ksym = event.key.keysym.sym;
475 444
 				if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYUP, SDL_KEYUP) == 1 && ksym == event.key.keysym.sym)
476 445
 					break;
... ...
@@ -490,8 +459,6 @@ run(Uxn *u)
490 459
 			else if(event.type == stdin_event)
491 460
 				console_input(u, event.cbutton.button);
492 461
 		}
493
-		if(devsystem->dat[0xe])
494
-			uxn_eval(&supervisor, GETVECTOR(&supervisor.dev[2]));
495 462
 		uxn_eval(u, GETVECTOR(devscreen));
496 463
 		if(uxn_screen.fg.changed || uxn_screen.bg.changed || devsystem->dat[0xe])
497 464
 			redraw();