Commit Diff


commit - 4a727cddffde2f877ddfb5a5514411c86f35140a
commit + 95f5b525d2eecb5ea90a056cff47f3bf946540aa
blob - 1e49453034933cbf91e788d0b7a0f39eccfe77c9
blob + 4e2741d1b6bfb27bf9c674cd160001b82c1d1e58
--- acid/port
+++ acid/port
@@ -406,6 +406,29 @@ defn asm(addr)
 defn casm()
 {
 	asm(lasmaddr);
+}
+
+defn xasm(addr)
+{
+	local bound;
+
+	bound = fnbound(addr);
+
+	addr = fmt(addr, 'i');
+	loop 1,_asmlines do {
+		print(fmt(addr, 'a'), " ", fmt(addr, 'X'));
+		print("\t", *addr++, "\n");
+		if bound != {} && addr > bound[1] then {
+			lasmaddr = addr;
+			return {};
+		}
+	}
+	lasmaddr = addr;
+}
+
+defn xcasm()
+{
+	xasm(lasmaddr);
 }
 
 defn win()
@@ -611,8 +634,57 @@ defn acidtypes()
 			l = tail l;
 		}
 		includepipe(syms);
+	}
+}
+
+defn getregs()
+{
+	local regs, l;
+
+	regs = {};
+	l = registers;
+	while l != {} do {
+		regs = append regs, var(l[0]);
+		l = tail l;
+	}
+	return regs;
+}
+
+defn setregs(regs)
+{
+	local l;
+
+	l = registers;
+	while l != {} do {
+		var(l[0]) = regs[0];
+		l = tail l;
+		regs = tail regs;
 	}
+	return regs;
 }
 
+defn resetregs()
+{
+	local l;
+
+	l = registers;
+	while l != {} do {
+		var(l[0]) = register(l[0]);
+		l = tail l;
+	}
+}
+
+defn clearregs()
+{
+	local l;
+
+	l = registers;
+	while l != {} do {
+		var(l[0]) = refconst(~0);
+		l = tail l;
+	}
+}
+
 progargs="";
 print(acidfile);
+