1 /***************************************************************************** 2 * Copyright (C) The Apache Software Foundation. All rights reserved. * 3 * ------------------------------------------------------------------------- * 4 * This software is published under the terms of the Apache Software License * 5 * version 1.1, a copy of which has been included with this distribution in * 6 * the LICENSE file. * 7 *****************************************************************************/ 8 9 package jogamp.graph.font.typecast.ot; 10 11 /** 12 * The Mnemonic representations of the TrueType instruction set. 13 * @author <a href="mailto:davidsch@dev.java.net">David Schweinsberg</a> 14 * @version $Id: Mnemonic.java,v 1.1.1.1 2004-12-05 23:14:30 davidsch Exp $ 15 */ 16 public class Mnemonic { 17 18 public static final short SVTCA = 0x00; // [a] 19 public static final short SPVTCA = 0x02; // [a] 20 public static final short SFVTCA = 0x04; // [a] 21 public static final short SPVTL = 0x06; // [a] 22 public static final short SFVTL = 0x08; // [a] 23 public static final short SPVFS = 0x0A; 24 public static final short SFVFS = 0x0B; 25 public static final short GPV = 0x0C; 26 public static final short GFV = 0x0D; 27 public static final short SFVTPV = 0x0E; 28 public static final short ISECT = 0x0F; 29 public static final short SRP0 = 0x10; 30 public static final short SRP1 = 0x11; 31 public static final short SRP2 = 0x12; 32 public static final short SZP0 = 0x13; 33 public static final short SZP1 = 0x14; 34 public static final short SZP2 = 0x15; 35 public static final short SZPS = 0x16; 36 public static final short SLOOP = 0x17; 37 public static final short RTG = 0x18; 38 public static final short RTHG = 0x19; 39 public static final short SMD = 0x1A; 40 public static final short ELSE = 0x1B; 41 public static final short JMPR = 0x1C; 42 public static final short SCVTCI = 0x1D; 43 public static final short SSWCI = 0x1E; 44 public static final short SSW = 0x1F; 45 public static final short DUP = 0x20; 46 public static final short POP = 0x21; 47 public static final short CLEAR = 0x22; 48 public static final short SWAP = 0x23; 49 public static final short DEPTH = 0x24; 50 public static final short CINDEX = 0x25; 51 public static final short MINDEX = 0x26; 52 public static final short ALIGNPTS = 0x27; 53 public static final short UTP = 0x29; 54 public static final short LOOPCALL = 0x2A; 55 public static final short CALL = 0x2B; 56 public static final short FDEF = 0x2C; 57 public static final short ENDF = 0x2D; 58 public static final short MDAP = 0x2E; // [a] 59 public static final short IUP = 0x30; // [a] 60 public static final short SHP = 0x32; 61 public static final short SHC = 0x34; // [a] 62 public static final short SHZ = 0x36; // [a] 63 public static final short SHPIX = 0x38; 64 public static final short IP = 0x39; 65 public static final short MSIRP = 0x3A; // [a] 66 public static final short ALIGNRP = 0x3C; 67 public static final short RTDG = 0x3D; 68 public static final short MIAP = 0x3E; // [a] 69 public static final short NPUSHB = 0x40; 70 public static final short NPUSHW = 0x41; 71 public static final short WS = 0x42; 72 public static final short RS = 0x43; 73 public static final short WCVTP = 0x44; 74 public static final short RCVT = 0x45; 75 public static final short GC = 0x46; // [a] 76 public static final short SCFS = 0x48; 77 public static final short MD = 0x49; // [a] 78 public static final short MPPEM = 0x4B; 79 public static final short MPS = 0x4C; 80 public static final short FLIPON = 0x4D; 81 public static final short FLIPOFF = 0x4E; 82 public static final short DEBUG = 0x4F; 83 public static final short LT = 0x50; 84 public static final short LTEQ = 0x51; 85 public static final short GT = 0x52; 86 public static final short GTEQ = 0x53; 87 public static final short EQ = 0x54; 88 public static final short NEQ = 0x55; 89 public static final short ODD = 0x56; 90 public static final short EVEN = 0x57; 91 public static final short IF = 0x58; 92 public static final short EIF = 0x59; 93 public static final short AND = 0x5A; 94 public static final short OR = 0x5B; 95 public static final short NOT = 0x5C; 96 public static final short DELTAP1 = 0x5D; 97 public static final short SDB = 0x5E; 98 public static final short SDS = 0x5F; 99 public static final short ADD = 0x60; 100 public static final short SUB = 0x61; 101 public static final short DIV = 0x62; 102 public static final short MUL = 0x63; 103 public static final short ABS = 0x64; 104 public static final short NEG = 0x65; 105 public static final short FLOOR = 0x66; 106 public static final short CEILING = 0x67; 107 public static final short ROUND = 0x68; // [ab] 108 public static final short NROUND = 0x6C; // [ab] 109 public static final short WCVTF = 0x70; 110 public static final short DELTAP2 = 0x71; 111 public static final short DELTAP3 = 0x72; 112 public static final short DELTAC1 = 0x73; 113 public static final short DELTAC2 = 0x74; 114 public static final short DELTAC3 = 0x75; 115 public static final short SROUND = 0x76; 116 public static final short S45ROUND = 0x77; 117 public static final short JROT = 0x78; 118 public static final short JROF = 0x79; 119 public static final short ROFF = 0x7A; 120 public static final short RUTG = 0x7C; 121 public static final short RDTG = 0x7D; 122 public static final short SANGW = 0x7E; 123 public static final short AA = 0x7F; 124 public static final short FLIPPT = 0x80; 125 public static final short FLIPRGON = 0x81; 126 public static final short FLIPRGOFF = 0x82; 127 public static final short SCANCTRL = 0x85; 128 public static final short SDPVTL = 0x86; // [a] 129 public static final short GETINFO = 0x88; 130 public static final short IDEF = 0x89; 131 public static final short ROLL = 0x8A; 132 public static final short MAX = 0x8B; 133 public static final short MIN = 0x8C; 134 public static final short SCANTYPE = 0x8D; 135 public static final short INSTCTRL = 0x8E; 136 public static final short PUSHB = 0xB0; // [abc] 137 public static final short PUSHW = 0xB8; // [abc] 138 public static final short MDRP = 0xC0; // [abcde] 139 public static final short MIRP = 0xE0; // [abcde] 140 141 /** 142 * Gets the mnemonic text for the specified opcode 143 * @param opcode The opcode for which the mnemonic is required 144 * @return The mnemonic, with a description 145 */ getMnemonic(final short opcode)146 public static String getMnemonic(final short opcode) { 147 if (opcode >= MIRP) return "MIRP["+((opcode&16)==0?"nrp0,":"srp0,")+((opcode&8)==0?"nmd,":"md,")+((opcode&4)==0?"nrd,":"rd,")+(opcode&3)+"]"; 148 else if (opcode >= MDRP) return "MDRP["+((opcode&16)==0?"nrp0,":"srp0,")+((opcode&8)==0?"nmd,":"md,")+((opcode&4)==0?"nrd,":"rd,")+(opcode&3)+"]"; 149 else if (opcode >= PUSHW) return "PUSHW["+((opcode&7)+1)+"]"; 150 else if (opcode >= PUSHB) return "PUSHB["+((opcode&7)+1)+"]"; 151 else if (opcode >= INSTCTRL) return "INSTCTRL"; 152 else if (opcode >= SCANTYPE) return "SCANTYPE"; 153 else if (opcode >= MIN) return "MIN"; 154 else if (opcode >= MAX) return "MAX"; 155 else if (opcode >= ROLL) return "ROLL"; 156 else if (opcode >= IDEF) return "IDEF"; 157 else if (opcode >= GETINFO) return "GETINFO"; 158 else if (opcode >= SDPVTL) return "SDPVTL["+(opcode&1)+"]"; 159 else if (opcode >= SCANCTRL) return "SCANCTRL"; 160 else if (opcode >= FLIPRGOFF) return "FLIPRGOFF"; 161 else if (opcode >= FLIPRGON) return "FLIPRGON"; 162 else if (opcode >= FLIPPT) return "FLIPPT"; 163 else if (opcode >= AA) return "AA"; 164 else if (opcode >= SANGW) return "SANGW"; 165 else if (opcode >= RDTG) return "RDTG"; 166 else if (opcode >= RUTG) return "RUTG"; 167 else if (opcode >= ROFF) return "ROFF"; 168 else if (opcode >= JROF) return "JROF"; 169 else if (opcode >= JROT) return "JROT"; 170 else if (opcode >= S45ROUND) return "S45ROUND"; 171 else if (opcode >= SROUND) return "SROUND"; 172 else if (opcode >= DELTAC3) return "DELTAC3"; 173 else if (opcode >= DELTAC2) return "DELTAC2"; 174 else if (opcode >= DELTAC1) return "DELTAC1"; 175 else if (opcode >= DELTAP3) return "DELTAP3"; 176 else if (opcode >= DELTAP2) return "DELTAP2"; 177 else if (opcode >= WCVTF) return "WCVTF"; 178 else if (opcode >= NROUND) return "NROUND["+(opcode&3)+"]"; 179 else if (opcode >= ROUND) return "ROUND["+(opcode&3)+"]"; 180 else if (opcode >= CEILING) return "CEILING"; 181 else if (opcode >= FLOOR) return "FLOOR"; 182 else if (opcode >= NEG) return "NEG"; 183 else if (opcode >= ABS) return "ABS"; 184 else if (opcode >= MUL) return "MUL"; 185 else if (opcode >= DIV) return "DIV"; 186 else if (opcode >= SUB) return "SUB"; 187 else if (opcode >= ADD) return "ADD"; 188 else if (opcode >= SDS) return "SDS"; 189 else if (opcode >= SDB) return "SDB"; 190 else if (opcode >= DELTAP1) return "DELTAP1"; 191 else if (opcode >= NOT) return "NOT"; 192 else if (opcode >= OR) return "OR"; 193 else if (opcode >= AND) return "AND"; 194 else if (opcode >= EIF) return "EIF"; 195 else if (opcode >= IF) return "IF"; 196 else if (opcode >= EVEN) return "EVEN"; 197 else if (opcode >= ODD) return "ODD"; 198 else if (opcode >= NEQ) return "NEQ"; 199 else if (opcode >= EQ) return "EQ"; 200 else if (opcode >= GTEQ) return "GTEQ"; 201 else if (opcode >= GT) return "GT"; 202 else if (opcode >= LTEQ) return "LTEQ"; 203 else if (opcode >= LT) return "LT"; 204 else if (opcode >= DEBUG) return "DEBUG"; 205 else if (opcode >= FLIPOFF) return "FLIPOFF"; 206 else if (opcode >= FLIPON) return "FLIPON"; 207 else if (opcode >= MPS) return "MPS"; 208 else if (opcode >= MPPEM) return "MPPEM"; 209 else if (opcode >= MD) return "MD["+(opcode&1)+"]"; 210 else if (opcode >= SCFS) return "SCFS"; 211 else if (opcode >= GC) return "GC["+(opcode&1)+"]"; 212 else if (opcode >= RCVT) return "RCVT"; 213 else if (opcode >= WCVTP) return "WCVTP"; 214 else if (opcode >= RS) return "RS"; 215 else if (opcode >= WS) return "WS"; 216 else if (opcode >= NPUSHW) return "NPUSHW"; 217 else if (opcode >= NPUSHB) return "NPUSHB"; 218 else if (opcode >= MIAP) return "MIAP["+((opcode&1)==0?"nrd+nci":"rd+ci")+"]"; 219 else if (opcode >= RTDG) return "RTDG"; 220 else if (opcode >= ALIGNRP) return "ALIGNRP"; 221 else if (opcode >= MSIRP) return "MSIRP["+(opcode&1)+"]"; 222 else if (opcode >= IP) return "IP"; 223 else if (opcode >= SHPIX) return "SHPIX"; 224 else if (opcode >= SHZ) return "SHZ["+(opcode&1)+"]"; 225 else if (opcode >= SHC) return "SHC["+(opcode&1)+"]"; 226 else if (opcode >= SHP) return "SHP"; 227 else if (opcode >= IUP) return "IUP["+((opcode&1)==0?"y":"x")+"]"; 228 else if (opcode >= MDAP) return "MDAP["+((opcode&1)==0?"nrd":"rd")+"]"; 229 else if (opcode >= ENDF) return "ENDF"; 230 else if (opcode >= FDEF) return "FDEF"; 231 else if (opcode >= CALL) return "CALL"; 232 else if (opcode >= LOOPCALL) return "LOOPCALL"; 233 else if (opcode >= UTP) return "UTP"; 234 else if (opcode >= ALIGNPTS) return "ALIGNPTS"; 235 else if (opcode >= MINDEX) return "MINDEX"; 236 else if (opcode >= CINDEX) return "CINDEX"; 237 else if (opcode >= DEPTH) return "DEPTH"; 238 else if (opcode >= SWAP) return "SWAP"; 239 else if (opcode >= CLEAR) return "CLEAR"; 240 else if (opcode >= POP) return "POP"; 241 else if (opcode >= DUP) return "DUP"; 242 else if (opcode >= SSW) return "SSW"; 243 else if (opcode >= SSWCI) return "SSWCI"; 244 else if (opcode >= SCVTCI) return "SCVTCI"; 245 else if (opcode >= JMPR) return "JMPR"; 246 else if (opcode >= ELSE) return "ELSE"; 247 else if (opcode >= SMD) return "SMD"; 248 else if (opcode >= RTHG) return "RTHG"; 249 else if (opcode >= RTG) return "RTG"; 250 else if (opcode >= SLOOP) return "SLOOP"; 251 else if (opcode >= SZPS) return "SZPS"; 252 else if (opcode >= SZP2) return "SZP2"; 253 else if (opcode >= SZP1) return "SZP1"; 254 else if (opcode >= SZP0) return "SZP0"; 255 else if (opcode >= SRP2) return "SRP2"; 256 else if (opcode >= SRP1) return "SRP1"; 257 else if (opcode >= SRP0) return "SRP0"; 258 else if (opcode >= ISECT) return "ISECT"; 259 else if (opcode >= SFVTPV) return "SFVTPV"; 260 else if (opcode >= GFV) return "GFV"; 261 else if (opcode >= GPV) return "GPV"; 262 else if (opcode >= SFVFS) return "SFVFS"; 263 else if (opcode >= SPVFS) return "SPVFS"; 264 else if (opcode >= SFVTL) return "SFVTL["+((opcode&1)==0?"y-axis":"x-axis")+"]"; 265 else if (opcode >= SPVTL) return "SPVTL["+((opcode&1)==0?"y-axis":"x-axis")+"]"; 266 else if (opcode >= SFVTCA) return "SFVTCA["+((opcode&1)==0?"y-axis":"x-axis")+"]"; 267 else if (opcode >= SPVTCA) return "SPVTCA["+((opcode&1)==0?"y-axis":"x-axis")+"]"; 268 else if (opcode >= SVTCA) return "SVTCA["+((opcode&1)==0?"y-axis":"x-axis")+"]"; 269 else return "????"; 270 } 271 getComment(final short opcode)272 public static String getComment(final short opcode) { 273 if (opcode >= MIRP) return "MIRP["+((opcode&16)==0?"nrp0,":"srp0,")+((opcode&8)==0?"nmd,":"md,")+((opcode&4)==0?"nrd,":"rd,")+(opcode&3)+"]\t\tMove Indirect Relative Point"; 274 else if (opcode >= MDRP) return "MDRP["+((opcode&16)==0?"nrp0,":"srp0,")+((opcode&8)==0?"nmd,":"md,")+((opcode&4)==0?"nrd,":"rd,")+(opcode&3)+"]\t\tMove Direct Relative Point"; 275 else if (opcode >= PUSHW) return "PUSHW["+((opcode&7)+1)+"]"; 276 else if (opcode >= PUSHB) return "PUSHB["+((opcode&7)+1)+"]"; 277 else if (opcode >= INSTCTRL) return "INSTCTRL\tINSTruction Execution ConTRol"; 278 else if (opcode >= SCANTYPE) return "SCANTYPE\tSCANTYPE"; 279 else if (opcode >= MIN) return "MIN\t\tMINimum of top two stack elements"; 280 else if (opcode >= MAX) return "MAX\t\tMAXimum of top two stack elements"; 281 else if (opcode >= ROLL) return "ROLL\t\tROLL the top three stack elements"; 282 else if (opcode >= IDEF) return "IDEF\t\tInstruction DEFinition"; 283 else if (opcode >= GETINFO) return "GETINFO\tGET INFOrmation"; 284 else if (opcode >= SDPVTL) return "SDPVTL["+(opcode&1)+"]\tSet Dual Projection_Vector To Line"; 285 else if (opcode >= SCANCTRL) return "SCANCTRL\tSCAN conversion ConTRoL"; 286 else if (opcode >= FLIPRGOFF) return "FLIPRGOFF\tFLIP RanGe OFF"; 287 else if (opcode >= FLIPRGON) return "FLIPRGON\tFLIP RanGe ON"; 288 else if (opcode >= FLIPPT) return "FLIPPT\tFLIP PoinT"; 289 else if (opcode >= AA) return "AA"; 290 else if (opcode >= SANGW) return "SANGW\t\tSet Angle _Weight"; 291 else if (opcode >= RDTG) return "RDTG\t\tRound Down To Grid"; 292 else if (opcode >= RUTG) return "RUTG\t\tRound Up To Grid"; 293 else if (opcode >= ROFF) return "ROFF\t\tRound OFF"; 294 else if (opcode >= JROF) return "JROF\t\tJump Relative On False"; 295 else if (opcode >= JROT) return "JROT\t\tJump Relative On True"; 296 else if (opcode >= S45ROUND) return "S45ROUND\tSuper ROUND 45 degrees"; 297 else if (opcode >= SROUND) return "SROUND\tSuper ROUND"; 298 else if (opcode >= DELTAC3) return "DELTAC3\tDELTA exception C3"; 299 else if (opcode >= DELTAC2) return "DELTAC2\tDELTA exception C2"; 300 else if (opcode >= DELTAC1) return "DELTAC1\tDELTA exception C1"; 301 else if (opcode >= DELTAP3) return "DELTAP3\tDELTA exception P3"; 302 else if (opcode >= DELTAP2) return "DELTAP2\tDELTA exception P2"; 303 else if (opcode >= WCVTF) return "WCVTF\t\tWrite Control Value Table in FUnits"; 304 else if (opcode >= NROUND) return "NROUND["+(opcode&3)+"]"; 305 else if (opcode >= ROUND) return "ROUND["+(opcode&3)+"]"; 306 else if (opcode >= CEILING) return "CEILING\tCEILING"; 307 else if (opcode >= FLOOR) return "FLOOR\t\tFLOOR"; 308 else if (opcode >= NEG) return "NEG\t\tNEGate"; 309 else if (opcode >= ABS) return "ABS\t\tABSolute value"; 310 else if (opcode >= MUL) return "MUL\t\tMULtiply"; 311 else if (opcode >= DIV) return "DIV\t\tDIVide"; 312 else if (opcode >= SUB) return "SUB\t\tSUBtract"; 313 else if (opcode >= ADD) return "ADD\t\tADD"; 314 else if (opcode >= SDS) return "SDS\t\tSet Delta_Shift in the graphics state"; 315 else if (opcode >= SDB) return "SDB\t\tSet Delta_Base in the graphics state"; 316 else if (opcode >= DELTAP1) return "DELTAP1\tDELTA exception P1"; 317 else if (opcode >= NOT) return "NOT\t\tlogical NOT"; 318 else if (opcode >= OR) return "OR\t\t\tlogical OR"; 319 else if (opcode >= AND) return "AND\t\tlogical AND"; 320 else if (opcode >= EIF) return "EIF\t\tEnd IF"; 321 else if (opcode >= IF) return "IF\t\t\tIF test"; 322 else if (opcode >= EVEN) return "EVEN"; 323 else if (opcode >= ODD) return "ODD"; 324 else if (opcode >= NEQ) return "NEQ\t\tNot EQual"; 325 else if (opcode >= EQ) return "EQ\t\t\tEQual"; 326 else if (opcode >= GTEQ) return "GTEQ\t\tGreater Than or Equal"; 327 else if (opcode >= GT) return "GT\t\t\tGreater Than"; 328 else if (opcode >= LTEQ) return "LTEQ\t\tLess Than or Equal"; 329 else if (opcode >= LT) return "LT\t\t\tLess Than"; 330 else if (opcode >= DEBUG) return "DEBUG"; 331 else if (opcode >= FLIPOFF) return "FLIPOFF\tSet the auto_flip Boolean to OFF"; 332 else if (opcode >= FLIPON) return "FLIPON\tSet the auto_flip Boolean to ON"; 333 else if (opcode >= MPS) return "MPS\t\tMeasure Point Size"; 334 else if (opcode >= MPPEM) return "MPPEM\t\tMeasure Pixels Per EM"; 335 else if (opcode >= MD) return "MD["+(opcode&1)+"]\t\t\tMeasure Distance"; 336 else if (opcode >= SCFS) return "SCFS\t\tSets Coordinate From the Stack using projection_vector and freedom_vector"; 337 else if (opcode >= GC) return "GC["+(opcode&1)+"]\t\t\tGet Coordinate projected onto the projection_vector"; 338 else if (opcode >= RCVT) return "RCVT\t\tRead Control Value Table"; 339 else if (opcode >= WCVTP) return "WCVTP\t\tWrite Control Value Table in Pixel units"; 340 else if (opcode >= RS) return "RS\t\t\tRead Store"; 341 else if (opcode >= WS) return "WS\t\t\tWrite Store"; 342 else if (opcode >= NPUSHW) return "NPUSHW"; 343 else if (opcode >= NPUSHB) return "NPUSHB"; 344 else if (opcode >= MIAP) return "MIAP["+((opcode&1)==0?"nrd+nci":"rd+ci")+"]\t\tMove Indirect Absolute Point"; 345 else if (opcode >= RTDG) return "RTDG\t\tRound To Double Grid"; 346 else if (opcode >= ALIGNRP) return "ALIGNRP\tALIGN Relative Point"; 347 else if (opcode >= MSIRP) return "MSIRP["+(opcode&1)+"]\t\tMove Stack Indirect Relative Point"; 348 else if (opcode >= IP) return "IP\t\t\tInterpolate Point by the last relative stretch"; 349 else if (opcode >= SHPIX) return "SHPIX\t\tSHift point by a PIXel amount"; 350 else if (opcode >= SHZ) return "SHZ["+(opcode&1)+"]\t\tSHift Zone by the last pt"; 351 else if (opcode >= SHC) return "SHC["+(opcode&1)+"]\t\tSHift Contour by the last point"; 352 else if (opcode >= SHP) return "SHP\t\tSHift Point by the last point"; 353 else if (opcode >= IUP) return "IUP["+((opcode&1)==0?"y":"x")+"]\t\tInterpolate Untouched Points through the outline"; 354 else if (opcode >= MDAP) return "MDAP["+((opcode&1)==0?"nrd":"rd")+"]\t\tMove Direct Absolute Point"; 355 else if (opcode >= ENDF) return "ENDF\t\tEND Function definition"; 356 else if (opcode >= FDEF) return "FDEF\t\tFunction DEFinition "; 357 else if (opcode >= CALL) return "CALL\t\tCALL function"; 358 else if (opcode >= LOOPCALL) return "LOOPCALL\tLOOP and CALL function"; 359 else if (opcode >= UTP) return "UTP\t\tUnTouch Point"; 360 else if (opcode >= ALIGNPTS) return "ALIGNPTS\tALIGN Points"; 361 else if (opcode >= MINDEX) return "MINDEX\tMove the INDEXed element to the top of the stack"; 362 else if (opcode >= CINDEX) return "CINDEX\tCopy the INDEXed element to the top of the stack"; 363 else if (opcode >= DEPTH) return "DEPTH\t\tReturns the DEPTH of the stack"; 364 else if (opcode >= SWAP) return "SWAP\t\tSWAP the top two elements on the stack"; 365 else if (opcode >= CLEAR) return "CLEAR\t\tClear the entire stack"; 366 else if (opcode >= POP) return "POP\t\tPOP top stack element"; 367 else if (opcode >= DUP) return "DUP\t\tDuplicate top stack element"; 368 else if (opcode >= SSW) return "SSW\t\tSet Single-width"; 369 else if (opcode >= SSWCI) return "SSWCI\t\tSet Single_Width_Cut_In"; 370 else if (opcode >= SCVTCI) return "SCVTCI\tSet Control Value Table Cut In"; 371 else if (opcode >= JMPR) return "JMPR\t\tJuMP"; 372 else if (opcode >= ELSE) return "ELSE"; 373 else if (opcode >= SMD) return "SMD\t\tSet Minimum_ Distance"; 374 else if (opcode >= RTHG) return "RTHG\t\tRound To Half Grid"; 375 else if (opcode >= RTG) return "RTG\t\tRound To Grid"; 376 else if (opcode >= SLOOP) return "SLOOP\t\tSet LOOP variable"; 377 else if (opcode >= SZPS) return "SZPS\t\tSet Zone PointerS"; 378 else if (opcode >= SZP2) return "SZP2\t\tSet Zone Pointer 2"; 379 else if (opcode >= SZP1) return "SZP1\t\tSet Zone Pointer 1"; 380 else if (opcode >= SZP0) return "SZP0\t\tSet Zone Pointer 0"; 381 else if (opcode >= SRP2) return "SRP2\t\tSet Reference Point 2"; 382 else if (opcode >= SRP1) return "SRP1\t\tSet Reference Point 1"; 383 else if (opcode >= SRP0) return "SRP0\t\tSet Reference Point 0"; 384 else if (opcode >= ISECT) return "ISECT\t\tmoves point p to the InterSECTion of two lines"; 385 else if (opcode >= SFVTPV) return "SFVTPV\tSet Freedom_Vector To Projection Vector"; 386 else if (opcode >= GFV) return "GFV\t\tGet Freedom_Vector"; 387 else if (opcode >= GPV) return "GPV\t\tGet Projection_Vector"; 388 else if (opcode >= SFVFS) return "SFVFS\t\tSet Freedom_Vector From Stack"; 389 else if (opcode >= SPVFS) return "SPVFS\t\tSet Projection_Vector From Stack"; 390 else if (opcode >= SFVTL) return "SFVTL["+((opcode&1)==0?"y-axis":"x-axis")+"]\t\tSet Freedom_Vector To Line"; 391 else if (opcode >= SPVTL) return "SPVTL["+((opcode&1)==0?"y-axis":"x-axis")+"]\t\tSet Projection_Vector To Line"; 392 else if (opcode >= SFVTCA) return "SFVTCA["+((opcode&1)==0?"y-axis":"x-axis")+"]\tSet Freedom_Vector to Coordinate Axis"; 393 else if (opcode >= SPVTCA) return "SPVTCA["+((opcode&1)==0?"y-axis":"x-axis")+"]\tSet Projection_Vector To Coordinate Axis"; 394 else if (opcode >= SVTCA) return "SVTCA["+((opcode&1)==0?"y-axis":"x-axis")+"]\t\tSet freedom and projection Vectors To Coordinate Axis"; 395 else return "????"; 396 } 397 } 398