Cats :3
This commit is contained in:
parent
196ce806e2
commit
b98f0041a6
2 changed files with 18 additions and 16 deletions
|
@ -5,8 +5,8 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
#define ZX_BASIC_STATE_SIZE 116
|
#define ZX81_BASIC_STATE_SIZE 116
|
||||||
#define ZX_BASIC_LINE_LAST 0x7676
|
#define ZX81_BASIC_LINE_LAST 0x7676
|
||||||
|
|
||||||
extern char *zx81_basic_tokens_low[3];
|
extern char *zx81_basic_tokens_low[3];
|
||||||
|
|
||||||
|
@ -17,11 +17,13 @@ typedef struct _zx_basic_line {
|
||||||
} zx_basic_line;
|
} zx_basic_line;
|
||||||
|
|
||||||
enum zx_basic_token_type {
|
enum zx_basic_token_type {
|
||||||
ZX_BASIC_TOKEN_UNKNOWN,
|
ZX81_BASIC_TOKEN_UNKNOWN,
|
||||||
ZX_BASIC_TOKEN_ALNUM,
|
ZX81_BASIC_TOKEN_ALNUM,
|
||||||
ZX_BASIC_TOKEN_QUOTE,
|
ZX81_BASIC_TOKEN_PAREN_OPEN,
|
||||||
ZX_BASIC_TOKEN_SYMBOL,
|
ZX81_BASIC_TOKEN_PAREN_CLOSE,
|
||||||
ZX_BASIC_TOKEN_WORD,
|
ZX81_BASIC_TOKEN_QUOTE,
|
||||||
|
ZX81_BASIC_TOKEN_SYMBOL,
|
||||||
|
ZX81_BASIC_TOKEN_WORD,
|
||||||
};
|
};
|
||||||
|
|
||||||
ssize_t zx81_basic_dump(int fd, FILE *stream);
|
ssize_t zx81_basic_dump(int fd, FILE *stream);
|
||||||
|
|
18
src/basic.c
18
src/basic.c
|
@ -25,27 +25,27 @@ static inline enum zx_basic_token_type zx_basic_token_type_get(uint8_t b) {
|
||||||
|
|
||||||
if ((codepoint >= 'A' && codepoint <= 'Z')
|
if ((codepoint >= 'A' && codepoint <= 'Z')
|
||||||
|| (codepoint >= '0' && codepoint <= '9')) {
|
|| (codepoint >= '0' && codepoint <= '9')) {
|
||||||
return ZX_BASIC_TOKEN_ALNUM;
|
return ZX81_BASIC_TOKEN_ALNUM;
|
||||||
} else if (codepoint == '"') {
|
} else if (codepoint == '"') {
|
||||||
return ZX_BASIC_TOKEN_QUOTE;
|
return ZX81_BASIC_TOKEN_QUOTE;
|
||||||
} else {
|
} else {
|
||||||
return ZX_BASIC_TOKEN_SYMBOL;
|
return ZX81_BASIC_TOKEN_SYMBOL;
|
||||||
}
|
}
|
||||||
} else if (ZX81_CHAR_INVERSE(b)) {
|
} else if (ZX81_CHAR_INVERSE(b)) {
|
||||||
return zx_basic_token_type_get(b - ZX81_CHAR_INVERSE_START);
|
return zx_basic_token_type_get(b - ZX81_CHAR_INVERSE_START);
|
||||||
} else if (ZX81_CHAR_TOKEN_LOW(b)) {
|
} else if (ZX81_CHAR_TOKEN_LOW(b)) {
|
||||||
return ZX_BASIC_TOKEN_WORD;
|
return ZX81_BASIC_TOKEN_WORD;
|
||||||
} else if (ZX81_CHAR_TOKEN_HIGH(b)) {
|
} else if (ZX81_CHAR_TOKEN_HIGH(b)) {
|
||||||
char *token = zx81_basic_tokens[b-ZX81_CHAR_TOKEN_HIGH_START];
|
char *token = zx81_basic_tokens[b-ZX81_CHAR_TOKEN_HIGH_START];
|
||||||
|
|
||||||
if (token[0] >= 'A' && token[0] <= 'Z') {
|
if (token[0] >= 'A' && token[0] <= 'Z') {
|
||||||
return ZX_BASIC_TOKEN_WORD;
|
return ZX81_BASIC_TOKEN_WORD;
|
||||||
} else {
|
} else {
|
||||||
return ZX_BASIC_TOKEN_SYMBOL;
|
return ZX81_BASIC_TOKEN_SYMBOL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ZX_BASIC_TOKEN_UNKNOWN;
|
return ZX81_BASIC_TOKEN_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int basic_print(uint8_t c, int tty, FILE *stream) {
|
static inline int basic_print(uint8_t c, int tty, FILE *stream) {
|
||||||
|
@ -77,7 +77,7 @@ ssize_t zx81_basic_dump(int fd, FILE *stream) {
|
||||||
goto error_malloc;
|
goto error_malloc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lseek(fd, ZX_BASIC_STATE_SIZE, SEEK_CUR) < 0) {
|
if (lseek(fd, ZX81_BASIC_STATE_SIZE, SEEK_CUR) < 0) {
|
||||||
goto error_io;
|
goto error_io;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ ssize_t zx81_basic_dump(int fd, FILE *stream) {
|
||||||
|
|
||||||
len = le16toh(line.len);
|
len = le16toh(line.len);
|
||||||
|
|
||||||
if (be16toh(line.num) == len && len == ZX_BASIC_LINE_LAST) {
|
if (be16toh(line.num) == len && len == ZX81_BASIC_LINE_LAST) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue