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