Hi,
Pardon the crudeness of this approach, but the last time I did a project
like this, I never managed to communicate it to others who might've used
it.
I modified Warren's VTserver to work with older pdp11s, like my 11/34,
that have the older console emulator that speaks differently.
Warren's original expects a nice new ODT that responds to things like
165200/000004
for depositing values in memory.
I modified it to talk to the 11/34-style console emulator that expect
something more like
L 165200
D 000004
So, my code currently works, but it's really crude with sleep(1) all over
the place to mitigate overrunning the console serial. It should be merged
in properly to Warren's original and rewritten to have its own command line
argument other than -odt , but that said, here's the diff. Use it if you
can. I hope to get around to making it nicer someday.
156a157,159
puts("SENDING BOOT CODE VIA CONSOLE
EMULATOR");
write(portfd, "L 165000\r", strlen("L 165000\r"));
sleep (1);
158c161
< sprintf(bootbuf, "%06o/", loc);
---
sprintf(bootbuf, "L %06o\r", loc);
160c163
<
---
sleep(1);
162,163c165,166
< while (1) { read(portfd, &ch, 1); if (ch==' ') break; }
< sprintf(bootbuf, "%06o\r", bootcode[i]);
---
while (1) { read(portfd, &ch, 1);
printf("%c",ch); if (ch=='@') break; }
sprintf(bootbuf, "D %06o\r", bootcode[i]);
165c168
<
---
sleep(1);
167c170
< while (1) { read(portfd, &ch, 1); if (ch=='@') break; }
---
while (1) { read(portfd, &ch, 1);
printf("%c",ch); if (ch=='@') break; }
169c172,174
< sprintf(bootbuf, "%06oG", BOOTSTART);
---
> puts("SENDING CONSOLE EMULATOR START COMMAND");
sleep(1);
> sprintf(bootbuf, "L
%06o\r", BOOTSTART);
171c176,179
< while (1) { read(portfd, &ch, 1); if (ch=='G') break; }
---
sleep(1);
> sprintf(bootbuf,
"S\r", BOOTSTART);
> write(portfd, bootbuf, strlen(bootbuf));
> while (1) { read(portfd, &ch, 1); if (ch=='@') break; }
490a499
printf("havesentbootcode
%d\n",havesentbootcode);