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