diff options
| author | Uri Shaked | 2019-11-19 17:50:19 +0200 |
|---|---|---|
| committer | Uri Shaked | 2019-11-19 17:50:19 +0200 |
| commit | 80943e04223556c6b6217f63e3c5615b8b52d244 (patch) | |
| tree | 8c1c56fdefa54b2b9ae0789197d86ebf5bb29adb /src | |
| parent | feat: implement STX (diff) | |
| download | avr8js-80943e04223556c6b6217f63e3c5615b8b52d244.tar.gz avr8js-80943e04223556c6b6217f63e3c5615b8b52d244.tar.bz2 avr8js-80943e04223556c6b6217f63e3c5615b8b52d244.zip | |
doc: add opcode next to each instruction
Diffstat (limited to 'src')
| -rw-r--r-- | src/instruction.ts | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/src/instruction.ts b/src/instruction.ts index 63c4caa..1d016aa 100644 --- a/src/instruction.ts +++ b/src/instruction.ts @@ -11,87 +11,87 @@ import { ICPU } from './cpu'; export function avrInstruction(cpu: ICPU) { const opcode = cpu.progMem[cpu.pc]; - /* ADC */ + /* ADC, 0001 11rd dddd rrrr */ if ((opcode & 0xfc00) === 0x1c00) { /* not implemented */ } - /* ADD */ + /* ADD, 0000 11rd dddd rrrr */ if ((opcode & 0xfc00) === 0xc00) { /* not implemented */ } - /* ADIW */ + /* ADIW, 1001 0110 KKdd KKKK */ if ((opcode & 0xff00) === 0x9600) { /* not implemented */ } - /* AND */ + /* AND, 0010 00rd dddd rrrr */ if ((opcode & 0xfc00) === 0x2000) { /* not implemented */ } - /* ANDI */ + /* ANDI, 0111 KKKK dddd KKKK */ if ((opcode & 0xf000) === 0x7000) { /* not implemented */ } - /* ASR */ + /* ASR, 1001 010d dddd 0101 */ if ((opcode & 0xfe0f) === 0x9405) { /* not implemented */ } - /* BCLR */ + /* BCLR, 1001 0100 1sss 1000 */ if ((opcode & 0xff8f) === 0x9488) { /* not implemented */ } - /* BLD */ + /* BLD, 1111 100d dddd 0bbb */ if ((opcode & 0xfe08) === 0xf800) { /* not implemented */ } - /* BRBC */ - if ((opcode & 0xfc00) === 0xf400) { + /* BRBS, 1111 00kk kkkk ksss */ + if ((opcode & 0xfc00) === 0xf000) { /* not implemented */ } - /* BRBS */ - if ((opcode & 0xfc00) === 0xf000) { + /* BRCC, 1111 01kk kkkk k000 */ + if ((opcode & 0xfc00) === 0xf400) { /* not implemented */ } - /* BSET */ + /* BSET, 1001 0100 0sss 1000 */ if ((opcode & 0xff8f) === 0x9408) { /* not implemented */ } - /* BST */ + /* BST, 1111 101d dddd 0bbb */ if ((opcode & 0xfe08) === 0xfa00) { /* not implemented */ } - /* CALL */ + /* CALL, 1001 010k kkkk 111k kkkk kkkk kkkk kkkk */ if ((opcode & 0xfe0e) === 0x940e) { /* not implemented */ } - /* CBI */ + /* CBI, 1001 1000 AAAA Abbb */ if ((opcode & 0xff00) === 0x9800) { /* not implemented */ } - /* COM */ + /* COM, 1001 010d dddd 0000 */ if ((opcode & 0xfe0f) === 0x9400) { /* not implemented */ } - /* CP */ + /* CP, 0001 01rd dddd rrrr */ if ((opcode & 0xfc00) === 0x1400) { /* not implemented */ } - /* CPC */ + /* CPC, 0000 01rd dddd rrrr */ if ((opcode & 0xfc00) === 0x400) { const arg1 = cpu.data[(opcode & 0x1f0) >> 4]; const arg2 = cpu.data[(opcode & 0xf) | ((opcode & 0x200) >> 5)]; @@ -106,7 +106,7 @@ export function avrInstruction(cpu: ICPU) { cpu.data[95] = sreg; } - /* CPI */ + /* CPI, 0011 KKKK dddd KKKK */ if ((opcode & 0xf000) === 0x3000) { const arg1 = cpu.data[((opcode & 0xf0) >> 4) + 16]; const arg2 = (opcode & 0xf) | ((opcode & 0xf00) >> 4); @@ -121,249 +121,249 @@ export function avrInstruction(cpu: ICPU) { cpu.data[95] = sreg; } - /* CPSE */ + /* CPSE, 0001 00rd dddd rrrr */ if ((opcode & 0xfc00) === 0x1000) { /* not implemented */ } - /* DEC */ + /* DEC, 1001 010d dddd 1010 */ if ((opcode & 0xfe0f) === 0x940a) { /* not implemented */ } - /* EOR */ + /* EOR, 0010 01rd dddd rrrr */ if ((opcode & 0xfc00) === 0x2400) { /* not implemented */ } - /* FMUL */ + /* FMUL, 0000 0011 0ddd 1rrr */ if ((opcode & 0xff88) === 0x308) { /* not implemented */ } - /* FMULS */ + /* FMULS, 0000 0011 1ddd 0rrr */ if ((opcode & 0xff88) === 0x380) { /* not implemented */ } - /* FMULSU */ + /* FMULSU, 0000 0011 1ddd 1rrr */ if ((opcode & 0xff88) === 0x388) { /* not implemented */ } - /* ICALL */ + /* ICALL, 1001 0101 0000 1001 */ if (opcode === 0x9509) { /* not implemented */ } - /* IJMP */ + /* IJMP, 1001 0100 0000 1001 */ if (opcode === 0x9409) { /* not implemented */ } - /* IN */ + /* IN, 1011 0AAd dddd AAAA */ if ((opcode & 0xf800) === 0xb000) { /* not implemented */ } - /* INC */ + /* INC, 1001 010d dddd 0011 */ if ((opcode & 0xfe0f) === 0x9403) { /* not implemented */ } - /* JMP */ + /* JMP, 1001 010k kkkk 110k kkkk kkkk kkkk kkkk */ if ((opcode & 0xfe0e) === 0x940c) { cpu.pc = (cpu.progMem[cpu.pc + 1] | ((opcode & 1) << 16) | ((opcode & 0x1f0) << 13)) - 1; cpu.cycles += 2; } - /* LAC */ + /* LAC, 1001 001r rrrr 0110 */ if ((opcode & 0xfe0f) === 0x9206) { /* not implemented */ } - /* LAS */ + /* LAS, 1001 001r rrrr 0101 */ if ((opcode & 0xfe0f) === 0x9205) { /* not implemented */ } - /* LAT */ + /* LAT, 1001 001r rrrr 0111 */ if ((opcode & 0xfe0f) === 0x9207) { /* not implemented */ } - /* LDI */ + /* LDI, 1110 KKKK dddd KKKK */ if ((opcode & 0xf000) === 0xe000) { cpu.data[((opcode & 0xf0) >> 4) + 16] = (opcode & 0xf) | ((opcode & 0xf00) >> 4); } - /* LDS */ + /* LDS, 1001 000d dddd 0000 kkkk kkkk kkkk kkkk */ if ((opcode & 0xfe0f) === 0x9000) { /* not implemented */ } - /* LDX */ + /* LDX, 1001 000d dddd 1100 */ if ((opcode & 0xfe0f) === 0x900c) { /* not implemented */ } - /* LDX */ + /* LDX, 1001 000d dddd 1101 */ if ((opcode & 0xfe0f) === 0x900d) { /* not implemented */ } - /* LDX */ + /* LDX, 1001 000d dddd 1110 */ if ((opcode & 0xfe0f) === 0x900e) { /* not implemented */ } - /* LDY */ + /* LDY, 1000 000d dddd 1000 */ if ((opcode & 0xfe0f) === 0x8008) { /* not implemented */ } - /* LDY */ + /* LDY, 1001 000d dddd 1001 */ if ((opcode & 0xfe0f) === 0x9009) { /* not implemented */ } - /* LDY */ + /* LDY, 1001 000d dddd 1010 */ if ((opcode & 0xfe0f) === 0x900a) { /* not implemented */ } - /* LDY */ + /* LDY, 10q0 qq0d dddd 1qqq */ if ((opcode & 0xd208) === 0x8008) { /* not implemented */ } - /* LDZ */ + /* LDZ, 1000 000d dddd 0000 */ if ((opcode & 0xfe0f) === 0x8000) { /* not implemented */ } - /* LDZ */ + /* LDZ, 1001 000d dddd 0001 */ if ((opcode & 0xfe0f) === 0x9001) { /* not implemented */ } - /* LDZ */ + /* LDZ, 1001 000d dddd 0010 */ if ((opcode & 0xfe0f) === 0x9002) { /* not implemented */ } - /* LDZ */ + /* LDZ, 10q0 qq0d dddd 0qqq */ if ((opcode & 0xd208) === 0x8000) { /* not implemented */ } - /* LPM */ + /* LPM, 1001 0101 1100 1000 */ if (opcode === 0x95c8) { /* not implemented */ } - /* LPM */ + /* LPM, 1001 000d dddd 0100 */ if ((opcode & 0xfe0f) === 0x9004) { /* not implemented */ } - /* LPM */ + /* LPM, 1001 000d dddd 0101 */ if ((opcode & 0xfe0f) === 0x9005) { /* not implemented */ } - /* LSR */ + /* LSR, 1001 010d dddd 0110 */ if ((opcode & 0xfe0f) === 0x9406) { /* not implemented */ } - /* MOV */ + /* MOV, 0010 11rd dddd rrrr */ if ((opcode & 0xfc00) === 0x2c00) { /* not implemented */ } - /* MOVW */ + /* MOVW, 0000 0001 dddd rrrr */ if ((opcode & 0xff00) === 0x100) { /* not implemented */ } - /* MUL */ + /* MUL, 1001 11rd dddd rrrr */ if ((opcode & 0xfc00) === 0x9c00) { /* not implemented */ } - /* MULS */ + /* MULS, 0000 0010 dddd rrrr */ if ((opcode & 0xff00) === 0x200) { /* not implemented */ } - /* MULSU */ + /* MULSU, 0000 0011 0ddd 0rrr */ if ((opcode & 0xff88) === 0x300) { /* not implemented */ } - /* NEG */ + /* NEG, 1001 010d dddd 0001 */ if ((opcode & 0xfe0f) === 0x9401) { /* not implemented */ } - /* NOP */ + /* NOP, 0000 0000 0000 0000 */ if (opcode === 0) { /* NOP */ } - /* OR */ + /* OR, 0010 10rd dddd rrrr */ if ((opcode & 0xfc00) === 0x2800) { /* not implemented */ } - /* SBR */ + /* SBR, 0110 KKKK dddd KKKK */ if ((opcode & 0xf000) === 0x6000) { /* not implemented */ } - /* OUT */ + /* OUT, 1011 1AAr rrrr AAAA */ if ((opcode & 0xf800) === 0xb800) { cpu.writeData(((opcode & 0xf) | ((opcode & 0x600) >> 5)) + 32, cpu.data[(opcode & 0x1f0) >> 4]); } - /* POP */ + /* POP, 1001 000d dddd 1111 */ if ((opcode & 0xfe0f) === 0x900f) { /* not implemented */ } - /* PUSH */ + /* PUSH, 1001 001d dddd 1111 */ if ((opcode & 0xfe0f) === 0x920f) { /* not implemented */ } - /* RCALL */ + /* RCALL, 1101 kkkk kkkk kkkk */ if ((opcode & 0xf000) === 0xd000) { /* not implemented */ } - /* RET */ + /* RET, 1001 0101 0000 1000 */ if (opcode === 0x9508) { /* not implemented */ } - /* RETI */ + /* RETI, 1001 0101 0001 1000 */ if (opcode === 0x9518) { /* not implemented */ } - /* RJMP */ + /* RJMP, 1100 kkkk kkkk kkkk */ if ((opcode & 0xf000) === 0xc000) { cpu.pc = cpu.pc + ((opcode & 0x7ff) - (opcode & 0x800 ? 0x800 : 0)); cpu.cycles++; } - /* ROR */ + /* ROR, 1001 010d dddd 0111 */ if ((opcode & 0xfe0f) === 0x9407) { /* not implemented */ } - /* SBC */ + /* SBC, 0000 10rd dddd rrrr */ if ((opcode & 0xfc00) === 0x800) { /* not implemented */ } @@ -373,68 +373,68 @@ export function avrInstruction(cpu: ICPU) { /* not implemented */ } - /* SBI */ + /* SBI, 0100 KKKK dddd KKKK */ if ((opcode & 0xff00) === 0x9a00) { /* not implemented */ } - /* SBIC */ + /* SBIC, 1001 1001 AAAA Abbb */ if ((opcode & 0xff00) === 0x9900) { /* not implemented */ } - /* SBIS */ + /* SBIS, 1001 1011 AAAA Abbb */ if ((opcode & 0xff00) === 0x9b00) { /* not implemented */ } - /* SBIW */ + /* SBIW, 1001 0111 KKdd KKKK */ if ((opcode & 0xff00) === 0x9700) { /* not implemented */ } - /* SBRC */ + /* SBRC, 1111 110r rrrr 0bbb */ if ((opcode & 0xfe08) === 0xfc00) { /* not implemented */ } - /* SBRS */ + /* SBRS, 1111 111r rrrr 0bbb */ if ((opcode & 0xfe08) === 0xfe00) { /* not implemented */ } - /* SLEEP */ + /* SLEEP, 1001 0101 1000 1000 */ if (opcode === 0x9588) { /* not implemented */ } - /* SPM */ + /* SPM, 1001 0101 1110 1000 */ if (opcode === 0x95e8) { /* not implemented */ } - /* SPM */ + /* SPM, 1001 0101 1111 1000 */ if (opcode === 0x95f8) { /* not implemented */ } - /* STS */ + /* STS, 1001 001d dddd 0000 kkkk kkkk kkkk kkkk */ if ((opcode & 0xfe0f) === 0x9200) { /* not implemented */ } - /* STX */ + /* STX, 1001 001r rrrr 1100 */ if ((opcode & 0xfe0f) === 0x920c) { cpu.writeData(cpu.dataView.getUint16(26, true), cpu.data[(opcode & 0x1f0) >> 4]); } - /* STX */ + /* STX, 1001 001r rrrr 1101 */ if ((opcode & 0xfe0f) === 0x920d) { cpu.writeData(cpu.dataView.getUint16(26, true), cpu.data[(opcode & 0x1f0) >> 4]); cpu.dataView.setUint16(26, cpu.dataView.getUint16(26, true) + 1, true); } - /* STX */ + /* STX, 1001 001r rrrr 1110 */ if ((opcode & 0xfe0f) === 0x920e) { const i = cpu.data[(opcode & 0x1f0) >> 4]; cpu.dataView.setUint16(26, cpu.dataView.getUint16(26, true) - 1, true); @@ -442,67 +442,67 @@ export function avrInstruction(cpu: ICPU) { cpu.cycles++; } - /* STY */ + /* STY, 1000 001r rrrr 1000 */ if ((opcode & 0xfe0f) === 0x8208) { /* not implemented */ } - /* STY */ + /* STY, 1001 001r rrrr 1001 */ if ((opcode & 0xfe0f) === 0x9209) { /* not implemented */ } - /* STY */ + /* STY, 1001 001r rrrr 1010 */ if ((opcode & 0xfe0f) === 0x920a) { /* not implemented */ } - /* STY */ + /* STY, 10q0 qq1r rrrr 1qqq */ if ((opcode & 0xd208) === 0x8208) { /* not implemented */ } - /* STZ */ + /* STZ, 1000 001r rrrr 0000 */ if ((opcode & 0xfe0f) === 0x8200) { /* not implemented */ } - /* STZ */ + /* STZ, 1001 001r rrrr 0001 */ if ((opcode & 0xfe0f) === 0x9201) { /* not implemented */ } - /* STZ */ + /* STZ, 1001 001r rrrr 0010 */ if ((opcode & 0xfe0f) === 0x9202) { /* not implemented */ } - /* STZ */ + /* STZ, 10q0 qq1r rrrr 0qqq */ if ((opcode & 0xd208) === 0x8200) { /* not implemented */ } - /* SUB */ + /* SUB, 0001 10rd dddd rrrr */ if ((opcode & 0xfc00) === 0x1800) { /* not implemented */ } - /* SUBI */ + /* SUBI, 0101 KKKK dddd KKKK */ if ((opcode & 0xf000) === 0x5000) { /* not implemented */ } - /* SWAP */ + /* SWAP, 1001 010d dddd 0010 */ if ((opcode & 0xfe0f) === 0x9402) { /* not implemented */ } - /* WDR */ + /* WDR, 1001 0101 1010 1000 */ if (opcode === 0x95a8) { /* not implemented */ } - /* XCH */ + /* XCH, 1001 001r rrrr 0100 */ if ((opcode & 0xfe0f) === 0x9204) { /* not implemented */ } |
