diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/unix-v10/man3/salloc.3 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/unix-v10/man3/salloc.3')
| -rw-r--r-- | static/unix-v10/man3/salloc.3 | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/static/unix-v10/man3/salloc.3 b/static/unix-v10/man3/salloc.3 new file mode 100644 index 00000000..39f9ff6d --- /dev/null +++ b/static/unix-v10/man3/salloc.3 @@ -0,0 +1,160 @@ +.pa 1 +.he 'SALLOC (III)'6/15/72'SALLOC (III)' +.ti 0 +.nf +NAME salloc -- string manipulation routines +.fi +.sp +.ti 0 +.nf +SYNOPSIS (get size in r0) +.br +jsr pc,allocate +.sp +(get source pointer in r0, +destination pointer in r1) +jsr pc,copy +.sp +jsr pc,wc +.sp +(all following instructions assume r1 contains pointer) + +jsr pc,release + +(get character in r0) +jsr pc,putchar +.sp +jsr pc,lookchar +(character in r0) + +jsr pc,getchar +(character in r0) + +(get character in r0) +jsr pc,alterchar + +(get position in r0) +jsr pc,seekchar + +jsr pc,backspace +(character in r0) + +(get word in r0) +jsr pc,putword + +jsr pc,lookword +(word in r0) + +jsr pc,getword +(word in r0) + +(get word in r0) +jsr pc,alterword + +jsr pc,backword +(word in r0) + +jsr pc,length +(length in r0) + +jsr pc,position +(position in r0) + +jsr pc,rewind + +jsr pc,create + +jsr pc,fsfile + +jsr pc,zero + +.fi +.ti 0 +DESCRIPTION This package is a complete set of routines +for dealing with almost arbitrary +length strings of words and bytes. +The strings are stored on a disk file, so the sum of +their lengths can be considerably larger than +the available core. + +For each string there is a header of four words, namely +a write pointer, a read pointer and pointers to the beginning and end of +the block containing the string. +Initially the read and write pointers point to the beginning of the string. +All routines that refer to a string require the header address in r1. +Unless the string is destroyed by the call, +upon return r1 will point to the same string, although +the string may have grown to the extent that it had to be +be moved. + +.ul +allocate +obtains a string of the requested size and returns +a pointer to its header in r1. +.sp +release_______ releases a string back to free storage. +.sp +putchar_______ and putword_______ write a byte or word respectively into the string +and advance the write pointer. + +.ul +lookchar +and +.ul +lookword +read +a byte or word respectively from the string but do not advance the read pointer. + +getchar_______ and getword_______ read a byte or word respectively from the string and advance the read pointer. + +alterchar_________ and alterword_________ write a byte or word respectively into the string where the read pointer +is pointing and advance the read pointer. + +backspace_________ and backword________ read the last byte or word written and decrement the write pointer. + +All write operations will automatically get a larger block if the current block is exceeded. +All read operations return with the error bit set if attempting to read beyond the write pointer. +.sp +seekchar________ moves the read pointer to the offset specified in r0. + +length______ returns the current length of the string (beginning pointer to write pointer) in r0. + +position________ returns the current offset of the read pointer in r0. + +rewind______ moves the read pointer to the beginning of the string. + +create______ returns the read and write pointers to the beginning of the string. + +fsfile______ moves the read pointer to the current position of the write pointer. + +zero____ zeros the whole string and sets the write pointer to the beginning of the string. + +copy____ copies the string whose header pointer is in r0 to the string whose header pointer is in +r1. +Care should be taken in using the copy instruction since r1 will be changed if the contents of the source string +is bigger than the destination string. + +wc__ forces the contents of the internal buffers and the header blocks to be written on disc. +.sp +.ti 0 +FILES The allocator is in +/lib/libs.a; +the -s__ option to ld__ will link edit +references to the allocator. + +alloc.d is the temporary file used to contain +the strings. + +.ti 0 +SEE ALSO -- +.sp +.ti 0 +DIAGNOSTICS "error in copy" if a disk write error occurs during the execution of the copy instruction. +"error in allocator" if any routine is called with a bad header pointer. +"Cannot open output file" if file alloc.d cannot be created or opened. +"Out of space" if there's no available block of the requested size or no headers available for a new block. +.sp +.fi +.in16 +.ti 0 +BUGS -- |
