return -1;
}
char *prev_path = ulas.filename;
- int prev_lines = ulas.line;
+ unsigned long prev_lines = ulas.line;
ulas.filename = strdup(path);
ulas.line = 0;
}
if (lit->type == ULAS_TOK_CURRENT_ADDR) {
- return ulas.address;
+ return (int)ulas.address;
}
return lit->val.intv;
int ulas_asmdirstr(FILE *dst, const char **line, unsigned long n, int *rc) {
// .str expr, expr, expr
struct ulas_tok t;
- int written = 0;
+ unsigned long written = 0;
memset(&t, 0, sizeof(t));
do {
*rc = -1;
return 0;
}
- long len = strlen(s);
+ unsigned long len = strlen(s);
// apply char code map
for (int i = 0; i < len; i++) {
}
} while (*rc != -1 && t.type == ',');
- return written;
+ return (int)written;
}
int ulas_asmdirincbin(FILE *dst, const char **line, unsigned long n, int *rc) {
char *path = ulas_strexpr(line, n, rc);
char buf[256];
memset(buf, 0, 256);
- int written = 0;
+ unsigned long written = 0;
FILE *f = ulas_incpathfopen(path, "re");
if (!f) {
return 0;
}
- int read = 0;
+ unsigned long read = 0;
while ((read = fread(buf, 1, 256, f))) {
ulas_asmout(dst, buf, read);
written += read;
fclose(f);
- return written;
+ return (int)written;
}
int ulas_asmdiradv(FILE *dst, const char **line, unsigned long n, int *rc) {
ULAS_EVALEXPRS(setto = ulas_intexpr(line, n, &rc));
setto = setto & 0xFF;
- ulas.charcodemap[charcode] = setto;
+ ulas.charcodemap[charcode] = (char)setto;
return rc;
}
int ulas_asmdirchr(FILE *dst, const char **line, unsigned long n, int *rc) {
- char b[2] = {0, 0};
+ unsigned char b[2] = {0, 0};
struct ulas_tok t;
memset(&t, 0, sizeof(t));
int bit = 7;
ulas_tok(&ulas.tok, line, n);
- int len = strlen(ulas.tok.buf);
+ unsigned long len = strlen(ulas.tok.buf);
if (len > 8) {
*rc = -1;
ULASERR("chr input exceeds 8 pixels\n");
break;
case '1':
// 1 sets 01
- b[1] |= (1 << bit);
+ b[1] |= (char)(1 << bit);
break;
case '2':
// 2 sets 10
- b[0] |= (1 << bit);
+ b[0] |= (char)(1 << bit);
break;
case '3':
// 3 sets 11
- b[0] |= (1 << bit);
- b[1] |= (1 << bit);
+ b[0] |= (char)(1 << bit);
+ b[1] |= (char)(1 << bit);
break;
default:
ULASERR("Invalid chr value: '%c'. Expected 0-3.\n", ulas.tok.buf[i]);
}
int written = 2;
- ulas_asmout(dst, b, written);
+ ulas_asmout(dst, (char*)b, written);
// this always writes 2 bytes
return written;
// is it a label?
if (ulas_islabelname(ulas.tok.buf, strlen(ulas.tok.buf))) {
instr_start = line;
- struct ulas_tok label_tok = {ULAS_INT, {ulas.address}};
+ struct ulas_tok label_tok = {ULAS_INT, {(int)ulas.address}};
ulas_symbolset(ulas.tok.buf, -1, label_tok, 1);
ulas_tok(&ulas.tok, &line, n);
// is next token empty?
fprintf(ulaserr, __VA_ARGS__); \
exit(-1); \
}
-#define ULASWARNLEVEL(level) (ulascfg.warn_level &(level))
+#define ULASWARNLEVEL(level) (ulascfg.warn_level & (level))
// format macros
#define ULAS_FMT(f, fmt) \
// all include search paths
char **incpaths;
- int incpathslen;
+ unsigned int incpathslen;
enum ulas_warm warn_level;
};
ULAS_ASMDIR_REP,
};
-
// special asm tokens for instr enum
// TODO: add more expressions types such as e8, e16, e24, e32, e64
// as well as the corresponding addresses