0010 <cmd > | 0<ct><grp> [ 0<sz><parm> [ 0<value> ] ] . 0011 <func> 010<txtlen> <txtlen bytes of compressed text> 011<binlen> <binlen bytes of mimed binary data> func: | 0001 <x> <y> ? moveto | 0010 <len> <width> <fill>? rect | 0011 <symset> <spaceing> <points> <style> <weight> <type> ? font | <id> ? font | <lang> ? @PJL ENTER LANGUAGE sz: | 01 ;small positive 1 byte <2 digits 0 to 95 | 10 ;small negative 1 byte <2 digits -95 to 0 | 11 ;large positive 2 bytes <4 digits 0 to 9216 ;note that the lower order bit of sz indicates sign and xor 11 = 0 if large. ;note: neg always goes first and changes sign of remainder to positive. Should never need a large * large ;Large values: Repeat the parm with the remander. ; large * small = 0...884736, ;combos: ; neg * small = -9216...0, neg * large = -884736...0 ;Fractionals: Using more than one neg or large prints the accumulator (and clears it), prints the "." ; and begins accumulating the fractional part. ; small + neg = 0...95.95, small + large = 0.0000 - 95.9215 or 0.0000 to 9.999 ; large + neg = 0...9215.95, large + large = 0...9215.9215 ; neg + neg = -95.95...0, ;Combos: WATCH OUT FOR neg + large which will be taken as neg * large or -884736...0 ; neg * small + neg = -9215.95...0, neg * large + neg = -884736.95...0, ; neg + neg * neg = -95.9215...0, neg * large + neg * large = -884736.884736...0 01; small signed 1 byte -47 to +48 10; medium signed fraction 2 bytes -45.00 to +45.99 11; large unsigned 2 bytes 0 to 9216 *4 for 0 to 32767 (36864) *8 for 0-65536 (73728) value: ;digit pairs multipled togeter +20h
VERSION 2
| cmd--- | cmd-: (CTRL code, PCL command, or sepecial FUNC. Can be 21h...2Fh, (move to a...o) or E,Y,Z,9,= ) PCL: ct grp- [ t parm- ParmVal ]<@ct--> ct: (Number of parameters for this group. 2 bits, add 1 for 1...5 ) grp-: (PCL group. Can be 60h...7Eh, usually a,b,c,d,f,l,p,r,s,t,u,v, group into a...f, l, p...v using 4 bits) t: (Type of the value following. 0=small 1=large) parm-: (PCL Parameter 96...126 or Termination character 64...94. Usually upper or lower case a,b,c,d,e,f,g,h,l,m,n,o,p,q,r,s,t,u,v,x,y,z ) ParmVal: | @t 0 ? s tiny f FracPart . | @t 1 ? s BigValue f FracPart . tiny: (small values from 0...15 or -7...7 depending on sign bit) | @s 0 ? uval . | @s 1 ? sval . uval: (4 bit unsigned number 0...15) sval: (4 bit signed number -7...+7) BigValue: (large values from 0...65535 or -32767...+32767) ! @s 0 ? uval- uvalue uval- f FracPart . ! @s 1 ? sval- uvalue uval- f FracPart . uval-: (5 bit unsigned number 0...31) sval-: (5 bit signed number -15...+15) uvalue: (6 bit unsigned number 0...63) FracPart: (fractional part of value. Not included if flag bit not set) | @f 0 ? . | @f 1 ? tf FracVal . tf: (the type of the value of the fractional part 0=small 1=large) FracVal: (the value of the fractional part. 0.00...0.31 or 0.000...0.2047 aka .9 or .999) | @tf 0 ? uval- . | @tf 1 ? uval- uvalue . value-: | @t | 0 (small) f s v16- | @f 1 (fractional part) z f32-- | @z 1 (large fraction) f64--- ? | ? | ? | 1 (large) s parm-" (PCL parameter. Can be 60h...7Eh,