Metropoli BBS
VIEWER: rosetta.doc MODE: TEXT (CP437)
(Comp.sys.hp48)
Item: 84 by bson@rice-chex.ai.mit.edu [Jan Brittenson]
        and joehorn@hpcvbbs.cv.hp.com [Joseph K. Horn]
  Subj: Rosetta Stone (STAR version)
  Date: Sun Oct 27 1991

    ╔═════════════════════════╗
    ║                         ║
    ║    The Rosetta Stone    ║
    ║                         ║
    ║   HP <-> AG Mnemonics   ║
    ║                         ║
    ╚═════════════════════════╝

There are two different sets of mnemonics in use for the HP48's
assembly language; the set used by HP to develop their calculators'
operating systems and support software, and the set invented by Alonzo
Gariepy in an attempt to make assembly language more understandable.
People keep clamoring for a HP-to-AG dictionary.  Here it is.

   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).

   Modified by Jan Brittenson October 1991, to match STAR syntax, to
fill in unknowns, and to prepare it for inclusion as an appendix in
the MLDL manual.

[Included on this Goodies Disk to accompany the MLDL1.06
 documentation.  -jkh-]

              Syntax:

       ┌───────────────────┐
       │ HEX   HP   |   AG │
       └───────────────────┘

Please post all errors and omissions discovered.  Thank you.
[Note: None posted as of 20 October 1991. -jkh-]

════════════════════════════════════════════════════════════════
        OVERVIEW
════════════════════════════════════════════════════════════════

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     |   MOVE.Px n..n,C
3mc..c   LCASC  \A..A\   |   MOVE.Pn `A..A',C
3nh..h   LCHEX  h..h     |   MOVE.Pn h..h,C

400   RTNCS       |   RETCS
4aa   GOC label   |   BRCS label
420   NOP3        |   NOP3

500   RTNNC        |   RETCC
5aa   GONC label   |   BRCC label

6aaa   GOTO label   |   JUMP label
6300   NOP4         |   NOP4
64000   NOP5        |   NOP5

7aaa   GOSUB label   |   CALL label

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 ST,C
0A   ST=C     |   MOVE.X C,ST
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 fs   |   MOVE.fs A,@D0
141     149     151a    159x    DAT1=A fs   |   MOVE.fs A,@D1
142     14A     152a    15Ax    A=DAT0 fs   |   MOVE.fs @D0,A
143     14B     153a    15Bx    A=DAT1 fs   |   MOVE.fs @D1,A
144     14C     154a    15Cx    DAT0=C fs   |   MOVE.fs C,@D0
145     14D     155a    15Dx    DAT1=C fs   |   MOVE.fs C,@D1
146     14E     156a    15Ex    C=DAT0 fs   |   MOVE.fs @D0,C
147     14F     157a    15Fx    C=DAT1 fs   |   MOVE.fs @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      |   MOVE.2 nn,D0      **
19hh    D0=HEX hh      |   MOVE.2 hh,D0      **
1Annnn  D0=(4) nnnn    |   MOVE.4 nnnn,D0    **
1Ahhhh  D0=HEX hhhh    |   MOVE.4 hhhh,D0    **
1Bnnnnn D0=(5) nnnnn   |   MOVE.5 nnnnn,D0   **
1Bhhhhh D0=HEX hhhhh   |   MOVE.5 hhhhh,D0   **
1Cx     D1=D1- n       |   SUB.A n,D1
1Dnn    D1=(2) nn      |   MOVE.2 nn,D1      **
1Dhh    D1=HEX hh      |   MOVE.2 hh,D1      **
1Ennnn  D1=(4) nnnn    |   MOVE.4 nnnn,D1    **
1Ehhhh  D1=HEX hhhh    |   MOVE.4 hhhh,D1    **
1Fnnnnn D1=(5) nnnnn   |   MOVE.5 nnnnn,D1   **
1Fhhhhh D1=HEX hhhhh   |   MOVE.5 hhhhh,D1   **

          ** In the STAR assembler, the instruction suffix
          (2, 4, or 5 above) determines the operand size, the
          operand is any general expression. The instruction
          does not determine the integer base; rather, as in
          all expression, constants of any mix of bases may
          be used. The following two instructions are identical:

               MOVE.2    0x40+5, D0     ; Hex plus decimal
               MOVE.2    64+0x5, D0     ; Decimal plus hex


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   |   MOVE.Pm n..n,A
8082mc..c   LAASC  \A..A\   |   MOVE.Pn `A..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,label / RETBC d,A
8087nyy ?ABIT=1 d   |   BRBS d,A,label / RETBS d,A
8088n   CBIT=0 d    |   CLRB d,C
8089n   CBIT=1 d    |   SETB d,C
808Anyy ?CBIT=0 d   |   BRBC d,C,label / RETBC d,C
808Bnyy ?CBIT=1 d   |   BRBS d,C,label / RETBS d,C
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

