SQUOZE
SQUOZE (abbreviated as SQZ) is a memory-efficient representation of a combined
Encoding
In the SQUOZE encoding, identifiers in the symbol table were represented in a 50-character
because the six bits normally allocated for each character could store up to 64 states rather than only the 50 states needed to represent the 50 letters of the alphabet, and 506 < 234.Most significant digits |
Least significant digits | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Dec | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | ||
Oct | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
Dec | Oct | Bin | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
+0 | 0 | 000 | space | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
+8 | 1 | 001 | 7 | 8 | 9 | A | B | C | D | E |
+16 | 2 | 010 | F | G | H | I | J | K | L | M |
+24 | 3 | 011 | N | O | P | Q | R | S | T | U |
+32 | 4 | 100 | V | W | X | Y | Z | = # | / % | ) ⌑ |
+40 | 5 | 101 | + & | - | - @ | + & | - | * | / | $ |
+48 | 6 | 110 | , | . | — | — | — | — | — | — |
Using base 50 already saves a single bit every three characters, so it was used in two three-character chunks. The manual[1] has a formula for encoding six characters ABCDEF:
For example "SQUOZE", normally 36 bits: 35 33 37 31 44 17
(base 8) would be encoded in two 17-bit pieces to fit in the 34 bits as ( 0o220231 << 17 ) | 0o175473 == 0o110114575473
.
A simpler example of the same logic would be how a three-digit BCD number would take up 12 bits, such as 987: 9 8 7
(base 16) 1001 1000 0111
(base 2), but any such value could be stored in 10 bits directly, saving two bits, such as 987: 3db
(base 16) 11 1101 1011
(base 2).
Etymology
"Squoze" is a facetious
The name SQUOZE was later borrowed for similar schemes used on
See also
- Packed BCD
- Hertz encoding
- Chen–Ho encoding
- Densely packed decimal (DPD)
- BCD (character encoding)
- Base 50 (numeral system)
- Base conversion
References
- ^ Base 50 representation of the symbol with heading character. […] The base 50 representation of a symbol is obtained as follows: […] a. If the symbol has fewer than five characters, it is headed (by blank if it is in an unheaded region). […] b. The symbol with it[s] heading character is left-justified and any unused low-order positions are filled with blanks. […] c. Each character in the symbol is replaced by it[s] base 50 equivalent. […] d. The result is then converted by the following: if the symbol, after each character is rep[l]aced by its base 50 equivalent, is ABCDEF, its base 50 representation is (A*502+B*50+C)*217+(D*502+E*50+F). […] [1][2]
- ISBN 0-13-052564-2. Archived(PDF) from the original on 2020-03-23. Retrieved 2008-10-01. (xiv+294+4 pages)
- ISBN 978-0-12-379751-3. (900 pages)
- ^ The University of Iowa, Department of Computer Science. Archivedfrom the original on 2020-06-06. Retrieved 2020-06-06.
- ^ from the original on 2020-06-06. Retrieved 2020-06-06. (3 pages)
- ^ base of fifty. Now six character symbols may be read as natural numbers in a base fifty system. If these numbers are converted to the usual base two system, only 34 bits are required for the maximum number and a gain of two flag bits has been made. This has the incidental feature of decreasing the requisite number of bits for representing the entire code, but conversion time would outweigh the saving by a significant margin were it not for the peculiar length of the 709 word. Here is a clear illustration of the critical effect the precise specifications of the machine concerned hold over the details of an encoding schema. […] (7 pages)
- from the original on 2020-06-17. Retrieved 2020-06-16. (5 pages)
- MOD40). This form allows 3 characters to be packed into 16 bits […] [3]
Further reading
- Williams, Al (2016-11-22). "Squoze your data". Hackaday. Archived from the original on 2020-06-06. Retrieved 2020-06-06.
- Ehrman, John Robert; Snyder, James N. (1964-04-15). "3.3.2.1 SCAT". The PORTHOS Executive System for the IBM 7094 - User's Manual (PDF). University of Illinois, Graduate College Digital Computer Laboratory. Archived(PDF) from the original on 2020-06-07. Retrieved 2020-06-07.
[…] SCAT is a two part assembler which in brief operates as follows: Programs written symbolically as one order per card are ingested during the first phase by the "compiler" which scans the program for symbols and outputs a condensed deck of cards (SQUOZE deck) containing tables of these symbols and the program condensed and efficiently coded. During the second phase this SQUOZE deck is ingested by the "modify and load" program which converts the object program to binary machine language which by option can either be loaded ready to run or output on absolute binary cards (23 orders per card) for loading and running at a later time. The "lister" can produce a printed version of the program at either of these stages. Symbolic corrections to a program can be inserted into the second phase along with the SQUOZE deck. […]
(1 page)