[comp.sys.handhelds] HP 48 Rosetta Stone

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- ==========