818a0x      A=A+n fs   |   ADD.fs n,A
818a1x      B=B+n fs   |   ADD.fs n,B
818a2x      C=C+n fs   |   ADD.fs n,C
818a3x      D=D+n fs   |   ADD.fs n,D

818b0x      A=A-n fs   |   SUB.fs n,A
818b1x      B=B-n fs   |   SUB.fs n,B
818b2x      C=C-n fs   |   SUB.fs n,C
818b3x      D=D-n fs   |   SUB.fs 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   HS=0 n |   CLRB [],HST        {MP,SR,SB,XM}  (see ** below)
821   XM=0   |   CLRB [XM],HST   { 0  0  0  1   ->  1}
822   SB=0   |   CLRB [SB],HST   { 0  0  1  0   ->  2}
824   SR=0   |   CLRB [SR],HST   { 0  1  0  0   ->  4}
828   MP=0   |   CLRB [MP],HST   { 1  0  0  0   ->  8}
82F   CLRHST |   CLRB [XM,SB,SR,MP],HST
             **  e.g.  829  is  HS=0 9   |   CLRB [XM,MP],HST

   Note: in the STAR assembler, the notation [A,B,C...] means "an
integer with bits A,B,C... set". [] is zero. The symbols "MP", "SR",
"SB", and "XM" are predefined by the assembler to the values 0, 1, 2,
and 3 respectively. Thus, "[3,1]" is equivalent to "[XM,MP]". All
[...] constructions are collectively refered to as a "bit pattern
expressions."


831yy   ?XM=0   |   BRBC [XM],HST,label / RETBC [XM],HST    **
832yy   ?SB=0   |   BRBC [SB],HST,label / RETBC [SB],HST    **
834yy   ?SR=0   |   BRBC [SR],HST,label / RETBC [SR],HST    **
838yy   ?MP=0   |   BRBC [MP],HST,label / RETBC [MP],HST    **

          ** See explanation of bit pattern expressions above.


84n     ST=0   n   |   CLRB n,ST
85n     ST=1   n   |   SETB n,ST
86nyy   ?ST=0  n   |   BRBC n,ST,label / RETBC n,ST
87nyy   ?ST=1  n   |   BRBS n,ST,label / RETBS n,ST
88nyy   ?P#    n   |   BRNE.1 P,n,label / RETNE.1 P,n
89nyy   ?P=    n   |   BREQ.1 P,n,label / RETEQ.1 P,n

8A...8b... (see below)

8Caaaa  GOLONG label   |   JUMP.4 label
8Daaaaa GOVLNG label   !   JUMP.A label
8Eaaaa  GOSUBL label   !   CALL.4 label
8Faaaaa GOSBVL label   !   CALL.A label

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 (GOSUB, 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      |   DATA0   expr    **
nn..n   CON(m) expr      |   DATA.m  expr
nn..n   REL(m) expr      |   DATA.m  expr-.
zy..a   NIBASC 'chars'   |   ASCII   `chars'
zy..a   NIBASC \chars\   |   ASCII   `chars'
hh..h   NIBHEX h..hh     |   DATA.m  h..hh

          ** Requires inclusion of the following STAR macro
             definition:

               macro     bss  arg=0
                 save op
                 arg=$arg
                 op = `;'

                 if arg > 0
                   if arg < 8
                     data.$arg 0
                   else
                     op = `bss'
                   endif
                 endif

                 $op $(arg-^d8)
                 restore op
               endmacro



════════════════════════════════════════════════════════════════
        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 ---
[ RETURN TO DIRECTORY ]