akcs.joehorn@hpcvbbs.UUCP (Joseph K. Horn) (06/03/91)
The Rosetta Stone
HP <-> AG Mnemonics
Compiled by Joseph K. Horn.
from the HP-mnemonics list by Derek S. Nickel, dated 30 January 1991
and the AG disassembly program "DISD" by Kevin Pryor.
(Both can be found on EduCALC Goodies Disk #2).
Syntax:
HEX HP | AG
Unknowns are listed as "???".
Please post all errors and omissions discovered. Thank you. -jkh-
================================================================
0... misc operations (see next page)
1... data movement/loading (see following page)
2n P= n | MOVE.1 n,P
3xn..n LC(x) n..n | ???
3mc..c LCASC \A..A\ | ???
3nh..h LCHEX h..h | MOVE .Pn hhh,C
400 RTNC | RETCS
4aa GOC label | BRCS PC+(aa+1)
420 NOP3 | NOP3
500 RTNNC | RETCC
5aa GONC label | BRCC PC+(aa+1)
6aaa GOTO label | JUMP.3 PC+(aa+1)
6300 NOP4 | NOP4
64000 NOP5 | NOP5
7aaa GOSUB label | CALL.3 PC+(aa+4)
A...F (see pages at end)
================================================================
0
================================================================
00 RTNSXM | RETSETXM
01 RTN | RET
02 RTNSC | RETSETC
03 RTNCC | RETCLRC
04 SETHEX | SETHEX
05 SETDEC | SETDEC
06 RSTK=C | PUSH.A C
07 C=RSTK | POP.A C
08 CLRST | CLR.X ST
09 C=ST | MOVE.X C,ST
0A ST=C | MOVE.X ST,C
0B CSTEX | SWAP.X C,ST
0C P=P+1 | INC.1 P
0D P=P-1 | DEC.1 P
0Exx (see below)
0F RTI | RETI
(see "fs" field select table below)
0Ea0 A=A&B fs | AND.fs B,A
0Ea1 B=B&C fs | AND.fs C,B
0Ea2 C=C&A fs | AND.fs A,C
0Ea3 D=D&C fs | AND.fs C,D
0Ea4 B=B&A fs | AND.fs A,B
0Ea5 C=C&B fs | AND.fs B,C
0Ea6 A=A&C fs | AND.fs C,A
0Ea7 C=C&D fs | AND.fs D,C
0Ea8 A=A!B fs | OR.fs B,A
0Ea9 B=B!C fs | OR.fs C,B
0EaA C=C!A fs | OR.fs A,C
0EaB D=D!C fs | OR.fs C,D
0EaC B=B!A fs | OR.fs A,B
0EaD C=C!B fs | OR.fs B,C
0EaE A=A!C fs | OR.fs C,A
0EaF C=C!D fs | OR.fs D,C
fs: P WP XS X S M B W A <-- use this "fs" field
a: 0 1 2 3 4 5 6 7 F <-- for this value of "a" above
================================================================
10, 11, 12
================================================================
100 R0=A | MOVE.W A,R0
101 R1=A | MOVE.W A,R1
102 R2=A | MOVE.W A,R2
103 R3=A | MOVE.W A,R3
104 R4=A | MOVE.W A,R4
108 R0=C | MOVE.W C,R0
109 R1=C | MOVE.W C,R1
10A R2=C | MOVE.W C,R2
10B R3=C | MOVE.W C,R3
10C R4=C | MOVE.W C,R4
110 A=R0 | MOVE.W R0,A
111 A=R1 | MOVE.W R1,A
112 A=R2 | MOVE.W R2,A
113 A=R3 | MOVE.W R3,A
114 A=R4 | MOVE.W R4,A
118 C=R0 | MOVE.W R0,C
119 C=R1 | MOVE.W R1,C
11A C=R2 | MOVE.W R2,C
11B C=R3 | MOVE.W R3,C
11C C=R4 | MOVE.W R4,C
120 AR0EX | SWAP.W A,R0
121 AR1EX | SWAP.W A,R1
122 AR2EX | SWAP.W A,R2
123 AR3EX | SWAP.W A,R3
124 AR4EX | SWAP.W A,R4
128 CR0EX | SWAP.W C,R0
129 CR1EX | SWAP.W C,R1
12A CR2EX | SWAP.W C,R2
12B CR3EX | SWAP.W C,R3
12C CR4EX | SWAP.W C,R4
================================================================
13 through 1F
================================================================
130 D0=A | MOVE.A A,D0
131 D1=A | MOVE.A A,D1
132 AD0EX | SWAP.A A,D0
133 AD1EX | SWAP.A A,D1
134 D0=C | MOVE.A C,D0
135 D1=C | MOVE.A C,D1
136 CD0EX | SWAP.A C,D0
137 CD1EX | SWAP.A C,D1
138 D0=AS | MOVE.4 A,D0
139 D1=AS | MOVE.4 A,D1
13A AD0XS | SWAP.4 A,D0
13B AD1XS | SWAP.4 A,D1
13C D0=CS | MOVE.4 C,D0
13D D1=CS | MOVE.4 C,D1
13E CD0XS | SWAP.4 C,D0
13F CD1XS | SWAP.4 C,D1
---------- field -----------
A B fs d
----------------------------
140 148 150a 158x DAT0=A field | MOVE.field A,@D0
141 149 151a 159x DAT1=A field | MOVE.field A,@D1
142 14A 152a 15Ax A=DAT0 field | MOVE.field @D0,A
143 14B 153a 15Bx A=DAT1 field | MOVE.field @D1,A
144 14C 154a 15Cx DAT0=C field | MOVE.field C,@D0
145 14D 155a 15Dx DAT1=C field | MOVE.field C,@D1
146 14E 156a 15Ex C=DAT0 field | MOVE.field @D0,C
147 14F 157a 15Fx C=DAT1 field | MOVE.field @D1,C
16x D0=D0+ n | ADD.A n,D0
17x D1=D1+ n | ADD.A n,D1
18x D0=D0- n | SUB.A n,D0
19nn D0=(2) nn | ???
19hh D0=HEX hh | MOVE.2 hh,D0
1Annnn D0=(4) nnnn | ???
1Ahhhh D0=HEX hhhh | MOVE.4 hhhh,D0
1Bnnnnn D0=(5) nnnnn | ???
1Bhhhhh D0=HEX hhhhh | MOVE.5 hhhhh,D0
1Cx D1=D1- n | SUB.A n,D1
1Dnn D1=(2) nn | ???
1Dhh D1=HEX hh | MOVE.2 hh,D1
1Ennnn D1=(4) nnnn | ???
1Ehhhh D1=HEX hhhh | MOVE.4 hhhh,D1
1Fnnnnn D1=(5) nnnnn | ???
1Fhhhhh D1=HEX hhhhh | MOVE.5 hhhhh,D1
fs: P WP XS X S M B W
a: 0 1 2 3 4 5 6 7
x = d - 1 x = n - 1
d = x + 1 n = x + 1
================================================================
80
================================================================
800 OUT=CS | OUT.S C
801 OUT=C | OUT.X C
802 A=IN | IN.4 A
803 C=IN | IN.4 C
804 UNCNFG | UNCNFG
805 CONFIG | CONFIG
806 C=ID | MOVE.A ID,C
807 SHUTDN | SHUTDN
8080 INTON | INTON
80810 RSI | RSI
8082xn..n LA(m) n..n | ???
8082mc..c LAASC \A..A\ | ???
8082nh..h LAHEX h..h | MOVE.Pd h..h,A
8083 BUSCB | BUSCB
8084n ABIT=0 d | CLRB d,A
8085n ABIT=1 d | SETB d,A
8086nyy ?ABIT=0 d | BRBC d,A,PC+(yy+5) / RETBC d,A (yy=0)
8087nyy ?ABIT=1 d | BRBS d,A,PC+(yy+5) / RETBS d,A (yy=0)
8088n CBIT=0 d | CLRB d,C
8089n CBIT=1 d | SETB d,C
808Anyy ?CBIT=0 d | BRBC d,C,PC+(yy+5) / RETBC d,C (yy=0)
808Bnyy ?CBIT=1 d | BRBS d,C,PC+(yy+5) / RETBS d,C (yy=0)
808C PC=(A) | JUMP.A @A
808D BUSCD | BUSCD
808E PC=(C) | JUMP.A @C
808F INTOFF | INTOFF
809 C+P+1 | ADD.A P+1,C
80A RESET | RESET
80B BUSCC | BUSCC
80Cn C=P n | MOVE.1 P,C,n
80Dn P=C n | MOVE.1 C,n,P
80E SREQ? | SREQ
80Fn CPEX n | SWAP.1 P,C,n
================================================================
81
================================================================
810 ASLC | RLN.W A
811 BSLC | RLN.W B
812 CSLC | RLN.W C
813 DSLC | RLN.W D
814 ASRC | RRN.W A
815 BSRC | RRN.W B
816 CSRC | RRN.W C
817 DSRC | RRN.W D
81C ASRB | SRB.W A
81D BSRB | SRB.W B
81E CSRB | SRB.W C
81F DSRB | SRB.W D
-- field ---
fs A
------------
818a0x ??? A=A+n field | ADD.field n,A
818a1x ??? B=B+n field | ADD.field n,B
818a2x ??? C=C+n field | ADD.field n,C
818a3x ??? D=D+n field | ADD.field n,D
818b0x ??? A=A-n field | SUB.field n,A
818b1x ??? B=B-n field | SUB.field n,B
818b2x ??? C=C-n field | SUB.field n,C
818b3x ??? D=D-n field | SUB.field n,D
fs: P WP XS X S M B W
a: 0 1 2 3 4 5 6 7
b: 8 9 A B C D E F
================================================================
82 through 8F, 9
================================================================
82n (no opcode) | CLRB [MP,SR,SB,XM] (binary; see **)
821 XM=0 | CLRB XM [-- -- -- !! -> 1]
822 SB=0 | CLRB SB [-- -- !! -- -> 2]
824 SR=0 | CLRB SR [-- !! -- -- -> 4]
828 MP=0 | CLRB MP [!! -- -- -- -> 8]
82F CLRHST | CLRB XM,SB,SR,MP
** e.g. 829 = CLRB XM,MP
831yy ?XM=0 | BRBC XM,PC+(yy+3) / RETBC XM (yy=0)
832yy ?SB=0 | BRBC SB,PC+(yy+3) / RETBC SB (yy=0)
834yy ?SR=0 | BRBC SR,PC+(yy+3) / RETBC SR (yy=0)
838yy ?MP=0 | BRBC MP,PC+(yy+3) / RETBC MP (yy=0)
84n ST=0 n | CLRB n,ST
85n ST=1 n | SETB n,ST
86nyy ?ST=0 n | BRBC n,ST,PC+(yy+3) / RETBC n,ST (yy=0)
87nyy ?ST=1 n | BRBS n,ST,PC+(yy+3) / RETBS n,ST (yy=0)
88nyy ?P# n | BRNE.1 P,n,PC+(yy+3) / RETNE.1 P,n
89nyy ?P= n | BREQ.1 P,n,PC+(yy+3) / RETEQ.1 P,n
8A...8b... (see below)
8Caaaa GOLONG label | JUMP.4 PC+(aaaa+2)
8Daaaaa GOVLNG label ! JUMP.A aaaaa
8Eaaaa GOSUBL label ! CALL.4 PC+(aaaa+6)
8Faaaaa GOSBVL label ! CALL.A aaaaa
9zxyy (see below)
test00 RTNYES ! (not needed; see test mnemonics)
testyy GOYES label ! (not needed; see test mnemonics)
Relative gotos (GOTO, GOLONG, GOC, GONC, GOYES):
Offset is relative to the first nibble of the offset.
Relative gosubs (GOSUBm GOSUBL):
Offset is relative to the first nibble of the next instruction.
================================================================
8A, 8B, 9
================================================================
--- field ----
A fs
--------------
8A0yy 9a0yy ?A=B field | BREQ.field A,B,PC+(yy+3) **
8A1yy 9a1yy ?B=C field | BREQ.field B,C,PC+(yy+3)
8A2yy 9a2yy ?A=C field | BREQ.field A,C,PC+(yy+3)
8A3yy 9a3yy ?C=D field | BREQ.field C,D,PC+(yy+3)
8A4yy 9a4yy ?A#B field | BRNE.field A,B,PC+(yy+3)
8A5yy 9a5yy ?B#C field | BRNE.field B,C,PC+(yy+3)
8A6yy 9a6yy ?A#C field | BRNE.field A,C,PC+(yy+3)
8A7yy 9a7yy ?C#D field | BRNE.field C,D,PC+(yy+3)
8A8yy 9a8yy ?A=0 field | BRZ.field A,PC+(yy+3)
8A9yy 9a9yy ?B=0 field | BRZ.field B,PC+(yy+3)
8AAyy 9aAyy ?C=0 field | BRZ.field C,PC+(yy+3)
8AByy 9aByy ?D=0 field | BRZ.field D,PC+(yy+3)
8ACyy 9aCyy ?A#0 field | BRNZ.field A,PC+(yy+3)
8ADyy 9aDyy ?B#0 field | BRNZ.field B,PC+(yy+3)
8AEyy 9aEyy ?C#0 field | BRNZ.field C,PC+(yy+3)
8AFyy 9aFyy ?D#0 field | BRNZ.field D,PC+(yy+3)
8B0yy 9b0yy ?A>B field | BRGT.field A,B,PC+(yy+3) **
8B1yy 9b1yy ?B>C field | BRGT.field B,C,PC+(yy+3)
8B2yy 9b2yy ?C>A field | BRGT.field C,A,PC+(yy+3)
8B3yy 9b3yy ?D>C field | BRGT.field D,C,PC+(yy+3)
8B4yy 9b4yy ?A<B field | BRLT.field A,B,PC+(yy+3)
8B5yy 9b5yy ?B<C field | BRLT.field B,C,PC+(yy+3)
8B6yy 9b6yy ?C<A field | BRLT.field C,A,PC+(yy+3)
8B7yy 9b7yy ?D<C field | BRLT.field D,C,PC+(yy+3)
8B8yy 9b8yy ?A>=B field | BRGE.field A,B,PC+(yy+3)
8B9yy 9b9yy ?B>=C field | BRGE.field B,C,PC+(yy+3)
8BAyy 9bAyy ?C>=A field | BRGE.field C,A,PC+(yy+3)
8BByy 9bByy ?D>=C field | BRGE.field D,C,PC+(yy+3)
8BCyy 9bCyy ?A<=B field | BRLE.field A,B,PC+(yy+3)
8BDyy 9bDyy ?B<=C field | BRLE.field B,C,PC+(yy+3)
8BEyy 9bEyy ?C<=A field | BRLE.field C,A,PC+(yy+3)
8BFyy 9bFyy ?D<=C field | BRLE.field D,C,PC+(yy+3)
** RET instead of BR for all of the above, if yy=0.
fs: P WP XS X S M B W
a: 0 1 2 3 4 5 6 7
b: 8 9 A B C D E F
================================================================
A, C, D
================================================================
-- field --
A fs
-----------
C0 Aa0 A=A+B field | ADD.field B,A
C1 Aa1 B=B+C field | ADD.field C,B
C2 Aa2 C=C+A field | ADD.field A,C
C3 Aa3 D=D+C field | ADD.field C,D
C4 Aa4 A=A+A field | ADD.field A,A
C5 Aa5 B=B+B field | ADD.field B,B
C6 Aa6 C=C+C field | ADD.field C,C
C7 Aa7 D=D+D field | ADD.field D,D
C8 Aa8 B=B+A field | ADD.field A,B
C9 Aa9 C=C+B field | ADD.field B,C
CA AaA A=A+C field | ADD.field C,A
CB AaB C=C+D field | ADD.field D,C
CC AaC A=A-1 field | DEC.field A
CD AaD B=B-1 field | DEC.field B
CE AaE C=C-1 field | DEC.field C
CF AaF D=D-1 field | DEC.field D
D0 Ab0 A=0 field | CLR.field A
D1 Ab1 B=0 field | CLR.field B
D2 Ab2 C=0 field | CLR.field C
D3 Ab3 D=0 field | CLR.field D
D4 Ab4 A=B field | MOVE.field B,A
D5 Ab5 B=C field | MOVE.field C,B
D6 Ab6 C=A field | MOVE.field A,C
D7 Ab7 D=C field | MOVE.field C,D
D8 Ab8 B=A field | MOVE.field A,B
D9 Ab9 C=B field | MOVE.field B,C
DA AbA A=C field | MOVE.field C,A
DB AbB C=D field | MOVE.field D,C
DC AbC ABEX field | SWAP.field A,B
DD AbD BCEX field | SWAP.field B,C
DE AbE ACEX field | SWAP.field A,C
DF AbF CDEX field | SWAP.field C,D
fs: P WP XS X S M B W
a: 0 1 2 3 4 5 6 7
b: 8 9 A B C D E F
================================================================
B, E, F
================================================================
-- field ---
A fs
------------
E0 Ba0 A=A-B field | SUB.field B,A
E1 Ba1 B=B-C field | SUB.field C,B
E2 Ba2 C=C-A field | SUB.field A,C
E3 Ba3 D=D-C field | SUB.field C,D
E4 Ba4 A=A+1 field | INC.field A
E5 Ba5 B=B+1 field | INC.field B
E6 Ba6 C=C+1 field | INC.field C
E7 Ba7 D=D+1 field | INC.field D
E8 Ba8 B=B-A field | SUB.field A,B
E9 Ba9 C=C-B field | SUB.field B,C
EA BaA A=A-C field | SUB.field C,A
EB BaB C=C-D field | SUB.field D,C
EC BaC A=B-A field | SUBN.field B,A
ED BaD B=C-B field | SUBN.field C,B
EE BaE C=A-C field | SUBN.field A,C
EF BaF D=C-D field | SUBN.field C,D
F0 Bb0 ASL field | SLN.field A
F1 Bb1 BSL field | SLN.field B
F2 Bb2 CSL field | SLN.field C
F3 Bb3 DSL field | SLN.field D
F4 Bb4 ASR field | SRN.field A
F5 Bb5 BSR field | SRN.field B
F6 Bb6 CSR field | SRN.field C
F7 Bb7 DSR field | SRN.field D
F8 Bb8 A=-A field | NEG.field A
F9 Bb9 B=-B field | NEG.field B
FA BbA C=-C field | NEG.field C
FB BbB D=-D field | NEG.field D
FC BbC A=-A-1 field | NOT.field A
FD BbD B=-B-1 field | NOT.field B
FE BbE C=-C-1 field | NOT.field C
FF BbF D=-D-1 field | NOT.field D
fs: P WP XS X S M B W
a: 0 1 2 3 4 5 6 7
b: 8 9 A B C D E F
================================================================
Data Storage Allocation
================================================================
00..0 BSS expr | ???
nn..n CON(m) expr | ???
nn..n REL(m) expr | ???
zy..a NIBASC 'chars' | ???
zy..a NIBASC \chars\ | ???
hh..h NIBHEX h..hh | ???
================================================================
New Instructions
================================================================
818f0m A=A+CON rfs,d | ADD.rfs d,A
818f1m B=B+CON rfs,d | ADD.rfs d,B
818f2m C=C+CON rfs,d | ADD.rfs d,C
818f3m D=D+CON rfs,d | ADD.rfs d,D
818f8m A=A-CON rfs,d | SUB.rfs d,A
818f9m B=B-CON rfs,d | SUB.rfs d,B
818fAm C=C-CON rfs,d | SUB.rfs d,C
818fBm D=D-CON rfs,d | SUB.rfs d,D
819f0 ASRB.F fs | SRB.fs A
819f1 BSRB.F fs | SRB.fs B
819f2 CSRB.F fs | SRB.fs C
819f3 DSRB.F fs | SRB.fs D
81Af00 R0=A.F fs | MOVE.fs A,R0
81Af01 R1=A.F fs | MOVE.fs A,R1
81Af02 R2=A.F fs | MOVE.fs A,R2
81Af03 R3=A.F fs | MOVE.fs A,R3
81Af04 R4=A.F fs | MOVE.fs A,R4
81Af08 R0=C.F fs | MOVE.fs C,R0
81Af09 R1=C.F fs | MOVE.fs C,R1
81Af0A R2=C.F fs | MOVE.fs C,R2
81Af0B R3=C.F fs | MOVE.fs C,R3
81Af0C R4=C.F fs | MOVE.fs C,R4
81Af10 A=R0.F fs | MOVE.fs R0,A
81Af11 A=R1.F fs | MOVE.fs R1,A
81Af12 A=R2.F fs | MOVE.fs R2,A
81Af13 A=R3.F fs | MOVE.fs R3,A
81Af14 A=R4.F fs | MOVE.fs R4,A
81Af18 C=R0.F fs | MOVE.fs R0,C
81Af19 C=R1.F fs | MOVE.fs R1,C
81Af1A C=R2.F fs | MOVE.fs R2,C
81Af1B C=R3.F fs | MOVE.fs R3,C
81Af1C C=R4.F fs | MOVE.fs R4,C
81Af20 AR0EX.F fs | SWAP.fs A,R0
81Af21 AR1EX.F fs | SWAP.fs A,R1
81Af22 AR2EX.F fs | SWAP.fs A,R2
81Af23 AR3EX.F fs | SWAP.fs A,R3
81Af24 AR4EX.F fs | SWAP.fs A,R4
81Af28 CR0EX.F fs | SWAP.fs C,R0
81Af29 CR1EX.F fs | SWAP.fs C,R1
81Af2A CR2EX.F fs | SWAP.fs C,R2
81Af2B CR3EX.F fs | SWAP.fs C,R3
81Af2C CR4EX.F fs | SWAP.fs C,R4
81B2 PC=A | JUMP.A A
81B3 PC=C | JUMP.A C
81B4 A=PC | MOVE.A PC,A
81B5 C=PC | MOVE.A PC,C
81B6 APCEX | SWAP.A A,PC
81B7 CPCEX | SWAP.A C,PC
========== end of rosetta stone ========== -jkh- ==========