On the PDP-10: A page is 512 words, numbered from 000 to 777 octal. A word is 36 bits, numbered 0 to 35, left to right. (Bit 0 is the sign bit, bit 35 is the least significant bit) The page is 512 * 36 = 18432 bits = 4608 nybbles = 2304 octets. OUTPAG: MOVE T1,[POINT 4,IBUF] ; Read data 4 bits at a time MOVEM T1,IPTR MOVE T1,[POINT 8,OBUF] ; Write data 8 bits at a time MOVEM T1,OPTR MOVEI T3,^D<512*36/8> ; Number of octets per page OUTPG1: ILDB T1,IPTR ; Even numbered nybble ILDB T2,IPTR ; Odd numbered nybble LSH T1,4 ; First one is more significant OR T1,T2 ; Combine to make 8 bits IDPB T1,OPTR ; Store it in output buffer SOJG T3,OUTPG1 ; Do all 2304 bytes POPJ P, IPTR: BLOCK 1 OPTR: BLOCK 1 IBUF: BLOCK ^O<1000> ; 1 page = 1000 (octal) words OBUF: BLOCK ^D<512*36/8>/4 : 2304 bytes @ 4 per word = 576 words You will need to reverse this process if you are creating 36-bit data on a 32-bit machine to be sent via FTP. Each pair of 36-bit words is 72 bits = 9 bytes. byte0 = bits 00-07 of even word byte1 = bits 08-15 of even word byte2 = bits 16-23 of even word byte3 = bits 24-31 of even word byte4 = bits 32-35 of even word << 4 || bits 00-03 of odd word byte5 = bits 04-11 of odd word byte6 = bits 12-19 of odd word byte7 = bits 20-27 of odd word byte8 = bits 28-35 of odd word