| ... | ... |
@@ -2,6 +2,10 @@ |
| 2 | 2 |
|
| 3 | 3 |
%8+ { #0008 ADD2 }
|
| 4 | 4 |
%8* { #0030 SFT2 }
|
| 5 |
+%MOD2 { #03 AND }
|
|
| 6 |
+ |
|
| 7 |
+;cursor { x 2 y 2 blink 1 }
|
|
| 8 |
+ |
|
| 5 | 9 |
|
| 6 | 10 |
|0100 ;Console { pad 8 char 1 byte 1 short 2 }
|
| 7 | 11 |
|0110 ;Screen { width 2 height 2 pad 4 y 2 x 2 color 1 }
|
| ... | ... |
@@ -15,6 +19,15 @@ |
| 15 | 19 |
|
| 16 | 20 |
@FRAME |
| 17 | 21 |
|
| 22 |
+ ( update cursor ) |
|
| 23 |
+ #02 ~cursor.blink #01 EQU ADD =Sprite.color |
|
| 24 |
+ |
|
| 25 |
+ ,cursor_icn =Sprite.addr |
|
| 26 |
+ ~cursor.blink MOD2 #00 EQU =cursor.blink |
|
| 27 |
+ |
|
| 28 |
+ |
|
| 29 |
+ |
|
| 30 |
+ |
|
| 18 | 31 |
~Keys #00 EQU ^$end JNZ |
| 19 | 32 |
|
| 20 | 33 |
( enter key ) |
| ... | ... |
@@ -34,6 +47,8 @@ |
| 34 | 47 |
|
| 35 | 48 |
BRK |
| 36 | 49 |
|
| 50 |
+@cursor_icn [ ffff ffff ffff ffff ] |
|
| 51 |
+ |
|
| 37 | 52 |
@font ( spectrum-zx font ) |
| 38 | 53 |
[ |
| 39 | 54 |
0000 0000 0000 0000 0000 2400 7e3c 0000 0000 2400 3c42 0000 0000 6c7c 7c38 1000 |
| ... | ... |
@@ -263,11 +263,11 @@ walktoken(char *w) |
| 263 | 263 |
if(findopcode(w) || scmp(w, "BRK", 4)) |
| 264 | 264 |
return 1; |
| 265 | 265 |
switch(w[0]) {
|
| 266 |
- case '=': return 4 - (findlabeladdr(w + 1) < 0x0100); /* POK/STR helper (lit addr(1/2) str) */ |
|
| 267 |
- case '~': return 4 - (findlabeladdr(w + 1) < 0x0100); /* PEK/LDR helper (lit addr(1/2) ldr) */ |
|
| 268 |
- case ',': return 3; /* lit2 addr-hb addr-lb */ |
|
| 269 |
- case '.': return 2; /* addr-hb addr-lb */ |
|
| 270 |
- case '^': return 2; /* Relative jump: lit addr-offset */ |
|
| 266 |
+ case '=': return 4 - (findlabel(w + 1) && findlabeladdr(w + 1) < 0x0100); /* POK/STR helper (lit addr(1/2) str) */ |
|
| 267 |
+ case '~': return 4 - (findlabel(w + 1) && findlabeladdr(w + 1) < 0x0100); /* PEK/LDR helper (lit addr(1/2) ldr) */ |
|
| 268 |
+ case ',': return 3; /* lit2 addr-hb addr-lb */ |
|
| 269 |
+ case '.': return 2; /* addr-hb addr-lb */ |
|
| 270 |
+ case '^': return 2; /* Relative jump: lit addr-offset */ |
|
| 271 | 271 |
case '#': return (slen(w + 1) == 2 ? 2 : 3); |
| 272 | 272 |
} |
| 273 | 273 |
if((m = findmacro(w))) {
|