# ;comparison attributes define(`EQ', `0x'01) # ;equal define(`GE', `0x'9c) # ;greater or equal define(`GEu', `0x'1c) # ;greater or equal (unsigned) define(`GT', `0x'8c) # ;greater than define(`GTu', `0x'0c) # ;greater than (unsigned) define(`LE', `0x'9a) # ;less or equal define(`LEu', `0x'1a) # ;less or equal (unsigned) define(`LT', `0x'8a) # ;less than define(`LTu', `0x'0a) # ;less than (unsigned) define(`NE', `0x'28) # ;not equal define(`EQf', `0x'01) # ;equal define(`GEf', `0x'9c) # ;greater or equal define(`GTf', `0x'8c) # ;greater than define(`LEf', `0x'9a) # ;less or equal define(`LTf', `0x'8a) # ;less than define(`NEf', `0x'28) # ;not equal # ;pcode followed by 0 operands define(`pNOP', `0x'00) # ;0 /* no operation */ define(`pADD12', `0x'01) # ;0 /* add sr to pr */ define(`pADD21', `0x'02) # ;0 /* add pr to sr */ define(`pAND12', `0x'03) # ;0 /* AND sr to pr */ define(`pANEG1', `0x'04) # ;0 /* arith negate pr */ define(`pASL12', `0x'05) # ;0 /* arith shift left sr by pr into pr */ define(`pASR12', `0x'06) # ;0 /* arith shift right sr by pr into pr */ define(`pCALL1', `0x'07) # ;0 /* call function thru pr */ define(`pCOM1', `0x'08) # ;0 /* ones complement pr */ define(`pCSCINIT',`0x'09) # ;0 /* concurrent Small C Initialization */ define(`pDBL1', `0x'0a) # ;0 /* double pr */ define(`pDBL2', `0x'0b) # ;0 /* double sr */ define(`pDIV12', `0x'0c) # ;0 /* div pr by sr */ define(`pDIV12u', `0x'0d) # ;0 /* div pr by sr unsigned */ define(`pENTER', `0x'0e) # ;0 /* function enter */ define(`pENTERM', `0x'0f) # ;0 /* monitor enter */ define(`pEXITM', `0x'10) # ;0 /* monitor exit */ define(`pLNEG1', `0x'11) # ;0 /* logical negate pr */ define(`pMOD12', `0x'12) # ;0 /* modulo pr by sr */ define(`pMOD12u', `0x'13) # ;0 /* modulo pr by sr unsigned */ define(`pMOVE21', `0x'14) # ;0 /* move pr to sr */ define(`pMUL12', `0x'15) # ;0 /* multiply pr by sr */ define(`pMUL12u', `0x'16) # ;0 /* multiply pr by sr unsigned */ define(`pOR12', `0x'17) # ;0 /* OR sr onto pr */ define(`pPOP2', `0x'18) # ;0 /* pop stack into sr */ define(`pPUSH1', `0x'19) # ;0 /* push pr onto stack */ define(`pPUSH2', `0x'1a) # ;0 /* push sr */ define(`pPUTbp1', `0x'1b) # ;0 /* put pr byte in mem thru sr ptr */ define(`pPUTwp1', `0x'1c) # ;0 /* put pr word in mem thru sr ptr */ define(`pRETURN', `0x'1d) # ;0 /* function exit */ define(`pSUB12', `0x'1e) # ;0 /* sub sr from pr */ define(`pSWAP12', `0x'1f) # ;0 /* swap pr and sr */ define(`pSWAP1s', `0x'20) # ;0 /* swap pr and top of stack */ define(`pSWITCH', `0x'21) # ;0 /* find switch case */ define(`pXOR12', `0x'22) # ;0 /* XOR pr with sr */ # ;pcode followed by 1 operand (byte n) define(`pADDbpn', `0x'23) # ;1 /* add n to mem byte thru sr ptr */ define(`pADDSP', `0x'24) # ;1 /* add to stack pointer */ define(`pARGCNTn',`0x'25) # ;1 /* pass arg count to function */ define(`pCMP12', `0x'26) # ;1 /* set pr to (sr CMP pr) */ define(`pGETb1p', `0x'27) # ;1 /* get byte into pr from mem thru sr ptr */ define(`pGETb1pu',`0x'28) # ;1 /* get unsigned byte into pr from mem thru sr ptr */ define(`pGETb1s', `0x'29) # ;1 /* get byte into pr from stack */ define(`pGETb1su',`0x'2a) # ;1 /* get unsigned byte into pr from stack */ define(`pGETw1p', `0x'2b) # ;1 /* get word into pr from mem thru sr ptr */ define(`pGETw1s', `0x'2c) # ;1 /* get word into pr from stack */ define(`pGETw2p', `0x'2d) # ;1 /* get word into sr thru sr ptr */ define(`pGETw2s', `0x'2e) # ;1 /* get word into sr from stack */ define(`pPOINT1s',`0x'2f) # ;1 /* point pr to stack item */ define(`pPOINT2s',`0x'30) # ;1 /* point sr to stack */ define(`pPUSHp', `0x'31) # ;1 /* push word from mem thru sr ptr */ define(`pPUSHs', `0x'32) # ;1 /* push word from stack */ # ;pcode followed by 2 operands (word address or word n) define(`pADD1n', `0x'33) # ;2 /* add n to pr */ define(`pADD2n', `0x'34) # ;2 /* add immediate to sr */ define(`pADDwpn', `0x'35) # ;2 /* add n to mem word thru sr ptr */ define(`pANDbm1', `0x'36) # ;2 /* bitwise and pr with mem byte thru label */ define(`pANDwm1', `0x'37) # ;2 /* bitwise and pr with mem word thru label */ define(`pBIOS', `0x'38) # ;2 /* pseudo PCODE for system calls */ define(`pCALLm', `0x'39) # ;2 /* call function directly */ define(`pGETb1m', `0x'3a) # ;2 /* get byte into pr from mem thru label */ define(`pGETb1mu',`0x'3b) # ;2 /* get unsigned byte into pr from mem thru label */ define(`pGETw1m', `0x'3c) # ;2 /* get word into pr from mem thru label */ define(`pGETw1n', `0x'3d) # ;2 /* get word of value n into pr */ define(`pGETw2m', `0x'3e) # ;2 /* get word into sr from mem (label) */ define(`pGETw2n', `0x'3f) # ;2 /* get word of value n into sr */ define(`pJMPm', `0x'40) # ;2 /* jump to label */ define(`pORbm1', `0x'41) # ;2 /* bitwise or pr with mem byte thru label */ define(`pORwm1', `0x'42) # ;2 /* bitwise or pr with mem word thru label */ define(`pPOINT1m',`0x'43) # ;2 /* point pr to mem item thru label */ define(`pPOINT2m',`0x'44) # ;2 /* point sr to mem thru label */ define(`pPUSHm', `0x'45) # ;2 /* push word from mem thru label */ define(`pPUTbm1', `0x'46) # ;2 /* put pr byte in mem thru label */ define(`pPUTwm1', `0x'47) # ;2 /* put pr word in mem thru label */ define(`pXORbm1', `0x'48) # ;2 /* bitwise xor pr with mem byte thru label */ define(`pXORwm1', `0x'49) # ;2 /* bitwise xor pr with mem word thru label */ # ;pcode followed by 3 operands (word address, byte n) define(`pADDbmn', `0x'4a) # ;3 /* add n to mem byte thru label */ define(`pANDbmn', `0x'4b) # ;3 /* bitwise and n with mem byte thru label */ define(`pCMP10f', `0x'4c) # ;3 /* jump to label if (pr CMP 0) is false */ define(`pORbmn', `0x'4d) # ;3 /* bitwise or n with mem byte thru label */ define(`pPUTbmn', `0x'4e) # ;3 /* put n into mem byte thru label */ define(`pXORbmn', `0x'4f) # ;3 /* bitwise xor n with mem byte thru label */ # ;pcode followed by 4 operands (word address, word n) define(`pADDwmn', `0x'50) # ;4 /* add n to mem word thru label */ define(`pANDwmn', `0x'51) # ;4 /* bitwise and n with mem word thru label */ define(`pORwmn', `0x'52) # ;4 /* bitwise or n with mem word thru label */ define(`pPUTwmn', `0x'53) # ;4 /* put n into mem word thru label */ define(`pXORwmn', `0x'54) # ;4 /* bitwise xor n with mem word thru label */