On Tue, Jan 4, 2022 at 2:24 PM Will Senn wrote: > On 1/4/22 3:12 PM, Dan Cross wrote: > > On Tue, Jan 4, 2022 at 3:38 PM Will Senn wrote: > > [snip] > My questions are: > > 1. Is mesg or an equivalent available in v7? > > Perhaps just call printf? > > > 2. If not, what was the v7 way of putting strings out? > > Here's what I did: > > $ rm -f h h.o > $ cat h.s > .globl _printf, _exit > > mov sp, r5 > mov $hi,(sp) > jsr pc,*$_printf > mov $0, (sp) > jsr pc,*$_exit > > hi: > $ as -o h.o h.s > $ ld -o h h.o -lc > $ ./h > Hello, World! > $ rm h h.o > > > 3. Why aren't the system call names defined? > > If I had to hazard a guess, it would have been to de-emphasize the use > of assembler for user code, particularly as 7th Edition was starting > to be portable beyond the PDP-11. > > > 4. What was the v7 way of naming system calls? > > I imagine the canonical way to invoke system calls from assembler was > invoking calling functions in the C library and linking against that. > > - Dan C. > > Yep, that worked... you make it look so easy, and your rationales are > definitely believable :). > You can use puts too, at least in v7. The system call interface between V6 and V7 changed as well... Some internal AT&T branches (cb unix for one) could run both V6 and V7 binaries. BSD uses the v7 system call interface through 2.10.x. 2.11 moves to a new system call interface as well. There's niggles in these statements, since it isn't quite exactly the same, but for things like this it's ok. V7 also moved to stdio completely. V6 had precursor routines to stdio and mesg() was dropped in that whole process. Warner