~rabbits/uxn

261b574671bb8ca4a1edac1ea00af078854ff04b — neauoire 4 months ago 1b2049e
(uxnasm) Added support for = and - runes
1 files changed, 13 insertions(+), 1 deletions(-)

M src/uxnasm.c
M src/uxnasm.c => src/uxnasm.c +13 -1
@@ 316,9 316,14 @@ parse(char *w, FILE *f)
		if(!writeshort(0xffff, 1)) return 0;
		break;
	case ':': /* raw short absolute */
	case '=':
		makereference(p.scope, w, p.ptr);
		if(!writeshort(0xffff, 0)) return 0;
		break;
	case '-': /* raw byte absolute */
		makereference(p.scope, w, p.ptr);
		if(!writebyte(0xff)) return 0;
		break;
	case '"': /* raw string */
		i = 0;
		while((c = w[++i]))


@@ 375,6 380,7 @@ resolve(void)
			l->refs++;
			break;
		case ';':
		case '=':
			if(!(l = findlabel(r->name)))
				return error("Unknown absolute reference", r->name);
			p.data[r->addr + 1] = l->addr >> 0x8;


@@ 384,10 390,16 @@ resolve(void)
		case ':':
			if(!(l = findlabel(r->name)))
				return error("Unknown absolute reference", r->name);
			p.data[r->addr + 0] = l->addr >> 0x8;
			p.data[r->addr] = l->addr >> 0x8;
			p.data[r->addr + 1] = l->addr & 0xff;
			l->refs++;
			break;
		case '-':
			if(!(l = findlabel(r->name)))
				return error("Unknown absolute reference", r->name);
			p.data[r->addr] = l->addr & 0xff;
			l->refs++;
			break;
		default:
			return error("Unknown reference", r->name);
		}