A MEMO ON THE SECRET FEATURES OF 6309
From: kakugawa@csl.hiroshima-u.ac.jp (Hirotsugu Kakugawa)
Newsgroups: comp.sys.m6809
Subject: A Memo on the Secret Features of 6309
Date: 23 Feb 92 01:10:06 GMT
Organization: Computer Systems Lab., Hiroshima Univ., Japan.
Dear 6309 users
I finished my exam and writing the memo on the seacret features of
6309. In the memo, many fearutes of 6309 are reported but I do not
know ALL of them. In addition to that, my 6309 computer is packed and
kept in my hometown: I cannot tried unclear points.
[
NOTE:
You may have questions about the features written in this meno.
Then, please post your question to comp.sys.m6809; do not send mails
to me. I may not answer your questions since I cannot try the
features now, as I write above. Your questions may be answered by
people who has 6309 based computer.
]
The meno is not complete.
Please try and post the results to comp.sys.m6809!
===*===*===*===*===*===*===*===*===*===*===*===*===*===*===*===
A MEMO ON THE SECRET FEATURES OF 6309
by Hirotsugu Kakugawa, (kakugawa@csl.hiroshima-u.ac.jp)
Computer Systems Lab., Information Engineering Course,
Graduate School of Engineering, Hiroshima Univ., Japan
1. ** INTRODUCTION **
The CPU 6309 by HITACHI has secret features which is not written in
its manual. The purpose of this memo is to introduce them.
The features was originally reported in a magazine,
Oh!FM (1988 Apr.), which was written in Japanese. I did not tried all
of the features reported in the article, but I report the features as
far as I know.
HITACHI says in the manual of 6309 that 6309 is compatible with 6809,
but some OS-9 hackers found that it has secret features.
It has following features:
1. More registers (additional two 8 bit accumulators, 8 bit
register, and a 16 bit register),
2. Two modes (6809 emulation mode and native mode),
3. Reduced execution cycles in native mode,
4. More instructions (16 bit x 16 bit multiplication, 32 bit / 16 bit
division, inter-registers operation, block transfer, bit
manipulating operation which is compatible with 6801 has, etc)
5. Error trap by illegal instruction, zero division.
I substituted 6309 for 6809 in my personal computer, and I changed
OS9/6809 Level II such that the 6309 executes in native mode.
I had to change the interrupt handling routine in the kernel.
I implemented illegal instruction trap; I was really happy because
most bugs are caught by trap handler.
In section 2, new registers are explained. In section 3, two modes of
6309 is explained. In section 4, trapping features of the 6309 is
described. In section 5, new instructions are explained. In section 6,
the instruction tables of the 6309 is shown.
2. ** NEW REGISTERS **
The 6309 has some additional registers that 6809 does not.
1. The E register, the F register
These are 8 bit accumulators. Like the D register is a pair of
the A register and the B register, these two registers can be
used as a 16 bit accumulator. The pair of the E and the F
registers is called the W register.
In addition to that, pair of two 16 bit registers, the D register
and the W register, can be used as a 32 bit accumulator called the
Q register.
2. The V register
This a 16 bit register can be used only by TFR, inter-register
operation, etc. But even if the chip is reseted, contents of
this register does not change. Some people may use this
register to keep constant value (V for value).
3. The MD register
This is a 8 bit register to keep the mode and status of the chip.
The meaning of each bit is as follow.
Read value
bit 7 --- 1 is set if zero division happen.
bit 6 --- 1 is set if illegal instruction is fetched.
Write value
bit 1 --- The mode for FIRQ interrupt.
0 -> the the action for FIRQ is the same as that
of 6809.
1 -> the the action for FIRQ is the same as IRQ.
bit 0 --- The execution mode of 6309.
0 -> the emulation mode.
1 -> the native mode.
(When the chip is reseted, all bits are 0.)
3. ** TWO MODES OF THE 6309 **
The 6309 has two modes, emulation mode and native mode, as described
in the previous section. When the chip is reseted, the initial mode
of 6309 is the emulation mode.
When the 6309 is in the emulation mode, the chip emulates the action
of 6809. But we can use extended registers and extended operations in
this mode. The 6309 executes instructions in the same cycles as 6809
does.
When the 6309 is in the native mode, it executes instructions in
less cycles. And when the chip is interrupted (IRQ, for example),
it pushes extended registers (PC, U, Y, X, DP, W, D, CC, in this
order). If you want to use the 6309, you must rewrite interrupt
handling routine (for example, the entry of system call of OS9).
4. ** TRAPPING **
If the following two events happen, the trap is caused.
1. A illegal instruction is fetched.
2. A number is divided by zero.
The action of the 6309 when a trap is caused is :
1. Pushs the registers on the system stack.
(In the emulation mode, PC, U, Y, X, DP, B, A, CC, in this order
and in the the native mode, PC, U, Y, X, DP, W, B, A, CC in this
order)
2. Reads the trap vector address ($FFF0) and jumps to the vector.
(Note that $FFF0 was reserved by 6809.)
To check the reason of the trap, BITMD instruction is provided. This
instruction is explained in a later section.
5. ** NEW INSTRUCTIONS **
5.1 The Register Addressing Mode
To specify registers in TFR and EXG, the 6809 uses bit pattern of 4 bits.
New registers of the 6309 are specified by bit patterns in TFR and EXG
operations. In addition to that, the bit pattern is also used in
instructions of inter-register operations. We call this bit pattern
used to specify register "register addressing mode".
Bit patterns for new registres are as follows:
W -> 0110,
V -> 0111,
E -> 1110,
F -> 1111.
NOTE: even if the 6309 is in a emulation mode, the action for TFR of 6309
is different from that of the 6809 if new register is specified in
operand. Some hackers found this fact and they guessed that the 6309
has secret registers. At last, they found many features.
5.2 Inter-Register Operations
Operations of 6809 are operations between register and immediate value
or between register and memory. Therefore, we had to store value of
register on memory if opetation between two registers is necessary.
But the 6309 has inter-register operation. Following operations are
provided:
ADDR r0,r1 (ADD of two registers),
ADCR r0,r1 (ADC of two registers),
SUBR r0,r1 (SUB of two registers),
SBCR r0,r1 (SBC of two registers),
ANDR r0,r1 (AND of two registers),
ORR r0,r1 (OR of two registers),
EORR r0,r1 (EOR of two registers),
CMPR r0,r1 (CMP of two registers).
The register addressing mode is used to specify two registers.
(I do not remember exactrlly but the result is stored in r0, the
register of the first operand. Please try and find the behavior of
these instructions.)
5.3 Block Transfer
Block transfer instructions are provided such as Z80 has.
The TFM instruction requires source address and destination address
and block size as its argument. One or two 16 bit registers (X/Y/U/S)
are used to specify source and destination addresses. Block size to be
transfered is specified by the W register.
Four style is provided:
TFR r0+,r1+ (transfered in address is increasing order),
TFR r0-,r1- (transfered in address is decreasing order),
TFR r0+,r1 (poured into the same address, I/O port for instance),
TFR r0,r1+ (read from the same address, I/O port for instance).
I tried this instructions but I do not remember exactly.
Operand registers are pointers of source/destination addresses (,maybe).
Please try and find the behavior of these instructions.
5.4 Multiplication And Division
The 6309 has MULD instruction which performs a 16bit x 16bit multipli-
cation. We can use various addressing modes (immediate, direct, indexed,
extend) The result is stored in the Q register.
Division instructions are also provided. The 6309 has two division
instructions: 16bit / 8bit, 32bit / 16bit divisions.
Various addressing modes (immediate, direct, indexed, extend) can be
used.
(Note:I forget where its result is stored. I tried these instructions.
I remember that modulo is also computed. The quotient and the modulo
are stored D and W resp., maybe. I'm not sure, sorry.)
5.5 Bit Manipulation / Bit Transfer
The 6309 provides AIM, OIM, EIM, TIM instructions which are compatible
with instructions of the Hitachi 6301 CPU. Read the manual of the 6301
to understand thses instructions.
Instructions called BAND, BOR, BEOR, BIAND, BIOR, BIEOR, LDBT, STBT
are provided. Behavior of thses instructions is that a logical
operation is performed for n-th bit of a data in a memory (only direct
mode is allowed) and m-th bit of a register, then the result is stored
in the register. The format of the object is :
$11, x, (post byte), (operand).
The say that the post byte takes strange format. I do not understand
these instructions. Sorry, please try.
5.6 Misc
To change modes ofthe 6309, we have to set the 0th bit of the MD
register. To do this, the LDMD instruction is provided:
LDMD #n (where #n is a immediate n bit data)
When trap is caused, it is necessary to examine the reason of the
trap. The BITMD instruction can be used for this purpose:
BITMD #n (where #n is a immediate n bit data)
The contents of the MD register and #n is ANDed, and changes the CC
register (,maybe, I do not remember exactly).
Once this instruction is executed, the 6th and the 7th bit of the
MD register is CLEARED. Therefore, we can't examine the MD register.
Pushing and poping the W registers on/from stack:
PSHSW (Push the W register on the system stack),
PULSW (Pop the W register from the system stack),
PSHUW (Push the W register on the user stack),
PULUW (Pop the W register from the user stack).
6. ** INSTRUCTION TABLES **
In this section, only additional instructions of the 6309 are
shown.
How to read the following table :
The first column : + ... New instruction of 6309
(blank) ... a instruction of 6089/6309,
--Op-- : Operational code,
--Mnem-- : Mnemonic,
--Mode-- : Addressing mode,
--Cyc-- : Execution Cycles (Parenthesized value is the value
in the native mode),
--Len-- : Length of the instruction,
6.1 Instructions without pre-byte
--Op-- --Mnem-- --Mode-- --Cyc-- --Len --
$00 NEG DIRECT 6 (5) 2
+ $01 OIM DIRECT 6 3
+ $02 AIM DIRECT 6 3
$03 COM DIRECT 6 (5) 2
$04 LSR DIRECT 6 (5) 2
+ $05 EIM DIRECT 6 3
$06 ROR DIRECT 6 (5) 2
$07 ASR DIRECT 6 (5) 2
$08 ASL/LSL DIRECT 6 (5) 2
$09 ROL DIRECT 6 (5) 2
$0A DEC DIRECT 6 (5) 2
+ $0B TIM DIRECT 6 3
$0C INC DIRECT 6 (5) 2
$0D TST DIRECT 6 (4) 2
$0E JMP DIRECT 3 (2) 2
$0F CLR DIRECT 6 (5) 2
$10 (PREBYTE)
$11 (PREBYTE)
$12 NOP IMP 2 (1) 1
$13 SYNC IMP 2 (1) 1
+ $14 SEXW IMP 4 1
$16 LBRA REL 5 (4) 3
$17 LBSR REL 9 (7) 3
$19 DAA IMP 2 (1) 1
$1A ORCC IMMED 3 (2) 2
$1C ANDCC IMMED 3 2
$1D SEX IMP 2 (1) 1
$1E EXG REGIST 8 (5) 2
$1F TFR REGIST 6 (4) 2
$20 BRA REL 3 2
$21 BRN REL 3 2
$22 BHI REL 3 2
$23 BLS REL 3 2
$24 BHS/BCC REL 3 2
$25 BLO/BCS REL 3 2
$26 BNE REL 3 2
$27 BEQ REL 3 2
$28 BVC REL 3 2
$29 BVS REL 3 2
$2A BPL REL 3 2
$2B BMI REL 3 2
$2C BGE REL 3 2
$2D BLT REL 3 2
$2E BGT REL 3 2
$2F BLE REL 3 2
$30 LEAX REL 4+ 2+
$31 LEAY REL 4+ 2+
$32 LEAS REL 4+ 2+
$33 LEAU REL 4+ 2+
$34 PSHS REGIST 5+ (4+) 2
$35 PULS REGIST 5+ (4+) 2
$36 PSHU REGIST 5+ (4+) 2
$37 PULU REGIST 5+ (4+) 2
$39 RTS 5 (4) 1
$3A ABX IMP 3 (1) 1
$3B RTI IMP 6/15 (17) 1
$3C CWAI IMP 22 (20) 2
$3D MUL IMP 11 (10) 1
$3F SWI IMP 19 (21) 1
$40 NEGA IMP 2 (1) 1
$43 COMA IMP 2 (1) 1
$44 LSRA IMP 2 (1) 1
$46 RORA IMP 2 (1) 1
$47 ASRA IMP 2 (1) 1
$48 ASLA/LSLA IMP 2 (1) 1
$49 ROLA IMP 2 (1) 1
$4A DECA IMP 2 (1) 1
$4C INCA IMP 2 (1) 1
$4D TSTA IMP 2 (1) 1
$4F CLRA IMP 2 (1) 1
$50 NEGB IM P 2 (1) 1
$53 COMB IMP 2 (1) 1
$54 LSRB IMP 2 (1) 1
$56 RORB IMP 2 (1) 1
$57 ASRB IMP 2 (1) 1
$58 ASLB/LSLB IMP 2 (1) 1
$59 ROLB IMP 2 (1) 1
$5A ECB IMP 2 (1) 1
$5C NCB IMP 2 (1) 1
$5D STB IMP 2 (1) 1
$5F LRB IMP 2 (1) 1
$60 NEG INDEXD 6+ 2+
+ $61 OIM INDEXD 7+ 3+
+ $62 AIM INDEXD 7 3+
$63 COM INDEXD 6+ 2+
$64 LSR INDEXD 6+ 2+
+ $65 EIM INDEXD 7+ 3+
$66 ROR INDEXD 6+ 2+
$67 ASR INDEXD 6+ 2+
$68 ASL/LSL INDEXD 6+ 2+
$69 ROL INDEXD 6+ 2+
$6A DEC INDEXD 6+ 2+
+ $6B TIM INDEXD 7+ 3+
$6C INC INDEXD 6+ 2+
$6D TST INDEXD 6+ (5+) 2+
$6E JMP INDEXD 3+ 2+
$6F CLR INDEXD 6+ 2+
$70 NEG EXTEND 7 (6) 3
+ $71 OIM EXTEND 7 4
+ $72 AIM EXTEND 7 4
$73 COM EXTEND 7 (6) 3
$74 LSR EXTEND 7 (6) 3
+ $75 EIM EXTEND 7 4
$76 ROR EXTEND 7 (6) 3
$77 ASR EXTEND 7 (6) 3
$78 ASL/LSL EXTEND 7 (6) 3
$79 ROL EXTEND 7 (6) 3
$7A DEC EXTEND 7 (6) 3
+ $7B TIM EXTEND 5 4
$7C INC EXTEND 7 (6) 3
$7D TST EXTEND 7 (5) 3
$7E JMP EXTEND 4 (3) 3
$7F CLR EXTEND 7 (6) 3
$80 SUBA IMMED 2 2
$81 CMPA IMMED 2 2
$82 SBCA IMMED 2 2
$83 SUBD IMMED 4 (3) 3
$84 ANDA IMMED 2 2
$85 BITA IMMED 2 2
$86 LDA IMMED 2 2
$88 EORA IMMED 2 2
$89 ADCA IMMED 2 2
$8A ORA IMMED 2 2
$8B ADDA IMMED 2 2
$8C CMPX IMMED 4 (3) 3
$8D BSR IMMED 7 (6) 2
$8E LDX IMMED 3 3
$90 SUBA DIRECT 4 (3) 2
$91 CMPA DIRECT 4 (3) 2
$92 SBCA DIRECT 4 (3) 2
$93 SUBD DIRECT 6 (4) 3
$94 ANDA DIRECT 4 (3) 2
$95 BITA DIRECT 4 (3) 2
$96 LDA DIRECT 4 (3) 2
$97 STA DIRECT 4 (3) 2
$98 EORA DIRECT 4 (3) 2
$99 ADCA DIRECT 4 (3) 2
$9A ORA DIRECT 4 (3) 2
$9B ADDA DIRECT 4 (3) 2
$9C CMPX DIRECT 6 (4) 2
$9D JSR DIRECT 7 (6) 2
$9E LDX DIRECT 5 (4) 2
$9F STX DIRECT 5 (4) 2
$A0 SUBA INDEXD 4+ 2+
$A1 CMPA INDEXD 4+ 2+
$A2 SBCA INDEXD 4+ 2+
$A3 SUBD INDEXD 6+ (5+) 2+
$A4 ANDA INDEXD 4+ 2+
$A5 BITA INDEXD 4+ 2+
$A6 LDA INDEXD 4+ 2+
$A7 STA INDEXD 4+ 2+
$A8 EORA INDEXD 4+ 2+
$A9 ADCA INDEXD 4+ 2+
$AA ORA INDEXD 4+ 2+
$AB ADDA INDEXD 4+ 2+
$AC CMPX INDEXD 6+ (5+) 2+
$AD JSR INDEXD 7+ (6+) 2+
$AE LDX INDEXD 5+ 2+
$AF STX INDEXD 5+ 2+
$B0 SUBA EXTEND 5 (4) 3
$B1 CMPA EXTEND 5 (4) 3
$B2 SBCA EXTEND 5 (4) 3
$B3 SUBD EXTEND 7 (5) 3
$B4 ANDA EXTEND 5 (4) 3
$B5 BITA EXTEND 5 (4) 3
$B6 LDA EXTEND 5 (4) 3
$B7 STA EXTEND 5 (4) 3
$B8 EORA EXTEND 5 (4) 3
$B9 ADCA EXTEND 5 (4) 3
$BA ORA EXTEND 5 (4) 3
$BB ADDA EXTEND 5 (4) 3
$BC CMPX EXTEND 7 (5) 3
$BD JSR EXTEND 8 (7) 3
$BE LDX EXTEND 6 (5) 3
$BF STX EXTEND 6 (5) 3
$C0 SUBB IMMED 2 2
$C1 CMPB IMMED 2 2
$C2 SBCB IMMED 2 2
$C3 ADDD IMMED 4 (3) 3
$C4 ANDB IMMED 2 2
$C5 BITB IMMED 2 2
$C6 LDB IMMED 2 2
$C8 EORB IMMED 2 2
$C9 ADCB IMMED 2 2
$CA ORB IMMED 2 2
$CB ADDB IMMED 2 2
$CC LDD IMMED 3 3
+ $CD LDQ IMMED 5 5
$CE LDU IMMED 3 3
$D0 SUBB DIRECT 4 (3) 2
$D1 CMPB DIRECT 4 (3) 2
$D2 SBCB DIRECT 4 (3) 2
$D3 ADDD DIRECT 6 (4) 3
$D4 ANDB DIRECT 4 (3) 2
$D5 BITB DIRECT 4 (3) 2
$D6 LDB DIRECT 4 (3) 2
$D7 STB DIRECT 4 (3) 2
$D8 EORB DIRECT 4 (3) 2
$D9 ADCB DIRECT 4 (3) 2
$DA ORB DIRECT 4 (3) 2
$DB ADDB DIRECT 4 (3) 2
$DC LDD DIRECT 5 (4) 2
$DD STD DIRECT 5 (4) 2
$DE LDU DIRECT 5 (4) 2
$DF STU DIRECT 5 (4) 2
$E0 SUBB INDEXD 4+ 2+
$E1 CMPB INDEXD 4+ 2+
$E2 SBCB INDEXD 4+ 2+
$E3 ADDD INDEXD 6+ (5+) 2+
$E4 ANDB INDEXD 4+ 2+
$E5 BITB INDEXD 4+ 2+
$E6 LDB INDEXD 4+ 2+
$E7 STB INDEXD 4+ 2+
$E8 EORB INDEXD 4+ 2+
$E9 ADCB INDEXD 4+ 2+
$EA ORB INDEXD 4+ 2+
$EB ADDB INDEXD 4+ 2+
$EC LDD INDEXD 5+ 2+
$ED STD INDEXD 5+ 2+
$EE LDU INDEXD 5+ 2+
$EF STU INDEXD 5+ 2+
$F0 SUBB EXTEND 5 (4) 3
$F1 CMPB EXTEND 5 (4) 3
$F2 SBCB EXTEND 5 (4) 3
$F3 ADDD EXTEND 7 (5) 3
$F4 ANDB EXTEND 5 (4) 3
$F5 BITB EXTEND 5 (4) 3
$F6 LDB EXTEND 5 (4) 3
$F7 STB EXTEND 5 (4) 3
$F8 EORB EXTEND 5 (4) 3
$F9 ADCB EXTEND 5 (4) 3
$FA ORB EXTEND 5 (4) 3
$FB ADDB EXTEND 5 (4) 3
$FC LDD EXTEND 6 (5) 3
$FD STD EXTEND 6 (5) 3
$FE LDU EXTEND 6 (5) 3
$FF STU EXTEND 6 (5) 3
6.2 Instructions whose pre-byte is $10
--Op-- --Mnem-- --Mode-- --Cyc-- --Len --
$21 LBRN REL 5 4
$22 LBHI REL 5/6 (5) 4
$23 LBLS REL 5/6 (5) 4
$24 LBHS/LBCC REL 5/6 (5) 4
$25 LBLO/LBCS REL 5/6 (5) 4
$26 LBNE REL 5/6 (5) 4
$27 LBEQ REL 5/6 (5) 4
$28 LBVC REL 5/6 (5) 4
$29 LBVS REL 5/6 (5) 4
$2A LBPL REL 5/6 (5) 4
$2B LBMI REL 5/6 (5) 4
$2C LBGE REL 5/6 (5) 4
$2D LBLT REL 5/6 (5) 4
$2E LBGT REL 5/6 (5) 4
$2F LBLE REL 5/6 (5) 4
+ $30 ADDR REGIST 4 3
+ $31 ADCR REGIST 4 3
+ $32 SUBR REGIST 4 3
+ $33 SBCR REGIST 4 3
+ $34 ANDR REGIST 4 3
+ $35 ORR REGIST 4 3
+ $36 EORR REGIST 4 3
+ $37 CMPR REGIST 4 3
+ $38 PSHSW IMP 6 2
+ $39 PULSW IMP 6 2
+ $3A PSHUW IMP 6 2
+ $3B PULUW IMP 6 2
$3F SWI2 IMP 20 (22) 2
+ $40 NEGD IMP 3 (2) 2
+ $43 COMD IMP 3 (2) 2
+ $44 LSRD IMP 3 (2) 2
+ $46 RORD IMP 3 (2) 2
+ $47 ASRD IMP 3 (2) 2
+ $48 ASLD IMP 3 (2) 2
+ $49 ROLD IMP 3 (2) 2
+ $4A DECD IMP 3 (2) 2
+ $4C INCD IMP 3 (2) 2
+ $4D TSTD IMP 3 (2) 2
+ $4F CLRD IMP 3 (2) 2
+ $53 COMW IMP 3 (2) 2
+ $54 LSRW IMP 3 (2) 2
+ $56 RORW IMP 3 (2) 2
+ $59 ROLW IMP 3 (2) 2
+ $5A DECW IMP 3 (2) 2
+ $5C INCW IMP 3 (2) 2
+ $5D TSTW IMP 3 (2) 2
+ $5F CLRW IMP 3 (2) 2
+ $80 SUBW IMMED 5 (4) 4
+ $81 CMPW IMMED 5 (4) 4
+ $82 SBCD IMMED 5 (4) 4
$83 CMPD IMMED 5 (4) 4
+ $84 ANDD IMMED 5 (4) 4
+ $85 BITD IMMED 5 (4) 4
+ $86 LDW IMMED 4 4
+ $88 EORD IMMED 5 (4) 4
+ $89 ADCD IMMED 5 (4) 4
+ $8A ORD IMMED 5 (4) 4
+ $8B ADDW IMMED 5 (4) 4
$8C CMPY IMMED 5 (4) 4
$8E LDY IMMED 4 4
+ $90 SUBW DIRECT 7 (5) 3
+ $91 CMPW DIRECT 7 (5) 3
+ $92 SBCD DIRECT 7 (5) 3
$93 CMPD DIRECT 7 (5) 3
+ $94 ANDD DIRECT 7 (5) 3
+ $95 BITD DIRECT 7 (5) 3
+ $96 LDW DIRECT 6 (5) 3
+ $97 STW DIRECT 6 (5) 3
+ $98 EORD DIRECT 7 (5) 3
+ $99 ADCD DIRECT 7 (5) 3
+ $9A ORD DIRECT 7 (5) 3
+ $9B ADDW DIRECT 7 (5) 3
$9C CMPY DIRECT 7 (5) 3
$9E LDY DIRECT 6 (5) 3
$9F STY DIRECT 6 (5) 3
+ $A0 SUBW INDEXD 7+ (6+) 3+
+ $A1 CMPW INDEXD 7+ (6+) 3+
+ $A2 SBCD INDEXD 7+ (6+) 3+
$A3 CMPD INDEXD 7+ (6+) 3+
+ $A4 ANDD INDEXD 7+ (6+) 3+
+ $A5 BITD INDEXD 7+ (6+) 3+
+ $A6 LDW INDEXD 6+ 3+
+ $A7 STW INDEXD 6+ 3+
+ $A8 EORD INDEXD 7+ (6+) 3+
+ $A9 ADCD INDEXD 7+ (6+) 3+
+ $AA ORD INDEXD 7+ (6+) 3+
+ $AB ADDW INDEXD 7+ (6+) 3+
$AC CMPY INDEXD 7+ (6+) 3+
$AE LDY INDEXD 6+ 3+
$AF STY INDEXD 6+ 3+
+ $B0 SUBW EXTEND 8 (6) 4
+ $B1 CMPW EXTEND 8 (6) 4
+ $B2 SBCD EXTEND 8 (6) 4
$B3 CMPD EXTEND 8 (6) 4
+ $B4 ANDD EXTEND 8 (6) 4
+ $B5 BITD EXTEND 8 (6) 4
+ $B6 LDW EXTEND 7 (6) 4
+ $B7 STW EXTEND 7 (6) 4
+ $B8 EORD EXTEND 8 (6) 4
+ $B9 ADCD EXTEND 8 (6) 4
+ $BA ORD EXTEND 8 (6) 4
+ $BB ADDW EXTEND 8 (6) 4
$BC CMPY EXTEND 8 (6) 4
$BE LDY EXTEND 7 (6) 4
$BF STY EXTEND 7 (6) 4
$CE LDS IMMED 4 4
+ $DC LDQ DIRECT 8 (7) 3
+ $DD STQ DIRECT 8 (7) 3
$DE LDS DIRECT 6 (5) 3
$DF STS DIRECT 6 (5) 3
+ $EC LDQ INDEXD 8+ 3+
+ $ED STQ INDEXD 8+ 3+
$EE LDS INDEXD 6+ 3+
$EF STS INDEXD 6+ 3+
+ $FC LDQ EXTEND 9 (8) 4
+ $FD STQ EXTEND 9 (8) 4
$FE LDS EXTEND 7 (6) 4
$FF STS EXTEND 7 (6) 4
6.3 Instructions whose pre-byte is $11
--Op-- --Mnem-- --Mode-- --Cyc-- --Len --
+ $30 BAND 7 (6) 4
+ $31 BIAND 7 (6) 4
+ $32 BOR 7 (6) 4
+ $33 BIOR 7 (6) 4
+ $34 NEOR 7 (6) 4
+ $35 BIEOR 7 (6) 4
+ $36 LDBT 7 (6) 4
+ $37 STBT 8 (7) 4
+ $38 TFR (r1+,r2+) 6+3n 3
+ $39 TFR (r1-,r2-) 6+3n 3
+ $3A TFR (r1+,r) 6+3n 3
+ $3B TFR (r1,r2+) 6+3n 3
+ $3C BITMD IMMED 4 3
+ $3D LDMD IMMED 5 3
$3F SWI2 IMP 20 (22) 2
+ $43 COME IMP 3 (2) 2
+ $4A DECE IMP 3 (2) 2
+ $4C INCE IMP 3 (2) 2
+ $4D TSTE IMP 3 (2) 2
+ $4F CLRE IMP 3 (2) 2
+ $53 COMF IMP 3 (2) 2
+ $5A DECF IMP 3 (2) 2
+ $5C INCF IMP 3 (2) 2
+ $5D TSTF IMP 3 (2) 2
+ $5F CLRF IMP 3 (2) 2
+ $80 SUBE IMMED 3 3
+ $81 CMPE IMMED 3 3
$83 CMPU IMMED 5 (4) 4
+ $86 LDE IMMED 3 3
+ $8B ADDE IMMED 3 3
$8C CMPS IMMED 5 (4) 4
+ $8D DIVD IMMED 25 3
+ $8E DIVQ IMMED 34 4
+ $8F MULD IMMED 28 4
+ $90 SUBE DIRECT 5 (4) 3
+ $91 CMPE DIRECT 5 (4) 3
$93 CMPU DIRECT 7 (5) 3
+ $96 LDE DIRECT 5 (4) 3
+ $97 STE DIRECT 5 (4) 3
+ $9B ADDE DIRECT 5 (4) 3
$9C CMPS DIRECT 7 (5) 3
+ $9D DIVD DIRECT 27 (26) 3
+ $9E DIVQ DIRECT 36 (35) 3
+ $9F MULD DIRECT 30 (29) 3
+ $A0 SUBE INDEXD 5+ 3+
+ $A1 CMPE INDEXD 5+ 3+
$A3 CMPU INDEXD 7+ (6+) 3+
+ $A6 LDE INDEXD 5+ 3+
+ $A7 STE INDEXD 5+ 3+
+ $AB ADDE INDEXD 5+ 3+
$AC CMPS INDEXD 7+ (6+) 3+
+ $AD DIVD INDEXD 27+ 3+
+ $AE DIVQ INDEXD 36+ 3+
+ $AF MULD INDEXD 30+ 3+
+ $B0 SUBE EXTEND 6 (5) 4
+ $B1 CMPE EXTEND 6 (5) 4
$B3 CMPU EXTEND 8 (6) 4
+ $B6 LDE EXTEND 6 (5) 4
+ $B7 STE EXTEND 6 (5) 4
+ $BB ADDE EXTEND 6 (5) 4
$BC CMPS EXTEND 8 (6) 4
+ $BD DIVD EXTEND 28 (27) 4
+ $BE DIVQ EXTEND 37 (36) 4
+ $BF MULD EXTEND 31 (30) 4
+ $C0 SUBF IMMED 3 3
+ $C1 CMPF IMMED 3 3
+ $C6 LDF IMMED 3 3
+ $CB ADDF IMMED 3 3
+ $D0 SUBF DIRECT 5 (4) 3
+ $D1 CMPF DIRECT 5 (4) 3
+ $D6 LDF DIRECT 5 (4) 3
+ $D7 STF DIRECT 5 (4) 3
+ $DB ADDF DIRECT 5 (4) 3
+ $E0 SUBF INDEXD 5+ 3+
+ $E1 CMPF INDEXD 5+ 3+
+ $E6 LDF INDEXD 5+ 3+
+ $E7 STF INDEXD 5+ 3+
+ $EB ADDF INDEXD 5+ 3+
+ $F0 SUBF EXTEND 6 (5) 4
+ $F1 CMPF EXTEND 6 (5) 4
+ $F6 LDF EXTEND 6 (5) 4
+ $F7 STF EXTEND 6 (5) 4
+ $FB ADDF EXTEND 6 (5) 4
<EOF>
===*===*===*===*===*===*===*===*===*===*===*===*===*===*===*===
--
Hirotsugu Kakugawa
Computer Systems Lab., Information Engineering Course,
Graduate School of Engineering, Hiroshima Univ., Japan
Newsgroups: comp.sys.m6809
Subject: A Memo on the Secret Features of 6309
Date: 23 Feb 92 01:10:06 GMT
Organization: Computer Systems Lab., Hiroshima Univ., Japan.
Dear 6309 users
I finished my exam and writing the memo on the seacret features of
6309. In the memo, many fearutes of 6309 are reported but I do not
know ALL of them. In addition to that, my 6309 computer is packed and
kept in my hometown: I cannot tried unclear points.
[
NOTE:
You may have questions about the features written in this meno.
Then, please post your question to comp.sys.m6809; do not send mails
to me. I may not answer your questions since I cannot try the
features now, as I write above. Your questions may be answered by
people who has 6309 based computer.
]
The meno is not complete.
Please try and post the results to comp.sys.m6809!
===*===*===*===*===*===*===*===*===*===*===*===*===*===*===*===
A MEMO ON THE SECRET FEATURES OF 6309
by Hirotsugu Kakugawa, (kakugawa@csl.hiroshima-u.ac.jp)
Computer Systems Lab., Information Engineering Course,
Graduate School of Engineering, Hiroshima Univ., Japan
1. ** INTRODUCTION **
The CPU 6309 by HITACHI has secret features which is not written in
its manual. The purpose of this memo is to introduce them.
The features was originally reported in a magazine,
Oh!FM (1988 Apr.), which was written in Japanese. I did not tried all
of the features reported in the article, but I report the features as
far as I know.
HITACHI says in the manual of 6309 that 6309 is compatible with 6809,
but some OS-9 hackers found that it has secret features.
It has following features:
1. More registers (additional two 8 bit accumulators, 8 bit
register, and a 16 bit register),
2. Two modes (6809 emulation mode and native mode),
3. Reduced execution cycles in native mode,
4. More instructions (16 bit x 16 bit multiplication, 32 bit / 16 bit
division, inter-registers operation, block transfer, bit
manipulating operation which is compatible with 6801 has, etc)
5. Error trap by illegal instruction, zero division.
I substituted 6309 for 6809 in my personal computer, and I changed
OS9/6809 Level II such that the 6309 executes in native mode.
I had to change the interrupt handling routine in the kernel.
I implemented illegal instruction trap; I was really happy because
most bugs are caught by trap handler.
In section 2, new registers are explained. In section 3, two modes of
6309 is explained. In section 4, trapping features of the 6309 is
described. In section 5, new instructions are explained. In section 6,
the instruction tables of the 6309 is shown.
2. ** NEW REGISTERS **
The 6309 has some additional registers that 6809 does not.
1. The E register, the F register
These are 8 bit accumulators. Like the D register is a pair of
the A register and the B register, these two registers can be
used as a 16 bit accumulator. The pair of the E and the F
registers is called the W register.
In addition to that, pair of two 16 bit registers, the D register
and the W register, can be used as a 32 bit accumulator called the
Q register.
2. The V register
This a 16 bit register can be used only by TFR, inter-register
operation, etc. But even if the chip is reseted, contents of
this register does not change. Some people may use this
register to keep constant value (V for value).
3. The MD register
This is a 8 bit register to keep the mode and status of the chip.
The meaning of each bit is as follow.
Read value
bit 7 --- 1 is set if zero division happen.
bit 6 --- 1 is set if illegal instruction is fetched.
Write value
bit 1 --- The mode for FIRQ interrupt.
0 -> the the action for FIRQ is the same as that
of 6809.
1 -> the the action for FIRQ is the same as IRQ.
bit 0 --- The execution mode of 6309.
0 -> the emulation mode.
1 -> the native mode.
(When the chip is reseted, all bits are 0.)
3. ** TWO MODES OF THE 6309 **
The 6309 has two modes, emulation mode and native mode, as described
in the previous section. When the chip is reseted, the initial mode
of 6309 is the emulation mode.
When the 6309 is in the emulation mode, the chip emulates the action
of 6809. But we can use extended registers and extended operations in
this mode. The 6309 executes instructions in the same cycles as 6809
does.
When the 6309 is in the native mode, it executes instructions in
less cycles. And when the chip is interrupted (IRQ, for example),
it pushes extended registers (PC, U, Y, X, DP, W, D, CC, in this
order). If you want to use the 6309, you must rewrite interrupt
handling routine (for example, the entry of system call of OS9).
4. ** TRAPPING **
If the following two events happen, the trap is caused.
1. A illegal instruction is fetched.
2. A number is divided by zero.
The action of the 6309 when a trap is caused is :
1. Pushs the registers on the system stack.
(In the emulation mode, PC, U, Y, X, DP, B, A, CC, in this order
and in the the native mode, PC, U, Y, X, DP, W, B, A, CC in this
order)
2. Reads the trap vector address ($FFF0) and jumps to the vector.
(Note that $FFF0 was reserved by 6809.)
To check the reason of the trap, BITMD instruction is provided. This
instruction is explained in a later section.
5. ** NEW INSTRUCTIONS **
5.1 The Register Addressing Mode
To specify registers in TFR and EXG, the 6809 uses bit pattern of 4 bits.
New registers of the 6309 are specified by bit patterns in TFR and EXG
operations. In addition to that, the bit pattern is also used in
instructions of inter-register operations. We call this bit pattern
used to specify register "register addressing mode".
Bit patterns for new registres are as follows:
W -> 0110,
V -> 0111,
E -> 1110,
F -> 1111.
NOTE: even if the 6309 is in a emulation mode, the action for TFR of 6309
is different from that of the 6809 if new register is specified in
operand. Some hackers found this fact and they guessed that the 6309
has secret registers. At last, they found many features.
5.2 Inter-Register Operations
Operations of 6809 are operations between register and immediate value
or between register and memory. Therefore, we had to store value of
register on memory if opetation between two registers is necessary.
But the 6309 has inter-register operation. Following operations are
provided:
ADDR r0,r1 (ADD of two registers),
ADCR r0,r1 (ADC of two registers),
SUBR r0,r1 (SUB of two registers),
SBCR r0,r1 (SBC of two registers),
ANDR r0,r1 (AND of two registers),
ORR r0,r1 (OR of two registers),
EORR r0,r1 (EOR of two registers),
CMPR r0,r1 (CMP of two registers).
The register addressing mode is used to specify two registers.
(I do not remember exactrlly but the result is stored in r0, the
register of the first operand. Please try and find the behavior of
these instructions.)
5.3 Block Transfer
Block transfer instructions are provided such as Z80 has.
The TFM instruction requires source address and destination address
and block size as its argument. One or two 16 bit registers (X/Y/U/S)
are used to specify source and destination addresses. Block size to be
transfered is specified by the W register.
Four style is provided:
TFR r0+,r1+ (transfered in address is increasing order),
TFR r0-,r1- (transfered in address is decreasing order),
TFR r0+,r1 (poured into the same address, I/O port for instance),
TFR r0,r1+ (read from the same address, I/O port for instance).
I tried this instructions but I do not remember exactly.
Operand registers are pointers of source/destination addresses (,maybe).
Please try and find the behavior of these instructions.
5.4 Multiplication And Division
The 6309 has MULD instruction which performs a 16bit x 16bit multipli-
cation. We can use various addressing modes (immediate, direct, indexed,
extend) The result is stored in the Q register.
Division instructions are also provided. The 6309 has two division
instructions: 16bit / 8bit, 32bit / 16bit divisions.
Various addressing modes (immediate, direct, indexed, extend) can be
used.
(Note:I forget where its result is stored. I tried these instructions.
I remember that modulo is also computed. The quotient and the modulo
are stored D and W resp., maybe. I'm not sure, sorry.)
5.5 Bit Manipulation / Bit Transfer
The 6309 provides AIM, OIM, EIM, TIM instructions which are compatible
with instructions of the Hitachi 6301 CPU. Read the manual of the 6301
to understand thses instructions.
Instructions called BAND, BOR, BEOR, BIAND, BIOR, BIEOR, LDBT, STBT
are provided. Behavior of thses instructions is that a logical
operation is performed for n-th bit of a data in a memory (only direct
mode is allowed) and m-th bit of a register, then the result is stored
in the register. The format of the object is :
$11, x, (post byte), (operand).
The say that the post byte takes strange format. I do not understand
these instructions. Sorry, please try.
5.6 Misc
To change modes ofthe 6309, we have to set the 0th bit of the MD
register. To do this, the LDMD instruction is provided:
LDMD #n (where #n is a immediate n bit data)
When trap is caused, it is necessary to examine the reason of the
trap. The BITMD instruction can be used for this purpose:
BITMD #n (where #n is a immediate n bit data)
The contents of the MD register and #n is ANDed, and changes the CC
register (,maybe, I do not remember exactly).
Once this instruction is executed, the 6th and the 7th bit of the
MD register is CLEARED. Therefore, we can't examine the MD register.
Pushing and poping the W registers on/from stack:
PSHSW (Push the W register on the system stack),
PULSW (Pop the W register from the system stack),
PSHUW (Push the W register on the user stack),
PULUW (Pop the W register from the user stack).
6. ** INSTRUCTION TABLES **
In this section, only additional instructions of the 6309 are
shown.
How to read the following table :
The first column : + ... New instruction of 6309
(blank) ... a instruction of 6089/6309,
--Op-- : Operational code,
--Mnem-- : Mnemonic,
--Mode-- : Addressing mode,
--Cyc-- : Execution Cycles (Parenthesized value is the value
in the native mode),
--Len-- : Length of the instruction,
6.1 Instructions without pre-byte
--Op-- --Mnem-- --Mode-- --Cyc-- --Len --
$00 NEG DIRECT 6 (5) 2
+ $01 OIM DIRECT 6 3
+ $02 AIM DIRECT 6 3
$03 COM DIRECT 6 (5) 2
$04 LSR DIRECT 6 (5) 2
+ $05 EIM DIRECT 6 3
$06 ROR DIRECT 6 (5) 2
$07 ASR DIRECT 6 (5) 2
$08 ASL/LSL DIRECT 6 (5) 2
$09 ROL DIRECT 6 (5) 2
$0A DEC DIRECT 6 (5) 2
+ $0B TIM DIRECT 6 3
$0C INC DIRECT 6 (5) 2
$0D TST DIRECT 6 (4) 2
$0E JMP DIRECT 3 (2) 2
$0F CLR DIRECT 6 (5) 2
$10 (PREBYTE)
$11 (PREBYTE)
$12 NOP IMP 2 (1) 1
$13 SYNC IMP 2 (1) 1
+ $14 SEXW IMP 4 1
$16 LBRA REL 5 (4) 3
$17 LBSR REL 9 (7) 3
$19 DAA IMP 2 (1) 1
$1A ORCC IMMED 3 (2) 2
$1C ANDCC IMMED 3 2
$1D SEX IMP 2 (1) 1
$1E EXG REGIST 8 (5) 2
$1F TFR REGIST 6 (4) 2
$20 BRA REL 3 2
$21 BRN REL 3 2
$22 BHI REL 3 2
$23 BLS REL 3 2
$24 BHS/BCC REL 3 2
$25 BLO/BCS REL 3 2
$26 BNE REL 3 2
$27 BEQ REL 3 2
$28 BVC REL 3 2
$29 BVS REL 3 2
$2A BPL REL 3 2
$2B BMI REL 3 2
$2C BGE REL 3 2
$2D BLT REL 3 2
$2E BGT REL 3 2
$2F BLE REL 3 2
$30 LEAX REL 4+ 2+
$31 LEAY REL 4+ 2+
$32 LEAS REL 4+ 2+
$33 LEAU REL 4+ 2+
$34 PSHS REGIST 5+ (4+) 2
$35 PULS REGIST 5+ (4+) 2
$36 PSHU REGIST 5+ (4+) 2
$37 PULU REGIST 5+ (4+) 2
$39 RTS 5 (4) 1
$3A ABX IMP 3 (1) 1
$3B RTI IMP 6/15 (17) 1
$3C CWAI IMP 22 (20) 2
$3D MUL IMP 11 (10) 1
$3F SWI IMP 19 (21) 1
$40 NEGA IMP 2 (1) 1
$43 COMA IMP 2 (1) 1
$44 LSRA IMP 2 (1) 1
$46 RORA IMP 2 (1) 1
$47 ASRA IMP 2 (1) 1
$48 ASLA/LSLA IMP 2 (1) 1
$49 ROLA IMP 2 (1) 1
$4A DECA IMP 2 (1) 1
$4C INCA IMP 2 (1) 1
$4D TSTA IMP 2 (1) 1
$4F CLRA IMP 2 (1) 1
$50 NEGB IM P 2 (1) 1
$53 COMB IMP 2 (1) 1
$54 LSRB IMP 2 (1) 1
$56 RORB IMP 2 (1) 1
$57 ASRB IMP 2 (1) 1
$58 ASLB/LSLB IMP 2 (1) 1
$59 ROLB IMP 2 (1) 1
$5A ECB IMP 2 (1) 1
$5C NCB IMP 2 (1) 1
$5D STB IMP 2 (1) 1
$5F LRB IMP 2 (1) 1
$60 NEG INDEXD 6+ 2+
+ $61 OIM INDEXD 7+ 3+
+ $62 AIM INDEXD 7 3+
$63 COM INDEXD 6+ 2+
$64 LSR INDEXD 6+ 2+
+ $65 EIM INDEXD 7+ 3+
$66 ROR INDEXD 6+ 2+
$67 ASR INDEXD 6+ 2+
$68 ASL/LSL INDEXD 6+ 2+
$69 ROL INDEXD 6+ 2+
$6A DEC INDEXD 6+ 2+
+ $6B TIM INDEXD 7+ 3+
$6C INC INDEXD 6+ 2+
$6D TST INDEXD 6+ (5+) 2+
$6E JMP INDEXD 3+ 2+
$6F CLR INDEXD 6+ 2+
$70 NEG EXTEND 7 (6) 3
+ $71 OIM EXTEND 7 4
+ $72 AIM EXTEND 7 4
$73 COM EXTEND 7 (6) 3
$74 LSR EXTEND 7 (6) 3
+ $75 EIM EXTEND 7 4
$76 ROR EXTEND 7 (6) 3
$77 ASR EXTEND 7 (6) 3
$78 ASL/LSL EXTEND 7 (6) 3
$79 ROL EXTEND 7 (6) 3
$7A DEC EXTEND 7 (6) 3
+ $7B TIM EXTEND 5 4
$7C INC EXTEND 7 (6) 3
$7D TST EXTEND 7 (5) 3
$7E JMP EXTEND 4 (3) 3
$7F CLR EXTEND 7 (6) 3
$80 SUBA IMMED 2 2
$81 CMPA IMMED 2 2
$82 SBCA IMMED 2 2
$83 SUBD IMMED 4 (3) 3
$84 ANDA IMMED 2 2
$85 BITA IMMED 2 2
$86 LDA IMMED 2 2
$88 EORA IMMED 2 2
$89 ADCA IMMED 2 2
$8A ORA IMMED 2 2
$8B ADDA IMMED 2 2
$8C CMPX IMMED 4 (3) 3
$8D BSR IMMED 7 (6) 2
$8E LDX IMMED 3 3
$90 SUBA DIRECT 4 (3) 2
$91 CMPA DIRECT 4 (3) 2
$92 SBCA DIRECT 4 (3) 2
$93 SUBD DIRECT 6 (4) 3
$94 ANDA DIRECT 4 (3) 2
$95 BITA DIRECT 4 (3) 2
$96 LDA DIRECT 4 (3) 2
$97 STA DIRECT 4 (3) 2
$98 EORA DIRECT 4 (3) 2
$99 ADCA DIRECT 4 (3) 2
$9A ORA DIRECT 4 (3) 2
$9B ADDA DIRECT 4 (3) 2
$9C CMPX DIRECT 6 (4) 2
$9D JSR DIRECT 7 (6) 2
$9E LDX DIRECT 5 (4) 2
$9F STX DIRECT 5 (4) 2
$A0 SUBA INDEXD 4+ 2+
$A1 CMPA INDEXD 4+ 2+
$A2 SBCA INDEXD 4+ 2+
$A3 SUBD INDEXD 6+ (5+) 2+
$A4 ANDA INDEXD 4+ 2+
$A5 BITA INDEXD 4+ 2+
$A6 LDA INDEXD 4+ 2+
$A7 STA INDEXD 4+ 2+
$A8 EORA INDEXD 4+ 2+
$A9 ADCA INDEXD 4+ 2+
$AA ORA INDEXD 4+ 2+
$AB ADDA INDEXD 4+ 2+
$AC CMPX INDEXD 6+ (5+) 2+
$AD JSR INDEXD 7+ (6+) 2+
$AE LDX INDEXD 5+ 2+
$AF STX INDEXD 5+ 2+
$B0 SUBA EXTEND 5 (4) 3
$B1 CMPA EXTEND 5 (4) 3
$B2 SBCA EXTEND 5 (4) 3
$B3 SUBD EXTEND 7 (5) 3
$B4 ANDA EXTEND 5 (4) 3
$B5 BITA EXTEND 5 (4) 3
$B6 LDA EXTEND 5 (4) 3
$B7 STA EXTEND 5 (4) 3
$B8 EORA EXTEND 5 (4) 3
$B9 ADCA EXTEND 5 (4) 3
$BA ORA EXTEND 5 (4) 3
$BB ADDA EXTEND 5 (4) 3
$BC CMPX EXTEND 7 (5) 3
$BD JSR EXTEND 8 (7) 3
$BE LDX EXTEND 6 (5) 3
$BF STX EXTEND 6 (5) 3
$C0 SUBB IMMED 2 2
$C1 CMPB IMMED 2 2
$C2 SBCB IMMED 2 2
$C3 ADDD IMMED 4 (3) 3
$C4 ANDB IMMED 2 2
$C5 BITB IMMED 2 2
$C6 LDB IMMED 2 2
$C8 EORB IMMED 2 2
$C9 ADCB IMMED 2 2
$CA ORB IMMED 2 2
$CB ADDB IMMED 2 2
$CC LDD IMMED 3 3
+ $CD LDQ IMMED 5 5
$CE LDU IMMED 3 3
$D0 SUBB DIRECT 4 (3) 2
$D1 CMPB DIRECT 4 (3) 2
$D2 SBCB DIRECT 4 (3) 2
$D3 ADDD DIRECT 6 (4) 3
$D4 ANDB DIRECT 4 (3) 2
$D5 BITB DIRECT 4 (3) 2
$D6 LDB DIRECT 4 (3) 2
$D7 STB DIRECT 4 (3) 2
$D8 EORB DIRECT 4 (3) 2
$D9 ADCB DIRECT 4 (3) 2
$DA ORB DIRECT 4 (3) 2
$DB ADDB DIRECT 4 (3) 2
$DC LDD DIRECT 5 (4) 2
$DD STD DIRECT 5 (4) 2
$DE LDU DIRECT 5 (4) 2
$DF STU DIRECT 5 (4) 2
$E0 SUBB INDEXD 4+ 2+
$E1 CMPB INDEXD 4+ 2+
$E2 SBCB INDEXD 4+ 2+
$E3 ADDD INDEXD 6+ (5+) 2+
$E4 ANDB INDEXD 4+ 2+
$E5 BITB INDEXD 4+ 2+
$E6 LDB INDEXD 4+ 2+
$E7 STB INDEXD 4+ 2+
$E8 EORB INDEXD 4+ 2+
$E9 ADCB INDEXD 4+ 2+
$EA ORB INDEXD 4+ 2+
$EB ADDB INDEXD 4+ 2+
$EC LDD INDEXD 5+ 2+
$ED STD INDEXD 5+ 2+
$EE LDU INDEXD 5+ 2+
$EF STU INDEXD 5+ 2+
$F0 SUBB EXTEND 5 (4) 3
$F1 CMPB EXTEND 5 (4) 3
$F2 SBCB EXTEND 5 (4) 3
$F3 ADDD EXTEND 7 (5) 3
$F4 ANDB EXTEND 5 (4) 3
$F5 BITB EXTEND 5 (4) 3
$F6 LDB EXTEND 5 (4) 3
$F7 STB EXTEND 5 (4) 3
$F8 EORB EXTEND 5 (4) 3
$F9 ADCB EXTEND 5 (4) 3
$FA ORB EXTEND 5 (4) 3
$FB ADDB EXTEND 5 (4) 3
$FC LDD EXTEND 6 (5) 3
$FD STD EXTEND 6 (5) 3
$FE LDU EXTEND 6 (5) 3
$FF STU EXTEND 6 (5) 3
6.2 Instructions whose pre-byte is $10
--Op-- --Mnem-- --Mode-- --Cyc-- --Len --
$21 LBRN REL 5 4
$22 LBHI REL 5/6 (5) 4
$23 LBLS REL 5/6 (5) 4
$24 LBHS/LBCC REL 5/6 (5) 4
$25 LBLO/LBCS REL 5/6 (5) 4
$26 LBNE REL 5/6 (5) 4
$27 LBEQ REL 5/6 (5) 4
$28 LBVC REL 5/6 (5) 4
$29 LBVS REL 5/6 (5) 4
$2A LBPL REL 5/6 (5) 4
$2B LBMI REL 5/6 (5) 4
$2C LBGE REL 5/6 (5) 4
$2D LBLT REL 5/6 (5) 4
$2E LBGT REL 5/6 (5) 4
$2F LBLE REL 5/6 (5) 4
+ $30 ADDR REGIST 4 3
+ $31 ADCR REGIST 4 3
+ $32 SUBR REGIST 4 3
+ $33 SBCR REGIST 4 3
+ $34 ANDR REGIST 4 3
+ $35 ORR REGIST 4 3
+ $36 EORR REGIST 4 3
+ $37 CMPR REGIST 4 3
+ $38 PSHSW IMP 6 2
+ $39 PULSW IMP 6 2
+ $3A PSHUW IMP 6 2
+ $3B PULUW IMP 6 2
$3F SWI2 IMP 20 (22) 2
+ $40 NEGD IMP 3 (2) 2
+ $43 COMD IMP 3 (2) 2
+ $44 LSRD IMP 3 (2) 2
+ $46 RORD IMP 3 (2) 2
+ $47 ASRD IMP 3 (2) 2
+ $48 ASLD IMP 3 (2) 2
+ $49 ROLD IMP 3 (2) 2
+ $4A DECD IMP 3 (2) 2
+ $4C INCD IMP 3 (2) 2
+ $4D TSTD IMP 3 (2) 2
+ $4F CLRD IMP 3 (2) 2
+ $53 COMW IMP 3 (2) 2
+ $54 LSRW IMP 3 (2) 2
+ $56 RORW IMP 3 (2) 2
+ $59 ROLW IMP 3 (2) 2
+ $5A DECW IMP 3 (2) 2
+ $5C INCW IMP 3 (2) 2
+ $5D TSTW IMP 3 (2) 2
+ $5F CLRW IMP 3 (2) 2
+ $80 SUBW IMMED 5 (4) 4
+ $81 CMPW IMMED 5 (4) 4
+ $82 SBCD IMMED 5 (4) 4
$83 CMPD IMMED 5 (4) 4
+ $84 ANDD IMMED 5 (4) 4
+ $85 BITD IMMED 5 (4) 4
+ $86 LDW IMMED 4 4
+ $88 EORD IMMED 5 (4) 4
+ $89 ADCD IMMED 5 (4) 4
+ $8A ORD IMMED 5 (4) 4
+ $8B ADDW IMMED 5 (4) 4
$8C CMPY IMMED 5 (4) 4
$8E LDY IMMED 4 4
+ $90 SUBW DIRECT 7 (5) 3
+ $91 CMPW DIRECT 7 (5) 3
+ $92 SBCD DIRECT 7 (5) 3
$93 CMPD DIRECT 7 (5) 3
+ $94 ANDD DIRECT 7 (5) 3
+ $95 BITD DIRECT 7 (5) 3
+ $96 LDW DIRECT 6 (5) 3
+ $97 STW DIRECT 6 (5) 3
+ $98 EORD DIRECT 7 (5) 3
+ $99 ADCD DIRECT 7 (5) 3
+ $9A ORD DIRECT 7 (5) 3
+ $9B ADDW DIRECT 7 (5) 3
$9C CMPY DIRECT 7 (5) 3
$9E LDY DIRECT 6 (5) 3
$9F STY DIRECT 6 (5) 3
+ $A0 SUBW INDEXD 7+ (6+) 3+
+ $A1 CMPW INDEXD 7+ (6+) 3+
+ $A2 SBCD INDEXD 7+ (6+) 3+
$A3 CMPD INDEXD 7+ (6+) 3+
+ $A4 ANDD INDEXD 7+ (6+) 3+
+ $A5 BITD INDEXD 7+ (6+) 3+
+ $A6 LDW INDEXD 6+ 3+
+ $A7 STW INDEXD 6+ 3+
+ $A8 EORD INDEXD 7+ (6+) 3+
+ $A9 ADCD INDEXD 7+ (6+) 3+
+ $AA ORD INDEXD 7+ (6+) 3+
+ $AB ADDW INDEXD 7+ (6+) 3+
$AC CMPY INDEXD 7+ (6+) 3+
$AE LDY INDEXD 6+ 3+
$AF STY INDEXD 6+ 3+
+ $B0 SUBW EXTEND 8 (6) 4
+ $B1 CMPW EXTEND 8 (6) 4
+ $B2 SBCD EXTEND 8 (6) 4
$B3 CMPD EXTEND 8 (6) 4
+ $B4 ANDD EXTEND 8 (6) 4
+ $B5 BITD EXTEND 8 (6) 4
+ $B6 LDW EXTEND 7 (6) 4
+ $B7 STW EXTEND 7 (6) 4
+ $B8 EORD EXTEND 8 (6) 4
+ $B9 ADCD EXTEND 8 (6) 4
+ $BA ORD EXTEND 8 (6) 4
+ $BB ADDW EXTEND 8 (6) 4
$BC CMPY EXTEND 8 (6) 4
$BE LDY EXTEND 7 (6) 4
$BF STY EXTEND 7 (6) 4
$CE LDS IMMED 4 4
+ $DC LDQ DIRECT 8 (7) 3
+ $DD STQ DIRECT 8 (7) 3
$DE LDS DIRECT 6 (5) 3
$DF STS DIRECT 6 (5) 3
+ $EC LDQ INDEXD 8+ 3+
+ $ED STQ INDEXD 8+ 3+
$EE LDS INDEXD 6+ 3+
$EF STS INDEXD 6+ 3+
+ $FC LDQ EXTEND 9 (8) 4
+ $FD STQ EXTEND 9 (8) 4
$FE LDS EXTEND 7 (6) 4
$FF STS EXTEND 7 (6) 4
6.3 Instructions whose pre-byte is $11
--Op-- --Mnem-- --Mode-- --Cyc-- --Len --
+ $30 BAND 7 (6) 4
+ $31 BIAND 7 (6) 4
+ $32 BOR 7 (6) 4
+ $33 BIOR 7 (6) 4
+ $34 NEOR 7 (6) 4
+ $35 BIEOR 7 (6) 4
+ $36 LDBT 7 (6) 4
+ $37 STBT 8 (7) 4
+ $38 TFR (r1+,r2+) 6+3n 3
+ $39 TFR (r1-,r2-) 6+3n 3
+ $3A TFR (r1+,r) 6+3n 3
+ $3B TFR (r1,r2+) 6+3n 3
+ $3C BITMD IMMED 4 3
+ $3D LDMD IMMED 5 3
$3F SWI2 IMP 20 (22) 2
+ $43 COME IMP 3 (2) 2
+ $4A DECE IMP 3 (2) 2
+ $4C INCE IMP 3 (2) 2
+ $4D TSTE IMP 3 (2) 2
+ $4F CLRE IMP 3 (2) 2
+ $53 COMF IMP 3 (2) 2
+ $5A DECF IMP 3 (2) 2
+ $5C INCF IMP 3 (2) 2
+ $5D TSTF IMP 3 (2) 2
+ $5F CLRF IMP 3 (2) 2
+ $80 SUBE IMMED 3 3
+ $81 CMPE IMMED 3 3
$83 CMPU IMMED 5 (4) 4
+ $86 LDE IMMED 3 3
+ $8B ADDE IMMED 3 3
$8C CMPS IMMED 5 (4) 4
+ $8D DIVD IMMED 25 3
+ $8E DIVQ IMMED 34 4
+ $8F MULD IMMED 28 4
+ $90 SUBE DIRECT 5 (4) 3
+ $91 CMPE DIRECT 5 (4) 3
$93 CMPU DIRECT 7 (5) 3
+ $96 LDE DIRECT 5 (4) 3
+ $97 STE DIRECT 5 (4) 3
+ $9B ADDE DIRECT 5 (4) 3
$9C CMPS DIRECT 7 (5) 3
+ $9D DIVD DIRECT 27 (26) 3
+ $9E DIVQ DIRECT 36 (35) 3
+ $9F MULD DIRECT 30 (29) 3
+ $A0 SUBE INDEXD 5+ 3+
+ $A1 CMPE INDEXD 5+ 3+
$A3 CMPU INDEXD 7+ (6+) 3+
+ $A6 LDE INDEXD 5+ 3+
+ $A7 STE INDEXD 5+ 3+
+ $AB ADDE INDEXD 5+ 3+
$AC CMPS INDEXD 7+ (6+) 3+
+ $AD DIVD INDEXD 27+ 3+
+ $AE DIVQ INDEXD 36+ 3+
+ $AF MULD INDEXD 30+ 3+
+ $B0 SUBE EXTEND 6 (5) 4
+ $B1 CMPE EXTEND 6 (5) 4
$B3 CMPU EXTEND 8 (6) 4
+ $B6 LDE EXTEND 6 (5) 4
+ $B7 STE EXTEND 6 (5) 4
+ $BB ADDE EXTEND 6 (5) 4
$BC CMPS EXTEND 8 (6) 4
+ $BD DIVD EXTEND 28 (27) 4
+ $BE DIVQ EXTEND 37 (36) 4
+ $BF MULD EXTEND 31 (30) 4
+ $C0 SUBF IMMED 3 3
+ $C1 CMPF IMMED 3 3
+ $C6 LDF IMMED 3 3
+ $CB ADDF IMMED 3 3
+ $D0 SUBF DIRECT 5 (4) 3
+ $D1 CMPF DIRECT 5 (4) 3
+ $D6 LDF DIRECT 5 (4) 3
+ $D7 STF DIRECT 5 (4) 3
+ $DB ADDF DIRECT 5 (4) 3
+ $E0 SUBF INDEXD 5+ 3+
+ $E1 CMPF INDEXD 5+ 3+
+ $E6 LDF INDEXD 5+ 3+
+ $E7 STF INDEXD 5+ 3+
+ $EB ADDF INDEXD 5+ 3+
+ $F0 SUBF EXTEND 6 (5) 4
+ $F1 CMPF EXTEND 6 (5) 4
+ $F6 LDF EXTEND 6 (5) 4
+ $F7 STF EXTEND 6 (5) 4
+ $FB ADDF EXTEND 6 (5) 4
<EOF>
===*===*===*===*===*===*===*===*===*===*===*===*===*===*===*===
--
Hirotsugu Kakugawa
Computer Systems Lab., Information Engineering Course,
Graduate School of Engineering, Hiroshima Univ., Japan
Comments
Post a Comment