OK, turing.

<- leave blank

Tue Dec 5 09:56:50 EST 2023

diff db0a8cec19bd6e1ce6c0f7cd32dd15658a1c2350 uncommitted
--- a/gefsroot.rc
+++ b/gefsroot.rc
@@ -76,6 +76,10 @@
 mount -c /srv/dos /n/9fat $disk^'/9fat'
 disk/mkfs -z 16372 -U -s /n/dist -d /n/newfs /sys/lib/sysconfig/proto/allproto
 cp /n/newfs/386/9bootfat /n/9fat
+chmod +al /n/9fat/9bootfat # make file continous on disk
+mkdir -p /n/9fat/efi/boot
+cp /386/*.efi /n/9fat/efi/boot/
+

 >/n/9fat/plan9.ini cat <<EOF
 bootfile=9pc64


Mon Dec 4 22:20:38 EST 2023
% r2 rc
[0x0001cff4]> s sym.exits
[0x0001ddac]> af
[0x0001ddac]> pdf
┌ 44: sym.exits (int64_t arg1, int64_t arg_18h);
│ ; arg int64_t arg1 @ x0
│ ; arg int64_t arg_18h @ sp+0x18
│ 0x0001ddac fe0f1ff8 str x30, [sp, -0x10]!  ; exits.c:9
│ 0x0001ddb0 891b42f9 ldr x9, [x28, 0x430] ; 0xf6 ; 246
│ 0x0001ddb4 ea0300aa mov x10, x0 ; arg1
│ 0x0001ddb8 e00f00f9 str x0, [sp, 0x18]
│ ┌─< 0x0001ddbc 690000b4 cbz x9, 0x1ddc8 ; exits.c:11
│ │ 0x0001ddc0 20013fd6 blr x9
│ │ 0x0001ddc4 ea0f40f9 ldr x10, [arg_18h] ; 5
│ └─> 0x0001ddc8 e0030aaa mov x0, x10 ; exits.c:12
│ 0x0001ddcc 48060094 bl sym._exits
│ 0x0001ddd0 fe0741f8 ldr x30, [sp], 0x10 ; 5
└ 0x0001ddd4 c0035fd6 ret
[0x0001ddac]>


Mon Dec 4 22:14:40 EST 2023
// /sys/src/libc/fmt/vsnprint.c:5:vsnprint(char *buf, int len, char *fmt, va_list
args)
TEXT vsnprint:
	// vsnprint(char *buf, int len, char *fmt, va_list args)
	SUBQ $0x70,SP
	MOVL len+0x8(FP),DX
	// if(len <= 0)
	CMPL DX,$0x0
	JGT vsnprint+0x1a(SB)
	// return -1;
	MOVL $0xffffffff,AX
	ADDQ $0x70,SP
	RET
	// f.runes = 0;
	MOVB $0x0,f+0x20(SP)
	// f.start = buf;
	MOVQ BP,0x28(SP)
	// f.to = buf;
	MOVQ BP,0x30(SP)
	// f.stop = buf + len - 1;
	MOVLQSX DX,DI
	MOVQ BP,SI
	MOVQ BP,buf+0x0(FP)
	LEAQ 0x0(SI)(DI*1),DI
	DECQ DI
	MOVQ DI,0x38(SP)
	// f.flush = nil;
	MOVQ $0x0,0x40(SP)
	// f.farg = nil;
	MOVQ $0x0,0x48(SP)
	// f.nfmt = 0;
	MOVL $0x0,0x50(SP)
	// f.args = args;
	MOVQ args+0x18(FP),DI
	MOVQ DI,0x58(SP)
	// dofmt(&f, fmt);
	LEAQ f+0x20(SP),BP
	MOVQ fmt+0x10(FP),DI
	MOVQ DI,0x8(SP)
	CALL dofmt(SB)
	// *(char*)f.to = '\0';
	MOVQ 0x30(SP),DI
	MOVB $0x0,0x0(DI)
	// return (char*)f.to - buf;
	MOVQ 0x30(SP),AX
	SUBQ buf+0x0(FP),AX
	MOVL AX,AX
	ADDQ $0x70,SP
	RET


Mon Dec 4 21:46:45 EST 2023
// /sys/src/libc/port/nan.c:9:NaN(void)
TEXT NaN:
	// NaN(void)
	SUBQ $0x10,SP
	// a.hi = NANEXP;
	MOVL $0x7ff00000,0xc(SP)
	// a.lo = 1;
	MOVL $0x1,a+0x8(SP)
	// return a.x;
	MOVSD a+0x8(SP),X0
	ADDQ $0x10,SP
	RET


Mon Dec 4 20:16:21 EST 2023

TEXT NaN:
	/sys/src/libc/port/nan.c:9
	SUBQ $0x10,SP
	/sys/src/libc/port/nan.c:13
	MOVL $0x7ff00000,0xc(SP)
	/sys/src/libc/port/nan.c:14
	MOVL $0x1,a+0x8(SP)
	/sys/src/libc/port/nan.c:15
	MOVSD a+0x8(SP),X0
	ADDQ $0x10,SP
	RET



Mon Dec 4 20:13:46 EST 2023
#!/bin/acid -f

defn das1(name, addr) {
	local bound;

	bound = fnbound(addr);
	addr = fmt(addr, 'i');
	oldln = -1;
	print("TEXT ", name, ":\n");
	while 1 do {
		newln = pcline(addr);
		if oldln != newln then {
			print("\t", pcfile(addr), ":", pcline(addr), "\n");
			oldln = newln;
		}
		print("\t", @addr++, "\n");
		if bound != {} && addr >= bound[1] then
			return {};
	}
}


defn das() {
	s = symbols;
	while s do {
		if s[0][2] != etext && s[0][1] == 'T' then
			das1(s[0][0], s[0][2]);
		print("\n");
		s = tail(s);
	}
}

das();


Mon Dec 4 17:05:23 EST 2023
diff 73ffc757d57e3b84fe62d679425be6be209fcfac uncommitted
--- a/sys/src/cmd/acid/acid.h
+++ b/sys/src/cmd/acid/acid.h
@@ -223,7 +223,7 @@
 int popio(void);
 void pstr(String*);
 void pushfile(char*);
-void pushstr(Node*);
+void pushstr(char*);
 void readtext(char*);
 void restartio(void);
 uvlong rget(Map*, char*);
--- a/sys/src/cmd/acid/builtin.c
+++ b/sys/src/cmd/acid/builtin.c
@@ -456,7 +456,7 @@
	if(res.type != TSTRING)
		error("interpret(string): arg type");

- pushstr(&res);
+ pushstr(res.string->string);

	isave = interactive;
	interactive = 0;
--- a/sys/src/cmd/acid/exec.c
+++ b/sys/src/cmd/acid/exec.c
@@ -34,7 +34,7 @@
	}
	while(popio())
		;
- interactive = 1;
+// interactive = 1;
	longjmp(err, 1);
 }

--- a/sys/src/cmd/acid/lex.c
+++ b/sys/src/cmd/acid/lex.c
@@ -103,7 +103,7 @@
 }

 void
-pushstr(Node *s)
+pushstr(char *s)
 {
	IOstack *io;

@@ -117,7 +117,7 @@
		fatal("no memory");
	io->line = line;
	line = 1;
- io->text = strdup(s->string->string);
+ io->text = strdup(s);
	if(io->text == 0)
		fatal("no memory");
	io->ip = io->text;
--- a/sys/src/cmd/acid/main.c
+++ b/sys/src/cmd/acid/main.c
@@ -30,6 +30,7 @@
 void
 main(int argc, char *argv[])
 {
+ char *expr;
	Lsym *l;
	Node *n;
	char *s;
@@ -40,7 +41,8 @@
	aout = "8.out";
	quiet = 1;

- mtype = 0;
+ mtype = nil;
+ expr = nil;
	ARGBEGIN{
	case 'm':
		mtype = ARGF();
@@ -49,10 +51,9 @@
		wtflag = 1;
		break;
	case 'l':
- s = ARGF();
- if(s == 0)
- usage();
- lm[nlm++] = s;
+ if(nlm == nelem(lm))
+ sysfatal("too many libs specified");
+ lm[nlm++] = EARGF(usage());
		break;
	case 'k':
		kernel++;
@@ -60,6 +61,9 @@
	case 'q':
		quiet = 0;
		break;
+ case 'e':
+ expr = EARGF(usage());
+ break;
	default:
		usage();
	}ARGEND
@@ -90,7 +94,10 @@

	kinit();
	initialising = 1;
- pushfile(0);
+ if(expr != nil)
+ pushstr(expr);
+ else
+ pushfile(nil);
	loadvars();
	installbuiltin();

@@ -124,7 +131,8 @@
		execute(n);
	}

- interactive = 1;
+ if(expr == nil)
+ interactive = 1;
	initialising = 0;
	line = 1;

@@ -136,9 +144,9 @@
			unwind();
		}
		stacked = 0;
+ if(interactive)
+ Bprint(bout, "acid: ");

- Bprint(bout, "acid: ");
-
		if(yyparse() != 1)
			die();
		restartio();
@@ -176,14 +184,15 @@
	Lsym *s;
	List *f;

- Bprint(bout, "\n");
-
	if(setjmp(err) == 0)
		callhook("dying");
- s = look("proclist");
- if(s && s->v->type == TLIST) {
- for(f = s->v->l; f; f = f->next)
- Bprint(bout, "echo kill > /proc/%d/ctl\n", (int)f->ival);
+ if(interactive){
+ Bprint(bout, "\n");
+ s = look("proclist");
+ if(s && s->v->type == TLIST) {
+ for(f = s->v->l; f; f = f->next)
+ Bprint(bout, "echo kill > /proc/%d/ctl\n", (int)f->ival);
+ }
	}
	exits(0);
 }
@@ -287,7 +296,8 @@
		print("%s: (error) syminit: %r", argv0);
		return;
	}
- print("%s:%s\n", s, fhdr.name);
+ if(interactive)
+ print("%s:%s\n", s, fhdr.name);

	if(mach->sbreg && lookup(0, mach->sbreg, &sym)) {
		mach->sb = sym.value;


Mon Dec 4 16:27:40 EST 2023
diff 73ffc757d57e3b84fe62d679425be6be209fcfac uncommitted
--- a/sys/lib/acid/port
+++ b/sys/lib/acid/port
@@ -505,9 +505,7 @@
		setproc(pid);
 }

-_asmlines = 30;
-
-defn asm(addr)
+defn _asm(addr, lim)
 {
	local bound;

@@ -514,7 +512,14 @@
	bound = fnbound(addr);

	addr = fmt(addr, 'i');
+ oldln = -1;
	loop 1,_asmlines do {
+ newln = pcline(addr);
+ if oldln != newln then {
+ oldln = newln;
+ print("\t// ");
+ line(addr);
+ }
		print(fmt(addr, 'a'), " ", fmt(addr, 'A'));
		print("\t", @addr++, "\n");
		if bound != {} && addr >= bound[1] then {
@@ -523,6 +528,16 @@
		}
	}
	lasmaddr = addr;
+}
+
+defn asm(addr)
+{
+ _asm(addr, 30);
+}
+
+defn asmx(addr)
+{
+ _asm(addr, 0x80000000);
 }

 defn casm()


Mon Dec 4 12:26:02 EST 2023
ffs

Mon Dec 4 12:18:16 EST 2023
fsd

Sun Dec 3 15:16:03 EST 2023
test


prev | next