So I went to the oracle on much of DEC history ... -- this explains why Ken never heard it.



---------- Forwarded message ---------
From: Timothe Litt
Date: Fri, Dec 16, 2022 at 3:40 PM
Subject: Re: Origin of ASCIZ / null terminated char arrays.
To: Clem Cole <clemc@ccc.com>

On 16-Dec-22 15:04, Clem Cole wrote:
Do either of you know when it showed up in DEC assemblers?  I  remember it in Macro11 and Macro10, but I have to believe it was in the earlier machines?  So far I have not found a reference to it in any of my PDP-8 stuff (which is small) and I never had the docs for 6, 7 or 9 -- I assume Al K. has them on bitsavers - so I'm going to go poking around - but I thought I'd ask you two if you knew.

Ken Thompson says he had never heard of it before, but he never used the DEC assemblers -- (he wrote their own on the Honeywell originally I believe). FWIW: B did not use null-terminated char arrays originally, but by the time dmr morphed B into newB then C, they had become standard.  Like many, I had always thought Dennis picked them from the DEC assembler, but as Ken says - they never really used it.

I was trying to figure out when they (null terminate char arrays) started to become more standard and specifically the pdeudo OP ASCIZ to create them.

Tx
Clem
It depends on if you require ASCII, or just character strings terminated by a stop code...
The -11 has .asciz (as does VMS Macro,...); the -10 has ASCIZ.  SIXBIT 0 is a space, so you needed to know the length, oftentimes in words, so strip trailing 00s.
The basic 8 assembler (PAL) didn't even have ASCII data.
http://www.bitsavers.org/pdf/dec/pdp8/software/DEC-08-ASAC-D_PAL-III_Symbolic_Assembler_Programming_Manual.pdf

Macro-8 does; the TEXT pseudo-op uses 00 as a stop code.  (It also uses a 6-bit ASCII code).  " is a single character ASCII constant, but not used for strings.
https://www.grc.com/pdp-8/docs/macro-8_programming_manual.pdf

The -15 has .ASCII and .SIXBIT, but no .ASCIZ.

http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp15/DEC-15-AMZA-D_MACRO15.pdf

Probably of most interest to the Unix history, the PDP-7 assembler's TEXT pseudo-op 'in order to separate the string from other data following it, a termination code determined by the character mode is inserted automatically after the last character code of the string"/...

http://www.bitsavers.org/pdf/dec/pdp7/PDP-7_AsmMan.pdf
I don't remember and/or didn't use the earlier assemblers, but many of the manuals are on bitsavers.
Both NUL and RUBOUT (a.k.a. DELETE) were used as fill characters to cover the time teletypes take to execute <CR> and <LF>.  you couldn't represent the NUL version with ASCIZ, and RUBOUT was picked for the ability to overpunch paper tape typos.  Neither function, nor the use of NUL as an end of string marker  is in the ASCII standard, IIRC.