📄 cmplc56k.h
字号:
/*
File: cmplc56k.h
PMAC Compiled PLC Motorola DSP 56000 defines
Author(s): Ed Lay
08/03/93 EBL Created
Change log:
Date Rev Who Description
--------- ----- ----- -----------------------------------------
01/11/4 EBL Changes for windows DLL
02/09/4 EBL Changes for integer math & size of 56k used
03/08/5 EBL ADD LADDER FUNCTION BLOCK CODE
03/04/99 EBL CHNG STRING CMD USE OF R2 TO R4 FOR TURBO
06/01/99 EBL CHNG PLCN & 0 BUFFER ADDRESSES
10/12/99 EBL CHNG ENDWCODE LENGTH
*/
//
//***************************************************************
//** Instruction Defines **
//***************************************************************
#define JSR 0x0D0000
#define JSRL 0x0BF080
#define MOVItoN4 0x3C0000 // MOV IMMEDIATE SHORT TO REG 'N4'
#define MOVILtoN4 0x74F400 // MOV IMMEDIATE LONG TO REG 'N4'
#define MOVA1toN4 0x219C00 // "MOVE A1,N4"
#define MOVA1toN5 0x219D00 // "MOVE A1,N5"
#define MOVItoR1 0x61F400 // MOV IMMEDIATE LONG TO REG 'R1'
#define MOVItoR2 0x62F400 // MOVE #LONG_ADDR,R2
#define MOVEAtoXR4 0x565C00 // MOVE A,X:(R4)+
#define MOVER4toXSM 0x640000 // MOVE R4,X:ADDR short + ADDR << 8
#define MOVER4toYSM 0x6C0000 // MOVE R4,Y:ADDR short + ADDR << 8
#define MOVEYLMtoR4 0x6CF000 // MOVE Y:$2000,R4
#define MOVItoR4 0x64F400 // MOV IMMEDIATE LONG TO REG 'R4'
#define MOVIStoR4 0x340000 // MOV IMMEDIATE SHORT TO REG 'R4'
#define MOVItoB0 0x51F400 // MOV IMMEDIATE LONG TO REG 'B0'
#define MOVItoB1 0x55F400 // MOV IMMEDIATE LONG TO REG 'B1'
#define MOVIStoB0 0x290000 // MOV IMMEDIATE SHORT TO REG 'B0'#=MID 8 bit
#define MOVIStoB1 0x2D0000 // MOV IMMEDIATE SHORT TO REG 'B1'
#define MOVIStoB 0x2F0000 // MOV IMMEDIATE SHORT TO REG 'B' #=MID 8 bit
#define MOVILtoB 0x57F400 // MOV IMMEDIATE LONG TO REG 'B'
#define MOVItoR5 0x65F400 // MOV IMMEDIATE LONG TO REG 'R5'
#define MOVEMR4toP 0x077094 // MOVEM R4,P:$ADDR
#define MOVEMPtoR4 0x07F094 // MOVEM P:$ADDR,R4
//
// 56K code for ADDRESS command
//
#define MOVEMPtoX0 0x07F084 // MOVEM P:$ADDR,X0
#define MOVEMPtoX1 0x07F085 // MOVEM P:$ADDR,X1
#define MOVEMPtoA 0x07F08E // MOVEM P:$ADDR,A
#define CLRA 0x200013 // CLR A
#define CLRB 0x20001B // CLR B
#define MOVIStoA 0x2E0000 // MOV IMMEDIATE SHORT TO REG 'A'
#define MOVILtoA 0x56F400 // MOV IMMEDIATE LONG TO REG 'A'
#define MOVIStoA1 0x2C0000 // MOVE IMMEDIATE SHORT TO REG 'A1'
#define MOVIStoA0 0x280000 // MOVE IMMEDIATE SHORT TO REG 'A0'
#define MOVILtoA0 0x50F400 // MOV IMMEDIATE LONG TO REG 'A0'
#define NOTAISX1 0x250017 // NOT A #SDATA,X1
#define NOTAXADRtoY1 0x47F017 // NOT A X:#ADDR,Y1
#define ANDX0A 0x200046 // AND X0,A
#define ORX1A 0x200062 // OR X1,A
#define MOVEMA1toP 0x07708C // MOVEM A1,P:#$ADDR
#define ANDILA 0x0140C6 // AND #$LONG,A
#define ANDISA 0x014086 // AND #$SHORT,A // data << 8
#define ORILA 0x0140C2 // OR #$LONG,A
#define MOVECSRtoY0 0x0446B9 // MOVEC SR,Y0
#define MOVECY0toSR 0x04C6B9 // MOVEC Y0,SR
#define ORIintrBLK 0x0003F8 // ORI #%00000011,MR
//
// 56K code for CMD ^ command
//
#define MOVA1XR3 0x545B00 // MOVE A1,X:(R3)+
//
// 56K code for String commands SEND, SENDP, SENDS, CMD
//
#define MOVEMR4toP 0x077094 // MOVEM R4,P:$ADDR
#define MOVEYMtoA 0x5EF000 // MOVE Y:$ADDR,A ADDR = CMD_STACK
#define MOVEYSMtoA 0x5E8000 // MOVE Y:$SADDR,A + $SADDR << 8
#define TSTAItoX1 0x45F403 // TST A #ADDRofSTRING,X1
#define TSTAItoR1 0x61F403 // TST A #ADDRofSTRING,R1
#define MOVEMR1toA 0x07D98E // MOVEM P:(R1)+,A
#define ADDX1AItoX0 0x24FF60 // ADD X1,A #$FF,X0
#define ANDX0toB 0x20004E // AND X0,B
#define ADDY1toAB0toB 0x212F70 // ADD Y1,A B0,B
#define MOVEA1toYM 0x5C7000 // MOVE A1,Y:$CMD_STACK
#define CLRB_R5toR4 0x22B41B // CLR B R5,R4
#define MOVER4toR5 0x229500 // MOVE R4,R5
#define MOVEMPtoB1 0x07F08D // MOVEM P:$C.S ADDR,B1
#define MOVEMPtoB 0x07F08F // MOVEM P:$C.S ADDR,B
#define MOVEYR5toR5 0x6DE500 // MOVE Y:(R5),R5
#define MOVEYR5toR1 0x69E500 // MOVE Y:(R5),R1
#define MOVXP_BASEtoR5 0x65A400 // MOVE X:P_BASE,R5
#define MOVXP_BASEtoR4 0x64A400 // MOVE X:P_BASE,R4
//
// 56K code for Q Write
//
#define MOVEMPRtoR5 0x07ED95 // MOVEM P:(R5+N5),R5
#define MOVItoN5 0x3D0000 // MOVE #QNUM,N5 ; where QNUM < 256
#define MOVILtoN5 0x75F400 // MOVE #QNUM,N5 ; LONG MOVE
#define MOVEILtoN5 0x75F400 // MOVE #QNUM,N5 ; LONG MOVE
#define MOVEILtoM5 0x05F425 // MOVE #$3FF,M5
#define MOVEAtoR5N5 0x486D00 // MOVE A,L:(R5+N5)
#define MOVEAtoR4N4 0x486C00 // MOVE A,L:(R4+N4)
#define MOVEAtoR4 0x486400 // MOVE A,L:(R4)
#define MOVEA1toXR4N4 0x546C00 // MOVE A1,X:(R4+N4)
#define MOVEA1toXR4 0x546400 // MOVE A1,X:(R4)
#define MOVEM4toM5 0x0465A4 // MOVE M4,M5
//
// 56K code for Q Read
//
#define MOVELR5N5toA 0x48ED00 // MOVE L:(R5+N5),A
#define MOVELR5N5toX 0x42ED00 // MOVE L:(R5+N5),X
#define MOVELR4N4toA 0x48EC00 // MOVE L:(R4+N4),A
#define MOVELR4N4toX 0x42EC00 // MOVE L:(R4+N4),X
#define MOVELR4toA 0x48E400 // MOVE L:(R4),A
#define MOVELR4toX 0x42E400 // MOVE L:(R4),X
#define MOVELR5toX 0x42E500 // MOVE L:(R5),X
#define MOVEXR4N4toA 0x56EC00 // MOVE X:(R4+N4),A
#define MOVEXR4N4toX1 0x45EC00 // MOVE X:(R4+N4),X1
#define MOVEXR4toA 0x56E400 // MOVE X:(R4),A
#define MOVEXR4toX1 0x45E400 // MOVE X:(R4),X1
//
// Lnn L-Variable code
//
#define NOTA 0x200017 // NOT A ; for "=" compare need the NOT
#define NOTA_AtoB 0x21CF17 // NOT A A,B
#define NOTB 0x20001F // NOT B
#define MOV0toA0 0x280000 // MOVE #0,A0 ; CLR LSB OF A REG
#define NEGA 0x200036 // NEG A
#define ABSA 0x200026 // ABS A
#define NORMR5A 0x01DD15 // NORM R5,A
#define ANDX1A 0x200066 // AND X1,A
#define ADDX1A 0x200060 // ADD X1,A
#define EORX1A 0x200063 // EOR X1,A also used on compare
#define SUBX1A 0x200064 // SUB X1,A
#define ANDY1A 0x200076 // AND Y1,A
#define ANDY1AY1toB 0x20EF76 // AND Y1,A Y1,B
#define ANDY1B 0x20007E // AND Y1,B
#define EORY1B 0x20007B // EOR Y1,B
#define EORY1A 0x200073 // EOR Y1,A
#define ORY1B 0x20007A // OR Y1,B
#define ORY1AB0toB 0x212F72 // OR Y1,A B0,B
#define ADDBtoA 0x200010 // ADD B,A
#define MOVXADRtoX0 0x44F000 // MOVE X:$ADDR,X0
#define MOVXADRtoX1 0x45F000 // MOVE X:$ADDR,X1
#define MOVXADRtoY1 0x47F000 // MOVE X:$ADDR,Y1
#define MOVXADRtoA 0x56F000 // MOVE X:$ADDR,A
#define MOVXADRtoB 0x57F000 // MOVE X:$ADDR,B
#define MOVYADRtoR1 0x69F000 // MOVE Y:$ADDR,R1
#define MOVXSADRtoA 0x568000 // MOVE X:$SADDR,A + SADDR << 8
#define MOVILtoY1 0x47F400 // MOV IMMEDIATE LONG TO REG 'Y1'
#define MOVItoY1 0x270000 // MOV IMMEDIATE SHORT TO REG 'Y1'
#define MOVEB0toX0 0x212400 // MOVE B0,X0
#define TFRX1AB0toX0 0x212461 // TFR X1,A B0,X0
#define MOVEA1toX0 0x218400 // MOVE A1,X0
#define MOVEX0toA 0x208E00 // MOVE X0,A
#define TFRX0toAtoX1 0x218541 // TFR X0,A A1,X1
#define MOVEB1toA 0x21AE00 // MOVE B1,A
#define MOVEB1toX1 0x21A500 // MOVE B1,X1
#define MPYX0Y1AtoX1 0x2185C0 // MPY X0,Y1,A A1,X1
#define MPYX0Y1BIStoY1 0x2700C8 // MPY X0,Y1,B #<,Y1
#define MPYX0Y1BILtoY1 0x47F4C8 // MPY X0,Y1,B #>,Y1
#define MPYX0Y1A 0x2000C0 // MPY X0,Y1,A
#define MPYX0Y1B 0x2000C8 // MPY X0,Y1,B
#define MOVEA1toY1 0x218700 // MOVE A1,Y1
#define MPYX1Y1A 0x2000F0 // MPY X1,Y1,A
#define ASRA 0x200022 // ASR A
#define ASLInA 0x0C1D00 // ASL #n,A,A + n << 1
#define ASRInA 0x0C1C00 // ASR #n,A,A + n << 1
#define ASRInBtoB 0x0C1C81 // ASR #n,B,B + (n << 1)
#define MOVEA0toA 0x210E00 // MOVE A0,A SIGN EXTEND
#define MOVEA1toA 0x218E00 // MOVE A1,A SIGN EXTEND
#define MOVEB1toX1 0x21A500 // MOVE B1,X1
#define MOVEA1toB 0x218F00 // MOVE A1,B
#define LRSA 0x200023 // LSR A
#define LSRInA 0x0C1EC0 // LSR #n,A + n << 1
#define LSRInB 0x0C1EC1 // LSR #n,B + n << 1
#define CLRAA1toX1 0x218513 // CLR A A1,X1
#define CLRAA1toX0 0x218413 // CLR A A1,X0
#define MOVA1toX1 0x218500 // MOVE A1,X1 ; MOVE CURRENT A1 to X1
#define MOV1toA1 0x2C0100 // MOVE #1,A1 ; LOAD CONSTANT 1
#define MOVEA1toXM 0x547000 // MOVE A1,X:$MEM_ADDR
#define MOVEA1toSXM 0x540000 // MOVE A1,X:$MEM_ADDR + SHORT MEM << 8
#define MOVEA1toSYM 0x5C0000 // MOVE A1,Y:$MEM_ADDR + SHORT MEM << 8
#define BCLRXMEM 0x0A7000 // BCLR #0,X:$D000
// 0x0A7017 BCLR #23,X:$D000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -