[TUHS] origin of null-terminated strings

Clem Cole clemc at ccc.com
Sat Dec 17 07:13:05 AEST 2022


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 at 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.

ᐧ

>-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20221216/79847c17/attachment.htm>


More information about the TUHS mailing list