! ! OPCODES AND CONSTINTEGER FOR PERQ IMP ! P REFS ARE TO PERQ Q-CODE MANAUAL ! %CONSTINTEGER LDC0=0; ! P21 LOAD WORD CONSTANTS 0-15 %CONSTINTEGER LDCN=22; ! P21 LOAD CONSTANT NIL %CONSTINTEGER LDCMO=16; ! P21 LOAD CONSTANT -1 %CONSTINTEGER LDCB=17; ! P21 LOAD CONSTANT (SIGNED)BYTE %CONSTINTEGER LDCW=18; ! P21 LOAD CONSTANT (SIGNED)WORD %CONSTINTEGER LDL0=109; ! P22 LOAD LOCAL WORD(0-15) %CONSTINTEGER LDLB=107; ! P22 LOAD LOCAL UNSIGNED BYTE OFFSET %CONSTINTEGER LDLW=108; ! P22 LOAD LOCAL WORD OFFSET %CONSTINTEGER LLAB=125; ! P22 LOAD LOCAL ADDRESS UBYTE OFFSET %CONSTINTEGER LLAW=126; ! P22 LOAD LOCAL ADDRESS WORD OFFSET %CONSTINTEGER STL0=129; ! P22 STORE LOCAL WORD (0-7 ONLY!) %CONSTINTEGER STLB=127; ! P22 STORE LOCAL WORD UBYTE OFFSET %CONSTINTEGER STLW=128; ! P22 STORE LOCAL WORD WORD OFFSET %CONSTINTEGER LDO0=139; ! P23 SHORT LOAD OWN WORD %CONSTINTEGER LDOB=137; ! P23 LOAD OWN WORD UBYTE OFFSET %CONSTINTEGER LDOW=138; ! P23 LOAD OWN WORD WORD OFFSET %CONSTINTEGER LOAB=155; ! P23 LOAD OWN ADDRESS UBYTE OFFSET %CONSTINTEGER LOAW=156; ! P23 LOAD OWN ADDRESS WORD OFFSET %CONSTINTEGER STO0=159; ! P23 STORE SHORT OWN WORD(0-7!!) %CONSTINTEGER STOB=157; ! P23 STORE OWN UBYTE OFFSET %CONSTINTEGER STOW=158; ! P23 STORE OWN WORD WORD OFFSET %CONSTINTEGER LDGB=192; ! P24 LOAD GLOBAL BYTE OFFSET %CONSTINTEGER LDGW=193; ! P24 LOAD GLOBAL WORD OFFSET %CONSTINTEGER LGAB=194; ! P24 LOAD GLOBAL ADDR BYTE OFFSET %CONSTINTEGER LGAW=195; ! P24 LOAD GLOBAL ADDR WORD OFFSET %CONSTINTEGER LGAWW=181; ! P24 SPECIAL LOAD GLOBAL ADDR %CONSTINTEGER STGB=196; ! P24 STORE GLOBAL BYTE OFFSET %CONSTINTEGER STGW=197; ! P24 STORE GLOBAL WORD OFFSET %CONSTINTEGER LDIB=215; ! P25 LOAD INTERMEDIATE-UBYTE OFFSET %CONSTINTEGER LDIW=216; ! P25 LOAD INTERMEDIATE WORD OFFSET %CONSTINTEGER LIAB=217; ! P25 LOAD INTERMEDIATE ADDR-UBYTE OFFSET %CONSTINTEGER LIAW=218; ! P25 LOAD INTERMEDIATE ADDR WORD OFFSET %CONSTINTEGER STIB=219; ! P25 STORE INTERMEDIATE-UBYTE OFFSET %CONSTINTEGER STIW=220; ! P25 STORE INTERMEDIATE WORD OFFSET %CONSTINTEGER STIND=21; ! P26 STORE INDIRECT ETOS TO ETOS-1 %CONSTINTEGER LDIND=173; ! P26 LOAD INDIRECT ETOS %CONSTINTEGER LDDC=237; ! P27 LAOD DOUBLE CONSTANT %CONSTINTEGER LDDW=239; ! P27 LOAD DOUBLE WORD %CONSTINTEGER STDW=183; ! P27 STORE DOUBLE WORD %CONSTINTEGER LDMC=236; ! P27 LOAD MULTIPLE WORD CONSTANT (TO MSTACK) %CONSTINTEGER LDMW=238; ! P27 LOAD MULTIPLE WORDS (TO MSTACK) %CONSTINTEGER STMW=182; ! P27 STORE MULTIPLE WORDS (FROM MSTACK) ! ! ARRAY STRING AND RECORD ACCESSING SECTION ! %CONSTINTEGER LDB=23; ! P28 LOAD BYTE (VIA POINTER) %CONSTINTEGER STB=24; ! P28 STORE BYTE (VIA POINTER) %CONSTINTEGER MVBB=167; ! P28 MOVE BYTES (VIA 2 POINTERS&FIXED LENGTH) %CONSTINTEGER MVBW=168; ! P28 MOVE BYTES (VIA 2 POINTERS&VARAIBLE LENGTH) %CONSTINTEGER LSA=19; ! P29 LOAD STRING ADDRESS(OF CONSTANT) %CONSTINTEGER SAS=184; ! P29 STRING ASSIGN %CONSTINTEGER LDCH=25; ! P29 LOAD CHARACTER (FROM STRING) %CONSTINTEGER STCH=28; ! P29 STORE CHARACTER (INTO STRING) %CONSTINTEGER MOVB=169; ! P30 MOVE WORDS BYTE COUNTER %CONSTINTEGER MOVW=170; ! P30 MOVE WORDS WORD COUNTER %CONSTINTEGER SIND0=173; ! P30 SHORT INDEX&LOAD WORD(0-7) %CONSTINTEGER INDB=171; ! P30 STATIC INDEX&LOAD(UBYTE OFFSET) %CONSTINTEGER INDW=172; ! P30 STATIC INDEX&LOAD(WORD OFFSET) %CONSTINTEGER INCB=232; ! P30 INCREMENT POINTER(UBYTE INDEX) %CONSTINTEGER INCW=233; ! P30 INCREMENT POINTER(WORD INDEX) %CONSTINTEGER IXAB=221; ! P30 INDEX ARRAY UBYTE ARRAY SIZE %CONSTINTEGER IXAW=222; ! P30 INDEX ARRAY WORD ARRAY SIZE %CONSTINTEGER IXA1=223; ! P31 INDEX ARRAY SHORT ARRAY SIZE(1-4) %CONSTINTEGER IXP=214; ! P31 INDEXED PACKED ARRAY %CONSTINTEGER LDP=26; ! P31 LOAD PACKED ARRAY %CONSTINTEGER STP=27; ! P31 STORE PACKED ARRAY %CONSTINTEGER ROTSHI=20; ! P31 ROTATE OR SHIFT 16BIT FIELD ! ! 16 BIT ARITHMETIC ! %CONSTINTEGER LAND=30; ! P32 LOGICAL AND %CONSTINTEGER LOR=31; ! P32 LOGICAL OR %CONSTINTEGER LNOT=32; ! P32 LOGICAL NOT %CONSTINTEGER NEQBOOL=34; ! P32 DOES AN EXCLUSIVE OR ! %CONSTINTEGER ABI=71; ! P33 INTEGER ABS %CONSTINTEGER ADI=72; ! P33 INTEGER ADD %CONSTINTEGER NGI=73; ! P33 INTEGER UNARY NEGATE %CONSTINTEGER SBI=74; ! P33 INTEGER SUBTRACT %CONSTINTEGER MPI=75; ! P33 INTEGER MULTIPLY %CONSTINTEGER DVI=76; ! P33 INTEGER DIVIDE %CONSTINTEGER MODI=77; ! P33 INTEGER MODULO %CONSTINTEGER CHK=78; ! P33 CHECK SUBSCRIPT RANGE %CONSTINTEGER EQUI=39; ! P33 INTEGER = %CONSTINTEGER NEQI=40; ! P33 INTEGER # %CONSTINTEGER LEQI=41; ! P33 INTEGER <= %CONSTINTEGER LESI=42; ! P33 INTEGER < %CONSTINTEGER GEQI=43; ! P33 INTEGER >= %CONSTINTEGER GTRI=44; ! P33 INTEGER > ! ! 32BIT REAL OPERATIONS ALL ON TOP 4 CELLS OF ETOS ! %CONSTINTEGER ROPS=250; ! ESCAPE CODE FOR REALS ! ! OPERATIONS ON SETS ! %CONSTINTEGER ADJ=185; ! P35 ADJUST SET SIZE %CONSTINTEGER SGS=66; ! P35 BUILD SINGLETON SET %CONSTINTEGER SRS=68; ! P35 BUILD SUBRANGE SET %CONSTINTEGER INN=88; ! P35 SET MEMBERSHIP %CONSTINTEGER UNI=89; ! P35 SET UNION %CONSTINTEGER SETINT=90; ! P35 SET INTERSECTION(RENAMED) %CONSTINTEGER DIF=91; ! P35 SET DIFFERENCE %CONSTINTEGER EQUPOWR=63; ! P35 SET = %CONSTINTEGER NEQPOWR=64; ! P35 SET # %CONSTINTEGER LEQPOWR=65; ! P36 SET <= (SUBSET OF) %CONSTINTEGER GEQPOWR=67; ! P36 >= SET >= (SUPERSET OF) ! ! STRING ARRAY AND RECORD COMPARISONS ! %CONSTINTEGER EQUSTR=51; ! P37 STRING COMPARISON = %CONSTINTEGER NEQSTR=52; ! P37 STRING COMPARISON # %CONSTINTEGER LEQSTR=53; ! P37 STRING COMPARISON <= %CONSTINTEGER LESSTR=54; ! P37 STRING COMPARISON < %CONSTINTEGER GEQSTR=55; ! P37 STRING COMPARISON >= %CONSTINTEGER GTRSTR=56; ! P37 STRING COMPARISON >= %CONSTINTEGER EQUBYT=57; ! P38 BYTE ARRAY COMPARISON = %CONSTINTEGER NEQBYT=58; ! P38 BYTE ARRAY COMPARISON # %CONSTINTEGER LEQBYT=59; ! P38 BYTE ARRAY COMPARISON <= %CONSTINTEGER LESBYT=60; ! P38 BYTE ARRAY COMPARISON < %CONSTINTEGER GEQBYT=61; ! P38 BYTE ARRAY COMPARISON >= %CONSTINTEGER GTRBYT=62; ! P38 BYTE ARRAY COMPARISON > %CONSTINTEGER EQUWORD=69; ! P39 MULTIWORD COMPARISON # %CONSTINTEGER NEQWORD=70; ! P39 MULTIWORD COMPARISON # %CONSTINTEGER LOPS=252; ! LONG OPERATIONS(32 BIT INTEGERS) ! ! JUMPS CALLS AND EXITS ETC ! %CONSTINTEGER JMPB=204; ! P41 UNCONDIONAL JUMP (BYTE OFFSET) %CONSTINTEGER JMPW=205; ! P41 UNCONDIONAL JUMP (WORD OFFSET) %CONSTINTEGER JFB=206; ! P41 FALSE JUMP (BYTE OFFSET) %CONSTINTEGER JFW=207; ! P41 FALSE JUMP (WORD OFFSET) %CONSTINTEGER JTB=208; ! P41 TRUE JUMP (BYTE OFFSET) %CONSTINTEGER JTW=209; ! P41 TRUE JUMP (WORD OFFSET) %CONSTINTEGER JEQB=210; ! P41 EQUAL JUMP (BYTE OFFSET) %CONSTINTEGER JEQW=211; ! P41 EQUAL JUMP (WORD OFFSET) %CONSTINTEGER JNEB=212; ! P41 NOT EQUAL JUMP (BYTE OFFSET) %CONSTINTEGER JNEW=213; ! P41 NOT EQUAL JUMP (WORD OFFSET) %CONSTINTEGER XJP=100; ! P41 CASE JUMP %CONSTINTEGER CALL=186; ! P43 CALL INTERNAL ROUTINE %CONSTINTEGER CALLXB=234; ! P43 CALL EXTERNAL ROUTINE(BYTE OFFSET) %CONSTINTEGER CALLXW=235; ! P43 CALL EXTERNAL ROUTINE(WORD OFFSET) %CONSTINTEGER LVRD=98; ! P43 LOAD VARIABLE ROUTINE DESCRIPTOR %CONSTINTEGER CALLV=187; ! P43 CALL VARIABLE ROUTINE DESCRIPTOR %CONSTINTEGER RETURN=200; ! P43 RETURN FROM ROUTINE ! ! ODDS & ENDS OF CONTROL INSTRUCTIONS ! %CONSTINTEGER NOOP=93; ! P45 NO OPERATION %CONSTINTEGER REPL=94; ! P45 REPLICATE ETOS %CONSTINTEGER REPL2=95; ! P45 REPLICATE ETOS & ETOS-1 %CONSTINTEGER MMS=96; ! P45 MOVE 16BITS TO MEMORY STACK %CONSTINTEGER MES=97; ! P45 MOVE 16BITS FROM MEMORY STACK %CONSTINTEGER MMS2=201; ! P45 MOVE 32 BITS TO MEMORY STACK %CONSTINTEGER MES2=202; ! P45 MOVE 32 BITS FROM MEMORY STACK %CONSTINTEGER RASTER=102; ! P45 RASTER OPERATION %CONSTINTEGER EXCH=230; ! P48 EXCHANGE TOS&TOS-1 %CONSTINTEGER EXCH2=231; ! P48 EXCHANGE TOS&TOS-1 WITH TOS-2&TOS-3 %CONSTINTEGER TLATE1=227; ! P48 TRANSLATE SEE DOCMTN %CONSTINTEGER TLATE2=228; ! P48 TRANSLATE SEE DOCMTN %CONSTINTEGER TLATE3=229; ! P48 TRANSLATE SEE DOCMTN %CONSTINTEGER STLATE=240; ! P48 TRANSLATE SEE DOCMTN %CONSTINTEGER LSSN=99; ! P49 LOAD STACK SEGMENT NO %CONSTINTEGER LDTP=203; ! P49 LOAD TOP POINTER %CONSTINTEGER LDAP=244; ! P49 LOAD ACTIVATION POINTER %CONSTINTEGER ATPB=188; ! P49 ! ADD SIGNED BYTE TO TOP POINTER %CONSTINTEGER ATPW=189; ! P49 ADD ETOS TO TOP POINTER %CONSTINTEGER WCS=190; ! P49 WRITE CONTROL STORE %CONSTINTEGER JCS=191; ! P49 JUMP TO CONTROL STORE %CONSTINTEGER REFILL=255; ! P45 REFILL OP FILE %CONSTINTEGER INCDDS=251; ! P50 INCREMENT DIAGNOSTICS