MT15 registers, visible to the "end user":
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ----------------------------------------------- ACC | | | | | | | | | | | | | | | | | ----------------------------------------------- PC | | | | | | | | | | | | | | | | | ----------------------------------------------- ----------- Flags | I| N| Z| C| -----------
Status_register/Flags can't be directly read/written.
MT15 OpCode:
Trick is, that the command Bits mentioned here are applied
more or less directly to some parts of the CPU in the right
moment of OpCode execution.
|15 14 13|12 11 10| 9| 8 7| 6| 5 4| 3 2 1 0| |--------|--------|--|-----|--|-----|-----------| |F2|F1|F0|A2|A1|A0|S |W1|W0|MF|M1|M0|C3|C2|C1|C0| ----------------------------------------------- \ cond / \ addr / | \ w / | \cin/ \ alu / ------ ------ | --- | --- ---------\ | | | | | | \ | | | | | 00 ALU_C_in=0 \ | | | | | 01 ALU_C_in=C_Flag | | | | | | 1x ALU_C_in=1 | | | | | | | ALU_out = 000 true | | | 0 keep___Flags 0000 AND reg& mem 001 if_I=1 | | | 1 modify_Flags 0001 ANN reg&!mem 010 if_N=0 | | | 0010 ORA reg| mem 011 if_N=1 | | 00 don't_write 0011 XOR reg^ mem 100 if_Z=0 | | 01 write_ACC 0100 MVR reg 101 if_Z=1 | | 10 write_PC 0101 MVM mem 110 if_C=0 | | 11 write_memory 0110 DEC mem-1 111 if_C=1 | | 0111 SET $FFFF | 0 ALU_source=ACC 1000 CLR $0000 000 #d16 1 ALU_source=PC 1001 ADD reg+mem 001 #d16 1010 SUB reg-mem 010 d16+PC 1010 SBU mem-reg 011 [d16+PC] 1100 SRR reg >>1 100 d16+ACC 1101 SRM mem >>1 101 [d16+ACC] 1110 SLR reg <<1 110 d16 1111 SLM mem <<1 111 [d16]
Now for a more detailed description.
[HOME] [UP]/ [BACK] [1] [2] [3] [4] [5] [6] [7] [8] [NEXT]
(c) Dieter Mueller 2005