SQUOZE

Compression scheme


title: "SQUOZE" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["executable-file-formats"] description: "Compression scheme" topic_path: "general/executable-file-formats" source: "https://en.wikipedia.org/wiki/SQUOZE" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0

::summary Compression scheme ::

::callout[type=note] a compression scheme ::

SQUOZE (abbreviated as SQZ) is a memory-efficient representation of a combined source and relocatable object program file with a symbol table on punched cards which was introduced in 1958 with the SCAT assembler on the SHARE Operating System (SOS) for the IBM 709. A program in this format was called a SQUOZE deck. It was also used on later machines including the IBM 7090 and 7094.

SQUOZE deck

A SQUOZE deck contains an encoded binary form of the original assembly language code. That encoded form is not executable code that can be run by the machine; SQUOZE decks are converted to absolute machine code and stored in memory by a loader program.

Identifier name character encoding

In the SQUOZE encoding, identifiers in the symbol table were represented in a 50-character alphabet, allowing a 36-bit machine word to represent six alphanumeric characters plus two flag bits, thus saving two bits per six characters, 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 34.

::data[format=table title="SQUOZE character codes"] | 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 | +8 | 1 | 001 | +16 | 2 | 010 | +24 | 3 | 011 | +32 | 4 | 100 | +40 | 5 | 101 | +48 | 6 | 110 | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| | space | 0 | 1 | 2 | 3 | 4 | 5 | 6 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7 | 8 | 9 | A | B | C | D | E | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | F | G | H | I | J | K | L | M | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | N | O | P | Q | R | S | T | U | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | V | W | X | Y | Z | = # | / % | ) ⌑ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + & | - | - @ | + & | - | * | / | $ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | , | . | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ::

Using base 50 already saves a single bit every three characters, so it was used in two three-character chunks. The manual has a formula for encoding six characters ABCDEF: (A50^2 + B50 + C) * 2^{17} + (D50^2 + E50 + F)

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

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 past participle of the verb 'to squeeze'.

The name SQUOZE was later borrowed for similar character encoding schemes used on DEC machines; they had a 40-character alphabet (50 in octal) and were called DEC RADIX 50 and MOD40, but sometimes nicknamed DEC Squoze.

References

References

  1. Boehm, E. M.. (1959-04-01). "The Share 709 System: Machine Implementation of Symbolic Programming". J. ACM.
  2. (February 1993). "Assemblers and Loaders". [[Ellis Horwood Limited]] / [[Simon & Schuster International Group]].
  3. (June 1961). "SOS Reference Manual - SHARE System for the IBM 709". SOS Group, [[International Business Machines Corporation]].
  4. (2008). "Memory Systems: Cache, DRAM, Disk". [[Morgan Kaufmann Publishers]] / Elsevier.
  5. (2018). "Lecture 7, Object Codes, Loaders and Linkers - Final steps on the road to machine code". [[The University of Iowa]], Department of Computer Science.
  6. (1959). "IBM 7090 Data Processing System General Information". IBM.
  7. (1964-04-15). "The PORTHOS Executive System for the IBM 7094 - User's Manual". [[University of Illinois]], Graduate College Digital Computer Laboratory.
  8. (November 1959). "SOS Reference Manual". [[IBM]].
  9. (June 1958). "Machine Implementation of Symbolic Programming - Summary of a Paper to be Presented at the Summer 1958 Meeting of the ACM".
  10. (April 1959). "The SHARE 709 System: A Cooperative Effort". [[Journal of the ACM]].
  11. (April 1959). "The SHARE 709 System: Machine Implementation of Symbolic Programming". [[Journal of the ACM]].
  12. (May 1971). "PAL-11R Assembler - Programmer's Manual - Program Assembly Language and Relocatable Assembler for the Disk Operating System". [[Digital Equipment Corporation]].

::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::

executable-file-formats